glabel func_80040FA4 /* AB8144 80040FA4 27BDFF88 */ addiu $sp, $sp, -0x78 /* AB8148 80040FA8 AFBF003C */ sw $ra, 0x3c($sp) /* AB814C 80040FAC AFB50038 */ sw $s5, 0x38($sp) /* AB8150 80040FB0 AFB40034 */ sw $s4, 0x34($sp) /* AB8154 80040FB4 AFB30030 */ sw $s3, 0x30($sp) /* AB8158 80040FB8 AFB2002C */ sw $s2, 0x2c($sp) /* AB815C 80040FBC AFB10028 */ sw $s1, 0x28($sp) /* AB8160 80040FC0 AFB00024 */ sw $s0, 0x24($sp) /* AB8164 80040FC4 8C8E000C */ lw $t6, 0xc($a0) /* AB8168 80040FC8 3414FFFF */ li $s4, 65535 /* AB816C 80040FCC 00808025 */ move $s0, $a0 /* AB8170 80040FD0 95C20000 */ lhu $v0, ($t6) /* AB8174 80040FD4 0000A825 */ move $s5, $zero /* AB8178 80040FD8 16820003 */ bne $s4, $v0, .L80040FE8 /* AB817C 80040FDC 00027880 */ sll $t7, $v0, 2 /* AB8180 80040FE0 10000048 */ b .L80041104 /* AB8184 80040FE4 00001025 */ move $v0, $zero .L80040FE8: /* AB8188 80040FE8 8E030008 */ lw $v1, 8($s0) /* AB818C 80040FEC 96060004 */ lhu $a2, 4($s0) /* AB8190 80040FF0 27B3005C */ addiu $s3, $sp, 0x5c /* AB8194 80040FF4 8C6413F8 */ lw $a0, 0x13f8($v1) /* AB8198 80040FF8 30C60007 */ andi $a2, $a2, 7 /* AB819C 80040FFC 00063340 */ sll $a2, $a2, 0xd /* AB81A0 80041000 8C6513F0 */ lw $a1, 0x13f0($v1) /* AB81A4 80041004 008F9021 */ addu $s2, $a0, $t7 .L80041008: /* AB81A8 80041008 86420000 */ lh $v0, ($s2) /* AB81AC 8004100C 0002C100 */ sll $t8, $v0, 4 /* AB81B0 80041010 00B88821 */ addu $s1, $a1, $t8 /* AB81B4 80041014 96390002 */ lhu $t9, 2($s1) /* AB81B8 80041018 03264024 */ and $t0, $t9, $a2 /* AB81BC 8004101C 51000007 */ beql $t0, $zero, .L8004103C /* AB81C0 80041020 8C6513F4 */ lw $a1, 0x13f4($v1) /* AB81C4 80041024 96420002 */ lhu $v0, 2($s2) /* AB81C8 80041028 12820035 */ beq $s4, $v0, .L80041100 /* AB81CC 8004102C 00024880 */ sll $t1, $v0, 2 /* AB81D0 80041030 1000FFF5 */ b .L80041008 /* AB81D4 80041034 00899021 */ addu $s2, $a0, $t1 /* AB81D8 80041038 8C6513F4 */ lw $a1, 0x13f4($v1) .L8004103C: /* AB81DC 8004103C 8E060010 */ lw $a2, 0x10($s0) /* AB81E0 80041040 8E070014 */ lw $a3, 0x14($s0) /* AB81E4 80041044 AFB30010 */ sw $s3, 0x10($sp) /* AB81E8 80041048 8E0A0020 */ lw $t2, 0x20($s0) /* AB81EC 8004104C 02202025 */ move $a0, $s1 /* AB81F0 80041050 AFAA0014 */ sw $t2, 0x14($sp) /* AB81F4 80041054 C6040028 */ lwc1 $f4, 0x28($s0) /* AB81F8 80041058 0C00E428 */ jal func_800390A0 /* AB81FC 8004105C E7A40018 */ swc1 $f4, 0x18($sp) /* AB8200 80041060 1040001B */ beqz $v0, .L800410D0 /* AB8204 80041064 02602825 */ move $a1, $s3 /* AB8208 80041068 0C032D94 */ jal func_800CB650 /* AB820C 8004106C 8E040010 */ lw $a0, 0x10($s0) /* AB8210 80041070 8E020024 */ lw $v0, 0x24($s0) /* AB8214 80041074 C4460000 */ lwc1 $f6, ($v0) /* AB8218 80041078 4606003C */ c.lt.s $f0, $f6 /* AB821C 8004107C 00000000 */ nop /* AB8220 80041080 45020014 */ bc1fl .L800410D4 /* AB8224 80041084 96420002 */ lhu $v0, 2($s2) /* AB8228 80041088 E4400000 */ swc1 $f0, ($v0) /* AB822C 8004108C 8E6D0000 */ lw $t5, ($s3) /* AB8230 80041090 8E0B0018 */ lw $t3, 0x18($s0) /* AB8234 80041094 24150001 */ li $s5, 1 /* AB8238 80041098 AD6D0000 */ sw $t5, ($t3) /* AB823C 8004109C 8E6C0004 */ lw $t4, 4($s3) /* AB8240 800410A0 AD6C0004 */ sw $t4, 4($t3) /* AB8244 800410A4 8E6D0008 */ lw $t5, 8($s3) /* AB8248 800410A8 AD6D0008 */ sw $t5, 8($t3) /* AB824C 800410AC 8E780000 */ lw $t8, ($s3) /* AB8250 800410B0 8E0E0014 */ lw $t6, 0x14($s0) /* AB8254 800410B4 ADD80000 */ sw $t8, ($t6) /* AB8258 800410B8 8E6F0004 */ lw $t7, 4($s3) /* AB825C 800410BC ADCF0004 */ sw $t7, 4($t6) /* AB8260 800410C0 8E780008 */ lw $t8, 8($s3) /* AB8264 800410C4 ADD80008 */ sw $t8, 8($t6) /* AB8268 800410C8 8E19001C */ lw $t9, 0x1c($s0) /* AB826C 800410CC AF310000 */ sw $s1, ($t9) .L800410D0: /* AB8270 800410D0 96420002 */ lhu $v0, 2($s2) .L800410D4: /* AB8274 800410D4 5282000B */ beql $s4, $v0, .L80041104 /* AB8278 800410D8 02A01025 */ move $v0, $s5 /* AB827C 800410DC 8E030008 */ lw $v1, 8($s0) /* AB8280 800410E0 96060004 */ lhu $a2, 4($s0) /* AB8284 800410E4 00024080 */ sll $t0, $v0, 2 /* AB8288 800410E8 8C6413F8 */ lw $a0, 0x13f8($v1) /* AB828C 800410EC 30C60007 */ andi $a2, $a2, 7 /* AB8290 800410F0 00063340 */ sll $a2, $a2, 0xd /* AB8294 800410F4 8C6513F0 */ lw $a1, 0x13f0($v1) /* AB8298 800410F8 1000FFC3 */ b .L80041008 /* AB829C 800410FC 00889021 */ addu $s2, $a0, $t0 .L80041100: /* AB82A0 80041100 02A01025 */ move $v0, $s5 .L80041104: /* AB82A4 80041104 8FBF003C */ lw $ra, 0x3c($sp) /* AB82A8 80041108 8FB00024 */ lw $s0, 0x24($sp) /* AB82AC 8004110C 8FB10028 */ lw $s1, 0x28($sp) /* AB82B0 80041110 8FB2002C */ lw $s2, 0x2c($sp) /* AB82B4 80041114 8FB30030 */ lw $s3, 0x30($sp) /* AB82B8 80041118 8FB40034 */ lw $s4, 0x34($sp) /* AB82BC 8004111C 8FB50038 */ lw $s5, 0x38($sp) /* AB82C0 80041120 03E00008 */ jr $ra /* AB82C4 80041124 27BD0078 */ addiu $sp, $sp, 0x78