Function at 0x1004cf00
Capabilities:
Check os version
Get common file path
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a0
mov eax, dword [0x10086ba0]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0xa8], 0x9c
lea eax, [ebp - 0xa8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
push 0xc8
lea ecx, [ebp - 0x388]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
call fcn.10047390
movzx edx, al
test edx, edx
je 0x1004cf8b
mov eax, dword [0x100881bc]
mov ecx, dword [eax*4 + 0x100ac5b0]
push ecx
push 0x10078558
push 0x1008b108
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0x1008b108
lea edx, [ebp - 0x388]
push edx
push 0x1007855c
lea eax, [ebp - 0x2c0]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
jmp 0x1004cff3
mov ecx, dword [0x100881bc]
mov edx, dword [ecx*4 + 0x100ac5b0]
push edx
push 0x10078564
push 0x1008b108
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
cmp dword [ebp - 0xa4], 5
jb 0x1004cfc1
mov dword [ebp - 0x3a0], str.drivers_
jmp 0x1004cfcb
mov dword [ebp - 0x3a0], 0x1006f9db
push 0x1008b108
mov eax, dword [ebp - 0x3a0]
push eax
lea ecx, [ebp - 0x388]
push ecx
push 0x10078574
lea edx, [ebp - 0x2c0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
lea eax, [ebp - 0xb0]
push eax
lea ecx, [ebp - 0x2c0]
push ecx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov dword [ebp - 0xac], eax
cmp dword [ebp - 0xac], 0
jbe 0x1004d159
mov edx, dword [ebp - 0xac]
push edx
call fcn.100165a5
add esp, 4
mov dword [ebp - 0x38c], eax
mov eax, dword [ebp - 0xac]
push eax
push 0
mov ecx, dword [ebp - 0x38c]
push ecx
call fcn.100139b0
add esp, 0xc
mov edx, dword [ebp - 0x38c]
push edx
mov eax, dword [ebp - 0xac]
push eax
push 0
lea ecx, [ebp - 0x2c0]
push ecx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x1004d14a
mov edx, dword [ebp - 0x38c]
mov dword [ebp - 0x394], edx
mov eax, dword [ebp - 0x394]
movzx ecx, word [eax + 4]
push ecx
push str.__type:_d__n
call fcn.1001513b
add esp, 8
mov edx, dword [ebp - 0x394]
add edx, 6
push edx
call fcn.10016e06
add esp, 4
mov ecx, dword [ebp - 0x394]
lea edx, [ecx + eax*2 + 8]
mov dword [ebp - 0x398], edx
mov eax, dword [ebp - 0x398]
sub eax, dword [ebp - 0x394]
add eax, 3
and eax, 0xfffffffc
add eax, dword [ebp - 0x394]
mov dword [ebp - 0x390], eax
lea ecx, [ebp - 0x39c]
call fcn.10001af0
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 0xc]
and edx, 0xffff
push edx
mov eax, dword [ebp - 0x390]
mov ecx, dword [eax + 0xc]
shr ecx, 0x10
push ecx
mov edx, dword [ebp - 0x390]
mov eax, dword [edx + 8]
and eax, 0xffff
push eax
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 8]
shr edx, 0x10
push edx
push str._d._d._d._d
lea eax, [ebp - 0x39c]
push eax
call fcn.100025d0
add esp, 0x18
mov ecx, dword [ebp - 0x39c]
push ecx
push 0x10078594
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea ecx, [ebp - 0x39c]
call fcn.10001850
mov eax, dword [ebp - 0x38c]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
jmp 0x1004d179
mov ecx, dword [0x100881bc]
mov edx, dword [ecx*4 + 0x100ac740]
push edx
push 0x10078598
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0xa
push 0
lea ecx, [ebp - 0xbc]
push ecx
call fcn.100139b0
add esp, 0xc
push 4
lea edx, [ebp - 0xbc]
push edx
push 0xff010197
push 0
call sub.RtlIhvOid.dll_Ordinal_2
add esp, 0x10
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xbc]
mov dword [eax], ecx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1001362b
mov esp, ebp
pop ebp
ret