Function at 0x42007a
Capabilities:
Get file version info

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xf4
mov eax, dword [0x4424f4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xor esi, esi
mov ebx, ecx
mov edx, esi
mov dword [ebp - 0xcc], ebx
mov dword [ebp - 0xd8], edx
mov edx, 0x104
push edi
mov edi, esi
call fcn.0041fdd5
test eax, eax
je 0x420337
lea eax, [ebp - 0xdc]
mov dword [ebp - 0xdc], esi
push eax
push ebx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov dword [ebp - 0xd0], eax
test eax, eax
jne 0x42028b
mov ecx, ebx
call fcn.0041f21e
test eax, eax
je 0x420337
push esi
push 0x80
push 3
push esi
push 1
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0xd0], eax
cmp eax, 0xffffffff
je 0x420337
lea ecx, [ebp - 0xf4]
mov dword [ebp - 0xd4], 0x80004005
push ecx
push esi
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetFileTime]
test eax, eax
je 0x42027d
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xf4]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x42027d
push 0xac
lea eax, [ebp - 0xc8]
push esi
push eax
call sub.msvcrt.dll_memset
movzx edi, word [ebp - 0x12]
add esp, 0xc
movzx eax, word [ebp - 0xe]
movzx edx, word [ebp - 0x14]
shl edi, 0x10
or edi, eax
mov dword [ebp - 0xd8], edx
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xd4], esi
push eax
call dword [sym.imp.KERNEL32.dll_GetTimeZoneInformation]
cmp eax, 0xffffffff
je 0x42027d
mov ecx, dword [ebp - 0xc8]
test ecx, ecx
jle 0x42019d
movzx eax, cx
jmp 0x4201a4
mov eax, ecx
neg eax
movzx eax, ax
xor edx, edx
movzx eax, ax
mov dword [ebp - 0xcc], 0x3c
div dword [ebp - 0xcc]
cmp ecx, 1
mov cx, word [ebp - 0xe]
movzx edx, ax
mov ax, word [ebp - 0xc]
jge 0x4201ce
add ax, dx
jmp 0x4201ef
cmp ax, dx
jae 0x4201ec
mov dword [ebp - 0xcc], 0xffff
add cx, word [ebp - 0xcc]
add ax, 0x18
mov word [ebp - 0xe], cx
sub ax, dx
mov word [ebp - 0xc], ax
cmp ax, 0x17
jbe 0x420230
mov edx, 0xffe8
add ax, dx
inc cx
mov word [ebp - 0xc], ax
mov word [ebp - 0xe], cx
cmp cx, 0x20
jne 0x420230
mov ax, word [ebp - 0x12]
xor ecx, ecx
inc ecx
inc ax
mov word [ebp - 0xe], cx
mov word [ebp - 0x12], ax
cmp ax, 0xd
jne 0x420230
inc word [ebp - 0x14]
mov word [ebp - 0x12], cx
fldz
lea eax, [ebp - 0xe8]
push eax
lea eax, [ebp - 0x14]
push eax
fstp qword [ebp - 0xe8]
call dword [sym.imp.OLEAUT32.dll_VariantTimeToSystemTime]
test eax, eax
je 0x42027d
fld qword [ebp - 0xe8]
lea eax, [ebp - 0x14]
push eax
push ecx
push ecx
fstp qword [esp]
call dword [sym.imp.OLEAUT32.dll_UnRegisterTypeLib]
test eax, eax
je 0x42027d
movzx edi, word [ebp - 0x12]
movzx edx, word [ebp - 0x14]
movzx eax, word [ebp - 0xe]
shl edi, 0x10
mov dword [ebp - 0xd8], edx
or edi, eax
push dword [ebp - 0xd0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x420301
push eax
call fcn.00440dea
mov ebx, eax
pop ecx
test ebx, ebx
je 0x420337
push ebx
push dword [ebp - 0xd0]
mov dword [ebp - 0xd4], 0x80004005
push esi
push dword [ebp - 0xcc]
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
je 0x4202f4
lea eax, [ebp - 0xec]
push eax
lea eax, [ebp - 0xd0]
push eax
push 0x4043f0
push ebx
call dword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x4202f4
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xd4], esi
mov edx, dword [eax + 8]
mov edi, dword [eax + 0xc]
mov dword [ebp - 0xd8], edx
push ebx
call fcn.00440db7
mov ebx, dword [ebp - 0xcc]
pop ecx
cmp dword [ebp - 0xd4], esi
jl 0x420337
mov ecx, dword [ebp - 0xd8]
xor eax, eax
lea esi, [eax + 1]
movzx eax, di
push eax
shr edi, 0x10
push edi
movzx eax, cx
push eax
shr ecx, 0x10
push ecx
push 0x404308
push 0x104
push ebx
call fcn.0040c0e1
add esp, 0x1c
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441130
leave