Function at 0x5621c0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57f8f0
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push esi
push edi
mov eax, dword [0x5f4e20]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x24], edi
mov dword [ebp - 4], 0
mov byte [edi + 0x18], 0
lea ecx, [ebp - 0x18]
call fcn.00401b20
mov byte [ebp - 4], 1
mov ebx, dword [ebp + 8]
test ebx, ebx
jne 0x562234
push ebx
lea eax, [ebp + 8]
push eax
call fcn.00559180
mov byte [ebp - 4], 2
push eax
lea ecx, [ebp - 0x18]
call fcn.00401f50
mov byte [ebp - 4], 1
lea ecx, [ebp + 8]
call fcn.004010f0
mov ebx, dword [ebp - 0x18]
lea eax, [ebp - 0x28]
push eax
push ebx
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov dword [ebp + 8], eax
test eax, eax
jne 0x562292
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [edi], eax
push str._PSVersionInfo::Open__GetFileVersionInfoSize:
lea eax, [ebp + 0xc]
push eax
mov ecx, edi
call fcn.00406580
mov byte [ebp - 4], 3
push dword [eax]
push 0x585068
push 0x10000
call fcn.0055b110
add esp, 0xc
mov byte [ebp - 4], 1
lea ecx, [ebp + 0xc]
call fcn.004010f0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.004010f0
jmp 0x562489
push eax
lea ecx, [edi + 4]
call fcn.0055c840
mov eax, dword [edi + 4]
mov esi, dword [eax + 4]
push esi
push dword [ebp + 8]
push 0
push ebx
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x5622fe
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [edi], eax
push str._PSVersionInfo::Open__GetFileVersionInfo:
lea eax, [ebp + 0xc]
push eax
mov ecx, edi
call fcn.00406580
mov byte [ebp - 4], 4
push dword [eax]
push 0x585068
push 0x10000
call fcn.0055b110
add esp, 0xc
mov byte [ebp - 4], 1
lea ecx, [ebp + 0xc]
call fcn.004010f0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.004010f0
jmp 0x562489
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x585064
push esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x562369
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx + 0xc]
mov word [edi + 8], ax
movzx eax, word [ecx + 0xe]
mov word [edi + 0xa], ax
mov eax, dword [ecx + 8]
mov word [edi + 0xc], ax
movzx eax, word [ecx + 0xa]
mov word [edi + 0xe], ax
mov eax, dword [ecx + 0x14]
mov word [edi + 0x10], ax
movzx eax, word [ecx + 0x16]
mov word [edi + 0x12], ax
mov eax, dword [ecx + 0x10]
mov word [edi + 0x14], ax
movzx eax, word [ecx + 0x12]
mov word [edi + 0x16], ax
movzx eax, word [ecx + 0xa]
mov word [edi + 0x20], ax
mov eax, dword [ecx + 8]
mov word [edi + 0x22], ax
mov eax, dword [ecx + 0xc]
mov dword [edi + 0x24], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
push eax
push str.VarFileInfoTranslation
push esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
jne 0x5623df
push str._PSVersionInfo::Open__::VerQueryValue_failed__Could_not_find_Translation_block._Will_attempt_to_use_code_in_first_string_block
push 0x10000
call fcn.0055b710
add esp, 8
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x5bc5a8
push esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x5623be
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x5623be
add eax, 6
push eax
lea ecx, [edi + 0x1c]
call fcn.00401110
jmp 0x562423
push str._PSVersionInfo::Open__::VerQueryValue_failed__Could_not_find_StringFileInfo_block__trying_default
push 0x10000
call fcn.0055b710
add esp, 8
push str.040904e4
lea ecx, [edi + 0x1c]
call fcn.00401110
jmp 0x562423
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov bx, word [ebp + 0xc]
mov esi, dword [ebp - 0x14]
lea ecx, [ecx]
mov eax, dword [ebp - 0x1c]
shr eax, 1
cmp ecx, eax
jae 0x562401
cmp word [esi + ecx*2], bx
jne 0x56245b
mov edx, ecx
movzx eax, word [esi + edx*2]
movzx ecx, word [esi + edx*2 + 2]
mov edx, eax
shl edx, 0x10
or edx, ecx
push edx
push str._1_08lx_
lea eax, [edi + 0x1c]
push eax
call fcn.00558bd0
add esp, 0xc
lea ecx, [edi + 4]
push dword [ebp + 8]
call fcn.0040a160
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.004010f0
mov dword [ebp - 4], 0xffffffff
mov byte [edi + 0x18], 1
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
add ecx, 2
mov dword [ebp - 0x20], ecx
jmp 0x5623f0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8