Function at 0x420303
Capabilities:
Get file version info

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xf4
mov eax, dword [0x4434f4]
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.00420056
test eax, eax
je 0x4205c0
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 0x420514
mov ecx, ebx
call fcn.0041f47f
test eax, eax
je 0x4205c0
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 0x4205c0
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 0x420506
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xf4]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x420506
push 0xac
lea eax, [ebp - 0xc8]
push esi
push eax
call fcn.0041fb3c
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 0x420506
mov ecx, dword [ebp - 0xc8]
test ecx, ecx
jle 0x420426
movzx eax, cx
jmp 0x42042d
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 0x420457
add ax, dx
jmp 0x420478
cmp ax, dx
jae 0x420475
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 0x4204b9
mov edx, 0xffe8
add ax, dx
inc cx
mov word [ebp - 0xc], ax
mov word [ebp - 0xe], cx
cmp cx, 0x20
jne 0x4204b9
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 0x4204b9
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 0x420506
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 0x420506
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 0x42058a
push eax
call fcn.0044183a
mov ebx, eax
pop ecx
test ebx, ebx
je 0x4205c0
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 0x42057d
lea eax, [ebp - 0xec]
push eax
lea eax, [ebp - 0xd0]
push eax
push 0x4043e0
push ebx
call dword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x42057d
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.00441807
mov ebx, dword [ebp - 0xcc]
pop ecx
cmp dword [ebp - 0xd4], esi
jl 0x4205c0
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 0x4042f8
push 0x104
push ebx
call fcn.0040c0b5
add esp, 0x1c
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441b90
mov esp, ebp
pop ebp
ret