402c77:	8b 01                	mov    (%ecx),%eax
402c79:	51                   	push   %ecx
402c7a:	8b 70 08             	mov    0x8(%eax),%esi
402c7d:	8b ce                	mov    %esi,%ecx
402c7f:	ff 15 90 61 40 00    	call   *0x406190
402c85:	ff d6                	call   *%esi
402c87:	8b 55 fc             	mov    -0x4(%ebp),%edx
402c8a:	85 d2                	test   %edx,%edx
402c8c:	74 14                	je     0x402ca2
402c8e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402c92:	8b 02                	mov    (%edx),%eax
402c94:	52                   	push   %edx
402c95:	8b 70 08             	mov    0x8(%eax),%esi
402c98:	8b ce                	mov    %esi,%ecx
402c9a:	ff 15 90 61 40 00    	call   *0x406190
402ca0:	ff d6                	call   *%esi
402ca2:	8b c7                	mov    %edi,%eax
402ca4:	5f                   	pop    %edi
402ca5:	5e                   	pop    %esi
402ca6:	c9                   	leave
402ca7:	c2 08 00             	ret    $0x8
402caa:	8b ff                	mov    %edi,%edi
402cac:	55                   	push   %ebp
402cad:	8b ec                	mov    %esp,%ebp
402caf:	56                   	push   %esi
402cb0:	8b 75 0c             	mov    0xc(%ebp),%esi
402cb3:	33 d2                	xor    %edx,%edx
402cb5:	89 16                	mov    %edx,(%esi)
402cb7:	83 79 10 02          	cmpl   $0x2,0x10(%ecx)
402cbb:	75 29                	jne    0x402ce6
402cbd:	39 51 14             	cmp    %edx,0x14(%ecx)
402cc0:	74 1d                	je     0x402cdf
402cc2:	8b 49 14             	mov    0x14(%ecx),%ecx
402cc5:	85 c9                	test   %ecx,%ecx
402cc7:	74 30                	je     0x402cf9
402cc9:	8b 01                	mov    (%ecx),%eax
402ccb:	56                   	push   %esi
402ccc:	ff 75 08             	push   0x8(%ebp)
402ccf:	8b 70 0c             	mov    0xc(%eax),%esi
402cd2:	51                   	push   %ecx
402cd3:	8b ce                	mov    %esi,%ecx
402cd5:	ff 15 90 61 40 00    	call   *0x406190
402cdb:	ff d6                	call   *%esi
402cdd:	eb 18                	jmp    0x402cf7
402cdf:	ba 57 00 07 80       	mov    $0x80070057,%edx
402ce4:	eb 13                	jmp    0x402cf9
402ce6:	8b 41 0c             	mov    0xc(%ecx),%eax
402ce9:	56                   	push   %esi
402cea:	ff 75 08             	push   0x8(%ebp)
402ced:	89 51 0c             	mov    %edx,0xc(%ecx)
402cf0:	50                   	push   %eax
402cf1:	ff 15 bc 60 40 00    	call   *0x4060bc
402cf7:	8b d0                	mov    %eax,%edx
402cf9:	8b c2                	mov    %edx,%eax
402cfb:	5e                   	pop    %esi
402cfc:	5d                   	pop    %ebp
402cfd:	c2 08 00             	ret    $0x8
402d00:	8b ff                	mov    %edi,%edi
402d02:	55                   	push   %ebp
402d03:	8b ec                	mov    %esp,%ebp
402d05:	51                   	push   %ecx
402d06:	56                   	push   %esi
402d07:	8b f1                	mov    %ecx,%esi
402d09:	57                   	push   %edi
402d0a:	8d 7e 0c             	lea    0xc(%esi),%edi
402d0d:	c7 06 8c 10 40 00    	movl   $0x40108c,(%esi)
402d13:	83 3f 00             	cmpl   $0x0,(%edi)
402d16:	74 3d                	je     0x402d55
402d18:	ff 15 1c 60 40 00    	call   *0x40601c
402d1e:	39 46 18             	cmp    %eax,0x18(%esi)
402d21:	75 11                	jne    0x402d34
402d23:	ff 37                	push   (%edi)
402d25:	ff 15 d0 60 40 00    	call   *0x4060d0
402d2b:	8b cf                	mov    %edi,%ecx
402d2d:	e8 41 0b 00 00       	call   0x403873
402d32:	eb 21                	jmp    0x402d55
402d34:	8b 07                	mov    (%edi),%eax
402d36:	8d 4d fc             	lea    -0x4(%ebp),%ecx
402d39:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402d3d:	83 27 00             	andl   $0x0,(%edi)
402d40:	51                   	push   %ecx
402d41:	68 a4 14 40 00       	push   $0x4014a4
402d46:	50                   	push   %eax
402d47:	ff 15 bc 60 40 00    	call   *0x4060bc
402d4d:	8d 4d fc             	lea    -0x4(%ebp),%ecx
402d50:	e8 9c 09 00 00       	call   0x4036f1
402d55:	8d 4e 14             	lea    0x14(%esi),%ecx
402d58:	e8 94 09 00 00       	call   0x4036f1
402d5d:	8b cf                	mov    %edi,%ecx
402d5f:	e8 0f 0b 00 00       	call   0x403873
402d64:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
402d68:	c7 46 08 01 00 00 c0 	movl   $0xc0000001,0x8(%esi)
402d6f:	74 07                	je     0x402d78
402d71:	56                   	push   %esi
402d72:	e8 ed 11 00 00       	call   0x403f64
402d77:	59                   	pop    %ecx
402d78:	5f                   	pop    %edi
402d79:	8b c6                	mov    %esi,%eax
402d7b:	5e                   	pop    %esi
402d7c:	c9                   	leave
402d7d:	c2 04 00             	ret    $0x4
402d80:	8b ff                	mov    %edi,%edi
402d82:	55                   	push   %ebp
402d83:	8b ec                	mov    %esp,%ebp
402d85:	ff 75 10             	push   0x10(%ebp)
402d88:	ff 75 0c             	push   0xc(%ebp)
402d8b:	68 d4 14 40 00       	push   $0x4014d4
402d90:	ff 75 08             	push   0x8(%ebp)
402d93:	ff 15 88 60 40 00    	call   *0x406088
402d99:	5d                   	pop    %ebp
402d9a:	c2 0c 00             	ret    $0xc
402d9d:	cc                   	int3
402d9e:	cc                   	int3
402d9f:	cc                   	int3
402da0:	8b ff                	mov    %edi,%edi
402da2:	55                   	push   %ebp
402da3:	8b ec                	mov    %esp,%ebp
402da5:	8b 4d 08             	mov    0x8(%ebp),%ecx
402da8:	33 c0                	xor    %eax,%eax
402daa:	40                   	inc    %eax
402dab:	f0 0f c1 41 04       	lock xadd %eax,0x4(%ecx)
402db0:	40                   	inc    %eax
402db1:	5d                   	pop    %ebp
402db2:	c2 04 00             	ret    $0x4
402db5:	cc                   	int3
402db6:	cc                   	int3
402db7:	cc                   	int3
402db8:	cc                   	int3
402db9:	cc                   	int3
402dba:	cc                   	int3
402dbb:	cc                   	int3
402dbc:	cc                   	int3
402dbd:	cc                   	int3
402dbe:	cc                   	int3
402dbf:	cc                   	int3
402dc0:	8b ff                	mov    %edi,%edi
402dc2:	55                   	push   %ebp
402dc3:	8b ec                	mov    %esp,%ebp
402dc5:	56                   	push   %esi
402dc6:	8b 75 08             	mov    0x8(%ebp),%esi
402dc9:	57                   	push   %edi
402dca:	83 cf ff             	or     $0xffffffff,%edi
402dcd:	f0 0f c1 7e 04       	lock xadd %edi,0x4(%esi)
402dd2:	4f                   	dec    %edi
402dd3:	75 22                	jne    0x402df7
402dd5:	85 f6                	test   %esi,%esi
402dd7:	74 1e                	je     0x402df7
402dd9:	6a 00                	push   $0x0
402ddb:	c7 06 38 10 40 00    	movl   $0x401038,(%esi)
402de1:	ff 15 80 60 40 00    	call   *0x406080
402de7:	ff 76 08             	push   0x8(%esi)
402dea:	ff 15 34 60 40 00    	call   *0x406034
402df0:	56                   	push   %esi
402df1:	e8 6e 11 00 00       	call   0x403f64
402df6:	59                   	pop    %ecx
402df7:	8b c7                	mov    %edi,%eax
402df9:	5f                   	pop    %edi
402dfa:	5e                   	pop    %esi
402dfb:	5d                   	pop    %ebp
402dfc:	c2 04 00             	ret    $0x4
402dff:	cc                   	int3
402e00:	8b ff                	mov    %edi,%edi
402e02:	55                   	push   %ebp
402e03:	8b ec                	mov    %esp,%ebp
402e05:	ff 75 10             	push   0x10(%ebp)
402e08:	ff 75 0c             	push   0xc(%ebp)
402e0b:	68 6c 10 40 00       	push   $0x40106c
402e10:	ff 75 08             	push   0x8(%ebp)
402e13:	ff 15 88 60 40 00    	call   *0x406088
402e19:	5d                   	pop    %ebp
402e1a:	c2 0c 00             	ret    $0xc
402e1d:	cc                   	int3
402e1e:	cc                   	int3
402e1f:	cc                   	int3
402e20:	8b ff                	mov    %edi,%edi
402e22:	55                   	push   %ebp
402e23:	8b ec                	mov    %esp,%ebp
402e25:	53                   	push   %ebx
402e26:	57                   	push   %edi
402e27:	8b 7d 08             	mov    0x8(%ebp),%edi
402e2a:	83 cb ff             	or     $0xffffffff,%ebx
402e2d:	f0 0f c1 5f 04       	lock xadd %ebx,0x4(%edi)
402e32:	4b                   	dec    %ebx
402e33:	75 32                	jne    0x402e67
402e35:	85 ff                	test   %edi,%edi
402e37:	74 2e                	je     0x402e67
402e39:	8b 4f 34             	mov    0x34(%edi),%ecx
402e3c:	c7 07 1c 10 40 00    	movl   $0x40101c,(%edi)
402e42:	85 c9                	test   %ecx,%ecx
402e44:	74 12                	je     0x402e58
402e46:	8b 01                	mov    (%ecx),%eax
402e48:	56                   	push   %esi
402e49:	51                   	push   %ecx
402e4a:	8b 70 08             	mov    0x8(%eax),%esi
402e4d:	8b ce                	mov    %esi,%ecx
402e4f:	ff 15 90 61 40 00    	call   *0x406190
402e55:	ff d6                	call   *%esi
402e57:	5e                   	pop    %esi
402e58:	8d 4f 38             	lea    0x38(%edi),%ecx
402e5b:	e8 91 08 00 00       	call   0x4036f1
402e60:	57                   	push   %edi
402e61:	e8 fe 10 00 00       	call   0x403f64
402e66:	59                   	pop    %ecx
402e67:	5f                   	pop    %edi
402e68:	8b c3                	mov    %ebx,%eax
402e6a:	5b                   	pop    %ebx
402e6b:	5d                   	pop    %ebp
402e6c:	c2 04 00             	ret    $0x4
402e6f:	8b ff                	mov    %edi,%edi
402e71:	55                   	push   %ebp
402e72:	8b ec                	mov    %esp,%ebp
402e74:	51                   	push   %ecx
402e75:	51                   	push   %ecx
402e76:	53                   	push   %ebx
402e77:	57                   	push   %edi
402e78:	8b f9                	mov    %ecx,%edi
402e7a:	bb 05 40 00 80       	mov    $0x80004005,%ebx
402e7f:	83 7f 2c 00          	cmpl   $0x0,0x2c(%edi)
402e83:	75 79                	jne    0x402efe
402e85:	56                   	push   %esi
402e86:	8b 75 08             	mov    0x8(%ebp),%esi
402e89:	85 f6                	test   %esi,%esi
402e8b:	79 07                	jns    0x402e94
402e8d:	89 77 30             	mov    %esi,0x30(%edi)
402e90:	33 db                	xor    %ebx,%ebx
402e92:	eb 62                	jmp    0x402ef6
402e94:	8b 45 0c             	mov    0xc(%ebp),%eax
402e97:	8d 5f 38             	lea    0x38(%edi),%ebx
402e9a:	8b 0b                	mov    (%ebx),%ecx
402e9c:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
402ea3:	89 45 f8             	mov    %eax,-0x8(%ebp)
402ea6:	85 c9                	test   %ecx,%ecx
402ea8:	74 16                	je     0x402ec0
402eaa:	83 23 00             	andl   $0x0,(%ebx)
402ead:	8b 01                	mov    (%ecx),%eax
402eaf:	51                   	push   %ecx
402eb0:	8b 70 08             	mov    0x8(%eax),%esi
402eb3:	8b ce                	mov    %esi,%ecx
402eb5:	ff 15 90 61 40 00    	call   *0x406190
402ebb:	ff d6                	call   *%esi
402ebd:	8b 75 08             	mov    0x8(%ebp),%esi
402ec0:	8d 45 fc             	lea    -0x4(%ebp),%eax
402ec3:	8b cb                	mov    %ebx,%ecx
402ec5:	50                   	push   %eax
402ec6:	8d 45 f8             	lea    -0x8(%ebp),%eax
402ec9:	50                   	push   %eax
402eca:	8d 57 18             	lea    0x18(%edi),%edx
402ecd:	e8 1a 0f 00 00       	call   0x403dec
402ed2:	8b d8                	mov    %eax,%ebx
402ed4:	85 db                	test   %ebx,%ebx
402ed6:	78 1b                	js     0x402ef3
402ed8:	8b 45 0c             	mov    0xc(%ebp),%eax
402edb:	89 77 30             	mov    %esi,0x30(%edi)
402ede:	89 47 34             	mov    %eax,0x34(%edi)
402ee1:	50                   	push   %eax
402ee2:	8b 08                	mov    (%eax),%ecx
402ee4:	8b 71 04             	mov    0x4(%ecx),%esi
402ee7:	8b ce                	mov    %esi,%ecx
402ee9:	ff 15 90 61 40 00    	call   *0x406190
402eef:	ff d6                	call   *%esi
402ef1:	eb 03                	jmp    0x402ef6
402ef3:	89 5f 30             	mov    %ebx,0x30(%edi)
402ef6:	c7 47 2c 01 00 00 00 	movl   $0x1,0x2c(%edi)
402efd:	5e                   	pop    %esi
402efe:	5f                   	pop    %edi
402eff:	8b c3                	mov    %ebx,%eax
402f01:	5b                   	pop    %ebx
402f02:	c9                   	leave
402f03:	c2 08 00             	ret    $0x8
402f06:	cc                   	int3
402f07:	cc                   	int3
402f08:	cc                   	int3
402f09:	cc                   	int3
402f0a:	cc                   	int3
402f0b:	cc                   	int3
402f0c:	cc                   	int3
402f0d:	cc                   	int3
402f0e:	cc                   	int3
402f0f:	cc                   	int3
402f10:	8b ff                	mov    %edi,%edi
402f12:	55                   	push   %ebp
402f13:	8b ec                	mov    %esp,%ebp
402f15:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
402f19:	56                   	push   %esi
402f1a:	8b f1                	mov    %ecx,%esi
402f1c:	c7 06 54 10 40 00    	movl   $0x401054,(%esi)
402f22:	74 07                	je     0x402f2b
402f24:	56                   	push   %esi
402f25:	e8 3a 10 00 00       	call   0x403f64
402f2a:	59                   	pop    %ecx
402f2b:	8b c6                	mov    %esi,%eax
402f2d:	5e                   	pop    %esi
402f2e:	5d                   	pop    %ebp
402f2f:	c2 04 00             	ret    $0x4
402f32:	cc                   	int3
402f33:	cc                   	int3
402f34:	cc                   	int3
402f35:	cc                   	int3
402f36:	cc                   	int3
402f37:	cc                   	int3
402f38:	cc                   	int3
402f39:	cc                   	int3
402f3a:	cc                   	int3
402f3b:	cc                   	int3
402f3c:	cc                   	int3
402f3d:	cc                   	int3
402f3e:	cc                   	int3
402f3f:	cc                   	int3
402f40:	8b ff                	mov    %edi,%edi
402f42:	55                   	push   %ebp
402f43:	8b ec                	mov    %esp,%ebp
402f45:	ff 75 10             	push   0x10(%ebp)
402f48:	ff 75 0c             	push   0xc(%ebp)
402f4b:	68 28 10 40 00       	push   $0x401028
402f50:	ff 75 08             	push   0x8(%ebp)
402f53:	ff 15 88 60 40 00    	call   *0x406088
402f59:	5d                   	pop    %ebp
402f5a:	c2 0c 00             	ret    $0xc
402f5d:	cc                   	int3
402f5e:	cc                   	int3
402f5f:	cc                   	int3
402f60:	8b ff                	mov    %edi,%edi
402f62:	55                   	push   %ebp
402f63:	8b ec                	mov    %esp,%ebp
402f65:	8b 4d 08             	mov    0x8(%ebp),%ecx
402f68:	33 c0                	xor    %eax,%eax
402f6a:	40                   	inc    %eax
402f6b:	f0 0f c1 41 08       	lock xadd %eax,0x8(%ecx)
402f70:	40                   	inc    %eax
402f71:	5d                   	pop    %ebp
402f72:	c2 04 00             	ret    $0x4
402f75:	cc                   	int3
402f76:	cc                   	int3
402f77:	cc                   	int3
402f78:	cc                   	int3
402f79:	cc                   	int3
402f7a:	cc                   	int3
402f7b:	cc                   	int3
402f7c:	cc                   	int3
402f7d:	cc                   	int3
402f7e:	cc                   	int3
402f7f:	cc                   	int3
402f80:	8b ff                	mov    %edi,%edi
402f82:	55                   	push   %ebp
402f83:	8b ec                	mov    %esp,%ebp
402f85:	53                   	push   %ebx
402f86:	57                   	push   %edi
402f87:	8b 7d 08             	mov    0x8(%ebp),%edi
402f8a:	83 cb ff             	or     $0xffffffff,%ebx
402f8d:	f0 0f c1 5f 08       	lock xadd %ebx,0x8(%edi)