Function at 0x405a36
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.004093a0
mov dword [ebp - 0x80], eax
and eax, edx
mov dword [ebp - 0x7c], edx
or edx, 0xffffffff
pop ecx
pop ecx
cmp eax, edx
jne 0x405a76
mov eax, edx
jmp 0x405c5a
xor ecx, ecx
push ebx
cmp byte [0x425620], cl
je 0x405c71
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 0x405adb
jl 0x405cdc
test eax, eax
jb 0x405cdc
push 0
push ecx
push eax
push edi
call fcn.0040b20f
add esp, 0x10
test edx, edx
jg 0x405afa
jl 0x405cdc
test eax, eax
jb 0x405cdc
push 0x400
lea eax, [ebp - 0x78]
push eax
push edi
call fcn.004174eb
add esp, 0xc
test eax, eax
js 0x405cdc
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 0x405cdc
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 0x405b94
jl 0x405cdc
test eax, eax
jb 0x405cdc
push 0
push ecx
push eax
push edi
call fcn.0040b20f
add esp, 0x10
test edx, edx
jg 0x405bb3
jl 0x405cdc
test eax, eax
jb 0x405cdc
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.00409908
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.0040b20f
add esp, 0x10
test edx, edx
jg 0x405c53
jl 0x405cdc
test eax, eax
jae 0x405c53
or edx, 0xffffffff
mov eax, edx
jmp 0x405c59