40c7a6:	85 c0                	test   %eax,%eax
40c7a8:	74 07                	je     0x40c7b1
40c7aa:	68 cc 2d 40 00       	push   $0x402dcc
40c7af:	eb 43                	jmp    0x40c7f4
40c7b1:	8d 4d 88             	lea    -0x78(%ebp),%ecx
40c7b4:	e8 94 02 00 00       	call   0x40ca4d
40c7b9:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40c7bc:	85 c0                	test   %eax,%eax
40c7be:	74 08                	je     0x40c7c8
40c7c0:	50                   	push   %eax
40c7c1:	ff 15 e4 21 41 00    	call   *0x4121e4
40c7c7:	59                   	pop    %ecx
40c7c8:	ff 75 cc             	push   -0x34(%ebp)
40c7cb:	ff 15 0c 40 41 00    	call   *0x41400c
40c7d1:	33 c0                	xor    %eax,%eax
40c7d3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c7d6:	50                   	push   %eax
40c7d7:	6a 01                	push   $0x1
40c7d9:	e8 12 9d ff ff       	call   0x4064f0
40c7de:	33 c0                	xor    %eax,%eax
40c7e0:	50                   	push   %eax
40c7e1:	ff 15 0c 40 41 00    	call   *0x41400c
40c7e7:	e8 44 1e 00 00       	call   0x40e630
40c7ec:	c2 08 00             	ret    $0x8
40c7ef:	68 88 27 40 00       	push   $0x402788
40c7f4:	6a 0f                	push   $0xf
40c7f6:	50                   	push   %eax
40c7f7:	e8 19 ae ff ff       	call   0x407615
40c7fc:	68 d0 27 40 00       	push   $0x4027d0
40c801:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c804:	e8 d2 9c ff ff       	call   0x4064db
40c809:	50                   	push   %eax
40c80a:	6a 15                	push   $0x15
40c80c:	6a 57                	push   $0x57
40c80e:	e8 02 ae ff ff       	call   0x407615
40c813:	cc                   	int3
40c814:	8b ff                	mov    %edi,%edi
40c816:	55                   	push   %ebp
40c817:	8b ec                	mov    %esp,%ebp
40c819:	51                   	push   %ecx
40c81a:	51                   	push   %ecx
40c81b:	53                   	push   %ebx
40c81c:	56                   	push   %esi
40c81d:	8b 75 0c             	mov    0xc(%ebp),%esi
40c820:	33 db                	xor    %ebx,%ebx
40c822:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c825:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40c828:	57                   	push   %edi
40c829:	85 f6                	test   %esi,%esi
40c82b:	0f 84 80 00 00 00    	je     0x40c8b1
40c831:	66 39 1e             	cmp    %bx,(%esi)
40c834:	74 7b                	je     0x40c8b1
40c836:	8b ce                	mov    %esi,%ecx
40c838:	8d 51 02             	lea    0x2(%ecx),%edx
40c83b:	66 8b 01             	mov    (%ecx),%ax
40c83e:	83 c1 02             	add    $0x2,%ecx
40c841:	66 3b c3             	cmp    %bx,%ax
40c844:	75 f5                	jne    0x40c83b
40c846:	2b ca                	sub    %edx,%ecx
40c848:	d1 f9                	sar    $1,%ecx
40c84a:	81 f9 01 02 00 00    	cmp    $0x201,%ecx
40c850:	77 5f                	ja     0x40c8b1
40c852:	8b 7d 08             	mov    0x8(%ebp),%edi
40c855:	85 ff                	test   %edi,%edi
40c857:	75 05                	jne    0x40c85e
40c859:	bf 7c 24 40 00       	mov    $0x40247c,%edi
40c85e:	8b 5d 10             	mov    0x10(%ebp),%ebx
40c861:	53                   	push   %ebx
40c862:	e8 09 e3 ff ff       	call   0x40ab70
40c867:	68 01 01 00 00       	push   $0x101
40c86c:	8b cb                	mov    %ebx,%ecx
40c86e:	e8 7a b0 ff ff       	call   0x4078ed
40c873:	8b ce                	mov    %esi,%ecx
40c875:	8d 51 02             	lea    0x2(%ecx),%edx
40c878:	66 8b 01             	mov    (%ecx),%ax
40c87b:	83 c1 02             	add    $0x2,%ecx
40c87e:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40c882:	75 f4                	jne    0x40c878
40c884:	68 0a 02 04 00       	push   $0x4020a
40c889:	2b ca                	sub    %edx,%ecx
40c88b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c88e:	50                   	push   %eax
40c88f:	68 01 01 00 00       	push   $0x101
40c894:	ff 33                	push   (%ebx)
40c896:	d1 f9                	sar    $1,%ecx
40c898:	8d 41 01             	lea    0x1(%ecx),%eax
40c89b:	50                   	push   %eax
40c89c:	56                   	push   %esi
40c89d:	33 c0                	xor    %eax,%eax
40c89f:	50                   	push   %eax
40c8a0:	50                   	push   %eax
40c8a1:	57                   	push   %edi
40c8a2:	ff 15 14 40 41 00    	call   *0x414014
40c8a8:	5f                   	pop    %edi
40c8a9:	5e                   	pop    %esi
40c8aa:	5b                   	pop    %ebx
40c8ab:	85 c0                	test   %eax,%eax
40c8ad:	75 10                	jne    0x40c8bf
40c8af:	eb 0a                	jmp    0x40c8bb
40c8b1:	6a 20                	push   $0x20
40c8b3:	5a                   	pop    %edx
40c8b4:	b9 9a 08 00 00       	mov    $0x89a,%ecx
40c8b9:	eb 09                	jmp    0x40c8c4
40c8bb:	c9                   	leave
40c8bc:	c2 0c 00             	ret    $0xc
40c8bf:	6a 20                	push   $0x20
40c8c1:	5a                   	pop    %edx
40c8c2:	8b c8                	mov    %eax,%ecx
40c8c4:	e8 1a ad ff ff       	call   0x4075e3
40c8c9:	cc                   	int3
40c8ca:	cc                   	int3
40c8cb:	cc                   	int3
40c8cc:	cc                   	int3
40c8cd:	cc                   	int3
40c8ce:	cc                   	int3
40c8cf:	cc                   	int3
40c8d0:	6a 1c                	push   $0x1c
40c8d2:	b8 19 f4 40 00       	mov    $0x40f419,%eax
40c8d7:	e8 72 1d 00 00       	call   0x40e64e
40c8dc:	8b f9                	mov    %ecx,%edi
40c8de:	33 db                	xor    %ebx,%ebx
40c8e0:	53                   	push   %ebx
40c8e1:	ff 15 1c 40 41 00    	call   *0x41401c
40c8e7:	85 c0                	test   %eax,%eax
40c8e9:	0f 88 3e 01 00 00    	js     0x40ca2d
40c8ef:	a1 44 20 41 00       	mov    0x412044,%eax
40c8f4:	88 5d e4             	mov    %bl,-0x1c(%ebp)
40c8f7:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c8fa:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c8fd:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40c900:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c904:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c907:	8b 4f 08             	mov    0x8(%edi),%ecx
40c90a:	68 b0 41 40 00       	push   $0x4041b0
40c90f:	68 30 40 40 00       	push   $0x404030
40c914:	50                   	push   %eax
40c915:	8b 71 08             	mov    0x8(%ecx),%esi
40c918:	e8 6a 8a ff ff       	call   0x405387
40c91d:	39 30                	cmp    %esi,(%eax)
40c91f:	74 65                	je     0x40c986
40c921:	8d 47 30             	lea    0x30(%edi),%eax
40c924:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40c928:	72 02                	jb     0x40c92c
40c92a:	8b 00                	mov    (%eax),%eax
40c92c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c92f:	51                   	push   %ecx
40c930:	50                   	push   %eax
40c931:	e8 33 e4 ff ff       	call   0x40ad69
40c936:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40c939:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c93c:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40c940:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40c943:	ba c4 45 40 00       	mov    $0x4045c4,%edx
40c948:	50                   	push   %eax
40c949:	e8 f8 b2 ff ff       	call   0x407c46
40c94e:	85 c0                	test   %eax,%eax
40c950:	79 07                	jns    0x40c959
40c952:	6a 07                	push   $0x7
40c954:	e9 d6 00 00 00       	jmp    0x40ca2f
40c959:	75 54                	jne    0x40c9af
40c95b:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40c95f:	74 4e                	je     0x40c9af
40c961:	ff 75 f0             	push   -0x10(%ebp)
40c964:	ff 15 04 40 41 00    	call   *0x414004
40c96a:	85 c0                	test   %eax,%eax
40c96c:	74 41                	je     0x40c9af
40c96e:	ff 75 f0             	push   -0x10(%ebp)
40c971:	8d 4f 18             	lea    0x18(%edi),%ecx
40c974:	e8 28 9b ff ff       	call   0x4064a1
40c979:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c97d:	ff 75 f0             	push   -0x10(%ebp)
40c980:	ff 15 0c 40 41 00    	call   *0x41400c
40c986:	8d 47 18             	lea    0x18(%edi),%eax
40c989:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40c98d:	72 02                	jb     0x40c991
40c98f:	8b 00                	mov    (%eax),%eax
40c991:	6a 02                	push   $0x2
40c993:	6a 03                	push   $0x3
40c995:	50                   	push   %eax
40c996:	ff 15 28 20 41 00    	call   *0x412028
40c99c:	8b f0                	mov    %eax,%esi
40c99e:	85 f6                	test   %esi,%esi
40c9a0:	75 17                	jne    0x40c9b9
40c9a2:	ff 15 70 20 41 00    	call   *0x412070
40c9a8:	6a 08                	push   $0x8
40c9aa:	e9 80 00 00 00       	jmp    0x40ca2f
40c9af:	6a 07                	push   $0x7
40c9b1:	5a                   	pop    %edx
40c9b2:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40c9b7:	eb 79                	jmp    0x40ca32
40c9b9:	a1 30 20 41 00       	mov    0x412030,%eax
40c9be:	88 5d d8             	mov    %bl,-0x28(%ebp)
40c9c1:	89 45 dc             	mov    %eax,-0x24(%ebp)
40c9c4:	89 75 e0             	mov    %esi,-0x20(%ebp)
40c9c7:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40c9cb:	8b cf                	mov    %edi,%ecx
40c9cd:	ff 75 ec             	push   -0x14(%ebp)
40c9d0:	56                   	push   %esi
40c9d1:	e8 fb f4 ff ff       	call   0x40bed1
40c9d6:	53                   	push   %ebx
40c9d7:	56                   	push   %esi
40c9d8:	ff 15 08 20 41 00    	call   *0x412008
40c9de:	85 c0                	test   %eax,%eax
40c9e0:	75 18                	jne    0x40c9fa
40c9e2:	ff 15 70 20 41 00    	call   *0x412070
40c9e8:	b9 e8 3a 00 00       	mov    $0x3ae8,%ecx
40c9ed:	3b c1                	cmp    %ecx,%eax
40c9ef:	75 05                	jne    0x40c9f6
40c9f1:	6a 0a                	push   $0xa
40c9f3:	5a                   	pop    %edx
40c9f4:	eb 3c                	jmp    0x40ca32
40c9f6:	6a 09                	push   $0x9
40c9f8:	eb 35                	jmp    0x40ca2f
40c9fa:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c9fd:	e8 61 94 ff ff       	call   0x405e63
40ca02:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40ca06:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ca09:	85 c0                	test   %eax,%eax
40ca0b:	74 10                	je     0x40ca1d
40ca0d:	8b 08                	mov    (%eax),%ecx
40ca0f:	50                   	push   %eax
40ca10:	8b 71 08             	mov    0x8(%ecx),%esi
40ca13:	8b ce                	mov    %esi,%ecx
40ca15:	ff 15 10 22 41 00    	call   *0x412210
40ca1b:	ff d6                	call   *%esi
40ca1d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40ca21:	ff 15 44 20 41 00    	call   *0x412044
40ca27:	e8 f0 1b 00 00       	call   0x40e61c
40ca2c:	c3                   	ret
40ca2d:	6a 06                	push   $0x6
40ca2f:	5a                   	pop    %edx
40ca30:	8b c8                	mov    %eax,%ecx
40ca32:	e8 ac ab ff ff       	call   0x4075e3
40ca37:	cc                   	int3
40ca38:	80 39 00             	cmpb   $0x0,(%ecx)
40ca3b:	75 0f                	jne    0x40ca4c
40ca3d:	56                   	push   %esi
40ca3e:	8b 71 04             	mov    0x4(%ecx),%esi
40ca41:	8b ce                	mov    %esi,%ecx
40ca43:	ff 15 10 22 41 00    	call   *0x412210
40ca49:	ff d6                	call   *%esi
40ca4b:	5e                   	pop    %esi
40ca4c:	c3                   	ret
40ca4d:	80 39 00             	cmpb   $0x0,(%ecx)
40ca50:	57                   	push   %edi
40ca51:	8d 79 08             	lea    0x8(%ecx),%edi
40ca54:	75 10                	jne    0x40ca66
40ca56:	56                   	push   %esi
40ca57:	8b 71 04             	mov    0x4(%ecx),%esi
40ca5a:	8b ce                	mov    %esi,%ecx
40ca5c:	57                   	push   %edi
40ca5d:	ff 15 10 22 41 00    	call   *0x412210
40ca63:	ff d6                	call   *%esi
40ca65:	5e                   	pop    %esi
40ca66:	8b cf                	mov    %edi,%ecx
40ca68:	5f                   	pop    %edi
40ca69:	e9 a9 94 ff ff       	jmp    0x405f17
40ca6e:	6a 08                	push   $0x8
40ca70:	b8 34 f4 40 00       	mov    $0x40f434,%eax
40ca75:	e8 3d 1c 00 00       	call   0x40e6b7
40ca7a:	8b f1                	mov    %ecx,%esi
40ca7c:	89 75 ec             	mov    %esi,-0x14(%ebp)
40ca7f:	8b 45 08             	mov    0x8(%ebp),%eax
40ca82:	33 ff                	xor    %edi,%edi
40ca84:	89 3e                	mov    %edi,(%esi)
40ca86:	89 7e 04             	mov    %edi,0x4(%esi)
40ca89:	89 7e 08             	mov    %edi,0x8(%esi)
40ca8c:	8b 58 04             	mov    0x4(%eax),%ebx
40ca8f:	2b 18                	sub    (%eax),%ebx
40ca91:	d1 fb                	sar    $1,%ebx
40ca93:	74 31                	je     0x40cac6
40ca95:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
40ca9b:	77 44                	ja     0x40cae1
40ca9d:	53                   	push   %ebx
40ca9e:	e8 23 98 ff ff       	call   0x4062c6
40caa3:	8b c8                	mov    %eax,%ecx
40caa5:	89 7d fc             	mov    %edi,-0x4(%ebp)
40caa8:	ff 75 ec             	push   -0x14(%ebp)
40caab:	89 0e                	mov    %ecx,(%esi)
40caad:	89 4e 04             	mov    %ecx,0x4(%esi)
40cab0:	8d 04 59             	lea    (%ecx,%ebx,2),%eax
40cab3:	89 46 08             	mov    %eax,0x8(%esi)
40cab6:	8b 45 08             	mov    0x8(%ebp),%eax
40cab9:	ff 70 04             	push   0x4(%eax)
40cabc:	ff 30                	push   (%eax)
40cabe:	e8 86 02 00 00       	call   0x40cd49
40cac3:	89 46 04             	mov    %eax,0x4(%esi)
40cac6:	8b c6                	mov    %esi,%eax
40cac8:	e8 4f 1b 00 00       	call   0x40e61c
40cacd:	c2 04 00             	ret    $0x4
40cad0:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40cad3:	e8 3f 94 ff ff       	call   0x405f17
40cad8:	33 ff                	xor    %edi,%edi
40cada:	57                   	push   %edi
40cadb:	57                   	push   %edi
40cadc:	e8 35 1b 00 00       	call   0x40e616
40cae1:	e8 64 a2 ff ff       	call   0x406d4a
40cae6:	cc                   	int3
40cae7:	8b 51 04             	mov    0x4(%ecx),%edx
40caea:	56                   	push   %esi
40caeb:	8b 71 08             	mov    0x8(%ecx),%esi
40caee:	8b c6                	mov    %esi,%eax
40caf0:	2b c2                	sub    %edx,%eax
40caf2:	c1 f8 02             	sar    $0x2,%eax
40caf5:	83 f8 01             	cmp    $0x1,%eax
40caf8:	73 3b                	jae    0x40cb35
40cafa:	2b 11                	sub    (%ecx),%edx
40cafc:	53                   	push   %ebx
40cafd:	57                   	push   %edi
40cafe:	bf ff ff ff 3f       	mov    $0x3fffffff,%edi
40cb03:	c1 fa 02             	sar    $0x2,%edx
40cb06:	8b c7                	mov    %edi,%eax
40cb08:	2b c2                	sub    %edx,%eax
40cb0a:	83 f8 01             	cmp    $0x1,%eax
40cb0d:	72 2a                	jb     0x40cb39
40cb0f:	2b 31                	sub    (%ecx),%esi
40cb11:	8d 5a 01             	lea    0x1(%edx),%ebx
40cb14:	c1 fe 02             	sar    $0x2,%esi
40cb17:	8b c6                	mov    %esi,%eax
40cb19:	d1 e8                	shr    $1,%eax
40cb1b:	2b f8                	sub    %eax,%edi
40cb1d:	03 c6                	add    %esi,%eax
40cb1f:	3b fe                	cmp    %esi,%edi
40cb21:	1b d2                	sbb    %edx,%edx
40cb23:	f7 d2                	not    %edx
40cb25:	23 d0                	and    %eax,%edx
40cb27:	3b d3                	cmp    %ebx,%edx
40cb29:	73 02                	jae    0x40cb2d
40cb2b:	8b d3                	mov    %ebx,%edx
40cb2d:	52                   	push   %edx
40cb2e:	e8 0c 00 00 00       	call   0x40cb3f
40cb33:	5f                   	pop    %edi
40cb34:	5b                   	pop    %ebx
40cb35:	5e                   	pop    %esi
40cb36:	c2 04 00             	ret    $0x4
40cb39:	e8 0c a2 ff ff       	call   0x406d4a
40cb3e:	cc                   	int3
40cb3f:	8b ff                	mov    %edi,%edi
40cb41:	55                   	push   %ebp
40cb42:	8b ec                	mov    %esp,%ebp
40cb44:	51                   	push   %ecx
40cb45:	53                   	push   %ebx
40cb46:	8b 5d 08             	mov    0x8(%ebp),%ebx
40cb49:	56                   	push   %esi
40cb4a:	33 f6                	xor    %esi,%esi
40cb4c:	57                   	push   %edi
40cb4d:	8b f9                	mov    %ecx,%edi
40cb4f:	85 db                	test   %ebx,%ebx
40cb51:	74 1a                	je     0x40cb6d
40cb53:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx