papermario/asm/nonmatchings/code_102610_len_2330/func_802E1EDC.s
Ethan Roseman 0286743ae5 asm update
2020-12-10 16:11:43 +09:00

306 lines
16 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802E1EDC
/* 10375C 802E1EDC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 103760 802E1EE0 AFB1001C */ sw $s1, 0x1c($sp)
/* 103764 802E1EE4 0080882D */ daddu $s1, $a0, $zero
/* 103768 802E1EE8 AFBF0024 */ sw $ra, 0x24($sp)
/* 10376C 802E1EEC AFB20020 */ sw $s2, 0x20($sp)
/* 103770 802E1EF0 AFB00018 */ sw $s0, 0x18($sp)
/* 103774 802E1EF4 8E300040 */ lw $s0, 0x40($s1)
/* 103778 802E1EF8 82030010 */ lb $v1, 0x10($s0)
/* 10377C 802E1EFC 2C620005 */ sltiu $v0, $v1, 5
/* 103780 802E1F00 10400087 */ beqz $v0, .L802E2120
/* 103784 802E1F04 0000902D */ daddu $s2, $zero, $zero
/* 103788 802E1F08 00031080 */ sll $v0, $v1, 2
/* 10378C 802E1F0C 3C01802F */ lui $at, %hi(D_802EB0C0)
/* 103790 802E1F10 00220821 */ addu $at, $at, $v0
/* 103794 802E1F14 8C22B0C0 */ lw $v0, %lo(D_802EB0C0)($at)
/* 103798 802E1F18 00400008 */ jr $v0
/* 10379C 802E1F1C 00000000 */ nop
/* 1037A0 802E1F20 C602001C */ lwc1 $f2, 0x1c($s0)
/* 1037A4 802E1F24 3C01802F */ lui $at, %hi(D_802EB0D8)
/* 1037A8 802E1F28 D420B0D8 */ ldc1 $f0, %lo(D_802EB0D8)($at)
/* 1037AC 802E1F2C 460010A1 */ cvt.d.s $f2, $f2
/* 1037B0 802E1F30 46201082 */ mul.d $f2, $f2, $f0
/* 1037B4 802E1F34 00000000 */ nop
/* 1037B8 802E1F38 C6000014 */ lwc1 $f0, 0x14($s0)
/* 1037BC 802E1F3C 462011A0 */ cvt.s.d $f6, $f2
/* 1037C0 802E1F40 46060000 */ add.s $f0, $f0, $f6
/* 1037C4 802E1F44 C6220054 */ lwc1 $f2, 0x54($s1)
/* 1037C8 802E1F48 46020001 */ sub.s $f0, $f0, $f2
/* 1037CC 802E1F4C 3C013FD0 */ lui $at, 0x3fd0
/* 1037D0 802E1F50 44811800 */ mtc1 $at, $f3
/* 1037D4 802E1F54 44801000 */ mtc1 $zero, $f2
/* 1037D8 802E1F58 46000021 */ cvt.d.s $f0, $f0
/* 1037DC 802E1F5C 46220002 */ mul.d $f0, $f0, $f2
/* 1037E0 802E1F60 00000000 */ nop
/* 1037E4 802E1F64 3C01802F */ lui $at, %hi(D_802EB0E0)
/* 1037E8 802E1F68 D422B0E0 */ ldc1 $f2, %lo(D_802EB0E0)($at)
/* 1037EC 802E1F6C 46200120 */ cvt.s.d $f4, $f0
/* 1037F0 802E1F70 46002021 */ cvt.d.s $f0, $f4
/* 1037F4 802E1F74 4622003C */ c.lt.d $f0, $f2
/* 1037F8 802E1F78 00000000 */ nop
/* 1037FC 802E1F7C 45000004 */ bc1f .L802E1F90
/* 103800 802E1F80 00000000 */ nop
/* 103804 802E1F84 3C013C23 */ lui $at, 0x3c23
/* 103808 802E1F88 3421D70A */ ori $at, $at, 0xd70a
/* 10380C 802E1F8C 44812000 */ mtc1 $at, $f4
.L802E1F90:
/* 103810 802E1F90 C6000004 */ lwc1 $f0, 4($s0)
/* 103814 802E1F94 46040000 */ add.s $f0, $f0, $f4
/* 103818 802E1F98 E6000004 */ swc1 $f0, 4($s0)
/* 10381C 802E1F9C C6220054 */ lwc1 $f2, 0x54($s1)
/* 103820 802E1FA0 46001080 */ add.s $f2, $f2, $f0
/* 103824 802E1FA4 E6220054 */ swc1 $f2, 0x54($s1)
/* 103828 802E1FA8 C6000014 */ lwc1 $f0, 0x14($s0)
/* 10382C 802E1FAC 46060000 */ add.s $f0, $f0, $f6
/* 103830 802E1FB0 4602003E */ c.le.s $f0, $f2
/* 103834 802E1FB4 080B8840 */ j .L802E2100
/* 103838 802E1FB8 00000000 */ nop
/* 10383C 802E1FBC C602001C */ lwc1 $f2, 0x1c($s0)
/* 103840 802E1FC0 3C01802F */ lui $at, %hi(D_802EB0E8)
/* 103844 802E1FC4 D420B0E8 */ ldc1 $f0, %lo(D_802EB0E8)($at)
/* 103848 802E1FC8 080B881F */ j .L802E207C
/* 10384C 802E1FCC 460010A1 */ cvt.d.s $f2, $f2
/* 103850 802E1FD0 C602001C */ lwc1 $f2, 0x1c($s0)
/* 103854 802E1FD4 3C01802F */ lui $at, %hi(D_802EB0F0)
/* 103858 802E1FD8 D420B0F0 */ ldc1 $f0, %lo(D_802EB0F0)($at)
/* 10385C 802E1FDC 460010A1 */ cvt.d.s $f2, $f2
/* 103860 802E1FE0 46201082 */ mul.d $f2, $f2, $f0
/* 103864 802E1FE4 00000000 */ nop
/* 103868 802E1FE8 C6000014 */ lwc1 $f0, 0x14($s0)
/* 10386C 802E1FEC 462011A0 */ cvt.s.d $f6, $f2
/* 103870 802E1FF0 46060000 */ add.s $f0, $f0, $f6
/* 103874 802E1FF4 C6220054 */ lwc1 $f2, 0x54($s1)
/* 103878 802E1FF8 46020001 */ sub.s $f0, $f0, $f2
/* 10387C 802E1FFC 3C013FD0 */ lui $at, 0x3fd0
/* 103880 802E2000 44811800 */ mtc1 $at, $f3
/* 103884 802E2004 44801000 */ mtc1 $zero, $f2
/* 103888 802E2008 46000021 */ cvt.d.s $f0, $f0
/* 10388C 802E200C 46220002 */ mul.d $f0, $f0, $f2
/* 103890 802E2010 00000000 */ nop
/* 103894 802E2014 3C01802F */ lui $at, %hi(D_802EB0F8)
/* 103898 802E2018 D422B0F8 */ ldc1 $f2, %lo(D_802EB0F8)($at)
/* 10389C 802E201C 46200120 */ cvt.s.d $f4, $f0
/* 1038A0 802E2020 46002021 */ cvt.d.s $f0, $f4
/* 1038A4 802E2024 4622003C */ c.lt.d $f0, $f2
/* 1038A8 802E2028 00000000 */ nop
/* 1038AC 802E202C 45000004 */ bc1f .L802E2040
/* 1038B0 802E2030 00000000 */ nop
/* 1038B4 802E2034 3C013C23 */ lui $at, 0x3c23
/* 1038B8 802E2038 3421D70A */ ori $at, $at, 0xd70a
/* 1038BC 802E203C 44812000 */ mtc1 $at, $f4
.L802E2040:
/* 1038C0 802E2040 C6000004 */ lwc1 $f0, 4($s0)
/* 1038C4 802E2044 46040000 */ add.s $f0, $f0, $f4
/* 1038C8 802E2048 E6000004 */ swc1 $f0, 4($s0)
/* 1038CC 802E204C C6220054 */ lwc1 $f2, 0x54($s1)
/* 1038D0 802E2050 46001080 */ add.s $f2, $f2, $f0
/* 1038D4 802E2054 E6220054 */ swc1 $f2, 0x54($s1)
/* 1038D8 802E2058 C6000014 */ lwc1 $f0, 0x14($s0)
/* 1038DC 802E205C 46060000 */ add.s $f0, $f0, $f6
/* 1038E0 802E2060 4602003E */ c.le.s $f0, $f2
/* 1038E4 802E2064 080B8840 */ j .L802E2100
/* 1038E8 802E2068 00000000 */ nop
/* 1038EC 802E206C C602001C */ lwc1 $f2, 0x1c($s0)
/* 1038F0 802E2070 3C01802F */ lui $at, %hi(D_802EB100)
/* 1038F4 802E2074 D420B100 */ ldc1 $f0, %lo(D_802EB100)($at)
/* 1038F8 802E2078 460010A1 */ cvt.d.s $f2, $f2
.L802E207C:
/* 1038FC 802E207C 46201082 */ mul.d $f2, $f2, $f0
/* 103900 802E2080 00000000 */ nop
/* 103904 802E2084 C6000014 */ lwc1 $f0, 0x14($s0)
/* 103908 802E2088 462011A0 */ cvt.s.d $f6, $f2
/* 10390C 802E208C 46060000 */ add.s $f0, $f0, $f6
/* 103910 802E2090 C6220054 */ lwc1 $f2, 0x54($s1)
/* 103914 802E2094 46020001 */ sub.s $f0, $f0, $f2
/* 103918 802E2098 3C014018 */ lui $at, 0x4018
/* 10391C 802E209C 44811800 */ mtc1 $at, $f3
/* 103920 802E20A0 44801000 */ mtc1 $zero, $f2
/* 103924 802E20A4 46000021 */ cvt.d.s $f0, $f0
/* 103928 802E20A8 46220003 */ div.d $f0, $f0, $f2
/* 10392C 802E20AC 46200120 */ cvt.s.d $f4, $f0
/* 103930 802E20B0 3C01802F */ lui $at, %hi(D_802EB108)
/* 103934 802E20B4 D422B108 */ ldc1 $f2, %lo(D_802EB108)($at)
/* 103938 802E20B8 46002021 */ cvt.d.s $f0, $f4
/* 10393C 802E20BC 4620103C */ c.lt.d $f2, $f0
/* 103940 802E20C0 00000000 */ nop
/* 103944 802E20C4 45000004 */ bc1f .L802E20D8
/* 103948 802E20C8 00000000 */ nop
/* 10394C 802E20CC 3C01BC23 */ lui $at, 0xbc23
/* 103950 802E20D0 3421D70A */ ori $at, $at, 0xd70a
/* 103954 802E20D4 44812000 */ mtc1 $at, $f4
.L802E20D8:
/* 103958 802E20D8 C6000004 */ lwc1 $f0, 4($s0)
/* 10395C 802E20DC 46040000 */ add.s $f0, $f0, $f4
/* 103960 802E20E0 E6000004 */ swc1 $f0, 4($s0)
/* 103964 802E20E4 C6220054 */ lwc1 $f2, 0x54($s1)
/* 103968 802E20E8 46001080 */ add.s $f2, $f2, $f0
/* 10396C 802E20EC E6220054 */ swc1 $f2, 0x54($s1)
/* 103970 802E20F0 C6000014 */ lwc1 $f0, 0x14($s0)
/* 103974 802E20F4 46060000 */ add.s $f0, $f0, $f6
/* 103978 802E20F8 4600103E */ c.le.s $f2, $f0
/* 10397C 802E20FC 00000000 */ nop
.L802E2100:
/* 103980 802E2100 45000007 */ bc1f .L802E2120
/* 103984 802E2104 00000000 */ nop
/* 103988 802E2108 92020010 */ lbu $v0, 0x10($s0)
/* 10398C 802E210C AE000004 */ sw $zero, 4($s0)
/* 103990 802E2110 24420001 */ addiu $v0, $v0, 1
/* 103994 802E2114 080B8848 */ j .L802E2120
/* 103998 802E2118 A2020010 */ sb $v0, 0x10($s0)
/* 10399C 802E211C 26520001 */ addiu $s2, $s2, 1
.L802E2120:
/* 1039A0 802E2120 C6200054 */ lwc1 $f0, 0x54($s1)
/* 1039A4 802E2124 E620005C */ swc1 $f0, 0x5c($s1)
/* 1039A8 802E2128 82030011 */ lb $v1, 0x11($s0)
/* 1039AC 802E212C 24020001 */ addiu $v0, $zero, 1
/* 1039B0 802E2130 10620013 */ beq $v1, $v0, .L802E2180
/* 1039B4 802E2134 28620002 */ slti $v0, $v1, 2
/* 1039B8 802E2138 10400005 */ beqz $v0, .L802E2150
/* 1039BC 802E213C 24020002 */ addiu $v0, $zero, 2
/* 1039C0 802E2140 10600009 */ beqz $v1, .L802E2168
/* 1039C4 802E2144 00000000 */ nop
/* 1039C8 802E2148 080B88B1 */ j .L802E22C4
/* 1039CC 802E214C 00000000 */ nop
.L802E2150:
/* 1039D0 802E2150 10620031 */ beq $v1, $v0, .L802E2218
/* 1039D4 802E2154 24020003 */ addiu $v0, $zero, 3
/* 1039D8 802E2158 5062005A */ beql $v1, $v0, .L802E22C4
/* 1039DC 802E215C 26520001 */ addiu $s2, $s2, 1
/* 1039E0 802E2160 080B88B1 */ j .L802E22C4
/* 1039E4 802E2164 00000000 */ nop
.L802E2168:
/* 1039E8 802E2168 C602001C */ lwc1 $f2, 0x1c($s0)
/* 1039EC 802E216C 3C01BFE0 */ lui $at, 0xbfe0
/* 1039F0 802E2170 44810800 */ mtc1 $at, $f1
/* 1039F4 802E2174 44800000 */ mtc1 $zero, $f0
/* 1039F8 802E2178 080B888A */ j .L802E2228
/* 1039FC 802E217C 460010A1 */ cvt.d.s $f2, $f2
.L802E2180:
/* 103A00 802E2180 C602001C */ lwc1 $f2, 0x1c($s0)
/* 103A04 802E2184 3C01802F */ lui $at, %hi(D_802EB110)
/* 103A08 802E2188 D420B110 */ ldc1 $f0, %lo(D_802EB110)($at)
/* 103A0C 802E218C 460010A1 */ cvt.d.s $f2, $f2
/* 103A10 802E2190 46201082 */ mul.d $f2, $f2, $f0
/* 103A14 802E2194 00000000 */ nop
/* 103A18 802E2198 C6000018 */ lwc1 $f0, 0x18($s0)
/* 103A1C 802E219C 462011A0 */ cvt.s.d $f6, $f2
/* 103A20 802E21A0 46060000 */ add.s $f0, $f0, $f6
/* 103A24 802E21A4 C6220058 */ lwc1 $f2, 0x58($s1)
/* 103A28 802E21A8 46020001 */ sub.s $f0, $f0, $f2
/* 103A2C 802E21AC 3C014024 */ lui $at, 0x4024
/* 103A30 802E21B0 44811800 */ mtc1 $at, $f3
/* 103A34 802E21B4 44801000 */ mtc1 $zero, $f2
/* 103A38 802E21B8 46000021 */ cvt.d.s $f0, $f0
/* 103A3C 802E21BC 46220003 */ div.d $f0, $f0, $f2
/* 103A40 802E21C0 46200120 */ cvt.s.d $f4, $f0
/* 103A44 802E21C4 3C01802F */ lui $at, %hi(D_802EB118)
/* 103A48 802E21C8 D422B118 */ ldc1 $f2, %lo(D_802EB118)($at)
/* 103A4C 802E21CC 46002021 */ cvt.d.s $f0, $f4
/* 103A50 802E21D0 4622003C */ c.lt.d $f0, $f2
/* 103A54 802E21D4 00000000 */ nop
/* 103A58 802E21D8 45000004 */ bc1f .L802E21EC
/* 103A5C 802E21DC 00000000 */ nop
/* 103A60 802E21E0 3C013C23 */ lui $at, 0x3c23
/* 103A64 802E21E4 3421D70A */ ori $at, $at, 0xd70a
/* 103A68 802E21E8 44812000 */ mtc1 $at, $f4
.L802E21EC:
/* 103A6C 802E21EC C6000008 */ lwc1 $f0, 8($s0)
/* 103A70 802E21F0 46040000 */ add.s $f0, $f0, $f4
/* 103A74 802E21F4 E6000008 */ swc1 $f0, 8($s0)
/* 103A78 802E21F8 C6220058 */ lwc1 $f2, 0x58($s1)
/* 103A7C 802E21FC 46001080 */ add.s $f2, $f2, $f0
/* 103A80 802E2200 E6220058 */ swc1 $f2, 0x58($s1)
/* 103A84 802E2204 C6000018 */ lwc1 $f0, 0x18($s0)
/* 103A88 802E2208 46060000 */ add.s $f0, $f0, $f6
/* 103A8C 802E220C 4602003E */ c.le.s $f0, $f2
/* 103A90 802E2210 080B88AB */ j .L802E22AC
/* 103A94 802E2214 00000000 */ nop
.L802E2218:
/* 103A98 802E2218 C602001C */ lwc1 $f2, 0x1c($s0)
/* 103A9C 802E221C 3C01802F */ lui $at, %hi(D_802EB120)
/* 103AA0 802E2220 D420B120 */ ldc1 $f0, %lo(D_802EB120)($at)
/* 103AA4 802E2224 460010A1 */ cvt.d.s $f2, $f2
.L802E2228:
/* 103AA8 802E2228 46201082 */ mul.d $f2, $f2, $f0
/* 103AAC 802E222C 00000000 */ nop
/* 103AB0 802E2230 C6000018 */ lwc1 $f0, 0x18($s0)
/* 103AB4 802E2234 462011A0 */ cvt.s.d $f6, $f2
/* 103AB8 802E2238 46060000 */ add.s $f0, $f0, $f6
/* 103ABC 802E223C C6220058 */ lwc1 $f2, 0x58($s1)
/* 103AC0 802E2240 46020001 */ sub.s $f0, $f0, $f2
/* 103AC4 802E2244 3C014014 */ lui $at, 0x4014
/* 103AC8 802E2248 44811800 */ mtc1 $at, $f3
/* 103ACC 802E224C 44801000 */ mtc1 $zero, $f2
/* 103AD0 802E2250 46000021 */ cvt.d.s $f0, $f0
/* 103AD4 802E2254 46220003 */ div.d $f0, $f0, $f2
/* 103AD8 802E2258 46200120 */ cvt.s.d $f4, $f0
/* 103ADC 802E225C 3C01802F */ lui $at, %hi(D_802EB128)
/* 103AE0 802E2260 D422B128 */ ldc1 $f2, %lo(D_802EB128)($at)
/* 103AE4 802E2264 46002021 */ cvt.d.s $f0, $f4
/* 103AE8 802E2268 4620103C */ c.lt.d $f2, $f0
/* 103AEC 802E226C 00000000 */ nop
/* 103AF0 802E2270 45000004 */ bc1f .L802E2284
/* 103AF4 802E2274 00000000 */ nop
/* 103AF8 802E2278 3C01BC23 */ lui $at, 0xbc23
/* 103AFC 802E227C 3421D70A */ ori $at, $at, 0xd70a
/* 103B00 802E2280 44812000 */ mtc1 $at, $f4
.L802E2284:
/* 103B04 802E2284 C6000008 */ lwc1 $f0, 8($s0)
/* 103B08 802E2288 46040000 */ add.s $f0, $f0, $f4
/* 103B0C 802E228C E6000008 */ swc1 $f0, 8($s0)
/* 103B10 802E2290 C6220058 */ lwc1 $f2, 0x58($s1)
/* 103B14 802E2294 46001080 */ add.s $f2, $f2, $f0
/* 103B18 802E2298 E6220058 */ swc1 $f2, 0x58($s1)
/* 103B1C 802E229C C6000018 */ lwc1 $f0, 0x18($s0)
/* 103B20 802E22A0 46060000 */ add.s $f0, $f0, $f6
/* 103B24 802E22A4 4600103E */ c.le.s $f2, $f0
/* 103B28 802E22A8 00000000 */ nop
.L802E22AC:
/* 103B2C 802E22AC 45000005 */ bc1f .L802E22C4
/* 103B30 802E22B0 00000000 */ nop
/* 103B34 802E22B4 92020011 */ lbu $v0, 0x11($s0)
/* 103B38 802E22B8 AE000008 */ sw $zero, 8($s0)
/* 103B3C 802E22BC 24420001 */ addiu $v0, $v0, 1
/* 103B40 802E22C0 A2020011 */ sb $v0, 0x11($s0)
.L802E22C4:
/* 103B44 802E22C4 0C0B854F */ jal func_802E153C
/* 103B48 802E22C8 0220202D */ daddu $a0, $s1, $zero
/* 103B4C 802E22CC 24020002 */ addiu $v0, $zero, 2
/* 103B50 802E22D0 16420004 */ bne $s2, $v0, .L802E22E4
/* 103B54 802E22D4 0220202D */ daddu $a0, $s1, $zero
/* 103B58 802E22D8 A2000010 */ sb $zero, 0x10($s0)
/* 103B5C 802E22DC 0C043F5A */ jal func_8010FD68
/* 103B60 802E22E0 A2000011 */ sb $zero, 0x11($s0)
.L802E22E4:
/* 103B64 802E22E4 96020024 */ lhu $v0, 0x24($s0)
/* 103B68 802E22E8 2403000A */ addiu $v1, $zero, 0xa
/* 103B6C 802E22EC 24420001 */ addiu $v0, $v0, 1
/* 103B70 802E22F0 A6020024 */ sh $v0, 0x24($s0)
/* 103B74 802E22F4 00021400 */ sll $v0, $v0, 0x10
/* 103B78 802E22F8 00021403 */ sra $v0, $v0, 0x10
/* 103B7C 802E22FC 1443000D */ bne $v0, $v1, .L802E2334
/* 103B80 802E2300 00000000 */ nop
/* 103B84 802E2304 8E020028 */ lw $v0, 0x28($s0)
/* 103B88 802E2308 1440000A */ bnez $v0, .L802E2334
/* 103B8C 802E230C 2402003C */ addiu $v0, $zero, 0x3c
/* 103B90 802E2310 3C013F80 */ lui $at, 0x3f80
/* 103B94 802E2314 44810000 */ mtc1 $at, $f0
/* 103B98 802E2318 AFA20014 */ sw $v0, 0x14($sp)
/* 103B9C 802E231C E7A00010 */ swc1 $f0, 0x10($sp)
/* 103BA0 802E2320 8E250048 */ lw $a1, 0x48($s1)
/* 103BA4 802E2324 8E26004C */ lw $a2, 0x4c($s1)
/* 103BA8 802E2328 8E270050 */ lw $a3, 0x50($s1)
/* 103BAC 802E232C 0C01C88C */ jal func_80072230
/* 103BB0 802E2330 0000202D */ daddu $a0, $zero, $zero
.L802E2334:
/* 103BB4 802E2334 8FBF0024 */ lw $ra, 0x24($sp)
/* 103BB8 802E2338 8FB20020 */ lw $s2, 0x20($sp)
/* 103BBC 802E233C 8FB1001C */ lw $s1, 0x1c($sp)
/* 103BC0 802E2340 8FB00018 */ lw $s0, 0x18($sp)
/* 103BC4 802E2344 03E00008 */ jr $ra
/* 103BC8 802E2348 27BD0028 */ addiu $sp, $sp, 0x28