40d2ca:	8b 73 10             	mov    0x10(%ebx),%esi
40d2cd:	2b c6                	sub    %esi,%eax
40d2cf:	89 75 f8             	mov    %esi,-0x8(%ebp)
40d2d2:	57                   	push   %edi
40d2d3:	3b c2                	cmp    %edx,%eax
40d2d5:	0f 82 35 01 00 00    	jb     0x40d410
40d2db:	8b 7b 14             	mov    0x14(%ebx),%edi
40d2de:	8d 04 16             	lea    (%esi,%edx,1),%eax
40d2e1:	8b f0                	mov    %eax,%esi
40d2e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d2e6:	83 ce 07             	or     $0x7,%esi
40d2e9:	89 7d f4             	mov    %edi,-0xc(%ebp)
40d2ec:	3b f1                	cmp    %ecx,%esi
40d2ee:	76 04                	jbe    0x40d2f4
40d2f0:	8b f1                	mov    %ecx,%esi
40d2f2:	eb 18                	jmp    0x40d30c
40d2f4:	8b c7                	mov    %edi,%eax
40d2f6:	d1 e8                	shr    $1,%eax
40d2f8:	2b c8                	sub    %eax,%ecx
40d2fa:	3b f9                	cmp    %ecx,%edi
40d2fc:	76 07                	jbe    0x40d305
40d2fe:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40d303:	eb 07                	jmp    0x40d30c
40d305:	03 c7                	add    %edi,%eax
40d307:	3b f0                	cmp    %eax,%esi
40d309:	0f 42 f0             	cmovb  %eax,%esi
40d30c:	33 c9                	xor    %ecx,%ecx
40d30e:	8b c6                	mov    %esi,%eax
40d310:	83 c0 01             	add    $0x1,%eax
40d313:	0f 92 c1             	setb   %cl
40d316:	f7 d9                	neg    %ecx
40d318:	0b c8                	or     %eax,%ecx
40d31a:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
40d320:	0f 87 e5 00 00 00    	ja     0x40d40b
40d326:	03 c9                	add    %ecx,%ecx
40d328:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d32e:	72 27                	jb     0x40d357
40d330:	8d 41 23             	lea    0x23(%ecx),%eax
40d333:	3b c1                	cmp    %ecx,%eax
40d335:	0f 86 d0 00 00 00    	jbe    0x40d40b
40d33b:	50                   	push   %eax
40d33c:	e8 9d e5 00 00       	call   0x41b8de
40d341:	83 c4 04             	add    $0x4,%esp
40d344:	85 c0                	test   %eax,%eax
40d346:	0f 84 c9 00 00 00    	je     0x40d415
40d34c:	8d 78 23             	lea    0x23(%eax),%edi
40d34f:	83 e7 e0             	and    $0xffffffe0,%edi
40d352:	89 47 fc             	mov    %eax,-0x4(%edi)
40d355:	eb 13                	jmp    0x40d36a
40d357:	85 c9                	test   %ecx,%ecx
40d359:	74 0d                	je     0x40d368
40d35b:	51                   	push   %ecx
40d35c:	e8 7d e5 00 00       	call   0x41b8de
40d361:	83 c4 04             	add    $0x4,%esp
40d364:	8b f8                	mov    %eax,%edi
40d366:	eb 02                	jmp    0x40d36a
40d368:	33 ff                	xor    %edi,%edi
40d36a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d36d:	89 43 10             	mov    %eax,0x10(%ebx)
40d370:	8b 45 18             	mov    0x18(%ebp),%eax
40d373:	03 c0                	add    %eax,%eax
40d375:	89 73 14             	mov    %esi,0x14(%ebx)
40d378:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40d37c:	8b 75 f8             	mov    -0x8(%ebp),%esi
40d37f:	50                   	push   %eax
40d380:	ff 75 f0             	push   -0x10(%ebp)
40d383:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
40d386:	8d 34 75 02 00 00 00 	lea    0x2(,%esi,2),%esi
40d38d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40d390:	57                   	push   %edi
40d391:	72 59                	jb     0x40d3ec
40d393:	8b 33                	mov    (%ebx),%esi
40d395:	e8 b6 00 01 00       	call   0x41d450
40d39a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d39d:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40d3a4:	50                   	push   %eax
40d3a5:	56                   	push   %esi
40d3a6:	ff 75 fc             	push   -0x4(%ebp)
40d3a9:	e8 a2 00 01 00       	call   0x41d450
40d3ae:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d3b1:	83 c4 18             	add    $0x18,%esp
40d3b4:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
40d3bb:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d3c1:	72 12                	jb     0x40d3d5
40d3c3:	8b 56 fc             	mov    -0x4(%esi),%edx
40d3c6:	83 c1 23             	add    $0x23,%ecx
40d3c9:	2b f2                	sub    %edx,%esi
40d3cb:	8d 46 fc             	lea    -0x4(%esi),%eax
40d3ce:	83 f8 1f             	cmp    $0x1f,%eax
40d3d1:	77 42                	ja     0x40d415
40d3d3:	8b f2                	mov    %edx,%esi
40d3d5:	51                   	push   %ecx
40d3d6:	56                   	push   %esi
40d3d7:	e8 32 e5 00 00       	call   0x41b90e
40d3dc:	83 c4 08             	add    $0x8,%esp
40d3df:	89 3b                	mov    %edi,(%ebx)
40d3e1:	8b c3                	mov    %ebx,%eax
40d3e3:	5f                   	pop    %edi
40d3e4:	5e                   	pop    %esi
40d3e5:	5b                   	pop    %ebx
40d3e6:	8b e5                	mov    %ebp,%esp
40d3e8:	5d                   	pop    %ebp
40d3e9:	c2 14 00             	ret    $0x14
40d3ec:	e8 5f 00 01 00       	call   0x41d450
40d3f1:	56                   	push   %esi
40d3f2:	53                   	push   %ebx
40d3f3:	ff 75 fc             	push   -0x4(%ebp)
40d3f6:	e8 55 00 01 00       	call   0x41d450
40d3fb:	83 c4 18             	add    $0x18,%esp
40d3fe:	89 3b                	mov    %edi,(%ebx)
40d400:	8b c3                	mov    %ebx,%eax
40d402:	5f                   	pop    %edi
40d403:	5e                   	pop    %esi
40d404:	5b                   	pop    %ebx
40d405:	8b e5                	mov    %ebp,%esp
40d407:	5d                   	pop    %ebp
40d408:	c2 14 00             	ret    $0x14
40d40b:	e8 f0 3d ff ff       	call   0x401200
40d410:	e8 8b 3e ff ff       	call   0x4012a0
40d415:	e8 65 36 01 00       	call   0x420a7f
40d41a:	cc                   	int3
40d41b:	cc                   	int3
40d41c:	cc                   	int3
40d41d:	cc                   	int3
40d41e:	cc                   	int3
40d41f:	cc                   	int3
40d420:	55                   	push   %ebp
40d421:	8b ec                	mov    %esp,%ebp
40d423:	83 e4 f0             	and    $0xfffffff0,%esp
40d426:	83 ec 48             	sub    $0x48,%esp
40d429:	a1 14 40 45 00       	mov    0x454014,%eax
40d42e:	33 c4                	xor    %esp,%eax
40d430:	89 44 24 44          	mov    %eax,0x44(%esp)
40d434:	56                   	push   %esi
40d435:	57                   	push   %edi
40d436:	8b f9                	mov    %ecx,%edi
40d438:	89 54 24 10          	mov    %edx,0x10(%esp)
40d43c:	8b c2                	mov    %edx,%eax
40d43e:	2b c7                	sub    %edi,%eax
40d440:	3d 18 03 00 00       	cmp    $0x318,%eax
40d445:	8b 45 0c             	mov    0xc(%ebp),%eax
40d448:	0f 8c a2 00 00 00    	jl     0x40d4f0
40d44e:	8b 75 08             	mov    0x8(%ebp),%esi
40d451:	85 f6                	test   %esi,%esi
40d453:	0f 8e b3 00 00 00    	jle    0x40d50c
40d459:	50                   	push   %eax
40d45a:	52                   	push   %edx
40d45b:	8b d7                	mov    %edi,%edx
40d45d:	8d 4c 24 20          	lea    0x20(%esp),%ecx
40d461:	e8 da 05 00 00       	call   0x40da40
40d466:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40d46a:	8b c6                	mov    %esi,%eax
40d46c:	2b 4c 24 24          	sub    0x24(%esp),%ecx
40d470:	83 c4 08             	add    $0x8,%esp
40d473:	c1 f8 02             	sar    $0x2,%eax
40d476:	d1 fe                	sar    $1,%esi
40d478:	03 f0                	add    %eax,%esi
40d47a:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d47f:	f7 e9                	imul   %ecx
40d481:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40d485:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d48a:	c1 fa 02             	sar    $0x2,%edx
40d48d:	2b cf                	sub    %edi,%ecx
40d48f:	89 75 08             	mov    %esi,0x8(%ebp)
40d492:	8b f2                	mov    %edx,%esi
40d494:	c1 ee 1f             	shr    $0x1f,%esi
40d497:	03 f2                	add    %edx,%esi
40d499:	f7 e9                	imul   %ecx
40d49b:	c1 fa 02             	sar    $0x2,%edx
40d49e:	8b c2                	mov    %edx,%eax
40d4a0:	c1 e8 1f             	shr    $0x1f,%eax
40d4a3:	03 c2                	add    %edx,%eax
40d4a5:	3b c6                	cmp    %esi,%eax
40d4a7:	8b 45 0c             	mov    0xc(%ebp),%eax
40d4aa:	8b 75 08             	mov    0x8(%ebp),%esi
40d4ad:	50                   	push   %eax
40d4ae:	56                   	push   %esi
40d4af:	7d 15                	jge    0x40d4c6
40d4b1:	8b 54 24 20          	mov    0x20(%esp),%edx
40d4b5:	8b cf                	mov    %edi,%ecx
40d4b7:	e8 64 ff ff ff       	call   0x40d420
40d4bc:	8b 7c 24 24          	mov    0x24(%esp),%edi
40d4c0:	8b 54 24 18          	mov    0x18(%esp),%edx
40d4c4:	eb 15                	jmp    0x40d4db
40d4c6:	8b 54 24 18          	mov    0x18(%esp),%edx
40d4ca:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40d4ce:	e8 4d ff ff ff       	call   0x40d420
40d4d3:	8b 54 24 20          	mov    0x20(%esp),%edx
40d4d7:	89 54 24 18          	mov    %edx,0x18(%esp)
40d4db:	8b c2                	mov    %edx,%eax
40d4dd:	83 c4 08             	add    $0x8,%esp
40d4e0:	2b c7                	sub    %edi,%eax
40d4e2:	3d 18 03 00 00       	cmp    $0x318,%eax
40d4e7:	8b 45 0c             	mov    0xc(%ebp),%eax
40d4ea:	0f 8d 61 ff ff ff    	jge    0x40d451
40d4f0:	50                   	push   %eax
40d4f1:	8b cf                	mov    %edi,%ecx
40d4f3:	e8 48 02 00 00       	call   0x40d740
40d4f8:	83 c4 04             	add    $0x4,%esp
40d4fb:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
40d4ff:	5f                   	pop    %edi
40d500:	5e                   	pop    %esi
40d501:	33 cc                	xor    %esp,%ecx
40d503:	e8 c8 e3 00 00       	call   0x41b8d0
40d508:	8b e5                	mov    %ebp,%esp
40d50a:	5d                   	pop    %ebp
40d50b:	c3                   	ret
40d50c:	8b ca                	mov    %edx,%ecx
40d50e:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d513:	2b cf                	sub    %edi,%ecx
40d515:	f7 e9                	imul   %ecx
40d517:	c1 fa 02             	sar    $0x2,%edx
40d51a:	8b c2                	mov    %edx,%eax
40d51c:	c1 e8 1f             	shr    $0x1f,%eax
40d51f:	03 c2                	add    %edx,%eax
40d521:	8b c8                	mov    %eax,%ecx
40d523:	89 44 24 14          	mov    %eax,0x14(%esp)
40d527:	d1 f9                	sar    $1,%ecx
40d529:	85 c9                	test   %ecx,%ecx
40d52b:	0f 8e 99 00 00 00    	jle    0x40d5ca
40d531:	8d 04 49             	lea    (%ecx,%ecx,2),%eax
40d534:	8d 34 c7             	lea    (%edi,%eax,8),%esi
40d537:	0f 10 46 e8          	movups -0x18(%esi),%xmm0
40d53b:	8d 76 e8             	lea    -0x18(%esi),%esi
40d53e:	33 c0                	xor    %eax,%eax
40d540:	ff 75 0c             	push   0xc(%ebp)
40d543:	0f 11 44 24 24       	movups %xmm0,0x24(%esp)
40d548:	49                   	dec    %ecx
40d549:	f3 0f 7e 46 10       	movq   0x10(%esi),%xmm0
40d54e:	8b d1                	mov    %ecx,%edx
40d550:	66 89 06             	mov    %ax,(%esi)
40d553:	8d 44 24 24          	lea    0x24(%esp),%eax
40d557:	50                   	push   %eax
40d558:	ff 74 24 1c          	push   0x1c(%esp)
40d55c:	89 4c 24 24          	mov    %ecx,0x24(%esp)
40d560:	8b cf                	mov    %edi,%ecx
40d562:	66 0f d6 44 24 3c    	movq   %xmm0,0x3c(%esp)
40d568:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40d56f:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40d576:	e8 65 09 00 00       	call   0x40dee0
40d57b:	8b 4c 24 40          	mov    0x40(%esp),%ecx
40d57f:	83 c4 0c             	add    $0xc,%esp
40d582:	83 f9 08             	cmp    $0x8,%ecx
40d585:	72 33                	jb     0x40d5ba
40d587:	8b 54 24 20          	mov    0x20(%esp),%edx
40d58b:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d592:	8b c2                	mov    %edx,%eax
40d594:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d59a:	72 14                	jb     0x40d5b0
40d59c:	8b 50 fc             	mov    -0x4(%eax),%edx
40d59f:	83 c1 23             	add    $0x23,%ecx
40d5a2:	2b c2                	sub    %edx,%eax
40d5a4:	83 c0 fc             	add    $0xfffffffc,%eax
40d5a7:	83 f8 1f             	cmp    $0x1f,%eax
40d5aa:	0f 87 0d 01 00 00    	ja     0x40d6bd
40d5b0:	51                   	push   %ecx
40d5b1:	52                   	push   %edx
40d5b2:	e8 57 e3 00 00       	call   0x41b90e
40d5b7:	83 c4 08             	add    $0x8,%esp
40d5ba:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40d5be:	85 c9                	test   %ecx,%ecx
40d5c0:	0f 8f 71 ff ff ff    	jg     0x40d537
40d5c6:	8b 44 24 14          	mov    0x14(%esp),%eax
40d5ca:	83 f8 02             	cmp    $0x2,%eax
40d5cd:	0f 8c 28 ff ff ff    	jl     0x40d4fb
40d5d3:	8b 74 24 10          	mov    0x10(%esp),%esi
40d5d7:	b8 ec ff ff ff       	mov    $0xffffffec,%eax
40d5dc:	2b c7                	sub    %edi,%eax
40d5de:	83 c6 e8             	add    $0xffffffe8,%esi
40d5e1:	89 44 24 18          	mov    %eax,0x18(%esp)
40d5e5:	b8 18 00 00 00       	mov    $0x18,%eax
40d5ea:	2b c7                	sub    %edi,%eax
40d5ec:	89 44 24 14          	mov    %eax,0x14(%esp)
40d5f0:	8d 0c 30             	lea    (%eax,%esi,1),%ecx
40d5f3:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d5f8:	f7 e9                	imul   %ecx
40d5fa:	c1 fa 02             	sar    $0x2,%edx
40d5fd:	8b c2                	mov    %edx,%eax
40d5ff:	c1 e8 1f             	shr    $0x1f,%eax
40d602:	03 c2                	add    %edx,%eax
40d604:	83 f8 02             	cmp    $0x2,%eax
40d607:	0f 8c 95 00 00 00    	jl     0x40d6a2
40d60d:	0f 10 06             	movups (%esi),%xmm0
40d610:	33 c0                	xor    %eax,%eax
40d612:	8b ce                	mov    %esi,%ecx
40d614:	57                   	push   %edi
40d615:	0f 11 44 24 24       	movups %xmm0,0x24(%esp)
40d61a:	f3 0f 7e 46 10       	movq   0x10(%esi),%xmm0
40d61f:	66 0f d6 44 24 34    	movq   %xmm0,0x34(%esp)
40d625:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40d62c:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40d633:	66 89 06             	mov    %ax,(%esi)
40d636:	e8 b5 be ff ff       	call   0x4094f0
40d63b:	ff 75 0c             	push   0xc(%ebp)
40d63e:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40d642:	8d 44 24 24          	lea    0x24(%esp),%eax
40d646:	50                   	push   %eax
40d647:	83 c1 14             	add    $0x14,%ecx
40d64a:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d64f:	03 ce                	add    %esi,%ecx
40d651:	f7 e9                	imul   %ecx
40d653:	8b cf                	mov    %edi,%ecx
40d655:	c1 fa 02             	sar    $0x2,%edx
40d658:	8b c2                	mov    %edx,%eax
40d65a:	c1 e8 1f             	shr    $0x1f,%eax
40d65d:	03 c2                	add    %edx,%eax
40d65f:	33 d2                	xor    %edx,%edx
40d661:	50                   	push   %eax
40d662:	e8 79 08 00 00       	call   0x40dee0
40d667:	8b 4c 24 40          	mov    0x40(%esp),%ecx
40d66b:	83 c4 0c             	add    $0xc,%esp
40d66e:	83 f9 08             	cmp    $0x8,%ecx
40d671:	72 2f                	jb     0x40d6a2
40d673:	8b 54 24 20          	mov    0x20(%esp),%edx
40d677:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d67e:	8b c2                	mov    %edx,%eax
40d680:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d686:	72 10                	jb     0x40d698
40d688:	8b 50 fc             	mov    -0x4(%eax),%edx
40d68b:	83 c1 23             	add    $0x23,%ecx
40d68e:	2b c2                	sub    %edx,%eax
40d690:	83 c0 fc             	add    $0xfffffffc,%eax
40d693:	83 f8 1f             	cmp    $0x1f,%eax
40d696:	77 25                	ja     0x40d6bd
40d698:	51                   	push   %ecx
40d699:	52                   	push   %edx
40d69a:	e8 6f e2 00 00       	call   0x41b90e
40d69f:	83 c4 08             	add    $0x8,%esp
40d6a2:	8b 44 24 14          	mov    0x14(%esp),%eax
40d6a6:	83 ee 18             	sub    $0x18,%esi
40d6a9:	03 c6                	add    %esi,%eax
40d6ab:	83 f8 30             	cmp    $0x30,%eax
40d6ae:	0f 8c 47 fe ff ff    	jl     0x40d4fb
40d6b4:	8b 44 24 14          	mov    0x14(%esp),%eax
40d6b8:	e9 33 ff ff ff       	jmp    0x40d5f0
40d6bd:	e8 bd 33 01 00       	call   0x420a7f
40d6c2:	cc                   	int3
40d6c3:	cc                   	int3
40d6c4:	cc                   	int3
40d6c5:	cc                   	int3
40d6c6:	cc                   	int3
40d6c7:	cc                   	int3
40d6c8:	cc                   	int3
40d6c9:	cc                   	int3
40d6ca:	cc                   	int3
40d6cb:	cc                   	int3
40d6cc:	cc                   	int3
40d6cd:	cc                   	int3
40d6ce:	cc                   	int3
40d6cf:	cc                   	int3