Function at 0x405959
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.00405797
mov dword [ebp - 0x80], eax
and eax, edx
mov dword [ebp - 0x7c], edx
or edx, 0xffffffff
pop ecx
pop ecx
cmp eax, edx
jne 0x405999
mov eax, edx
jmp 0x405b7d
xor ecx, ecx
push ebx
cmp byte [0x425620], cl
je 0x405b94
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 0x4059fe
jl 0x405bff
test eax, eax
jb 0x405bff
push 0
push ecx
push eax
push edi
call fcn.0040b04f
add esp, 0x10
test edx, edx
jg 0x405a1d
jl 0x405bff
test eax, eax
jb 0x405bff
push 0x400
lea eax, [ebp - 0x78]
push eax
push edi
call fcn.004172cb
add esp, 0xc
test eax, eax
js 0x405bff
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 0x405bff
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 0x405ab7
jl 0x405bff
test eax, eax
jb 0x405bff
push 0
push ecx
push eax
push edi
call fcn.0040b04f
add esp, 0x10
test edx, edx
jg 0x405ad6
jl 0x405bff
test eax, eax
jb 0x405bff
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.004096b8
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.0040b04f
add esp, 0x10
test edx, edx
jg 0x405b76
jl 0x405bff
test eax, eax
jae 0x405b76
or edx, 0xffffffff
mov eax, edx
jmp 0x405b7c