Function at 0x596960
Capabilities:
Check if file exists
Get file size
Get file version info
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a8a7a
mov eax, dword fs:[0]
push eax
push ecx
sub esp, 0xa78
mov eax, dword [0x62b370]
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 dword [ebp - 0xa08], ecx
mov eax, dword [ebp - 0xa08]
cmp dword [eax + 0x708], 0
je 0x5969ac
jmp 0x59740f
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x5969bf
jmp 0x59740f
mov edx, dword [ebp - 0xa08]
mov dword [edx + 0x730], 1
mov eax, dword [ebp - 0xa08]
mov dword [eax + 0x72c], 0
lea ecx, [ebp - 0x998]
call fcn.00438400
mov dword [ebp - 4], 0
mov ecx, dword [ebp + 8]
push ecx
lea ecx, [ebp - 0x994]
call fcn.00427640
xor edx, edx
mov word [ebp - 0x1ac], dx
push 0xc6
push 0
lea eax, [ebp - 0x1aa]
push eax
call fcn.004d7c10
add esp, 0xc
xor ecx, ecx
mov word [ebp - 0xe4], cx
push 0xc6
push 0
lea edx, [ebp - 0xe2]
push edx
call fcn.004d7c10
add esp, 0xc
xor eax, eax
mov word [ebp - 0x274], ax
push 0xc6
push 0
lea ecx, [ebp - 0x272]
push ecx
call fcn.004d7c10
add esp, 0xc
xor edx, edx
mov word [ebp - 0x594], dx
push 0xc6
push 0
lea eax, [ebp - 0x592]
push eax
call fcn.004d7c10
add esp, 0xc
xor ecx, ecx
mov word [ebp - 0x33c], cx
push 0xc6
push 0
lea edx, [ebp - 0x33a]
push edx
call fcn.004d7c10
add esp, 0xc
xor eax, eax
mov word [ebp - 0x404], ax
push 0xc6
push 0
lea ecx, [ebp - 0x402]
push ecx
call fcn.004d7c10
add esp, 0xc
xor edx, edx
mov word [ebp - 0x4cc], dx
push 0xc6
push 0
lea eax, [ebp - 0x4ca]
push eax
call fcn.004d7c10
add esp, 0xc
xorps xmm0, xmm0
movlpd qword [ebp - 0xa20], xmm0
mov dword [ebp - 0xa34], 0
mov dword [ebp - 0xa0c], 0
push 0x608c5c
lea ecx, [ebp - 0x7e4]
call fcn.004276b0
mov byte [ebp - 4], 1
push 0x608c58
lea ecx, [ebp - 0x7fc]
call fcn.004276b0
mov byte [ebp - 4], 2
push 0x608c64
lea ecx, [ebp - 0x814]
call fcn.004276b0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0xa04]
call fcn.004c9f26
mov ecx, dword [ebp - 0xa08]
cmp dword [ecx + 0x748], 0
je 0x596b5f
mov edx, dword [ebp - 0xa08]
mov ecx, dword [edx + 0x748]
call fcn.00595fd0
push 0
push 0x80
push 4
push 0
push 1
push SysReAllocStringLen
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0xa18], eax
cmp dword [ebp - 0xa18], 0xffffffff
je 0x597391
mov dword [ebp - 0xa24], 0
lea ecx, [ebp - 0xa80]
push ecx
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov dword [ebp - 0xa24], eax
cmp dword [ebp - 0xa24], 0
je 0x596d15
mov dword [ebp - 0xa14], 0
mov dword [ebp - 0xa58], 0
mov dword [ebp - 0xa38], 0
mov eax, dword [ebp - 0xa24]
add eax, 1
push eax
call fcn.004846b0
add esp, 4
mov dword [ebp - 0xa5c], eax
mov ecx, dword [ebp - 0xa5c]
mov dword [ebp - 0xa38], ecx
mov edx, dword [ebp - 0xa38]
push edx
mov eax, dword [ebp - 0xa24]
push eax
push 0
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
lea edx, [ebp - 0xa58]
push edx
lea eax, [ebp - 0xa14]
push eax
push 0x608c60
mov ecx, dword [ebp - 0xa38]
push ecx
call dword [sym.imp.VERSION.dll_VerQueryValueW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xa7c], eax
mov edx, dword [ebp - 0xa14]
mov eax, dword [edx + 0x10]
shr eax, 0x10
and eax, 0xffff
mov ecx, 2
imul edx, ecx, 0
mov word [ebp + edx - 0x1c], ax
mov eax, dword [ebp - 0xa14]
mov ecx, dword [eax + 0x10]
and ecx, 0xffff
mov edx, 2
shl edx, 0
mov word [ebp + edx - 0x1c], cx
mov eax, dword [ebp - 0xa14]
mov ecx, dword [eax + 0x14]
shr ecx, 0x10
and ecx, 0xffff
mov edx, 2
shl edx, 1
mov word [ebp + edx - 0x1c], cx
mov eax, dword [ebp - 0xa14]
mov ecx, dword [eax + 0x14]
and ecx, 0xffff
mov edx, 2
imul eax, edx, 3
mov word [ebp + eax - 0x1c], cx
mov ecx, 2
imul edx, ecx, 3
movzx eax, word [ebp + edx - 0x1c]
push eax
mov ecx, 2
shl ecx, 1
movzx edx, word [ebp + ecx - 0x1c]
push edx
mov eax, 2
shl eax, 0
movzx ecx, word [ebp + eax - 0x1c]
push ecx
mov edx, 2
imul eax, edx, 0
movzx ecx, word [ebp + eax - 0x1c]
push ecx
push str._d._d._d._d
lea edx, [ebp - 0x79c]
push edx
call fcn.00430670
add esp, 0x18
lea eax, [ebp - 0x79c]
push eax
lea ecx, [ebp - 0x964]
call fcn.00427640
mov dword [ebp - 0xa3c], 0
lea ecx, [ebp - 0xa3c]
push ecx
mov edx, dword [ebp - 0xa18]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0xa34], eax
cmp dword [ebp - 0xa34], 0xffffffff
je 0x596d69
mov esi, dword [ebp - 0xa34]
xor edi, edi
xor edx, edx
mov eax, dword [ebp - 0xa3c]
mov cl, 0x20
call fcn.004feb20
add eax, esi
adc edx, edi
mov dword [ebp - 0xa20], eax
mov dword [ebp - 0xa1c], edx
mov dword [ebp - 0xa10], 0x2800
mov dword [ebp - 0xa2c], 0
mov eax, dword [ebp - 0xa10]
xor ecx, ecx
push ecx
push eax
mov edx, dword [ebp - 0xa1c]
push edx
mov eax, dword [ebp - 0xa20]
push eax
call fcn.00580c30
mov dword [ebp - 0xa68], eax
mov dword [ebp - 0xa64], edx
mov ecx, dword [ebp - 0xa68]
or ecx, dword [ebp - 0xa64]
jne 0x596dd9
mov edx, dword [ebp - 0xa10]
xor eax, eax
push eax
push edx
mov ecx, dword [ebp - 0xa1c]
push ecx
mov edx, dword [ebp - 0xa20]
push edx
call fcn.004feeb0
mov dword [ebp - 0xa2c], eax
jmp 0x596e02
mov eax, dword [ebp - 0xa10]
xor ecx, ecx
push ecx
push eax
mov edx, dword [ebp - 0xa1c]
push edx
mov eax, dword [ebp - 0xa20]
push eax
call fcn.004feeb0
add eax, 1
adc edx, 0
mov dword [ebp - 0xa2c], eax
mov ecx, dword [ebp - 0xa08]
mov edx, dword [ecx + 0x730]
add edx, dword [ebp - 0xa2c]
mov eax, dword [ebp - 0xa08]
mov dword [eax + 0x730], edx
lea ecx, [ebp - 0xa78]
push ecx
lea edx, [ebp - 0xa70]
push edx
lea eax, [ebp - 0xa88]
push eax
mov ecx, dword [ebp - 0xa18]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileTime]
test eax, eax
je 0x596fca
lea edx, [ebp - 0x85c]
push edx
lea eax, [ebp - 0xa88]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
lea ecx, [ebp - 0x7ac]
push ecx
lea edx, [ebp - 0x85c]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_SystemTimeToTzSpecificLocalTime]
lea eax, [ebp - 0x84c]
push eax
lea ecx, [ebp - 0xa70]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
lea edx, [ebp - 0x7cc]
push edx
lea eax, [ebp - 0x84c]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_SystemTimeToTzSpecificLocalTime]
lea ecx, [ebp - 0x83c]
push ecx
lea edx, [ebp - 0xa78]
push edx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
lea eax, [ebp - 0x7bc]
push eax
lea ecx, [ebp - 0x83c]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_SystemTimeToTzSpecificLocalTime]
movzx edx, word [ebp - 0x7a0]
push edx
movzx eax, word [ebp - 0x7a2]
push eax
movzx ecx, word [ebp - 0x7a4]
push ecx
movzx edx, word [ebp - 0x7a6]
push edx
movzx eax, word [ebp - 0x7aa]
push eax
movzx ecx, word [ebp - 0x7ac]
push ecx
push 0x608c68
lea edx, [ebp - 0x33c]
push edx
call fcn.00430670
add esp, 0x20
movzx eax, word [ebp - 0x7c0]
push eax
movzx ecx, word [ebp - 0x7c2]
push ecx
movzx edx, word [ebp - 0x7c4]
push edx
movzx eax, word [ebp - 0x7c6]
push eax
movzx ecx, word [ebp - 0x7ca]
push ecx
movzx edx, word [ebp - 0x7cc]
push edx
push 0x608cf8
lea eax, [ebp - 0x404]
push eax
call fcn.00430670
add esp, 0x20
movzx ecx, word [ebp - 0x7b0]
push ecx
movzx edx, word [ebp - 0x7b2]
push edx
movzx eax, word [ebp - 0x7b4]
push eax
movzx ecx, word [ebp - 0x7b6]
push ecx
movzx edx, word [ebp - 0x7ba]
push edx
movzx eax, word [ebp - 0x7bc]
push eax
push 0x608cbc
lea ecx, [ebp - 0x4cc]
push ecx
call fcn.00430670
add esp, 0x20
lea edx, [ebp - 0x33c]
push edx
lea ecx, [ebp - 0x934]
call fcn.00427640
lea eax, [ebp - 0x404]
push eax
lea ecx, [ebp - 0x91c]
call fcn.00427640
lea ecx, [ebp - 0x4cc]
push ecx
lea ecx, [ebp - 0x904]
call fcn.00427640
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0xa10]
add edx, 1
push edx
call fcn.004846b0
add esp, 4
mov dword [ebp - 0xa54], eax
mov eax, dword [ebp - 0xa54]
mov dword [ebp - 0xa50], eax
mov ecx, dword [ebp - 0xa50]
mov dword [ebp - 0xa0c], ecx
jmp 0x597010
mov dword [ebp - 4], 3
jmp 0x597020
cmp dword [ebp - 0xa0c], 0
jne 0x59706d
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x814]
call fcn.00427660
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x7fc]
call fcn.00427660
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x7e4]
call fcn.00427660
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x998]
call fcn.004386b0
jmp 0x59740f
mov edx, dword [ebp - 0xa10]
add edx, 1
push edx
push 0
mov eax, dword [ebp - 0xa0c]
push eax
call fcn.004d7c10
add esp, 0xc
mov dword [ebp - 0xa30], 0
jmp 0x5970a3
mov ecx, dword [ebp - 0xa30]
add ecx, 1
mov dword [ebp - 0xa30], ecx
mov edx, dword [ebp - 0xa30]
cmp edx, dword [ebp - 0xa2c]
jge 0x597159
mov eax, dword [ebp - 0xa08]
cmp dword [eax + 0x708], 0
je 0x5970c9
jmp 0x597159
mov dword [ebp - 0xa28], 0
push 0
lea ecx, [ebp - 0xa28]
push ecx
mov edx, dword [ebp - 0xa10]
push edx
mov eax, dword [ebp - 0xa0c]
push eax
mov ecx, dword [ebp - 0xa18]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [ebp - 0xa28], 0
jne 0x597102
jmp 0x597159
mov ecx, dword [ebp - 0xa08]
call fcn.00596920
mov edx, dword [ebp - 0xa08]
cmp dword [edx + 0x748], 0
je 0x59713b
mov eax, dword [ebp - 0xa28]
push eax
mov ecx, dword [ebp - 0xa0c]
push ecx
mov edx, dword [ebp - 0xa08]
mov ecx, dword [edx + 0x748]
call fcn.00595fa0
mov eax, dword [ebp - 0xa28]
push eax
mov ecx, dword [ebp - 0xa0c]
push ecx
lea ecx, [ebp - 0xa04]
call fcn.004caa2c
jmp 0x597094
mov edx, dword [ebp - 0xa08]
cmp dword [edx + 0x748], 0
je 0x597179
mov eax, dword [ebp - 0xa08]
mov ecx, dword [eax + 0x748]
call fcn.00595e00
lea ecx, [ebp - 0x8a4]
push ecx
lea ecx, [ebp - 0xa04]
call fcn.004ca27a
mov dword [ebp - 0xa4c], eax
mov edx, dword [ebp - 0xa4c]
mov dword [ebp - 0xa48], edx
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0xa48]
push eax
lea ecx, [ebp - 0x82c]
push ecx
call fcn.004b7ffd
add esp, 8
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x8a4]
call fcn.00427780
lea ecx, [ebp - 0x82c]
call fcn.0042f150
test eax, eax
jbe 0x5971e7
lea edx, [ebp - 0x82c]
push edx
lea ecx, [ebp - 0x7e4]
call fcn.0042ef10
lea eax, [ebp - 0x88c]
push eax
mov ecx, dword [ebp - 0xa08]
mov ecx, dword [ecx + 0x748]
call fcn.00595ee0
mov dword [ebp - 0xa44], eax
mov edx, dword [ebp - 0xa44]
push edx
lea ecx, [ebp - 0x7fc]
call fcn.00430d70
lea ecx, [ebp - 0x88c]
call fcn.00427660
lea eax, [ebp - 0x874]
push eax
mov ecx, dword [ebp - 0xa08]
mov ecx, dword [ecx + 0x748]
call fcn.00595e20
mov dword [ebp - 0xa40], eax
mov edx, dword [ebp - 0xa40]
push edx
lea ecx, [ebp - 0x814]
call fcn.00430d70
lea ecx, [ebp - 0x874]
call fcn.00427660
cmp dword [ebp - 0xa0c], 0
je 0x59728b
mov eax, dword [ebp - 0xa0c]
mov dword [ebp - 0xa60], eax
mov ecx, dword [ebp - 0xa60]
push ecx
call fcn.00484647
add esp, 4
mov dword [ebp - 0xa0c], 0
mov edx, dword [ebp - 0xa18]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x7e4]
call fcn.004275c0
push eax
lea eax, [ebp - 0x1ac]
push eax
call fcn.004d95d7
add esp, 8
lea ecx, [ebp - 0x1ac]
push ecx
call fcn.004de200
add esp, 4
lea ecx, [ebp - 0x7fc]
call fcn.004275c0
push eax
lea edx, [ebp - 0xe4]
push edx
call fcn.004d95d7
add esp, 8
lea eax, [ebp - 0xe4]
push eax
call fcn.004de200
add esp, 4
lea ecx, [ebp - 0x814]
call fcn.004275c0
push eax
lea ecx, [ebp - 0x274]
push ecx
call fcn.004d95d7
add esp, 8
lea edx, [ebp - 0x274]
push edx
call fcn.004de200
add esp, 4
mov eax, dword [ebp - 0xa1c]
push eax
mov ecx, dword [ebp - 0xa20]
push ecx
push str._llu
lea edx, [ebp - 0x594]
push edx
call fcn.00430670
add esp, 0x10
lea eax, [ebp - 0x594]
push eax
lea ecx, [ebp - 0x94c]
call fcn.00427640
lea ecx, [ebp - 0x1ac]
push ecx
lea ecx, [ebp - 0x8ec]
call fcn.00427640
lea edx, [ebp - 0xe4]
push edx
lea ecx, [ebp - 0x8d4]
call fcn.00427640
lea eax, [ebp - 0x274]
push eax
lea ecx, [ebp - 0x8bc]
call fcn.00427640
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x82c]
call fcn.00427660
jmp 0x5973ab
mov dword [ebp - 0x998], 1
push 0x608d34
lea ecx, [ebp - 0x97c]
call fcn.00427640
mov ecx, dword [ebp - 0xa08]
call fcn.00596920
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x998]
push ecx
mov ecx, dword [ebp - 0xa08]
call fcn.00596870
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x814]
call fcn.00427660
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x7fc]
call fcn.00427660
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x7e4]
call fcn.00427660
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x998]
call fcn.004386b0
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.00484636
mov esp, ebp
pop ebp
ret 4