403a33:	e8 98 61 00 00       	call   0x409bd0
403a38:	83 c4 0c             	add    $0xc,%esp
403a3b:	eb 15                	jmp    0x403a52
403a3d:	0f ae e8             	lfence
403a40:	8b 17                	mov    (%edi),%edx
403a42:	8b c8                	mov    %eax,%ecx
403a44:	53                   	push   %ebx
403a45:	ff 75 08             	push   0x8(%ebp)
403a48:	8b 52 f8             	mov    -0x8(%edx),%edx
403a4b:	e8 38 02 00 00       	call   0x403c88
403a50:	59                   	pop    %ecx
403a51:	59                   	pop    %ecx
403a52:	53                   	push   %ebx
403a53:	8b cf                	mov    %edi,%ecx
403a55:	e8 25 ff ff ff       	call   0x40397f
403a5a:	5e                   	pop    %esi
403a5b:	5f                   	pop    %edi
403a5c:	5b                   	pop    %ebx
403a5d:	c9                   	leave
403a5e:	c2 08 00             	ret    $0x8
403a61:	68 57 00 07 80       	push   $0x80070057
403a66:	e8 54 d6 ff ff       	call   0x4010bf
403a6b:	cc                   	int3
403a6c:	55                   	push   %ebp
403a6d:	8b ec                	mov    %esp,%ebp
403a6f:	83 ec 0c             	sub    $0xc,%esp
403a72:	8b 55 0c             	mov    0xc(%ebp),%edx
403a75:	8b c1                	mov    %ecx,%eax
403a77:	53                   	push   %ebx
403a78:	56                   	push   %esi
403a79:	57                   	push   %edi
403a7a:	8b 7d 08             	mov    0x8(%ebp),%edi
403a7d:	8b f7                	mov    %edi,%esi
403a7f:	89 45 f8             	mov    %eax,-0x8(%ebp)
403a82:	8b 00                	mov    (%eax),%eax
403a84:	2b f0                	sub    %eax,%esi
403a86:	d1 fe                	sar    $1,%esi
403a88:	8b 40 f4             	mov    -0xc(%eax),%eax
403a8b:	89 45 fc             	mov    %eax,-0x4(%ebp)
403a8e:	85 d2                	test   %edx,%edx
403a90:	78 5f                	js     0x403af1
403a92:	85 ff                	test   %edi,%edi
403a94:	75 04                	jne    0x403a9a
403a96:	33 db                	xor    %ebx,%ebx
403a98:	eb 11                	jmp    0x403aab
403a9a:	52                   	push   %edx
403a9b:	57                   	push   %edi
403a9c:	0f ae e8             	lfence
403a9f:	e8 b5 d0 00 00       	call   0x410b59
403aa4:	59                   	pop    %ecx
403aa5:	8b d8                	mov    %eax,%ebx
403aa7:	8b 45 fc             	mov    -0x4(%ebp),%eax
403aaa:	59                   	pop    %ecx
403aab:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
403ab0:	2b cb                	sub    %ebx,%ecx
403ab2:	3b c8                	cmp    %eax,%ecx
403ab4:	7c 3b                	jl     0x403af1
403ab6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
403ab9:	03 c3                	add    %ebx,%eax
403abb:	50                   	push   %eax
403abc:	0f ae e8             	lfence
403abf:	89 45 f4             	mov    %eax,-0xc(%ebp)
403ac2:	e8 19 fc ff ff       	call   0x4036e0
403ac7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403aca:	3b f1                	cmp    %ecx,%esi
403acc:	77 03                	ja     0x403ad1
403ace:	8d 3c 70             	lea    (%eax,%esi,2),%edi
403ad1:	53                   	push   %ebx
403ad2:	57                   	push   %edi
403ad3:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
403ad6:	8b d3                	mov    %ebx,%edx
403ad8:	e8 ab 01 00 00       	call   0x403c88
403add:	59                   	pop    %ecx
403ade:	59                   	pop    %ecx
403adf:	ff 75 f4             	push   -0xc(%ebp)
403ae2:	8b 4d f8             	mov    -0x8(%ebp),%ecx
403ae5:	e8 95 fe ff ff       	call   0x40397f
403aea:	5f                   	pop    %edi
403aeb:	5e                   	pop    %esi
403aec:	5b                   	pop    %ebx
403aed:	c9                   	leave
403aee:	c2 08 00             	ret    $0x8
403af1:	68 57 00 07 80       	push   $0x80070057
403af6:	e8 c4 d5 ff ff       	call   0x4010bf
403afb:	cc                   	int3
403afc:	55                   	push   %ebp
403afd:	8b ec                	mov    %esp,%ebp
403aff:	53                   	push   %ebx
403b00:	56                   	push   %esi
403b01:	57                   	push   %edi
403b02:	8b 7d 08             	mov    0x8(%ebp),%edi
403b05:	8b d9                	mov    %ecx,%ebx
403b07:	85 ff                	test   %edi,%edi
403b09:	74 1f                	je     0x403b2a
403b0b:	8b 07                	mov    (%edi),%eax
403b0d:	8b 70 0c             	mov    0xc(%eax),%esi
403b10:	8b ce                	mov    %esi,%ecx
403b12:	ff 15 50 c2 41 00    	call   *0x41c250
403b18:	8b cf                	mov    %edi,%ecx
403b1a:	ff d6                	call   *%esi
403b1c:	83 c0 10             	add    $0x10,%eax
403b1f:	5f                   	pop    %edi
403b20:	89 03                	mov    %eax,(%ebx)
403b22:	8b c3                	mov    %ebx,%eax
403b24:	5e                   	pop    %esi
403b25:	5b                   	pop    %ebx
403b26:	5d                   	pop    %ebp
403b27:	c2 04 00             	ret    $0x4
403b2a:	68 05 40 00 80       	push   $0x80004005
403b2f:	e8 8b d5 ff ff       	call   0x4010bf
403b34:	cc                   	int3
403b35:	53                   	push   %ebx
403b36:	8b d9                	mov    %ecx,%ebx
403b38:	56                   	push   %esi
403b39:	57                   	push   %edi
403b3a:	8b 3b                	mov    (%ebx),%edi
403b3c:	8b 07                	mov    (%edi),%eax
403b3e:	8b 70 10             	mov    0x10(%eax),%esi
403b41:	8b ce                	mov    %esi,%ecx
403b43:	ff 15 50 c2 41 00    	call   *0x41c250
403b49:	8b cf                	mov    %edi,%ecx
403b4b:	ff d6                	call   *%esi
403b4d:	8b f8                	mov    %eax,%edi
403b4f:	8d 43 0c             	lea    0xc(%ebx),%eax
403b52:	83 38 00             	cmpl   $0x0,(%eax)
403b55:	7c 0b                	jl     0x403b62
403b57:	3b 3b                	cmp    (%ebx),%edi
403b59:	75 07                	jne    0x403b62
403b5b:	8b f3                	mov    %ebx,%esi
403b5d:	f0 ff 00             	lock incl (%eax)
403b60:	eb 34                	jmp    0x403b96
403b62:	8b 07                	mov    (%edi),%eax
403b64:	6a 02                	push   $0x2
403b66:	ff 73 04             	push   0x4(%ebx)
403b69:	8b 30                	mov    (%eax),%esi
403b6b:	8b ce                	mov    %esi,%ecx
403b6d:	ff 15 50 c2 41 00    	call   *0x41c250
403b73:	8b cf                	mov    %edi,%ecx
403b75:	ff d6                	call   *%esi
403b77:	8b f0                	mov    %eax,%esi
403b79:	85 f6                	test   %esi,%esi
403b7b:	74 1f                	je     0x403b9c
403b7d:	8b 43 04             	mov    0x4(%ebx),%eax
403b80:	8d 4e 10             	lea    0x10(%esi),%ecx
403b83:	89 46 04             	mov    %eax,0x4(%esi)
403b86:	8d 43 10             	lea    0x10(%ebx),%eax
403b89:	8b 53 04             	mov    0x4(%ebx),%edx
403b8c:	42                   	inc    %edx
403b8d:	52                   	push   %edx
403b8e:	50                   	push   %eax
403b8f:	e8 f4 00 00 00       	call   0x403c88
403b94:	59                   	pop    %ecx
403b95:	59                   	pop    %ecx
403b96:	5f                   	pop    %edi
403b97:	8b c6                	mov    %esi,%eax
403b99:	5e                   	pop    %esi
403b9a:	5b                   	pop    %ebx
403b9b:	c3                   	ret
403b9c:	e8 ac 01 00 00       	call   0x403d4d
403ba1:	cc                   	int3
403ba2:	55                   	push   %ebp
403ba3:	8b ec                	mov    %esp,%ebp
403ba5:	56                   	push   %esi
403ba6:	8b 75 08             	mov    0x8(%ebp),%esi
403ba9:	57                   	push   %edi
403baa:	8b f9                	mov    %ecx,%edi
403bac:	8b 0f                	mov    (%edi),%ecx
403bae:	39 71 f4             	cmp    %esi,-0xc(%ecx)
403bb1:	7e 03                	jle    0x403bb6
403bb3:	8b 71 f4             	mov    -0xc(%ecx),%esi
403bb6:	83 79 fc 01          	cmpl   $0x1,-0x4(%ecx)
403bba:	7e 0a                	jle    0x403bc6
403bbc:	56                   	push   %esi
403bbd:	8b cf                	mov    %edi,%ecx
403bbf:	e8 39 00 00 00       	call   0x403bfd
403bc4:	eb 31                	jmp    0x403bf7
403bc6:	39 71 f8             	cmp    %esi,-0x8(%ecx)
403bc9:	7d 2c                	jge    0x403bf7
403bcb:	0f ae e8             	lfence
403bce:	8b 49 f8             	mov    -0x8(%ecx),%ecx
403bd1:	81 f9 00 00 00 40    	cmp    $0x40000000,%ecx
403bd7:	7e 07                	jle    0x403be0
403bd9:	b8 00 00 10 00       	mov    $0x100000,%eax
403bde:	eb 07                	jmp    0x403be7
403be0:	8b c1                	mov    %ecx,%eax
403be2:	99                   	cltd
403be3:	2b c2                	sub    %edx,%eax
403be5:	d1 f8                	sar    $1,%eax
403be7:	03 c8                	add    %eax,%ecx
403be9:	3b ce                	cmp    %esi,%ecx
403beb:	7d 02                	jge    0x403bef
403bed:	8b ce                	mov    %esi,%ecx
403bef:	51                   	push   %ecx
403bf0:	8b cf                	mov    %edi,%ecx
403bf2:	e8 08 01 00 00       	call   0x403cff
403bf7:	5f                   	pop    %edi
403bf8:	5e                   	pop    %esi
403bf9:	5d                   	pop    %ebp
403bfa:	c2 04 00             	ret    $0x4
403bfd:	55                   	push   %ebp
403bfe:	8b ec                	mov    %esp,%ebp
403c00:	83 ec 10             	sub    $0x10,%esp
403c03:	8b c1                	mov    %ecx,%eax
403c05:	89 45 f0             	mov    %eax,-0x10(%ebp)
403c08:	53                   	push   %ebx
403c09:	56                   	push   %esi
403c0a:	8b 00                	mov    (%eax),%eax
403c0c:	57                   	push   %edi
403c0d:	89 45 f8             	mov    %eax,-0x8(%ebp)
403c10:	8d 48 f0             	lea    -0x10(%eax),%ecx
403c13:	8b 39                	mov    (%ecx),%edi
403c15:	8b 41 04             	mov    0x4(%ecx),%eax
403c18:	89 45 fc             	mov    %eax,-0x4(%ebp)
403c1b:	8b 07                	mov    (%edi),%eax
403c1d:	8b 70 10             	mov    0x10(%eax),%esi
403c20:	8b ce                	mov    %esi,%ecx
403c22:	ff 15 50 c2 41 00    	call   *0x41c250
403c28:	8b cf                	mov    %edi,%ecx
403c2a:	ff d6                	call   *%esi
403c2c:	8b 5d 08             	mov    0x8(%ebp),%ebx
403c2f:	8b f8                	mov    %eax,%edi
403c31:	6a 02                	push   $0x2
403c33:	53                   	push   %ebx
403c34:	8b 0f                	mov    (%edi),%ecx
403c36:	8b 31                	mov    (%ecx),%esi
403c38:	8b ce                	mov    %esi,%ecx
403c3a:	ff 15 50 c2 41 00    	call   *0x41c250
403c40:	8b cf                	mov    %edi,%ecx
403c42:	ff d6                	call   *%esi
403c44:	89 45 f4             	mov    %eax,-0xc(%ebp)
403c47:	85 c0                	test   %eax,%eax
403c49:	74 37                	je     0x403c82
403c4b:	8b 7d fc             	mov    -0x4(%ebp),%edi
403c4e:	3b fb                	cmp    %ebx,%edi
403c50:	7d 02                	jge    0x403c54
403c52:	8b df                	mov    %edi,%ebx
403c54:	8d 53 01             	lea    0x1(%ebx),%edx
403c57:	8b 5d f8             	mov    -0x8(%ebp),%ebx
403c5a:	8d 70 10             	lea    0x10(%eax),%esi
403c5d:	52                   	push   %edx
403c5e:	53                   	push   %ebx
403c5f:	8b ce                	mov    %esi,%ecx
403c61:	e8 22 00 00 00       	call   0x403c88
403c66:	8b 45 f4             	mov    -0xc(%ebp),%eax
403c69:	59                   	pop    %ecx
403c6a:	59                   	pop    %ecx
403c6b:	8d 4b f0             	lea    -0x10(%ebx),%ecx
403c6e:	89 78 04             	mov    %edi,0x4(%eax)
403c71:	e8 8c d6 ff ff       	call   0x401302
403c76:	8b 45 f0             	mov    -0x10(%ebp),%eax
403c79:	5f                   	pop    %edi
403c7a:	89 30                	mov    %esi,(%eax)
403c7c:	5e                   	pop    %esi
403c7d:	5b                   	pop    %ebx
403c7e:	c9                   	leave
403c7f:	c2 04 00             	ret    $0x4
403c82:	e8 c6 00 00 00       	call   0x403d4d
403c87:	cc                   	int3
403c88:	55                   	push   %ebp
403c89:	8b ec                	mov    %esp,%ebp
403c8b:	8b 45 0c             	mov    0xc(%ebp),%eax
403c8e:	53                   	push   %ebx
403c8f:	56                   	push   %esi
403c90:	8d 1c 12             	lea    (%edx,%edx,1),%ebx
403c93:	8d 34 00             	lea    (%eax,%eax,1),%esi
403c96:	85 f6                	test   %esi,%esi
403c98:	74 32                	je     0x403ccc
403c9a:	85 c9                	test   %ecx,%ecx
403c9c:	75 13                	jne    0x403cb1
403c9e:	e8 30 b0 00 00       	call   0x40ecd3
403ca3:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
403ca9:	5e                   	pop    %esi
403caa:	5b                   	pop    %ebx
403cab:	5d                   	pop    %ebp
403cac:	e9 65 af 00 00       	jmp    0x40ec16
403cb1:	57                   	push   %edi
403cb2:	8b 7d 08             	mov    0x8(%ebp),%edi
403cb5:	85 ff                	test   %edi,%edi
403cb7:	74 17                	je     0x403cd0
403cb9:	3b de                	cmp    %esi,%ebx
403cbb:	72 13                	jb     0x403cd0
403cbd:	56                   	push   %esi
403cbe:	57                   	push   %edi
403cbf:	51                   	push   %ecx
403cc0:	0f ae e8             	lfence
403cc3:	e8 08 5f 00 00       	call   0x409bd0
403cc8:	83 c4 0c             	add    $0xc,%esp
403ccb:	5f                   	pop    %edi
403ccc:	5e                   	pop    %esi
403ccd:	5b                   	pop    %ebx
403cce:	5d                   	pop    %ebp
403ccf:	c3                   	ret
403cd0:	53                   	push   %ebx
403cd1:	6a 00                	push   $0x0
403cd3:	51                   	push   %ecx
403cd4:	e8 37 54 00 00       	call   0x409110
403cd9:	83 c4 0c             	add    $0xc,%esp
403cdc:	85 ff                	test   %edi,%edi
403cde:	75 0e                	jne    0x403cee
403ce0:	e8 ee af 00 00       	call   0x40ecd3
403ce5:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
403ceb:	5f                   	pop    %edi
403cec:	eb bb                	jmp    0x403ca9
403cee:	3b de                	cmp    %esi,%ebx
403cf0:	73 d9                	jae    0x403ccb
403cf2:	e8 dc af 00 00       	call   0x40ecd3
403cf7:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
403cfd:	eb ec                	jmp    0x403ceb
403cff:	55                   	push   %ebp
403d00:	8b ec                	mov    %esp,%ebp
403d02:	51                   	push   %ecx
403d03:	53                   	push   %ebx
403d04:	8b d9                	mov    %ecx,%ebx
403d06:	57                   	push   %edi
403d07:	8b 7d 08             	mov    0x8(%ebp),%edi
403d0a:	8b 13                	mov    (%ebx),%edx
403d0c:	83 ea 10             	sub    $0x10,%edx
403d0f:	8b 02                	mov    (%edx),%eax
403d11:	89 45 fc             	mov    %eax,-0x4(%ebp)
403d14:	39 7a 08             	cmp    %edi,0x8(%edx)
403d17:	7d 2e                	jge    0x403d47
403d19:	85 ff                	test   %edi,%edi
403d1b:	7e 2a                	jle    0x403d47
403d1d:	56                   	push   %esi
403d1e:	0f ae e8             	lfence
403d21:	8b 00                	mov    (%eax),%eax
403d23:	6a 02                	push   $0x2
403d25:	57                   	push   %edi
403d26:	52                   	push   %edx
403d27:	8b 70 08             	mov    0x8(%eax),%esi
403d2a:	8b ce                	mov    %esi,%ecx
403d2c:	ff 15 50 c2 41 00    	call   *0x41c250
403d32:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403d35:	ff d6                	call   *%esi
403d37:	5e                   	pop    %esi
403d38:	85 c0                	test   %eax,%eax
403d3a:	74 0b                	je     0x403d47
403d3c:	83 c0 10             	add    $0x10,%eax
403d3f:	5f                   	pop    %edi
403d40:	89 03                	mov    %eax,(%ebx)
403d42:	5b                   	pop    %ebx
403d43:	c9                   	leave
403d44:	c2 04 00             	ret    $0x4
403d47:	e8 01 00 00 00       	call   0x403d4d
403d4c:	cc                   	int3
403d4d:	68 0e 00 07 80       	push   $0x8007000e
403d52:	e8 68 d3 ff ff       	call   0x4010bf
403d57:	cc                   	int3
403d58:	55                   	push   %ebp
403d59:	8b ec                	mov    %esp,%ebp