Function at 0x574860
Capabilities:
Check os version

Disassembly:
sub esp, 0xa4
push ebx
push ebp
push esi
push edi
xor esi, esi
mov edi, eax
xor ebx, ebx
mov ecx, dword [edi + 8]
mov al, byte [ecx]
cmp al, 0x20
je 0x57487d
cmp al, 9
jne 0x574883
inc ecx
mov dword [edi + 8], ecx
jmp 0x574870
mov edx, str.cpuspeed
call fcn.00574810
test al, al
mov ebp, 7
je 0x5748a7
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb0]
add eax, 8
jmp 0x574ef9
mov edx, 0x659890
call fcn.00574810
test al, al
je 0x5748c6
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb4]
add eax, 3
jmp 0x574ef9
mov edx, str.Caps
call fcn.00574810
test al, al
je 0x5748e5
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x510]
add eax, 4
jmp 0x574ef9
mov edx, str.Caps2
call fcn.00574810
test al, al
je 0x574904
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x514]
add eax, 5
jmp 0x574ef9
mov edx, str.Caps3
call fcn.00574810
test al, al
je 0x574923
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x518]
add eax, 5
jmp 0x574ef9
mov edx, str.PresentationIntervals
call fcn.00574810
test al, al
je 0x574942
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x51c]
add eax, 0x15
jmp 0x574ef9
mov edx, str.CursorCaps
call fcn.00574810
test al, al
je 0x574961
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x520]
add eax, 0xa
jmp 0x574ef9
mov edx, str.DevCaps
call fcn.00574810
test al, al
je 0x57497f
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x524]
add eax, ebp
jmp 0x574ef9
mov edx, str.PrimitiveMiscCaps
call fcn.00574810
test al, al
je 0x57499e
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x528]
add eax, 0x11
jmp 0x574ef9
mov edx, str.RasterCaps
call fcn.00574810
test al, al
je 0x5749bd
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x52c]
add eax, 0xa
jmp 0x574ef9
mov edx, str.ZCmpCaps
call fcn.00574810
test al, al
je 0x5749dc
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x530]
add eax, 8
jmp 0x574ef9
mov edx, str.SrcBlendCaps
call fcn.00574810
test al, al
je 0x5749fb
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x534]
add eax, 0xc
jmp 0x574ef9
mov edx, str.DestBlendCaps
call fcn.00574810
test al, al
je 0x574a1a
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x538]
add eax, 0xd
jmp 0x574ef9
mov edx, str.AlphaCmpCaps
call fcn.00574810
test al, al
je 0x574a39
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x53c]
add eax, 0xc
jmp 0x574ef9
mov edx, str.ShadeCaps
call fcn.00574810
test al, al
je 0x574a58
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x540]
add eax, 9
jmp 0x574ef9
mov edx, str.TextureCaps
call fcn.00574810
test al, al
je 0x574a77
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x544]
add eax, 0xb
jmp 0x574ef9
mov edx, str.TextureFilterCaps
call fcn.00574810
test al, al
je 0x574a96
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x548]
add eax, 0x11
jmp 0x574ef9
mov edx, str.CubeTextureFilterCaps
call fcn.00574810
test al, al
je 0x574ab5
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x54c]
add eax, 0x15
jmp 0x574ef9
mov edx, str.VolumeTextureFilterCaps
call fcn.00574810
test al, al
je 0x574ad4
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x550]
add eax, 0x17
jmp 0x574ef9
mov edx, str.TextureAddressCaps
call fcn.00574810
test al, al
je 0x574af3
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x554]
add eax, 0x12
jmp 0x574ef9
mov edx, str.VolumeTextureAddressCaps
call fcn.00574810
test al, al
je 0x574b12
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x558]
add eax, 0x18
jmp 0x574ef9
mov edx, str.LineCaps
call fcn.00574810
test al, al
je 0x574b31
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x55c]
add eax, 8
jmp 0x574ef9
mov edx, str.MaxTextureWidth
call fcn.00574810
test al, al
je 0x574b50
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x560]
add eax, 0xf
jmp 0x574ef9
mov edx, str.MaxVolumeExtent
call fcn.00574810
test al, al
je 0x574b6f
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x568]
add eax, 0xf
jmp 0x574ef9
mov edx, str.MaxTextureRepeat
call fcn.00574810
test al, al
je 0x574b8e
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x56c]
add eax, 0x10
jmp 0x574ef9
mov edx, str.MaxTextureAspectRatio
call fcn.00574810
test al, al
je 0x574bad
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x570]
add eax, 0x15
jmp 0x574ef9
mov edx, str.MaxAnisotropy
call fcn.00574810
test al, al
je 0x574bcc
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x574]
add eax, 0xd
jmp 0x574ef9
mov edx, str.StencilCaps
call fcn.00574810
test al, al
je 0x574beb
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x590]
add eax, 0xb
jmp 0x574ef9
mov edx, str.FVFCaps
call fcn.00574810
test al, al
je 0x574c09
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x594]
add eax, ebp
jmp 0x574ef9
mov edx, str.TextureOpCaps
call fcn.00574810
test al, al
je 0x574c28
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x598]
add eax, 0xd
jmp 0x574ef9
mov edx, str.MaxTextureBlendStages
call fcn.00574810
test al, al
je 0x574c47
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x59c]
add eax, 0x15
jmp 0x574ef9
mov edx, str.MaxSimultaneousTextures
call fcn.00574810
test al, al
je 0x574c66
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a0]
add eax, 0x17
jmp 0x574ef9
mov edx, str.VertexProcessingCaps
call fcn.00574810
test al, al
je 0x574c85
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a4]
add eax, 0x14
jmp 0x574ef9
mov edx, str.MaxActiveLights
call fcn.00574810
test al, al
je 0x574ca4
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a8]
add eax, 0xf
jmp 0x574ef9
mov edx, str.MaxUserClipPlanes
call fcn.00574810
test al, al
je 0x574cc3
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5ac]
add eax, 0x11
jmp 0x574ef9
mov edx, str.MaxVertexBlendMatrices
call fcn.00574810
test al, al
je 0x574ce2
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5b0]
add eax, 0x16
jmp 0x574ef9
mov edx, str.MaxVertexBlendMatrixIndex
call fcn.00574810
test al, al
je 0x574d01
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5b4]
add eax, 0x19
jmp 0x574ef9
mov edx, str.MaxPrimitiveCount
call fcn.00574810
test al, al
je 0x574d20
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5bc]
add eax, 0x11
jmp 0x574ef9
mov edx, str.MaxVertexIndex
call fcn.00574810
test al, al
je 0x574d3f
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c0]
add eax, 0xe
jmp 0x574ef9
mov edx, str.MaxStreams
call fcn.00574810
test al, al
je 0x574d5e
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c4]
add eax, 0xa
jmp 0x574ef9
mov edx, str.MaxStreamStride
call fcn.00574810
test al, al
je 0x574d7d
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c8]
add eax, 0xf
jmp 0x574ef9
mov edx, str.VertexShaderVersion
call fcn.00574810
test al, al
je 0x574d9c
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5cc]
add eax, 0x13
jmp 0x574ef9
mov edx, str.MaxVertexShaderConst
call fcn.00574810
test al, al
je 0x574dbb
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5d0]
add eax, 0x14
jmp 0x574ef9
mov edx, str.PixelShaderVersion
call fcn.00574810
test al, al
je 0x574dda
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5d4]
add eax, 0x12
jmp 0x574ef9
mov edx, str.videoram
call fcn.00574810
test al, al
je 0x574df9
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb8]
add eax, 8
jmp 0x574ef9
mov edx, str.subsysid
call fcn.00574810
test al, al
je 0x574e18
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x4ec]
add eax, 8
jmp 0x574ef9
mov edx, str.revision
call fcn.00574810
test al, al
je 0x574e37
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x4f0]
add eax, 8
jmp 0x574ef9
mov edx, str.guid
call fcn.00574810
test al, al
je 0x574e55
mov eax, dword [edi + 8]
mov ebx, 1
add eax, 4
jmp 0x574ef9
mov edx, str.driver
call fcn.00574810
test al, al
je 0x574e73
mov eax, dword [edi + 8]
mov ebx, 2
add eax, 6
jmp 0x574ef9
mov edx, 0x6598c8
call fcn.00574810
test al, al
je 0x5753ed
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x24], 0x94
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov eax, dword [esp + 0x30]
mov ecx, 2
cmp eax, ecx
jne 0x574ec3
mov eax, dword [esp + 0x24]
mov esi, 5
cmp eax, esi
jne 0x574eef
cmp dword [esp + 0x2c], 0xa28
jae 0x574eef
mov esi, 4
jmp 0x574eef
mov eax, dword [esp + 0x2c]
and eax, 0xffff
cmp eax, 0x8ae
mov esi, 3
ja 0x574eda
mov esi, ecx
cmp eax, 0x7ce
ja 0x574ee6
mov esi, 1
cmp eax, 0x3b6
ja 0x574eef
xor esi, esi
mov eax, dword [edi + 8]
mov ebx, 3
add eax, ecx
mov dword [edi + 8], eax
lea esp, [esp]
mov ecx, dword [edi + 8]
mov al, byte [ecx]
cmp al, 0x20
je 0x574f0d
cmp al, 9
jne 0x574f13
inc ecx
mov dword [edi + 8], ecx
jmp 0x574f00
mov eax, dword [edi + 8]
mov cx, word [eax]
cmp cx, 0x3d3d
jne 0x574f2a
add eax, 2
xor ebp, ebp
jmp 0x574fc6
cmp cx, 0x3d21
jne 0x574f3e
add eax, 2
mov ebp, 1
jmp 0x574fc6
cmp cx, 0x3e3c
jne 0x574f4f
add eax, 2
mov ebp, 1
jmp 0x574fc6
cmp cx, 0x3e3d
jne 0x574f60
add eax, 2
mov ebp, 4
jmp 0x574fc6
cmp cx, 0x3c3d
jne 0x574f71
add eax, 2
mov ebp, 5
jmp 0x574fc6
cmp cx, 0x3d3c
jne 0x574f82
add eax, 2
mov ebp, 5
jmp 0x574fc6
cmp cx, 0x3d3e
jne 0x574f93
add eax, 2
mov ebp, 4
jmp 0x574fc6
mov cl, byte [eax]
cmp cl, 0x3d
jne 0x574f9f
inc eax
xor ebp, ebp
jmp 0x574fc6
cmp cl, 0x3e
jne 0x574fab
mov ebp, 2
jmp 0x574fc5
cmp cl, 0x3c
jne 0x574fb7
mov ebp, 3
jmp 0x574fc5
cmp cl, 0x26
jne 0x5753dd
mov ebp, 6
inc eax
mov dword [edi + 8], eax
lea esp, [esp]
mov ecx, dword [edi + 8]
mov al, byte [ecx]
cmp al, 0x20
je 0x574fdd
cmp al, 9
jne 0x574fe3
inc ecx
mov dword [edi + 8], ecx
jmp 0x574fd0
cmp ebx, 1
jne 0x575131
cmp ebp, ebx
jbe 0x575000
pop edi
pop esi
pop ebp
mov eax, str.Only__or___allowed
pop ebx
add esp, 0xa4
ret
mov eax, edi
call fcn.00574760
mov esi, eax
cmp esi, 0xffffffff
je 0x5750c7
mov eax, edi
call fcn.00574760
cmp eax, 0xffffffff
je 0x5750c7
shl esi, 0x10
add esi, eax
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2d
mov dword [esp + 0x10], esi
mov dword [edi + 8], eax
jne 0x5750c7
mov eax, edi
call fcn.00574760
mov esi, eax
cmp esi, 0xffffffff
je 0x5750c7
mov eax, dword [edi + 8]
mov dl, byte [eax]
inc eax
cmp dl, 0x2d
mov dword [edi + 8], eax
jne 0x5750c7
mov eax, edi
call fcn.00574760
cmp eax, 0xffffffff
je 0x5750c7
shl eax, 0x10
add eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2d
mov dword [edi + 8], eax
jne 0x5750c7
mov eax, edi
call fcn.005747f0
mov esi, eax
cmp esi, 0xffffffff
je 0x5750c7
mov eax, dword [edi + 8]
mov dl, byte [eax]
inc eax
cmp dl, 0x2d
mov dword [edi + 8], eax
jne 0x5750c7
mov eax, edi
call fcn.005747f0
cmp eax, 0xffffffff
je 0x5750c7
shl eax, 0x10
add eax, esi
mov dword [esp + 0x18], eax
mov eax, edi
call fcn.005747f0
mov esi, eax
cmp esi, 0xffffffff
je 0x5750c7
mov eax, edi
call fcn.005747f0
cmp eax, 0xffffffff
jne 0x5750d7
pop edi
pop esi
pop ebp
mov eax, str.Invalid_GUID
pop ebx
add esp, 0xa4
ret
shl eax, 0x10
add eax, esi
add edi, 0x4f4
test ebp, ebp
mov dword [esp + 0x1c], eax
lea esi, [esp + 0x10]
mov ecx, 0x10
jne 0x575112
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x5750fe
sbb eax, eax
sbb eax, 0xffffffff
xor ecx, ecx
test eax, eax
sete cl
pop edi
pop esi
pop ebp
pop ebx
mov eax, ecx
add esp, 0xa4
ret
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x57511d
sbb eax, eax
sbb eax, 0xffffffff
xor edx, edx
test eax, eax
setne dl
pop edi
pop esi
pop ebp
pop ebx
mov eax, edx
add esp, 0xa4
ret
cmp ebx, 2
jne 0x575277
mov eax, edi
call fcn.00574390
mov esi, eax
cmp esi, 0xffffffff
je 0x575267
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2e
mov dword [edi + 8], eax
jne 0x575267
mov eax, edi
call fcn.00574390
mov ebx, eax
mov eax, dword [edi + 8]
mov dl, byte [eax]
shl esi, 0x10
add ebx, esi
inc eax
cmp dl, 0x2e
mov dword [edi + 8], eax
jne 0x575267
mov eax, edi
call fcn.00574390
mov esi, eax
cmp esi, 0xffffffff
je 0x575267
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2e
mov dword [edi + 8], eax
jne 0x575267
mov eax, edi
call fcn.00574390
mov ecx, dword [edi + 0x4dc]
mov edi, dword [edi + 0x4e0]
shl esi, 0x10
add eax, esi
cmp ebp, 5
ja case.default.0x5752a2
jmp dword [ebp*4 + 0x575400]
cmp ecx, eax
jne 0x57525a
cmp edi, ebx
jne 0x57525a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp ecx, eax
jne 0x5751f2
cmp edi, ebx
je 0x57525a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jl 0x57525a
jg 0x57520c
cmp ecx, eax
jbe 0x57525a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jg 0x57525a
jl 0x575226
cmp ecx, eax
jae 0x57525a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jl 0x57525a
jg 0x575240
cmp ecx, eax
jb 0x57525a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jg 0x57525a
jl 0x575240
cmp ecx, eax
jbe 0x575240
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xa4
ret
pop edi
pop esi
pop ebp
mov eax, str.Invalid_driver_number
pop ebx
add esp, 0xa4
ret
cmp ebx, 3
jne 0x575330
mov edx, str.win95
call fcn.00574810
test al, al
je 0x5752a9
xor eax, eax
mov ecx, dword [edi + 8]
add ecx, 5
mov dword [edi + 8], ecx
cmp ebp, 6
ja case.default.0x5752a2
jmp dword [ebp*4 + 0x575418]
mov edx, str.win98
call fcn.00574810
test al, al
je 0x5752be
mov eax, 1
jmp 0x575290
mov edx, str.win98se
call fcn.00574810
test al, al
je 0x5752d9
mov ecx, dword [edi + 8]
mov eax, 2
add ecx, 7
jmp 0x575296
mov edx, str.winme
call fcn.00574810
test al, al
je 0x5752ee
mov eax, 3
jmp 0x575290
mov edx, str.win2k
call fcn.00574810
test al, al
je 0x575303
mov eax, 4
jmp 0x575290
mov edx, str.winxp
call fcn.00574810
test al, al
je 0x575320
mov ecx, dword [edi + 8]
mov eax, 5
add ecx, eax
jmp 0x575296
pop edi
pop esi
pop ebp
mov eax, str.Unknown_OS
pop ebx
add esp, 0xa4
ret
mov eax, edi
call fcn.00574390
cmp eax, 0xffffffff
jne 0x575299
pop edi
pop esi
pop ebp
mov eax, str.Number_expected
pop ebx
add esp, 0xa4
ret
xor edx, edx
cmp esi, eax
sete dl
pop edi
pop esi
pop ebp
pop ebx
mov eax, edx
add esp, 0xa4
ret
xor ecx, ecx
cmp esi, eax
setne cl
pop edi
pop esi
pop ebp
pop ebx
mov eax, ecx
add esp, 0xa4
ret
pop edi
cmp eax, esi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0xa4
ret
pop edi
cmp esi, eax
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0xa4
ret
pop edi
cmp esi, eax
pop esi
sbb eax, eax
pop ebp
inc eax
pop ebx
add esp, 0xa4
ret
pop edi
cmp eax, esi
pop esi
sbb eax, eax
pop ebp
inc eax
pop ebx
add esp, 0xa4
ret
and eax, esi
pop edi
neg eax
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0xa4
ret
pop edi
pop esi
pop ebp
mov eax, str.Invalid
pop ebx
add esp, 0xa4
ret
pop edi
pop esi
pop ebp
mov eax, str.Unknown_operator
pop ebx
add esp, 0xa4
ret
pop edi
pop esi
pop ebp
mov eax, str.Unknown_value
pop ebx
add esp, 0xa4
ret