Function at 0x538a70
Capabilities:
Check os version
Get system information on windows

Disassembly:
mov al, byte [0x669800]
sub esp, 0xcc
push ebx
xor ebx, ebx
cmp al, bl
jne 0x538dfc
push ebp
mov dword [0x669610], ebx
mov dword [0x66960c], ebx
mov dword [0x669620], ebx
mov dword [0x669604], ebx
mov dword [0x5c1f78], ebx
mov dword [0x669600], ebx
mov dword [0x6695fc], ebx
mov dword [0x6695f8], ebx
mov dword [0x669608], ebx
mov dword [0x669614], ebx
mov dword [0x5c1f80], ebx
mov dword [0x5c1f7c], ebx
mov dword [0x669624], ebx
mov dword [0x669618], ebx
mov dword [0x66961c], ebx
mov dword [0x5c1f84], ebx
mov byte [0x669788], bl
call fcn.0053aea0
test eax, eax
je 0x538da7
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [esp + 0x30]
lea edx, [esp + 8]
push ebx
push edx
mov dword [0x5c1f78], ecx
mov dword [esp + 0x20], ebx
call fcn.0053aebb
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov dword [0x669788], ecx
mov ecx, dword [esp + 0x1c]
add esp, 8
cmp eax, ebx
mov ebp, eax
mov dword [0x66978c], edx
mov dword [0x669790], ecx
mov byte [0x669794], bl
jle 0x538db1
push esi
push edi
mov edi, str.GenuineIntel
mov esi, 0x669788
mov ecx, 0xd
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x538b76
mov dword [0x5c1f84], 1
jmp 0x538bd7
mov edi, str.AuthenticAMD
mov esi, 0x669788
mov ecx, 0xd
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x538b97
mov dword [0x669618], 1
jmp 0x538bd7
mov edi, str.CyrixInstead
mov esi, 0x669788
mov ecx, 0xd
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x538bb8
mov dword [0x66961c], 1
jmp 0x538bd7
mov edi, str.CentaurHauls
mov esi, 0x669788
mov ecx, 0xd
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x538bd7
mov dword [0x669624], 1
mov esi, 1
lea ecx, [esp + 0x10]
push esi
push ecx
call fcn.0053aebb
mov eax, dword [esp + 0x18]
mov ecx, eax
mov edx, eax
sar ecx, 8
sar edx, 4
and ecx, 0xf
and edx, 0xf
and eax, 0xf
add esp, 8
cmp ecx, 6
mov dword [0x6695f8], ecx
mov dword [0x6695fc], edx
mov dword [0x669600], eax
jl 0x538c1d
mov dword [0x5c1f7c], esi
lea eax, [esp + 0x10]
push DirectSoundCreate
push eax
call fcn.0053aebb
mov eax, dword [0x669618]
add esp, 8
cmp eax, ebx
je 0x538c6d
cmp dword [esp + 0x10], 0x80000000
jbe 0x538c6d
lea ecx, [esp + 0x10]
push reloc.DSOUND.dll_DirectSoundCreate
push ecx
call fcn.0053aebb
mov eax, dword [esp + 0x20]
mov edx, eax
shr edx, 0x1f
shr eax, 0x16
add esp, 8
and eax, esi
mov dword [0x669620], edx
mov dword [0x669608], eax
lea eax, [esp + 0x10]
push esi
push eax
call fcn.0053aebb
mov eax, dword [esp + 0x20]
mov ecx, eax
shr ecx, 0x1a
mov edx, eax
shr edx, 0x17
and ecx, esi
and edx, esi
mov dword [0x669610], ecx
mov ecx, eax
mov dword [0x669604], edx
mov edx, eax
shr ecx, 0x19
shr edx, 4
shr eax, 0xf
and ecx, esi
and edx, esi
and eax, esi
add esp, 8
cmp ecx, ebx
mov dword [0x66960c], ecx
mov dword [0x5c1f80], edx
mov dword [0x669614], eax
je 0x538cc7
mov dword [0x669608], esi
push str.ISMMX
call fcn.00581ad9
add esp, 4
cmp eax, ebx
je 0x538ce6
push eax
call fcn.0057ed0c
add esp, 4
mov dword [0x669604], eax
push str.ISK3D
call fcn.00581ad9
add esp, 4
cmp eax, ebx
je 0x538d05
push eax
call fcn.0057ed0c
add esp, 4
mov dword [0x669620], eax
lea eax, [esp + 0x48]
push eax
mov dword [esp + 0x4c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x58]
pop edi
cmp eax, esi
pop esi
jne 0x538d34
cmp dword [esp + 0x48], ebx
jne 0x538d34
mov dword [0x669610], ebx
mov dword [0x66960c], ebx
push str.ISSSE
call fcn.00581ad9
add esp, 4
cmp eax, ebx
je 0x538d53
push eax
call fcn.0057ed0c
add esp, 4
mov dword [0x66960c], eax
push str.ISSSE2
call fcn.00581ad9
add esp, 4
cmp eax, ebx
je 0x538d72
push eax
call fcn.0057ed0c
add esp, 4
mov dword [0x669610], eax
push str.ISMOVNT
call fcn.00581ad9
add esp, 4
cmp eax, ebx
je 0x538d91
push eax
call fcn.0057ed0c
add esp, 4
mov dword [0x669608], eax
cmp ebp, 2
jl 0x538db1
lea ecx, [esp + 8]
push 2
push ecx
call fcn.0053aebb
add esp, 8
jmp 0x538db1
call fcn.0053aed9
mov dword [0x66961c], eax
call fcn.00538550
mov ecx, eax
cmp ecx, ebx
mov eax, 0xf4240
pop ebp
jne 0x538dce
call fcn.005386a0
mov ecx, eax
mov eax, 5
mul ecx
cmp edx, ebx
mov dword [0x669808], eax
mov dword [0x66980c], edx
mov dword [0x669804], eax
ja 0x538de9
cmp eax, 0xffffffff
jb 0x538df3
mov dword [0x669804], 0xffffffff
mov byte [0x669800], 1
jmp 0x538e07
mov edx, dword [0x66980c]
mov eax, dword [0x669808]
cmp dword [0x669804], ebx
je 0x538f08
mov dword [0x669798], eax
mov dword [0x66979c], edx
call fcn.0053af00
mov edx, 0x6697a0
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
cmp cl, bl
jne 0x538e28
mov edx, dword [0x5c1f78]
mov dword [0x6697b0], edx
xor eax, eax
mov cl, byte [eax + 0x669788]
mov byte [eax + 0x6697b4], cl
inc eax
cmp cl, bl
jne 0x538e40
mov eax, dword [0x6695f8]
mov ecx, dword [0x6695fc]
mov edx, dword [0x669600]
mov dword [0x6697c4], eax
mov eax, dword [0x5c1f7c]
mov dword [0x6697c8], ecx
mov ecx, dword [0x5c1f84]
mov dword [0x6697cc], edx
mov edx, dword [0x669618]
mov dword [0x6697d0], eax
mov eax, dword [0x66961c]
mov dword [0x6697d4], ecx
mov ecx, dword [0x669624]
mov dword [0x6697d8], edx
mov edx, dword [0x5c1f80]
mov dword [0x6697dc], eax
mov eax, dword [0x669614]
mov dword [0x6697e0], ecx
mov ecx, dword [0x669608]
mov dword [0x6697e4], edx
mov edx, dword [0x669604]
mov dword [0x6697e8], eax
mov eax, dword [0x66960c]
mov dword [0x6697ec], ecx
mov ecx, dword [0x669610]
mov dword [0x6697f0], edx
mov edx, dword [0x669620]
mov dword [0x6697f4], eax
mov eax, dword [0x669804]
mov dword [0x6697f8], ecx
mov dword [0x6697fc], edx
pop ebx
add esp, 0xcc
ret
push 0x68
push 0x669798
call fcn.0053a7f0
mov eax, dword [0x669804]
add esp, 8
pop ebx
add esp, 0xcc
ret