Function at 0x5f401b21
Capabilities:
Check os version

Disassembly:
mov eax, 0x5f492dfb
call sub.MSVCRT.dll__EH_prolog
sub esp, 0x58
and dword [ebp - 0x10], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
cmp ebx, 0x111
mov edi, ecx
je 0x5f401bd3
cmp ebx, 0x4e
je 0x5f401beb
mov esi, dword [ebp + 0x10]
cmp ebx, 6
je 0x5f401c0e
cmp ebx, 0x20
je 0x5f401c23
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov ebx, eax
mov eax, 0x1ff
and ebx, eax
and ecx, eax
push 7
xor ebx, ecx
call sym.MFC42.DLL_Ordinal_1196
mov ecx, dword [ebp + 8]
lea eax, [ebx + ebx*2]
cmp ecx, dword [eax*4 + 0x5f4d0348]
lea ebx, [eax*4 + 0x5f4d0348]
mov eax, dword [ebp - 0x14]
jne 0x5f401c71
cmp eax, dword [ebx + 8]
jne 0x5f401c71
mov ebx, dword [ebx + 4]
push 7
mov dword [ebp + 0x10], ebx
call sym.MFC42.DLL_Ordinal_1569
test ebx, ebx
jne 0x5f401c40
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0x10
push dword [ebp + 0x10]
mov eax, dword [edi]
push dword [ebp + 0xc]
call dword [eax + 0x80]
test eax, eax
jne 0x5f401e91
jmp 0x5f401bc0
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
je 0x5f401bc0
mov edx, dword [edi]
lea ecx, [ebp - 0x10]
push ecx
push eax
push dword [ebp + 0xc]
mov ecx, edi
call dword [edx + 0x84]
test eax, eax
je 0x5f401bc0
jmp case.0x5f401c6a.38
push esi
call sym.MFC42.DLL_Ordinal_2864
push eax
push dword [ebp + 0xc]
push edi
call fcn.5f404c0e
jmp 0x5f401b5b
mov eax, esi
shr eax, 0x10
push eax
movsx eax, si
push eax
push edi
call fcn.5f403203
test eax, eax
jne 0x5f401e91
jmp 0x5f401b64
cmp dword [ebp + 8], 0xc000
jae 0x5f401cdf
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebx + 0x14]
cmp dword [ecx + 8], 0x1a
mov eax, dword [ecx + 0x10]
je 0x5f45c6c3
dec eax
cmp eax, 0x30
ja case.0x5f401c6a.38
jmp dword [eax*4 + 0x5f401f6b]
test eax, eax
mov dword [ebx], ecx
mov dword [ebx + 8], eax
je 0x5f401d01
mov edx, 0xc000
cmp ecx, edx
jae 0x5f401caf
push 0
push 0
push ecx
push dword [eax + 4]
call sym.MFC42.DLL_Ordinal_1145
test eax, eax
mov dword [ebp + 0x10], eax
jne 0x5f401d11
mov eax, dword [ebp - 0x14]
call dword [eax]
test eax, eax
mov dword [ebp - 0x14], eax
je 0x5f401d01
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 8]
jmp 0x5f401c7e
mov eax, dword [eax + 4]
push 0
push 0
push edx
push eax
call sym.MFC42.DLL_Ordinal_1145
test eax, eax
mov dword [ebp + 0x10], eax
je 0x5f401c9b
mov ecx, dword [eax + 0x10]
mov edx, dword [ebp + 8]
cmp dword [ecx], edx
jne 0x5f45c69e
push 7
mov dword [ebx + 4], eax
call sym.MFC42.DLL_Ordinal_1569
mov ebx, dword [ebp + 0x10]
mov ebx, dword [ebx + 0x14]
push esi
push dword [ebp + 0xc]
mov ecx, edi
call ebx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x5f401cf9
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
push 1
pop eax
jmp 0x5f401bc2
and dword [ebx + 4], 0
push 7
call sym.MFC42.DLL_Ordinal_1569
jmp 0x5f401bc0
push 7
mov dword [ebx + 4], eax
call sym.MFC42.DLL_Ordinal_1569
mov ebx, dword [ebp + 0x10]
jmp 0x5f401c4d
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2859
push eax
mov ecx, edi
call ebx
jmp 0x5f401cea
push dword [ebp + 0xc]
jmp 0x5f401d2c
mov eax, esi
shr eax, 0x10
push eax
movsx eax, si
push eax
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
push eax
mov ecx, edi
call ebx
jmp 0x5f401cea
lea ecx, [ebp - 0x24]
call sym.MFC42.DLL_Ordinal_323
mov eax, dword [esi + 4]
and dword [ebp - 4], 0
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x20], eax
call sym.MFC42.DLL_Ordinal_567
mov eax, dword [esi]
mov esi, dword [esi + 8]
push eax
mov byte [ebp - 4], 1
mov dword [ebp - 0x44], eax
call sym.MFC42.DLL_Ordinal_2867
test eax, eax
jne 0x5f401d8e
mov eax, dword [edi + 0x38]
test eax, eax
jne 0x5f45c6e9
lea eax, [ebp - 0x64]
push esi
push eax
lea eax, [ebp - 0x24]
mov ecx, edi
push eax
call ebx
and dword [ebp - 0x20], 0
and dword [ebp - 0x44], 0
and byte [ebp - 4], 0
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x10], eax
call sym.MFC42.DLL_Ordinal_818
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call sym.MFC42.DLL_Ordinal_640
jmp case.0x5f401c6a.38
push esi
jmp 0x5f401d2c
mov ecx, edi
call ebx
jmp case.0x5f401c6a.38
push dword [ebp + 0xc]
jmp 0x5f401e6a
mov eax, esi
shr eax, 0x10
movsx eax, ax
push eax
movsx eax, si
push eax
jmp 0x5f401e57
mov eax, esi
shr eax, 0x10
push eax
movzx eax, si
push eax
push dword [ebp + 0xc]
jmp 0x5f401e80
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
push eax
push esi
call sym.MFC42.DLL_Ordinal_2864
push eax
xor eax, eax
cmp dword [edi + 0x20], esi
sete al
jmp 0x5f401e7f
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2863
push eax
jmp 0x5f401e6a
mov eax, esi
shr eax, 0x10
push eax
movzx eax, si
push eax
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2863
jmp 0x5f401e7f
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
jmp 0x5f401e1a
push esi
call sym.MFC42.DLL_Ordinal_2864
push eax
jmp 0x5f401e54
mov eax, dword [ebp + 0xc]
shr eax, 0x10
push eax
push esi
call sym.MFC42.DLL_Ordinal_2864
jmp 0x5f401e7a
push esi
push dword [ebp + 0xc]
mov ecx, edi
call ebx
jmp case.0x5f401c6a.38
mov ecx, edi
call ebx
jmp 0x5f401cea
push esi
mov ecx, edi
call ebx
jmp case.0x5f401c6a.38
mov eax, dword [ebp + 0xc]
push esi
shr eax, 0x10
push eax
movzx eax, word [ebp + 0xc]
push eax
mov ecx, edi
call ebx
jmp case.0x5f401c6a.38
push esi
mov ecx, edi
push dword [ebp + 0xc]
call ebx
mov dword [ebp - 0x10], 1
jmp case.0x5f401c6a.38
push 0
push 0
add eax, 0x18
push 0xc000
push eax
call sym.MFC42.DLL_Ordinal_1145
test eax, eax
mov dword [ebp + 0x10], eax
je 0x5f401c9b
mov eax, dword [ebp + 0x10]
jmp 0x5f401cc4
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov ecx, dword [ebp + 0x10]
cmp al, 4
sbb eax, eax
and al, 0xf0
add eax, 0x2f
jmp 0x5f401c60
push esi
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
push eax
jmp 0x5f401ce6
push dword [ebp - 0x44]
lea ecx, [eax + 0x24]
call sym.MFC42.DLL_Ordinal_3848
test eax, eax
je 0x5f401d8b
mov dword [ebp - 0x28], eax
jmp 0x5f401d8b
lea ecx, [ebp - 0x24]
call sym.MFC42.DLL_Ordinal_323
mov eax, dword [esi + 4]
push dword [esi + 8]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x24]
push eax
mov ecx, edi
mov dword [ebp - 4], 2
call ebx
and dword [ebp - 0x20], 0
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x24]
jmp 0x5f401db6
mov eax, dword [ebp + 0xc]
shr eax, 0x10
push eax
push esi
call sym.MFC42.DLL_Ordinal_2864
push eax
movzx eax, word [ebp + 0xc]
jmp 0x5f401d49
mov eax, dword [ebp + 0xc]
shr eax, 0x10
push eax
movzx eax, word [ebp + 0xc]
jmp 0x5f45c6e3
push esi
call sym.MFC42.DLL_Ordinal_2863
push eax
mov eax, dword [ebp + 0xc]
shr eax, 0x10
jmp 0x5f45c744
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2859
jmp 0x5f401e1a
push esi
jmp 0x5f401e34
mov eax, esi
shr eax, 0x10
push eax
movzx eax, si
push eax
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
jmp 0x5f401e7f
movsx eax, si
shr esi, 0x10
movsx ecx, si
push ecx
jmp 0x5f45c786
push esi
push dword [ebp + 0xc]
call sym.MFC42.DLL_Ordinal_2864
jmp 0x5f401de3
mov eax, dword [ebp + 0xc]
movsx edx, ax
shr eax, 0x10
cmp dword [ecx + 0x10], 0x1d
mov dword [ebp + 8], edx
movsx eax, ax
mov dword [ebp + 0xc], eax
jne 0x5f45c7d8
push esi
call sym.MFC42.DLL_Ordinal_2864
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
jmp 0x5f401e80
push eax
push edx
jmp 0x5f401e57
movsx eax, si
shr esi, 0x10
movsx ecx, si
push ecx
jmp 0x5f45c6e3
movsx eax, si
shr esi, 0x10
movsx ecx, si
push ecx
jmp 0x5f401def
movzx eax, si
shr esi, 0x10
push esi
push eax
mov eax, dword [ebp + 0xc]
mov ecx, edi
shr eax, 0x10
push eax
movzx eax, word [ebp + 0xc]
push eax
call ebx
mov dword [ebp - 0x10], eax
jmp 0x5f401c05