Function at 0x445835
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d1d8f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xe74
lea ecx, [ebp - 0x20]
call fcn.00420210
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x12c]
call fcn.00402dc0
mov byte [ebp - 4], 1
push 0x28
lea ecx, [ebp - 0x12c]
call fcn.004a7fee
lea ecx, [ebp - 0x12c]
call fcn.00430bb0
push eax
lea eax, [ebp - 0x154]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov byte [ebp - 0x159], 1
mov dword [ebp - 0x164], 0
mov dword [ebp - 0x168], 0
mov dword [ebp - 0x160], 0x190
mov byte [ebp - 0x15a], 0
mov cl, byte [ebp - 0x15a]
mov byte [ebp - 0x15b], cl
mov dl, byte [ebp - 0x15b]
mov byte [ebp - 0x15c], dl
mov byte [ebp - 0x158], 4
mov byte [ebp - 0x157], 0x10
mov byte [ebp - 0x156], 1
mov byte [ebp - 0x155], 0
push 0x48
push 0x5a
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push 5
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov dword [ebp - 0x16c], eax
push 0x48
push 0x5a
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push 8
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov dword [ebp - 0x170], eax
lea ecx, [ebp - 0x170]
push ecx
lea ecx, [ebp - 0x20]
call fcn.00420280
lea edx, [ebp - 0x20]
push edx
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
call dword [edx + 0x28]
mov dword [ebp - 0x10], eax
push 0x100
lea eax, [ebp - 0xa74]
push eax
call fcn.0040b040
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0xa74]
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov dword [ebp - 0x134], eax
lea eax, [ebp - 0xe74]
push eax
mov ecx, dword [ebp - 0x134]
push ecx
mov edx, dword [ebp - 0x18]
push edx
lea eax, [ebp - 0xa74]
push eax
call sub.VERSION.dll_GetFileVersionInfoA
lea ecx, [ebp - 0x134]
push ecx
lea edx, [ebp - 0x130]
push edx
push str.VarFileInfoTranslation
lea eax, [ebp - 0xe74]
push eax
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x445a37
mov ecx, dword [ebp - 0x130]
mov edx, dword [ecx]
shr edx, 0x10
and edx, 0xffff
and edx, 0xffff
push edx
mov eax, dword [ebp - 0x130]
xor ecx, ecx
mov cx, word [eax]
push ecx
push str.StringFileInfo_04x_04xProductVersion
lea edx, [ebp - 0x974]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x134]
push eax
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x974]
push edx
lea eax, [ebp - 0xe74]
push eax
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x445a37
mov ecx, dword [ebp - 0x14]
push ecx
lea edx, [ebp - 0x120]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [ebp - 0x124], 0x2e
mov eax, dword [ebp - 0x124]
push eax
lea ecx, [ebp - 0x120]
push ecx
call fcn.004905a0
add esp, 8
add eax, 1
mov dword [ebp - 0x128], eax
lea ecx, [ebp - 0x174]
call fcn.00402dc0
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x128]
push edx
lea ecx, [ebp - 0xe78]
call fcn.004a6fb9
mov dword [ebp - 0xe7c], eax
mov eax, dword [ebp - 0xe7c]
mov dword [ebp - 0xe80], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0xe80]
push ecx
lea ecx, [ebp - 0x174]
call fcn.004a7084
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xe78]
call fcn.004a6f4b
push 1
mov ecx, dword [ebp + 8]
call fcn.004ab40c
push 0
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov ecx, dword [ebp + 8]
call dword [eax + 0x30]
lea ecx, [ebp - 0x174]
push ecx
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 8]
cdq
sub eax, edx
sar eax, 1
add eax, 5
push eax
push 0x5c
mov ecx, dword [ebp + 8]
call fcn.00430da0
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
mov ecx, dword [ebp + 8]
call dword [edx + 0x28]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x174]
call fcn.004a6f4b
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x12c]
call fcn.004a6f4b
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20]
call fcn.00420260
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret