405c64:	e8 42 e3 ff ff       	call   0x403fab
405c69:	56                   	push   %esi
405c6a:	8d 8d 7c ff ff ff    	lea    -0x84(%ebp),%ecx
405c70:	e8 f9 e1 ff ff       	call   0x403e6e
405c75:	68 a4 c6 40 00       	push   $0x40c6a4
405c7a:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
405c80:	50                   	push   %eax
405c81:	e8 b4 4e 00 00       	call   0x40ab3a
405c86:	cc                   	int3
405c87:	cc                   	int3
405c88:	cc                   	int3
405c89:	cc                   	int3
405c8a:	cc                   	int3
405c8b:	cc                   	int3
405c8c:	cc                   	int3
405c8d:	cc                   	int3
405c8e:	cc                   	int3
405c8f:	cc                   	int3
405c90:	8b ff                	mov    %edi,%edi
405c92:	55                   	push   %ebp
405c93:	8b ec                	mov    %esp,%ebp
405c95:	83 e4 f8             	and    $0xfffffff8,%esp
405c98:	83 ec 30             	sub    $0x30,%esp
405c9b:	a1 50 d1 40 00       	mov    0x40d150,%eax
405ca0:	33 c4                	xor    %esp,%eax
405ca2:	89 44 24 2c          	mov    %eax,0x2c(%esp)
405ca6:	56                   	push   %esi
405ca7:	57                   	push   %edi
405ca8:	8b 45 08             	mov    0x8(%ebp),%eax
405cab:	8d 75 10             	lea    0x10(%ebp),%esi
405cae:	8d 7c 24 20          	lea    0x20(%esp),%edi
405cb2:	89 44 24 08          	mov    %eax,0x8(%esp)
405cb6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405cb7:	83 ec 18             	sub    $0x18,%esp
405cba:	8b 45 0c             	mov    0xc(%ebp),%eax
405cbd:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405cbe:	6a 06                	push   $0x6
405cc0:	59                   	pop    %ecx
405cc1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405cc2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405cc3:	8d 74 24 38          	lea    0x38(%esp),%esi
405cc7:	8d 7c 24 24          	lea    0x24(%esp),%edi
405ccb:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ccc:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ccd:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405cce:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ccf:	8b fc                	mov    %esp,%edi
405cd1:	89 44 24 34          	mov    %eax,0x34(%esp)
405cd5:	8d 74 24 20          	lea    0x20(%esp),%esi
405cd9:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
405cdb:	e8 af 08 00 00       	call   0x40658f
405ce0:	8b 4c 24 34          	mov    0x34(%esp),%ecx
405ce4:	5f                   	pop    %edi
405ce5:	5e                   	pop    %esi
405ce6:	33 cc                	xor    %esp,%ecx
405ce8:	e8 73 41 00 00       	call   0x409e60
405ced:	8b e5                	mov    %ebp,%esp
405cef:	5d                   	pop    %ebp
405cf0:	c2 18 00             	ret    $0x18
405cf3:	68 8c 00 00 00       	push   $0x8c
405cf8:	b8 e6 ae 40 00       	mov    $0x40aee6,%eax
405cfd:	e8 12 4f 00 00       	call   0x40ac14
405d02:	8b d9                	mov    %ecx,%ebx
405d04:	8d 4d e3             	lea    -0x1d(%ebp),%ecx
405d07:	e8 26 e3 ff ff       	call   0x404032
405d0c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405d10:	8b 0b                	mov    (%ebx),%ecx
405d12:	e8 2e f4 ff ff       	call   0x405145
405d17:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
405d1b:	8b f8                	mov    %eax,%edi
405d1d:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405d21:	8d 45 ec             	lea    -0x14(%ebp),%eax
405d24:	8b 4f 04             	mov    0x4(%edi),%ecx
405d27:	50                   	push   %eax
405d28:	8d 43 04             	lea    0x4(%ebx),%eax
405d2b:	50                   	push   %eax
405d2c:	8b 91 80 00 00 00    	mov    0x80(%ecx),%edx
405d32:	52                   	push   %edx
405d33:	8b 0a                	mov    (%edx),%ecx
405d35:	8b 71 28             	mov    0x28(%ecx),%esi
405d38:	8b ce                	mov    %esi,%ecx
405d3a:	ff 15 f0 e1 40 00    	call   *0x40e1f0
405d40:	ff d6                	call   *%esi
405d42:	8b f0                	mov    %eax,%esi
405d44:	85 f6                	test   %esi,%esi
405d46:	78 72                	js     0x405dba
405d48:	8b 4f 04             	mov    0x4(%edi),%ecx
405d4b:	8b 53 14             	mov    0x14(%ebx),%edx
405d4e:	83 c1 28             	add    $0x28,%ecx
405d51:	8b 45 ec             	mov    -0x14(%ebp),%eax
405d54:	89 55 e8             	mov    %edx,-0x18(%ebp)
405d57:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405d5a:	83 79 4c 00          	cmpl   $0x0,0x4c(%ecx)
405d5e:	74 30                	je     0x405d90
405d60:	f7 41 38 00 01 00 00 	testl  $0x100,0x38(%ecx)
405d67:	74 27                	je     0x405d90
405d69:	85 51 38             	test   %edx,0x38(%ecx)
405d6c:	74 22                	je     0x405d90
405d6e:	83 ec 0c             	sub    $0xc,%esp
405d71:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
405d74:	8d 45 e8             	lea    -0x18(%ebp),%eax
405d77:	8b fc                	mov    %esp,%edi
405d79:	89 45 d8             	mov    %eax,-0x28(%ebp)
405d7c:	8d 75 d4             	lea    -0x2c(%ebp),%esi
405d7f:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405d82:	89 45 dc             	mov    %eax,-0x24(%ebp)
405d85:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405d86:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405d87:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405d88:	e8 43 3c 00 00       	call   0x4099d0
405d8d:	8b 45 ec             	mov    -0x14(%ebp),%eax
405d90:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
405d94:	85 c0                	test   %eax,%eax
405d96:	74 10                	je     0x405da8
405d98:	8b 08                	mov    (%eax),%ecx
405d9a:	50                   	push   %eax
405d9b:	8b 71 08             	mov    0x8(%ecx),%esi
405d9e:	8b ce                	mov    %esi,%ecx
405da0:	ff 15 f0 e1 40 00    	call   *0x40e1f0
405da6:	ff d6                	call   *%esi
405da8:	80 7d e3 00          	cmpb   $0x0,-0x1d(%ebp)
405dac:	74 06                	je     0x405db4
405dae:	ff 15 24 e0 40 00    	call   *0x40e024
405db4:	e8 16 4e 00 00       	call   0x40abcf
405db9:	c3                   	ret
405dba:	8b 0d 00 d0 40 00    	mov    0x40d000,%ecx
405dc0:	81 f9 00 d0 40 00    	cmp    $0x40d000,%ecx
405dc6:	74 1a                	je     0x405de2
405dc8:	80 79 19 02          	cmpb   $0x2,0x19(%ecx)
405dcc:	72 14                	jb     0x405de2
405dce:	56                   	push   %esi
405dcf:	ff 71 14             	push   0x14(%ecx)
405dd2:	ba 3c 1e 40 00       	mov    $0x401e3c,%edx
405dd7:	ff 71 10             	push   0x10(%ecx)
405dda:	6a 16                	push   $0x16
405ddc:	59                   	pop    %ecx
405ddd:	e8 c9 e1 ff ff       	call   0x403fab
405de2:	56                   	push   %esi
405de3:	8d 8d 68 ff ff ff    	lea    -0x98(%ebp),%ecx
405de9:	e8 80 e0 ff ff       	call   0x403e6e
405dee:	68 a4 c6 40 00       	push   $0x40c6a4
405df3:	8d 85 68 ff ff ff    	lea    -0x98(%ebp),%eax
405df9:	50                   	push   %eax
405dfa:	e8 3b 4d 00 00       	call   0x40ab3a
405dff:	cc                   	int3
405e00:	8b ff                	mov    %edi,%edi
405e02:	55                   	push   %ebp
405e03:	8b ec                	mov    %esp,%ebp
405e05:	83 ec 30             	sub    $0x30,%esp
405e08:	a1 50 d1 40 00       	mov    0x40d150,%eax
405e0d:	33 c5                	xor    %ebp,%eax
405e0f:	89 45 fc             	mov    %eax,-0x4(%ebp)
405e12:	56                   	push   %esi
405e13:	57                   	push   %edi
405e14:	8b 45 08             	mov    0x8(%ebp),%eax
405e17:	8d 75 14             	lea    0x14(%ebp),%esi
405e1a:	8d 7d ec             	lea    -0x14(%ebp),%edi
405e1d:	89 45 d0             	mov    %eax,-0x30(%ebp)
405e20:	8b 45 10             	mov    0x10(%ebp),%eax
405e23:	83 ec 1c             	sub    $0x1c,%esp
405e26:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e27:	89 45 d4             	mov    %eax,-0x2c(%ebp)
405e2a:	8b 45 0c             	mov    0xc(%ebp),%eax
405e2d:	6a 07                	push   $0x7
405e2f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e30:	59                   	pop    %ecx
405e31:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e32:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e33:	8d 75 ec             	lea    -0x14(%ebp),%esi
405e36:	8d 7d d8             	lea    -0x28(%ebp),%edi
405e39:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e3a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e3b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e3c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405e3d:	8b fc                	mov    %esp,%edi
405e3f:	89 45 e8             	mov    %eax,-0x18(%ebp)
405e42:	8d 75 d0             	lea    -0x30(%ebp),%esi
405e45:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
405e47:	e8 99 07 00 00       	call   0x4065e5
405e4c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405e4f:	5f                   	pop    %edi
405e50:	33 cd                	xor    %ebp,%ecx
405e52:	5e                   	pop    %esi
405e53:	e8 08 40 00 00       	call   0x409e60
405e58:	c9                   	leave
405e59:	c2 1c 00             	ret    $0x1c
405e5c:	68 8c 00 00 00       	push   $0x8c
405e61:	b8 e6 ae 40 00       	mov    $0x40aee6,%eax
405e66:	e8 a9 4d 00 00       	call   0x40ac14
405e6b:	8b f9                	mov    %ecx,%edi
405e6d:	8d 4d e3             	lea    -0x1d(%ebp),%ecx
405e70:	e8 bd e1 ff ff       	call   0x404032
405e75:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405e79:	8b 0f                	mov    (%edi),%ecx
405e7b:	e8 c5 f2 ff ff       	call   0x405145
405e80:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
405e84:	8b d8                	mov    %eax,%ebx
405e86:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405e8a:	8d 47 08             	lea    0x8(%edi),%eax
405e8d:	8b 4b 04             	mov    0x4(%ebx),%ecx
405e90:	8b 91 80 00 00 00    	mov    0x80(%ecx),%edx
405e96:	8b 0a                	mov    (%edx),%ecx
405e98:	8b 71 24             	mov    0x24(%ecx),%esi
405e9b:	8d 4d ec             	lea    -0x14(%ebp),%ecx
405e9e:	51                   	push   %ecx
405e9f:	50                   	push   %eax
405ea0:	ff 77 04             	push   0x4(%edi)
405ea3:	8b ce                	mov    %esi,%ecx
405ea5:	52                   	push   %edx
405ea6:	ff 15 f0 e1 40 00    	call   *0x40e1f0
405eac:	ff d6                	call   *%esi
405eae:	8b f0                	mov    %eax,%esi
405eb0:	85 f6                	test   %esi,%esi
405eb2:	78 64                	js     0x405f18
405eb4:	8b 4b 04             	mov    0x4(%ebx),%ecx
405eb7:	8b 47 18             	mov    0x18(%edi),%eax
405eba:	83 c1 28             	add    $0x28,%ecx
405ebd:	89 45 e8             	mov    %eax,-0x18(%ebp)
405ec0:	8b 45 ec             	mov    -0x14(%ebp),%eax
405ec3:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405ec6:	83 79 4c 00          	cmpl   $0x0,0x4c(%ecx)
405eca:	74 22                	je     0x405eee
405ecc:	83 ec 0c             	sub    $0xc,%esp
405ecf:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
405ed2:	8d 45 e8             	lea    -0x18(%ebp),%eax
405ed5:	8b fc                	mov    %esp,%edi
405ed7:	89 45 d8             	mov    %eax,-0x28(%ebp)
405eda:	8d 75 d4             	lea    -0x2c(%ebp),%esi
405edd:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405ee0:	89 45 dc             	mov    %eax,-0x24(%ebp)
405ee3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ee4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ee5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405ee6:	e8 6a 3b 00 00       	call   0x409a55
405eeb:	8b 45 ec             	mov    -0x14(%ebp),%eax
405eee:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
405ef2:	85 c0                	test   %eax,%eax
405ef4:	74 10                	je     0x405f06
405ef6:	8b 08                	mov    (%eax),%ecx
405ef8:	50                   	push   %eax
405ef9:	8b 71 08             	mov    0x8(%ecx),%esi
405efc:	8b ce                	mov    %esi,%ecx
405efe:	ff 15 f0 e1 40 00    	call   *0x40e1f0
405f04:	ff d6                	call   *%esi
405f06:	80 7d e3 00          	cmpb   $0x0,-0x1d(%ebp)
405f0a:	74 06                	je     0x405f12
405f0c:	ff 15 24 e0 40 00    	call   *0x40e024
405f12:	e8 b8 4c 00 00       	call   0x40abcf
405f17:	c3                   	ret
405f18:	8b 0d 00 d0 40 00    	mov    0x40d000,%ecx
405f1e:	81 f9 00 d0 40 00    	cmp    $0x40d000,%ecx
405f24:	74 19                	je     0x405f3f
405f26:	80 79 19 02          	cmpb   $0x2,0x19(%ecx)
405f2a:	72 13                	jb     0x405f3f
405f2c:	56                   	push   %esi
405f2d:	8d 47 08             	lea    0x8(%edi),%eax
405f30:	50                   	push   %eax
405f31:	ff 77 04             	push   0x4(%edi)
405f34:	ff 71 14             	push   0x14(%ecx)
405f37:	ff 71 10             	push   0x10(%ecx)
405f3a:	e8 53 f0 ff ff       	call   0x404f92
405f3f:	56                   	push   %esi
405f40:	8d 8d 68 ff ff ff    	lea    -0x98(%ebp),%ecx
405f46:	e8 23 df ff ff       	call   0x403e6e
405f4b:	68 a4 c6 40 00       	push   $0x40c6a4
405f50:	8d 85 68 ff ff ff    	lea    -0x98(%ebp),%eax
405f56:	50                   	push   %eax
405f57:	e8 de 4b 00 00       	call   0x40ab3a
405f5c:	cc                   	int3
405f5d:	cc                   	int3
405f5e:	cc                   	int3
405f5f:	cc                   	int3
405f60:	8b ff                	mov    %edi,%edi
405f62:	55                   	push   %ebp
405f63:	8b ec                	mov    %esp,%ebp
405f65:	ff 75 08             	push   0x8(%ebp)
405f68:	ff 15 68 e1 40 00    	call   *0x40e168
405f6e:	59                   	pop    %ecx
405f6f:	5d                   	pop    %ebp
405f70:	c2 04 00             	ret    $0x4
405f73:	cc                   	int3
405f74:	cc                   	int3
405f75:	cc                   	int3
405f76:	cc                   	int3
405f77:	cc                   	int3
405f78:	cc                   	int3
405f79:	cc                   	int3
405f7a:	cc                   	int3
405f7b:	cc                   	int3
405f7c:	cc                   	int3
405f7d:	cc                   	int3
405f7e:	cc                   	int3
405f7f:	cc                   	int3
405f80:	8b ff                	mov    %edi,%edi
405f82:	55                   	push   %ebp
405f83:	8b ec                	mov    %esp,%ebp
405f85:	ff 75 08             	push   0x8(%ebp)
405f88:	ff 15 64 e1 40 00    	call   *0x40e164
405f8e:	59                   	pop    %ecx
405f8f:	5d                   	pop    %ebp
405f90:	c2 04 00             	ret    $0x4
405f93:	cc                   	int3
405f94:	cc                   	int3
405f95:	cc                   	int3
405f96:	cc                   	int3
405f97:	cc                   	int3
405f98:	cc                   	int3
405f99:	cc                   	int3
405f9a:	cc                   	int3
405f9b:	cc                   	int3
405f9c:	cc                   	int3
405f9d:	cc                   	int3
405f9e:	cc                   	int3
405f9f:	cc                   	int3
405fa0:	8b ff                	mov    %edi,%edi
405fa2:	55                   	push   %ebp
405fa3:	8b ec                	mov    %esp,%ebp
405fa5:	8d 45 08             	lea    0x8(%ebp),%eax
405fa8:	50                   	push   %eax
405fa9:	e8 26 01 00 00       	call   0x4060d4
405fae:	5d                   	pop    %ebp
405faf:	c2 04 00             	ret    $0x4
405fb2:	cc                   	int3
405fb3:	cc                   	int3
405fb4:	cc                   	int3
405fb5:	cc                   	int3
405fb6:	cc                   	int3
405fb7:	cc                   	int3
405fb8:	cc                   	int3
405fb9:	cc                   	int3
405fba:	cc                   	int3
405fbb:	cc                   	int3
405fbc:	cc                   	int3
405fbd:	cc                   	int3
405fbe:	cc                   	int3
405fbf:	cc                   	int3
405fc0:	8b ff                	mov    %edi,%edi
405fc2:	55                   	push   %ebp
405fc3:	8b ec                	mov    %esp,%ebp
405fc5:	8d 45 08             	lea    0x8(%ebp),%eax
405fc8:	50                   	push   %eax
405fc9:	e8 fc 01 00 00       	call   0x4061ca
405fce:	5d                   	pop    %ebp
405fcf:	c2 04 00             	ret    $0x4
405fd2:	8b 01                	mov    (%ecx),%eax
405fd4:	85 c0                	test   %eax,%eax
405fd6:	74 10                	je     0x405fe8
405fd8:	81 08 00 80 00 00    	orl    $0x8000,(%eax)
405fde:	6a 14                	push   $0x14
405fe0:	50                   	push   %eax