glabel func_80040BE4 /* AB7D84 80040BE4 27BDFF50 */ addiu $sp, $sp, -0xb0 /* AB7D88 80040BE8 AFBF0064 */ sw $ra, 0x64($sp) /* AB7D8C 80040BEC AFBE0060 */ sw $fp, 0x60($sp) /* AB7D90 80040BF0 AFB7005C */ sw $s7, 0x5c($sp) /* AB7D94 80040BF4 AFB60058 */ sw $s6, 0x58($sp) /* AB7D98 80040BF8 AFB50054 */ sw $s5, 0x54($sp) /* AB7D9C 80040BFC AFB40050 */ sw $s4, 0x50($sp) /* AB7DA0 80040C00 AFB3004C */ sw $s3, 0x4c($sp) /* AB7DA4 80040C04 AFB20048 */ sw $s2, 0x48($sp) /* AB7DA8 80040C08 AFB10044 */ sw $s1, 0x44($sp) /* AB7DAC 80040C0C AFB00040 */ sw $s0, 0x40($sp) /* AB7DB0 80040C10 F7BA0038 */ sdc1 $f26, 0x38($sp) /* AB7DB4 80040C14 F7B80030 */ sdc1 $f24, 0x30($sp) /* AB7DB8 80040C18 F7B60028 */ sdc1 $f22, 0x28($sp) /* AB7DBC 80040C1C F7B40020 */ sdc1 $f20, 0x20($sp) /* AB7DC0 80040C20 AFA400B0 */ sw $a0, 0xb0($sp) /* AB7DC4 80040C24 AFA500B4 */ sw $a1, 0xb4($sp) /* AB7DC8 80040C28 AFA00080 */ sw $zero, 0x80($sp) /* AB7DCC 80040C2C 94E20000 */ lhu $v0, ($a3) /* AB7DD0 80040C30 3413FFFF */ li $s3, 65535 /* AB7DD4 80040C34 30A5FFFF */ andi $a1, $a1, 0xffff /* AB7DD8 80040C38 16620003 */ bne $s3, $v0, .L80040C48 /* AB7DDC 80040C3C 00C09025 */ move $s2, $a2 /* AB7DE0 80040C40 1000006F */ b .L80040E00 /* AB7DE4 80040C44 00001025 */ move $v0, $zero .L80040C48: /* AB7DE8 80040C48 8FB800C4 */ lw $t8, 0xc4($sp) /* AB7DEC 80040C4C 8E4E13F8 */ lw $t6, 0x13f8($s2) /* AB7DF0 80040C50 27B60098 */ addiu $s6, $sp, 0x98 /* AB7DF4 80040C54 8F080000 */ lw $t0, ($t8) /* AB7DF8 80040C58 3C01BF80 */ li $at, 0xBF800000 # 0.000000 /* AB7DFC 80040C5C 4481D000 */ mtc1 $at, $f26 /* AB7E00 80040C60 AEC80000 */ sw $t0, ($s6) /* AB7E04 80040C64 8F190004 */ lw $t9, 4($t8) /* AB7E08 80040C68 3C013F80 */ li $at, 0x3F800000 # 0.000000 /* AB7E0C 80040C6C 00027880 */ sll $t7, $v0, 2 /* AB7E10 80040C70 AED90004 */ sw $t9, 4($s6) /* AB7E14 80040C74 8F080008 */ lw $t0, 8($t8) /* AB7E18 80040C78 30B40007 */ andi $s4, $a1, 7 /* AB7E1C 80040C7C 4481C000 */ mtc1 $at, $f24 /* AB7E20 80040C80 AEC80008 */ sw $t0, 8($s6) /* AB7E24 80040C84 4480B000 */ mtc1 $zero, $f22 /* AB7E28 80040C88 8FB500CC */ lw $s5, 0xcc($sp) /* AB7E2C 80040C8C C7B400C8 */ lwc1 $f20, 0xc8($sp) /* AB7E30 80040C90 8E4313F0 */ lw $v1, 0x13f0($s2) /* AB7E34 80040C94 0014A340 */ sll $s4, $s4, 0xd /* AB7E38 80040C98 27BE0088 */ addiu $fp, $sp, 0x88 /* AB7E3C 80040C9C 27B7008C */ addiu $s7, $sp, 0x8c /* AB7E40 80040CA0 01CF8821 */ addu $s1, $t6, $t7 .L80040CA4: /* AB7E44 80040CA4 86220000 */ lh $v0, ($s1) /* AB7E48 80040CA8 02E02825 */ move $a1, $s7 /* AB7E4C 80040CAC 03C03025 */ move $a2, $fp /* AB7E50 80040CB0 00024900 */ sll $t1, $v0, 4 /* AB7E54 80040CB4 00698021 */ addu $s0, $v1, $t1 /* AB7E58 80040CB8 960A0002 */ lhu $t2, 2($s0) /* AB7E5C 80040CBC 02002025 */ move $a0, $s0 /* AB7E60 80040CC0 01545824 */ and $t3, $t2, $s4 /* AB7E64 80040CC4 11600008 */ beqz $t3, .L80040CE8 /* AB7E68 80040CC8 00000000 */ nop /* AB7E6C 80040CCC 96220002 */ lhu $v0, 2($s1) /* AB7E70 80040CD0 52620048 */ beql $s3, $v0, .L80040DF4 /* AB7E74 80040CD4 C7B2009C */ lwc1 $f18, 0x9c($sp) /* AB7E78 80040CD8 8E4C13F8 */ lw $t4, 0x13f8($s2) /* AB7E7C 80040CDC 00026880 */ sll $t5, $v0, 2 /* AB7E80 80040CE0 1000FFF0 */ b .L80040CA4 /* AB7E84 80040CE4 018D8821 */ addu $s1, $t4, $t5 .L80040CE8: /* AB7E88 80040CE8 0C00E275 */ jal func_800389D4 /* AB7E8C 80040CEC 27A70084 */ addiu $a3, $sp, 0x84 /* AB7E90 80040CF0 860E000E */ lh $t6, 0xe($s0) /* AB7E94 80040CF4 AFB60010 */ sw $s6, 0x10($sp) /* AB7E98 80040CF8 C7AC008C */ lwc1 $f12, 0x8c($sp) /* AB7E9C 80040CFC 448E2000 */ mtc1 $t6, $f4 /* AB7EA0 80040D00 C7AE0088 */ lwc1 $f14, 0x88($sp) /* AB7EA4 80040D04 8FA60084 */ lw $a2, 0x84($sp) /* AB7EA8 80040D08 46802120 */ cvt.s.w $f4, $f4 /* AB7EAC 80040D0C 44072000 */ mfc1 $a3, $f4 /* AB7EB0 80040D10 0C03328F */ jal func_800CCA3C /* AB7EB4 80040D14 00000000 */ nop /* AB7EB8 80040D18 4600A03C */ c.lt.s $f20, $f0 /* AB7EBC 80040D1C 02002025 */ move $a0, $s0 /* AB7EC0 80040D20 8FA60098 */ lw $a2, 0x98($sp) /* AB7EC4 80040D24 8FA700A0 */ lw $a3, 0xa0($sp) /* AB7EC8 80040D28 45000008 */ bc1f .L80040D4C /* AB7ECC 80040D2C 27B90094 */ addiu $t9, $sp, 0x94 /* AB7ED0 80040D30 96220002 */ lhu $v0, 2($s1) /* AB7ED4 80040D34 1262002E */ beq $s3, $v0, .L80040DF0 /* AB7ED8 80040D38 0002C080 */ sll $t8, $v0, 2 /* AB7EDC 80040D3C 8E4F13F8 */ lw $t7, 0x13f8($s2) /* AB7EE0 80040D40 8E4313F0 */ lw $v1, 0x13f0($s2) /* AB7EE4 80040D44 1000FFD7 */ b .L80040CA4 /* AB7EE8 80040D48 01F88821 */ addu $s1, $t7, $t8 .L80040D4C: /* AB7EEC 80040D4C 8E4513F4 */ lw $a1, 0x13f4($s2) /* AB7EF0 80040D50 0C00E3C8 */ jal func_80038F20 /* AB7EF4 80040D54 AFB90010 */ sw $t9, 0x10($sp) /* AB7EF8 80040D58 1040001E */ beqz $v0, .L80040DD4 /* AB7EFC 80040D5C C7A20094 */ lwc1 $f2, 0x94($sp) /* AB7F00 80040D60 C7AC009C */ lwc1 $f12, 0x9c($sp) /* AB7F04 80040D64 4602603C */ c.lt.s $f12, $f2 /* AB7F08 80040D68 00000000 */ nop /* AB7F0C 80040D6C 4502001A */ bc1fl .L80040DD8 /* AB7F10 80040D70 96220002 */ lhu $v0, 2($s1) /* AB7F14 80040D74 460C1001 */ sub.s $f0, $f2, $f12 /* AB7F18 80040D78 C7A20088 */ lwc1 $f2, 0x88($sp) /* AB7F1C 80040D7C 4614003C */ c.lt.s $f0, $f20 /* AB7F20 80040D80 00000000 */ nop /* AB7F24 80040D84 45020014 */ bc1fl .L80040DD8 /* AB7F28 80040D88 96220002 */ lhu $v0, 2($s1) /* AB7F2C 80040D8C 46020182 */ mul.s $f6, $f0, $f2 /* AB7F30 80040D90 4616303E */ c.le.s $f6, $f22 /* AB7F34 80040D94 00000000 */ nop /* AB7F38 80040D98 4502000F */ bc1fl .L80040DD8 /* AB7F3C 80040D9C 96220002 */ lhu $v0, 2($s1) /* AB7F40 80040DA0 4602B03E */ c.le.s $f22, $f2 /* AB7F44 80040DA4 24080001 */ li $t0, 1 /* AB7F48 80040DA8 AFA80080 */ sw $t0, 0x80($sp) /* AB7F4C 80040DAC 45020004 */ bc1fl .L80040DC0 /* AB7F50 80040DB0 4600D006 */ mov.s $f0, $f26 /* AB7F54 80040DB4 10000002 */ b .L80040DC0 /* AB7F58 80040DB8 4600C006 */ mov.s $f0, $f24 /* AB7F5C 80040DBC 4600D006 */ mov.s $f0, $f26 .L80040DC0: /* AB7F60 80040DC0 46140202 */ mul.s $f8, $f0, $f20 /* AB7F64 80040DC4 C7AA0094 */ lwc1 $f10, 0x94($sp) /* AB7F68 80040DC8 460A4400 */ add.s $f16, $f8, $f10 /* AB7F6C 80040DCC E7B0009C */ swc1 $f16, 0x9c($sp) /* AB7F70 80040DD0 AEB00000 */ sw $s0, ($s5) .L80040DD4: /* AB7F74 80040DD4 96220002 */ lhu $v0, 2($s1) .L80040DD8: /* AB7F78 80040DD8 12620005 */ beq $s3, $v0, .L80040DF0 /* AB7F7C 80040DDC 00025080 */ sll $t2, $v0, 2 /* AB7F80 80040DE0 8E4913F8 */ lw $t1, 0x13f8($s2) /* AB7F84 80040DE4 8E4313F0 */ lw $v1, 0x13f0($s2) /* AB7F88 80040DE8 1000FFAE */ b .L80040CA4 /* AB7F8C 80040DEC 012A8821 */ addu $s1, $t1, $t2 .L80040DF0: /* AB7F90 80040DF0 C7B2009C */ lwc1 $f18, 0x9c($sp) .L80040DF4: /* AB7F94 80040DF4 8FAB00C0 */ lw $t3, 0xc0($sp) /* AB7F98 80040DF8 E5720000 */ swc1 $f18, ($t3) /* AB7F9C 80040DFC 8FA20080 */ lw $v0, 0x80($sp) .L80040E00: /* AB7FA0 80040E00 8FBF0064 */ lw $ra, 0x64($sp) /* AB7FA4 80040E04 D7B40020 */ ldc1 $f20, 0x20($sp) /* AB7FA8 80040E08 D7B60028 */ ldc1 $f22, 0x28($sp) /* AB7FAC 80040E0C D7B80030 */ ldc1 $f24, 0x30($sp) /* AB7FB0 80040E10 D7BA0038 */ ldc1 $f26, 0x38($sp) /* AB7FB4 80040E14 8FB00040 */ lw $s0, 0x40($sp) /* AB7FB8 80040E18 8FB10044 */ lw $s1, 0x44($sp) /* AB7FBC 80040E1C 8FB20048 */ lw $s2, 0x48($sp) /* AB7FC0 80040E20 8FB3004C */ lw $s3, 0x4c($sp) /* AB7FC4 80040E24 8FB40050 */ lw $s4, 0x50($sp) /* AB7FC8 80040E28 8FB50054 */ lw $s5, 0x54($sp) /* AB7FCC 80040E2C 8FB60058 */ lw $s6, 0x58($sp) /* AB7FD0 80040E30 8FB7005C */ lw $s7, 0x5c($sp) /* AB7FD4 80040E34 8FBE0060 */ lw $fp, 0x60($sp) /* AB7FD8 80040E38 03E00008 */ jr $ra /* AB7FDC 80040E3C 27BD00B0 */ addiu $sp, $sp, 0xb0