Function at 0x1001a480
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfc
mov edx, dword [str.No_CPUID___]
xor eax, eax
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x34], edx
mov edx, dword [0x100316a0]
push ebx
push esi
push edi
mov dword [ebp - 0x30], edx
mov edx, dword [0x100316a4]
mov dword [ecx + 0x4e7], eax
mov dword [ecx + 0x4eb], eax
mov dword [ecx + 0x4ef], eax
mov dword [ecx + 0x4f3], eax
mov dword [ecx + 0x4f7], eax
mov dword [ecx + 0x4fb], eax
mov dword [ecx + 0x4ff], eax
mov dword [ecx + 0x503], eax
mov dword [ebp - 0x2c], edx
lea edx, [ecx + 0x507]
or ecx, 0xffffffff
mov edi, str.Unknown
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x19], al
mov byte [ebp - 0x28], al
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov dword [ebp - 8], edx
rep movsb byte es:[edi], byte [esi]
pushaw
pushfd
push eax
push ebx
pushfd
pop eax
mov ebx, eax
xor eax, 0x200000
push eax
popfd
pushfd
pop eax
xor eax, ebx
pop ebx
pop eax
je 0x1001a536
mov byte [ebp - 0x19], 1
popfd
popaw
mov al, byte [ebp - 0x19]
test al, al
je 0x1001b27a
pushaw
mov eax, 0
cpuid
mov dword [ebp - 0x20], eax
mov byte [ebp - 0x34], bl
mov byte [ebp - 0x33], bh
shr ebx, 0x10
mov byte [ebp - 0x32], bl
mov byte [ebp - 0x31], bh
mov byte [ebp - 0x30], dl
mov byte [ebp - 0x2f], dh
shr edx, 0x10
mov byte [ebp - 0x2e], dl
mov byte [ebp - 0x2d], dh
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x2b], ch
shr ecx, 0x10
mov byte [ebp - 0x2a], cl
mov byte [ebp - 0x29], ch
mov byte [ebp - 0x28], 0
test eax, eax
popaw
mov eax, dword [ebp - 0x20]
and eax, 0xf
mov dword [ebp - 0x20], eax
je 0x1001b27a
cmp eax, 1
jb 0x1001a5ce
pushaw
mov eax, 1
cpuid
mov ebx, eax
shr ebx, 0xc
and ebx, 3
mov dword [ebp - 0x38], ebx
mov ebx, eax
shr ebx, 8
and ebx, 0xf
mov dword [ebp - 0x10], ebx
mov ebx, eax
shr ebx, 4
and ebx, 0xf
mov dword [ebp - 4], ebx
and eax, 0xf
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
popaw
mov esi, str.GenuineIntel
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a5fe
test cl, cl
je 0x1001a5fa
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a5fe
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a5d6
xor eax, eax
jmp 0x1001a603
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a619
mov ebx, dword [ebp - 0xc]
mov dword [ebx + 0x4ff], 1
jmp 0x1001a78b
mov esi, str.UMC_UMC_UMC
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a649
test cl, cl
je 0x1001a645
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a649
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a621
xor eax, eax
jmp 0x1001a64e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a664
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ff], 2
jmp 0x1001a788
mov esi, str.AuthenticAMD
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a694
test cl, cl
je 0x1001a690
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a694
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a66c
xor eax, eax
jmp 0x1001a699
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a6af
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ff], 3
jmp 0x1001a788
mov esi, str.CyrixInstead
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a6df
test cl, cl
je 0x1001a6db
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a6df
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a6b7
xor eax, eax
jmp 0x1001a6e4
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a6fa
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ff], 4
jmp 0x1001a788
mov esi, str.NexGenDriven
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a72a
test cl, cl
je 0x1001a726
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a72a
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a702
xor eax, eax
jmp 0x1001a72f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a742
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ff], 5
jmp 0x1001a788
mov esi, str.CentaurHauls
lea eax, [ebp - 0x34]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x1001a772
test cl, cl
je 0x1001a76e
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x1001a772
add eax, 2
add esi, 2
test cl, cl
jne 0x1001a74a
xor eax, eax
jmp 0x1001a777
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1001a788
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ff], 6
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x4ff]
cmp eax, 3
jne 0x1001a79c
cmp dword [ebp - 0x10], 5
jae 0x1001a7a7
cmp eax, 6
jne 0x1001a7cf
cmp dword [ebp - 0x10], 5
jb 0x1001a7cf
pushaw
mov eax, 0x80000000
cpuid
mov dword [ebp - 0x24], eax
popaw
cmp dword [ebp - 0x24], 0x80000001
jb 0x1001a7cc
pushaw
mov eax, 0x80000001
cpuid
mov dword [ebp - 0x18], edx
popaw
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
cmp esi, 6
jne 0x1001a7de
or dword [ebx + 0x4fb], 0x10
mov ecx, dword [ebp - 0x18]
test ecx, 0x800000
je 0x1001a7f0
or dword [ebx + 0x4fb], 1
mov eax, dword [ebx + 0x4ff]
cmp eax, 1
jne 0x1001a80a
test ecx, 0x10000
je 0x1001a80a
or dword [ebx + 0x4fb], 8
cmp eax, 3
jne 0x1001a828
test ch, 0x80
je 0x1001a823
test ecx, 0x10000
je 0x1001a823
or dword [ebx + 0x4fb], 8
cmp eax, 3
je 0x1001a82d
cmp eax, 6
jne 0x1001a83c
test ecx, 0x80000000
je 0x1001a83c
or dword [ebx + 0x4fb], 4
test cl, 0x10
je 0x1001a848
or dword [ebx + 0x4fb], 0x20
test ecx, 0x2000000
je 0x1001a8a0
lea ecx, [ebp - 0xfc]
push ecx
mov dword [ebp - 0xfc], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ecx, dword [ebp - 0xec]
cmp ecx, 1
mov eax, dword [ebp - 0xf8]
jne 0x1001a87d
cmp eax, 4
ja 0x1001a896
cmp eax, 4
jne 0x1001a88c
mov edx, dword [ebp - 0xf4]
test edx, edx
ja 0x1001a896
cmp ecx, 2
jne 0x1001a8a0
cmp eax, 4
jbe 0x1001a8a0
orps xmm7, xmm7
or dword [ebx + 0x4fb], 0x40
cmp dword [ebx + 0x4ff], 1
jne 0x1001a9b9
cmp esi, 4
jne 0x1001a9b9
mov ecx, dword [ebp - 4]
test ecx, ecx
jne 0x1001a8ea
mov edx, dword [ebp - 8]
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Intel_486DX_25_33
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001a9bf
cmp ecx, 1
jne 0x1001a91d
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Intel_486DX_50
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
shr ecx, 2
mov esi, edi
mov edi, dword [ebp - 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebp - 8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001a9bf
cmp ecx, 2
jne 0x1001a929
mov edi, str.Intel_486SX
jmp 0x1001a993
cmp ecx, 3
jne 0x1001a935
mov edi, str.Intel_486DX2
jmp 0x1001a963
cmp ecx, 4
jne 0x1001a941
mov edi, str.Intel_486SL
jmp 0x1001a993
cmp ecx, 5
jne 0x1001a94d
mov edi, str.Intel_486SX2
jmp 0x1001a963
cmp ecx, 7
jne 0x1001a959
mov edi, str.Intel_486DX2WB
jmp 0x1001a993
cmp ecx, 8
jne 0x1001a989
mov edi, str.Intel_486DX4
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
shr ecx, 2
mov esi, edi
mov edi, dword [ebp - 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebp - 8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001a9bf
cmp ecx, 9
jne 0x1001a9bc
mov edi, str.Intel_486DX4WB
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov edx, dword [ebp - 8]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, dword [ebp - 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001a9bf
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 8]
cmp dword [ebx + 0x4ff], 2
jne 0x1001a9fd
cmp dword [ebp - 0x10], 4
jne 0x1001a9fd
cmp ecx, 1
je 0x1001a9d8
cmp ecx, 2
jne 0x1001a9fd
or ecx, 0xffffffff
xor eax, eax
mov edi, str.UMC_486
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
cmp dword [ebx + 0x4ff], 3
jne 0x1001aa72
cmp dword [ebp - 0x10], 4
jne 0x1001aa72
cmp ecx, 3
jne 0x1001aa18
mov edi, str.AMD_486DX2
jmp 0x1001aa52
cmp ecx, 7
jne 0x1001aa24
mov edi, str.AMD_486DX2WB
jmp 0x1001aa52
cmp ecx, 8
jne 0x1001aa30
mov edi, str.AMD_486DX4
jmp 0x1001aa52
cmp ecx, 9
jne 0x1001aa3c
mov edi, str.AMD_486DX4WB
jmp 0x1001aa52
cmp ecx, 0xe
jne 0x1001aa48
mov edi, str.AMD_486_5x86
jmp 0x1001aa52
cmp ecx, 0xf
jne 0x1001aa72
mov edi, str.AMD_486_5x86WB
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
mov esi, dword [ebx + 0x4ff]
mov eax, 4
cmp esi, eax
jne 0x1001aabb
cmp dword [ebp - 0x10], eax
jne 0x1001aabb
cmp ecx, 9
jne 0x1001aa92
mov edi, str.Cyrix_5x86
jmp 0x1001aa9b
cmp ecx, eax
jne 0x1001aabb
mov edi, str.Cyrix_MediaGX
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
cmp dword [ebx + 0x4ff], 1
jne 0x1001ab11
cmp dword [ebp - 0x10], 5
jne 0x1001ab11
test ecx, ecx
je 0x1001aaec
cmp ecx, 1
je 0x1001aaec
cmp ecx, 2
je 0x1001aaec
cmp ecx, 3
je 0x1001aaec
cmp ecx, 4
je 0x1001aaec
cmp ecx, 7
je 0x1001aaec
cmp ecx, 8
jne 0x1001ab11
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Intel_Pentium
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
mov esi, dword [ebx + 0x4ff]
mov eax, 5
cmp esi, eax
jne 0x1001ab4e
cmp dword [ebp - 0x10], eax
jne 0x1001ab4e
test ecx, ecx
jne 0x1001ab4e
or ecx, 0xffffffff
xor eax, eax
mov edi, str.NexGen_Nx586
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
cmp dword [ebx + 0x4ff], 4
jne 0x1001abcb
cmp dword [ebp - 0x10], 5
jne 0x1001ab93
cmp ecx, 2
jne 0x1001ab69
mov edi, str.Cyrix_6x86
jmp 0x1001ab73
cmp ecx, 4
jne 0x1001ab93
mov edi, str.Cyrix_MediaGX
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
cmp dword [ebx + 0x4ff], 4
jne 0x1001abcb
cmp dword [ebp - 0x10], 6
jne 0x1001abcb
test ecx, ecx
jne 0x1001abcb
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Cyrix_6x86MX
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
cmp dword [ebx + 0x4ff], 3
jne 0x1001ad3a
cmp dword [ebp - 0x10], 5
jne 0x1001ad3a
test ecx, ecx
jne 0x1001ac10
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K5
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 1
jne 0x1001ac3f
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K5
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 2
jne 0x1001ac6e
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K5
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 3
jne 0x1001ac9d
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K5
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 6
jne 0x1001acc9
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K6
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 7
jne 0x1001acf5
or ecx, 0xffffffff
xor eax, eax
mov edi, str.AMD_K6
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 8
jne 0x1001ad2b
or ecx, 0xffffffff
xor eax, eax
mov dword [ebx + 0x503], 6
mov edi, str.AMD_K6_2
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
jmp 0x1001ad3a
cmp ecx, 9
jne 0x1001ad3a
mov dword [ebx + 0x503], 7
mov eax, dword [ebx + 0x4ff]
cmp eax, 3
jne 0x1001ad59
cmp dword [ebp - 0x10], 6
jne 0x1001ad59
test ecx, ecx
jne 0x1001ad59
mov dword [ebx + 0x503], 8
cmp eax, 6
jne 0x1001ada8
cmp dword [ebp - 0x10], 5
jne 0x1001ada8
cmp ecx, 4
jne 0x1001ad70
mov edi, str.IDT_WinChip_C6
jmp 0x1001ad88
cmp ecx, 8
jne 0x1001ada8
test byte [ebx + 0x4fb], 4
mov edi, str.IDT_WinChip_2_3D
jne 0x1001ad88
mov edi, str.IDT_WinChip_2
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
mov esi, dword [ebx + 0x4ff]
mov eax, 1
cmp esi, eax
jne 0x1001ae4a
cmp dword [ebp - 0x10], 6
jne 0x1001ae4a
test ecx, ecx
jne 0x1001add0
mov edi, str.Intel_Pentium_Pro
jmp 0x1001ae2d
cmp ecx, eax
jne 0x1001addb
mov edi, str.Intel_Pentium_Pro
jmp 0x1001ae2d
cmp ecx, 3
jne 0x1001adf1
mov dword [ebx + 0x503], 2
mov edi, str.Intel_Pentium_II
jmp 0x1001ae2d
cmp ecx, 5
jne 0x1001ae07
mov dword [ebx + 0x503], 2
mov edi, str.Intel_Pentium_II
jmp 0x1001ae2d
cmp ecx, 6
jne 0x1001ae19
mov dword [ebx + 0x503], eax
mov edi, str.Intel_Celeron_A
jmp 0x1001ae2d
cmp ecx, 7
jne 0x1001ae4a
mov dword [ebx + 0x503], 4
mov edi, str.Intel_Pentium_III
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp - 0x24], 0x80000004
jb 0x1001aedc
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x14], ecx
pushaw
mov esi, dword [ebp - 0x14]
mov eax, 0x80000002
cpuid
mov dword [esi], eax
add esi, 4
mov dword [esi], ebx
add esi, 4
mov dword [esi], ecx
add esi, 4
mov dword [esi], edx
add esi, 4
mov eax, 0x80000003
cpuid
mov dword [esi], eax
add esi, 4
mov dword [esi], ebx
add esi, 4
mov dword [esi], ecx
add esi, 4
mov dword [esi], edx
add esi, 4
mov eax, 0x80000004
cpuid
mov dword [esi], eax
add esi, 4
mov dword [esi], ebx
add esi, 4
mov dword [esi], ecx
add esi, 4
mov dword [esi], edx
add esi, 4
popaw
or ecx, 0xffffffff
xor eax, eax
lea edi, [ebp - 0x68]
repne scasb al, byte es:[edi]
mov ebx, dword [ebp - 0xc]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [ebp - 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebp - 8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebx + 0x4ff], 4
mov eax, dword [ebp - 0x20]
jne 0x1001af66
cmp eax, 2
jb 0x1001af3d
pushaw
mov eax, 2
cpuid
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
popaw
mov eax, dword [ebp - 0x14]
and eax, 0xff00
cmp eax, 0x7000
jne 0x1001af21
mov eax, dword [ebp - 0xc]
mov ecx, 0x1000
mov dword [eax + 0x4e7], ecx
mov dword [eax + 0x4eb], ecx
cmp byte [ebp - 0x18], 0x80
mov esi, 0x2000
jne 0x1001af89
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x4ef], esi
mov dword [eax + 0x4f3], esi
jmp 0x1001af89
mov eax, 0x1000
mov dword [ebx + 0x4e7], eax
mov dword [ebx + 0x4eb], eax
mov eax, 0x2000
mov dword [ebx + 0x4ef], eax
mov dword [ebx + 0x4f3], eax
mov esi, 0x2000
jmp 0x1001af8f
cmp eax, 2
jb 0x1001af5f
pushaw
mov eax, 2
cpuid
mov al, 0
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], edx
popaw
mov esi, 0x2000
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
cmp dword [ebp - 0x24], 0x80000005
jb 0x1001afdc
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
pushaw
mov eax, 0x80000005
cpuid
shr ecx, 0x18
mov dword [ebp - 0x18], ecx
shr edx, 0x18
mov dword [ebp - 0x14], edx
popaw
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
shl ecx, 0xa
shl edx, 0xa
mov dword [eax + 0x4ef], edx
mov edx, dword [ebp - 8]
mov dword [eax + 0x4f3], ecx
mov esi, 0x2000
mov ebx, eax
cmp dword [ebp - 0x24], 0x80000006
jb 0x1001b016
mov dword [ebp - 0x14], 0
pushaw
mov eax, 0x80000006
cpuid
shr ecx, 0x10
mov dword [ebp - 0x14], ecx
popaw
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
shl eax, 0xa
mov dword [ecx + 0x4f7], eax
mov esi, 0x2000
mov ebx, ecx
mov eax, dword [ebx + 0x4ff]
cmp eax, 3
je 0x1001b187
cmp eax, 4
je 0x1001b187
cmp dword [ebp - 0x20], 2
jb 0x1001b187
lea eax, [ebp - 0x34]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 4
mov ecx, dword [ebp - 0x18]
mov edi, dword [ecx]
xor ecx, ecx
mov eax, edi
shr eax, cl
cmp al, 1
jne 0x1001b063
mov dword [ebx + 0x4e7], 0x1000
jmp 0x1001b14a
cmp al, 2
jne 0x1001b076
mov dword [ebx + 0x4e7], 0x400000
jmp 0x1001b14a
cmp al, 3
je 0x1001b140
cmp al, 4
jne 0x1001b091
mov dword [ebx + 0x4eb], 0x400000
jmp 0x1001b14a
cmp al, 6
jne 0x1001b0a0
mov dword [ebx + 0x4ef], esi
jmp 0x1001b14a
cmp al, 8
jne 0x1001b0b3
mov dword [ebx + 0x4ef], 0x4000
jmp 0x1001b14a
cmp al, 0xa
jne 0x1001b0c2
mov dword [ebx + 0x4f3], esi
jmp 0x1001b14a
cmp al, 0xc
jne 0x1001b0d2
mov dword [ebx + 0x4f3], 0x4000
jmp 0x1001b14a
cmp al, 0x40
jne 0x1001b0e2
mov dword [ebx + 0x4f7], 0
jmp 0x1001b14a
cmp al, 0x41
jne 0x1001b0f2
mov dword [ebx + 0x4f7], 0x20000
jmp 0x1001b14a
cmp al, 0x42
jne 0x1001b102
mov dword [ebx + 0x4f7], 0x40000
jmp 0x1001b14a
cmp al, 0x43
jne 0x1001b112
mov dword [ebx + 0x4f7], 0x80000
jmp 0x1001b14a
cmp al, 0x44
jne 0x1001b122
mov dword [ebx + 0x4f7], 0x100000
jmp 0x1001b14a
cmp al, 0x45
jne 0x1001b132
mov dword [ebx + 0x4f7], 0x200000
jmp 0x1001b14a
cmp al, 0x70
jne 0x1001b14a
mov dword [ebx + 0x4e7], 0x1000
mov dword [ebx + 0x4eb], 0x1000
movsx eax, al
cmp eax, 0x80
jne 0x1001b165
mov eax, 0x4000
mov dword [ebx + 0x4ef], eax
mov dword [ebx + 0x4f3], eax
add ecx, 8
cmp ecx, 0x20
jb 0x1001b04c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
add ecx, 4
dec eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], eax
jne 0x1001b045
mov eax, dword [ebp - 0x20]
mov ecx, 1
cmp eax, ecx
jb 0x1001b1cb
cmp eax, 2
jae 0x1001b1cb
cmp dword [ebx + 0x4ff], ecx
jne 0x1001b22d
test byte [ebx + 0x4fb], cl
je 0x1001b1bf
mov eax, 0x4000
mov dword [ebx + 0x4ef], eax
mov dword [ebx + 0x4f3], eax
jmp 0x1001b1cb
mov dword [ebx + 0x4ef], esi
mov dword [ebx + 0x4f3], esi
cmp dword [ebx + 0x4ff], ecx
jne 0x1001b22d
cmp dword [ebp - 0x10], 6
jne 0x1001b22d
cmp dword [ebp - 4], 5
jne 0x1001b22d
mov eax, dword [ebx + 0x4f7]
test eax, eax
jne 0x1001b1fa
mov dword [ebx + 0x503], 1
mov edi, str.Intel_Celeron
jmp 0x1001b210
cmp eax, 0x100000
jb 0x1001b22d
mov dword [ebx + 0x503], 3
mov edi, str.Intel_Pentium_II_Xeon
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebx + 0x4ff], 1
jne 0x1001b27a
cmp dword [ebp - 0x10], 6
jne 0x1001b27a
cmp dword [ebp - 4], 7
jne 0x1001b27a
cmp dword [ebx + 0x4f7], 0x100000
jb 0x1001b27a
or ecx, 0xffffffff
xor eax, eax
mov dword [ebx + 0x503], 5
mov edi, str.Intel_Pentium_III_Xeon
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret