40698c:	57                   	push   %edi
40698d:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
406993:	e8 36 f9 ff ff       	call   0x4062ce
406998:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
40699e:	eb 34                	jmp    0x4069d4
4069a0:	b8 a6 69 40 00       	mov    $0x4069a6,%eax
4069a5:	c3                   	ret
4069a6:	8b 8d d8 de ff ff    	mov    -0x2128(%ebp),%ecx
4069ac:	33 db                	xor    %ebx,%ebx
4069ae:	8b b5 cc de ff ff    	mov    -0x2134(%ebp),%esi
4069b4:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
4069ba:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
4069c0:	89 8d d0 de ff ff    	mov    %ecx,-0x2130(%ebp)
4069c6:	eb 12                	jmp    0x4069da
4069c8:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
4069ce:	89 85 e8 de ff ff    	mov    %eax,-0x2118(%ebp)
4069d4:	8b b5 e4 de ff ff    	mov    -0x211c(%ebp),%esi
4069da:	85 c0                	test   %eax,%eax
4069dc:	75 15                	jne    0x4069f3
4069de:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4069e4:	e8 cf f8 ff ff       	call   0x4062b8
4069e9:	b8 05 40 00 80       	mov    $0x80004005,%eax
4069ee:	e9 22 01 00 00       	jmp    0x406b15
4069f3:	57                   	push   %edi
4069f4:	53                   	push   %ebx
4069f5:	50                   	push   %eax
4069f6:	e8 e6 39 00 00       	call   0x40a3e1
4069fb:	83 c4 0c             	add    $0xc,%esp
4069fe:	85 f6                	test   %esi,%esi
406a00:	7e 75                	jle    0x406a77
406a02:	8b fb                	mov    %ebx,%edi
406a04:	0f b7 8c 7d ec df ff 	movzwl -0x2014(%ebp,%edi,2),%ecx
406a0b:	ff
406a0c:	8b c7                	mov    %edi,%eax
406a0e:	99                   	cltd
406a0f:	2b c2                	sub    %edx,%eax
406a11:	8b d1                	mov    %ecx,%edx
406a13:	d1 f8                	sar    $1,%eax
406a15:	03 85 e8 de ff ff    	add    -0x2118(%ebp),%eax
406a1b:	89 85 cc de ff ff    	mov    %eax,-0x2134(%ebp)
406a21:	8b c1                	mov    %ecx,%eax
406a23:	6a 30                	push   $0x30
406a25:	59                   	pop    %ecx
406a26:	66 3b c1             	cmp    %cx,%ax
406a29:	72 28                	jb     0x406a53
406a2b:	83 f8 39             	cmp    $0x39,%eax
406a2e:	76 1e                	jbe    0x406a4e
406a30:	83 f8 40             	cmp    $0x40,%eax
406a33:	76 1e                	jbe    0x406a53
406a35:	83 f8 46             	cmp    $0x46,%eax
406a38:	76 0f                	jbe    0x406a49
406a3a:	83 f8 60             	cmp    $0x60,%eax
406a3d:	76 14                	jbe    0x406a53
406a3f:	83 fa 66             	cmp    $0x66,%edx
406a42:	77 0f                	ja     0x406a53
406a44:	80 ea 57             	sub    $0x57,%dl
406a47:	eb 0c                	jmp    0x406a55
406a49:	80 ea 37             	sub    $0x37,%dl
406a4c:	eb 07                	jmp    0x406a55
406a4e:	80 ea 30             	sub    $0x30,%dl
406a51:	eb 02                	jmp    0x406a55
406a53:	8a d3                	mov    %bl,%dl
406a55:	8b c7                	mov    %edi,%eax
406a57:	83 e0 01             	and    $0x1,%eax
406a5a:	c1 e0 02             	shl    $0x2,%eax
406a5d:	6a 04                	push   $0x4
406a5f:	59                   	pop    %ecx
406a60:	2b c8                	sub    %eax,%ecx
406a62:	8b 85 cc de ff ff    	mov    -0x2134(%ebp),%eax
406a68:	d2 e2                	shl    %cl,%dl
406a6a:	08 10                	or     %dl,(%eax)
406a6c:	47                   	inc    %edi
406a6d:	3b fe                	cmp    %esi,%edi
406a6f:	7c 93                	jl     0x406a04
406a71:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
406a77:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
406a7d:	57                   	push   %edi
406a7e:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
406a84:	6a 03                	push   $0x3
406a86:	53                   	push   %ebx
406a87:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
406a8d:	ff 30                	push   (%eax)
406a8f:	ff 15 10 f0 40 00    	call   *0x40f010
406a95:	8b f8                	mov    %eax,%edi
406a97:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
406a9d:	39 85 e8 de ff ff    	cmp    %eax,-0x2118(%ebp)
406aa3:	74 4c                	je     0x406af1
406aa5:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
406aab:	e8 08 f8 ff ff       	call   0x4062b8
406ab0:	eb 3f                	jmp    0x406af1
406ab2:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
406ab8:	8d 51 02             	lea    0x2(%ecx),%edx
406abb:	66 8b 01             	mov    (%ecx),%ax
406abe:	03 cf                	add    %edi,%ecx
406ac0:	66 3b c3             	cmp    %bx,%ax
406ac3:	75 f6                	jne    0x406abb
406ac5:	2b ca                	sub    %edx,%ecx
406ac7:	d1 f9                	sar    $1,%ecx
406ac9:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
406ad0:	50                   	push   %eax
406ad1:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
406ad7:	50                   	push   %eax
406ad8:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
406ade:	6a 01                	push   $0x1
406ae0:	53                   	push   %ebx
406ae1:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
406ae7:	ff 30                	push   (%eax)
406ae9:	ff 15 10 f0 40 00    	call   *0x40f010
406aef:	8b f8                	mov    %eax,%edi
406af1:	85 ff                	test   %edi,%edi
406af3:	74 09                	je     0x406afe
406af5:	8b cf                	mov    %edi,%ecx
406af7:	e8 29 03 00 00       	call   0x406e25
406afc:	eb 17                	jmp    0x406b15
406afe:	ff b5 c8 de ff ff    	push   -0x2138(%ebp)
406b04:	8b 8d d0 de ff ff    	mov    -0x2130(%ebp),%ecx
406b0a:	e8 26 03 00 00       	call   0x406e35
406b0f:	85 c0                	test   %eax,%eax
406b11:	78 02                	js     0x406b15
406b13:	33 c0                	xor    %eax,%eax
406b15:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406b18:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406b1f:	59                   	pop    %ecx
406b20:	5f                   	pop    %edi
406b21:	5e                   	pop    %esi
406b22:	5b                   	pop    %ebx
406b23:	8b 4d ec             	mov    -0x14(%ebp),%ecx
406b26:	33 cd                	xor    %ebp,%ecx
406b28:	e8 33 2d 00 00       	call   0x409860
406b2d:	c9                   	leave
406b2e:	c2 0c 00             	ret    $0xc
406b31:	b9 57 00 07 80       	mov    $0x80070057,%ecx
406b36:	e8 11 00 00 00       	call   0x406b4c
406b3b:	cc                   	int3
406b3c:	8b ff                	mov    %edi,%edi
406b3e:	55                   	push   %ebp
406b3f:	8b ec                	mov    %esp,%ebp
406b41:	8b 45 08             	mov    0x8(%ebp),%eax
406b44:	89 01                	mov    %eax,(%ecx)
406b46:	8b c1                	mov    %ecx,%eax
406b48:	5d                   	pop    %ebp
406b49:	c2 04 00             	ret    $0x4
406b4c:	8b ff                	mov    %edi,%edi
406b4e:	55                   	push   %ebp
406b4f:	8b ec                	mov    %esp,%ebp
406b51:	51                   	push   %ecx
406b52:	51                   	push   %ecx
406b53:	8d 4d fc             	lea    -0x4(%ebp),%ecx
406b56:	e8 e1 ff ff ff       	call   0x406b3c
406b5b:	68 70 af 40 00       	push   $0x40af70
406b60:	8b c1                	mov    %ecx,%eax
406b62:	50                   	push   %eax
406b63:	e8 2e 32 00 00       	call   0x409d96
406b68:	cc                   	int3
406b69:	85 c9                	test   %ecx,%ecx
406b6b:	74 2c                	je     0x406b99
406b6d:	83 f9 0c             	cmp    $0xc,%ecx
406b70:	74 20                	je     0x406b92
406b72:	83 f9 16             	cmp    $0x16,%ecx
406b75:	74 14                	je     0x406b8b
406b77:	83 f9 22             	cmp    $0x22,%ecx
406b7a:	74 0f                	je     0x406b8b
406b7c:	83 f9 50             	cmp    $0x50,%ecx
406b7f:	74 18                	je     0x406b99
406b81:	b9 05 40 00 80       	mov    $0x80004005,%ecx
406b86:	e9 c1 ff ff ff       	jmp    0x406b4c
406b8b:	b9 57 00 07 80       	mov    $0x80070057,%ecx
406b90:	eb f4                	jmp    0x406b86
406b92:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
406b97:	eb ed                	jmp    0x406b86
406b99:	8b c1                	mov    %ecx,%eax
406b9b:	c3                   	ret
406b9c:	8b ff                	mov    %edi,%edi
406b9e:	55                   	push   %ebp
406b9f:	8b ec                	mov    %esp,%ebp
406ba1:	b8 04 20 00 00       	mov    $0x2004,%eax
406ba6:	e8 05 38 00 00       	call   0x40a3b0
406bab:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
406bb0:	33 c5                	xor    %ebp,%eax
406bb2:	89 45 fc             	mov    %eax,-0x4(%ebp)
406bb5:	56                   	push   %esi
406bb6:	57                   	push   %edi
406bb7:	8b 7d 08             	mov    0x8(%ebp),%edi
406bba:	8b f1                	mov    %ecx,%esi
406bbc:	66 83 3f 3d          	cmpw   $0x3d,(%edi)
406bc0:	75 2f                	jne    0x406bf1
406bc2:	57                   	push   %edi
406bc3:	e8 6d 02 00 00       	call   0x406e35
406bc8:	85 c0                	test   %eax,%eax
406bca:	78 27                	js     0x406bf3
406bcc:	8b ce                	mov    %esi,%ecx
406bce:	e8 5f 0a 00 00       	call   0x407632
406bd3:	8d 85 fc df ff ff    	lea    -0x2004(%ebp),%eax
406bd9:	8b ce                	mov    %esi,%ecx
406bdb:	50                   	push   %eax
406bdc:	e8 54 02 00 00       	call   0x406e35
406be1:	85 c0                	test   %eax,%eax
406be3:	78 0e                	js     0x406bf3
406be5:	57                   	push   %edi
406be6:	8b ce                	mov    %esi,%ecx
406be8:	e8 48 02 00 00       	call   0x406e35
406bed:	85 c0                	test   %eax,%eax
406bef:	78 02                	js     0x406bf3
406bf1:	33 c0                	xor    %eax,%eax
406bf3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406bf6:	5f                   	pop    %edi
406bf7:	33 cd                	xor    %ebp,%ecx
406bf9:	5e                   	pop    %esi
406bfa:	e8 61 2c 00 00       	call   0x409860
406bff:	c9                   	leave
406c00:	c2 04 00             	ret    $0x4
406c03:	8b ff                	mov    %edi,%edi
406c05:	55                   	push   %ebp
406c06:	8b ec                	mov    %esp,%ebp
406c08:	56                   	push   %esi
406c09:	be 50 17 40 00       	mov    $0x401750,%esi
406c0e:	ff 36                	push   (%esi)
406c10:	ff 75 08             	push   0x8(%ebp)
406c13:	ff 15 8c f0 40 00    	call   *0x40f08c
406c19:	85 c0                	test   %eax,%eax
406c1b:	74 10                	je     0x406c2d
406c1d:	83 c6 04             	add    $0x4,%esi
406c20:	81 fe 80 17 40 00    	cmp    $0x401780,%esi
406c26:	7c e6                	jl     0x406c0e
406c28:	33 c0                	xor    %eax,%eax
406c2a:	40                   	inc    %eax
406c2b:	eb 02                	jmp    0x406c2f
406c2d:	33 c0                	xor    %eax,%eax
406c2f:	5e                   	pop    %esi
406c30:	5d                   	pop    %ebp
406c31:	c2 04 00             	ret    $0x4
406c34:	8b ff                	mov    %edi,%edi
406c36:	55                   	push   %ebp
406c37:	8b ec                	mov    %esp,%ebp
406c39:	83 e4 f8             	and    $0xfffffff8,%esp
406c3c:	81 ec 24 02 00 00    	sub    $0x224,%esp
406c42:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
406c47:	33 c4                	xor    %esp,%eax
406c49:	89 84 24 20 02 00 00 	mov    %eax,0x220(%esp)
406c50:	53                   	push   %ebx
406c51:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c54:	8d 44 24 14          	lea    0x14(%esp),%eax
406c58:	56                   	push   %esi
406c59:	57                   	push   %edi
406c5a:	50                   	push   %eax
406c5b:	8b f9                	mov    %ecx,%edi
406c5d:	33 c9                	xor    %ecx,%ecx
406c5f:	68 1f 00 02 00       	push   $0x2001f
406c64:	51                   	push   %ecx
406c65:	53                   	push   %ebx
406c66:	ff 37                	push   (%edi)
406c68:	89 4c 24 20          	mov    %ecx,0x20(%esp)
406c6c:	89 4c 24 24          	mov    %ecx,0x24(%esp)
406c70:	89 4c 24 28          	mov    %ecx,0x28(%esp)
406c74:	89 4c 24 30          	mov    %ecx,0x30(%esp)
406c78:	ff 15 0c f0 40 00    	call   *0x40f00c
406c7e:	8b f0                	mov    %eax,%esi
406c80:	85 f6                	test   %esi,%esi
406c82:	0f 85 90 00 00 00    	jne    0x406d18
406c88:	39 74 24 0c          	cmp    %esi,0xc(%esp)
406c8c:	74 0c                	je     0x406c9a
406c8e:	ff 74 24 0c          	push   0xc(%esp)
406c92:	ff 15 00 f0 40 00    	call   *0x40f000
406c98:	8b f0                	mov    %eax,%esi
406c9a:	8b 44 24 1c          	mov    0x1c(%esp),%eax
406c9e:	89 44 24 0c          	mov    %eax,0xc(%esp)
406ca2:	85 f6                	test   %esi,%esi
406ca4:	75 72                	jne    0x406d18
406ca6:	8d 4c 24 20          	lea    0x20(%esp),%ecx
406caa:	51                   	push   %ecx
406cab:	56                   	push   %esi
406cac:	56                   	push   %esi
406cad:	56                   	push   %esi
406cae:	8d 4c 24 28          	lea    0x28(%esp),%ecx
406cb2:	51                   	push   %ecx
406cb3:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
406cb7:	51                   	push   %ecx
406cb8:	56                   	push   %esi
406cb9:	50                   	push   %eax
406cba:	eb 2b                	jmp    0x406ce7
406cbc:	8d 44 24 28          	lea    0x28(%esp),%eax
406cc0:	50                   	push   %eax
406cc1:	8d 4c 24 10          	lea    0x10(%esp),%ecx
406cc5:	e8 6a ff ff ff       	call   0x406c34
406cca:	8b f0                	mov    %eax,%esi
406ccc:	85 f6                	test   %esi,%esi
406cce:	75 48                	jne    0x406d18
406cd0:	8d 44 24 20          	lea    0x20(%esp),%eax
406cd4:	50                   	push   %eax
406cd5:	56                   	push   %esi
406cd6:	56                   	push   %esi
406cd7:	56                   	push   %esi
406cd8:	8d 44 24 28          	lea    0x28(%esp),%eax
406cdc:	50                   	push   %eax
406cdd:	8d 44 24 3c          	lea    0x3c(%esp),%eax
406ce1:	50                   	push   %eax
406ce2:	56                   	push   %esi
406ce3:	ff 74 24 28          	push   0x28(%esp)
406ce7:	c7 44 24 38 00 01 00 	movl   $0x100,0x38(%esp)
406cee:	00
406cef:	ff 15 08 f0 40 00    	call   *0x40f008
406cf5:	85 c0                	test   %eax,%eax
406cf7:	74 c3                	je     0x406cbc
406cf9:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
406cfe:	74 0e                	je     0x406d0e
406d00:	ff 74 24 0c          	push   0xc(%esp)
406d04:	ff 15 00 f0 40 00    	call   *0x40f000
406d0a:	89 74 24 0c          	mov    %esi,0xc(%esp)
406d0e:	53                   	push   %ebx
406d0f:	8b cf                	mov    %edi,%ecx
406d11:	e8 7a 00 00 00       	call   0x406d90
406d16:	8b f0                	mov    %eax,%esi
406d18:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
406d1d:	74 0a                	je     0x406d29
406d1f:	ff 74 24 0c          	push   0xc(%esp)
406d23:	ff 15 00 f0 40 00    	call   *0x40f000
406d29:	8b 8c 24 2c 02 00 00 	mov    0x22c(%esp),%ecx
406d30:	8b c6                	mov    %esi,%eax
406d32:	5f                   	pop    %edi
406d33:	5e                   	pop    %esi
406d34:	5b                   	pop    %ebx
406d35:	33 cc                	xor    %esp,%ecx
406d37:	e8 24 2b 00 00       	call   0x409860
406d3c:	8b e5                	mov    %ebp,%esp
406d3e:	5d                   	pop    %ebp
406d3f:	c2 04 00             	ret    $0x4
406d42:	8b ff                	mov    %edi,%edi
406d44:	55                   	push   %ebp
406d45:	8b ec                	mov    %esp,%ebp
406d47:	51                   	push   %ecx
406d48:	33 c9                	xor    %ecx,%ecx
406d4a:	8d 45 fc             	lea    -0x4(%ebp),%eax
406d4d:	51                   	push   %ecx
406d4e:	51                   	push   %ecx
406d4f:	51                   	push   %ecx
406d50:	51                   	push   %ecx
406d51:	51                   	push   %ecx
406d52:	51                   	push   %ecx
406d53:	51                   	push   %ecx
406d54:	50                   	push   %eax
406d55:	51                   	push   %ecx
406d56:	51                   	push   %ecx
406d57:	51                   	push   %ecx
406d58:	ff 75 08             	push   0x8(%ebp)
406d5b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406d5e:	ff 15 04 f0 40 00    	call   *0x40f004
406d64:	85 c0                	test   %eax,%eax
406d66:	74 04                	je     0x406d6c
406d68:	33 c0                	xor    %eax,%eax
406d6a:	eb 09                	jmp    0x406d75