Function at 0x403ce0
Capabilities:
Get file version info

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x15c
cmp eax, 1
push ebx
push ebp
push esi
push edi
jne 0x403ea3
mov ebp, dword [esp + 0x170]
lea eax, [esp + 0x28]
push eax
push ebp
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov ebx, eax
push ebx
push 8
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
jne 0x403d31
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
push edi
push ebx
push 0
push ebp
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x403d58
push edi
push eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
lea ecx, [esp + 0x24]
lea edx, [esp + 0x10]
push ecx
push edx
push 0x40b1a4
push edi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x403d8a
push edi
push eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
mov eax, dword [esp + 0x10]
push edi
push 0
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax + 8]
mov dword [esp + 0x20], edx
call esi
mov ebp, dword [sym.imp.KERNEL32.dll_HeapFree]
push eax
call ebp
mov ecx, dword [esp + 0x174]
lea eax, [esp + 0x28]
push eax
push ecx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebx, eax
push ebx
push 8
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
jne 0x403dde
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
mov edx, dword [esp + 0x174]
push edi
push ebx
push 0
push edx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x403e08
push edi
push eax
call esi
push eax
call ebp
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
lea eax, [esp + 0x24]
lea ecx, [esp + 0x10]
push eax
push ecx
push 0x40b1a4
push edi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x403e36
push edi
push eax
call esi
push eax
call ebp
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x15c
ret
mov eax, dword [esp + 0x10]
push edi
push 0
mov edx, dword [eax + 0xc]
mov dword [esp + 0x24], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x28], eax
call esi
push eax
call ebp
mov ecx, dword [esp + 0x18]
mov eax, 0x30000
cmp ecx, eax
jb 0x403e70
cmp dword [esp + 0x20], eax
jae 0x403e70
mov ecx, dword [esp + 0x17c]
mov dword [ecx], 1
lea edx, [esp + 0x1c]
lea eax, [esp + 0x14]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
test eax, eax
jle 0x403e94
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x15c
ret
jge 0x403ea3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x15c
ret
mov edx, dword [esp + 0x170]
mov esi, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
lea ecx, [esp + 0x2c]
push ecx
push edx
call esi
cmp eax, 0xffffffff
jne 0x403eca
pop edi
pop esi
pop ebp
or eax, eax
pop ebx
add esp, 0x15c
ret
mov edi, dword [sym.imp.KERNEL32.dll_FindClose]
push eax
call edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x174]
lea edx, [esp + 0x2c]
mov dword [esp + 0x18], ecx
push edx
push eax
call esi
cmp eax, 0xffffffff
jne 0x403f04
pop edi
pop esi
pop ebp
or eax, eax
pop ebx
add esp, 0x15c
ret
push eax
call edi
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x1c], ecx
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
push ecx
mov dword [esp + 0x28], edx
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
xor edx, edx
pop edi
test eax, eax
setg dl
pop esi
pop ebp
mov eax, edx
pop ebx
add esp, 0x15c
ret