405bba:	e8 5f fb ff ff       	call   0x40571e
405bbf:	8b f0                	mov    %eax,%esi
405bc1:	89 75 e0             	mov    %esi,-0x20(%ebp)
405bc4:	85 f6                	test   %esi,%esi
405bc6:	74 04                	je     0x405bcc
405bc8:	f0 ff 46 04          	lock incl 0x4(%esi)
405bcc:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
405bd0:	85 f6                	test   %esi,%esi
405bd2:	74 3c                	je     0x405c10
405bd4:	8b cb                	mov    %ebx,%ecx
405bd6:	e8 f1 f8 ff ff       	call   0x4054cc
405bdb:	84 c0                	test   %al,%al
405bdd:	74 13                	je     0x405bf2
405bdf:	8b 06                	mov    (%esi),%eax
405be1:	8b 78 0c             	mov    0xc(%eax),%edi
405be4:	8b cf                	mov    %edi,%ecx
405be6:	ff 15 10 22 41 00    	call   *0x412210
405bec:	8b ce                	mov    %esi,%ecx
405bee:	ff d7                	call   *%edi
405bf0:	eb 08                	jmp    0x405bfa
405bf2:	53                   	push   %ebx
405bf3:	8b ce                	mov    %esi,%ecx
405bf5:	e8 dd 09 00 00       	call   0x4065d7
405bfa:	8b ce                	mov    %esi,%ecx
405bfc:	e8 32 05 00 00       	call   0x406133
405c01:	8b cb                	mov    %ebx,%ecx
405c03:	e8 2b 05 00 00       	call   0x406133
405c08:	33 c0                	xor    %eax,%eax
405c0a:	e8 0d 8a 00 00       	call   0x40e61c
405c0f:	c3                   	ret
405c10:	33 d2                	xor    %edx,%edx
405c12:	6a 0e                	push   $0xe
405c14:	42                   	inc    %edx
405c15:	59                   	pop    %ecx
405c16:	e8 c8 19 00 00       	call   0x4075e3
405c1b:	cc                   	int3
405c1c:	6a 20                	push   $0x20
405c1e:	b8 fc ec 40 00       	mov    $0x40ecfc,%eax
405c23:	e8 8f 8a 00 00       	call   0x40e6b7
405c28:	8b f2                	mov    %edx,%esi
405c2a:	8b f9                	mov    %ecx,%edi
405c2c:	89 7d e4             	mov    %edi,-0x1c(%ebp)
405c2f:	6a f4                	push   $0xfffffff4
405c31:	ff 15 cc 20 41 00    	call   *0x4120cc
405c37:	8b d8                	mov    %eax,%ebx
405c39:	33 c0                	xor    %eax,%eax
405c3b:	89 45 e8             	mov    %eax,-0x18(%ebp)
405c3e:	89 45 ec             	mov    %eax,-0x14(%ebp)
405c41:	89 45 fc             	mov    %eax,-0x4(%ebp)
405c44:	85 f6                	test   %esi,%esi
405c46:	74 3b                	je     0x405c83
405c48:	66 39 06             	cmp    %ax,(%esi)
405c4b:	74 36                	je     0x405c83
405c4d:	8b ce                	mov    %esi,%ecx
405c4f:	8d 51 02             	lea    0x2(%ecx),%edx
405c52:	66 8b 01             	mov    (%ecx),%ax
405c55:	83 c1 02             	add    $0x2,%ecx
405c58:	66 3b 45 e8          	cmp    -0x18(%ebp),%ax
405c5c:	75 f4                	jne    0x405c52
405c5e:	2b ca                	sub    %edx,%ecx
405c60:	d1 f9                	sar    $1,%ecx
405c62:	57                   	push   %edi
405c63:	56                   	push   %esi
405c64:	66 83 7c 4e fe 0a    	cmpw   $0xa,-0x2(%esi,%ecx,2)
405c6a:	75 07                	jne    0x405c73
405c6c:	68 40 23 40 00       	push   $0x402340
405c71:	eb 05                	jmp    0x405c78
405c73:	68 60 23 40 00       	push   $0x402360
405c78:	53                   	push   %ebx
405c79:	e8 b3 17 00 00       	call   0x407431
405c7e:	83 c4 10             	add    $0x10,%esp
405c81:	eb 0f                	jmp    0x405c92
405c83:	57                   	push   %edi
405c84:	68 84 23 40 00       	push   $0x402384
405c89:	53                   	push   %ebx
405c8a:	e8 a2 17 00 00       	call   0x407431
405c8f:	83 c4 0c             	add    $0xc,%esp
405c92:	8d 55 ec             	lea    -0x14(%ebp),%edx
405c95:	8b cf                	mov    %edi,%ecx
405c97:	e8 aa 1b 00 00       	call   0x407846
405c9c:	85 c0                	test   %eax,%eax
405c9e:	74 32                	je     0x405cd2
405ca0:	8b 75 ec             	mov    -0x14(%ebp),%esi
405ca3:	33 c0                	xor    %eax,%eax
405ca5:	88 45 d4             	mov    %al,-0x2c(%ebp)
405ca8:	a1 a8 20 41 00       	mov    0x4120a8,%eax
405cad:	89 45 d8             	mov    %eax,-0x28(%ebp)
405cb0:	89 75 dc             	mov    %esi,-0x24(%ebp)
405cb3:	56                   	push   %esi
405cb4:	68 a0 23 40 00       	push   $0x4023a0
405cb9:	53                   	push   %ebx
405cba:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405cbe:	e8 6e 17 00 00       	call   0x407431
405cc3:	83 c4 0c             	add    $0xc,%esp
405cc6:	33 c0                	xor    %eax,%eax
405cc8:	88 45 fc             	mov    %al,-0x4(%ebp)
405ccb:	56                   	push   %esi
405ccc:	ff 15 a8 20 41 00    	call   *0x4120a8
405cd2:	e8 45 89 00 00       	call   0x40e61c
405cd7:	c3                   	ret
405cd8:	8b 7d e0             	mov    -0x20(%ebp),%edi
405cdb:	ff 75 e4             	push   -0x1c(%ebp)
405cde:	8b 07                	mov    (%edi),%eax
405ce0:	8b 30                	mov    (%eax),%esi
405ce2:	8b ce                	mov    %esi,%ecx
405ce4:	ff 15 10 22 41 00    	call   *0x412210
405cea:	8b cf                	mov    %edi,%ecx
405cec:	ff d6                	call   *%esi
405cee:	50                   	push   %eax
405cef:	68 b0 23 40 00       	push   $0x4023b0
405cf4:	6a 02                	push   $0x2
405cf6:	e8 22 8e 00 00       	call   0x40eb1d
405cfb:	59                   	pop    %ecx
405cfc:	50                   	push   %eax
405cfd:	ff 15 d0 21 41 00    	call   *0x4121d0
405d03:	83 c4 10             	add    $0x10,%esp
405d06:	b8 d2 5c 40 00       	mov    $0x405cd2,%eax
405d0b:	c3                   	ret
405d0c:	68 1c 01 00 00       	push   $0x11c
405d11:	b8 17 ed 40 00       	mov    $0x40ed17,%eax
405d16:	e8 d2 89 00 00       	call   0x40e6ed
405d1b:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405d1e:	33 d2                	xor    %edx,%edx
405d20:	c7 05 f0 16 41 00 01 	movl   $0x1,0x4116f0
405d27:	00 00 00
405d2a:	be d8 16 41 00       	mov    $0x4116d8,%esi
405d2f:	89 15 e8 16 41 00    	mov    %edx,0x4116e8
405d35:	89 15 d8 16 41 00    	mov    %edx,0x4116d8
405d3b:	bf 00 17 41 00       	mov    $0x411700,%edi
405d40:	89 15 f4 16 41 00    	mov    %edx,0x4116f4
405d46:	c7 05 00 17 41 00 3c 	movl   $0x40243c,0x411700
405d4d:	24 40 00
405d50:	89 35 00 10 41 00    	mov    %esi,0x411000
405d56:	8b 0f                	mov    (%edi),%ecx
405d58:	8d 46 08             	lea    0x8(%esi),%eax
405d5b:	50                   	push   %eax
405d5c:	52                   	push   %edx
405d5d:	52                   	push   %edx
405d5e:	8d 85 e4 fe ff ff    	lea    -0x11c(%ebp),%eax
405d64:	89 8d e4 fe ff ff    	mov    %ecx,-0x11c(%ebp)
405d6a:	50                   	push   %eax
405d6b:	6a 01                	push   $0x1
405d6d:	51                   	push   %ecx
405d6e:	56                   	push   %esi
405d6f:	89 95 e8 fe ff ff    	mov    %edx,-0x118(%ebp)
405d75:	8d 7f 04             	lea    0x4(%edi),%edi
405d78:	68 20 56 40 00       	push   $0x405620
405d7d:	89 4e 20             	mov    %ecx,0x20(%esi)
405d80:	ff 15 f8 21 41 00    	call   *0x4121f8
405d86:	8b 36                	mov    (%esi),%esi
405d88:	6a 00                	push   $0x0
405d8a:	5a                   	pop    %edx
405d8b:	85 f6                	test   %esi,%esi
405d8d:	75 c7                	jne    0x405d56
405d8f:	33 f6                	xor    %esi,%esi
405d91:	56                   	push   %esi
405d92:	56                   	push   %esi
405d93:	6a 01                	push   $0x1
405d95:	56                   	push   %esi
405d96:	ff 15 a0 20 41 00    	call   *0x4120a0
405d9c:	ff 15 50 20 41 00    	call   *0x412050
405da2:	50                   	push   %eax
405da3:	68 38 24 40 00       	push   $0x402438
405da8:	8d 85 ec fe ff ff    	lea    -0x114(%ebp),%eax
405dae:	68 00 01 00 00       	push   $0x100
405db3:	50                   	push   %eax
405db4:	ff 15 bc 21 41 00    	call   *0x4121bc
405dba:	8d 85 ec fe ff ff    	lea    -0x114(%ebp),%eax
405dc0:	50                   	push   %eax
405dc1:	56                   	push   %esi
405dc2:	ff 15 b8 21 41 00    	call   *0x4121b8
405dc8:	83 c4 18             	add    $0x18,%esp
405dcb:	56                   	push   %esi
405dcc:	ff 15 c0 20 41 00    	call   *0x4120c0
405dd2:	8b 4d 08             	mov    0x8(%ebp),%ecx
405dd5:	8b d3                	mov    %ebx,%edx
405dd7:	89 75 fc             	mov    %esi,-0x4(%ebp)
405dda:	e8 1d fd ff ff       	call   0x405afc
405ddf:	eb 7c                	jmp    0x405e5d
405de1:	8b b5 e0 fe ff ff    	mov    -0x120(%ebp),%esi
405de7:	8d 56 04             	lea    0x4(%esi),%edx
405dea:	83 7a 14 08          	cmpl   $0x8,0x14(%edx)
405dee:	72 02                	jb     0x405df2
405df0:	8b 12                	mov    (%edx),%edx
405df2:	8b 0e                	mov    (%esi),%ecx
405df4:	e8 23 fe ff ff       	call   0x405c1c
405df9:	8b 06                	mov    (%esi),%eax
405dfb:	89 85 e8 fe ff ff    	mov    %eax,-0x118(%ebp)
405e01:	b8 07 5e 40 00       	mov    $0x405e07,%eax
405e06:	c3                   	ret
405e07:	8b 85 e8 fe ff ff    	mov    -0x118(%ebp),%eax
405e0d:	eb 4e                	jmp    0x405e5d
405e0f:	8b bd dc fe ff ff    	mov    -0x124(%ebp),%edi
405e15:	8b 07                	mov    (%edi),%eax
405e17:	8b 30                	mov    (%eax),%esi
405e19:	8b ce                	mov    %esi,%ecx
405e1b:	ff 15 10 22 41 00    	call   *0x412210
405e21:	8b cf                	mov    %edi,%ecx
405e23:	ff d6                	call   *%esi
405e25:	33 d2                	xor    %edx,%edx
405e27:	8b c8                	mov    %eax,%ecx
405e29:	e8 ee fd ff ff       	call   0x405c1c
405e2e:	8b 07                	mov    (%edi),%eax
405e30:	8b 30                	mov    (%eax),%esi
405e32:	8b ce                	mov    %esi,%ecx
405e34:	ff 15 10 22 41 00    	call   *0x412210
405e3a:	8b cf                	mov    %edi,%ecx
405e3c:	ff d6                	call   *%esi
405e3e:	89 85 e8 fe ff ff    	mov    %eax,-0x118(%ebp)
405e44:	b8 07 5e 40 00       	mov    $0x405e07,%eax
405e49:	c3                   	ret
405e4a:	6a 0e                	push   $0xe
405e4c:	33 d2                	xor    %edx,%edx
405e4e:	59                   	pop    %ecx
405e4f:	e8 c8 fd ff ff       	call   0x405c1c
405e54:	b8 5a 5e 40 00       	mov    $0x405e5a,%eax
405e59:	c3                   	ret
405e5a:	6a 0e                	push   $0xe
405e5c:	58                   	pop    %eax
405e5d:	e8 dd 87 00 00       	call   0x40e63f
405e62:	c3                   	ret
405e63:	80 39 00             	cmpb   $0x0,(%ecx)
405e66:	75 12                	jne    0x405e7a
405e68:	56                   	push   %esi
405e69:	ff 71 08             	push   0x8(%ecx)
405e6c:	8b 71 04             	mov    0x4(%ecx),%esi
405e6f:	8b ce                	mov    %esi,%ecx
405e71:	ff 15 10 22 41 00    	call   *0x412210
405e77:	ff d6                	call   *%esi
405e79:	5e                   	pop    %esi
405e7a:	c3                   	ret
405e7b:	8b ff                	mov    %edi,%edi
405e7d:	56                   	push   %esi
405e7e:	8b f1                	mov    %ecx,%esi
405e80:	8b 0e                	mov    (%esi),%ecx
405e82:	85 c9                	test   %ecx,%ecx
405e84:	74 05                	je     0x405e8b
405e86:	e8 a8 02 00 00       	call   0x406133
405e8b:	83 26 00             	andl   $0x0,(%esi)
405e8e:	5e                   	pop    %esi
405e8f:	c3                   	ret
405e90:	8b 01                	mov    (%ecx),%eax
405e92:	c2 04 00             	ret    $0x4
405e95:	e9 7d 00 00 00       	jmp    0x405f17
405e9a:	33 c0                	xor    %eax,%eax
405e9c:	89 01                	mov    %eax,(%ecx)
405e9e:	89 41 04             	mov    %eax,0x4(%ecx)
405ea1:	89 41 08             	mov    %eax,0x8(%ecx)
405ea4:	8b c1                	mov    %ecx,%eax
405ea6:	c3                   	ret
405ea7:	8b ff                	mov    %edi,%edi
405ea9:	56                   	push   %esi
405eaa:	57                   	push   %edi
405eab:	8b f9                	mov    %ecx,%edi
405ead:	8b 37                	mov    (%edi),%esi
405eaf:	85 f6                	test   %esi,%esi
405eb1:	74 2f                	je     0x405ee2
405eb3:	53                   	push   %ebx
405eb4:	8b 5f 04             	mov    0x4(%edi),%ebx
405eb7:	3b f3                	cmp    %ebx,%esi
405eb9:	74 14                	je     0x405ecf
405ebb:	6a 00                	push   $0x0
405ebd:	6a 01                	push   $0x1
405ebf:	8b ce                	mov    %esi,%ecx
405ec1:	e8 2a 06 00 00       	call   0x4064f0
405ec6:	83 c6 18             	add    $0x18,%esi
405ec9:	3b f3                	cmp    %ebx,%esi
405ecb:	75 ee                	jne    0x405ebb
405ecd:	8b 37                	mov    (%edi),%esi
405ecf:	56                   	push   %esi
405ed0:	ff 15 e4 21 41 00    	call   *0x4121e4
405ed6:	33 c0                	xor    %eax,%eax
405ed8:	59                   	pop    %ecx
405ed9:	89 07                	mov    %eax,(%edi)
405edb:	89 47 04             	mov    %eax,0x4(%edi)
405ede:	89 47 08             	mov    %eax,0x8(%edi)
405ee1:	5b                   	pop    %ebx
405ee2:	5f                   	pop    %edi
405ee3:	5e                   	pop    %esi
405ee4:	c3                   	ret
405ee5:	8b 01                	mov    (%ecx),%eax
405ee7:	83 c0 10             	add    $0x10,%eax
405eea:	c3                   	ret
405eeb:	8b ff                	mov    %edi,%edi
405eed:	56                   	push   %esi
405eee:	8b f1                	mov    %ecx,%esi
405ef0:	8b 06                	mov    (%esi),%eax
405ef2:	ff 70 04             	push   0x4(%eax)
405ef5:	e8 6e 01 00 00       	call   0x406068
405efa:	8b 06                	mov    (%esi),%eax
405efc:	89 40 04             	mov    %eax,0x4(%eax)
405eff:	8b 06                	mov    (%esi),%eax
405f01:	89 00                	mov    %eax,(%eax)
405f03:	8b 06                	mov    (%esi),%eax
405f05:	89 40 08             	mov    %eax,0x8(%eax)
405f08:	ff 36                	push   (%esi)
405f0a:	83 66 04 00          	andl   $0x0,0x4(%esi)
405f0e:	ff 15 e4 21 41 00    	call   *0x4121e4
405f14:	59                   	pop    %ecx
405f15:	5e                   	pop    %esi
405f16:	c3                   	ret
405f17:	8b ff                	mov    %edi,%edi
405f19:	56                   	push   %esi
405f1a:	8b f1                	mov    %ecx,%esi
405f1c:	83 3e 00             	cmpl   $0x0,(%esi)
405f1f:	74 13                	je     0x405f34
405f21:	ff 36                	push   (%esi)
405f23:	ff 15 e4 21 41 00    	call   *0x4121e4
405f29:	33 c0                	xor    %eax,%eax
405f2b:	59                   	pop    %ecx
405f2c:	89 06                	mov    %eax,(%esi)
405f2e:	89 46 04             	mov    %eax,0x4(%esi)
405f31:	89 46 08             	mov    %eax,0x8(%esi)
405f34:	5e                   	pop    %esi
405f35:	c3                   	ret
405f36:	8b ff                	mov    %edi,%edi
405f38:	55                   	push   %ebp
405f39:	8b ec                	mov    %esp,%ebp
405f3b:	56                   	push   %esi
405f3c:	57                   	push   %edi
405f3d:	8b 39                	mov    (%ecx),%edi
405f3f:	8b 77 04             	mov    0x4(%edi),%esi
405f42:	eb 19                	jmp    0x405f5d
405f44:	ff 75 0c             	push   0xc(%ebp)
405f47:	8d 46 10             	lea    0x10(%esi),%eax
405f4a:	50                   	push   %eax
405f4b:	e8 0b f4 ff ff       	call   0x40535b
405f50:	84 c0                	test   %al,%al
405f52:	74 05                	je     0x405f59
405f54:	8b 76 08             	mov    0x8(%esi),%esi
405f57:	eb 04                	jmp    0x405f5d
405f59:	8b fe                	mov    %esi,%edi
405f5b:	8b 36                	mov    (%esi),%esi
405f5d:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
405f61:	74 e1                	je     0x405f44
405f63:	8b 45 08             	mov    0x8(%ebp),%eax
405f66:	89 38                	mov    %edi,(%eax)
405f68:	5f                   	pop    %edi
405f69:	5e                   	pop    %esi
405f6a:	5d                   	pop    %ebp
405f6b:	c2 08 00             	ret    $0x8
405f6e:	8b ff                	mov    %edi,%edi
405f70:	55                   	push   %ebp
405f71:	8b ec                	mov    %esp,%ebp
405f73:	ff 75 08             	push   0x8(%ebp)
405f76:	ff 15 e4 21 41 00    	call   *0x4121e4
405f7c:	59                   	pop    %ecx
405f7d:	5d                   	pop    %ebp
405f7e:	c2 08 00             	ret    $0x8
405f81:	8b ff                	mov    %edi,%edi