Function at 0x405a23
Capabilities:
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x38c]
sub esp, 0x40c
mov eax, dword [0x424070]
xor eax, ebp
mov dword [ebp + 0x388], eax
push esi
push edi
mov esi, edx
mov edi, ecx
push esi
push edi
call fcn.004194e4
mov dword [ebp - 0x80], eax
and eax, edx
mov dword [ebp - 0x7c], edx
or edx, 0xffffffff
pop ecx
pop ecx
cmp eax, edx
jne 0x405a63
mov eax, edx
jmp 0x405c47
xor ecx, ecx
push ebx
cmp byte [0x425620], cl
je 0x405c5e
movzx ecx, byte [esi + 0xf]
movzx eax, byte [esi + 0xe]
movzx edx, byte [esi + 0xb]
movzx ebx, byte [esi + 0xa]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xd]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xc]
movzx esi, byte [esi + 8]
shl edx, 8
or edx, ebx
shl ecx, 8
or ecx, eax
shl edx, 8
or edx, esi
xor eax, eax
xor esi, esi
or eax, edx
or ecx, esi
jg 0x405ac8
jl 0x405cc9
test eax, eax
jb 0x405cc9
push 0
push ecx
push eax
push edi
call fcn.0040b1ef
add esp, 0x10
test edx, edx
jg 0x405ae7
jl 0x405cc9
test eax, eax
jb 0x405cc9
push 0x400
lea eax, [ebp - 0x78]
push eax
push edi
call fcn.0041746b
add esp, 0xc
test eax, eax
js 0x405cc9
movzx eax, byte [ebp - 0x75]
movzx ecx, byte [ebp - 0x76]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x77]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x78]
shl eax, 8
or eax, ecx
cmp eax, 0x6064b50
jne 0x405cc9
movzx ecx, byte [ebp - 0x41]
movzx eax, byte [ebp - 0x42]
movzx edx, byte [ebp - 0x45]
movzx esi, byte [ebp - 0x46]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x43]
shl edx, 8
or edx, esi
movzx esi, byte [ebp - 0x47]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x44]
shl edx, 8
or edx, esi
movzx esi, byte [ebp - 0x48]
shl ecx, 8
or ecx, eax
shl edx, 8
or edx, esi
xor eax, eax
xor esi, esi
or eax, edx
or ecx, esi
jg 0x405b81
jl 0x405cc9
test eax, eax
jb 0x405cc9
push 0
push ecx
push eax
push edi
call fcn.0040b1ef
add esp, 0x10
test edx, edx
jg 0x405ba0
jl 0x405cc9
test eax, eax
jb 0x405cc9
movzx eax, byte [ebp - 0x41]
movzx ecx, byte [ebp - 0x42]
movzx edx, byte [ebp - 0x45]
movzx esi, byte [ebp - 0x46]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x43]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x44]
shl edx, 8
or edx, esi
movzx esi, byte [ebp - 0x47]
movzx edi, byte [ebp - 0x4d]
movzx ebx, byte [ebp - 0x4e]
shl eax, 8
or eax, ecx
shl edx, 8
or edx, esi
movzx esi, byte [ebp - 0x48]
xor ecx, ecx
shl edx, 8
or edx, esi
xor esi, esi
or eax, esi
movzx esi, byte [ebp - 0x4a]
or ecx, edx
push 0xffffffffffffffc8
pop edx
sub edx, ecx
push 0xffffffffffffffff
pop ecx
sbb ecx, eax
movzx eax, byte [ebp - 0x49]
shl eax, 8
or eax, esi
movzx esi, byte [ebp - 0x4b]
shl edi, 8
or edi, ebx
movzx ebx, byte [ebp - 0x4f]
shl eax, 8
or eax, esi
movzx esi, byte [ebp - 0x4c]
shl edi, 8
or edi, ebx
movzx ebx, byte [ebp - 0x50]
shl eax, 8
or eax, esi
shl edi, 8
or edi, ebx
xor esi, esi
xor ebx, ebx
or esi, edi
or eax, ebx
sub edx, esi
sbb ecx, eax
add dword [ebp - 0x80], edx
adc dword [ebp - 0x7c], ecx
mov eax, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
pop ebx
mov ecx, dword [ebp + 0x388]
pop edi
xor ecx, ebp
pop esi
call fcn.004098e8
add ebp, 0x38c
leave
ret
movzx eax, byte [esi + 0x13]
movzx edx, byte [esi + 0x12]
movzx ebx, byte [esi + 0xe]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 0x11]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 0x10]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 0xf]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi + 0xd]
movzx esi, byte [esi + 0xc]
shl edx, 8
or edx, ebx
shl edx, 8
or edx, esi
xor esi, esi
add edx, eax
adc esi, ecx
sub dword [ebp - 0x80], edx
push 0
sbb dword [ebp - 0x7c], esi
add eax, dword [ebp - 0x80]
adc ecx, dword [ebp - 0x7c]
push ecx
push eax
push edi
call fcn.0040b1ef
add esp, 0x10
test edx, edx
jg 0x405c40
jl 0x405cc9
test eax, eax
jae 0x405c40
or edx, 0xffffffff
mov eax, edx
jmp 0x405c46