Function at 0x4072b3
Capabilities:
Check if file exists
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 8]
push esi
xor esi, esi
push ebx
mov dword [ebp - 8], esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 4], esi
call fcn.004010dc
test eax, eax
pop ecx
je 0x4072db
xor eax, eax
jmp 0x4074b5
mov eax, dword [ebp + 0xc]
cmp eax, esi
je 0x4072e4
mov dword [eax], esi
mov eax, dword [ebp + 0x10]
cmp eax, esi
je 0x4072ed
mov dword [eax], esi
mov eax, dword [ebp + 0x14]
cmp eax, esi
je 0x4072f6
mov dword [eax], esi
push edi
push 0x582f94
push ebx
call fcn.004016c2
pop ecx
mov edi, eax
neg edi
pop ecx
sbb edi, edi
push str..exe
and edi, 0xffffb1e0
push ebx
add edi, 0x4e20
call fcn.00401721
pop ecx
push eax
call fcn.0050da80
test eax, eax
pop ecx
pop ecx
jne 0x40733a
push ebx
call fcn.0040137f
pop ecx
mov dword [ebp - 0xc], eax
jmp 0x40733d
mov dword [ebp - 0xc], esi
push esi
push edi
push esi
push SQLGetDiagRec
push 3
push esi
push 7
push closesocket
push ebx
call fcn.004016d1
mov edi, eax
add esp, 0x24
cmp edi, 0xffffffff
jne 0x40739f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x4074b2
cmp eax, 3
je 0x4074b2
cmp eax, 0xf
je 0x4074b2
cmp eax, 0x35
je 0x4074b2
push eax
push str._GetLastError_
push ebx
push str.:6:CalculateArchiveCheckSum___s___FAILED:_CreateFileTimeOut___FAILED:__s_ld
call fcn.00401375
jmp 0x4074af
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
mov dword [ebp - 0x14], eax
jne 0x4073c5
push str._GetLastError_
push ebx
push str.:7:CalculateArchiveCheckSum___s___EAP:_GetFileSize___FAILED:__s
call fcn.00401375
add esp, 0xc
mov dword [ebp - 0x14], esi
push esi
push esi
push dword [ebp - 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
lea eax, [ebp - 4]
push eax
push 4
lea eax, [ebp - 8]
push eax
push edi
call ebx
test eax, eax
je 0x407480
cmp dword [ebp - 4], 4
jb 0x407480
push esi
lea eax, [ebp - 4]
push eax
push 4
lea eax, [ebp - 0x10]
push eax
push edi
call ebx
test eax, eax
je 0x407459
cmp dword [ebp - 4], 4
jb 0x407459
mov ecx, dword [ebp - 8]
push 1
push edi
call fcn.00405f33
pop ecx
pop ecx
push 0x59b
push str..Archive.c
push str.CalculateArchiveCheckSum
push edi
mov ebx, eax
call fcn.00403134
mov eax, dword [ebp + 0xc]
cmp eax, esi
je 0x40743c
mov dword [eax], ebx
mov eax, dword [ebp + 0x10]
cmp eax, esi
je 0x407448
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov eax, dword [ebp + 0x14]
cmp eax, esi
je 0x407454
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
xor eax, eax
inc eax
jmp 0x4074b4
push 0x58c
push str..Archive.c
push str.CalculateArchiveCheckSum
push edi
call fcn.00403134
push str._GetLastError_
push dword [ebp - 4]
push dword [ebp + 8]
push str.:7:CalculateArchiveCheckSum___s___FAILED:_ReadFile___FAILED_to_read_the_Archive_CheckSum:_Only_read__ld_bytes:__s
jmp 0x4074aa
push 0x583
push str..Archive.c
push str.CalculateArchiveCheckSum
push edi
call fcn.00403134
cmp dword [ebp - 0x14], esi
jbe 0x4074b2
push str._GetLastError_
push dword [ebp - 4]
push dword [ebp + 8]
push str.:7:CalculateArchiveCheckSum___s___FAILED:_ReadFile___FAILED_to_read_the_archive_size:_Only_read__ld_bytes:__s
call fcn.004020c2
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret