Function at 0x406805
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x272c
call fcn.00408420
mov eax, dword [0x40e4b8]
xor eax, esp
mov dword [esp + 0x2728], eax
mov ecx, dword [esp + 0x2738]
mov eax, dword [esp + 0x273c]
push ebp
push esi
mov esi, dword [esp + 0x2738]
push edi
xor ebp, ebp
mov edi, 0x80004005
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], edi
cmp ecx, ebp
je 0x4069a1
cmp eax, ebp
je 0x4069a1
push ebx
mov ebx, dword [esp + 0x2744]
cmp bx, bp
jne 0x40647c
call fcn.00405050
test al, al
je 0x4064e1
mov edx, dword [0x40e560]
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x58]
push ecx
push ebp
push ebp
push str.LanguageID
push edx
mov dword [esp + 0x5c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4064e1
mov eax, dword [esp + 0x54]
movzx ecx, ax
mov dword [esp + 0x2744], ecx
cmp ax, bp
je 0x4064e1
mov ebx, ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x24]
lea eax, [esp + 0x1c]
push eax
push esi
mov dword [esp + 0x24], ebp
call ecx
test eax, eax
jne 0x4064e1
mov eax, dword [esp + 0x1c]
cmp eax, ebp
je 0x4064e1
push eax
push str._sLanguagesidm_.lng
lea edx, [esp + 0x3f0]
push 0x208
push edx
call dword [sym.imp.MSVCR90.dll_swprintf_s]
add esp, 0x10
lea eax, [esp + 0x198]
push eax
lea ecx, [esp + 0x3ec]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov dword [esp + 0x58], esi
cmp esi, 0xffffffff
jne 0x406500
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, edi
pop ebx
mov ecx, dword [esp + 0x2734]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.0040840e
add esp, 0x272c
ret 0x10
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x1c4]
push eax
push ecx
push 0x40ae38
lea edx, [esp + 0x3f4]
push 0x208
push edx
call dword [sym.imp.MSVCR90.dll_swprintf_s]
push 0x40ae34
lea eax, [esp + 0x400]
push eax
lea ecx, [esp + 0x34]
push ecx
mov dword [esp + 0x38], ebp
call dword [sym.imp.MSVCR90.dll__wfopen_s]
mov eax, dword [esp + 0x38]
add esp, 0x20
cmp eax, ebp
je 0x406755
push eax
lea edx, [esp + 0x7fc]
push 0x1f40
push edx
call dword [sym.imp.MSVCR90.dll_fgets]
mov esi, eax
add esp, 0xc
cmp esi, ebp
je 0x40673f
push 3
push 0x40af18
push esi
call dword [sym.imp.MSVCR90.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x406596
mov dword [esp + 0x20], 0xfde9
add esi, 3
jmp 0x406645
lea eax, [esp + 0x84]
push eax
mov dword [esp + 0x24], ebp
xor edi, edi
mov dword [esp + 0x88], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x4065e3
cmp dword [esp + 0x94], 2
jne 0x4065e3
mov eax, dword [esp + 0x88]
cmp eax, 0xa
jb 0x4065e3
ja 0x4065de
cmp dword [esp + 0x90], 0x70b
jb 0x4065e3
mov edi, 1
call dword [sym.imp.KERNEL32.dll_GetACP]
cmp eax, 0xfde9
jne 0x406645
cmp edi, ebp
je 0x406645
xor eax, eax
mov ecx, 0x400
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x64], ebp
movzx eax, bx
cmp bx, cx
ja 0x406628
add eax, ecx
push 0x1000
lea edx, [esp + 0x68]
push edx
push eax
call dword [sym.imp.GDI32.dll_TranslateCharsetInfo]
test eax, eax
je 0x406645
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], eax
push str.__t_r_n
push esi
call dword [sym.imp.MSVCR90.dll_strspn]
add esp, 8
add esi, eax
mov eax, esi
lea edx, [eax + 1]
jmp 0x406660
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x406660
sub eax, edx
je 0x40673f
mov edi, dword [sym.imp.MSVCR90.dll_sscanf]
lea ecx, [esp + 0x14]
push ecx
push str._lang___x
push esi
call edi
add esp, 0xc
cmp eax, 1
jne 0x40673f
movzx edx, bx
cmp dword [esp + 0x14], edx
jne 0x40673f
mov esi, dword [esp + 0x3c]
lea eax, [esp + 0x34]
push eax
push 1
push esi
call dword [sym.imp.OLEAUT32.dll_SafeArrayLock]
lea ecx, [esp + 0x4c]
push ecx
push 1
push esi
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
mov ebx, dword [esp + 0x4c]
sub ebx, dword [esp + 0x34]
lea edx, [esp + 0x5c]
push edx
push 1
inc ebx
push 8
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebp
call dword [sym.imp.OLEAUT32.dll_SafeArrayDestroy]
mov ebp, eax
mov dword [esp + 0x28], ebp
test ebp, ebp
je 0x406736
mov dword [esp + 0x2c], 0
test ebx, ebx
jle 0x406710
push 0
lea eax, [esp + 0x30]
push eax
push ebp
call dword [sym.imp.OLEAUT32.dll_SafeArrayCopy]
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, ebx
mov dword [esp + 0x2c], eax
jl 0x4066f5
mov ecx, dword [esp + 0x18]
push ecx
lea edx, [esp + 0x7fc]
push 0x1f40
push edx
call dword [sym.imp.MSVCR90.dll_fgets]
add esp, 0xc
test eax, eax
jne 0x406787
push ebp
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetDim]
mov ebx, dword [esp + 0x2744]
xor ebp, ebp
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.MSVCR90.dll_fclose]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x3c]
add esp, 4
cmp edi, ebp
jge 0x406770
lea eax, [esp + 0x198]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x406500
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [esp + 0x1c]
push ecx
jmp 0x4064db
mov edi, dword [sym.imp.MSVCR90.dll_sscanf]
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x7fc]
push str.__u_
push ecx
mov byte [esp + 0x1f], 0
call edi
add esp, 0xc
cmp eax, 1
je 0x4067cd
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x17]
push eax
lea ecx, [esp + 0x800]
push str.__c_u_
push ecx
call edi
add esp, 0x10
cmp eax, 2
jne case.0x4067e2.1
movsx eax, byte [esp + 0x13]
cmp eax, 0x74
ja case.0x4067e2.1
movzx edx, byte [eax + 0x4069c0]
jmp dword [edx*4 + 0x4069ac]
or dword [esp + 0x14], 0x1000000
jmp case.0x4067e2.0
or dword [esp + 0x14], 0x2000000
jmp case.0x4067e2.0
or dword [esp + 0x14], 0x4000000
lea eax, [esp + 0x7f8]
push 0x3d
push eax
call dword [sym.imp.MSVCR90.dll_strchr]
mov esi, eax
add esp, 8
test esi, esi
je case.0x4067e2.1
xor eax, eax
mov dword [esp + 0x24], eax
test ebx, ebx
jle case.0x4067e2.1
mov ecx, dword [esp + 0x34]
add eax, ecx
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x48]
mov dword [esp + 0x40], eax
push edx
lea eax, [esp + 0x44]
push eax
push ecx
call dword [sym.imp.OLEAUT32.dll_SafeArrayPutElement]
test eax, eax
jl 0x40685d
mov edx, dword [esp + 0x48]
cmp edx, dword [esp + 0x14]
je 0x40686f
mov eax, dword [esp + 0x24]
inc eax
cmp eax, ebx
mov dword [esp + 0x24], eax
jl 0x406830
jmp case.0x4067e2.1
inc esi
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x406875
sub eax, edx
je 0x40689b
cmp byte [eax + esi - 1], 0xa
jne 0x40688b
dec eax
mov byte [eax + esi], cl
test eax, eax
jbe 0x40689d
cmp byte [eax + esi - 1], 0xd
jne 0x40689b
dec eax
mov byte [eax + esi], 0
test eax, eax
je case.0x4067e2.1
push 0x40aef0
push 0x40aeec
push esi
call fcn.004062d0
push 0x40aee8
push 0x40aee4
push esi
call fcn.004062d0
push 0x40aee0
push 0x40aedc
push esi
call fcn.004062d0
push 0x40aed8
push 0x40aed4
push esi
call fcn.004062d0
push 0x40aed0
push 0x40aecc
push esi
call fcn.004062d0
mov eax, dword [esp + 0x5c]
add esp, 0x3c
push 0
push 0
push 0xffffffffffffffff
push esi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
test edi, edi
je case.0x4067e2.1
lea ecx, [edi - 1]
push ecx
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov ebp, eax
test ebp, ebp
je 0x406954
mov edx, dword [esp + 0x20]
push edi
push ebp
push 0xffffffffffffffff
push esi
push 0
push edx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x40694d
mov ecx, dword [esp + 0x28]
push ebp
lea eax, [esp + 0x28]
push eax
push ecx
call dword [sym.imp.OLEAUT32.dll_SafeArrayCopy]
inc dword [esp + 0x30]
push ebp
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
push edx
lea eax, [esp + 0x7fc]
push 0x1f40
push eax
call dword [sym.imp.MSVCR90.dll_fgets]
add esp, 0xc
test eax, eax
jne 0x406781
cmp dword [esp + 0x30], eax
je 0x40672f
mov eax, dword [esp + 0x50]
mov ecx, 0x2008
mov word [eax], cx
mov dword [eax + 8], ebp
mov dword [esp + 0x38], 0
jmp 0x406736
mov eax, 0x80070057
jmp 0x4064e4