Function at 0x57cb90
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 0x57cbad
cmp al, 9
jne 0x57cbb3
inc ecx
mov dword [edi + 8], ecx
jmp 0x57cba0
mov edx, str.cpuspeed
call fcn.0057cb40
test al, al
mov ebp, 7
je 0x57cbd7
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb0]
add eax, 8
jmp 0x57d229
mov edx, 0x5fd008
call fcn.0057cb40
test al, al
je 0x57cbf6
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb4]
add eax, 3
jmp 0x57d229
mov edx, str.Caps
call fcn.0057cb40
test al, al
je 0x57cc15
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x510]
add eax, 4
jmp 0x57d229
mov edx, str.Caps2
call fcn.0057cb40
test al, al
je 0x57cc34
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x514]
add eax, 5
jmp 0x57d229
mov edx, str.Caps3
call fcn.0057cb40
test al, al
je 0x57cc53
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x518]
add eax, 5
jmp 0x57d229
mov edx, str.PresentationIntervals
call fcn.0057cb40
test al, al
je 0x57cc72
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x51c]
add eax, 0x15
jmp 0x57d229
mov edx, str.CursorCaps
call fcn.0057cb40
test al, al
je 0x57cc91
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x520]
add eax, 0xa
jmp 0x57d229
mov edx, str.DevCaps
call fcn.0057cb40
test al, al
je 0x57ccaf
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x524]
add eax, ebp
jmp 0x57d229
mov edx, str.PrimitiveMiscCaps
call fcn.0057cb40
test al, al
je 0x57ccce
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x528]
add eax, 0x11
jmp 0x57d229
mov edx, str.RasterCaps
call fcn.0057cb40
test al, al
je 0x57cced
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x52c]
add eax, 0xa
jmp 0x57d229
mov edx, str.ZCmpCaps
call fcn.0057cb40
test al, al
je 0x57cd0c
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x530]
add eax, 8
jmp 0x57d229
mov edx, str.SrcBlendCaps
call fcn.0057cb40
test al, al
je 0x57cd2b
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x534]
add eax, 0xc
jmp 0x57d229
mov edx, str.DestBlendCaps
call fcn.0057cb40
test al, al
je 0x57cd4a
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x538]
add eax, 0xd
jmp 0x57d229
mov edx, str.AlphaCmpCaps
call fcn.0057cb40
test al, al
je 0x57cd69
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x53c]
add eax, 0xc
jmp 0x57d229
mov edx, str.ShadeCaps
call fcn.0057cb40
test al, al
je 0x57cd88
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x540]
add eax, 9
jmp 0x57d229
mov edx, str.TextureCaps
call fcn.0057cb40
test al, al
je 0x57cda7
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x544]
add eax, 0xb
jmp 0x57d229
mov edx, str.TextureFilterCaps
call fcn.0057cb40
test al, al
je 0x57cdc6
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x548]
add eax, 0x11
jmp 0x57d229
mov edx, str.CubeTextureFilterCaps
call fcn.0057cb40
test al, al
je 0x57cde5
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x54c]
add eax, 0x15
jmp 0x57d229
mov edx, str.VolumeTextureFilterCaps
call fcn.0057cb40
test al, al
je 0x57ce04
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x550]
add eax, 0x17
jmp 0x57d229
mov edx, str.TextureAddressCaps
call fcn.0057cb40
test al, al
je 0x57ce23
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x554]
add eax, 0x12
jmp 0x57d229
mov edx, str.VolumeTextureAddressCaps
call fcn.0057cb40
test al, al
je 0x57ce42
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x558]
add eax, 0x18
jmp 0x57d229
mov edx, str.LineCaps
call fcn.0057cb40
test al, al
je 0x57ce61
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x55c]
add eax, 8
jmp 0x57d229
mov edx, str.MaxTextureWidth
call fcn.0057cb40
test al, al
je 0x57ce80
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x560]
add eax, 0xf
jmp 0x57d229
mov edx, str.MaxVolumeExtent
call fcn.0057cb40
test al, al
je 0x57ce9f
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x568]
add eax, 0xf
jmp 0x57d229
mov edx, str.MaxTextureRepeat
call fcn.0057cb40
test al, al
je 0x57cebe
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x56c]
add eax, 0x10
jmp 0x57d229
mov edx, str.MaxTextureAspectRatio
call fcn.0057cb40
test al, al
je 0x57cedd
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x570]
add eax, 0x15
jmp 0x57d229
mov edx, str.MaxAnisotropy
call fcn.0057cb40
test al, al
je 0x57cefc
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x574]
add eax, 0xd
jmp 0x57d229
mov edx, str.StencilCaps
call fcn.0057cb40
test al, al
je 0x57cf1b
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x590]
add eax, 0xb
jmp 0x57d229
mov edx, str.FVFCaps
call fcn.0057cb40
test al, al
je 0x57cf39
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x594]
add eax, ebp
jmp 0x57d229
mov edx, str.TextureOpCaps
call fcn.0057cb40
test al, al
je 0x57cf58
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x598]
add eax, 0xd
jmp 0x57d229
mov edx, str.MaxTextureBlendStages
call fcn.0057cb40
test al, al
je 0x57cf77
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x59c]
add eax, 0x15
jmp 0x57d229
mov edx, str.MaxSimultaneousTextures
call fcn.0057cb40
test al, al
je 0x57cf96
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a0]
add eax, 0x17
jmp 0x57d229
mov edx, str.VertexProcessingCaps
call fcn.0057cb40
test al, al
je 0x57cfb5
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a4]
add eax, 0x14
jmp 0x57d229
mov edx, str.MaxActiveLights
call fcn.0057cb40
test al, al
je 0x57cfd4
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5a8]
add eax, 0xf
jmp 0x57d229
mov edx, str.MaxUserClipPlanes
call fcn.0057cb40
test al, al
je 0x57cff3
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5ac]
add eax, 0x11
jmp 0x57d229
mov edx, str.MaxVertexBlendMatrices
call fcn.0057cb40
test al, al
je 0x57d012
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5b0]
add eax, 0x16
jmp 0x57d229
mov edx, str.MaxVertexBlendMatrixIndex
call fcn.0057cb40
test al, al
je 0x57d031
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5b4]
add eax, 0x19
jmp 0x57d229
mov edx, str.MaxPrimitiveCount
call fcn.0057cb40
test al, al
je 0x57d050
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5bc]
add eax, 0x11
jmp 0x57d229
mov edx, str.MaxVertexIndex
call fcn.0057cb40
test al, al
je 0x57d06f
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c0]
add eax, 0xe
jmp 0x57d229
mov edx, str.MaxStreams
call fcn.0057cb40
test al, al
je 0x57d08e
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c4]
add eax, 0xa
jmp 0x57d229
mov edx, str.MaxStreamStride
call fcn.0057cb40
test al, al
je 0x57d0ad
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5c8]
add eax, 0xf
jmp 0x57d229
mov edx, str.VertexShaderVersion
call fcn.0057cb40
test al, al
je 0x57d0cc
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5cc]
add eax, 0x13
jmp 0x57d229
mov edx, str.MaxVertexShaderConst
call fcn.0057cb40
test al, al
je 0x57d0eb
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5d0]
add eax, 0x14
jmp 0x57d229
mov edx, str.PixelShaderVersion
call fcn.0057cb40
test al, al
je 0x57d10a
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x5d4]
add eax, 0x12
jmp 0x57d229
mov edx, str.videoram
call fcn.0057cb40
test al, al
je 0x57d129
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xb8]
add eax, 8
jmp 0x57d229
mov edx, str.subsysid
call fcn.0057cb40
test al, al
je 0x57d148
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x4ec]
add eax, 8
jmp 0x57d229
mov edx, str.revision
call fcn.0057cb40
test al, al
je 0x57d167
mov eax, dword [edi + 8]
mov esi, dword [edi + 0x4f0]
add eax, 8
jmp 0x57d229
mov edx, str.guid
call fcn.0057cb40
test al, al
je 0x57d185
mov eax, dword [edi + 8]
mov ebx, 1
add eax, 4
jmp 0x57d229
mov edx, str.driver
call fcn.0057cb40
test al, al
je 0x57d1a3
mov eax, dword [edi + 8]
mov ebx, 2
add eax, 6
jmp 0x57d229
mov edx, 0x5fd040
call fcn.0057cb40
test al, al
je 0x57d71d
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 0x57d1f3
mov eax, dword [esp + 0x24]
mov esi, 5
cmp eax, esi
jne 0x57d21f
cmp dword [esp + 0x2c], 0xa28
jae 0x57d21f
mov esi, 4
jmp 0x57d21f
mov eax, dword [esp + 0x2c]
and eax, 0xffff
cmp eax, 0x8ae
mov esi, 3
ja 0x57d20a
mov esi, ecx
cmp eax, 0x7ce
ja 0x57d216
mov esi, 1
cmp eax, 0x3b6
ja 0x57d21f
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 0x57d23d
cmp al, 9
jne 0x57d243
inc ecx
mov dword [edi + 8], ecx
jmp 0x57d230
mov eax, dword [edi + 8]
mov cx, word [eax]
cmp cx, 0x3d3d
jne 0x57d25a
add eax, 2
xor ebp, ebp
jmp 0x57d2f6
cmp cx, 0x3d21
jne 0x57d26e
add eax, 2
mov ebp, 1
jmp 0x57d2f6
cmp cx, 0x3e3c
jne 0x57d27f
add eax, 2
mov ebp, 1
jmp 0x57d2f6
cmp cx, 0x3e3d
jne 0x57d290
add eax, 2
mov ebp, 4
jmp 0x57d2f6
cmp cx, 0x3c3d
jne 0x57d2a1
add eax, 2
mov ebp, 5
jmp 0x57d2f6
cmp cx, 0x3d3c
jne 0x57d2b2
add eax, 2
mov ebp, 5
jmp 0x57d2f6
cmp cx, 0x3d3e
jne 0x57d2c3
add eax, 2
mov ebp, 4
jmp 0x57d2f6
mov cl, byte [eax]
cmp cl, 0x3d
jne 0x57d2cf
inc eax
xor ebp, ebp
jmp 0x57d2f6
cmp cl, 0x3e
jne 0x57d2db
mov ebp, 2
jmp 0x57d2f5
cmp cl, 0x3c
jne 0x57d2e7
mov ebp, 3
jmp 0x57d2f5
cmp cl, 0x26
jne 0x57d70d
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 0x57d30d
cmp al, 9
jne 0x57d313
inc ecx
mov dword [edi + 8], ecx
jmp 0x57d300
cmp ebx, 1
jne 0x57d461
cmp ebp, ebx
jbe 0x57d330
pop edi
pop esi
pop ebp
mov eax, str.Only__or___allowed
pop ebx
add esp, 0xa4
ret
mov eax, edi
call fcn.0057ca90
mov esi, eax
cmp esi, 0xffffffff
je 0x57d3f7
mov eax, edi
call fcn.0057ca90
cmp eax, 0xffffffff
je 0x57d3f7
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 0x57d3f7
mov eax, edi
call fcn.0057ca90
mov esi, eax
cmp esi, 0xffffffff
je 0x57d3f7
mov eax, dword [edi + 8]
mov dl, byte [eax]
inc eax
cmp dl, 0x2d
mov dword [edi + 8], eax
jne 0x57d3f7
mov eax, edi
call fcn.0057ca90
cmp eax, 0xffffffff
je 0x57d3f7
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 0x57d3f7
mov eax, edi
call fcn.0057cb20
mov esi, eax
cmp esi, 0xffffffff
je 0x57d3f7
mov eax, dword [edi + 8]
mov dl, byte [eax]
inc eax
cmp dl, 0x2d
mov dword [edi + 8], eax
jne 0x57d3f7
mov eax, edi
call fcn.0057cb20
cmp eax, 0xffffffff
je 0x57d3f7
shl eax, 0x10
add eax, esi
mov dword [esp + 0x18], eax
mov eax, edi
call fcn.0057cb20
mov esi, eax
cmp esi, 0xffffffff
je 0x57d3f7
mov eax, edi
call fcn.0057cb20
cmp eax, 0xffffffff
jne 0x57d407
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 0x57d442
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x57d42e
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 0x57d44d
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 0x57d5a7
mov eax, edi
call fcn.0057c6c0
mov esi, eax
cmp esi, 0xffffffff
je 0x57d597
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2e
mov dword [edi + 8], eax
jne 0x57d597
mov eax, edi
call fcn.0057c6c0
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 0x57d597
mov eax, edi
call fcn.0057c6c0
mov esi, eax
cmp esi, 0xffffffff
je 0x57d597
mov eax, dword [edi + 8]
mov cl, byte [eax]
inc eax
cmp cl, 0x2e
mov dword [edi + 8], eax
jne 0x57d597
mov eax, edi
call fcn.0057c6c0
mov ecx, dword [edi + 0x4dc]
mov edi, dword [edi + 0x4e0]
shl esi, 0x10
add eax, esi
cmp ebp, 5
ja case.default.0x57d5d2
jmp dword [ebp*4 + 0x57d730]
cmp ecx, eax
jne 0x57d58a
cmp edi, ebx
jne 0x57d58a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp ecx, eax
jne 0x57d522
cmp edi, ebx
je 0x57d58a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jl 0x57d58a
jg 0x57d53c
cmp ecx, eax
jbe 0x57d58a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jg 0x57d58a
jl 0x57d556
cmp ecx, eax
jae 0x57d58a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jl 0x57d58a
jg 0x57d570
cmp ecx, eax
jb 0x57d58a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xa4
ret
cmp edi, ebx
jg 0x57d58a
jl 0x57d570
cmp ecx, eax
jbe 0x57d570
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 0x57d660
mov edx, str.win95
call fcn.0057cb40
test al, al
je 0x57d5d9
xor eax, eax
mov ecx, dword [edi + 8]
add ecx, 5
mov dword [edi + 8], ecx
cmp ebp, 6
ja case.default.0x57d5d2
jmp dword [ebp*4 + 0x57d748]
mov edx, str.win98
call fcn.0057cb40
test al, al
je 0x57d5ee
mov eax, 1
jmp 0x57d5c0
mov edx, str.win98se
call fcn.0057cb40
test al, al
je 0x57d609
mov ecx, dword [edi + 8]
mov eax, 2
add ecx, 7
jmp 0x57d5c6
mov edx, str.winme
call fcn.0057cb40
test al, al
je 0x57d61e
mov eax, 3
jmp 0x57d5c0
mov edx, str.win2k
call fcn.0057cb40
test al, al
je 0x57d633
mov eax, 4
jmp 0x57d5c0
mov edx, str.winxp
call fcn.0057cb40
test al, al
je 0x57d650
mov ecx, dword [edi + 8]
mov eax, 5
add ecx, eax
jmp 0x57d5c6
pop edi
pop esi
pop ebp
mov eax, str.Unknown_OS
pop ebx
add esp, 0xa4
ret
mov eax, edi
call fcn.0057c6c0
cmp eax, 0xffffffff
jne 0x57d5c9
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