406a50:	50                   	push   %eax
406a51:	ff 15 d8 b1 44 00    	call   *0x44b1d8
406a57:	85 c0                	test   %eax,%eax
406a59:	75 35                	jne    0x406a90
406a5b:	ff 15 e8 b0 44 00    	call   *0x44b0e8
406a61:	0f b7 f0             	movzwl %ax,%esi
406a64:	81 ce 00 00 07 80    	or     $0x80070000,%esi
406a6a:	85 c0                	test   %eax,%eax
406a6c:	0f 4e f0             	cmovle %eax,%esi
406a6f:	b8 05 40 00 80       	mov    $0x80004005,%eax
406a74:	85 f6                	test   %esi,%esi
406a76:	0f 49 f0             	cmovns %eax,%esi
406a79:	56                   	push   %esi
406a7a:	68 b4 07 00 00       	push   $0x7b4
406a7f:	68 bc cc 44 00       	push   $0x44ccbc
406a84:	e8 4a cd ff ff       	call   0x4037d3
406a89:	68 e8 d8 44 00       	push   $0x44d8e8
406a8e:	eb 1a                	jmp    0x406aaa
406a90:	6a 00                	push   $0x0
406a92:	8d 85 ec fb ff ff    	lea    -0x414(%ebp),%eax
406a98:	50                   	push   %eax
406a99:	56                   	push   %esi
406a9a:	e8 55 98 01 00       	call   0x4202f4
406a9f:	8b f0                	mov    %eax,%esi
406aa1:	85 f6                	test   %esi,%esi
406aa3:	79 0d                	jns    0x406ab2
406aa5:	68 fc ca 44 00       	push   $0x44cafc
406aaa:	56                   	push   %esi
406aab:	e8 7f 96 03 00       	call   0x44012f
406ab0:	59                   	pop    %ecx
406ab1:	59                   	pop    %ecx
406ab2:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406ab5:	8b c6                	mov    %esi,%eax
406ab7:	5f                   	pop    %edi
406ab8:	33 cd                	xor    %ebp,%ecx
406aba:	5e                   	pop    %esi
406abb:	e8 76 73 02 00       	call   0x42de36
406ac0:	8b e5                	mov    %ebp,%esp
406ac2:	5d                   	pop    %ebp
406ac3:	c2 08 00             	ret    $0x8
406ac6:	55                   	push   %ebp
406ac7:	8b ec                	mov    %esp,%ebp
406ac9:	51                   	push   %ecx
406aca:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406ace:	53                   	push   %ebx
406acf:	56                   	push   %esi
406ad0:	57                   	push   %edi
406ad1:	8b 7d 08             	mov    0x8(%ebp),%edi
406ad4:	8b 57 18             	mov    0x18(%edi),%edx
406ad7:	39 57 1c             	cmp    %edx,0x1c(%edi)
406ada:	0f 85 e4 00 00 00    	jne    0x406bc4
406ae0:	8d 4a 03             	lea    0x3(%edx),%ecx
406ae3:	83 c8 ff             	or     $0xffffffff,%eax
406ae6:	3b ca                	cmp    %edx,%ecx
406ae8:	bb 16 02 07 80       	mov    $0x80070216,%ebx
406aed:	0f 43 c1             	cmovae %ecx,%eax
406af0:	1b f6                	sbb    %esi,%esi
406af2:	23 f3                	and    %ebx,%esi
406af4:	89 47 18             	mov    %eax,0x18(%edi)
406af7:	3b ca                	cmp    %edx,%ecx
406af9:	73 1a                	jae    0x406b15
406afb:	56                   	push   %esi
406afc:	68 b7 05 00 00       	push   $0x5b7
406b01:	68 bc cc 44 00       	push   $0x44ccbc
406b06:	e8 c8 cc ff ff       	call   0x4037d3
406b0b:	68 dc d4 44 00       	push   $0x44d4dc
406b10:	e9 02 01 00 00       	jmp    0x406c17
406b15:	83 7f 20 00          	cmpl   $0x0,0x20(%edi)
406b19:	0f 84 0b 01 00 00    	je     0x406c2a
406b1f:	8d 45 fc             	lea    -0x4(%ebp),%eax
406b22:	50                   	push   %eax
406b23:	8b 47 18             	mov    0x18(%edi),%eax
406b26:	6a 38                	push   $0x38
406b28:	59                   	pop    %ecx
406b29:	f7 e1                	mul    %ecx
406b2b:	52                   	push   %edx
406b2c:	50                   	push   %eax
406b2d:	e8 fc 02 00 00       	call   0x406e2e
406b32:	8b f0                	mov    %eax,%esi
406b34:	85 f6                	test   %esi,%esi
406b36:	79 1a                	jns    0x406b52
406b38:	56                   	push   %esi
406b39:	68 bc 05 00 00       	push   $0x5bc
406b3e:	68 bc cc 44 00       	push   $0x44ccbc
406b43:	e8 8b cc ff ff       	call   0x4037d3
406b48:	68 08 d5 44 00       	push   $0x44d508
406b4d:	e9 c5 00 00 00       	jmp    0x406c17
406b52:	6a 00                	push   $0x0
406b54:	ff 75 fc             	push   -0x4(%ebp)
406b57:	ff 77 20             	push   0x20(%edi)
406b5a:	e8 13 cf ff ff       	call   0x403a72
406b5f:	8b d0                	mov    %eax,%edx
406b61:	85 d2                	test   %edx,%edx
406b63:	75 22                	jne    0x406b87
406b65:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
406b6a:	57                   	push   %edi
406b6b:	68 bf 05 00 00       	push   $0x5bf
406b70:	68 bc cc 44 00       	push   $0x44ccbc
406b75:	8b f7                	mov    %edi,%esi
406b77:	e8 57 cc ff ff       	call   0x4037d3
406b7c:	68 44 d5 44 00       	push   $0x44d544
406b81:	57                   	push   %edi
406b82:	e9 91 00 00 00       	jmp    0x406c18
406b87:	8b 47 18             	mov    0x18(%edi),%eax
406b8a:	8b 4f 1c             	mov    0x1c(%edi),%ecx
406b8d:	3b c1                	cmp    %ecx,%eax
406b8f:	73 1a                	jae    0x406bab
406b91:	53                   	push   %ebx
406b92:	68 c5 05 00 00       	push   $0x5c5
406b97:	68 bc cc 44 00       	push   $0x44ccbc
406b9c:	8b f3                	mov    %ebx,%esi
406b9e:	e8 30 cc ff ff       	call   0x4037d3
406ba3:	68 70 d5 44 00       	push   $0x44d570
406ba8:	53                   	push   %ebx
406ba9:	eb 6d                	jmp    0x406c18
406bab:	2b c1                	sub    %ecx,%eax
406bad:	89 57 20             	mov    %edx,0x20(%edi)
406bb0:	6b c0 38             	imul   $0x38,%eax,%eax
406bb3:	50                   	push   %eax
406bb4:	6b c1 38             	imul   $0x38,%ecx,%eax
406bb7:	6a 00                	push   $0x0
406bb9:	03 c2                	add    %edx,%eax
406bbb:	50                   	push   %eax
406bbc:	e8 af 8a 02 00       	call   0x42f670
406bc1:	83 c4 0c             	add    $0xc,%esp
406bc4:	8b 57 1c             	mov    0x1c(%edi),%edx
406bc7:	8b 5d 10             	mov    0x10(%ebp),%ebx
406bca:	2b d3                	sub    %ebx,%edx
406bcc:	74 2a                	je     0x406bf8
406bce:	8b 4f 20             	mov    0x20(%edi),%ecx
406bd1:	6b f3 38             	imul   $0x38,%ebx,%esi
406bd4:	6b c2 38             	imul   $0x38,%edx,%eax
406bd7:	03 ce                	add    %esi,%ecx
406bd9:	50                   	push   %eax
406bda:	51                   	push   %ecx
406bdb:	8d 41 38             	lea    0x38(%ecx),%eax
406bde:	50                   	push   %eax
406bdf:	e8 8c 7f 02 00       	call   0x42eb70
406be4:	6a 38                	push   $0x38
406be6:	58                   	pop    %eax
406be7:	50                   	push   %eax
406be8:	8b 47 20             	mov    0x20(%edi),%eax
406beb:	03 c6                	add    %esi,%eax
406bed:	6a 00                	push   $0x0
406bef:	50                   	push   %eax
406bf0:	e8 7b 8a 02 00       	call   0x42f670
406bf5:	83 c4 18             	add    $0x18,%esp
406bf8:	ff 47 1c             	incl   0x1c(%edi)
406bfb:	6b c3 38             	imul   $0x38,%ebx,%eax
406bfe:	6a 00                	push   $0x0
406c00:	ff 75 0c             	push   0xc(%ebp)
406c03:	03 47 20             	add    0x20(%edi),%eax
406c06:	50                   	push   %eax
406c07:	e8 99 b5 ff ff       	call   0x4021a5
406c0c:	8b f0                	mov    %eax,%esi
406c0e:	85 f6                	test   %esi,%esi
406c10:	79 0d                	jns    0x406c1f
406c12:	68 d8 d5 44 00       	push   $0x44d5d8
406c17:	56                   	push   %esi
406c18:	e8 12 95 03 00       	call   0x44012f
406c1d:	59                   	pop    %ecx
406c1e:	59                   	pop    %ecx
406c1f:	5f                   	pop    %edi
406c20:	8b c6                	mov    %esi,%eax
406c22:	5e                   	pop    %esi
406c23:	5b                   	pop    %ebx
406c24:	8b e5                	mov    %ebp,%esp
406c26:	5d                   	pop    %ebp
406c27:	c2 0c 00             	ret    $0xc
406c2a:	6b c0 38             	imul   $0x38,%eax,%eax
406c2d:	6a 01                	push   $0x1
406c2f:	50                   	push   %eax
406c30:	e8 9f cc ff ff       	call   0x4038d4
406c35:	89 47 20             	mov    %eax,0x20(%edi)
406c38:	85 c0                	test   %eax,%eax
406c3a:	75 88                	jne    0x406bc4
406c3c:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
406c41:	57                   	push   %edi
406c42:	68 ce 05 00 00       	push   $0x5ce
406c47:	68 bc cc 44 00       	push   $0x44ccbc
406c4c:	8b f7                	mov    %edi,%esi
406c4e:	e8 80 cb ff ff       	call   0x4037d3
406c53:	68 b0 d5 44 00       	push   $0x44d5b0
406c58:	e9 24 ff ff ff       	jmp    0x406b81
406c5d:	55                   	push   %ebp
406c5e:	8b ec                	mov    %esp,%ebp
406c60:	83 ec 0c             	sub    $0xc,%esp
406c63:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406c67:	53                   	push   %ebx
406c68:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c6b:	56                   	push   %esi
406c6c:	57                   	push   %edi
406c6d:	53                   	push   %ebx
406c6e:	ff 15 b4 b1 44 00    	call   *0x44b1b4
406c74:	8b 7d 0c             	mov    0xc(%ebp),%edi
406c77:	8d 45 fc             	lea    -0x4(%ebp),%eax
406c7a:	50                   	push   %eax
406c7b:	57                   	push   %edi
406c7c:	53                   	push   %ebx
406c7d:	e8 34 e9 ff ff       	call   0x4055b6
406c82:	8b f0                	mov    %eax,%esi
406c84:	85 f6                	test   %esi,%esi
406c86:	79 14                	jns    0x406c9c
406c88:	57                   	push   %edi
406c89:	68 70 cc 44 00       	push   $0x44cc70
406c8e:	56                   	push   %esi
406c8f:	e8 9b 94 03 00       	call   0x44012f
406c94:	83 c4 0c             	add    $0xc,%esp
406c97:	e9 65 01 00 00       	jmp    0x406e01
406c9c:	8b 45 fc             	mov    -0x4(%ebp),%eax
406c9f:	83 fe 01             	cmp    $0x1,%esi
406ca2:	75 16                	jne    0x406cba
406ca4:	50                   	push   %eax
406ca5:	57                   	push   %edi
406ca6:	53                   	push   %ebx
406ca7:	e8 1a fe ff ff       	call   0x406ac6
406cac:	8b f0                	mov    %eax,%esi
406cae:	85 f6                	test   %esi,%esi
406cb0:	79 51                	jns    0x406d03
406cb2:	57                   	push   %edi
406cb3:	68 98 cc 44 00       	push   $0x44cc98
406cb8:	eb d4                	jmp    0x406c8e
406cba:	8b 53 20             	mov    0x20(%ebx),%edx
406cbd:	6b c8 38             	imul   $0x38,%eax,%ecx
406cc0:	8b 74 11 2c          	mov    0x2c(%ecx,%edx,1),%esi
406cc4:	85 f6                	test   %esi,%esi
406cc6:	7e 3e                	jle    0x406d06
406cc8:	83 7d 18 01          	cmpl   $0x1,0x18(%ebp)
406ccc:	74 38                	je     0x406d06
406cce:	83 7d 18 02          	cmpl   $0x2,0x18(%ebp)
406cd2:	75 07                	jne    0x406cdb
406cd4:	83 7c 11 28 00       	cmpl   $0x0,0x28(%ecx,%edx,1)
406cd9:	75 2b                	jne    0x406d06
406cdb:	83 7d 18 03          	cmpl   $0x3,0x18(%ebp)
406cdf:	75 05                	jne    0x406ce6
406ce1:	83 fe 02             	cmp    $0x2,%esi
406ce4:	75 20                	jne    0x406d06
406ce6:	be 57 00 07 80       	mov    $0x80070057,%esi
406ceb:	56                   	push   %esi
406cec:	68 05 06 00 00       	push   $0x605
406cf1:	68 bc cc 44 00       	push   $0x44ccbc
406cf6:	e8 d8 ca ff ff       	call   0x4037d3
406cfb:	57                   	push   %edi
406cfc:	68 cc cc 44 00       	push   $0x44cccc
406d01:	eb 8b                	jmp    0x406c8e
406d03:	8b 45 fc             	mov    -0x4(%ebp),%eax
406d06:	83 7d 1c 00          	cmpl   $0x0,0x1c(%ebp)
406d0a:	8b 75 10             	mov    0x10(%ebp),%esi
406d0d:	0f 84 ba 00 00 00    	je     0x406dcd
406d13:	8b 53 20             	mov    0x20(%ebx),%edx
406d16:	6b c8 38             	imul   $0x38,%eax,%ecx
406d19:	83 7c 11 2c 00       	cmpl   $0x0,0x2c(%ecx,%edx,1)
406d1e:	0f 85 a9 00 00 00    	jne    0x406dcd
406d24:	83 7c 11 20 00       	cmpl   $0x0,0x20(%ecx,%edx,1)
406d29:	74 15                	je     0x406d40
406d2b:	57                   	push   %edi
406d2c:	68 f8 d5 44 00       	push   $0x44d5f8
406d31:	6a 02                	push   $0x2
406d33:	e8 e2 98 03 00       	call   0x44061a
406d38:	83 c4 0c             	add    $0xc,%esp
406d3b:	e9 8d 00 00 00       	jmp    0x406dcd
406d40:	8b 46 10             	mov    0x10(%esi),%eax
406d43:	83 e8 00             	sub    $0x0,%eax
406d46:	74 6c                	je     0x406db4
406d48:	83 e8 01             	sub    $0x1,%eax
406d4b:	74 50                	je     0x406d9d
406d4d:	83 e8 01             	sub    $0x1,%eax
406d50:	74 38                	je     0x406d8a
406d52:	83 e8 01             	sub    $0x1,%eax
406d55:	75 76                	jne    0x406dcd
406d57:	8b 0e                	mov    (%esi),%ecx
406d59:	8b 56 04             	mov    0x4(%esi),%edx
406d5c:	0f b7 c1             	movzwl %cx,%eax
406d5f:	50                   	push   %eax
406d60:	8b c2                	mov    %edx,%eax
406d62:	89 55 f8             	mov    %edx,-0x8(%ebp)
406d65:	0f ac c1 10          	shrd   $0x10,%eax,%ecx
406d69:	c1 e8 10             	shr    $0x10,%eax
406d6c:	0f b7 c1             	movzwl %cx,%eax
406d6f:	50                   	push   %eax
406d70:	0f b7 c2             	movzwl %dx,%eax
406d73:	50                   	push   %eax
406d74:	c1 ea 10             	shr    $0x10,%edx
406d77:	52                   	push   %edx
406d78:	57                   	push   %edi
406d79:	68 94 d6 44 00       	push   $0x44d694
406d7e:	6a 02                	push   $0x2
406d80:	e8 95 98 03 00       	call   0x44061a
406d85:	83 c4 1c             	add    $0x1c,%esp
406d88:	eb 43                	jmp    0x406dcd
406d8a:	83 3e 00             	cmpl   $0x0,(%esi)
406d8d:	75 04                	jne    0x406d93
406d8f:	6a 00                	push   $0x0
406d91:	eb 2a                	jmp    0x406dbd
406d93:	ff 36                	push   (%esi)
406d95:	57                   	push   %edi
406d96:	68 64 d6 44 00       	push   $0x44d664
406d9b:	eb 26                	jmp    0x406dc3
406d9d:	ff 76 04             	push   0x4(%esi)
406da0:	ff 36                	push   (%esi)
406da2:	57                   	push   %edi
406da3:	68 34 d6 44 00       	push   $0x44d634
406da8:	6a 02                	push   $0x2
406daa:	e8 6b 98 03 00       	call   0x44061a
406daf:	83 c4 14             	add    $0x14,%esp
406db2:	eb 19                	jmp    0x406dcd
406db4:	83 7c 11 18 00       	cmpl   $0x0,0x18(%ecx,%edx,1)
406db9:	74 12                	je     0x406dcd
406dbb:	ff 36                	push   (%esi)
406dbd:	57                   	push   %edi
406dbe:	68 18 d6 44 00       	push   $0x44d618
406dc3:	6a 02                	push   $0x2
406dc5:	e8 50 98 03 00       	call   0x44061a
406dca:	83 c4 10             	add    $0x10,%esp
406dcd:	6b 4d fc 38          	imul   $0x38,-0x4(%ebp),%ecx
406dd1:	8b 43 20             	mov    0x20(%ebx),%eax
406dd4:	56                   	push   %esi
406dd5:	89 4d 18             	mov    %ecx,0x18(%ebp)
406dd8:	83 c1 08             	add    $0x8,%ecx
406ddb:	03 c1                	add    %ecx,%eax
406ddd:	50                   	push   %eax
406dde:	e8 78 95 01 00       	call   0x42035b
406de3:	8b f0                	mov    %eax,%esi
406de5:	85 f6                	test   %esi,%esi
406de7:	79 0b                	jns    0x406df4
406de9:	57                   	push   %edi
406dea:	68 f8 cc 44 00       	push   $0x44ccf8
406def:	e9 9a fe ff ff       	jmp    0x406c8e
406df4:	8b 4b 20             	mov    0x20(%ebx),%ecx
406df7:	8b 55 18             	mov    0x18(%ebp),%edx
406dfa:	8b 45 14             	mov    0x14(%ebp),%eax
406dfd:	89 44 11 24          	mov    %eax,0x24(%ecx,%edx,1)
406e01:	53                   	push   %ebx
406e02:	ff 15 b8 b1 44 00    	call   *0x44b1b8
406e08:	85 f6                	test   %esi,%esi
406e0a:	79 17                	jns    0x406e23
406e0c:	83 7d 1c 00          	cmpl   $0x0,0x1c(%ebp)
406e10:	74 11                	je     0x406e23
406e12:	56                   	push   %esi
406e13:	57                   	push   %edi
406e14:	68 d0 d6 44 00       	push   $0x44d6d0
406e19:	6a 02                	push   $0x2
406e1b:	e8 fa 97 03 00       	call   0x44061a
406e20:	83 c4 10             	add    $0x10,%esp
406e23:	5f                   	pop    %edi
406e24:	8b c6                	mov    %esi,%eax
406e26:	5e                   	pop    %esi
406e27:	5b                   	pop    %ebx
406e28:	8b e5                	mov    %ebp,%esp
406e2a:	5d                   	pop    %ebp