40a79e:	8b 45 d8             	mov    -0x28(%ebp),%eax
40a7a1:	25 f0 3f ff 0f       	and    $0xfff3ff0,%eax
40a7a6:	3d c0 06 01 00       	cmp    $0x106c0,%eax
40a7ab:	74 23                	je     0x40a7d0
40a7ad:	3d 60 06 02 00       	cmp    $0x20660,%eax
40a7b2:	74 1c                	je     0x40a7d0
40a7b4:	3d 70 06 02 00       	cmp    $0x20670,%eax
40a7b9:	74 15                	je     0x40a7d0
40a7bb:	3d 50 06 03 00       	cmp    $0x30650,%eax
40a7c0:	74 0e                	je     0x40a7d0
40a7c2:	3d 60 06 03 00       	cmp    $0x30660,%eax
40a7c7:	74 07                	je     0x40a7d0
40a7c9:	3d 70 06 03 00       	cmp    $0x30670,%eax
40a7ce:	75 07                	jne    0x40a7d7
40a7d0:	83 0d d4 f5 43 00 01 	orl    $0x1,0x43f5d4
40a7d7:	8b 55 e0             	mov    -0x20(%ebp),%edx
40a7da:	33 db                	xor    %ebx,%ebx
40a7dc:	21 5d ec             	and    %ebx,-0x14(%ebp)
40a7df:	33 ff                	xor    %edi,%edi
40a7e1:	21 5d e8             	and    %ebx,-0x18(%ebp)
40a7e4:	83 7d fc 07          	cmpl   $0x7,-0x4(%ebp)
40a7e8:	89 55 f4             	mov    %edx,-0xc(%ebp)
40a7eb:	0f 8c 87 00 00 00    	jl     0x40a878
40a7f1:	6a 07                	push   $0x7
40a7f3:	58                   	pop    %eax
40a7f4:	33 c9                	xor    %ecx,%ecx
40a7f6:	53                   	push   %ebx
40a7f7:	0f a2                	cpuid
40a7f9:	8b f3                	mov    %ebx,%esi
40a7fb:	5b                   	pop    %ebx
40a7fc:	90                   	nop
40a7fd:	8d 5d d8             	lea    -0x28(%ebp),%ebx
40a800:	89 03                	mov    %eax,(%ebx)
40a802:	89 73 04             	mov    %esi,0x4(%ebx)
40a805:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a808:	89 53 0c             	mov    %edx,0xc(%ebx)
40a80b:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40a80e:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40a811:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a814:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a817:	f7 c3 00 02 00 00    	test   $0x200,%ebx
40a81d:	74 07                	je     0x40a826
40a81f:	83 0d d4 f5 43 00 02 	orl    $0x2,0x43f5d4
40a826:	83 7d d8 01          	cmpl   $0x1,-0x28(%ebp)
40a82a:	7c 24                	jl     0x40a850
40a82c:	6a 07                	push   $0x7
40a82e:	58                   	pop    %eax
40a82f:	33 c9                	xor    %ecx,%ecx
40a831:	41                   	inc    %ecx
40a832:	53                   	push   %ebx
40a833:	0f a2                	cpuid
40a835:	8b f3                	mov    %ebx,%esi
40a837:	5b                   	pop    %ebx
40a838:	90                   	nop
40a839:	8d 5d d8             	lea    -0x28(%ebp),%ebx
40a83c:	89 03                	mov    %eax,(%ebx)
40a83e:	89 73 04             	mov    %esi,0x4(%ebx)
40a841:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a844:	89 53 0c             	mov    %edx,0xc(%ebx)
40a847:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40a84a:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40a84d:	89 45 e8             	mov    %eax,-0x18(%ebp)
40a850:	6a 24                	push   $0x24
40a852:	58                   	pop    %eax
40a853:	39 45 fc             	cmp    %eax,-0x4(%ebp)
40a856:	7c 1d                	jl     0x40a875
40a858:	33 c9                	xor    %ecx,%ecx
40a85a:	8d 7d d8             	lea    -0x28(%ebp),%edi
40a85d:	53                   	push   %ebx
40a85e:	0f a2                	cpuid
40a860:	8b f3                	mov    %ebx,%esi
40a862:	5b                   	pop    %ebx
40a863:	90                   	nop
40a864:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40a867:	89 07                	mov    %eax,(%edi)
40a869:	89 77 04             	mov    %esi,0x4(%edi)
40a86c:	89 4f 08             	mov    %ecx,0x8(%edi)
40a86f:	89 57 0c             	mov    %edx,0xc(%edi)
40a872:	8b 7d dc             	mov    -0x24(%ebp),%edi
40a875:	8b 55 f4             	mov    -0xc(%ebp),%edx
40a878:	a1 10 d1 43 00       	mov    0x43d110,%eax
40a87d:	8b 0d 08 d1 43 00    	mov    0x43d108,%ecx
40a883:	83 c8 02             	or     $0x2,%eax
40a886:	8b 35 0c d1 43 00    	mov    0x43d10c,%esi
40a88c:	83 e1 fe             	and    $0xfffffffe,%ecx
40a88f:	c7 05 d0 f5 43 00 01 	movl   $0x1,0x43f5d0
40a896:	00 00 00
40a899:	a3 10 d1 43 00       	mov    %eax,0x43d110
40a89e:	89 0d 08 d1 43 00    	mov    %ecx,0x43d108
40a8a4:	89 35 0c d1 43 00    	mov    %esi,0x43d10c
40a8aa:	f7 c2 00 00 10 00    	test   $0x100000,%edx
40a8b0:	0f 84 85 01 00 00    	je     0x40aa3b
40a8b6:	83 c8 04             	or     $0x4,%eax
40a8b9:	c7 05 d0 f5 43 00 02 	movl   $0x2,0x43f5d0
40a8c0:	00 00 00
40a8c3:	83 e1 ef             	and    $0xffffffef,%ecx
40a8c6:	a3 10 d1 43 00       	mov    %eax,0x43d110
40a8cb:	89 0d 08 d1 43 00    	mov    %ecx,0x43d108
40a8d1:	89 35 0c d1 43 00    	mov    %esi,0x43d10c
40a8d7:	f7 c2 00 00 00 08    	test   $0x8000000,%edx
40a8dd:	0f 84 58 01 00 00    	je     0x40aa3b
40a8e3:	f7 c2 00 00 00 10    	test   $0x10000000,%edx
40a8e9:	0f 84 4c 01 00 00    	je     0x40aa3b
40a8ef:	33 c9                	xor    %ecx,%ecx
40a8f1:	0f 01 d0             	xgetbv
40a8f4:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a8f7:	33 f6                	xor    %esi,%esi
40a8f9:	89 55 f4             	mov    %edx,-0xc(%ebp)
40a8fc:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a8ff:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a902:	83 e0 06             	and    $0x6,%eax
40a905:	23 ce                	and    %esi,%ecx
40a907:	83 f8 06             	cmp    $0x6,%eax
40a90a:	0f 85 2b 01 00 00    	jne    0x40aa3b
40a910:	3b ce                	cmp    %esi,%ecx
40a912:	0f 85 23 01 00 00    	jne    0x40aa3b
40a918:	a1 10 d1 43 00       	mov    0x43d110,%eax
40a91d:	83 c8 08             	or     $0x8,%eax
40a920:	c7 05 d0 f5 43 00 03 	movl   $0x3,0x43f5d0
40a927:	00 00 00
40a92a:	a3 10 d1 43 00       	mov    %eax,0x43d110
40a92f:	f6 c3 20             	test   $0x20,%bl
40a932:	74 79                	je     0x40a9ad
40a934:	8b 0d 0c d1 43 00    	mov    0x43d10c,%ecx
40a93a:	83 c8 20             	or     $0x20,%eax
40a93d:	a3 10 d1 43 00       	mov    %eax,0x43d110
40a942:	ba 00 00 03 d0       	mov    $0xd0030000,%edx
40a947:	a1 08 d1 43 00       	mov    0x43d108,%eax
40a94c:	23 da                	and    %edx,%ebx
40a94e:	83 e0 fd             	and    $0xfffffffd,%eax
40a951:	c7 05 d0 f5 43 00 05 	movl   $0x5,0x43f5d0
40a958:	00 00 00
40a95b:	a3 08 d1 43 00       	mov    %eax,0x43d108
40a960:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40a966:	3b da                	cmp    %edx,%ebx
40a968:	75 4e                	jne    0x40a9b8
40a96a:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a96d:	ba e0 00 00 00       	mov    $0xe0,%edx
40a972:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a975:	23 c2                	and    %edx,%eax
40a977:	23 ce                	and    %esi,%ecx
40a979:	3b c2                	cmp    %edx,%eax
40a97b:	75 30                	jne    0x40a9ad
40a97d:	3b ce                	cmp    %esi,%ecx
40a97f:	75 2c                	jne    0x40a9ad
40a981:	a1 08 d1 43 00       	mov    0x43d108,%eax
40a986:	83 0d 10 d1 43 00 40 	orl    $0x40,0x43d110
40a98d:	83 e0 db             	and    $0xffffffdb,%eax
40a990:	8b 0d 0c d1 43 00    	mov    0x43d10c,%ecx
40a996:	c7 05 d0 f5 43 00 06 	movl   $0x6,0x43f5d0
40a99d:	00 00 00
40a9a0:	a3 08 d1 43 00       	mov    %eax,0x43d108
40a9a5:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40a9ab:	eb 0b                	jmp    0x40a9b8
40a9ad:	8b 0d 0c d1 43 00    	mov    0x43d10c,%ecx
40a9b3:	a1 08 d1 43 00       	mov    0x43d108,%eax
40a9b8:	f7 45 ec 00 00 80 00 	testl  $0x800000,-0x14(%ebp)
40a9bf:	74 10                	je     0x40a9d1
40a9c1:	25 ff ff ff fe       	and    $0xfeffffff,%eax
40a9c6:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40a9cc:	a3 08 d1 43 00       	mov    %eax,0x43d108
40a9d1:	f7 45 e8 00 00 08 00 	testl  $0x80000,-0x18(%ebp)
40a9d8:	74 61                	je     0x40aa3b
40a9da:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a9dd:	ba e0 00 00 00       	mov    $0xe0,%edx
40a9e2:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a9e5:	23 c2                	and    %edx,%eax
40a9e7:	23 ce                	and    %esi,%ecx
40a9e9:	3b c2                	cmp    %edx,%eax
40a9eb:	75 4e                	jne    0x40aa3b
40a9ed:	3b ce                	cmp    %esi,%ecx
40a9ef:	75 4a                	jne    0x40aa3b
40a9f1:	8b c7                	mov    %edi,%eax
40a9f3:	33 c9                	xor    %ecx,%ecx
40a9f5:	c1 ef 10             	shr    $0x10,%edi
40a9f8:	25 ff 00 04 00       	and    $0x400ff,%eax
40a9fd:	83 e7 07             	and    $0x7,%edi
40aa00:	a3 cc f5 43 00       	mov    %eax,0x43f5cc
40aa05:	81 cf 28 00 00 01    	or     $0x1000028,%edi
40aa0b:	f7 d1                	not    %ecx
40aa0d:	23 0d 0c d1 43 00    	and    0x43d10c,%ecx
40aa13:	f7 d7                	not    %edi
40aa15:	23 3d 08 d1 43 00    	and    0x43d108,%edi
40aa1b:	89 3d 08 d1 43 00    	mov    %edi,0x43d108
40aa21:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40aa27:	83 f8 01             	cmp    $0x1,%eax
40aa2a:	76 0f                	jbe    0x40aa3b
40aa2c:	83 e7 bf             	and    $0xffffffbf,%edi
40aa2f:	89 0d 0c d1 43 00    	mov    %ecx,0x43d10c
40aa35:	89 3d 08 d1 43 00    	mov    %edi,0x43d108
40aa3b:	5f                   	pop    %edi
40aa3c:	5e                   	pop    %esi
40aa3d:	5b                   	pop    %ebx
40aa3e:	33 c0                	xor    %eax,%eax
40aa40:	c9                   	leave
40aa41:	c3                   	ret
40aa42:	33 c0                	xor    %eax,%eax
40aa44:	39 05 bc ff 43 00    	cmp    %eax,0x43ffbc
40aa4a:	0f 95 c0             	setne  %al
40aa4d:	c3                   	ret
40aa4e:	a1 dc f5 43 00       	mov    0x43f5dc,%eax
40aa53:	90                   	nop
40aa54:	c3                   	ret
40aa55:	56                   	push   %esi
40aa56:	e8 f3 ff ff ff       	call   0x40aa4e
40aa5b:	8b f0                	mov    %eax,%esi
40aa5d:	85 f6                	test   %esi,%esi
40aa5f:	74 0a                	je     0x40aa6b
40aa61:	8b ce                	mov    %esi,%ecx
40aa63:	ff 15 68 12 43 00    	call   *0x431268
40aa69:	ff d6                	call   *%esi
40aa6b:	e8 21 14 01 00       	call   0x41be91
40aa70:	cc                   	int3
40aa71:	55                   	push   %ebp
40aa72:	8b ec                	mov    %esp,%ebp
40aa74:	8b 45 08             	mov    0x8(%ebp),%eax
40aa77:	b9 dc f5 43 00       	mov    $0x43f5dc,%ecx
40aa7c:	87 01                	xchg   %eax,(%ecx)
40aa7e:	5d                   	pop    %ebp
40aa7f:	c3                   	ret
40aa80:	55                   	push   %ebp
40aa81:	8b ec                	mov    %esp,%ebp
40aa83:	51                   	push   %ecx
40aa84:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40aa87:	53                   	push   %ebx
40aa88:	56                   	push   %esi
40aa89:	57                   	push   %edi
40aa8a:	8b 7d 18             	mov    0x18(%ebp),%edi
40aa8d:	8b 57 0c             	mov    0xc(%edi),%edx
40aa90:	8b f2                	mov    %edx,%esi
40aa92:	8b 5f 10             	mov    0x10(%edi),%ebx
40aa95:	89 55 fc             	mov    %edx,-0x4(%ebp)
40aa98:	85 c9                	test   %ecx,%ecx
40aa9a:	78 2d                	js     0x40aac9
40aa9c:	6b c2 14             	imul   $0x14,%edx,%eax
40aa9f:	83 c3 08             	add    $0x8,%ebx
40aaa2:	03 c3                	add    %ebx,%eax
40aaa4:	8b 5d 10             	mov    0x10(%ebp),%ebx
40aaa7:	83 fa ff             	cmp    $0xffffffff,%edx
40aaaa:	74 3d                	je     0x40aae9
40aaac:	83 e8 14             	sub    $0x14,%eax
40aaaf:	4a                   	dec    %edx
40aab0:	39 58 fc             	cmp    %ebx,-0x4(%eax)
40aab3:	7d 04                	jge    0x40aab9
40aab5:	3b 18                	cmp    (%eax),%ebx
40aab7:	7e 05                	jle    0x40aabe
40aab9:	83 fa ff             	cmp    $0xffffffff,%edx
40aabc:	75 07                	jne    0x40aac5
40aabe:	8b 75 fc             	mov    -0x4(%ebp),%esi
40aac1:	49                   	dec    %ecx
40aac2:	89 55 fc             	mov    %edx,-0x4(%ebp)
40aac5:	85 c9                	test   %ecx,%ecx
40aac7:	79 de                	jns    0x40aaa7
40aac9:	42                   	inc    %edx
40aaca:	3b 77 0c             	cmp    0xc(%edi),%esi
40aacd:	77 1a                	ja     0x40aae9
40aacf:	3b d6                	cmp    %esi,%edx
40aad1:	77 16                	ja     0x40aae9
40aad3:	8b 45 08             	mov    0x8(%ebp),%eax
40aad6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40aad9:	5f                   	pop    %edi
40aada:	89 70 0c             	mov    %esi,0xc(%eax)
40aadd:	5e                   	pop    %esi
40aade:	89 08                	mov    %ecx,(%eax)
40aae0:	89 50 04             	mov    %edx,0x4(%eax)
40aae3:	89 48 08             	mov    %ecx,0x8(%eax)
40aae6:	5b                   	pop    %ebx
40aae7:	c9                   	leave
40aae8:	c3                   	ret
40aae9:	e8 a3 13 01 00       	call   0x41be91
40aaee:	cc                   	int3
40aaef:	55                   	push   %ebp
40aaf0:	8b ec                	mov    %esp,%ebp
40aaf2:	83 ec 18             	sub    $0x18,%esp
40aaf5:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40aaf9:	8d 45 e8             	lea    -0x18(%ebp),%eax
40aafc:	33 05 c0 d0 43 00    	xor    0x43d0c0,%eax
40ab02:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ab05:	89 45 f0             	mov    %eax,-0x10(%ebp)
40ab08:	8b 45 0c             	mov    0xc(%ebp),%eax
40ab0b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ab0e:	8b 45 14             	mov    0x14(%ebp),%eax
40ab11:	40                   	inc    %eax
40ab12:	c7 45 ec c0 ac 40 00 	movl   $0x40acc0,-0x14(%ebp)
40ab19:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40ab1c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ab1f:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40ab25:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ab28:	8d 45 e8             	lea    -0x18(%ebp),%eax
40ab2b:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ab31:	ff 75 18             	push   0x18(%ebp)
40ab34:	51                   	push   %ecx
40ab35:	ff 75 10             	push   0x10(%ebp)
40ab38:	e8 93 20 00 00       	call   0x40cbd0
40ab3d:	8b c8                	mov    %eax,%ecx
40ab3f:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ab42:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ab48:	8b c1                	mov    %ecx,%eax
40ab4a:	c9                   	leave
40ab4b:	c3                   	ret
40ab4c:	55                   	push   %ebp
40ab4d:	8b ec                	mov    %esp,%ebp
40ab4f:	83 ec 3c             	sub    $0x3c,%esp
40ab52:	53                   	push   %ebx
40ab53:	81 7d 08 23 01 00 00 	cmpl   $0x123,0x8(%ebp)
40ab5a:	75 12                	jne    0x40ab6e
40ab5c:	b8 10 ac 40 00       	mov    $0x40ac10,%eax
40ab61:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ab64:	89 01                	mov    %eax,(%ecx)
40ab66:	33 c0                	xor    %eax,%eax
40ab68:	40                   	inc    %eax
40ab69:	e9 cb 00 00 00       	jmp    0x40ac39
40ab6e:	83 65 c4 00          	andl   $0x0,-0x3c(%ebp)
40ab72:	c7 45 c8 5d ad 40 00 	movl   $0x40ad5d,-0x38(%ebp)
40ab79:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40ab7e:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40ab81:	33 c1                	xor    %ecx,%eax
40ab83:	89 45 cc             	mov    %eax,-0x34(%ebp)
40ab86:	8b 45 18             	mov    0x18(%ebp),%eax
40ab89:	89 45 d0             	mov    %eax,-0x30(%ebp)
40ab8c:	8b 45 0c             	mov    0xc(%ebp),%eax
40ab8f:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40ab92:	8b 45 1c             	mov    0x1c(%ebp),%eax
40ab95:	89 45 d8             	mov    %eax,-0x28(%ebp)
40ab98:	8b 45 20             	mov    0x20(%ebp),%eax
40ab9b:	89 45 dc             	mov    %eax,-0x24(%ebp)
40ab9e:	83 65 e0 00          	andl   $0x0,-0x20(%ebp)
40aba2:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40aba6:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40abaa:	89 65 e0             	mov    %esp,-0x20(%ebp)
40abad:	89 6d e4             	mov    %ebp,-0x1c(%ebp)
40abb0:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40abb6:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40abb9:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40abbc:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40abc2:	8b 45 08             	mov    0x8(%ebp),%eax
40abc5:	ff 30                	push   (%eax)
40abc7:	e8 cd 53 02 00       	call   0x42ff99
40abcc:	59                   	pop    %ecx
40abcd:	8b 4d 08             	mov    0x8(%ebp),%ecx
40abd0:	89 01                	mov    %eax,(%ecx)
40abd2:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40abd9:	8b 45 08             	mov    0x8(%ebp),%eax
40abdc:	89 45 ec             	mov    %eax,-0x14(%ebp)
40abdf:	8b 45 10             	mov    0x10(%ebp),%eax
40abe2:	89 45 f0             	mov    %eax,-0x10(%ebp)
40abe5:	e8 b0 11 00 00       	call   0x40bd9a
40abea:	8b 40 08             	mov    0x8(%eax),%eax
40abed:	89 45 fc             	mov    %eax,-0x4(%ebp)
40abf0:	8b 4d fc             	mov    -0x4(%ebp),%ecx