40f5c7:	0f 85 9d fe ff ff    	jne    0x40f46a
40f5cd:	dd d8                	fstp   %st(0)
40f5cf:	dd d8                	fstp   %st(0)
40f5d1:	db 2d 40 85 42 00    	fldt   0x428540
40f5d7:	b8 01 00 00 00       	mov    $0x1,%eax
40f5dc:	e9 b4 fe ff ff       	jmp    0x40f495
40f5e1:	d9 c0                	fld    %st(0)
40f5e3:	d9 fc                	frndint
40f5e5:	d8 d9                	fcomp  %st(1)
40f5e7:	b1 00                	mov    $0x0,%cl
40f5e9:	9b df e0             	fstsw  %ax
40f5ec:	9e                   	sahf
40f5ed:	75 17                	jne    0x40f606
40f5ef:	dc 0d 24 74 42 00    	fmull  0x427424
40f5f5:	fe c1                	inc    %cl
40f5f7:	d9 c0                	fld    %st(0)
40f5f9:	d9 fc                	frndint
40f5fb:	de d9                	fcompp
40f5fd:	9b df e0             	fstsw  %ax
40f600:	9e                   	sahf
40f601:	75 02                	jne    0x40f605
40f603:	fe c1                	inc    %cl
40f605:	c3                   	ret
40f606:	dd d8                	fstp   %st(0)
40f608:	c3                   	ret
40f609:	8b ff                	mov    %edi,%edi
40f60b:	55                   	push   %ebp
40f60c:	8b ec                	mov    %esp,%ebp
40f60e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f611:	33 c0                	xor    %eax,%eax
40f613:	38 01                	cmp    %al,(%ecx)
40f615:	74 0c                	je     0x40f623
40f617:	3b 45 0c             	cmp    0xc(%ebp),%eax
40f61a:	74 07                	je     0x40f623
40f61c:	40                   	inc    %eax
40f61d:	80 3c 08 00          	cmpb   $0x0,(%eax,%ecx,1)
40f621:	75 f4                	jne    0x40f617
40f623:	5d                   	pop    %ebp
40f624:	c3                   	ret
40f625:	8b ff                	mov    %edi,%edi
40f627:	55                   	push   %ebp
40f628:	8b ec                	mov    %esp,%ebp
40f62a:	56                   	push   %esi
40f62b:	8b 75 08             	mov    0x8(%ebp),%esi
40f62e:	57                   	push   %edi
40f62f:	85 f6                	test   %esi,%esi
40f631:	75 1a                	jne    0x40f64d
40f633:	8b 75 0c             	mov    0xc(%ebp),%esi
40f636:	8b ce                	mov    %esi,%ecx
40f638:	e8 b7 00 00 00       	call   0x40f6f4
40f63d:	33 ff                	xor    %edi,%edi
40f63f:	89 7e 08             	mov    %edi,0x8(%esi)
40f642:	89 7e 0c             	mov    %edi,0xc(%esi)
40f645:	89 7e 10             	mov    %edi,0x10(%esi)
40f648:	e9 84 00 00 00       	jmp    0x40f6d1
40f64d:	33 ff                	xor    %edi,%edi
40f64f:	80 3e 00             	cmpb   $0x0,(%esi)
40f652:	75 1f                	jne    0x40f673
40f654:	8b 75 0c             	mov    0xc(%ebp),%esi
40f657:	39 7e 0c             	cmp    %edi,0xc(%esi)
40f65a:	75 0d                	jne    0x40f669
40f65c:	6a 01                	push   $0x1
40f65e:	8b ce                	mov    %esi,%ecx
40f660:	e8 a9 00 00 00       	call   0x40f70e
40f665:	85 c0                	test   %eax,%eax
40f667:	75 6a                	jne    0x40f6d3
40f669:	8b 46 08             	mov    0x8(%esi),%eax
40f66c:	33 c9                	xor    %ecx,%ecx
40f66e:	66 89 08             	mov    %cx,(%eax)
40f671:	eb d2                	jmp    0x40f645
40f673:	57                   	push   %edi
40f674:	57                   	push   %edi
40f675:	6a ff                	push   $0xffffffff
40f677:	56                   	push   %esi
40f678:	6a 09                	push   $0x9
40f67a:	ff 75 14             	push   0x14(%ebp)
40f67d:	e8 ed ab 00 00       	call   0x41a26f
40f682:	83 c4 18             	add    $0x18,%esp
40f685:	85 c0                	test   %eax,%eax
40f687:	75 16                	jne    0x40f69f
40f689:	ff 15 98 40 42 00    	call   *0x424098
40f68f:	50                   	push   %eax
40f690:	e8 30 f7 ff ff       	call   0x40edc5
40f695:	59                   	pop    %ecx
40f696:	e8 60 f7 ff ff       	call   0x40edfb
40f69b:	8b 00                	mov    (%eax),%eax
40f69d:	eb 34                	jmp    0x40f6d3
40f69f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f6a2:	3b 47 0c             	cmp    0xc(%edi),%eax
40f6a5:	76 0c                	jbe    0x40f6b3
40f6a7:	50                   	push   %eax
40f6a8:	8b cf                	mov    %edi,%ecx
40f6aa:	e8 5f 00 00 00       	call   0x40f70e
40f6af:	85 c0                	test   %eax,%eax
40f6b1:	75 20                	jne    0x40f6d3
40f6b3:	ff 77 0c             	push   0xc(%edi)
40f6b6:	ff 77 08             	push   0x8(%edi)
40f6b9:	6a ff                	push   $0xffffffff
40f6bb:	56                   	push   %esi
40f6bc:	6a 09                	push   $0x9
40f6be:	ff 75 14             	push   0x14(%ebp)
40f6c1:	e8 a9 ab 00 00       	call   0x41a26f
40f6c6:	83 c4 18             	add    $0x18,%esp
40f6c9:	85 c0                	test   %eax,%eax
40f6cb:	74 bc                	je     0x40f689
40f6cd:	48                   	dec    %eax
40f6ce:	89 47 10             	mov    %eax,0x10(%edi)
40f6d1:	33 c0                	xor    %eax,%eax
40f6d3:	5f                   	pop    %edi
40f6d4:	5e                   	pop    %esi
40f6d5:	5d                   	pop    %ebp
40f6d6:	c3                   	ret
40f6d7:	8b ff                	mov    %edi,%edi
40f6d9:	55                   	push   %ebp
40f6da:	8b ec                	mov    %esp,%ebp
40f6dc:	51                   	push   %ecx
40f6dd:	ff 75 10             	push   0x10(%ebp)
40f6e0:	8d 45 ff             	lea    -0x1(%ebp),%eax
40f6e3:	50                   	push   %eax
40f6e4:	ff 75 0c             	push   0xc(%ebp)
40f6e7:	ff 75 08             	push   0x8(%ebp)
40f6ea:	e8 36 ff ff ff       	call   0x40f625
40f6ef:	83 c4 10             	add    $0x10,%esp
40f6f2:	c9                   	leave
40f6f3:	c3                   	ret
40f6f4:	8b ff                	mov    %edi,%edi
40f6f6:	56                   	push   %esi
40f6f7:	8b f1                	mov    %ecx,%esi
40f6f9:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40f6fd:	74 0d                	je     0x40f70c
40f6ff:	ff 76 08             	push   0x8(%esi)
40f702:	e8 04 3a 00 00       	call   0x41310b
40f707:	59                   	pop    %ecx
40f708:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f70c:	5e                   	pop    %esi
40f70d:	c3                   	ret
40f70e:	8b ff                	mov    %edi,%edi
40f710:	55                   	push   %ebp
40f711:	8b ec                	mov    %esp,%ebp
40f713:	56                   	push   %esi
40f714:	57                   	push   %edi
40f715:	8b f1                	mov    %ecx,%esi
40f717:	e8 d8 ff ff ff       	call   0x40f6f4
40f71c:	8b 7d 08             	mov    0x8(%ebp),%edi
40f71f:	56                   	push   %esi
40f720:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40f723:	50                   	push   %eax
40f724:	8d 46 08             	lea    0x8(%esi),%eax
40f727:	50                   	push   %eax
40f728:	e8 20 00 00 00       	call   0x40f74d
40f72d:	83 c4 0c             	add    $0xc,%esp
40f730:	85 c0                	test   %eax,%eax
40f732:	74 0a                	je     0x40f73e
40f734:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40f738:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f73c:	eb 09                	jmp    0x40f747
40f73e:	c6 46 14 01          	movb   $0x1,0x14(%esi)
40f742:	33 c0                	xor    %eax,%eax
40f744:	89 7e 0c             	mov    %edi,0xc(%esi)
40f747:	5f                   	pop    %edi
40f748:	5e                   	pop    %esi
40f749:	5d                   	pop    %ebp
40f74a:	c2 04 00             	ret    $0x4
40f74d:	8b ff                	mov    %edi,%edi
40f74f:	55                   	push   %ebp
40f750:	8b ec                	mov    %esp,%ebp
40f752:	ff 75 0c             	push   0xc(%ebp)
40f755:	e8 0c 44 00 00       	call   0x413b66
40f75a:	59                   	pop    %ecx
40f75b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f75e:	89 01                	mov    %eax,(%ecx)
40f760:	f7 d8                	neg    %eax
40f762:	1b c0                	sbb    %eax,%eax
40f764:	83 e0 f4             	and    $0xfffffff4,%eax
40f767:	83 c0 0c             	add    $0xc,%eax
40f76a:	5d                   	pop    %ebp
40f76b:	c3                   	ret
40f76c:	8b ff                	mov    %edi,%edi
40f76e:	55                   	push   %ebp
40f76f:	8b ec                	mov    %esp,%ebp
40f771:	a1 64 45 43 00       	mov    0x434564,%eax
40f776:	56                   	push   %esi
40f777:	57                   	push   %edi
40f778:	83 f8 05             	cmp    $0x5,%eax
40f77b:	7c 7a                	jl     0x40f7f7
40f77d:	8b 75 08             	mov    0x8(%ebp),%esi
40f780:	8b d6                	mov    %esi,%edx
40f782:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f785:	83 e2 1f             	and    $0x1f,%edx
40f788:	6a 20                	push   $0x20
40f78a:	58                   	pop    %eax
40f78b:	2b c2                	sub    %edx,%eax
40f78d:	f7 da                	neg    %edx
40f78f:	1b d2                	sbb    %edx,%edx
40f791:	23 d0                	and    %eax,%edx
40f793:	3b fa                	cmp    %edx,%edi
40f795:	73 02                	jae    0x40f799
40f797:	8b d7                	mov    %edi,%edx
40f799:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
40f79c:	8b c6                	mov    %esi,%eax
40f79e:	3b f1                	cmp    %ecx,%esi
40f7a0:	74 0a                	je     0x40f7ac
40f7a2:	80 38 00             	cmpb   $0x0,(%eax)
40f7a5:	74 05                	je     0x40f7ac
40f7a7:	40                   	inc    %eax
40f7a8:	3b c1                	cmp    %ecx,%eax
40f7aa:	75 f6                	jne    0x40f7a2
40f7ac:	8b c8                	mov    %eax,%ecx
40f7ae:	2b ce                	sub    %esi,%ecx
40f7b0:	3b ca                	cmp    %edx,%ecx
40f7b2:	0f 85 d0 00 00 00    	jne    0x40f888
40f7b8:	2b fa                	sub    %edx,%edi
40f7ba:	8b c8                	mov    %eax,%ecx
40f7bc:	83 e7 e0             	and    $0xffffffe0,%edi
40f7bf:	03 f8                	add    %eax,%edi
40f7c1:	c5 f1 ef c9          	vpxor  %xmm1,%xmm1,%xmm1
40f7c5:	3b c7                	cmp    %edi,%eax
40f7c7:	74 13                	je     0x40f7dc
40f7c9:	c5 f5 74 01          	vpcmpeqb (%ecx),%ymm1,%ymm0
40f7cd:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
40f7d1:	85 c0                	test   %eax,%eax
40f7d3:	75 07                	jne    0x40f7dc
40f7d5:	83 c1 20             	add    $0x20,%ecx
40f7d8:	3b cf                	cmp    %edi,%ecx
40f7da:	75 ed                	jne    0x40f7c9
40f7dc:	8b 45 0c             	mov    0xc(%ebp),%eax
40f7df:	03 c6                	add    %esi,%eax
40f7e1:	eb 06                	jmp    0x40f7e9
40f7e3:	80 39 00             	cmpb   $0x0,(%ecx)
40f7e6:	74 05                	je     0x40f7ed
40f7e8:	41                   	inc    %ecx
40f7e9:	3b c8                	cmp    %eax,%ecx
40f7eb:	75 f6                	jne    0x40f7e3
40f7ed:	2b ce                	sub    %esi,%ecx
40f7ef:	c5 f8 77             	vzeroupper
40f7f2:	e9 91 00 00 00       	jmp    0x40f888
40f7f7:	83 f8 01             	cmp    $0x1,%eax
40f7fa:	7c 72                	jl     0x40f86e
40f7fc:	8b 75 08             	mov    0x8(%ebp),%esi
40f7ff:	8b d6                	mov    %esi,%edx
40f801:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f804:	83 e2 0f             	and    $0xf,%edx
40f807:	6a 10                	push   $0x10
40f809:	58                   	pop    %eax
40f80a:	2b c2                	sub    %edx,%eax
40f80c:	f7 da                	neg    %edx
40f80e:	1b d2                	sbb    %edx,%edx
40f810:	23 d0                	and    %eax,%edx
40f812:	3b fa                	cmp    %edx,%edi
40f814:	73 02                	jae    0x40f818
40f816:	8b d7                	mov    %edi,%edx
40f818:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
40f81b:	8b c6                	mov    %esi,%eax
40f81d:	3b f1                	cmp    %ecx,%esi
40f81f:	74 0a                	je     0x40f82b
40f821:	80 38 00             	cmpb   $0x0,(%eax)
40f824:	74 05                	je     0x40f82b
40f826:	40                   	inc    %eax
40f827:	3b c1                	cmp    %ecx,%eax
40f829:	75 f6                	jne    0x40f821
40f82b:	8b c8                	mov    %eax,%ecx
40f82d:	2b ce                	sub    %esi,%ecx
40f82f:	3b ca                	cmp    %edx,%ecx
40f831:	75 55                	jne    0x40f888
40f833:	2b fa                	sub    %edx,%edi
40f835:	8b c8                	mov    %eax,%ecx
40f837:	83 e7 f0             	and    $0xfffffff0,%edi
40f83a:	0f 57 c9             	xorps  %xmm1,%xmm1
40f83d:	03 f8                	add    %eax,%edi
40f83f:	3b c7                	cmp    %edi,%eax
40f841:	74 16                	je     0x40f859
40f843:	0f 10 01             	movups (%ecx),%xmm0
40f846:	66 0f 74 c1          	pcmpeqb %xmm1,%xmm0
40f84a:	66 0f d7 c0          	pmovmskb %xmm0,%eax
40f84e:	85 c0                	test   %eax,%eax
40f850:	75 07                	jne    0x40f859
40f852:	83 c1 10             	add    $0x10,%ecx
40f855:	3b cf                	cmp    %edi,%ecx
40f857:	75 ea                	jne    0x40f843
40f859:	8b 45 0c             	mov    0xc(%ebp),%eax
40f85c:	03 c6                	add    %esi,%eax
40f85e:	eb 06                	jmp    0x40f866
40f860:	80 39 00             	cmpb   $0x0,(%ecx)
40f863:	74 05                	je     0x40f86a
40f865:	41                   	inc    %ecx
40f866:	3b c8                	cmp    %eax,%ecx
40f868:	75 f6                	jne    0x40f860
40f86a:	2b ce                	sub    %esi,%ecx
40f86c:	eb 1a                	jmp    0x40f888
40f86e:	8b 55 08             	mov    0x8(%ebp),%edx
40f871:	8b ca                	mov    %edx,%ecx
40f873:	8b 45 0c             	mov    0xc(%ebp),%eax
40f876:	03 c2                	add    %edx,%eax
40f878:	3b d0                	cmp    %eax,%edx
40f87a:	74 0a                	je     0x40f886
40f87c:	80 39 00             	cmpb   $0x0,(%ecx)
40f87f:	74 05                	je     0x40f886
40f881:	41                   	inc    %ecx
40f882:	3b c8                	cmp    %eax,%ecx
40f884:	75 f6                	jne    0x40f87c
40f886:	2b ca                	sub    %edx,%ecx
40f888:	5f                   	pop    %edi
40f889:	8b c1                	mov    %ecx,%eax
40f88b:	5e                   	pop    %esi
40f88c:	5d                   	pop    %ebp
40f88d:	c3                   	ret
40f88e:	8b ff                	mov    %edi,%edi
40f890:	55                   	push   %ebp
40f891:	8b ec                	mov    %esp,%ebp
40f893:	a1 64 45 43 00       	mov    0x434564,%eax
40f898:	56                   	push   %esi
40f899:	57                   	push   %edi
40f89a:	83 f8 05             	cmp    $0x5,%eax
40f89d:	0f 8c b7 00 00 00    	jl     0x40f95a
40f8a3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f8a6:	f6 c1 01             	test   $0x1,%cl
40f8a9:	74 21                	je     0x40f8cc
40f8ab:	8b 45 0c             	mov    0xc(%ebp),%eax
40f8ae:	8b f1                	mov    %ecx,%esi
40f8b0:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40f8b3:	3b f2                	cmp    %edx,%esi
40f8b5:	74 0e                	je     0x40f8c5
40f8b7:	33 c0                	xor    %eax,%eax
40f8b9:	66 39 01             	cmp    %ax,(%ecx)
40f8bc:	74 07                	je     0x40f8c5
40f8be:	83 c1 02             	add    $0x2,%ecx
40f8c1:	3b ca                	cmp    %edx,%ecx
40f8c3:	75 f4                	jne    0x40f8b9
40f8c5:	2b ce                	sub    %esi,%ecx
40f8c7:	e9 6a 01 00 00       	jmp    0x40fa36
40f8cc:	8b d1                	mov    %ecx,%edx
40f8ce:	83 e2 1f             	and    $0x1f,%edx
40f8d1:	6a 20                	push   $0x20
40f8d3:	58                   	pop    %eax
40f8d4:	2b c2                	sub    %edx,%eax
40f8d6:	f7 da                	neg    %edx
40f8d8:	1b d2                	sbb    %edx,%edx
40f8da:	23 d0                	and    %eax,%edx
40f8dc:	8b 45 0c             	mov    0xc(%ebp),%eax
40f8df:	d1 ea                	shr    $1,%edx
40f8e1:	3b c2                	cmp    %edx,%eax
40f8e3:	73 02                	jae    0x40f8e7
40f8e5:	8b d0                	mov    %eax,%edx
40f8e7:	8b 75 08             	mov    0x8(%ebp),%esi
40f8ea:	8d 3c 51             	lea    (%ecx,%edx,2),%edi
40f8ed:	33 c0                	xor    %eax,%eax
40f8ef:	3b f7                	cmp    %edi,%esi
40f8f1:	74 0c                	je     0x40f8ff
40f8f3:	66 39 01             	cmp    %ax,(%ecx)
40f8f6:	74 07                	je     0x40f8ff