40e798:	89 55 ec             	mov    %edx,-0x14(%ebp)
40e79b:	53                   	push   %ebx
40e79c:	56                   	push   %esi
40e79d:	57                   	push   %edi
40e79e:	84 c9                	test   %cl,%cl
40e7a0:	75 24                	jne    0x40e7c6
40e7a2:	8b 1a                	mov    (%edx),%ebx
40e7a4:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40e7a7:	85 db                	test   %ebx,%ebx
40e7a9:	74 10                	je     0x40e7bb
40e7ab:	6a 21                	push   $0x21
40e7ad:	53                   	push   %ebx
40e7ae:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40e7b4:	83 c4 08             	add    $0x8,%esp
40e7b7:	85 c0                	test   %eax,%eax
40e7b9:	75 39                	jne    0x40e7f4
40e7bb:	33 c0                	xor    %eax,%eax
40e7bd:	5f                   	pop    %edi
40e7be:	5e                   	pop    %esi
40e7bf:	5b                   	pop    %ebx
40e7c0:	8b e5                	mov    %ebp,%esp
40e7c2:	5d                   	pop    %ebp
40e7c3:	c2 04 00             	ret    $0x4
40e7c6:	8b 75 08             	mov    0x8(%ebp),%esi
40e7c9:	8b 06                	mov    (%esi),%eax
40e7cb:	85 c0                	test   %eax,%eax
40e7cd:	74 ec                	je     0x40e7bb
40e7cf:	8b 0a                	mov    (%edx),%ecx
40e7d1:	85 c9                	test   %ecx,%ecx
40e7d3:	74 0a                	je     0x40e7df
40e7d5:	e8 86 f4 ff ff       	call   0x40dc60
40e7da:	8b 06                	mov    (%esi),%eax
40e7dc:	8b 55 ec             	mov    -0x14(%ebp),%edx
40e7df:	85 c0                	test   %eax,%eax
40e7e1:	0f 84 bc f4 00 00    	je     0x41dca3
40e7e7:	5f                   	pop    %edi
40e7e8:	5e                   	pop    %esi
40e7e9:	89 02                	mov    %eax,(%edx)
40e7eb:	33 c0                	xor    %eax,%eax
40e7ed:	5b                   	pop    %ebx
40e7ee:	8b e5                	mov    %ebp,%esp
40e7f0:	5d                   	pop    %ebp
40e7f1:	c2 04 00             	ret    $0x4
40e7f4:	b9 02 40 00 00       	mov    $0x4002,%ecx
40e7f9:	e8 d2 f4 ff ff       	call   0x40dcd0
40e7fe:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e801:	85 c0                	test   %eax,%eax
40e803:	0f 84 dd f4 00 00    	je     0x41dce6
40e809:	8b fb                	mov    %ebx,%edi
40e80b:	33 f6                	xor    %esi,%esi
40e80d:	8b d8                	mov    %eax,%ebx
40e80f:	90                   	nop
40e810:	0f b7 07             	movzwl (%edi),%eax
40e813:	83 c7 02             	add    $0x2,%edi
40e816:	89 7d e8             	mov    %edi,-0x18(%ebp)
40e819:	66 85 c0             	test   %ax,%ax
40e81c:	0f 84 d5 00 00 00    	je     0x40e8f7
40e822:	83 f8 21             	cmp    $0x21,%eax
40e825:	74 1d                	je     0x40e844
40e827:	83 f8 5e             	cmp    $0x5e,%eax
40e82a:	0f 84 9a f4 00 00    	je     0x41dcca
40e830:	66 89 03             	mov    %ax,(%ebx)
40e833:	83 c3 02             	add    $0x2,%ebx
40e836:	46                   	inc    %esi
40e837:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e83d:	7e d1                	jle    0x40e810
40e83f:	e9 9a f4 00 00       	jmp    0x41dcde
40e844:	6a 21                	push   $0x21
40e846:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e849:	8b d7                	mov    %edi,%edx
40e84b:	50                   	push   %eax
40e84c:	33 c9                	xor    %ecx,%ecx
40e84e:	e8 1d d7 ff ff       	call   0x40bf70
40e853:	8b c8                	mov    %eax,%ecx
40e855:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40e858:	85 c9                	test   %ecx,%ecx
40e85a:	0f 84 cc 00 00 00    	je     0x40e92c
40e860:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e863:	8d 51 02             	lea    0x2(%ecx),%edx
40e866:	66 8b 01             	mov    (%ecx),%ax
40e869:	83 c1 02             	add    $0x2,%ecx
40e86c:	66 85 c0             	test   %ax,%ax
40e86f:	75 f5                	jne    0x40e866
40e871:	8b c1                	mov    %ecx,%eax
40e873:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e876:	2b c2                	sub    %edx,%eax
40e878:	d1 f8                	sar    $1,%eax
40e87a:	03 f0                	add    %eax,%esi
40e87c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e87f:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e885:	0f 8f 53 f4 00 00    	jg     0x41dcde
40e88b:	8b c3                	mov    %ebx,%eax
40e88d:	ba 01 20 00 00       	mov    $0x2001,%edx
40e892:	2b 45 f4             	sub    -0xc(%ebp),%eax
40e895:	d1 f8                	sar    $1,%eax
40e897:	2b d0                	sub    %eax,%edx
40e899:	0f 84 0f f4 00 00    	je     0x41dcae
40e89f:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40e8a5:	0f 87 03 f4 00 00    	ja     0x41dcae
40e8ab:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
40e8b0:	8b c3                	mov    %ebx,%eax
40e8b2:	2b fa                	sub    %edx,%edi
40e8b4:	29 5d f8             	sub    %ebx,-0x8(%ebp)
40e8b7:	8d 0c 17             	lea    (%edi,%edx,1),%ecx
40e8ba:	85 c9                	test   %ecx,%ecx
40e8bc:	74 1c                	je     0x40e8da
40e8be:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40e8c1:	0f b7 0c 01          	movzwl (%ecx,%eax,1),%ecx
40e8c5:	66 85 c9             	test   %cx,%cx
40e8c8:	74 10                	je     0x40e8da
40e8ca:	66 89 08             	mov    %cx,(%eax)
40e8cd:	83 c0 02             	add    $0x2,%eax
40e8d0:	83 ea 01             	sub    $0x1,%edx
40e8d3:	75 e2                	jne    0x40e8b7
40e8d5:	83 e8 02             	sub    $0x2,%eax
40e8d8:	eb 04                	jmp    0x40e8de
40e8da:	85 d2                	test   %edx,%edx
40e8dc:	74 f7                	je     0x40e8d5
40e8de:	8b 7d e8             	mov    -0x18(%ebp),%edi
40e8e1:	33 c9                	xor    %ecx,%ecx
40e8e3:	66 89 08             	mov    %cx,(%eax)
40e8e6:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8e9:	8d 1c 43             	lea    (%ebx,%eax,2),%ebx
40e8ec:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e8ef:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40e8f2:	e9 40 ff ff ff       	jmp    0x40e837
40e8f7:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e8fd:	0f 8f db f3 00 00    	jg     0x41dcde
40e903:	8b 45 08             	mov    0x8(%ebp),%eax
40e906:	8d 14 b5 04 00 00 00 	lea    0x4(,%esi,4),%edx
40e90d:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40e910:	89 08                	mov    %ecx,(%eax)
40e912:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40e915:	e8 06 f4 ff ff       	call   0x40dd20
40e91a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40e91d:	89 01                	mov    %eax,(%ecx)
40e91f:	85 c0                	test   %eax,%eax
40e921:	0f 85 94 fe ff ff    	jne    0x40e7bb
40e927:	e9 b2 f3 00 00       	jmp    0x41dcde
40e92c:	83 3d 48 67 43 00 00 	cmpl   $0x0,0x436748
40e933:	0f 84 87 f3 00 00    	je     0x41dcc0
40e939:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e93c:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40e93f:	e9 f3 fe ff ff       	jmp    0x40e837
40e944:	cc                   	int3
40e945:	cc                   	int3
40e946:	cc                   	int3
40e947:	cc                   	int3
40e948:	cc                   	int3
40e949:	cc                   	int3
40e94a:	cc                   	int3
40e94b:	cc                   	int3
40e94c:	cc                   	int3
40e94d:	cc                   	int3
40e94e:	cc                   	int3
40e94f:	cc                   	int3
40e950:	8b ff                	mov    %edi,%edi
40e952:	55                   	push   %ebp
40e953:	8b ec                	mov    %esp,%ebp
40e955:	81 ec 34 02 00 00    	sub    $0x234,%esp
40e95b:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40e960:	33 c5                	xor    %ebp,%eax
40e962:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e965:	53                   	push   %ebx
40e966:	56                   	push   %esi
40e967:	57                   	push   %edi
40e968:	68 04 01 00 00       	push   $0x104
40e96d:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
40e973:	89 95 d4 fd ff ff    	mov    %edx,-0x22c(%ebp)
40e979:	8b f1                	mov    %ecx,%esi
40e97b:	c6 85 df fd ff ff 00 	movb   $0x0,-0x221(%ebp)
40e982:	6a 00                	push   $0x0
40e984:	50                   	push   %eax
40e985:	89 b5 d8 fd ff ff    	mov    %esi,-0x228(%ebp)
40e98b:	83 cb ff             	or     $0xffffffff,%ebx
40e98e:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40e995:	c6 45 ec 01          	movb   $0x1,-0x14(%ebp)
40e999:	c7 45 f0 04 01 00 00 	movl   $0x104,-0x10(%ebp)
40e9a0:	e8 18 96 00 00       	call   0x417fbd
40e9a5:	83 c4 0c             	add    $0xc,%esp
40e9a8:	80 7d ec 00          	cmpb   $0x0,-0x14(%ebp)
40e9ac:	0f 84 3e f3 00 00    	je     0x41dcf0
40e9b2:	b8 e7 7f 00 00       	mov    $0x7fe7,%eax
40e9b7:	50                   	push   %eax
40e9b8:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
40e9be:	e8 2d fa ff ff       	call   0x40e3f0
40e9c3:	85 c0                	test   %eax,%eax
40e9c5:	0f 88 2f f3 00 00    	js     0x41dcfa
40e9cb:	33 ff                	xor    %edi,%edi
40e9cd:	8d 49 00             	lea    0x0(%ecx),%ecx
40e9d0:	81 ff e6 7f 00 00    	cmp    $0x7fe6,%edi
40e9d6:	73 65                	jae    0x40ea3d
40e9d8:	8b 46 38             	mov    0x38(%esi),%eax
40e9db:	0f b7 34 78          	movzwl (%eax,%edi,2),%esi
40e9df:	83 fe 22             	cmp    $0x22,%esi
40e9e2:	0f 84 cc 01 00 00    	je     0x40ebb4
40e9e8:	66 85 f6             	test   %si,%si
40e9eb:	74 50                	je     0x40ea3d
40e9ed:	80 bd df fd ff ff 00 	cmpb   $0x0,-0x221(%ebp)
40e9f4:	75 13                	jne    0x40ea09
40e9f6:	56                   	push   %esi
40e9f7:	68 5c 23 40 00       	push   $0x40235c
40e9fc:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40ea02:	83 c4 08             	add    $0x8,%esp
40ea05:	85 c0                	test   %eax,%eax
40ea07:	75 34                	jne    0x40ea3d
40ea09:	83 fb ff             	cmp    $0xffffffff,%ebx
40ea0c:	75 17                	jne    0x40ea25
40ea0e:	56                   	push   %esi
40ea0f:	68 74 23 40 00       	push   $0x402374
40ea14:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40ea1a:	83 c4 08             	add    $0x8,%esp
40ea1d:	85 c0                	test   %eax,%eax
40ea1f:	0f 85 b0 01 00 00    	jne    0x40ebd5
40ea25:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ea28:	85 c0                	test   %eax,%eax
40ea2a:	0f 84 d4 f2 00 00    	je     0x41dd04
40ea30:	66 89 34 78          	mov    %si,(%eax,%edi,2)
40ea34:	47                   	inc    %edi
40ea35:	8b b5 d8 fd ff ff    	mov    -0x228(%ebp),%esi
40ea3b:	eb 93                	jmp    0x40e9d0
40ea3d:	89 bd d0 fd ff ff    	mov    %edi,-0x230(%ebp)
40ea43:	85 ff                	test   %edi,%edi
40ea45:	0f 84 c4 f2 00 00    	je     0x41dd0f
40ea4b:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ea4e:	85 c0                	test   %eax,%eax
40ea50:	0f 84 c1 f2 00 00    	je     0x41dd17
40ea56:	33 c9                	xor    %ecx,%ecx
40ea58:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40ea5c:	83 fb ff             	cmp    $0xffffffff,%ebx
40ea5f:	0f 85 84 01 00 00    	jne    0x40ebe9
40ea65:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40ea68:	85 db                	test   %ebx,%ebx
40ea6a:	0f 84 b2 f2 00 00    	je     0x41dd22
40ea70:	33 ff                	xor    %edi,%edi
40ea72:	be 88 16 40 00       	mov    $0x401688,%esi
40ea77:	8b 46 f8             	mov    -0x8(%esi),%eax
40ea7a:	85 c0                	test   %eax,%eax
40ea7c:	74 0f                	je     0x40ea8d
40ea7e:	50                   	push   %eax
40ea7f:	53                   	push   %ebx
40ea80:	ff 15 40 a4 44 00    	call   *0x44a440
40ea86:	83 c4 08             	add    $0x8,%esp
40ea89:	85 c0                	test   %eax,%eax
40ea8b:	74 17                	je     0x40eaa4
40ea8d:	83 c6 18             	add    $0x18,%esi
40ea90:	47                   	inc    %edi
40ea91:	81 fe 78 1a 40 00    	cmp    $0x401a78,%esi
40ea97:	7e de                	jle    0x40ea77
40ea99:	8b 8d d4 fd ff ff    	mov    -0x22c(%ebp),%ecx
40ea9f:	83 cf ff             	or     $0xffffffff,%edi
40eaa2:	eb 14                	jmp    0x40eab8
40eaa4:	0f b7 06             	movzwl (%esi),%eax
40eaa7:	a8 04                	test   $0x4,%al
40eaa9:	0f 85 7e f2 00 00    	jne    0x41dd2d
40eaaf:	8b 8d d4 fd ff ff    	mov    -0x22c(%ebp),%ecx
40eab5:	66 89 01             	mov    %ax,(%ecx)
40eab8:	89 3d d8 e0 42 00    	mov    %edi,0x42e0d8
40eabe:	83 ff ff             	cmp    $0xffffffff,%edi
40eac1:	74 68                	je     0x40eb2b
40eac3:	8b 8d d8 fd ff ff    	mov    -0x228(%ebp),%ecx
40eac9:	8b 9d d0 fd ff ff    	mov    -0x230(%ebp),%ebx
40eacf:	83 ff 14             	cmp    $0x14,%edi
40ead2:	74 4e                	je     0x40eb22
40ead4:	8b 49 38             	mov    0x38(%ecx),%ecx
40ead7:	8d 51 02             	lea    0x2(%ecx),%edx
40eada:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40eae0:	66 8b 01             	mov    (%ecx),%ax
40eae3:	83 c1 02             	add    $0x2,%ecx
40eae6:	66 85 c0             	test   %ax,%ax
40eae9:	75 f5                	jne    0x40eae0
40eaeb:	2b ca                	sub    %edx,%ecx
40eaed:	d1 f9                	sar    $1,%ecx
40eaef:	3b d9                	cmp    %ecx,%ebx
40eaf1:	0f 85 5d f2 00 00    	jne    0x41dd54
40eaf7:	8b 45 e8             	mov    -0x18(%ebp),%eax
40eafa:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40eb01:	85 c0                	test   %eax,%eax
40eb03:	74 0a                	je     0x40eb0f
40eb05:	50                   	push   %eax
40eb06:	ff 15 e0 a3 44 00    	call   *0x44a3e0
40eb0c:	83 c4 04             	add    $0x4,%esp
40eb0f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eb12:	8b c7                	mov    %edi,%eax
40eb14:	5f                   	pop    %edi
40eb15:	5e                   	pop    %esi
40eb16:	33 cd                	xor    %ebp,%ecx
40eb18:	5b                   	pop    %ebx
40eb19:	e8 12 80 00 00       	call   0x416b30
40eb1e:	8b e5                	mov    %ebp,%esp
40eb20:	5d                   	pop    %ebp
40eb21:	c3                   	ret
40eb22:	c7 41 40 01 00 00 00 	movl   $0x1,0x40(%ecx)
40eb29:	eb a9                	jmp    0x40ead4
40eb2b:	8b 55 e8             	mov    -0x18(%ebp),%edx
40eb2e:	85 d2                	test   %edx,%edx
40eb30:	0f 84 09 f2 00 00    	je     0x41dd3f
40eb36:	51                   	push   %ecx
40eb37:	b9 2d 00 00 00       	mov    $0x2d,%ecx
40eb3c:	e8 4f 02 00 00       	call   0x40ed90
40eb41:	83 f8 2d             	cmp    $0x2d,%eax
40eb44:	0f 84 00 f2 00 00    	je     0x41dd4a
40eb4a:	32 c9                	xor    %cl,%cl
40eb4c:	33 db                	xor    %ebx,%ebx
40eb4e:	88 8d df fd ff ff    	mov    %cl,-0x221(%ebp)
40eb54:	eb 0a                	jmp    0x40eb60
40eb56:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40eb5d:	8d 49 00             	lea    0x0(%ecx),%ecx
40eb60:	8b 85 d8 fd ff ff    	mov    -0x228(%ebp),%eax
40eb66:	8b 40 38             	mov    0x38(%eax),%eax
40eb69:	0f b7 34 58          	movzwl (%eax,%ebx,2),%esi
40eb6d:	66 85 f6             	test   %si,%si
40eb70:	74 37                	je     0x40eba9
40eb72:	83 fe 22             	cmp    $0x22,%esi
40eb75:	74 50                	je     0x40ebc7
40eb77:	84 c9                	test   %cl,%cl
40eb79:	74 03                	je     0x40eb7e
40eb7b:	43                   	inc    %ebx
40eb7c:	eb e2                	jmp    0x40eb60
40eb7e:	56                   	push   %esi
40eb7f:	ff 15 ac a3 44 00    	call   *0x44a3ac
40eb85:	83 c4 04             	add    $0x4,%esp
40eb88:	85 c0                	test   %eax,%eax
40eb8a:	75 1d                	jne    0x40eba9
40eb8c:	8b d6                	mov    %esi,%edx
40eb8e:	b9 d0 22 40 00       	mov    $0x4022d0,%ecx
40eb93:	e8 97 ba ff ff       	call   0x40a62f
40eb98:	85 c0                	test   %eax,%eax
40eb9a:	75 0d                	jne    0x40eba9
40eb9c:	83 fe 2f             	cmp    $0x2f,%esi
40eb9f:	74 08                	je     0x40eba9
40eba1:	8a 8d df fd ff ff    	mov    -0x221(%ebp),%cl
40eba7:	eb d2                	jmp    0x40eb7b
40eba9:	8b 8d d8 fd ff ff    	mov    -0x228(%ebp),%ecx
40ebaf:	e9 20 ff ff ff       	jmp    0x40ead4
40ebb4:	80 bd df fd ff ff 00 	cmpb   $0x0,-0x221(%ebp)
40ebbb:	0f 94 85 df fd ff ff 	sete   -0x221(%ebp)
40ebc2:	e9 42 fe ff ff       	jmp    0x40ea09
40ebc7:	84 c9                	test   %cl,%cl
40ebc9:	0f 94 c1             	sete   %cl
40ebcc:	43                   	inc    %ebx
40ebcd:	88 8d df fd ff ff    	mov    %cl,-0x221(%ebp)
40ebd3:	eb 8b                	jmp    0x40eb60
40ebd5:	80 3d 55 67 43 00 00 	cmpb   $0x0,0x436755
40ebdc:	0f 84 5b fe ff ff    	je     0x40ea3d
40ebe2:	8b df                	mov    %edi,%ebx
40ebe4:	e9 3c fe ff ff       	jmp    0x40ea25
40ebe9:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ebec:	85 c0                	test   %eax,%eax
40ebee:	74 2e                	je     0x40ec1e