Function at 0x4ea7d0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x104
mov eax, dword [0x595c60]
xor eax, esp
mov dword [esp + 0x100], eax
push ebx
mov ebx, ecx
push esi
push edi
mov edi, edx
cmp dword [ebx + 0x14], 8
jb 0x4ea7fb
mov eax, dword [ebx]
jmp 0x4ea7fd
mov eax, ebx
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov esi, eax
test esi, esi
je 0x4eaa8d
push esi
call fcn.004ea3a0
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
je 0x4eaa14
cmp dword [ebx + 0x14], 8
jb 0x4ea832
mov ecx, dword [ebx]
jmp 0x4ea834
mov ecx, ebx
push eax
push esi
push 0
push ecx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
je 0x4eaa14
mov esi, dword [sym.imp.VERSION.dll_VerQueryValueW]
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push str.VarFileInfoTranslation
push dword [esp + 0x20]
call esi
mov ecx, dword [esp + 0x1c]
movzx eax, word [ecx + 2]
push eax
movzx eax, word [ecx]
push eax
push str.StringFileInfo_04X_04XFileVersion
lea eax, [esp + 0x4c]
push 0x64
push eax
call fcn.004eab00
add esp, 0x14
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x48]
push eax
push dword [esp + 0x20]
call esi
push dword [esp + 0x18]
mov ecx, edi
call fcn.0047c630
mov esi, dword [0x596f88]
cmp esi, 0x596f88
je 0x4ea8f5
test byte [esi + 0x1c], 1
je 0x4ea8f5
cmp byte [esi + 0x19], 2
jb 0x4ea8f5
cmp dword [edi + 0x14], 8
jb 0x4ea8c7
mov ecx, dword [edi]
jmp 0x4ea8c9
mov ecx, edi
cmp dword [ebx + 0x14], 8
jb 0x4ea8d3
mov eax, dword [ebx]
jmp 0x4ea8d5
mov eax, ebx
push ecx
push eax
push dword [esi + 0x14]
mov edx, 0x56f840
mov ecx, 0xa
push dword [esi + 0x10]
call fcn.004ea620
mov esi, dword [0x596f88]
add esp, 0x10
push 0xffffffffffffffff
mov eax, 0x309
mov ecx, edi
push 0x56bc08
mov dword [esp + 0x18], eax
call fcn.004857f0
cmp eax, 0xffffffff
je 0x4eaa24
cmp dword [edi + 0x14], 8
lea edx, [eax - 1]
mov dword [esp + 0xc], edx
jb 0x4ea926
mov ecx, dword [edi]
jmp 0x4ea928
mov ecx, edi
xor esi, esi
push edx
mov word [ecx + eax*2], si
mov ecx, edi
push 0x56bc08
call fcn.004857f0
mov esi, eax
cmp esi, 0xffffffff
je 0x4eaa1e
mov edx, dword [esp + 0xc]
lea ecx, [esi + 1]
push edi
call fcn.004eaaa0
add esp, 4
test al, al
je 0x4eaa1e
lea eax, [esi - 1]
mov ecx, edi
push eax
push 0x56bc08
mov dword [esp + 0x14], eax
call fcn.004857f0
mov esi, eax
cmp esi, 0xffffffff
je 0x4eaa1e
mov edx, dword [esp + 0xc]
lea ecx, [esi + 1]
push edi
call fcn.004eaaa0
add esp, 4
test al, al
je 0x4eaa1e
lea eax, [esi - 1]
mov ecx, edi
push eax
push 0x56bc08
mov dword [esp + 0x14], eax
call fcn.004857f0
mov esi, eax
cmp esi, 0xffffffff
je 0x4eaa1e
mov edx, dword [esp + 0xc]
lea ecx, [esi + 1]
push edi
call fcn.004eaaa0
add esp, 4
test al, al
je 0x4eaa1e
dec esi
mov ecx, edi
push esi
push 0x56bc08
call fcn.004857f0
cmp eax, 0xffffffff
je 0x4eaa1e
inc eax
mov edx, esi
push edi
mov ecx, eax
mov dword [esp + 0x10], eax
call fcn.004eaaa0
add esp, 4
test al, al
je 0x4eaa1e
push 0xffffffffffffffff
push dword [esp + 0x10]
lea eax, [esp + 0x30]
mov ecx, edi
push eax
call fcn.0047b150
push eax
mov ecx, edi
call fcn.0047b0d0
lea ecx, [esp + 0x28]
call fcn.0047b120
xor eax, eax
jmp 0x4eaa1a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x10], eax
mov esi, dword [0x596f88]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4eaa3b
push eax
call fcn.005074d4
mov esi, dword [0x596f88]
add esp, 4
mov eax, dword [esp + 0x10]
cmp esi, 0x596f88
je 0x4eaa78
test byte [esi + 0x1c], 1
je 0x4eaa78
cmp byte [esi + 0x19], 2
jb 0x4eaa78
cmp dword [edi + 0x14], 8
jb 0x4eaa5b
mov edi, dword [edi]
cmp dword [ebx + 0x14], 8
jb 0x4eaa63
mov ebx, dword [ebx]
push eax
push edi
push ebx
push dword [esi + 0x14]
push dword [esi + 0x10]
call fcn.004ea700
mov eax, dword [esp + 0x24]
add esp, 0x14
mov ecx, dword [esp + 0x10c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [0x596f88]
mov dword [esp + 0x10], eax
jmp 0x4eaa3f