Function at 0x4198e0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x434
mov eax, dword [0x5023a4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x410
lea eax, [ebp - 0x418]
mov edi, ecx
push 0
push eax
mov dword [ebp - 0x420], edi
call fcn.0049b560
add esp, 0xc
lea eax, [ebp - 0x418]
push 0x208
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
call fcn.004031c0
mov ecx, eax
test ecx, ecx
je 0x419b69
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x424]
mov dword [ebp - 0x424], eax
lea eax, [ebp - 0x418]
push eax
call fcn.004034f0
test al, al
jne 0x419986
lea ecx, [ebp - 0x418]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x419964
sub ecx, edx
lea eax, [ebp - 0x418]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x424]
call fcn.00403760
call fcn.004031c0
mov ecx, eax
test ecx, ecx
je 0x419b73
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x41c]
push 0x4d9ea8
mov dword [ebp - 0x41c], eax
call fcn.004034f0
test al, al
jne 0x4199c9
push 0
push 0x4d9ea8
lea ecx, [ebp - 0x41c]
call fcn.00403760
lea ecx, [ebp - 0x41c]
mov dword [ebp - 0x428], 0
call fcn.004036a0
mov esi, dword [ebp - 0x424]
lea eax, [ebp - 0x42c]
push eax
push esi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov ebx, eax
test ebx, ebx
je 0x419ae4
push ebx
call fcn.004aa4e6
mov edi, eax
add esp, 4
test edi, edi
je 0x419ade
push edi
push ebx
push 0
push esi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
je 0x419a6c
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x424]
push eax
push 0x4da000
push edi
call dword [sym.imp.VERSION.dll_VerQueryValueW]
mov ecx, dword [ebp - 0x424]
mov dword [ebp - 0x428], eax
movzx eax, word [ecx + 0xc]
push eax
movzx eax, word [ecx + 0xe]
push eax
movzx eax, word [ecx + 8]
push eax
movzx eax, word [ecx + 0xa]
push eax
lea eax, [ebp - 0x41c]
push str._d._d._d._d
push eax
call fcn.004040c0
add esp, 0x18
push edi
call fcn.004a3673
add esp, 4
cmp dword [ebp - 0x428], 0
je 0x419ade
mov ebx, dword [ebp - 0x420]
lea eax, [ebp - 0x41c]
push eax
mov ecx, ebx
call fcn.00403f10
mov edx, dword [ebp - 0x41c]
or edi, 0xffffffff
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x419ab2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x419b56
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049765c
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x420]
call fcn.004031c0
mov ecx, eax
test ecx, ecx
je 0x419b7d
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov ecx, edi
push 0x4d9ea8
mov dword [edi], eax
call fcn.004034f0
test al, al
jne 0x419b1b
push 0
push 0x4d9ea8
mov ecx, edi
call fcn.00403760
mov edx, dword [ebp - 0x41c]
or edi, 0xffffffff
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x419b3b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x419b50
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov ebx, dword [ebp - 0x420]
mov ecx, dword [ebp - 4]
mov eax, ebx
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0049765c
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00402f10
push 0x80004005
call fcn.00402f10
push 0x80004005
call fcn.00402f10
int3