Function at 0x180583a4
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
push edi
push ecx
mov esi, ecx
xor ebx, ebx
push 0x100000
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x18], esi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], ebx
call fcn.1800e32e
mov cl, byte [esi]
call fcn.1805815b
mov esi, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 8]
mov edx, ebx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x180584b1
push ebx
push 0x80
push 3
push ebx
push 1
push 1
push dword [ecx + edx*4]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x180585b8
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], ebx
push eax
push edi
mov dword [ebp - 0x28], ebx
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x180585b8
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x10]
adc ecx, dword [ebp - 0x28]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
cmp ecx, ebx
ja 0x180585b1
jb 0x1805844c
cmp eax, 0x40000000
ja 0x180585b1
mov edx, dword [ebp - 0x34]
mov dword [ebp - 8], ebx
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 8]
push ebx
push ecx
sub edx, eax
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x180585a8
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x18058482
mov eax, dword [esi]
push ecx
push dword [ebp - 0x38]
mov ecx, esi
call dword [eax + 4]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x34]
mov eax, edx
sub eax, dword [ebp - 0x38]
cmp ecx, eax
je 0x18058452
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
inc edx
mov dword [ebp - 0x14], edx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
cmp edx, eax
jb 0x180583eb
mov ecx, dword [ebp - 0x18]
xor eax, eax
push ecx
cmp byte [ecx], al
lea ecx, [ebp - 0x44]
setne al
dec eax
and eax, 0xfffffff4
add eax, 0x20
push eax
mov dword [ebp + 8], eax
call fcn.1800e32e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov edi, dword [ebp + 8]
push edi
push eax
push dword [ebp - 0x44]
call fcn.180a8cf0
mov eax, dword [ebp + 0x14]
add esp, 0xc
push edi
test eax, eax
je 0x180585cd
push dword [ebp - 0x44]
push dword [eax]
call fcn.180a92a1
add esp, 0xc
test eax, eax
je 0x180585e2
push ecx
push edi
lea ecx, [ebp - 0x2c]
call fcn.1800e32e
push edi
push dword [ebp - 0x44]
push dword [ebp - 0x2c]
call fcn.180a8cf0
add esp, 0xc
lea ecx, [ebp + 8]
call fcn.18005c3b
push ecx
lea edx, [ebp + 8]
lea ecx, [ebp - 0x2c]
call fcn.1805820f
mov edi, dword [ebp + 8]
mov edx, edi
pop ecx
lea ecx, [ebp + 0x14]
push dword [edi - 0xc]
call fcn.1800f166
pop ecx
movzx ecx, byte [0x18101323]
neg ecx
sbb ecx, ecx
and ecx, 0x18101240
je 0x18058586
push 9
pop eax
xor edx, edx
mov dword [ebp - 0x54], ecx
inc edx
mov dword [ebp - 0x50], eax
push edx
push eax
mov dword [ebp - 0x4c], edx
call fcn.1800457f
push dword [ebp + 0x14]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x54]
push str._actual_hash_s_
push eax
call fcn.18002ca6
add esp, 0xc
mov ecx, dword [ebp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.18003140
lea ecx, [edi - 0x10]
call fcn.18003140
lea ecx, [ebp - 0x2c]
call fcn.1800e30b
mov ebx, 0x80040204
jmp 0x180585e2
call fcn.18015f1f
mov ebx, eax
jmp 0x180585c4
mov ebx, 0x80040205
jmp 0x180585bf
call fcn.18015f1f
mov ebx, eax
cmp edi, 0xffffffff
je 0x180585ea
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x180585ea
xor ecx, ecx
call fcn.18009bfc
push edi
push dword [ebp - 0x44]
push dword [ebx]
call fcn.180a8cf0
add esp, 0xc
lea ecx, [ebp - 0x44]
call fcn.1800e30b
test esi, esi
je 0x180585f6
mov edx, dword [esi]
mov ecx, esi
push 1
call dword [edx]
lea ecx, [ebp - 0x38]
call fcn.1800e30b
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret 0x14