Function at 0x40f5ac
Capabilities:
Get common file path
Get file version info

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x9e8
call fcn.0045b2e8
cmp eax, 1
je 0x40f5cd
xor eax, eax
add esp, 0x9e8
pop ebx
pop ebp
pop esi
pop edi
ret
xor eax, eax
lea edx, [esp + 0x5b0]
mov byte [esp + 0x8b4], al
mov byte [esp + 0x7b4], al
mov byte [esp + 0x6b4], al
push 0x104
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [esp + 0x4ac]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [esp + 0x3a8]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea edi, [esp + 0x5b0]
mov edx, 0x4b9288
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40f633
lea edi, [esp + 0x4ac]
mov edx, 0x4b9294
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40f653
lea edi, [esp + 0x3a8]
mov edx, 0x4b92a8
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40f673
lea edx, [esp + 0x5b0]
lea eax, [esp + 0x9d4]
push eax
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebp, eax
test ebp, ebp
je 0x40f727
push ebp
call fcn.00485d1c
pop ecx
mov ebx, eax
lea edx, [esp + 0x5b0]
push ebx
push ebp
push 0
push edx
call sub.VERSION.dll_GetFileVersionInfoA
lea ecx, [esp + 0x9c8]
lea edx, [esp + 0x9c4]
push edx
push ecx
push 0x4b91c0
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x40f6f4
lea ecx, [esp + 0x9c8]
lea edx, [esp + 0x9c4]
push edx
push ecx
push 0x4b91e8
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x40f718
lea edx, [esp + 0x8b4]
push 0xfe
push dword [esp + 0x9cc]
push edx
call fcn.004869b0
push ebx
call fcn.00485bcc
add esp, 0x10
jmp 0x40f727
mov byte [esp + 0x8b4], 0
push ebx
call fcn.00485bcc
pop ecx
lea edx, [esp + 0x4ac]
lea eax, [esp + 0x9d0]
push eax
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebp, eax
test ebp, ebp
je 0x40f7d1
push ebp
call fcn.00485d1c
pop ecx
mov ebx, eax
lea edx, [esp + 0x4ac]
push ebx
push ebp
push 0
push edx
call sub.VERSION.dll_GetFileVersionInfoA
lea ecx, [esp + 0x9c0]
lea edx, [esp + 0x9bc]
push edx
push ecx
push 0x4b91c0
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x40f79e
lea ecx, [esp + 0x9c0]
lea edx, [esp + 0x9bc]
push edx
push ecx
push 0x4b91e8
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x40f7c2
lea edx, [esp + 0x7b4]
push 0xfe
push dword [esp + 0x9c4]
push edx
call fcn.004869b0
push ebx
call fcn.00485bcc
add esp, 0x10
jmp 0x40f7d1
mov byte [esp + 0x7b4], 0
push ebx
call fcn.00485bcc
pop ecx
lea edx, [esp + 0x3a8]
lea eax, [esp + 0x9cc]
push eax
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebp, eax
test ebp, ebp
je 0x40f87b
push ebp
call fcn.00485d1c
pop ecx
mov ebx, eax
lea edx, [esp + 0x3a8]
push ebx
push ebp
push 0
push edx
call sub.VERSION.dll_GetFileVersionInfoA
lea ecx, [esp + 0x9b8]
lea edx, [esp + 0x9b4]
push edx
push ecx
push 0x4b91c0
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x40f848
lea ecx, [esp + 0x9b8]
lea edx, [esp + 0x9b4]
push edx
push ecx
push 0x4b91e8
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x40f86c
lea edx, [esp + 0x6b4]
push 0xfe
push dword [esp + 0x9bc]
push edx
call fcn.004869b0
push ebx
call fcn.00485bcc
add esp, 0x10
jmp 0x40f87b
mov byte [esp + 0x6b4], 0
push ebx
call fcn.00485bcc
pop ecx
lea edi, [esp + 0x8b4]
mov esi, 0x4b92bc
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40f8a7
or dl, dl
je 0x40f8a3
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40f8a7
add edi, 2
add esi, 2
or dl, dl
jne 0x40f887
xor eax, eax
jmp 0x40f8ac
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f8be
mov eax, 1
mov dword [esp + 0x9e4], eax
jmp 0x40f8c7
xor eax, eax
mov dword [esp + 0x9e4], eax
lea edi, [esp + 0x8b4]
mov esi, 0x4b92c4
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40f8f3
or dl, dl
je 0x40f8ef
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40f8f3
add edi, 2
add esi, 2
or dl, dl
jne 0x40f8d3
xor eax, eax
jmp 0x40f8f8
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f908
mov eax, 1
mov dword [esp + 0x9e4], eax
lea edi, [esp + 0x7b4]
mov esi, 0x4b92cc
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40f934
or dl, dl
je 0x40f930
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40f934
add edi, 2
add esi, 2
or dl, dl
jne 0x40f914
xor eax, eax
jmp 0x40f939
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f94b
mov eax, 1
mov dword [esp + 0x9e0], eax
jmp 0x40f954
xor eax, eax
mov dword [esp + 0x9e0], eax
lea edi, [esp + 0x6b4]
mov esi, 0x4b92d8
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40f980
or dl, dl
je 0x40f97c
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40f980
add edi, 2
add esi, 2
or dl, dl
jne 0x40f960
xor eax, eax
jmp 0x40f985
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f997
mov eax, 1
mov dword [esp + 0x9dc], eax
jmp 0x40f9a0
xor eax, eax
mov dword [esp + 0x9dc], eax
call fcn.0040fe08
movzx eax, al
test eax, eax
je 0x40f9ba
mov eax, 1
mov dword [esp + 0x9d8], eax
jmp 0x40f9c3
xor eax, eax
mov dword [esp + 0x9d8], eax
mov eax, dword [esp + 0x9e4]
test eax, eax
je 0x40fa2a
mov eax, dword [esp + 0x9e0]
test eax, eax
je 0x40fa24
mov eax, dword [esp + 0x9dc]
test eax, eax
je 0x40fa1e
mov eax, dword [esp + 0x9d8]
test eax, eax
jne 0x40f9f5
xor ebp, ebp
xor ebx, ebx
jmp 0x40fa2e
call fcn.00410088
test eax, eax
je 0x40fa05
mov ebp, 1
jmp 0x40fa07
xor ebp, ebp
call fcn.00410368
movzx eax, al
test eax, eax
je 0x40fa1a
mov ebx, 1
jmp 0x40fa2e
xor ebx, ebx
jmp 0x40fa2e
xor ebp, ebp
xor ebx, ebx
jmp 0x40fa2e
xor ebp, ebp
xor ebx, ebx
jmp 0x40fa2e
xor ebp, ebp
xor ebx, ebx
movzx eax, byte [esp + 0x9fc]
test eax, eax
je 0x40fdba
lea esi, [esp]
lea edi, [esp + 0x5b0]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x40fa48
lea edi, [esp]
mov edx, 0x4b92e0
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fa64
lea edi, [esp]
lea edx, [esp + 0x8b4]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fa82
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fa9e
lea edi, [esp]
lea edx, [esp + 0x4ac]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fabc
lea edi, [esp]
mov edx, 0x4b92e0
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fad8
lea edi, [esp]
lea edx, [esp + 0x7b4]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40faf6
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fb12
lea edi, [esp]
lea edx, [esp + 0x3a8]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fb30
lea edi, [esp]
mov edx, 0x4b92e0
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fb4c
lea edi, [esp]
lea edx, [esp + 0x6b4]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fb6a
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fb86
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fba2
mov eax, dword [esp + 0x9d8]
test eax, eax
je 0x40fbf1
lea edi, [esp]
mov edx, 0x4b92ec
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fbc9
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fbe5
jmp 0x40fc29
lea edi, [esp]
mov edx, 0x4b9304
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc03
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc1f
test ebx, ebx
je 0x40fc67
lea edi, [esp]
mov edx, 0x4b9320
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc3f
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc5b
jmp 0x40fc9f
lea edi, [esp]
mov edx, 0x4b9348
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc79
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fc95
test ebp, ebp
je 0x40fce0
lea edi, [esp]
mov edx, 0x4b9374
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fcb5
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fcd1
jmp 0x40fda7
lea edi, [esp]
mov edx, 0x4b9394
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fcf2
lea eax, [esp + 0x30c]
push 0x9c
push 0
push eax
call fcn.004910c4
add esp, 0xc
mov eax, 0x9c
xor ecx, ecx
lea edx, [esp + 0x30c]
mov word [esp + 0x330], ax
mov word [esp + 0x332], cx
push edx
push 0xffffffffffffffff
push ecx
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov eax, dword [esp + 0x374]
cmp eax, 8
je 0x40fd51
cmp eax, 0x10
je 0x40fd51
cmp eax, 0x20
jne 0x40fd6f
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fd63
jmp 0x40fda7
lea edi, [esp]
mov edx, 0x4b93b0
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fd81
lea edi, [esp]
mov edx, 0x4b8718
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x40fd9d
xor edx, edx
lea eax, [esp]
push edx
push 0x4b93e0
push eax
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [esp + 0x9e4]
test eax, eax
je 0x40f5c0
mov eax, dword [esp + 0x9e0]
test eax, eax
je 0x40f5c0
mov eax, dword [esp + 0x9dc]
test eax, eax
je 0x40f5c0
mov eax, dword [esp + 0x9d8]
test eax, eax
je 0x40f5c0
mov eax, 1
add esp, 0x9e8
pop ebx
pop ebp
pop esi
pop edi
ret