Function at 0x439124
Capabilities:
Get file version info

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
xor esi, esi
mov ebx, ecx
push edi
mov dword [ebp - 8], esi
mov dword [ebp - 0xc], esi
mov dword [ebp - 4], esi
cmp dword [ebp + 8], esi
je 0x4391d8
mov edi, 0x409434
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebx + 0x14], eax
test eax, eax
jne 0x439193
mov eax, dword [section..data]
cmp eax, section..data
je 0x43918e
test byte [eax + 0x1c], 1
je 0x43918e
cmp byte [eax + 0x19], 2
jb 0x43918e
call fcn.0042386b
push eax
mov eax, dword [section..data]
mov edx, 0x409464
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0xc
pop ecx
call fcn.004238e7
or eax, 0xffffffff
jmp 0x4391db
push esi
push edi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov edi, eax
test edi, edi
jne 0x4391e2
mov eax, dword [section..data]
cmp eax, section..data
je 0x4391d8
test byte [eax + 0x1c], 1
je 0x4391d8
cmp byte [eax + 0x19], 1
jb 0x4391d8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov eax, dword [section..data]
mov edx, 0x409464
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0xd
pop ecx
call fcn.004238e7
push 0xfffffffffffffffd
pop eax
pop edi
pop esi
pop ebx
leave
ret 4
push edi
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov esi, eax
test esi, esi
je 0x439698
lea eax, [esi + edi]
cmp esi, eax
je 0x439206
push edi
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
push edi
xor edi, edi
push edi
push 0x409434
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x439262
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0xf
mov edx, 0x409464
pop ecx
call fcn.004238e7
jmp 0x4396c3
lea eax, [ebp - 0x14]
mov dword [ebp - 0x10], edi
push eax
lea eax, [ebp - 0x10]
mov dword [ebp - 0x14], edi
push eax
push 0x40944c
push esi
call dword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
jne 0x4392ba
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x10
jmp 0x439252
mov eax, dword [ebp - 0x10]
movzx edi, word [eax + 0xe]
call fcn.0049a356
movzx eax, ax
cmp eax, edi
je 0x4392d4
push 0xfffffffffffffffe
jmp 0x4396c5
push 0x409450
push dword [ebx + 0x14]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
jne 0x439319
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x12
jmp 0x4396b8
lea eax, [ebp - 8]
mov ecx, edi
push eax
push 0x414cb8
push 0x40f9ac
call dword [0x5035f0]
call edi
test eax, eax
jns 0x439366
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x13
jmp 0x4396b8
mov ecx, dword [ebp - 8]
mov eax, dword [ecx]
mov edi, dword [eax + 0xc]
lea eax, [ebx + 0xc]
push eax
push 0x40f99c
push 0
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 8]
mov ecx, edi
jns 0x4393d7
call dword [0x5035f0]
call edi
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 2
jb 0x4396c3
call fcn.0042386b
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x14
jmp 0x439252
call dword [0x5035f0]
call edi
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax]
lea eax, [ebp - 0xc]
push eax
push 0x406ce0
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
jns 0x43942f
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x15
jmp 0x4396b8
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx]
mov edi, dword [eax + 0x10]
lea eax, [ebp - 4]
push eax
push 0x40f98c
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 8]
mov ecx, edi
jns 0x439493
call dword [0x5035f0]
call edi
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x16
jmp 0x4396b8
call dword [0x5035f0]
call edi
push 0xc
call fcn.004fb25b
pop ecx
test eax, eax
je 0x4394b9
mov ecx, dword [ebx + 0x30]
and dword [eax + 4], 0
mov dword [eax], 0x401358
mov dword [eax + 8], ecx
jmp 0x4394bb
xor eax, eax
mov dword [ebx + 0x18], eax
test eax, eax
jne 0x439506
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 8]
mov ecx, edi
call dword [0x5035f0]
call edi
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x17
jmp 0x4396b8
lock inc dword [eax + 4]
mov ecx, dword [ebp - 4]
mov eax, dword [ecx]
mov edi, dword [eax + 0x14]
lea eax, [ebx + 0x10]
push eax
push dword [ebx + 0x18]
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 8]
mov ecx, edi
jns 0x439578
call dword [0x5035f0]
call edi
push dword [ebx + 0x18]
call fcn.0043dd90
and dword [ebx + 0x18], 0
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x18
jmp 0x4396b8
call dword [0x5035f0]
call edi
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax]
lea eax, [ebx + 0x24]
push eax
push 0x406cb0
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
js 0x439676
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax]
lea eax, [ebx + 0x28]
push eax
push 0x406cc0
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
js 0x439676
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax]
lea eax, [ebx + 0x2c]
push eax
push 0x406cd0
push ecx
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
jns 0x439616
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1a
jmp 0x4396b8
mov ecx, dword [ebx + 0x24]
push dword [ebx + 0x1c]
push ecx
mov eax, dword [ecx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x5035f0]
call edi
test eax, eax
jns 0x439656
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1b
jmp 0x4396b8
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 0xc]
mov dword [ecx], eax
mov eax, dword [ebx + 0xc]
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 4]
mov ecx, edi
call dword [0x5035f0]
call edi
xor edi, edi
inc edi
jmp 0x4396ca
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x19
jmp 0x4396b8
mov eax, dword [section..data]
cmp eax, section..data
je 0x4396c3
test byte [eax + 0x1c], 1
je 0x4396c3
cmp byte [eax + 0x19], 1
jb 0x4396c3
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0xe
mov edx, 0x409464
pop ecx
call fcn.00433258
push 0xfffffffffffffffd
pop edi
test esi, esi
je 0x4396d1
push esi
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov eax, edi
jmp 0x4391db