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)
402f92:	4b                   	dec    %ebx
402f93:	75 19                	jne    0x402fae
402f95:	85 ff                	test   %edi,%edi
402f97:	74 15                	je     0x402fae
402f99:	8b 17                	mov    (%edi),%edx
402f9b:	56                   	push   %esi
402f9c:	6a 01                	push   $0x1
402f9e:	8b 72 14             	mov    0x14(%edx),%esi
402fa1:	8b ce                	mov    %esi,%ecx
402fa3:	ff 15 90 61 40 00    	call   *0x406190
402fa9:	8b cf                	mov    %edi,%ecx
402fab:	ff d6                	call   *%esi
402fad:	5e                   	pop    %esi
402fae:	5f                   	pop    %edi
402faf:	8b c3                	mov    %ebx,%eax
402fb1:	5b                   	pop    %ebx
402fb2:	5d                   	pop    %ebp
402fb3:	c2 04 00             	ret    $0x4
402fb6:	cc                   	int3
402fb7:	cc                   	int3
402fb8:	cc                   	int3
402fb9:	cc                   	int3
402fba:	cc                   	int3
402fbb:	cc                   	int3
402fbc:	cc                   	int3
402fbd:	cc                   	int3
402fbe:	cc                   	int3
402fbf:	cc                   	int3
402fc0:	33 c0                	xor    %eax,%eax
402fc2:	c2 08 00             	ret    $0x8
402fc5:	8b ff                	mov    %edi,%edi
402fc7:	55                   	push   %ebp
402fc8:	8b ec                	mov    %esp,%ebp
402fca:	83 ec 24             	sub    $0x24,%esp
402fcd:	53                   	push   %ebx
402fce:	56                   	push   %esi
402fcf:	57                   	push   %edi
402fd0:	33 ff                	xor    %edi,%edi
402fd2:	89 55 f8             	mov    %edx,-0x8(%ebp)
402fd5:	47                   	inc    %edi
402fd6:	8b d9                	mov    %ecx,%ebx
402fd8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402fdc:	85 ff                	test   %edi,%edi
402fde:	0f 84 de 00 00 00    	je     0x4030c2
402fe4:	8b 03                	mov    (%ebx),%eax
402fe6:	53                   	push   %ebx
402fe7:	8b 70 04             	mov    0x4(%eax),%esi
402fea:	8b ce                	mov    %esi,%ecx
402fec:	ff 15 90 61 40 00    	call   *0x406190
402ff2:	ff d6                	call   *%esi
402ff4:	68 ff 1c 00 00       	push   $0x1cff
402ff9:	6a ff                	push   $0xffffffff
402ffb:	33 f6                	xor    %esi,%esi
402ffd:	8d 45 f8             	lea    -0x8(%ebp),%eax
403000:	56                   	push   %esi
403001:	50                   	push   %eax
403002:	6a 01                	push   $0x1
403004:	ff 15 a0 60 40 00    	call   *0x4060a0
40300a:	85 c0                	test   %eax,%eax
40300c:	0f 84 8e 00 00 00    	je     0x4030a0
403012:	83 f8 01             	cmp    $0x1,%eax
403015:	74 74                	je     0x40308b
403017:	83 f8 ff             	cmp    $0xffffffff,%eax
40301a:	74 09                	je     0x403025
40301c:	c7 45 fc ff ff 00 80 	movl   $0x8000ffff,-0x4(%ebp)
403023:	eb 7d                	jmp    0x4030a2
403025:	e8 f8 fb ff ff       	call   0x402c22
40302a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40302d:	eb 73                	jmp    0x4030a2
40302f:	8b 45 e0             	mov    -0x20(%ebp),%eax
403032:	83 f8 12             	cmp    $0x12,%eax
403035:	74 69                	je     0x4030a0
403037:	3d 04 01 00 00       	cmp    $0x104,%eax
40303c:	74 23                	je     0x403061
40303e:	3d 05 01 00 00       	cmp    $0x105,%eax
403043:	74 1c                	je     0x403061
403045:	3d 06 01 00 00       	cmp    $0x106,%eax
40304a:	74 15                	je     0x403061
40304c:	3d 00 01 00 00       	cmp    $0x100,%eax
403051:	74 0e                	je     0x403061
403053:	3d 01 01 00 00       	cmp    $0x101,%eax
403058:	74 07                	je     0x403061
40305a:	3d 02 01 00 00       	cmp    $0x102,%eax
40305f:	75 16                	jne    0x403077
403061:	8b 03                	mov    (%ebx),%eax
403063:	8d 4d dc             	lea    -0x24(%ebp),%ecx
403066:	51                   	push   %ecx
403067:	53                   	push   %ebx
403068:	8b 70 24             	mov    0x24(%eax),%esi
40306b:	8b ce                	mov    %esi,%ecx
40306d:	ff 15 90 61 40 00    	call   *0x406190
403073:	ff d6                	call   *%esi
403075:	33 f6                	xor    %esi,%esi
403077:	8d 45 dc             	lea    -0x24(%ebp),%eax
40307a:	50                   	push   %eax
40307b:	ff 15 a4 60 40 00    	call   *0x4060a4
403081:	8d 45 dc             	lea    -0x24(%ebp),%eax
403084:	50                   	push   %eax
403085:	ff 15 9c 60 40 00    	call   *0x40609c
40308b:	6a 01                	push   $0x1
40308d:	56                   	push   %esi
40308e:	56                   	push   %esi
40308f:	56                   	push   %esi
403090:	8d 45 dc             	lea    -0x24(%ebp),%eax
403093:	50                   	push   %eax
403094:	ff 15 98 60 40 00    	call   *0x406098
40309a:	85 c0                	test   %eax,%eax
40309c:	75 91                	jne    0x40302f
40309e:	eb 02                	jmp    0x4030a2
4030a0:	8b fe                	mov    %esi,%edi
4030a2:	8b 03                	mov    (%ebx),%eax
4030a4:	53                   	push   %ebx
4030a5:	8b 70 08             	mov    0x8(%eax),%esi
4030a8:	8b ce                	mov    %esi,%ecx
4030aa:	ff 15 90 61 40 00    	call   *0x406190
4030b0:	ff d6                	call   *%esi
4030b2:	f7 d8                	neg    %eax
4030b4:	1b c0                	sbb    %eax,%eax
4030b6:	23 f8                	and    %eax,%edi
4030b8:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4030bc:	0f 8d 1a ff ff ff    	jge    0x402fdc
4030c2:	5f                   	pop    %edi
4030c3:	5e                   	pop    %esi
4030c4:	5b                   	pop    %ebx
4030c5:	c9                   	leave
4030c6:	c3                   	ret
4030c7:	cc                   	int3
4030c8:	cc                   	int3
4030c9:	cc                   	int3
4030ca:	cc                   	int3
4030cb:	cc                   	int3
4030cc:	cc                   	int3
4030cd:	cc                   	int3
4030ce:	cc                   	int3
4030cf:	cc                   	int3
4030d0:	8b ff                	mov    %edi,%edi
4030d2:	55                   	push   %ebp
4030d3:	8b ec                	mov    %esp,%ebp
4030d5:	83 ec 18             	sub    $0x18,%esp
4030d8:	a1 14 50 40 00       	mov    0x405014,%eax
4030dd:	33 c5                	xor    %ebp,%eax
4030df:	89 45 fc             	mov    %eax,-0x4(%ebp)
4030e2:	53                   	push   %ebx
4030e3:	8b 5d 08             	mov    0x8(%ebp),%ebx
4030e6:	56                   	push   %esi
4030e7:	57                   	push   %edi
4030e8:	53                   	push   %ebx
4030e9:	8b 03                	mov    (%ebx),%eax
4030eb:	8b 70 04             	mov    0x4(%eax),%esi
4030ee:	8b ce                	mov    %esi,%ecx
4030f0:	ff 15 90 61 40 00    	call   *0x406190
4030f6:	ff d6                	call   *%esi
4030f8:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
4030fc:	8d 73 08             	lea    0x8(%ebx),%esi
4030ff:	8d 7d ec             	lea    -0x14(%ebp),%edi
403102:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403103:	8d 45 e8             	lea    -0x18(%ebp),%eax
403106:	50                   	push   %eax
403107:	68 dc 14 40 00       	push   $0x4014dc
40310c:	6a 01                	push   $0x1
40310e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40310f:	8d 45 ec             	lea    -0x14(%ebp),%eax
403112:	6a 00                	push   $0x0
403114:	50                   	push   %eax
403115:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403116:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403117:	ff 15 d8 60 40 00    	call   *0x4060d8
40311d:	ff 75 e8             	push   -0x18(%ebp)
403120:	8b f0                	mov    %eax,%esi
403122:	8b cb                	mov    %ebx,%ecx
403124:	56                   	push   %esi
403125:	e8 45 fd ff ff       	call   0x402e6f
40312a:	85 f6                	test   %esi,%esi
40312c:	78 13                	js     0x403141
40312e:	8b 45 e8             	mov    -0x18(%ebp),%eax