403ad9:	6a 01                	push   $0x1
403adb:	8b cf                	mov    %edi,%ecx
403add:	e8 58 03 00 00       	call   0x403e3a
403ae2:	eb 0c                	jmp    0x403af0
403ae4:	85 f6                	test   %esi,%esi
403ae6:	75 0a                	jne    0x403af2
403ae8:	56                   	push   %esi
403ae9:	8b cf                	mov    %edi,%ecx
403aeb:	e8 e3 fd ff ff       	call   0x4038d3
403af0:	85 f6                	test   %esi,%esi
403af2:	5f                   	pop    %edi
403af3:	0f 95 c0             	setne  %al
403af6:	5e                   	pop    %esi
403af7:	c2 08 00             	ret    $0x8
403afa:	e8 b0 04 00 00       	call   0x403faf
403aff:	cc                   	int3
403b00:	f0 ff 41 04          	lock incl 0x4(%ecx)
403b04:	c3                   	ret
403b05:	56                   	push   %esi
403b06:	8b f1                	mov    %ecx,%esi
403b08:	57                   	push   %edi
403b09:	33 ff                	xor    %edi,%edi
403b0b:	57                   	push   %edi
403b0c:	8d 46 04             	lea    0x4(%esi),%eax
403b0f:	89 46 0c             	mov    %eax,0xc(%esi)
403b12:	8d 46 08             	lea    0x8(%esi),%eax
403b15:	89 46 10             	mov    %eax,0x10(%esi)
403b18:	8d 46 14             	lea    0x14(%esi),%eax
403b1b:	89 46 1c             	mov    %eax,0x1c(%esi)
403b1e:	8d 46 18             	lea    0x18(%esi),%eax
403b21:	89 46 20             	mov    %eax,0x20(%esi)
403b24:	8d 46 24             	lea    0x24(%esi),%eax
403b27:	89 46 2c             	mov    %eax,0x2c(%esi)
403b2a:	8d 46 28             	lea    0x28(%esi),%eax
403b2d:	57                   	push   %edi
403b2e:	89 46 30             	mov    %eax,0x30(%esi)
403b31:	e8 39 15 00 00       	call   0x40506f
403b36:	57                   	push   %edi
403b37:	57                   	push   %edi
403b38:	57                   	push   %edi
403b39:	8b ce                	mov    %esi,%ecx
403b3b:	e8 e7 14 00 00       	call   0x405027
403b40:	5f                   	pop    %edi
403b41:	5e                   	pop    %esi
403b42:	c3                   	ret
403b43:	8b 44 24 0c          	mov    0xc(%esp),%eax
403b47:	53                   	push   %ebx
403b48:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
403b4c:	56                   	push   %esi
403b4d:	8b f1                	mov    %ecx,%esi
403b4f:	83 66 38 00          	andl   $0x0,0x38(%esi)
403b53:	89 46 3c             	mov    %eax,0x3c(%esi)
403b56:	85 db                	test   %ebx,%ebx
403b58:	74 6a                	je     0x403bc4
403b5a:	83 e0 06             	and    $0x6,%eax
403b5d:	3c 06                	cmp    $0x6,%al
403b5f:	74 63                	je     0x403bc4
403b61:	57                   	push   %edi
403b62:	53                   	push   %ebx
403b63:	8d 4e 40             	lea    0x40(%esi),%ecx
403b66:	e8 6f 04 00 00       	call   0x403fda
403b6b:	53                   	push   %ebx
403b6c:	ff 74 24 14          	push   0x14(%esp)
403b70:	8b f8                	mov    %eax,%edi
403b72:	57                   	push   %edi
403b73:	e8 a6 07 00 00       	call   0x40431e
403b78:	83 c4 0c             	add    $0xc,%esp
403b7b:	8d 1c 5f             	lea    (%edi,%ebx,2),%ebx
403b7e:	f6 46 3c 04          	testb  $0x4,0x3c(%esi)
403b82:	89 5e 38             	mov    %ebx,0x38(%esi)
403b85:	75 0a                	jne    0x403b91
403b87:	53                   	push   %ebx
403b88:	57                   	push   %edi
403b89:	57                   	push   %edi
403b8a:	8b ce                	mov    %esi,%ecx
403b8c:	e8 96 14 00 00       	call   0x405027
403b91:	f6 46 3c 02          	testb  $0x2,0x3c(%esi)
403b95:	75 28                	jne    0x403bbf
403b97:	f6 46 3c 18          	testb  $0x18,0x3c(%esi)
403b9b:	8b c7                	mov    %edi,%eax
403b9d:	53                   	push   %ebx
403b9e:	0f 45 c3             	cmovne %ebx,%eax
403ba1:	8b ce                	mov    %esi,%ecx
403ba3:	50                   	push   %eax
403ba4:	57                   	push   %edi
403ba5:	e8 a1 14 00 00       	call   0x40504b
403baa:	8b ce                	mov    %esi,%ecx
403bac:	e8 a3 0b 00 00       	call   0x404754
403bb1:	85 c0                	test   %eax,%eax
403bb3:	75 0a                	jne    0x403bbf
403bb5:	57                   	push   %edi
403bb6:	50                   	push   %eax
403bb7:	57                   	push   %edi
403bb8:	8b ce                	mov    %esi,%ecx
403bba:	e8 68 14 00 00       	call   0x405027
403bbf:	83 4e 3c 01          	orl    $0x1,0x3c(%esi)
403bc3:	5f                   	pop    %edi
403bc4:	5e                   	pop    %esi
403bc5:	5b                   	pop    %ebx
403bc6:	c2 0c 00             	ret    $0xc
403bc9:	55                   	push   %ebp
403bca:	8b ec                	mov    %esp,%ebp
403bcc:	83 ec 3c             	sub    $0x3c,%esp
403bcf:	8d 45 f0             	lea    -0x10(%ebp),%eax
403bd2:	53                   	push   %ebx
403bd3:	56                   	push   %esi
403bd4:	57                   	push   %edi
403bd5:	8b d9                	mov    %ecx,%ebx
403bd7:	8b 4d 08             	mov    0x8(%ebp),%ecx
403bda:	50                   	push   %eax
403bdb:	e8 c8 fd ff ff       	call   0x4039a8
403be0:	8b 4d 08             	mov    0x8(%ebp),%ecx
403be3:	8d 7b 08             	lea    0x8(%ebx),%edi
403be6:	8b f0                	mov    %eax,%esi
403be8:	8d 45 c4             	lea    -0x3c(%ebp),%eax
403beb:	50                   	push   %eax
403bec:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bed:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bee:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bef:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bf0:	e8 d8 fd ff ff       	call   0x4039cd
403bf5:	6a 0b                	push   $0xb
403bf7:	59                   	pop    %ecx
403bf8:	8d 7b 18             	lea    0x18(%ebx),%edi
403bfb:	8b f0                	mov    %eax,%esi
403bfd:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
403bff:	5f                   	pop    %edi
403c00:	5e                   	pop    %esi
403c01:	5b                   	pop    %ebx
403c02:	8b e5                	mov    %ebp,%esp
403c04:	5d                   	pop    %ebp
403c05:	c2 04 00             	ret    $0x4
403c08:	56                   	push   %esi
403c09:	8b f1                	mov    %ecx,%esi
403c0b:	57                   	push   %edi
403c0c:	33 ff                	xor    %edi,%edi
403c0e:	57                   	push   %edi
403c0f:	89 7e 30             	mov    %edi,0x30(%esi)
403c12:	89 7e 08             	mov    %edi,0x8(%esi)
403c15:	89 7e 10             	mov    %edi,0x10(%esi)
403c18:	c7 46 14 01 02 00 00 	movl   $0x201,0x14(%esi)
403c1f:	c7 46 18 06 00 00 00 	movl   $0x6,0x18(%esi)
403c26:	89 7e 1c             	mov    %edi,0x1c(%esi)
403c29:	89 7e 20             	mov    %edi,0x20(%esi)
403c2c:	89 7e 24             	mov    %edi,0x24(%esi)
403c2f:	89 7e 28             	mov    %edi,0x28(%esi)
403c32:	89 7e 2c             	mov    %edi,0x2c(%esi)
403c35:	e8 4b 06 00 00       	call   0x404285
403c3a:	6a 08                	push   $0x8
403c3c:	e8 5a 2c 00 00       	call   0x40689b
403c41:	59                   	pop    %ecx
403c42:	85 c0                	test   %eax,%eax
403c44:	74 09                	je     0x403c4f
403c46:	8b c8                	mov    %eax,%ecx
403c48:	e8 cb f0 ff ff       	call   0x402d18
403c4d:	8b f8                	mov    %eax,%edi
403c4f:	89 7e 30             	mov    %edi,0x30(%esi)
403c52:	5f                   	pop    %edi
403c53:	5e                   	pop    %esi
403c54:	c3                   	ret
403c55:	89 11                	mov    %edx,(%ecx)
403c57:	c3                   	ret
403c58:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
403c5d:	53                   	push   %ebx
403c5e:	8b d9                	mov    %ecx,%ebx
403c60:	74 29                	je     0x403c8b
403c62:	e8 bd 00 00 00       	call   0x403d24
403c67:	39 44 24 08          	cmp    %eax,0x8(%esp)
403c6b:	72 1e                	jb     0x403c8b
403c6d:	56                   	push   %esi
403c6e:	8b cb                	mov    %ebx,%ecx
403c70:	e8 f4 00 00 00       	call   0x403d69
403c75:	8b cb                	mov    %ebx,%ecx
403c77:	8b f0                	mov    %eax,%esi
403c79:	e8 a6 00 00 00       	call   0x403d24
403c7e:	03 06                	add    (%esi),%eax
403c80:	5e                   	pop    %esi
403c81:	3b 44 24 08          	cmp    0x8(%esp),%eax
403c85:	76 04                	jbe    0x403c8b
403c87:	b0 01                	mov    $0x1,%al
403c89:	eb 02                	jmp    0x403c8d
403c8b:	32 c0                	xor    %al,%al
403c8d:	5b                   	pop    %ebx
403c8e:	c2 04 00             	ret    $0x4
403c91:	c3                   	ret
403c92:	b8 3a 6b 42 00       	mov    $0x426b3a,%eax
403c97:	e8 24 31 00 00       	call   0x406dc0
403c9c:	83 ec 20             	sub    $0x20,%esp
403c9f:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
403ca3:	56                   	push   %esi
403ca4:	8b f1                	mov    %ecx,%esi
403ca6:	89 75 f0             	mov    %esi,-0x10(%ebp)
403ca9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403cad:	8d 4d 10             	lea    0x10(%ebp),%ecx
403cb0:	e8 c1 08 00 00       	call   0x404576
403cb5:	84 c0                	test   %al,%al
403cb7:	75 0d                	jne    0x403cc6
403cb9:	68 b0 73 42 00       	push   $0x4273b0
403cbe:	8d 4d 10             	lea    0x10(%ebp),%ecx
403cc1:	e8 c8 03 00 00       	call   0x40408e
403cc6:	8d 45 d4             	lea    -0x2c(%ebp),%eax
403cc9:	50                   	push   %eax
403cca:	8d 4d 08             	lea    0x8(%ebp),%ecx
403ccd:	e8 b2 0b 00 00       	call   0x404884
403cd2:	50                   	push   %eax
403cd3:	8d 4d 10             	lea    0x10(%ebp),%ecx
403cd6:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
403cda:	e8 0c 03 00 00       	call   0x403feb
403cdf:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403ce2:	e8 50 f2 ff ff       	call   0x402f37
403ce7:	8d 45 10             	lea    0x10(%ebp),%eax
403cea:	8b ce                	mov    %esi,%ecx
403cec:	50                   	push   %eax
403ced:	e8 f8 ea ff ff       	call   0x4027ea
403cf2:	8d 4d 10             	lea    0x10(%ebp),%ecx
403cf5:	e8 3d f2 ff ff       	call   0x402f37
403cfa:	8b 4d f4             	mov    -0xc(%ebp),%ecx
403cfd:	8b c6                	mov    %esi,%eax
403cff:	5e                   	pop    %esi
403d00:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
403d07:	8b e5                	mov    %ebp,%esp
403d09:	5d                   	pop    %ebp
403d0a:	c2 20 00             	ret    $0x20
403d0d:	e8 fb fb ff ff       	call   0x40390d
403d12:	83 c0 08             	add    $0x8,%eax
403d15:	c3                   	ret
403d16:	e9 f2 fb ff ff       	jmp    0x40390d
403d1b:	e8 ed fb ff ff       	call   0x40390d
403d20:	83 c0 04             	add    $0x4,%eax
403d23:	c3                   	ret
403d24:	e8 da fb ff ff       	call   0x403903
403d29:	8b c8                	mov    %eax,%ecx
403d2b:	e9 0c 00 00 00       	jmp    0x403d3c
403d30:	e8 d3 fb ff ff       	call   0x403908
403d35:	8b c8                	mov    %eax,%ecx
403d37:	e9 12 00 00 00       	jmp    0x403d4e
403d3c:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
403d40:	72 09                	jb     0x403d4b
403d42:	8b 09                	mov    (%ecx),%ecx
403d44:	e8 f9 e6 ff ff       	call   0x402442
403d49:	8b c8                	mov    %eax,%ecx
403d4b:	8b c1                	mov    %ecx,%eax
403d4d:	c3                   	ret
403d4e:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
403d52:	72 09                	jb     0x403d5d
403d54:	8b 09                	mov    (%ecx),%ecx
403d56:	e8 e7 e6 ff ff       	call   0x402442
403d5b:	8b c8                	mov    %eax,%ecx
403d5d:	8b c1                	mov    %ecx,%eax
403d5f:	c3                   	ret
403d60:	e8 9e fb ff ff       	call   0x403903
403d65:	83 c0 14             	add    $0x14,%eax
403d68:	c3                   	ret
403d69:	e8 95 fb ff ff       	call   0x403903
403d6e:	83 c0 10             	add    $0x10,%eax
403d71:	c3                   	ret
403d72:	e8 91 fb ff ff       	call   0x403908
403d77:	83 c0 10             	add    $0x10,%eax
403d7a:	c3                   	ret
403d7b:	e9 8d fb ff ff       	jmp    0x40390d
403d80:	b8 44 6b 42 00       	mov    $0x426b44,%eax
403d85:	e8 36 30 00 00       	call   0x406dc0
403d8a:	51                   	push   %ecx
403d8b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403d8f:	53                   	push   %ebx
403d90:	56                   	push   %esi
403d91:	8b f1                	mov    %ecx,%esi
403d93:	57                   	push   %edi
403d94:	89 65 f0             	mov    %esp,-0x10(%ebp)
403d97:	8b 06                	mov    (%esi),%eax
403d99:	8b 78 04             	mov    0x4(%eax),%edi
403d9c:	03 fe                	add    %esi,%edi
403d9e:	8b cf                	mov    %edi,%ecx
403da0:	e8 a3 09 00 00       	call   0x404748
403da5:	84 c0                	test   %al,%al
403da7:	74 2e                	je     0x403dd7
403da9:	8b cf                	mov    %edi,%ecx
403dab:	e8 eb 08 00 00       	call   0x40469b
403db0:	a8 02                	test   $0x2,%al
403db2:	74 23                	je     0x403dd7
403db4:	8b cf                	mov    %edi,%ecx
403db6:	e8 6f 0e 00 00       	call   0x404c2a
403dbb:	8b c8                	mov    %eax,%ecx
403dbd:	e8 63 0e 00 00       	call   0x404c25
403dc2:	83 f8 ff             	cmp    $0xffffffff,%eax
403dc5:	75 10                	jne    0x403dd7
403dc7:	8b 06                	mov    (%esi),%eax
403dc9:	6a 00                	push   $0x0
403dcb:	6a 04                	push   $0x4
403dcd:	8b 48 04             	mov    0x4(%eax),%ecx
403dd0:	03 ce                	add    %esi,%ecx
403dd2:	e8 b8 12 00 00       	call   0x40508f
403dd7:	8b 4d f4             	mov    -0xc(%ebp),%ecx
403dda:	5f                   	pop    %edi
403ddb:	5e                   	pop    %esi
403ddc:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
403de3:	5b                   	pop    %ebx
403de4:	8b e5                	mov    %ebp,%esp
403de6:	5d                   	pop    %ebp
403de7:	c3                   	ret
403de8:	b8 d7 3d 40 00       	mov    $0x403dd7,%eax
403ded:	c3                   	ret
403dee:	8b 41 20             	mov    0x20(%ecx),%eax
403df1:	33 d2                	xor    %edx,%edx
403df3:	39 10                	cmp    %edx,(%eax)
403df5:	74 05                	je     0x403dfc
403df7:	8b 41 30             	mov    0x30(%ecx),%eax
403dfa:	8b 10                	mov    (%eax),%edx
403dfc:	8b c2                	mov    %edx,%eax
403dfe:	99                   	cltd
403dff:	c3                   	ret
403e00:	8b 41 30             	mov    0x30(%ecx),%eax
403e03:	ff 08                	decl   (%eax)
403e05:	8b 51 20             	mov    0x20(%ecx),%edx
403e08:	8b 02                	mov    (%edx),%eax
403e0a:	8d 48 02             	lea    0x2(%eax),%ecx
403e0d:	89 0a                	mov    %ecx,(%edx)
403e0f:	c3                   	ret
403e10:	56                   	push   %esi
403e11:	8b f1                	mov    %ecx,%esi
403e13:	83 3e 00             	cmpl   $0x0,(%esi)
403e16:	74 08                	je     0x403e20
403e18:	ff 36                	push   (%esi)
403e1a:	e8 2e 7f 00 00       	call   0x40bd4d
403e1f:	59                   	pop    %ecx
403e20:	83 26 00             	andl   $0x0,(%esi)
403e23:	5e                   	pop    %esi
403e24:	c3                   	ret
403e25:	56                   	push   %esi
403e26:	8b f1                	mov    %ecx,%esi
403e28:	83 3e 00             	cmpl   $0x0,(%esi)
403e2b:	74 08                	je     0x403e35
403e2d:	ff 36                	push   (%esi)
403e2f:	e8 19 7f 00 00       	call   0x40bd4d
403e34:	59                   	pop    %ecx
403e35:	83 26 00             	andl   $0x0,(%esi)
403e38:	5e                   	pop    %esi
403e39:	c3                   	ret
403e3a:	80 7c 24 04 00       	cmpb   $0x0,0x4(%esp)
403e3f:	56                   	push   %esi
403e40:	8b f1                	mov    %ecx,%esi
403e42:	74 67                	je     0x403eab
403e44:	e8 17 ff ff ff       	call   0x403d60
403e49:	83 38 10             	cmpl   $0x10,(%eax)
403e4c:	72 5d                	jb     0x403eab
403e4e:	53                   	push   %ebx
403e4f:	8b ce                	mov    %esi,%ecx
403e51:	e8 04 f8 ff ff       	call   0x40365a
403e56:	8b ce                	mov    %esi,%ecx
403e58:	8b 18                	mov    (%eax),%ebx