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
405fe1:	e8 59 42 00 00       	call   0x40a23f
405fe6:	59                   	pop    %ecx
405fe7:	59                   	pop    %ecx
405fe8:	c3                   	ret
405fe9:	8b ff                	mov    %edi,%edi
405feb:	55                   	push   %ebp
405fec:	8b ec                	mov    %esp,%ebp
405fee:	83 ec 70             	sub    $0x70,%esp
405ff1:	a1 00 d0 40 00       	mov    0x40d000,%eax
405ff6:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
405ffb:	74 19                	je     0x406016
405ffd:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
406001:	72 13                	jb     0x406016
406003:	ff 70 14             	push   0x14(%eax)
406006:	ba 2c 18 40 00       	mov    $0x40182c,%edx
40600b:	ff 70 10             	push   0x10(%eax)
40600e:	6a 0a                	push   $0xa
406010:	59                   	pop    %ecx
406011:	e8 77 df ff ff       	call   0x403f8d
406016:	68 ff ff 00 80       	push   $0x8000ffff
40601b:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40601e:	e8 4b de ff ff       	call   0x403e6e
406023:	68 a4 c6 40 00       	push   $0x40c6a4
406028:	8d 45 94             	lea    -0x6c(%ebp),%eax
40602b:	50                   	push   %eax
40602c:	e8 09 4b 00 00       	call   0x40ab3a
406031:	cc                   	int3
406032:	81 09 00 80 00 00    	orl    $0x8000,(%ecx)
406038:	c3                   	ret
406039:	8b ff                	mov    %edi,%edi
40603b:	57                   	push   %edi
40603c:	8b 79 04             	mov    0x4(%ecx),%edi
40603f:	85 ff                	test   %edi,%edi
406041:	74 39                	je     0x40607c
406043:	53                   	push   %ebx
406044:	83 cb ff             	or     $0xffffffff,%ebx
406047:	8b c3                	mov    %ebx,%eax
406049:	f0 0f c1 47 04       	lock xadd %eax,0x4(%edi)
40604e:	75 2b                	jne    0x40607b
406050:	8b 07                	mov    (%edi),%eax
406052:	56                   	push   %esi
406053:	8b 30                	mov    (%eax),%esi
406055:	8b ce                	mov    %esi,%ecx
406057:	ff 15 f0 e1 40 00    	call   *0x40e1f0
40605d:	8b cf                	mov    %edi,%ecx
40605f:	ff d6                	call   *%esi
406061:	f0 0f c1 5f 08       	lock xadd %ebx,0x8(%edi)
406066:	4b                   	dec    %ebx
406067:	75 11                	jne    0x40607a
406069:	8b 07                	mov    (%edi),%eax
40606b:	8b 70 04             	mov    0x4(%eax),%esi
40606e:	8b ce                	mov    %esi,%ecx
406070:	ff 15 f0 e1 40 00    	call   *0x40e1f0
406076:	8b cf                	mov    %edi,%ecx
406078:	ff d6                	call   *%esi
40607a:	5e                   	pop    %esi
40607b:	5b                   	pop    %ebx
40607c:	5f                   	pop    %edi
40607d:	c3                   	ret
40607e:	6a 08                	push   $0x8
406080:	68 28 b6 40 00       	push   $0x40b628
406085:	e8 16 45 00 00       	call   0x40a5a0
40608a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40608e:	83 ec 18             	sub    $0x18,%esp
406091:	6a 06                	push   $0x6
406093:	59                   	pop    %ecx
406094:	8d 75 08             	lea    0x8(%ebp),%esi
406097:	8b fc                	mov    %esp,%edi
406099:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40609b:	e8 9b 05 00 00       	call   0x40663b
4060a0:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4060a7:	eb 19                	jmp    0x4060c2
4060a9:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4060ac:	e8 fa ef ff ff       	call   0x4050ab
4060b1:	c3                   	ret
4060b2:	8b 65 e8             	mov    -0x18(%ebp),%esp
4060b5:	cc                   	int3
4060b6:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4060bd:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
4060c2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4060c5:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4060cc:	59                   	pop    %ecx
4060cd:	5f                   	pop    %edi
4060ce:	5e                   	pop    %esi
4060cf:	5b                   	pop    %ebx
4060d0:	c9                   	leave
4060d1:	c2 18 00             	ret    $0x18
4060d4:	6a 08                	push   $0x8
4060d6:	68 48 b6 40 00       	push   $0x40b648
4060db:	e8 c0 44 00 00       	call   0x40a5a0
4060e0:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4060e4:	ff 75 08             	push   0x8(%ebp)
4060e7:	e8 86 06 00 00       	call   0x406772
4060ec:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4060f3:	eb 19                	jmp    0x40610e
4060f5:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4060f8:	e8 ae ef ff ff       	call   0x4050ab
4060fd:	c3                   	ret
4060fe:	8b 65 e8             	mov    -0x18(%ebp),%esp
406101:	cc                   	int3
406102:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406109:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
40610e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406111:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406118:	59                   	pop    %ecx
406119:	5f                   	pop    %edi
40611a:	5e                   	pop    %esi
40611b:	5b                   	pop    %ebx
40611c:	c9                   	leave
40611d:	c2 04 00             	ret    $0x4
406120:	6a 08                	push   $0x8
406122:	68 68 b6 40 00       	push   $0x40b668
406127:	e8 74 44 00 00       	call   0x40a5a0
40612c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406130:	83 ec 0c             	sub    $0xc,%esp
406133:	8d 75 08             	lea    0x8(%ebp),%esi
406136:	8b fc                	mov    %esp,%edi
406138:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406139:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40613a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40613b:	e8 99 06 00 00       	call   0x4067d9
406140:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406147:	eb 19                	jmp    0x406162
406149:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40614c:	e8 5a ef ff ff       	call   0x4050ab
406151:	c3                   	ret
406152:	8b 65 e8             	mov    -0x18(%ebp),%esp
406155:	cc                   	int3
406156:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40615d:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
406162:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406165:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40616c:	59                   	pop    %ecx
40616d:	5f                   	pop    %edi
40616e:	5e                   	pop    %esi
40616f:	5b                   	pop    %ebx
406170:	c9                   	leave
406171:	c2 0c 00             	ret    $0xc
406174:	6a 08                	push   $0x8
406176:	68 88 b6 40 00       	push   $0x40b688
40617b:	e8 20 44 00 00       	call   0x40a5a0
406180:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406184:	83 ec 40             	sub    $0x40,%esp
406187:	6a 10                	push   $0x10
406189:	59                   	pop    %ecx
40618a:	8d 75 08             	lea    0x8(%ebp),%esi
40618d:	8b fc                	mov    %esp,%edi
40618f:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
406191:	e8 7a 07 00 00       	call   0x406910
406196:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40619d:	eb 19                	jmp    0x4061b8
40619f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4061a2:	e8 04 ef ff ff       	call   0x4050ab
4061a7:	c3                   	ret
4061a8:	8b 65 e8             	mov    -0x18(%ebp),%esp
4061ab:	cc                   	int3
4061ac:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4061b3:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
4061b8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4061bb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4061c2:	59                   	pop    %ecx
4061c3:	5f                   	pop    %edi
4061c4:	5e                   	pop    %esi
4061c5:	5b                   	pop    %ebx
4061c6:	c9                   	leave
4061c7:	c2 40 00             	ret    $0x40
4061ca:	6a 08                	push   $0x8
4061cc:	68 a8 b6 40 00       	push   $0x40b6a8
4061d1:	e8 ca 43 00 00       	call   0x40a5a0
4061d6:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4061da:	ff 75 08             	push   0x8(%ebp)
4061dd:	e8 65 08 00 00       	call   0x406a47
4061e2:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4061e9:	eb 19                	jmp    0x406204
4061eb:	8b 4d ec             	mov    -0x14(%ebp),%ecx