40a422:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a425:	e8 c6 8b 00 00       	call   0x412ff0
40a42a:	0f 10 45 d0          	movups -0x30(%ebp),%xmm0
40a42e:	8b 75 ec             	mov    -0x14(%ebp),%esi
40a431:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40a437:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40a43e:	c7 47 14 00 00 00 00 	movl   $0x0,0x14(%edi)
40a445:	0f 11 07             	movups %xmm0,(%edi)
40a448:	f3 0f 7e 45 e0       	movq   -0x20(%ebp),%xmm0
40a44d:	66 0f d6 47 10       	movq   %xmm0,0x10(%edi)
40a452:	85 f6                	test   %esi,%esi
40a454:	74 15                	je     0x40a46b
40a456:	8b ce                	mov    %esi,%ecx
40a458:	e8 93 fe 01 00       	call   0x42a2f0
40a45d:	68 c8 00 00 00       	push   $0xc8
40a462:	56                   	push   %esi
40a463:	e8 a0 f5 05 00       	call   0x469a08
40a468:	83 c4 08             	add    $0x8,%esp
40a46b:	8b 75 e8             	mov    -0x18(%ebp),%esi
40a46e:	85 f6                	test   %esi,%esi
40a470:	74 15                	je     0x40a487
40a472:	8b ce                	mov    %esi,%ecx
40a474:	e8 77 fe 01 00       	call   0x42a2f0
40a479:	68 c8 00 00 00       	push   $0xc8
40a47e:	56                   	push   %esi
40a47f:	e8 84 f5 05 00       	call   0x469a08
40a484:	83 c4 08             	add    $0x8,%esp
40a487:	8b 4d 20             	mov    0x20(%ebp),%ecx
40a48a:	83 f9 08             	cmp    $0x8,%ecx
40a48d:	72 2e                	jb     0x40a4bd
40a48f:	8b 55 0c             	mov    0xc(%ebp),%edx
40a492:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40a499:	8b c2                	mov    %edx,%eax
40a49b:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a4a1:	72 10                	jb     0x40a4b3
40a4a3:	8b 50 fc             	mov    -0x4(%eax),%edx
40a4a6:	83 c1 23             	add    $0x23,%ecx
40a4a9:	2b c2                	sub    %edx,%eax
40a4ab:	83 c0 fc             	add    $0xfffffffc,%eax
40a4ae:	83 f8 1f             	cmp    $0x1f,%eax
40a4b1:	77 56                	ja     0x40a509
40a4b3:	51                   	push   %ecx
40a4b4:	52                   	push   %edx
40a4b5:	e8 4e f5 05 00       	call   0x469a08
40a4ba:	83 c4 08             	add    $0x8,%esp
40a4bd:	8b 4d 38             	mov    0x38(%ebp),%ecx
40a4c0:	33 c0                	xor    %eax,%eax
40a4c2:	c7 45 1c 00 00 00 00 	movl   $0x0,0x1c(%ebp)
40a4c9:	c7 45 20 07 00 00 00 	movl   $0x7,0x20(%ebp)
40a4d0:	66 89 45 0c          	mov    %ax,0xc(%ebp)
40a4d4:	83 f9 08             	cmp    $0x8,%ecx
40a4d7:	0f 82 84 fe ff ff    	jb     0x40a361
40a4dd:	8b 55 24             	mov    0x24(%ebp),%edx
40a4e0:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40a4e7:	8b c2                	mov    %edx,%eax
40a4e9:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a4ef:	0f 82 62 fe ff ff    	jb     0x40a357
40a4f5:	8b 50 fc             	mov    -0x4(%eax),%edx
40a4f8:	83 c1 23             	add    $0x23,%ecx
40a4fb:	2b c2                	sub    %edx,%eax
40a4fd:	83 c0 fc             	add    $0xfffffffc,%eax
40a500:	83 f8 1f             	cmp    $0x1f,%eax
40a503:	0f 86 4e fe ff ff    	jbe    0x40a357
40a509:	e8 23 f1 06 00       	call   0x479631
40a50e:	cc                   	int3
40a50f:	cc                   	int3
40a510:	56                   	push   %esi
40a511:	8b f1                	mov    %ecx,%esi
40a513:	8b 06                	mov    (%esi),%eax
40a515:	85 c0                	test   %eax,%eax
40a517:	74 40                	je     0x40a559
40a519:	8b 4e 08             	mov    0x8(%esi),%ecx
40a51c:	2b c8                	sub    %eax,%ecx
40a51e:	83 e1 fc             	and    $0xfffffffc,%ecx
40a521:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a527:	72 12                	jb     0x40a53b
40a529:	8b 50 fc             	mov    -0x4(%eax),%edx
40a52c:	83 c1 23             	add    $0x23,%ecx
40a52f:	2b c2                	sub    %edx,%eax
40a531:	83 c0 fc             	add    $0xfffffffc,%eax
40a534:	83 f8 1f             	cmp    $0x1f,%eax
40a537:	77 22                	ja     0x40a55b
40a539:	8b c2                	mov    %edx,%eax
40a53b:	51                   	push   %ecx
40a53c:	50                   	push   %eax
40a53d:	e8 c6 f4 05 00       	call   0x469a08
40a542:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40a548:	83 c4 08             	add    $0x8,%esp
40a54b:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
40a552:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40a559:	5e                   	pop    %esi
40a55a:	c3                   	ret
40a55b:	e8 d1 f0 06 00       	call   0x479631
40a560:	cc                   	int3
40a561:	cc                   	int3
40a562:	cc                   	int3
40a563:	cc                   	int3
40a564:	cc                   	int3
40a565:	cc                   	int3
40a566:	cc                   	int3
40a567:	cc                   	int3
40a568:	cc                   	int3
40a569:	cc                   	int3
40a56a:	cc                   	int3
40a56b:	cc                   	int3
40a56c:	cc                   	int3
40a56d:	cc                   	int3
40a56e:	cc                   	int3
40a56f:	cc                   	int3
40a570:	55                   	push   %ebp
40a571:	8b ec                	mov    %esp,%ebp
40a573:	56                   	push   %esi
40a574:	57                   	push   %edi
40a575:	8b 7d 08             	mov    0x8(%ebp),%edi
40a578:	8b f1                	mov    %ecx,%esi
40a57a:	3b f7                	cmp    %edi,%esi
40a57c:	74 6a                	je     0x40a5e8
40a57e:	8b 06                	mov    (%esi),%eax
40a580:	85 c0                	test   %eax,%eax
40a582:	74 40                	je     0x40a5c4
40a584:	8b 4e 08             	mov    0x8(%esi),%ecx
40a587:	2b c8                	sub    %eax,%ecx
40a589:	83 e1 fc             	and    $0xfffffffc,%ecx
40a58c:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a592:	72 12                	jb     0x40a5a6
40a594:	8b 50 fc             	mov    -0x4(%eax),%edx
40a597:	83 c1 23             	add    $0x23,%ecx
40a59a:	2b c2                	sub    %edx,%eax
40a59c:	83 c0 fc             	add    $0xfffffffc,%eax
40a59f:	83 f8 1f             	cmp    $0x1f,%eax
40a5a2:	77 4c                	ja     0x40a5f0
40a5a4:	8b c2                	mov    %edx,%eax
40a5a6:	51                   	push   %ecx
40a5a7:	50                   	push   %eax
40a5a8:	e8 5b f4 05 00       	call   0x469a08
40a5ad:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40a5b3:	83 c4 08             	add    $0x8,%esp
40a5b6:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
40a5bd:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40a5c4:	8b 07                	mov    (%edi),%eax
40a5c6:	89 06                	mov    %eax,(%esi)
40a5c8:	8b 47 04             	mov    0x4(%edi),%eax
40a5cb:	89 46 04             	mov    %eax,0x4(%esi)
40a5ce:	8b 47 08             	mov    0x8(%edi),%eax
40a5d1:	89 46 08             	mov    %eax,0x8(%esi)
40a5d4:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40a5da:	c7 47 04 00 00 00 00 	movl   $0x0,0x4(%edi)
40a5e1:	c7 47 08 00 00 00 00 	movl   $0x0,0x8(%edi)
40a5e8:	5f                   	pop    %edi
40a5e9:	8b c6                	mov    %esi,%eax
40a5eb:	5e                   	pop    %esi
40a5ec:	5d                   	pop    %ebp
40a5ed:	c2 04 00             	ret    $0x4
40a5f0:	e8 3c f0 06 00       	call   0x479631
40a5f5:	cc                   	int3
40a5f6:	cc                   	int3
40a5f7:	cc                   	int3
40a5f8:	cc                   	int3
40a5f9:	cc                   	int3
40a5fa:	cc                   	int3
40a5fb:	cc                   	int3
40a5fc:	cc                   	int3
40a5fd:	cc                   	int3
40a5fe:	cc                   	int3
40a5ff:	cc                   	int3
40a600:	55                   	push   %ebp
40a601:	8b ec                	mov    %esp,%ebp
40a603:	6a ff                	push   $0xffffffff
40a605:	68 8d 7e 49 00       	push   $0x497e8d
40a60a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a610:	50                   	push   %eax
40a611:	51                   	push   %ecx
40a612:	53                   	push   %ebx
40a613:	56                   	push   %esi
40a614:	57                   	push   %edi
40a615:	a1 14 40 4c 00       	mov    0x4c4014,%eax
40a61a:	33 c5                	xor    %ebp,%eax
40a61c:	50                   	push   %eax
40a61d:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a620:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a626:	8b f1                	mov    %ecx,%esi
40a628:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a62b:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40a630:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40a636:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
40a63d:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40a644:	8b 4b 04             	mov    0x4(%ebx),%ecx
40a647:	2b 0b                	sub    (%ebx),%ecx
40a649:	f7 e9                	imul   %ecx
40a64b:	c1 fa 02             	sar    $0x2,%edx
40a64e:	8b fa                	mov    %edx,%edi
40a650:	c1 ef 1f             	shr    $0x1f,%edi
40a653:	03 fa                	add    %edx,%edi
40a655:	74 38                	je     0x40a68f
40a657:	81 ff aa aa aa 0a    	cmp    $0xaaaaaaa,%edi
40a65d:	77 46                	ja     0x40a6a5
40a65f:	57                   	push   %edi
40a660:	e8 db 8a ff ff       	call   0x403140
40a665:	8d 14 7f             	lea    (%edi,%edi,2),%edx
40a668:	89 06                	mov    %eax,(%esi)
40a66a:	89 46 04             	mov    %eax,0x4(%esi)
40a66d:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a670:	8d 14 d0             	lea    (%eax,%edx,8),%edx
40a673:	89 56 08             	mov    %edx,0x8(%esi)
40a676:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a67d:	8b 53 04             	mov    0x4(%ebx),%edx
40a680:	8b 0b                	mov    (%ebx),%ecx
40a682:	56                   	push   %esi
40a683:	50                   	push   %eax
40a684:	e8 77 02 00 00       	call   0x40a900
40a689:	83 c4 08             	add    $0x8,%esp
40a68c:	89 46 04             	mov    %eax,0x4(%esi)
40a68f:	8b c6                	mov    %esi,%eax
40a691:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a694:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a69b:	59                   	pop    %ecx
40a69c:	5f                   	pop    %edi
40a69d:	5e                   	pop    %esi
40a69e:	5b                   	pop    %ebx
40a69f:	8b e5                	mov    %ebp,%esp
40a6a1:	5d                   	pop    %ebp
40a6a2:	c2 04 00             	ret    $0x4
40a6a5:	e8 26 8e ff ff       	call   0x4034d0
40a6aa:	cc                   	int3
40a6ab:	cc                   	int3
40a6ac:	cc                   	int3
40a6ad:	cc                   	int3
40a6ae:	cc                   	int3
40a6af:	cc                   	int3
40a6b0:	68 9c 0c 4b 00       	push   $0x4b0c9c
40a6b5:	e8 a0 e0 05 00       	call   0x46875a
40a6ba:	cc                   	int3
40a6bb:	cc                   	int3
40a6bc:	cc                   	int3
40a6bd:	cc                   	int3
40a6be:	cc                   	int3
40a6bf:	cc                   	int3
40a6c0:	55                   	push   %ebp
40a6c1:	8b ec                	mov    %esp,%ebp
40a6c3:	83 ec 08             	sub    $0x8,%esp
40a6c6:	53                   	push   %ebx
40a6c7:	56                   	push   %esi
40a6c8:	57                   	push   %edi
40a6c9:	8b 7d 10             	mov    0x10(%ebp),%edi
40a6cc:	8b d9                	mov    %ecx,%ebx
40a6ce:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a6d1:	3b fa                	cmp    %edx,%edi
40a6d3:	77 38                	ja     0x40a70d
40a6d5:	8b 45 08             	mov    0x8(%ebp),%eax
40a6d8:	2b d7                	sub    %edi,%edx
40a6da:	3b c2                	cmp    %edx,%eax
40a6dc:	77 2f                	ja     0x40a70d
40a6de:	85 ff                	test   %edi,%edi
40a6e0:	74 2e                	je     0x40a710
40a6e2:	8d 4a 01             	lea    0x1(%edx),%ecx
40a6e5:	8d 0c 4b             	lea    (%ebx,%ecx,2),%ecx
40a6e8:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40a6eb:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a6ee:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40a6f1:	2b c8                	sub    %eax,%ecx
40a6f3:	d1 f9                	sar    $1,%ecx
40a6f5:	74 16                	je     0x40a70d
40a6f7:	0f b7 13             	movzwl (%ebx),%edx
40a6fa:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
40a700:	66 39 10             	cmp    %dx,(%eax)
40a703:	74 12                	je     0x40a717
40a705:	83 c0 02             	add    $0x2,%eax
40a708:	83 e9 01             	sub    $0x1,%ecx
40a70b:	75 f3                	jne    0x40a700
40a70d:	83 c8 ff             	or     $0xffffffff,%eax
40a710:	5f                   	pop    %edi
40a711:	5e                   	pop    %esi
40a712:	5b                   	pop    %ebx
40a713:	8b e5                	mov    %ebp,%esp
40a715:	5d                   	pop    %ebp
40a716:	c3                   	ret
40a717:	85 c0                	test   %eax,%eax
40a719:	74 f2                	je     0x40a70d
40a71b:	8b f7                	mov    %edi,%esi
40a71d:	8b d3                	mov    %ebx,%edx
40a71f:	85 ff                	test   %edi,%edi
40a721:	74 15                	je     0x40a738
40a723:	8b f8                	mov    %eax,%edi
40a725:	2b fb                	sub    %ebx,%edi
40a727:	66 8b 0c 17          	mov    (%edi,%edx,1),%cx
40a72b:	66 3b 0a             	cmp    (%edx),%cx
40a72e:	75 14                	jne    0x40a744
40a730:	83 c2 02             	add    $0x2,%edx
40a733:	83 ee 01             	sub    $0x1,%esi
40a736:	75 ef                	jne    0x40a727
40a738:	2b 45 f8             	sub    -0x8(%ebp),%eax
40a73b:	5f                   	pop    %edi
40a73c:	5e                   	pop    %esi
40a73d:	d1 f8                	sar    $1,%eax
40a73f:	5b                   	pop    %ebx
40a740:	8b e5                	mov    %ebp,%esp
40a742:	5d                   	pop    %ebp
40a743:	c3                   	ret
40a744:	8b 7d 10             	mov    0x10(%ebp),%edi
40a747:	83 c0 02             	add    $0x2,%eax
40a74a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a74d:	eb a2                	jmp    0x40a6f1
40a74f:	cc                   	int3
40a750:	8b 09                	mov    (%ecx),%ecx
40a752:	85 c9                	test   %ecx,%ecx
40a754:	0f 85 26 86 ff ff    	jne    0x402d80
40a75a:	c3                   	ret
40a75b:	cc                   	int3
40a75c:	cc                   	int3
40a75d:	cc                   	int3
40a75e:	cc                   	int3
40a75f:	cc                   	int3
40a760:	55                   	push   %ebp
40a761:	8b ec                	mov    %esp,%ebp
40a763:	83 ec 0c             	sub    $0xc,%esp
40a766:	8b 45 08             	mov    0x8(%ebp),%eax
40a769:	53                   	push   %ebx
40a76a:	56                   	push   %esi
40a76b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a76e:	57                   	push   %edi
40a76f:	8b f9                	mov    %ecx,%edi
40a771:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a774:	8b d1                	mov    %ecx,%edx
40a776:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a779:	2b d0                	sub    %eax,%edx
40a77b:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40a780:	f7 ea                	imul   %edx
40a782:	8b 4f 08             	mov    0x8(%edi),%ecx
40a785:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40a78a:	8b 1f                	mov    (%edi),%ebx
40a78c:	2b cb                	sub    %ebx,%ecx
40a78e:	c1 fa 02             	sar    $0x2,%edx
40a791:	8b f2                	mov    %edx,%esi
40a793:	c1 ee 1f             	shr    $0x1f,%esi
40a796:	03 f2                	add    %edx,%esi
40a798:	f7 e9                	imul   %ecx
40a79a:	c1 fa 02             	sar    $0x2,%edx
40a79d:	8b c2                	mov    %edx,%eax
40a79f:	c1 e8 1f             	shr    $0x1f,%eax
40a7a2:	03 c2                	add    %edx,%eax
40a7a4:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a7a7:	3b f0                	cmp    %eax,%esi
40a7a9:	0f 86 c9 00 00 00    	jbe    0x40a878
40a7af:	81 fe aa aa aa 0a    	cmp    $0xaaaaaaa,%esi
40a7b5:	0f 87 2c 01 00 00    	ja     0x40a8e7
40a7bb:	8b 55 f4             	mov    -0xc(%ebp),%edx
40a7be:	8b c8                	mov    %eax,%ecx
40a7c0:	d1 e9                	shr    $1,%ecx
40a7c2:	b8 aa aa aa 0a       	mov    $0xaaaaaaa,%eax
40a7c7:	2b c1                	sub    %ecx,%eax