Function at 0x4049a0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4175f3
mov eax, dword fs:[0]
push eax
sub esp, 0x138
mov eax, dword [0x41fea0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x13c], 0
push 0x418268
push dword [ebp + 0xc]
mov dword [ebp - 4], 0
call fcn.0040704d
add esp, 8
test eax, eax
sete al
test al, al
je 0x404a49
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push 0x104
lea ecx, [ebp - 0x118]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x118]
lea edx, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404a30
sub ecx, edx
lea eax, [ebp - 0x118]
push ecx
push eax
lea ecx, [ebp + 0xc]
call fcn.00402fa0
call fcn.00402b80
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x404a65
push 0x80004005
call fcn.00401670
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp + 0xc]
mov ebx, 1
mov dword [ebp - 0x120], 0
mov edx, ebx
mov byte [ebp - 4], 2
sub edx, dword [eax - 4]
mov ecx, dword [eax - 8]
or ecx, edx
jge 0x404aa4
push 0
lea ecx, [ebp + 0xc]
call fcn.00402dc0
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x144]
push ecx
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov edi, eax
test edi, edi
jne 0x404ace
push 0x41dba4
lea eax, [ebp - 0x138]
mov dword [ebp - 0x138], ebx
push eax
call fcn.004077a1
push edi
call fcn.00407ca7
mov esi, eax
add esp, 4
test esi, esi
jne 0x404af4
push 0x41dba4
lea eax, [ebp - 0x134]
mov dword [ebp - 0x134], ebx
push eax
call fcn.004077a1
mov eax, dword [ebp + 0xc]
sub ebx, dword [eax - 4]
mov ecx, dword [eax - 8]
or ecx, ebx
jge 0x404b0e
push 0
lea ecx, [ebp + 0xc]
call fcn.00402dc0
mov eax, dword [ebp + 0xc]
push esi
push edi
push 0
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x404b37
push 0x41dba4
lea eax, [ebp - 0x128]
mov dword [ebp - 0x128], 1
push eax
call fcn.004077a1
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x120]
push eax
push 0x418604
push esi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x404b6f
push 0x41dba4
lea eax, [ebp - 0x12c]
mov dword [ebp - 0x12c], 1
push eax
call fcn.004077a1
mov eax, dword [ebp - 0x120]
mov ecx, dword [eax + 8]
mov edx, ecx
mov eax, dword [eax + 0xc]
mov edi, eax
shr edi, 0x10
shr edx, 0x10
movzx ecx, cx
movzx eax, ax
test edi, edi
jne 0x404bb3
test eax, eax
jne 0x404bb3
test edx, edx
jne 0x404b9b
test ecx, ecx
je 0x404bcb
push ecx
push edx
lea eax, [ebp - 0x11c]
push str._d._d
push eax
call fcn.00401870
add esp, 0x10
jmp 0x404bcb
push eax
push edi
push ecx
push edx
lea eax, [ebp - 0x11c]
push str._d._d._d._d
push eax
call fcn.00401870
add esp, 0x18
push esi
call fcn.00406d7d
mov esi, dword [ebp - 0x11c]
add esi, 0xfffffff0
push esi
call fcn.004016a0
mov ebx, dword [ebp - 0x130]
lea ecx, [esi + 0xc]
add eax, 0x10
mov byte [ebp - 4], 0
or edi, 0xffffffff
add esp, 8
mov dword [ebx], eax
mov eax, edi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x404c0b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp + 0xc]
add esi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x404c2c
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
jmp 0x404c5f
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00407792
mov esp, ebp
pop ebp
ret