406cab:	8b ec                	mov    %esp,%ebp
406cad:	53                   	push   %ebx
406cae:	56                   	push   %esi
406caf:	8b f1                	mov    %ecx,%esi
406cb1:	57                   	push   %edi
406cb2:	6a 2c                	push   $0x2c
406cb4:	5b                   	pop    %ebx
406cb5:	8b 56 10             	mov    0x10(%esi),%edx
406cb8:	8b 7e 0c             	mov    0xc(%esi),%edi
406cbb:	85 d2                	test   %edx,%edx
406cbd:	75 49                	jne    0x406d08
406cbf:	85 ff                	test   %edi,%edi
406cc1:	0f 84 9e 00 00 00    	je     0x406d65
406cc7:	6a 08                	push   $0x8
406cc9:	ba dc 00 00 00       	mov    $0xdc,%edx
406cce:	59                   	pop    %ecx
406ccf:	e8 c2 ee ff ff       	call   0x405b96
406cd4:	8b d0                	mov    %eax,%edx
406cd6:	89 56 10             	mov    %edx,0x10(%esi)
406cd9:	85 d2                	test   %edx,%edx
406cdb:	0f 84 84 00 00 00    	je     0x406d65
406ce1:	6a 05                	push   $0x5
406ce3:	58                   	pop    %eax
406ce4:	66 89 46 14          	mov    %ax,0x14(%esi)
406ce8:	33 c0                	xor    %eax,%eax
406cea:	66 89 46 16          	mov    %ax,0x16(%esi)
406cee:	8d 82 dc 00 00 00    	lea    0xdc(%edx),%eax
406cf4:	3b d0                	cmp    %eax,%edx
406cf6:	74 0c                	je     0x406d04
406cf8:	66 89 1a             	mov    %bx,(%edx)
406cfb:	03 d3                	add    %ebx,%edx
406cfd:	3b d0                	cmp    %eax,%edx
406cff:	75 f7                	jne    0x406cf8
406d01:	8b 56 10             	mov    0x10(%esi),%edx
406d04:	85 d2                	test   %edx,%edx
406d06:	74 5d                	je     0x406d65
406d08:	85 ff                	test   %edi,%edi
406d0a:	8b 7d 08             	mov    0x8(%ebp),%edi
406d0d:	74 29                	je     0x406d38
406d0f:	0f b7 46 14          	movzwl 0x14(%esi),%eax
406d13:	6b c8 2c             	imul   $0x2c,%eax,%ecx
406d16:	03 ca                	add    %edx,%ecx
406d18:	3b d1                	cmp    %ecx,%edx
406d1a:	74 1c                	je     0x406d38
406d1c:	8b 5e 0c             	mov    0xc(%esi),%ebx
406d1f:	83 c2 08             	add    $0x8,%edx
406d22:	39 5a fc             	cmp    %ebx,-0x4(%edx)
406d25:	76 07                	jbe    0x406d2e
406d27:	8b 02                	mov    (%edx),%eax
406d29:	3b 47 04             	cmp    0x4(%edi),%eax
406d2c:	74 37                	je     0x406d65
406d2e:	83 c2 2c             	add    $0x2c,%edx
406d31:	8d 42 f8             	lea    -0x8(%edx),%eax
406d34:	3b c1                	cmp    %ecx,%eax
406d36:	75 ea                	jne    0x406d22
406d38:	0f b7 46 16          	movzwl 0x16(%esi),%eax
406d3c:	33 d2                	xor    %edx,%edx
406d3e:	0f b7 4e 14          	movzwl 0x14(%esi),%ecx
406d42:	40                   	inc    %eax
406d43:	f7 f1                	div    %ecx
406d45:	8b 46 08             	mov    0x8(%esi),%eax
406d48:	33 c9                	xor    %ecx,%ecx
406d4a:	66 89 56 16          	mov    %dx,0x16(%esi)
406d4e:	41                   	inc    %ecx
406d4f:	f0 0f c1 08          	lock xadd %ecx,(%eax)
406d53:	41                   	inc    %ecx
406d54:	0f b7 46 16          	movzwl 0x16(%esi),%eax
406d58:	51                   	push   %ecx
406d59:	6b c8 2c             	imul   $0x2c,%eax,%ecx
406d5c:	57                   	push   %edi
406d5d:	03 4e 10             	add    0x10(%esi),%ecx
406d60:	e8 f9 fd ff ff       	call   0x406b5e
406d65:	5f                   	pop    %edi
406d66:	5e                   	pop    %esi
406d67:	5b                   	pop    %ebx
406d68:	5d                   	pop    %ebp
406d69:	c2 04 00             	ret    $0x4
406d6c:	8b ff                	mov    %edi,%edi
406d6e:	55                   	push   %ebp
406d6f:	8b ec                	mov    %esp,%ebp
406d71:	51                   	push   %ecx
406d72:	53                   	push   %ebx
406d73:	56                   	push   %esi
406d74:	57                   	push   %edi
406d75:	8b 3d 10 97 41 00    	mov    0x419710,%edi
406d7b:	33 db                	xor    %ebx,%ebx
406d7d:	8b f3                	mov    %ebx,%esi
406d7f:	85 ff                	test   %edi,%edi
406d81:	74 60                	je     0x406de3
406d83:	39 5f 04             	cmp    %ebx,0x4(%edi)
406d86:	75 1c                	jne    0x406da4
406d88:	8b 0f                	mov    (%edi),%ecx
406d8a:	8d 55 fc             	lea    -0x4(%ebp),%edx
406d8d:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406d90:	e8 7f 03 00 00       	call   0x407114
406d95:	85 c0                	test   %eax,%eax
406d97:	78 0b                	js     0x406da4
406d99:	39 5f 04             	cmp    %ebx,0x4(%edi)
406d9c:	75 06                	jne    0x406da4
406d9e:	8b 45 fc             	mov    -0x4(%ebp),%eax
406da1:	89 47 04             	mov    %eax,0x4(%edi)
406da4:	8b 7f 04             	mov    0x4(%edi),%edi
406da7:	8d 47 10             	lea    0x10(%edi),%eax
406daa:	f7 df                	neg    %edi
406dac:	1b ff                	sbb    %edi,%edi
406dae:	23 f8                	and    %eax,%edi
406db0:	74 31                	je     0x406de3
406db2:	ff 15 38 b1 41 00    	call   *0x41b138
406db8:	6a 0a                	push   $0xa
406dba:	5e                   	pop    %esi
406dbb:	33 d2                	xor    %edx,%edx
406dbd:	8b c8                	mov    %eax,%ecx
406dbf:	f7 f6                	div    %esi
406dc1:	8b 74 97 08          	mov    0x8(%edi,%edx,4),%esi
406dc5:	eb 07                	jmp    0x406dce
406dc7:	39 0e                	cmp    %ecx,(%esi)
406dc9:	74 1f                	je     0x406dea
406dcb:	8b 76 04             	mov    0x4(%esi),%esi
406dce:	85 f6                	test   %esi,%esi
406dd0:	75 f5                	jne    0x406dc7
406dd2:	8b f3                	mov    %ebx,%esi
406dd4:	85 f6                	test   %esi,%esi
406dd6:	74 0b                	je     0x406de3
406dd8:	39 5e 08             	cmp    %ebx,0x8(%esi)
406ddb:	75 06                	jne    0x406de3
406ddd:	8d 4f 04             	lea    0x4(%edi),%ecx
406de0:	89 4e 08             	mov    %ecx,0x8(%esi)
406de3:	5f                   	pop    %edi
406de4:	8b c6                	mov    %esi,%eax
406de6:	5e                   	pop    %esi
406de7:	5b                   	pop    %ebx
406de8:	c9                   	leave
406de9:	c3                   	ret
406dea:	83 c6 08             	add    $0x8,%esi
406ded:	eb e5                	jmp    0x406dd4
406def:	8b ff                	mov    %edi,%edi
406df1:	55                   	push   %ebp
406df2:	8b ec                	mov    %esp,%ebp
406df4:	51                   	push   %ecx
406df5:	53                   	push   %ebx
406df6:	8b 5d 08             	mov    0x8(%ebp),%ebx
406df9:	32 c0                	xor    %al,%al
406dfb:	56                   	push   %esi
406dfc:	57                   	push   %edi
406dfd:	8b f2                	mov    %edx,%esi
406dff:	8b f9                	mov    %ecx,%edi
406e01:	89 7d fc             	mov    %edi,-0x4(%ebp)
406e04:	c6 03 00             	movb   $0x0,(%ebx)
406e07:	85 f6                	test   %esi,%esi
406e09:	0f 84 91 00 00 00    	je     0x406ea0
406e0f:	ff 75 0c             	push   0xc(%ebp)
406e12:	8b 56 08             	mov    0x8(%esi),%edx
406e15:	53                   	push   %ebx
406e16:	e8 d4 ff ff ff       	call   0x406def
406e1b:	8b 56 10             	mov    0x10(%esi),%edx
406e1e:	85 d2                	test   %edx,%edx
406e20:	74 7e                	je     0x406ea0
406e22:	83 3a 00             	cmpl   $0x0,(%edx)
406e25:	75 0e                	jne    0x406e35
406e27:	33 c0                	xor    %eax,%eax
406e29:	40                   	inc    %eax
406e2a:	f0 0f c1 05 20 51 41 	lock xadd %eax,0x415120
406e31:	00
406e32:	40                   	inc    %eax
406e33:	89 02                	mov    %eax,(%edx)
406e35:	83 7f 2c 00          	cmpl   $0x0,0x2c(%edi)
406e39:	75 0b                	jne    0x406e46
406e3b:	8b f2                	mov    %edx,%esi
406e3d:	8d 7f 2c             	lea    0x2c(%edi),%edi
406e40:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e41:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e42:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e43:	8b 7d fc             	mov    -0x4(%ebp),%edi
406e46:	83 c7 38             	add    $0x38,%edi
406e49:	8b f2                	mov    %edx,%esi
406e4b:	8b cb                	mov    %ebx,%ecx
406e4d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e4e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e4f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
406e50:	8b 75 0c             	mov    0xc(%ebp),%esi
406e53:	8d 79 01             	lea    0x1(%ecx),%edi
406e56:	03 f3                	add    %ebx,%esi
406e58:	8a 01                	mov    (%ecx),%al
406e5a:	41                   	inc    %ecx
406e5b:	84 c0                	test   %al,%al
406e5d:	75 f9                	jne    0x406e58
406e5f:	2b cf                	sub    %edi,%ecx
406e61:	8b c6                	mov    %esi,%eax
406e63:	03 d9                	add    %ecx,%ebx
406e65:	2b c3                	sub    %ebx,%eax
406e67:	83 f8 02             	cmp    $0x2,%eax
406e6a:	7e 32                	jle    0x406e9e
406e6c:	c6 03 5c             	movb   $0x5c,(%ebx)
406e6f:	43                   	inc    %ebx
406e70:	8b 4a 04             	mov    0x4(%edx),%ecx
406e73:	8d 79 01             	lea    0x1(%ecx),%edi
406e76:	8a 01                	mov    (%ecx),%al
406e78:	41                   	inc    %ecx
406e79:	84 c0                	test   %al,%al
406e7b:	75 f9                	jne    0x406e76
406e7d:	2b cf                	sub    %edi,%ecx
406e7f:	2b f3                	sub    %ebx,%esi
406e81:	8d 79 01             	lea    0x1(%ecx),%edi
406e84:	3b fe                	cmp    %esi,%edi
406e86:	72 02                	jb     0x406e8a
406e88:	8b fe                	mov    %esi,%edi
406e8a:	57                   	push   %edi
406e8b:	ff 72 04             	push   0x4(%edx)
406e8e:	56                   	push   %esi
406e8f:	53                   	push   %ebx
406e90:	ff 15 74 b3 41 00    	call   *0x41b374
406e96:	83 c4 10             	add    $0x10,%esp
406e99:	c6 44 1f ff 00       	movb   $0x0,-0x1(%edi,%ebx,1)
406e9e:	b0 01                	mov    $0x1,%al
406ea0:	5f                   	pop    %edi
406ea1:	5e                   	pop    %esi
406ea2:	5b                   	pop    %ebx
406ea3:	c9                   	leave
406ea4:	c2 08 00             	ret    $0x8
406ea7:	8b ff                	mov    %edi,%edi
406ea9:	55                   	push   %ebp
406eaa:	8b ec                	mov    %esp,%ebp
406eac:	83 ec 0c             	sub    $0xc,%esp
406eaf:	53                   	push   %ebx
406eb0:	56                   	push   %esi
406eb1:	57                   	push   %edi
406eb2:	8b fa                	mov    %edx,%edi
406eb4:	33 db                	xor    %ebx,%ebx
406eb6:	8b c1                	mov    %ecx,%eax
406eb8:	88 5d f4             	mov    %bl,-0xc(%ebp)
406ebb:	89 45 fc             	mov    %eax,-0x4(%ebp)
406ebe:	88 1f                	mov    %bl,(%edi)
406ec0:	8b 35 20 97 41 00    	mov    0x419720,%esi
406ec6:	85 f6                	test   %esi,%esi
406ec8:	74 27                	je     0x406ef1
406eca:	ff 15 38 b1 41 00    	call   *0x41b138
406ed0:	33 d2                	xor    %edx,%edx
406ed2:	c7 45 f8 0a 00 00 00 	movl   $0xa,-0x8(%ebp)
406ed9:	8b c8                	mov    %eax,%ecx
406edb:	f7 75 f8             	divl   -0x8(%ebp)
406ede:	8b 34 96             	mov    (%esi,%edx,4),%esi
406ee1:	eb 07                	jmp    0x406eea
406ee3:	39 0e                	cmp    %ecx,(%esi)
406ee5:	74 7c                	je     0x406f63
406ee7:	8b 76 04             	mov    0x4(%esi),%esi
406eea:	85 f6                	test   %esi,%esi
406eec:	75 f5                	jne    0x406ee3
406eee:	8b 45 fc             	mov    -0x4(%ebp),%eax
406ef1:	8b f3                	mov    %ebx,%esi
406ef3:	85 f6                	test   %esi,%esi
406ef5:	74 4b                	je     0x406f42
406ef7:	39 1e                	cmp    %ebx,(%esi)
406ef9:	74 47                	je     0x406f42
406efb:	ff 75 08             	push   0x8(%ebp)
406efe:	88 1f                	mov    %bl,(%edi)
406f00:	8b c8                	mov    %eax,%ecx
406f02:	8b 16                	mov    (%esi),%edx
406f04:	57                   	push   %edi
406f05:	e8 e5 fe ff ff       	call   0x406def
406f0a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406f0d:	84 c0                	test   %al,%al
406f0f:	74 03                	je     0x406f14
406f11:	89 79 28             	mov    %edi,0x28(%ecx)
406f14:	8b 06                	mov    (%esi),%eax
406f16:	89 45 f8             	mov    %eax,-0x8(%ebp)
406f19:	8b 78 04             	mov    0x4(%eax),%edi
406f1c:	51                   	push   %ecx
406f1d:	8b 07                	mov    (%edi),%eax
406f1f:	8b 30                	mov    (%eax),%esi
406f21:	8b ce                	mov    %esi,%ecx
406f23:	ff 15 90 b3 41 00    	call   *0x41b390
406f29:	8b cf                	mov    %edi,%ecx
406f2b:	ff d6                	call   *%esi
406f2d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406f30:	0a d8                	or     %al,%bl
406f32:	8b 45 f8             	mov    -0x8(%ebp),%eax
406f35:	88 5d f4             	mov    %bl,-0xc(%ebp)
406f38:	8b 40 08             	mov    0x8(%eax),%eax
406f3b:	89 45 f8             	mov    %eax,-0x8(%ebp)
406f3e:	85 c0                	test   %eax,%eax
406f40:	75 d7                	jne    0x406f19
406f42:	8b 35 28 97 41 00    	mov    0x419728,%esi
406f48:	85 f6                	test   %esi,%esi
406f4a:	74 10                	je     0x406f5c
406f4c:	ff 75 fc             	push   -0x4(%ebp)
406f4f:	8b ce                	mov    %esi,%ecx
406f51:	ff 75 f4             	push   -0xc(%ebp)
406f54:	ff 15 90 b3 41 00    	call   *0x41b390
406f5a:	ff d6                	call   *%esi
406f5c:	5f                   	pop    %edi
406f5d:	5e                   	pop    %esi
406f5e:	5b                   	pop    %ebx
406f5f:	c9                   	leave
406f60:	c2 04 00             	ret    $0x4
406f63:	8b 45 fc             	mov    -0x4(%ebp),%eax
406f66:	83 c6 08             	add    $0x8,%esi
406f69:	eb 88                	jmp    0x406ef3
406f6b:	cc                   	int3
406f6c:	cc                   	int3
406f6d:	cc                   	int3
406f6e:	cc                   	int3
406f6f:	cc                   	int3
406f70:	8b ff                	mov    %edi,%edi
406f72:	55                   	push   %ebp
406f73:	8b ec                	mov    %esp,%ebp
406f75:	ff 75 10             	push   0x10(%ebp)
406f78:	8b 55 0c             	mov    0xc(%ebp),%edx
406f7b:	8b 4d 08             	mov    0x8(%ebp),%ecx
406f7e:	e8 24 ff ff ff       	call   0x406ea7
406f83:	ff 15 38 b1 41 00    	call   *0x41b138
406f89:	39 05 d0 97 41 00    	cmp    %eax,0x4197d0
406f8f:	74 3a                	je     0x406fcb
406f91:	33 c9                	xor    %ecx,%ecx
406f93:	41                   	inc    %ecx
406f94:	f0 0f c1 0d dc 97 41 	lock xadd %ecx,0x4197dc
406f9b:	00
406f9c:	41                   	inc    %ecx
406f9d:	83 f9 04             	cmp    $0x4,%ecx
406fa0:	7d 22                	jge    0x406fc4
406fa2:	a3 d0 97 41 00       	mov    %eax,0x4197d0
406fa7:	e8 c0 fd ff ff       	call   0x406d6c
406fac:	85 c0                	test   %eax,%eax
406fae:	74 0a                	je     0x406fba
406fb0:	ff 75 08             	push   0x8(%ebp)
406fb3:	8b c8                	mov    %eax,%ecx
406fb5:	e8 ee fc ff ff       	call   0x406ca8
406fba:	c7 05 d0 97 41 00 00 	movl   $0x0,0x4197d0
406fc1:	00 00 00
406fc4:	f0 ff 0d dc 97 41 00 	lock decl 0x4197dc
406fcb:	5d                   	pop    %ebp
406fcc:	c2 0c 00             	ret    $0xc
406fcf:	a1 c8 97 41 00       	mov    0x4197c8,%eax
406fd4:	85 c0                	test   %eax,%eax
406fd6:	75 10                	jne    0x406fe8
406fd8:	68 18 27 40 00       	push   $0x402718
406fdd:	ff 15 6c b1 41 00    	call   *0x41b16c
406fe3:	a3 c8 97 41 00       	mov    %eax,0x4197c8
406fe8:	c3                   	ret
406fe9:	cc                   	int3
406fea:	cc                   	int3
406feb:	cc                   	int3
406fec:	cc                   	int3
406fed:	cc                   	int3
406fee:	cc                   	int3
406fef:	cc                   	int3
406ff0:	8b ff                	mov    %edi,%edi
406ff2:	55                   	push   %ebp
406ff3:	8b ec                	mov    %esp,%ebp
406ff5:	56                   	push   %esi
406ff6:	8b 35 7c 97 41 00    	mov    0x41977c,%esi