406540:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
406544:	8d 71 02             	lea    0x2(%ecx),%esi
406547:	66 8b 01             	mov    (%ecx),%ax
40654a:	83 c1 02             	add    $0x2,%ecx
40654d:	66 3b c3             	cmp    %bx,%ax
406550:	75 f5                	jne    0x406547
406552:	2b ce                	sub    %esi,%ecx
406554:	d1 f9                	sar    $1,%ecx
406556:	51                   	push   %ecx
406557:	52                   	push   %edx
406558:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
40655b:	e8 18 fe ff ff       	call   0x406378
406560:	8d 4d a0             	lea    -0x60(%ebp),%ecx
406563:	88 5d fc             	mov    %bl,-0x4(%ebp)
406566:	8b f0                	mov    %eax,%esi
406568:	e8 1f 01 00 00       	call   0x40668c
40656d:	85 f6                	test   %esi,%esi
40656f:	0f 84 37 ff ff ff    	je     0x4064ac
406575:	8b 75 9c             	mov    -0x64(%ebp),%esi
406578:	39 37                	cmp    %esi,(%edi)
40657a:	74 23                	je     0x40659f
40657c:	ff 37                	push   (%edi)
40657e:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406584:	89 07                	mov    %eax,(%edi)
406586:	3b c6                	cmp    %esi,%eax
406588:	75 f2                	jne    0x40657c
40658a:	eb 13                	jmp    0x40659f
40658c:	6a 01                	push   $0x1
40658e:	56                   	push   %esi
40658f:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
406592:	e8 e1 fd ff ff       	call   0x406378
406597:	85 c0                	test   %eax,%eax
406599:	0f 84 0d ff ff ff    	je     0x4064ac
40659f:	ff 37                	push   (%edi)
4065a1:	ff 15 f8 f0 40 00    	call   *0x40f0f8
4065a7:	8b f0                	mov    %eax,%esi
4065a9:	89 37                	mov    %esi,(%edi)
4065ab:	0f b7 0e             	movzwl (%esi),%ecx
4065ae:	8b c1                	mov    %ecx,%eax
4065b0:	66 85 c9             	test   %cx,%cx
4065b3:	e9 08 ff ff ff       	jmp    0x4064c0
4065b8:	bb 05 40 00 80       	mov    $0x80004005,%ebx
4065bd:	eb 12                	jmp    0x4065d1
4065bf:	bb 09 00 02 80       	mov    $0x80020009,%ebx
4065c4:	eb 0b                	jmp    0x4065d1
4065c6:	8b 45 98             	mov    -0x68(%ebp),%eax
4065c9:	8b 4d ac             	mov    -0x54(%ebp),%ecx
4065cc:	89 5d ac             	mov    %ebx,-0x54(%ebp)
4065cf:	89 08                	mov    %ecx,(%eax)
4065d1:	ff 75 ac             	push   -0x54(%ebp)
4065d4:	ff 15 28 f1 40 00    	call   *0x40f128
4065da:	8b c3                	mov    %ebx,%eax
4065dc:	eb 05                	jmp    0x4065e3
4065de:	b8 03 40 00 80       	mov    $0x80004003,%eax
4065e3:	e8 c8 37 00 00       	call   0x409db0
4065e8:	c2 08 00             	ret    $0x8
4065eb:	8b ff                	mov    %edi,%edi
4065ed:	56                   	push   %esi
4065ee:	33 f6                	xor    %esi,%esi
4065f0:	57                   	push   %edi
4065f1:	66 8b fa             	mov    %dx,%di
4065f4:	85 c9                	test   %ecx,%ecx
4065f6:	75 04                	jne    0x4065fc
4065f8:	33 c0                	xor    %eax,%eax
4065fa:	eb 28                	jmp    0x406624
4065fc:	0f b7 01             	movzwl (%ecx),%eax
4065ff:	66 85 c0             	test   %ax,%ax
406602:	74 1e                	je     0x406622
406604:	8b d0                	mov    %eax,%edx
406606:	66 3b d7             	cmp    %di,%dx
406609:	74 15                	je     0x406620
40660b:	51                   	push   %ecx
40660c:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406612:	8b c8                	mov    %eax,%ecx
406614:	0f b7 01             	movzwl (%ecx),%eax
406617:	8b d0                	mov    %eax,%edx
406619:	66 85 c0             	test   %ax,%ax
40661c:	75 e8                	jne    0x406606
40661e:	eb 02                	jmp    0x406622
406620:	8b f1                	mov    %ecx,%esi
406622:	8b c6                	mov    %esi,%eax
406624:	5f                   	pop    %edi
406625:	5e                   	pop    %esi
406626:	c3                   	ret
406627:	8b ff                	mov    %edi,%edi
406629:	55                   	push   %ebp
40662a:	8b ec                	mov    %esp,%ebp
40662c:	51                   	push   %ecx
40662d:	51                   	push   %ecx
40662e:	8b 55 0c             	mov    0xc(%ebp),%edx
406631:	53                   	push   %ebx
406632:	8b d9                	mov    %ecx,%ebx
406634:	56                   	push   %esi
406635:	57                   	push   %edi
406636:	85 d2                	test   %edx,%edx
406638:	74 47                	je     0x406681
40663a:	33 c0                	xor    %eax,%eax
40663c:	8b fa                	mov    %edx,%edi
40663e:	89 45 fc             	mov    %eax,-0x4(%ebp)
406641:	8b f0                	mov    %eax,%esi
406643:	8b cf                	mov    %edi,%ecx
406645:	8d 41 02             	lea    0x2(%ecx),%eax
406648:	89 45 f8             	mov    %eax,-0x8(%ebp)
40664b:	66 8b 01             	mov    (%ecx),%ax
40664e:	83 c1 02             	add    $0x2,%ecx
406651:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
406655:	75 f4                	jne    0x40664b
406657:	2b 4d f8             	sub    -0x8(%ebp),%ecx
40665a:	d1 f9                	sar    $1,%ecx
40665c:	41                   	inc    %ecx
40665d:	8d 3c 4f             	lea    (%edi,%ecx,2),%edi
406660:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
406663:	83 f9 01             	cmp    $0x1,%ecx
406666:	75 db                	jne    0x406643
406668:	56                   	push   %esi
406669:	52                   	push   %edx
40666a:	6a 07                	push   $0x7
40666c:	33 c0                	xor    %eax,%eax
40666e:	50                   	push   %eax
40666f:	ff 75 08             	push   0x8(%ebp)
406672:	ff 33                	push   (%ebx)
406674:	ff 15 10 f0 40 00    	call   *0x40f010
40667a:	5f                   	pop    %edi
40667b:	5e                   	pop    %esi
40667c:	5b                   	pop    %ebx
40667d:	c9                   	leave
40667e:	c2 08 00             	ret    $0x8
406681:	b9 05 40 00 80       	mov    $0x80004005,%ecx
406686:	e8 c1 04 00 00       	call   0x406b4c
40668b:	cc                   	int3
40668c:	8b ff                	mov    %edi,%edi
40668e:	56                   	push   %esi
40668f:	8b f1                	mov    %ecx,%esi
406691:	eb 0e                	jmp    0x4066a1
406693:	8b 16                	mov    (%esi),%edx
406695:	52                   	push   %edx
406696:	8b 02                	mov    (%edx),%eax
406698:	89 06                	mov    %eax,(%esi)
40669a:	ff 15 f0 f1 40 00    	call   *0x40f1f0
4066a0:	59                   	pop    %ecx
4066a1:	83 3e 00             	cmpl   $0x0,(%esi)
4066a4:	75 ed                	jne    0x406693
4066a6:	5e                   	pop    %esi
4066a7:	c3                   	ret
4066a8:	8b ff                	mov    %edi,%edi
4066aa:	55                   	push   %ebp
4066ab:	8b ec                	mov    %esp,%ebp
4066ad:	6a ff                	push   $0xffffffff
4066af:	68 f0 a5 40 00       	push   $0x40a5f0
4066b4:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4066ba:	50                   	push   %eax
4066bb:	51                   	push   %ecx
4066bc:	b8 28 21 00 00       	mov    $0x2128,%eax
4066c1:	e8 ea 3c 00 00       	call   0x40a3b0
4066c6:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
4066cb:	33 c5                	xor    %ebp,%eax
4066cd:	89 45 ec             	mov    %eax,-0x14(%ebp)
4066d0:	53                   	push   %ebx
4066d1:	56                   	push   %esi
4066d2:	57                   	push   %edi
4066d3:	50                   	push   %eax
4066d4:	8d 45 f4             	lea    -0xc(%ebp),%eax
4066d7:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4066dd:	89 65 f0             	mov    %esp,-0x10(%ebp)
4066e0:	8b f9                	mov    %ecx,%edi
4066e2:	89 bd d0 de ff ff    	mov    %edi,-0x2130(%ebp)
4066e8:	8b 45 08             	mov    0x8(%ebp),%eax
4066eb:	89 85 dc de ff ff    	mov    %eax,-0x2124(%ebp)
4066f1:	8b 45 0c             	mov    0xc(%ebp),%eax
4066f4:	89 85 e0 de ff ff    	mov    %eax,-0x2120(%ebp)
4066fa:	8b 45 10             	mov    0x10(%ebp),%eax
4066fd:	89 85 c8 de ff ff    	mov    %eax,-0x2138(%ebp)
406703:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
406709:	50                   	push   %eax
40670a:	89 bd d8 de ff ff    	mov    %edi,-0x2128(%ebp)
406710:	e8 20 07 00 00       	call   0x406e35
406715:	85 c0                	test   %eax,%eax
406717:	0f 88 f8 03 00 00    	js     0x406b15
40671d:	33 db                	xor    %ebx,%ebx
40671f:	8b f3                	mov    %ebx,%esi
406721:	ff 34 f5 30 17 40 00 	push   0x401730(,%esi,8)
406728:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40672e:	50                   	push   %eax
40672f:	ff 15 8c f0 40 00    	call   *0x40f08c
406735:	85 c0                	test   %eax,%eax
406737:	74 10                	je     0x406749
406739:	46                   	inc    %esi
40673a:	83 fe 04             	cmp    $0x4,%esi
40673d:	72 e2                	jb     0x406721
40673f:	b8 09 00 02 80       	mov    $0x80020009,%eax
406744:	e9 cc 03 00 00       	jmp    0x406b15
406749:	0f b7 34 f5 34 17 40 	movzwl 0x401734(,%esi,8),%esi
406750:	00
406751:	8b cf                	mov    %edi,%ecx
406753:	e8 da 0e 00 00       	call   0x407632
406758:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40675e:	8b cf                	mov    %edi,%ecx
406760:	50                   	push   %eax
406761:	e8 cf 06 00 00       	call   0x406e35
406766:	85 c0                	test   %eax,%eax
406768:	0f 88 a7 03 00 00    	js     0x406b15
40676e:	8b c6                	mov    %esi,%eax
406770:	6a 02                	push   $0x2
406772:	5f                   	pop    %edi
406773:	83 e8 08             	sub    $0x8,%eax
406776:	0f 84 36 03 00 00    	je     0x406ab2
40677c:	83 e8 09             	sub    $0x9,%eax
40677f:	0f 84 b3 01 00 00    	je     0x406938
406785:	2b c7                	sub    %edi,%eax
406787:	0f 84 33 01 00 00    	je     0x4068c0
40678d:	2d f5 3f 00 00       	sub    $0x3ff5,%eax
406792:	0f 85 66 03 00 00    	jne    0x406afe
406798:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
40679e:	8d 51 02             	lea    0x2(%ecx),%edx
4067a1:	66 8b 01             	mov    (%ecx),%ax
4067a4:	03 cf                	add    %edi,%ecx
4067a6:	66 3b c3             	cmp    %bx,%ax
4067a9:	75 f6                	jne    0x4067a1
4067ab:	2b ca                	sub    %edx,%ecx
4067ad:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
4067b3:	d1 f9                	sar    $1,%ecx
4067b5:	8d 41 02             	lea    0x2(%ecx),%eax
4067b8:	f7 e7                	mul    %edi
4067ba:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4067bd:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4067c1:	3b d3                	cmp    %ebx,%edx
4067c3:	0f 87 68 03 00 00    	ja     0x406b31
4067c9:	72 09                	jb     0x4067d4
4067cb:	83 f8 ff             	cmp    $0xffffffff,%eax
4067ce:	0f 87 5d 03 00 00    	ja     0x406b31
4067d4:	3d 00 01 00 00       	cmp    $0x100,%eax
4067d9:	76 14                	jbe    0x4067ef
4067db:	50                   	push   %eax
4067dc:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4067e2:	e8 e7 fa ff ff       	call   0x4062ce
4067e7:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
4067ed:	eb 0c                	jmp    0x4067fb
4067ef:	8d b5 ec de ff ff    	lea    -0x2114(%ebp),%esi
4067f5:	89 b5 e8 de ff ff    	mov    %esi,-0x2118(%ebp)
4067fb:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4067fe:	eb 20                	jmp    0x406820
406800:	b8 06 68 40 00       	mov    $0x406806,%eax
406805:	c3                   	ret
406806:	33 db                	xor    %ebx,%ebx
406808:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40680b:	8b 85 d8 de ff ff    	mov    -0x2128(%ebp),%eax
406811:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
406817:	6a 02                	push   $0x2
406819:	5f                   	pop    %edi
40681a:	89 85 d0 de ff ff    	mov    %eax,-0x2130(%ebp)
406820:	85 f6                	test   %esi,%esi
406822:	74 7b                	je     0x40689f
406824:	66 83 bd ec df ff ff 	cmpw   $0x0,-0x2014(%ebp)
40682b:	00
40682c:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
406832:	89 85 e4 de ff ff    	mov    %eax,-0x211c(%ebp)
406838:	74 40                	je     0x40687a
40683a:	50                   	push   %eax
40683b:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406841:	8b c8                	mov    %eax,%ecx
406843:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
406849:	0f b7 10             	movzwl (%eax),%edx
40684c:	83 fa 5c             	cmp    $0x5c,%edx
40684f:	75 1c                	jne    0x40686d
406851:	6a 30                	push   $0x30
406853:	58                   	pop    %eax
406854:	66 39 01             	cmp    %ax,(%ecx)
406857:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
40685d:	75 0e                	jne    0x40686d
40685f:	33 c0                	xor    %eax,%eax
406861:	51                   	push   %ecx
406862:	66 89 06             	mov    %ax,(%esi)
406865:	ff 15 f8 f0 40 00    	call   *0x40f0f8
40686b:	eb 05                	jmp    0x406872
40686d:	66 89 16             	mov    %dx,(%esi)
406870:	03 c7                	add    %edi,%eax
406872:	83 c6 02             	add    $0x2,%esi
406875:	66 39 18             	cmp    %bx,(%eax)
406878:	eb b8                	jmp    0x406832
40687a:	8b 8d dc de ff ff    	mov    -0x2124(%ebp),%ecx
406880:	33 c0                	xor    %eax,%eax
406882:	89 06                	mov    %eax,(%esi)
406884:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
40688a:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
406890:	e8 92 fd ff ff       	call   0x406627
406895:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
40689b:	8b f8                	mov    %eax,%edi
40689d:	eb 03                	jmp    0x4068a2
40689f:	6a 0e                	push   $0xe
4068a1:	5f                   	pop    %edi
4068a2:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
4068a8:	3b f0                	cmp    %eax,%esi
4068aa:	0f 84 41 02 00 00    	je     0x406af1
4068b0:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4068b6:	e8 fd f9 ff ff       	call   0x4062b8
4068bb:	e9 31 02 00 00       	jmp    0x406af1
4068c0:	8d 85 e4 de ff ff    	lea    -0x211c(%ebp),%eax
4068c6:	89 9d e4 de ff ff    	mov    %ebx,-0x211c(%ebp)
4068cc:	50                   	push   %eax
4068cd:	53                   	push   %ebx
4068ce:	53                   	push   %ebx
4068cf:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
4068d5:	89 9d d8 de ff ff    	mov    %ebx,-0x2128(%ebp)
4068db:	50                   	push   %eax
4068dc:	ff 15 d4 f0 40 00    	call   *0x40f0d4
4068e2:	8b f0                	mov    %eax,%esi
4068e4:	85 f6                	test   %esi,%esi
4068e6:	79 12                	jns    0x4068fa
4068e8:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
4068ee:	e8 99 fd ff ff       	call   0x40668c
4068f3:	8b c6                	mov    %esi,%eax
4068f5:	e9 1b 02 00 00       	jmp    0x406b15
4068fa:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
406900:	6a 04                	push   $0x4
406902:	89 85 d4 de ff ff    	mov    %eax,-0x212c(%ebp)
406908:	8d 85 d4 de ff ff    	lea    -0x212c(%ebp),%eax
40690e:	50                   	push   %eax
40690f:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
406915:	6a 04                	push   $0x4
406917:	53                   	push   %ebx
406918:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
40691e:	ff 30                	push   (%eax)
406920:	ff 15 10 f0 40 00    	call   *0x40f010
406926:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
40692c:	8b f8                	mov    %eax,%edi
40692e:	e8 59 fd ff ff       	call   0x40668c
406933:	e9 b9 01 00 00       	jmp    0x406af1
406938:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
40693e:	8d 51 02             	lea    0x2(%ecx),%edx
406941:	66 8b 01             	mov    (%ecx),%ax
406944:	03 cf                	add    %edi,%ecx
406946:	66 3b c3             	cmp    %bx,%ax
406949:	75 f6                	jne    0x406941
40694b:	2b ca                	sub    %edx,%ecx
40694d:	d1 f9                	sar    $1,%ecx
40694f:	89 8d e4 de ff ff    	mov    %ecx,-0x211c(%ebp)
406955:	89 8d cc de ff ff    	mov    %ecx,-0x2134(%ebp)
40695b:	f6 c1 01             	test   $0x1,%cl
40695e:	0f 85 85 00 00 00    	jne    0x4069e9
406964:	8b c1                	mov    %ecx,%eax
406966:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
40696c:	99                   	cltd
40696d:	2b c2                	sub    %edx,%eax
40696f:	8b f8                	mov    %eax,%edi
406971:	d1 ff                	sar    $1,%edi
406973:	89 bd d4 de ff ff    	mov    %edi,-0x212c(%ebp)
406979:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
406980:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
406984:	81 ff 00 01 00 00    	cmp    $0x100,%edi
40698a:	76 3c                	jbe    0x4069c8