407665:	56                   	push   %esi
407666:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
407669:	e8 7f 02 00 00       	call   0x4078ed
40766e:	8b 75 e8             	mov    -0x18(%ebp),%esi
407671:	8d 45 10             	lea    0x10(%ebp),%eax
407674:	2b 75 e4             	sub    -0x1c(%ebp),%esi
407677:	89 45 f0             	mov    %eax,-0x10(%ebp)
40767a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40767d:	50                   	push   %eax
40767e:	d1 fe                	sar    $1,%esi
407680:	56                   	push   %esi
407681:	ff 75 e4             	push   -0x1c(%ebp)
407684:	53                   	push   %ebx
407685:	ff 75 0c             	push   0xc(%ebp)
407688:	57                   	push   %edi
407689:	68 00 08 00 00       	push   $0x800
40768e:	ff 15 c4 20 41 00    	call   *0x4120c4
407694:	85 c0                	test   %eax,%eax
407696:	74 a4                	je     0x40763c
407698:	51                   	push   %ecx
407699:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40769c:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40769f:	e8 ec e7 ff ff       	call   0x405e90
4076a4:	8b d0                	mov    %eax,%edx
4076a6:	eb 05                	jmp    0x4076ad
4076a8:	ba f8 24 40 00       	mov    $0x4024f8,%edx
4076ad:	8b 4d 08             	mov    0x8(%ebp),%ecx
4076b0:	e8 f7 fd ff ff       	call   0x4074ac
4076b5:	cc                   	int3
4076b6:	8b ff                	mov    %edi,%edi
4076b8:	55                   	push   %ebp
4076b9:	8b ec                	mov    %esp,%ebp
4076bb:	83 e4 f8             	and    $0xfffffff8,%esp
4076be:	83 ec 1c             	sub    $0x1c,%esp
4076c1:	a1 54 13 41 00       	mov    0x411354,%eax
4076c6:	33 c4                	xor    %esp,%eax
4076c8:	89 44 24 18          	mov    %eax,0x18(%esp)
4076cc:	53                   	push   %ebx
4076cd:	56                   	push   %esi
4076ce:	57                   	push   %edi
4076cf:	33 c0                	xor    %eax,%eax
4076d1:	8d 7c 24 14          	lea    0x14(%esp),%edi
4076d5:	ab                   	stos   %eax,%es:(%edi)
4076d6:	8b f2                	mov    %edx,%esi
4076d8:	8b d1                	mov    %ecx,%edx
4076da:	ab                   	stos   %eax,%es:(%edi)
4076db:	8d 5a 02             	lea    0x2(%edx),%ebx
4076de:	ab                   	stos   %eax,%es:(%edi)
4076df:	ab                   	stos   %eax,%es:(%edi)
4076e0:	33 ff                	xor    %edi,%edi
4076e2:	66 8b 02             	mov    (%edx),%ax
4076e5:	83 c2 02             	add    $0x2,%edx
4076e8:	66 3b c7             	cmp    %di,%ax
4076eb:	75 f5                	jne    0x4076e2
4076ed:	2b d3                	sub    %ebx,%edx
4076ef:	d1 fa                	sar    $1,%edx
4076f1:	0f 88 8e 00 00 00    	js     0x407785
4076f7:	0f b7 44 51 fe       	movzwl -0x2(%ecx,%edx,2),%eax
4076fc:	83 f8 5a             	cmp    $0x5a,%eax
4076ff:	74 05                	je     0x407706
407701:	83 f8 7a             	cmp    $0x7a,%eax
407704:	75 04                	jne    0x40770a
407706:	33 ff                	xor    %edi,%edi
407708:	47                   	inc    %edi
407709:	4a                   	dec    %edx
40770a:	83 fa 17             	cmp    $0x17,%edx
40770d:	0f 85 87 00 00 00    	jne    0x40779a
407713:	6a 2d                	push   $0x2d
407715:	58                   	pop    %eax
407716:	66 3b 41 08          	cmp    0x8(%ecx),%ax
40771a:	75 69                	jne    0x407785
40771c:	66 3b 41 0e          	cmp    0xe(%ecx),%ax
407720:	75 63                	jne    0x407785
407722:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
407726:	6a 54                	push   $0x54
407728:	5a                   	pop    %edx
407729:	66 3b d0             	cmp    %ax,%dx
40772c:	74 08                	je     0x407736
40772e:	6a 74                	push   $0x74
407730:	5a                   	pop    %edx
407731:	66 3b d0             	cmp    %ax,%dx
407734:	75 4f                	jne    0x407785
407736:	6a 3a                	push   $0x3a
407738:	58                   	pop    %eax
407739:	66 3b 41 1a          	cmp    0x1a(%ecx),%ax
40773d:	75 46                	jne    0x407785
40773f:	66 3b 41 20          	cmp    0x20(%ecx),%ax
407743:	75 40                	jne    0x407785
407745:	6a 2e                	push   $0x2e
407747:	58                   	pop    %eax
407748:	66 3b 41 26          	cmp    0x26(%ecx),%ax
40774c:	75 37                	jne    0x407785
40774e:	8d 44 24 22          	lea    0x22(%esp),%eax
407752:	50                   	push   %eax
407753:	8d 44 24 24          	lea    0x24(%esp),%eax
407757:	50                   	push   %eax
407758:	8d 44 24 26          	lea    0x26(%esp),%eax
40775c:	50                   	push   %eax
40775d:	8d 44 24 28          	lea    0x28(%esp),%eax
407761:	50                   	push   %eax
407762:	8d 44 24 2a          	lea    0x2a(%esp),%eax
407766:	50                   	push   %eax
407767:	8d 44 24 2a          	lea    0x2a(%esp),%eax
40776b:	50                   	push   %eax
40776c:	8d 44 24 2c          	lea    0x2c(%esp),%eax
407770:	50                   	push   %eax
407771:	68 40 25 40 00       	push   $0x402540
407776:	51                   	push   %ecx
407777:	ff 15 b4 21 41 00    	call   *0x4121b4
40777d:	83 c4 24             	add    $0x24,%esp
407780:	83 f8 07             	cmp    $0x7,%eax
407783:	74 7e                	je     0x407803
407785:	6a 57                	push   $0x57
407787:	58                   	pop    %eax
407788:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40778c:	5f                   	pop    %edi
40778d:	5e                   	pop    %esi
40778e:	5b                   	pop    %ebx
40778f:	33 cc                	xor    %esp,%ecx
407791:	e8 0a 6c 00 00       	call   0x40e3a0
407796:	8b e5                	mov    %ebp,%esp
407798:	5d                   	pop    %ebp
407799:	c3                   	ret
40779a:	83 fa 13             	cmp    $0x13,%edx
40779d:	75 e6                	jne    0x407785
40779f:	6a 2d                	push   $0x2d
4077a1:	58                   	pop    %eax
4077a2:	66 3b 41 08          	cmp    0x8(%ecx),%ax
4077a6:	75 dd                	jne    0x407785
4077a8:	66 3b 41 0e          	cmp    0xe(%ecx),%ax
4077ac:	75 d7                	jne    0x407785
4077ae:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
4077b2:	6a 54                	push   $0x54
4077b4:	5a                   	pop    %edx
4077b5:	66 3b d0             	cmp    %ax,%dx
4077b8:	74 08                	je     0x4077c2
4077ba:	6a 74                	push   $0x74
4077bc:	5a                   	pop    %edx
4077bd:	66 3b d0             	cmp    %ax,%dx
4077c0:	75 c3                	jne    0x407785
4077c2:	6a 3a                	push   $0x3a
4077c4:	58                   	pop    %eax
4077c5:	66 3b 41 1a          	cmp    0x1a(%ecx),%ax
4077c9:	75 ba                	jne    0x407785
4077cb:	66 3b 41 20          	cmp    0x20(%ecx),%ax
4077cf:	75 b4                	jne    0x407785
4077d1:	8d 44 24 20          	lea    0x20(%esp),%eax
4077d5:	50                   	push   %eax
4077d6:	8d 44 24 22          	lea    0x22(%esp),%eax
4077da:	50                   	push   %eax
4077db:	8d 44 24 24          	lea    0x24(%esp),%eax
4077df:	50                   	push   %eax
4077e0:	8d 44 24 26          	lea    0x26(%esp),%eax
4077e4:	50                   	push   %eax
4077e5:	8d 44 24 26          	lea    0x26(%esp),%eax
4077e9:	50                   	push   %eax
4077ea:	8d 44 24 28          	lea    0x28(%esp),%eax
4077ee:	50                   	push   %eax
4077ef:	68 88 25 40 00       	push   $0x402588
4077f4:	51                   	push   %ecx
4077f5:	ff 15 b4 21 41 00    	call   *0x4121b4
4077fb:	83 c4 20             	add    $0x20,%esp
4077fe:	83 f8 06             	cmp    $0x6,%eax
407801:	75 82                	jne    0x407785
407803:	56                   	push   %esi
407804:	8d 44 24 18          	lea    0x18(%esp),%eax
407808:	50                   	push   %eax
407809:	ff 15 1c 21 41 00    	call   *0x41211c
40780f:	85 c0                	test   %eax,%eax
407811:	75 0b                	jne    0x40781e
407813:	ff 15 70 20 41 00    	call   *0x412070
407819:	e9 6a ff ff ff       	jmp    0x407788
40781e:	85 ff                	test   %edi,%edi
407820:	75 1d                	jne    0x40783f
407822:	8d 44 24 0c          	lea    0xc(%esp),%eax
407826:	50                   	push   %eax
407827:	56                   	push   %esi
407828:	ff 15 80 20 41 00    	call   *0x412080
40782e:	85 c0                	test   %eax,%eax
407830:	74 e1                	je     0x407813
407832:	8b 44 24 0c          	mov    0xc(%esp),%eax
407836:	89 06                	mov    %eax,(%esi)
407838:	8b 44 24 10          	mov    0x10(%esp),%eax
40783c:	89 46 04             	mov    %eax,0x4(%esi)
40783f:	33 c0                	xor    %eax,%eax
407841:	e9 42 ff ff ff       	jmp    0x407788
407846:	8b ff                	mov    %edi,%edi
407848:	55                   	push   %ebp
407849:	8b ec                	mov    %esp,%ebp
40784b:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
407851:	a1 54 13 41 00       	mov    0x411354,%eax
407856:	33 c5                	xor    %ebp,%eax
407858:	89 45 fc             	mov    %eax,-0x4(%ebp)
40785b:	53                   	push   %ebx
40785c:	56                   	push   %esi
40785d:	57                   	push   %edi
40785e:	33 ff                	xor    %edi,%edi
407860:	8b da                	mov    %edx,%ebx
407862:	57                   	push   %edi
407863:	6a 01                	push   $0x1
407865:	53                   	push   %ebx
407866:	57                   	push   %edi
407867:	8b f1                	mov    %ecx,%esi
407869:	56                   	push   %esi
40786a:	57                   	push   %edi
40786b:	68 00 13 00 00       	push   $0x1300
407870:	ff 15 c4 20 41 00    	call   *0x4120c4
407876:	85 c0                	test   %eax,%eax
407878:	74 05                	je     0x40787f
40787a:	33 c0                	xor    %eax,%eax
40787c:	40                   	inc    %eax
40787d:	eb 5f                	jmp    0x4078de
40787f:	68 04 01 00 00       	push   $0x104
407884:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40788a:	50                   	push   %eax
40788b:	68 c8 25 40 00       	push   $0x4025c8
407890:	ff 15 d0 20 41 00    	call   *0x4120d0
407896:	85 c0                	test   %eax,%eax
407898:	74 42                	je     0x4078dc
40789a:	3d 04 01 00 00       	cmp    $0x104,%eax
40789f:	73 3b                	jae    0x4078dc
4078a1:	6a 02                	push   $0x2
4078a3:	57                   	push   %edi
4078a4:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4078aa:	50                   	push   %eax
4078ab:	ff 15 b4 20 41 00    	call   *0x4120b4
4078b1:	8b f8                	mov    %eax,%edi
4078b3:	85 ff                	test   %edi,%edi
4078b5:	74 25                	je     0x4078dc
4078b7:	6a 00                	push   $0x0
4078b9:	6a 01                	push   $0x1
4078bb:	53                   	push   %ebx
4078bc:	6a 00                	push   $0x0
4078be:	56                   	push   %esi
4078bf:	57                   	push   %edi
4078c0:	68 00 0b 00 00       	push   $0xb00
4078c5:	ff 15 c4 20 41 00    	call   *0x4120c4
4078cb:	f7 d8                	neg    %eax
4078cd:	57                   	push   %edi
4078ce:	1b f6                	sbb    %esi,%esi
4078d0:	f7 de                	neg    %esi
4078d2:	ff 15 b8 20 41 00    	call   *0x4120b8
4078d8:	8b c6                	mov    %esi,%eax
4078da:	eb 02                	jmp    0x4078de
4078dc:	33 c0                	xor    %eax,%eax
4078de:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4078e1:	5f                   	pop    %edi
4078e2:	5e                   	pop    %esi
4078e3:	33 cd                	xor    %ebp,%ecx
4078e5:	5b                   	pop    %ebx
4078e6:	e8 b5 6a 00 00       	call   0x40e3a0
4078eb:	c9                   	leave
4078ec:	c3                   	ret
4078ed:	8b ff                	mov    %edi,%edi
4078ef:	55                   	push   %ebp
4078f0:	8b ec                	mov    %esp,%ebp
4078f2:	51                   	push   %ecx
4078f3:	53                   	push   %ebx
4078f4:	8b d9                	mov    %ecx,%ebx
4078f6:	56                   	push   %esi
4078f7:	8b 75 08             	mov    0x8(%ebp),%esi
4078fa:	8b 53 04             	mov    0x4(%ebx),%edx
4078fd:	8b 03                	mov    (%ebx),%eax
4078ff:	2b d0                	sub    %eax,%edx
407901:	d1 fa                	sar    $1,%edx
407903:	3b f2                	cmp    %edx,%esi
407905:	73 12                	jae    0x407919
407907:	ff 73 04             	push   0x4(%ebx)
40790a:	8d 04 70             	lea    (%eax,%esi,2),%eax
40790d:	50                   	push   %eax
40790e:	8d 45 fc             	lea    -0x4(%ebp),%eax
407911:	50                   	push   %eax
407912:	e8 8d 00 00 00       	call   0x4079a4
407917:	eb 3f                	jmp    0x407958
407919:	76 3d                	jbe    0x407958
40791b:	8b c6                	mov    %esi,%eax
40791d:	57                   	push   %edi
40791e:	2b c2                	sub    %edx,%eax
407920:	50                   	push   %eax
407921:	e8 38 00 00 00       	call   0x40795e
407926:	8b 53 04             	mov    0x4(%ebx),%edx
407929:	8b ce                	mov    %esi,%ecx
40792b:	8b 3b                	mov    (%ebx),%edi
40792d:	8b c2                	mov    %edx,%eax
40792f:	2b c7                	sub    %edi,%eax
407931:	d1 f8                	sar    $1,%eax
407933:	2b c8                	sub    %eax,%ecx
407935:	74 12                	je     0x407949
407937:	33 c0                	xor    %eax,%eax
407939:	8b fa                	mov    %edx,%edi
40793b:	d1 e9                	shr    $1,%ecx
40793d:	f3 ab                	rep stos %eax,%es:(%edi)
40793f:	13 c9                	adc    %ecx,%ecx
407941:	66 f3 ab             	rep stos %ax,%es:(%edi)
407944:	8b 53 04             	mov    0x4(%ebx),%edx
407947:	8b 3b                	mov    (%ebx),%edi
407949:	8b c2                	mov    %edx,%eax
40794b:	2b c7                	sub    %edi,%eax
40794d:	d1 f8                	sar    $1,%eax
40794f:	2b f0                	sub    %eax,%esi
407951:	5f                   	pop    %edi
407952:	8d 04 72             	lea    (%edx,%esi,2),%eax
407955:	89 43 04             	mov    %eax,0x4(%ebx)
407958:	5e                   	pop    %esi
407959:	5b                   	pop    %ebx
40795a:	c9                   	leave
40795b:	c2 04 00             	ret    $0x4
40795e:	8b ff                	mov    %edi,%edi
407960:	55                   	push   %ebp
407961:	8b ec                	mov    %esp,%ebp
407963:	56                   	push   %esi
407964:	8b f1                	mov    %ecx,%esi
407966:	8b 4d 08             	mov    0x8(%ebp),%ecx
407969:	8b 46 08             	mov    0x8(%esi),%eax
40796c:	8b 56 04             	mov    0x4(%esi),%edx
40796f:	2b c2                	sub    %edx,%eax
407971:	d1 f8                	sar    $1,%eax
407973:	3b c1                	cmp    %ecx,%eax
407975:	73 22                	jae    0x407999
407977:	2b 16                	sub    (%esi),%edx
407979:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40797e:	d1 fa                	sar    $1,%edx
407980:	2b c2                	sub    %edx,%eax
407982:	3b c1                	cmp    %ecx,%eax
407984:	72 18                	jb     0x40799e
407986:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
407989:	8b ce                	mov    %esi,%ecx
40798b:	50                   	push   %eax
40798c:	e8 b6 00 00 00       	call   0x407a47
407991:	50                   	push   %eax
407992:	8b ce                	mov    %esi,%ecx
407994:	e8 59 00 00 00       	call   0x4079f2
407999:	5e                   	pop    %esi
40799a:	5d                   	pop    %ebp
40799b:	c2 04 00             	ret    $0x4
40799e:	e8 a7 f3 ff ff       	call   0x406d4a
4079a3:	cc                   	int3
4079a4:	8b ff                	mov    %edi,%edi
4079a6:	55                   	push   %ebp
4079a7:	8b ec                	mov    %esp,%ebp
4079a9:	8b 45 10             	mov    0x10(%ebp),%eax
4079ac:	53                   	push   %ebx
4079ad:	8b d9                	mov    %ecx,%ebx
4079af:	57                   	push   %edi
4079b0:	8b 7d 0c             	mov    0xc(%ebp),%edi
4079b3:	8b 0b                	mov    (%ebx),%ecx
4079b5:	3b f9                	cmp    %ecx,%edi
4079b7:	75 0a                	jne    0x4079c3
4079b9:	3b 43 04             	cmp    0x4(%ebx),%eax
4079bc:	75 05                	jne    0x4079c3