402576:	83 c4 18             	add    $0x18,%esp
402579:	33 c9                	xor    %ecx,%ecx
40257b:	66 89 08             	mov    %cx,(%eax)
40257e:	8b c3                	mov    %ebx,%eax
402580:	89 3b                	mov    %edi,(%ebx)
402582:	5f                   	pop    %edi
402583:	5e                   	pop    %esi
402584:	5b                   	pop    %ebx
402585:	8b e5                	mov    %ebp,%esp
402587:	5d                   	pop    %ebp
402588:	c2 10 00             	ret    $0x10
40258b:	e8 20 eb ff ff       	call   0x4010b0
402590:	e8 bb eb ff ff       	call   0x401150
402595:	e8 92 37 00 00       	call   0x405d2c
40259a:	cc                   	int3
40259b:	cc                   	int3
40259c:	cc                   	int3
40259d:	cc                   	int3
40259e:	cc                   	int3
40259f:	cc                   	int3
4025a0:	55                   	push   %ebp
4025a1:	8b ec                	mov    %esp,%ebp
4025a3:	6a ff                	push   $0xffffffff
4025a5:	68 d0 ee 40 00       	push   $0x40eed0
4025aa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4025b0:	50                   	push   %eax
4025b1:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
4025b8:	83 ec 20             	sub    $0x20,%esp
4025bb:	8b 55 08             	mov    0x8(%ebp),%edx
4025be:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
4025c3:	53                   	push   %ebx
4025c4:	56                   	push   %esi
4025c5:	8b f1                	mov    %ecx,%esi
4025c7:	57                   	push   %edi
4025c8:	89 65 f0             	mov    %esp,-0x10(%ebp)
4025cb:	89 75 ec             	mov    %esi,-0x14(%ebp)
4025ce:	2b 16                	sub    (%esi),%edx
4025d0:	8b 4e 04             	mov    0x4(%esi),%ecx
4025d3:	2b 0e                	sub    (%esi),%ecx
4025d5:	f7 ea                	imul   %edx
4025d7:	c1 fa 02             	sar    $0x2,%edx
4025da:	8b c2                	mov    %edx,%eax
4025dc:	c1 e8 1f             	shr    $0x1f,%eax
4025df:	03 c2                	add    %edx,%eax
4025e1:	89 45 dc             	mov    %eax,-0x24(%ebp)
4025e4:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
4025e9:	f7 e9                	imul   %ecx
4025eb:	c1 fa 02             	sar    $0x2,%edx
4025ee:	8b c2                	mov    %edx,%eax
4025f0:	c1 e8 1f             	shr    $0x1f,%eax
4025f3:	03 c2                	add    %edx,%eax
4025f5:	3d aa aa aa 0a       	cmp    $0xaaaaaaa,%eax
4025fa:	0f 84 a0 01 00 00    	je     0x4027a0
402600:	8b 4e 08             	mov    0x8(%esi),%ecx
402603:	8d 78 01             	lea    0x1(%eax),%edi
402606:	2b 0e                	sub    (%esi),%ecx
402608:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40260d:	f7 e9                	imul   %ecx
40260f:	b8 aa aa aa 0a       	mov    $0xaaaaaaa,%eax
402614:	89 7d e0             	mov    %edi,-0x20(%ebp)
402617:	c1 fa 02             	sar    $0x2,%edx
40261a:	8b ca                	mov    %edx,%ecx
40261c:	c1 e9 1f             	shr    $0x1f,%ecx
40261f:	03 ca                	add    %edx,%ecx
402621:	8b d1                	mov    %ecx,%edx
402623:	d1 ea                	shr    $1,%edx
402625:	2b c2                	sub    %edx,%eax
402627:	3b c8                	cmp    %eax,%ecx
402629:	0f 87 6c 01 00 00    	ja     0x40279b
40262f:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
402632:	3b c7                	cmp    %edi,%eax
402634:	0f 43 f8             	cmovae %eax,%edi
402637:	81 ff aa aa aa 0a    	cmp    $0xaaaaaaa,%edi
40263d:	0f 87 58 01 00 00    	ja     0x40279b
402643:	8d 04 7f             	lea    (%edi,%edi,2),%eax
402646:	89 7d e8             	mov    %edi,-0x18(%ebp)
402649:	c1 e0 03             	shl    $0x3,%eax
40264c:	89 45 d8             	mov    %eax,-0x28(%ebp)
40264f:	3d 00 10 00 00       	cmp    $0x1000,%eax
402654:	72 27                	jb     0x40267d
402656:	8d 48 23             	lea    0x23(%eax),%ecx
402659:	3b c8                	cmp    %eax,%ecx
40265b:	0f 86 3a 01 00 00    	jbe    0x40279b
402661:	51                   	push   %ecx
402662:	e8 48 05 00 00       	call   0x402baf
402667:	83 c4 04             	add    $0x4,%esp
40266a:	85 c0                	test   %eax,%eax
40266c:	0f 84 33 01 00 00    	je     0x4027a5
402672:	8d 70 23             	lea    0x23(%eax),%esi
402675:	83 e6 e0             	and    $0xffffffe0,%esi
402678:	89 46 fc             	mov    %eax,-0x4(%esi)
40267b:	eb 16                	jmp    0x402693
40267d:	85 c0                	test   %eax,%eax
40267f:	74 0d                	je     0x40268e
402681:	50                   	push   %eax
402682:	e8 28 05 00 00       	call   0x402baf
402687:	83 c4 04             	add    $0x4,%esp
40268a:	8b f0                	mov    %eax,%esi
40268c:	eb 02                	jmp    0x402690
40268e:	33 f6                	xor    %esi,%esi
402690:	89 7d e8             	mov    %edi,-0x18(%ebp)
402693:	8b 45 dc             	mov    -0x24(%ebp),%eax
402696:	0f 57 c0             	xorps  %xmm0,%xmm0
402699:	8b 7d 0c             	mov    0xc(%ebp),%edi
40269c:	8b cf                	mov    %edi,%ecx
40269e:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
4026a5:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4026a8:	8d 04 40             	lea    (%eax,%eax,2),%eax
4026ab:	8d 14 c6             	lea    (%esi,%eax,8),%edx
4026ae:	8d 42 18             	lea    0x18(%edx),%eax
4026b1:	89 55 d4             	mov    %edx,-0x2c(%ebp)
4026b4:	89 45 dc             	mov    %eax,-0x24(%ebp)
4026b7:	8d 41 02             	lea    0x2(%ecx),%eax
4026ba:	0f 11 02             	movups %xmm0,(%edx)
4026bd:	c7 42 10 00 00 00 00 	movl   $0x0,0x10(%edx)
4026c4:	c7 42 14 00 00 00 00 	movl   $0x0,0x14(%edx)
4026cb:	89 45 0c             	mov    %eax,0xc(%ebp)
4026ce:	66 90                	xchg   %ax,%ax
4026d0:	66 8b 01             	mov    (%ecx),%ax
4026d3:	83 c1 02             	add    $0x2,%ecx
4026d6:	66 85 c0             	test   %ax,%ax
4026d9:	75 f5                	jne    0x4026d0
4026db:	2b 4d 0c             	sub    0xc(%ebp),%ecx
4026de:	d1 f9                	sar    $1,%ecx
4026e0:	51                   	push   %ecx
4026e1:	57                   	push   %edi
4026e2:	8b ca                	mov    %edx,%ecx
4026e4:	e8 27 fa ff ff       	call   0x402110
4026e9:	8b 7d ec             	mov    -0x14(%ebp),%edi
4026ec:	8b 45 08             	mov    0x8(%ebp),%eax
4026ef:	8b 0f                	mov    (%edi),%ecx
4026f1:	8b 57 04             	mov    0x4(%edi),%edx
4026f4:	51                   	push   %ecx
4026f5:	56                   	push   %esi
4026f6:	3b c2                	cmp    %edx,%eax
4026f8:	74 13                	je     0x40270d
4026fa:	8b d0                	mov    %eax,%edx
4026fc:	e8 cf 02 00 00       	call   0x4029d0
402701:	8b 57 04             	mov    0x4(%edi),%edx
402704:	83 c4 04             	add    $0x4,%esp
402707:	8b 4d 08             	mov    0x8(%ebp),%ecx
40270a:	ff 75 dc             	push   -0x24(%ebp)
40270d:	e8 be 02 00 00       	call   0x4029d0
402712:	8b 0f                	mov    (%edi),%ecx
402714:	83 c4 08             	add    $0x8,%esp
402717:	85 c9                	test   %ecx,%ecx
402719:	74 54                	je     0x40276f
40271b:	8b 57 04             	mov    0x4(%edi),%edx
40271e:	51                   	push   %ecx
40271f:	e8 ec fa ff ff       	call   0x402210
402724:	8b 4d ec             	mov    -0x14(%ebp),%ecx
402727:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40272c:	8b 3f                	mov    (%edi),%edi
40272e:	83 c4 04             	add    $0x4,%esp
402731:	8b 49 08             	mov    0x8(%ecx),%ecx
402734:	2b cf                	sub    %edi,%ecx
402736:	f7 e9                	imul   %ecx
402738:	c1 fa 02             	sar    $0x2,%edx
40273b:	8b c2                	mov    %edx,%eax
40273d:	c1 e8 1f             	shr    $0x1f,%eax
402740:	03 c2                	add    %edx,%eax
402742:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
402745:	c1 e1 03             	shl    $0x3,%ecx
402748:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40274e:	72 12                	jb     0x402762
402750:	8b 57 fc             	mov    -0x4(%edi),%edx
402753:	83 c1 23             	add    $0x23,%ecx
402756:	2b fa                	sub    %edx,%edi
402758:	8d 47 fc             	lea    -0x4(%edi),%eax
40275b:	83 f8 1f             	cmp    $0x1f,%eax
40275e:	77 45                	ja     0x4027a5
402760:	8b fa                	mov    %edx,%edi
402762:	51                   	push   %ecx
402763:	57                   	push   %edi
402764:	e8 15 04 00 00       	call   0x402b7e
402769:	8b 7d ec             	mov    -0x14(%ebp),%edi
40276c:	83 c4 08             	add    $0x8,%esp
40276f:	8b 45 e0             	mov    -0x20(%ebp),%eax
402772:	89 37                	mov    %esi,(%edi)
402774:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
402777:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40277a:	8d 0c ce             	lea    (%esi,%ecx,8),%ecx
40277d:	89 4f 04             	mov    %ecx,0x4(%edi)
402780:	8b 4d d8             	mov    -0x28(%ebp),%ecx
402783:	03 ce                	add    %esi,%ecx
402785:	89 4f 08             	mov    %ecx,0x8(%edi)
402788:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40278b:	5f                   	pop    %edi
40278c:	5e                   	pop    %esi
40278d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
402794:	5b                   	pop    %ebx
402795:	8b e5                	mov    %ebp,%esp
402797:	5d                   	pop    %ebp
402798:	c2 08 00             	ret    $0x8
40279b:	e8 10 e9 ff ff       	call   0x4010b0
4027a0:	e8 1b 02 00 00       	call   0x4029c0
4027a5:	e8 82 35 00 00       	call   0x405d2c
4027aa:	51                   	push   %ecx
4027ab:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4027ae:	8b d1                	mov    %ecx,%edx
4027b0:	e8 5b fa ff ff       	call   0x402210
4027b5:	83 c4 04             	add    $0x4,%esp
4027b8:	ff 75 e8             	push   -0x18(%ebp)
4027bb:	ff 75 e4             	push   -0x1c(%ebp)
4027be:	e8 fd f8 ff ff       	call   0x4020c0
4027c3:	6a 00                	push   $0x0
4027c5:	6a 00                	push   $0x0
4027c7:	e8 8f 15 00 00       	call   0x403d5b
4027cc:	cc                   	int3
4027cd:	cc                   	int3
4027ce:	cc                   	int3
4027cf:	cc                   	int3
4027d0:	cc                   	int3
4027d1:	cc                   	int3
4027d2:	cc                   	int3
4027d3:	cc                   	int3
4027d4:	cc                   	int3
4027d5:	cc                   	int3
4027d6:	cc                   	int3
4027d7:	cc                   	int3
4027d8:	cc                   	int3
4027d9:	cc                   	int3
4027da:	cc                   	int3
4027db:	cc                   	int3
4027dc:	cc                   	int3
4027dd:	cc                   	int3
4027de:	cc                   	int3
4027df:	cc                   	int3
4027e0:	55                   	push   %ebp
4027e1:	8b ec                	mov    %esp,%ebp
4027e3:	83 ec 0c             	sub    $0xc,%esp
4027e6:	8b 55 08             	mov    0x8(%ebp),%edx
4027e9:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
4027ee:	53                   	push   %ebx
4027ef:	8b d9                	mov    %ecx,%ebx
4027f1:	56                   	push   %esi
4027f2:	57                   	push   %edi
4027f3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4027f6:	8b 3b                	mov    (%ebx),%edi
4027f8:	2b d7                	sub    %edi,%edx
4027fa:	8b 4b 04             	mov    0x4(%ebx),%ecx
4027fd:	f7 ea                	imul   %edx
4027ff:	2b cf                	sub    %edi,%ecx
402801:	c1 fa 02             	sar    $0x2,%edx
402804:	8b c2                	mov    %edx,%eax
402806:	c1 e8 1f             	shr    $0x1f,%eax
402809:	03 c2                	add    %edx,%eax
40280b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40280e:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
402813:	f7 e9                	imul   %ecx
402815:	c1 fa 02             	sar    $0x2,%edx
402818:	8b c2                	mov    %edx,%eax
40281a:	c1 e8 1f             	shr    $0x1f,%eax
40281d:	03 c2                	add    %edx,%eax
40281f:	89 45 f4             	mov    %eax,-0xc(%ebp)
402822:	3d aa aa aa 0a       	cmp    $0xaaaaaaa,%eax
402827:	0f 84 7d 01 00 00    	je     0x4029aa
40282d:	8b 4b 08             	mov    0x8(%ebx),%ecx
402830:	8d 70 01             	lea    0x1(%eax),%esi
402833:	2b cf                	sub    %edi,%ecx
402835:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40283a:	f7 e9                	imul   %ecx
40283c:	b8 aa aa aa 0a       	mov    $0xaaaaaaa,%eax
402841:	c1 fa 02             	sar    $0x2,%edx
402844:	8b ca                	mov    %edx,%ecx
402846:	c1 e9 1f             	shr    $0x1f,%ecx
402849:	03 ca                	add    %edx,%ecx
40284b:	8b d1                	mov    %ecx,%edx
40284d:	d1 ea                	shr    $1,%edx
40284f:	2b c2                	sub    %edx,%eax
402851:	3b c8                	cmp    %eax,%ecx
402853:	0f 87 4c 01 00 00    	ja     0x4029a5
402859:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
40285c:	8b ce                	mov    %esi,%ecx
40285e:	3b c6                	cmp    %esi,%eax
402860:	0f 43 c8             	cmovae %eax,%ecx
402863:	81 f9 aa aa aa 0a    	cmp    $0xaaaaaaa,%ecx
402869:	0f 87 36 01 00 00    	ja     0x4029a5
40286f:	8d 3c 49             	lea    (%ecx,%ecx,2),%edi
402872:	c1 e7 03             	shl    $0x3,%edi
402875:	81 ff 00 10 00 00    	cmp    $0x1000,%edi
40287b:	72 27                	jb     0x4028a4
40287d:	8d 47 23             	lea    0x23(%edi),%eax
402880:	3b c7                	cmp    %edi,%eax
402882:	0f 86 1d 01 00 00    	jbe    0x4029a5
402888:	50                   	push   %eax
402889:	e8 21 03 00 00       	call   0x402baf
40288e:	83 c4 04             	add    $0x4,%esp
402891:	85 c0                	test   %eax,%eax
402893:	0f 84 16 01 00 00    	je     0x4029af
402899:	8d 70 23             	lea    0x23(%eax),%esi
40289c:	83 e6 e0             	and    $0xffffffe0,%esi
40289f:	89 46 fc             	mov    %eax,-0x4(%esi)
4028a2:	eb 13                	jmp    0x4028b7
4028a4:	85 ff                	test   %edi,%edi
4028a6:	74 0d                	je     0x4028b5
4028a8:	57                   	push   %edi
4028a9:	e8 01 03 00 00       	call   0x402baf
4028ae:	83 c4 04             	add    $0x4,%esp
4028b1:	8b f0                	mov    %eax,%esi
4028b3:	eb 02                	jmp    0x4028b7
4028b5:	33 f6                	xor    %esi,%esi
4028b7:	8b 45 f8             	mov    -0x8(%ebp),%eax
4028ba:	0f 57 c0             	xorps  %xmm0,%xmm0
4028bd:	8d 04 40             	lea    (%eax,%eax,2),%eax
4028c0:	8d 0c c6             	lea    (%esi,%eax,8),%ecx
4028c3:	8b 45 0c             	mov    0xc(%ebp),%eax
4028c6:	0f 11 01             	movups %xmm0,(%ecx)
4028c9:	c7 41 10 00 00 00 00 	movl   $0x0,0x10(%ecx)
4028d0:	c7 41 14 00 00 00 00 	movl   $0x0,0x14(%ecx)
4028d7:	0f 10 00             	movups (%eax),%xmm0
4028da:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4028dd:	0f 11 01             	movups %xmm0,(%ecx)
4028e0:	f3 0f 7e 40 10       	movq   0x10(%eax),%xmm0
4028e5:	66 0f d6 41 10       	movq   %xmm0,0x10(%ecx)
4028ea:	33 c9                	xor    %ecx,%ecx
4028ec:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)
4028f3:	c7 40 14 07 00 00 00 	movl   $0x7,0x14(%eax)
4028fa:	66 89 08             	mov    %cx,(%eax)
4028fd:	8b 0b                	mov    (%ebx),%ecx
4028ff:	8b 53 04             	mov    0x4(%ebx),%edx
402902:	8b 45 08             	mov    0x8(%ebp),%eax
402905:	51                   	push   %ecx
402906:	56                   	push   %esi
402907:	3b c2                	cmp    %edx,%eax
402909:	74 17                	je     0x402922
40290b:	8b d0                	mov    %eax,%edx
40290d:	e8 be 00 00 00       	call   0x4029d0
402912:	8b 45 f8             	mov    -0x8(%ebp),%eax
402915:	83 c4 04             	add    $0x4,%esp
402918:	8b 53 04             	mov    0x4(%ebx),%edx
40291b:	83 c0 18             	add    $0x18,%eax
40291e:	8b 4d 08             	mov    0x8(%ebp),%ecx
402921:	50                   	push   %eax
402922:	e8 a9 00 00 00       	call   0x4029d0
402927:	8b 0b                	mov    (%ebx),%ecx
402929:	83 c4 08             	add    $0x8,%esp
40292c:	85 c9                	test   %ecx,%ecx
40292e:	74 54                	je     0x402984
402930:	8b 53 04             	mov    0x4(%ebx),%edx
402933:	51                   	push   %ecx
402934:	e8 d7 f8 ff ff       	call   0x402210
402939:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40293c:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
402941:	8b 1b                	mov    (%ebx),%ebx
402943:	83 c4 04             	add    $0x4,%esp
402946:	8b 49 08             	mov    0x8(%ecx),%ecx
402949:	2b cb                	sub    %ebx,%ecx
40294b:	f7 e9                	imul   %ecx
40294d:	c1 fa 02             	sar    $0x2,%edx