4023b8:	89 37                	mov    %esi,(%edi)
4023ba:	8b c7                	mov    %edi,%eax
4023bc:	5f                   	pop    %edi
4023bd:	5e                   	pop    %esi
4023be:	5b                   	pop    %ebx
4023bf:	8b e5                	mov    %ebp,%esp
4023c1:	5d                   	pop    %ebp
4023c2:	c2 10 00             	ret    $0x10
4023c5:	57                   	push   %edi
4023c6:	56                   	push   %esi
4023c7:	e8 84 30 00 00       	call   0x405450
4023cc:	8b 55 10             	mov    0x10(%ebp),%edx
4023cf:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
4023d2:	03 c6                	add    %esi,%eax
4023d4:	83 c4 0c             	add    $0xc,%esp
4023d7:	89 45 08             	mov    %eax,0x8(%ebp)
4023da:	85 d2                	test   %edx,%edx
4023dc:	74 13                	je     0x4023f1
4023de:	8b 7d 08             	mov    0x8(%ebp),%edi
4023e1:	33 c0                	xor    %eax,%eax
4023e3:	8b ca                	mov    %edx,%ecx
4023e5:	d1 e9                	shr    $1,%ecx
4023e7:	f3 ab                	rep stos %eax,%es:(%edi)
4023e9:	13 c9                	adc    %ecx,%ecx
4023eb:	66 f3 ab             	rep stos %ax,%es:(%edi)
4023ee:	8b 7d f8             	mov    -0x8(%ebp),%edi
4023f1:	8d 04 13             	lea    (%ebx,%edx,1),%eax
4023f4:	33 c9                	xor    %ecx,%ecx
4023f6:	66 89 0c 46          	mov    %cx,(%esi,%eax,2)
4023fa:	8b c7                	mov    %edi,%eax
4023fc:	89 37                	mov    %esi,(%edi)
4023fe:	5f                   	pop    %edi
4023ff:	5e                   	pop    %esi
402400:	5b                   	pop    %ebx
402401:	8b e5                	mov    %ebp,%esp
402403:	5d                   	pop    %ebp
402404:	c2 10 00             	ret    $0x10
402407:	e8 a4 ec ff ff       	call   0x4010b0
40240c:	e8 3f ed ff ff       	call   0x401150
402411:	e8 16 39 00 00       	call   0x405d2c
402416:	cc                   	int3
402417:	cc                   	int3
402418:	cc                   	int3
402419:	cc                   	int3
40241a:	cc                   	int3
40241b:	cc                   	int3
40241c:	cc                   	int3
40241d:	cc                   	int3
40241e:	cc                   	int3
40241f:	cc                   	int3
402420:	55                   	push   %ebp
402421:	8b ec                	mov    %esp,%ebp
402423:	83 ec 08             	sub    $0x8,%esp
402426:	8b 55 08             	mov    0x8(%ebp),%edx
402429:	53                   	push   %ebx
40242a:	8b d9                	mov    %ecx,%ebx
40242c:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
402431:	56                   	push   %esi
402432:	8b c1                	mov    %ecx,%eax
402434:	57                   	push   %edi
402435:	8b 73 10             	mov    0x10(%ebx),%esi
402438:	2b c6                	sub    %esi,%eax
40243a:	89 75 fc             	mov    %esi,-0x4(%ebp)
40243d:	3b c2                	cmp    %edx,%eax
40243f:	0f 82 4b 01 00 00    	jb     0x402590
402445:	8b 7b 14             	mov    0x14(%ebx),%edi
402448:	8d 04 16             	lea    (%esi,%edx,1),%eax
40244b:	8b f0                	mov    %eax,%esi
40244d:	89 45 f8             	mov    %eax,-0x8(%ebp)
402450:	83 ce 07             	or     $0x7,%esi
402453:	89 7d 08             	mov    %edi,0x8(%ebp)
402456:	3b f1                	cmp    %ecx,%esi
402458:	76 0b                	jbe    0x402465
40245a:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40245f:	8b f1                	mov    %ecx,%esi
402461:	03 c0                	add    %eax,%eax
402463:	eb 36                	jmp    0x40249b
402465:	8b c7                	mov    %edi,%eax
402467:	d1 e8                	shr    $1,%eax
402469:	2b c8                	sub    %eax,%ecx
40246b:	3b f9                	cmp    %ecx,%edi
40246d:	76 0e                	jbe    0x40247d
40246f:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
402474:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
402479:	03 c0                	add    %eax,%eax
40247b:	eb 1e                	jmp    0x40249b
40247d:	03 c7                	add    %edi,%eax
40247f:	3b f0                	cmp    %eax,%esi
402481:	0f 42 f0             	cmovb  %eax,%esi
402484:	8d 46 01             	lea    0x1(%esi),%eax
402487:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40248c:	0f 87 f9 00 00 00    	ja     0x40258b
402492:	03 c0                	add    %eax,%eax
402494:	3d 00 10 00 00       	cmp    $0x1000,%eax
402499:	72 27                	jb     0x4024c2
40249b:	8d 48 23             	lea    0x23(%eax),%ecx
40249e:	3b c8                	cmp    %eax,%ecx
4024a0:	0f 86 e5 00 00 00    	jbe    0x40258b
4024a6:	51                   	push   %ecx
4024a7:	e8 03 07 00 00       	call   0x402baf
4024ac:	83 c4 04             	add    $0x4,%esp
4024af:	85 c0                	test   %eax,%eax
4024b1:	0f 84 de 00 00 00    	je     0x402595
4024b7:	8d 78 23             	lea    0x23(%eax),%edi
4024ba:	83 e7 e0             	and    $0xffffffe0,%edi
4024bd:	89 47 fc             	mov    %eax,-0x4(%edi)
4024c0:	eb 13                	jmp    0x4024d5
4024c2:	85 c0                	test   %eax,%eax
4024c4:	74 0d                	je     0x4024d3
4024c6:	50                   	push   %eax
4024c7:	e8 e3 06 00 00       	call   0x402baf
4024cc:	83 c4 04             	add    $0x4,%esp
4024cf:	8b f8                	mov    %eax,%edi
4024d1:	eb 02                	jmp    0x4024d5
4024d3:	33 ff                	xor    %edi,%edi
4024d5:	8b 55 fc             	mov    -0x4(%ebp),%edx
4024d8:	8b 45 f8             	mov    -0x8(%ebp),%eax
4024db:	89 43 10             	mov    %eax,0x10(%ebx)
4024de:	89 73 14             	mov    %esi,0x14(%ebx)
4024e1:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
4024e4:	8d 04 0f             	lea    (%edi,%ecx,1),%eax
4024e7:	89 45 fc             	mov    %eax,-0x4(%ebp)
4024ea:	8b 45 14             	mov    0x14(%ebp),%eax
4024ed:	51                   	push   %ecx
4024ee:	8d 34 00             	lea    (%eax,%eax,1),%esi
4024f1:	03 c2                	add    %edx,%eax
4024f3:	83 7d 08 08          	cmpl   $0x8,0x8(%ebp)
4024f7:	8d 04 47             	lea    (%edi,%eax,2),%eax
4024fa:	89 45 f8             	mov    %eax,-0x8(%ebp)
4024fd:	72 61                	jb     0x402560
4024ff:	8b 33                	mov    (%ebx),%esi
402501:	56                   	push   %esi
402502:	57                   	push   %edi
402503:	e8 48 2f 00 00       	call   0x405450
402508:	8b 4d 14             	mov    0x14(%ebp),%ecx
40250b:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
40250e:	50                   	push   %eax
40250f:	ff 75 10             	push   0x10(%ebp)
402512:	ff 75 fc             	push   -0x4(%ebp)
402515:	e8 36 2f 00 00       	call   0x405450
40251a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40251d:	33 c9                	xor    %ecx,%ecx
40251f:	83 c4 18             	add    $0x18,%esp
402522:	66 89 08             	mov    %cx,(%eax)
402525:	8b 45 08             	mov    0x8(%ebp),%eax
402528:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
40252f:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
402535:	72 12                	jb     0x402549
402537:	8b 56 fc             	mov    -0x4(%esi),%edx
40253a:	83 c1 23             	add    $0x23,%ecx
40253d:	2b f2                	sub    %edx,%esi
40253f:	8d 46 fc             	lea    -0x4(%esi),%eax
402542:	83 f8 1f             	cmp    $0x1f,%eax
402545:	77 4e                	ja     0x402595
402547:	8b f2                	mov    %edx,%esi
402549:	51                   	push   %ecx
40254a:	56                   	push   %esi
40254b:	e8 2e 06 00 00       	call   0x402b7e
402550:	83 c4 08             	add    $0x8,%esp
402553:	89 3b                	mov    %edi,(%ebx)
402555:	8b c3                	mov    %ebx,%eax
402557:	5f                   	pop    %edi
402558:	5e                   	pop    %esi
402559:	5b                   	pop    %ebx
40255a:	8b e5                	mov    %ebp,%esp
40255c:	5d                   	pop    %ebp
40255d:	c2 10 00             	ret    $0x10
402560:	53                   	push   %ebx
402561:	57                   	push   %edi
402562:	e8 e9 2e 00 00       	call   0x405450
402567:	56                   	push   %esi
402568:	ff 75 10             	push   0x10(%ebp)
40256b:	ff 75 fc             	push   -0x4(%ebp)
40256e:	e8 dd 2e 00 00       	call   0x405450
402573:	8b 45 f8             	mov    -0x8(%ebp),%eax
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