40897b:	52                   	push   %edx
40897c:	55                   	push   %ebp
40897d:	e8 1e e8 ff ff       	call   0x4071a0
408982:	83 c4 0c             	add    $0xc,%esp
408985:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
40898a:	74 5a                	je     0x4089e6
40898c:	f7 c3 00 01 00 00    	test   $0x100,%ebx
408992:	75 c8                	jne    0x40895c
408994:	8b c5                	mov    %ebp,%eax
408996:	8d 50 02             	lea    0x2(%eax),%edx
408999:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4089a0:	66 8b 08             	mov    (%eax),%cx
4089a3:	83 c0 02             	add    $0x2,%eax
4089a6:	66 85 c9             	test   %cx,%cx
4089a9:	75 f5                	jne    0x4089a0
4089ab:	2b c2                	sub    %edx,%eax
4089ad:	d1 f8                	sar    $1,%eax
4089af:	83 f8 1f             	cmp    $0x1f,%eax
4089b2:	76 32                	jbe    0x4089e6
4089b4:	85 f6                	test   %esi,%esi
4089b6:	74 06                	je     0x4089be
4089b8:	c7 06 f9 ff ff ff    	movl   $0xfffffff9,(%esi)
4089be:	f7 c3 00 02 00 00    	test   $0x200,%ebx
4089c4:	74 12                	je     0x4089d8
4089c6:	6a 2c                	push   $0x2c
4089c8:	8d 44 24 28          	lea    0x28(%esp),%eax
4089cc:	50                   	push   %eax
4089cd:	55                   	push   %ebp
4089ce:	e8 cd e7 ff ff       	call   0x4071a0
4089d3:	83 c4 0c             	add    $0xc,%esp
4089d6:	eb 0e                	jmp    0x4089e6
4089d8:	f7 c3 00 08 00 00    	test   $0x800,%ebx
4089de:	74 06                	je     0x4089e6
4089e0:	33 c9                	xor    %ecx,%ecx
4089e2:	66 89 4d 3e          	mov    %cx,0x3e(%ebp)
4089e6:	8d 8c 24 3c 06 00 00 	lea    0x63c(%esp),%ecx
4089ed:	8b c5                	mov    %ebp,%eax
4089ef:	90                   	nop
4089f0:	66 8b 10             	mov    (%eax),%dx
4089f3:	66 3b 11             	cmp    (%ecx),%dx
4089f6:	75 1e                	jne    0x408a16
4089f8:	66 85 d2             	test   %dx,%dx
4089fb:	74 15                	je     0x408a12
4089fd:	66 8b 50 02          	mov    0x2(%eax),%dx
408a01:	66 3b 51 02          	cmp    0x2(%ecx),%dx
408a05:	75 0f                	jne    0x408a16
408a07:	83 c0 04             	add    $0x4,%eax
408a0a:	83 c1 04             	add    $0x4,%ecx
408a0d:	66 85 d2             	test   %dx,%dx
408a10:	75 de                	jne    0x4089f0
408a12:	33 c0                	xor    %eax,%eax
408a14:	eb 05                	jmp    0x408a1b
408a16:	1b c0                	sbb    %eax,%eax
408a18:	83 d8 ff             	sbb    $0xffffffff,%eax
408a1b:	85 c0                	test   %eax,%eax
408a1d:	74 19                	je     0x408a38
408a1f:	55                   	push   %ebp
408a20:	68 98 ce 45 00       	push   $0x45ce98
408a25:	6a 01                	push   $0x1
408a27:	68 38 ca 45 00       	push   $0x45ca38
408a2c:	e8 7f f7 ff ff       	call   0x4081b0
408a31:	83 c4 10             	add    $0x10,%esp
408a34:	85 c0                	test   %eax,%eax
408a36:	75 0b                	jne    0x408a43
408a38:	55                   	push   %ebp
408a39:	e8 5f 7f 02 00       	call   0x43099d
408a3e:	83 c4 04             	add    $0x4,%esp
408a41:	33 c0                	xor    %eax,%eax
408a43:	5f                   	pop    %edi
408a44:	5e                   	pop    %esi
408a45:	5d                   	pop    %ebp
408a46:	5b                   	pop    %ebx
408a47:	81 c4 2c 0e 00 00    	add    $0xe2c,%esp
408a4d:	c3                   	ret
408a4e:	cc                   	int3
408a4f:	cc                   	int3
408a50:	8b 44 24 04          	mov    0x4(%esp),%eax
408a54:	8b 4c 24 08          	mov    0x8(%esp),%ecx
408a58:	6a 00                	push   $0x0
408a5a:	6a 00                	push   $0x0
408a5c:	50                   	push   %eax
408a5d:	6a 00                	push   $0x0
408a5f:	6a 00                	push   $0x0
408a61:	6a 00                	push   $0x0
408a63:	51                   	push   %ecx
408a64:	6a 01                	push   $0x1
408a66:	e8 45 fa ff ff       	call   0x4084b0
408a6b:	83 c4 20             	add    $0x20,%esp
408a6e:	c3                   	ret
408a6f:	cc                   	int3
408a70:	6a 00                	push   $0x0
408a72:	6a 00                	push   $0x0
408a74:	6a 00                	push   $0x0
408a76:	6a 00                	push   $0x0
408a78:	6a 00                	push   $0x0
408a7a:	6a 00                	push   $0x0
408a7c:	6a 00                	push   $0x0
408a7e:	6a 01                	push   $0x1
408a80:	e8 2b fa ff ff       	call   0x4084b0
408a85:	83 c4 20             	add    $0x20,%esp
408a88:	c3                   	ret
408a89:	cc                   	int3
408a8a:	cc                   	int3
408a8b:	cc                   	int3
408a8c:	cc                   	int3
408a8d:	cc                   	int3
408a8e:	cc                   	int3
408a8f:	cc                   	int3
408a90:	8b 44 24 04          	mov    0x4(%esp),%eax
408a94:	8b 4c 24 08          	mov    0x8(%esp),%ecx
408a98:	6a 00                	push   $0x0
408a9a:	6a 00                	push   $0x0
408a9c:	50                   	push   %eax
408a9d:	6a 00                	push   $0x0
408a9f:	6a 00                	push   $0x0
408aa1:	6a 00                	push   $0x0
408aa3:	51                   	push   %ecx
408aa4:	6a 00                	push   $0x0
408aa6:	e8 05 fa ff ff       	call   0x4084b0
408aab:	83 c4 20             	add    $0x20,%esp
408aae:	c3                   	ret
408aaf:	cc                   	int3
408ab0:	6a 00                	push   $0x0
408ab2:	6a 00                	push   $0x0
408ab4:	6a 00                	push   $0x0
408ab6:	6a 00                	push   $0x0
408ab8:	6a 00                	push   $0x0
408aba:	6a 00                	push   $0x0
408abc:	6a 00                	push   $0x0
408abe:	6a 00                	push   $0x0
408ac0:	e8 eb f9 ff ff       	call   0x4084b0
408ac5:	83 c4 20             	add    $0x20,%esp
408ac8:	c3                   	ret
408ac9:	cc                   	int3
408aca:	cc                   	int3
408acb:	cc                   	int3
408acc:	cc                   	int3
408acd:	cc                   	int3
408ace:	cc                   	int3
408acf:	cc                   	int3
408ad0:	81 ec 08 0a 00 00    	sub    $0xa08,%esp
408ad6:	68 00 04 00 00       	push   $0x400
408adb:	8d 84 24 0c 02 00 00 	lea    0x20c(%esp),%eax
408ae2:	50                   	push   %eax
408ae3:	68 98 ce 45 00       	push   $0x45ce98
408ae8:	6a 01                	push   $0x1
408aea:	68 38 ca 45 00       	push   $0x45ca38
408aef:	e8 bc f7 ff ff       	call   0x4082b0
408af4:	83 c4 14             	add    $0x14,%esp
408af7:	85 c0                	test   %eax,%eax
408af9:	74 09                	je     0x408b04
408afb:	33 c0                	xor    %eax,%eax
408afd:	81 c4 08 0a 00 00    	add    $0xa08,%esp
408b03:	c3                   	ret
408b04:	8d 0c 24             	lea    (%esp),%ecx
408b07:	68 04 01 00 00       	push   $0x104
408b0c:	51                   	push   %ecx
408b0d:	e8 ee c1 ff ff       	call   0x404d00
408b12:	83 c4 08             	add    $0x8,%esp
408b15:	85 c0                	test   %eax,%eax
408b17:	75 e2                	jne    0x408afb
408b19:	6a 2c                	push   $0x2c
408b1b:	8d 54 24 04          	lea    0x4(%esp),%edx
408b1f:	52                   	push   %edx
408b20:	8d 84 24 10 02 00 00 	lea    0x210(%esp),%eax
408b27:	50                   	push   %eax
408b28:	e8 23 e5 ff ff       	call   0x407050
408b2d:	83 c4 0c             	add    $0xc,%esp
408b30:	f7 d8                	neg    %eax
408b32:	1b c0                	sbb    %eax,%eax
408b34:	f7 d8                	neg    %eax
408b36:	81 c4 08 0a 00 00    	add    $0xa08,%esp
408b3c:	c3                   	ret
408b3d:	cc                   	int3
408b3e:	cc                   	int3
408b3f:	cc                   	int3
408b40:	81 ec 00 08 00 00    	sub    $0x800,%esp
408b46:	68 00 04 00 00       	push   $0x400
408b4b:	8d 44 24 04          	lea    0x4(%esp),%eax
408b4f:	50                   	push   %eax
408b50:	68 98 ce 45 00       	push   $0x45ce98
408b55:	6a 01                	push   $0x1
408b57:	68 38 ca 45 00       	push   $0x45ca38
408b5c:	e8 4f f7 ff ff       	call   0x4082b0
408b61:	83 c4 14             	add    $0x14,%esp
408b64:	85 c0                	test   %eax,%eax
408b66:	74 09                	je     0x408b71
408b68:	33 c0                	xor    %eax,%eax
408b6a:	81 c4 00 08 00 00    	add    $0x800,%esp
408b70:	c3                   	ret
408b71:	8b 8c 24 04 08 00 00 	mov    0x804(%esp),%ecx
408b78:	6a 2c                	push   $0x2c
408b7a:	51                   	push   %ecx
408b7b:	8d 54 24 08          	lea    0x8(%esp),%edx
408b7f:	52                   	push   %edx
408b80:	e8 cb e4 ff ff       	call   0x407050
408b85:	83 c4 0c             	add    $0xc,%esp
408b88:	f7 d8                	neg    %eax
408b8a:	1b c0                	sbb    %eax,%eax
408b8c:	f7 d8                	neg    %eax
408b8e:	81 c4 00 08 00 00    	add    $0x800,%esp
408b94:	c3                   	ret
408b95:	cc                   	int3
408b96:	cc                   	int3
408b97:	cc                   	int3
408b98:	cc                   	int3
408b99:	cc                   	int3
408b9a:	cc                   	int3
408b9b:	cc                   	int3
408b9c:	cc                   	int3
408b9d:	cc                   	int3
408b9e:	cc                   	int3
408b9f:	cc                   	int3
408ba0:	8b 44 24 04          	mov    0x4(%esp),%eax
408ba4:	68 00 91 00 00       	push   $0x9100
408ba9:	68 b8 ce 45 00       	push   $0x45ceb8
408bae:	50                   	push   %eax
408baf:	e8 5c a1 02 00       	call   0x432d10
408bb4:	83 c4 0c             	add    $0xc,%esp
408bb7:	c3                   	ret
408bb8:	cc                   	int3
408bb9:	cc                   	int3
408bba:	cc                   	int3
408bbb:	cc                   	int3
408bbc:	cc                   	int3
408bbd:	cc                   	int3
408bbe:	cc                   	int3
408bbf:	cc                   	int3
408bc0:	53                   	push   %ebx
408bc1:	55                   	push   %ebp
408bc2:	56                   	push   %esi
408bc3:	8b f0                	mov    %eax,%esi
408bc5:	8b 44 24 10          	mov    0x10(%esp),%eax
408bc9:	8b 08                	mov    (%eax),%ecx
408bcb:	33 ed                	xor    %ebp,%ebp
408bcd:	32 c0                	xor    %al,%al
408bcf:	57                   	push   %edi
408bd0:	3b ce                	cmp    %esi,%ecx
408bd2:	0f 82 b5 00 00 00    	jb     0x408c8d
408bd8:	8b d6                	mov    %esi,%edx
408bda:	8d 7a 01             	lea    0x1(%edx),%edi
408bdd:	8d 49 00             	lea    0x0(%ecx),%ecx
408be0:	8a 1a                	mov    (%edx),%bl
408be2:	42                   	inc    %edx
408be3:	84 db                	test   %bl,%bl
408be5:	75 f9                	jne    0x408be0
408be7:	2b d7                	sub    %edi,%edx
408be9:	03 d6                	add    %esi,%edx
408beb:	3b ca                	cmp    %edx,%ecx
408bed:	0f 83 9a 00 00 00    	jae    0x408c8d
408bf3:	38 19                	cmp    %bl,(%ecx)
408bf5:	0f 84 92 00 00 00    	je     0x408c8d
408bfb:	eb 03                	jmp    0x408c00
408bfd:	8d 49 00             	lea    0x0(%ecx),%ecx
408c00:	8a 11                	mov    (%ecx),%dl
408c02:	80 fa 20             	cmp    $0x20,%dl
408c05:	74 0f                	je     0x408c16
408c07:	80 fa 09             	cmp    $0x9,%dl
408c0a:	74 0a                	je     0x408c16
408c0c:	80 fa 0a             	cmp    $0xa,%dl
408c0f:	74 05                	je     0x408c16
408c11:	80 fa 0d             	cmp    $0xd,%dl
408c14:	75 03                	jne    0x408c19
408c16:	41                   	inc    %ecx
408c17:	eb e7                	jmp    0x408c00
408c19:	8a 11                	mov    (%ecx),%dl
408c1b:	80 fa 27             	cmp    $0x27,%dl
408c1e:	74 0a                	je     0x408c2a
408c20:	80 fa 22             	cmp    $0x22,%dl
408c23:	74 05                	je     0x408c2a
408c25:	80 fa 60             	cmp    $0x60,%dl
408c28:	75 03                	jne    0x408c2d
408c2a:	8a c2                	mov    %dl,%al
408c2c:	41                   	inc    %ecx
408c2d:	8a 11                	mov    (%ecx),%dl
408c2f:	8b 7c 24 18          	mov    0x18(%esp),%edi
408c33:	84 d2                	test   %dl,%dl
408c35:	74 16                	je     0x408c4d
408c37:	8b f7                	mov    %edi,%esi
408c39:	2b f1                	sub    %ecx,%esi
408c3b:	eb 03                	jmp    0x408c40
408c3d:	8d 49 00             	lea    0x0(%ecx),%ecx
408c40:	84 c0                	test   %al,%al
408c42:	74 1e                	je     0x408c62
408c44:	3a d0                	cmp    %al,%dl
408c46:	75 2e                	jne    0x408c76
408c48:	41                   	inc    %ecx
408c49:	85 ed                	test   %ebp,%ebp
408c4b:	75 04                	jne    0x408c51
408c4d:	84 c0                	test   %al,%al
408c4f:	74 3c                	je     0x408c8d
408c51:	8b 54 24 14          	mov    0x14(%esp),%edx
408c55:	c6 04 2f 00          	movb   $0x0,(%edi,%ebp,1)
408c59:	8b c7                	mov    %edi,%eax
408c5b:	5f                   	pop    %edi
408c5c:	5e                   	pop    %esi
408c5d:	5d                   	pop    %ebp
408c5e:	89 0a                	mov    %ecx,(%edx)
408c60:	5b                   	pop    %ebx
408c61:	c3                   	ret
408c62:	80 fa 20             	cmp    $0x20,%dl
408c65:	74 e2                	je     0x408c49
408c67:	80 fa 09             	cmp    $0x9,%dl
408c6a:	74 dd                	je     0x408c49
408c6c:	80 fa 0a             	cmp    $0xa,%dl
408c6f:	74 d8                	je     0x408c49
408c71:	80 fa 0d             	cmp    $0xd,%dl
408c74:	74 d3                	je     0x408c49
408c76:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
408c7a:	4b                   	dec    %ebx
408c7b:	3b eb                	cmp    %ebx,%ebp
408c7d:	73 ca                	jae    0x408c49
408c7f:	88 14 0e             	mov    %dl,(%esi,%ecx,1)
408c82:	8a 51 01             	mov    0x1(%ecx),%dl
408c85:	41                   	inc    %ecx
408c86:	45                   	inc    %ebp
408c87:	84 d2                	test   %dl,%dl
408c89:	75 b5                	jne    0x408c40
408c8b:	eb bc                	jmp    0x408c49
408c8d:	5f                   	pop    %edi
408c8e:	5e                   	pop    %esi
408c8f:	5d                   	pop    %ebp
408c90:	33 c0                	xor    %eax,%eax
408c92:	5b                   	pop    %ebx
408c93:	c3                   	ret
408c94:	cc                   	int3
408c95:	cc                   	int3
408c96:	cc                   	int3
408c97:	cc                   	int3
408c98:	cc                   	int3
408c99:	cc                   	int3
408c9a:	cc                   	int3
408c9b:	cc                   	int3
408c9c:	cc                   	int3
408c9d:	cc                   	int3
408c9e:	cc                   	int3
408c9f:	cc                   	int3
408ca0:	50                   	push   %eax
408ca1:	8b 44 24 08          	mov    0x8(%esp),%eax
408ca5:	51                   	push   %ecx
408ca6:	52                   	push   %edx
408ca7:	e8 14 ff ff ff       	call   0x408bc0
408cac:	83 c4 0c             	add    $0xc,%esp
408caf:	c3                   	ret
408cb0:	8b 44 24 10          	mov    0x10(%esp),%eax
408cb4:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
408cb8:	8b 54 24 08          	mov    0x8(%esp),%edx
408cbc:	50                   	push   %eax
408cbd:	8b 44 24 08          	mov    0x8(%esp),%eax
408cc1:	51                   	push   %ecx