Function at 0x403e67
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x40c
mov eax, dword [0x4282e0]
xor eax, esp
mov dword [esp + 0x408], eax
push ebx
push esi
mov esi, dword [esp + 0x41c]
push edi
mov edi, dword [esp + 0x41c]
push esi
push edi
call fcn.0040413d
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x10], eax
and ecx, edx
mov dword [esp + 0xc], edx
or ebx, 0xffffffff
cmp ecx, ebx
jne 0x403eb1
mov eax, ebx
mov edx, ebx
jmp 0x404125
push ebp
xor ebp, ebp
cmp byte [0x4293dc], 0
je 0x4040a8
movzx edx, byte [esi + 0xf]
movzx eax, byte [esi + 0xe]
movzx ecx, byte [esi + 0xb]
shl edx, 8
or edx, eax
shl ecx, 8
movzx eax, byte [esi + 0xd]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0xc]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0xa]
or ecx, eax
movzx eax, byte [esi + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 8]
shl ecx, 8
or ecx, eax
xor eax, eax
or eax, ecx
or edx, ebp
jg 0x403f15
jl 0x404118
cmp eax, ebp
jb 0x404118
push ebp
push edx
push eax
push edi
call fcn.0040d0d0
add esp, 0x10
cmp edx, ebp
jg 0x403f33
jl 0x404118
cmp eax, ebp
jb 0x404118
push 0x400
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.0041702b
add esp, 0xc
test eax, eax
js 0x404118
movzx ecx, byte [esp + 0x1b]
movzx eax, byte [esp + 0x1a]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x19]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x18]
shl ecx, 8
or ecx, eax
cmp ecx, 0x6064b50
jne 0x404118
movzx edx, byte [esp + 0x4f]
xor esi, esi
movzx eax, byte [esp + 0x4e]
movzx ecx, byte [esp + 0x4b]
shl edx, 8
or edx, eax
shl ecx, 8
movzx eax, byte [esp + 0x4d]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x4c]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x4a]
or ecx, eax
movzx eax, byte [esp + 0x49]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x48]
shl ecx, 8
or ecx, eax
or esi, ecx
or edx, ebp
jg 0x403fd9
jl 0x404118
cmp esi, ebp
jb 0x404118
push ebp
push edx
push esi
push edi
call fcn.0040d0d0
add esp, 0x10
cmp edx, ebp
jg 0x403ff7
jl 0x404118
cmp eax, ebp
jb 0x404118
movzx esi, byte [esp + 0x4f]
xor edx, edx
movzx eax, byte [esp + 0x4e]
movzx ecx, byte [esp + 0x4b]
shl esi, 8
or esi, eax
shl ecx, 8
movzx eax, byte [esp + 0x4d]
shl esi, 8
or esi, eax
movzx eax, byte [esp + 0x4c]
shl esi, 8
or esi, eax
movzx eax, byte [esp + 0x4a]
or ecx, eax
or esi, ebp
movzx eax, byte [esp + 0x49]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x48]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x46]
or edx, ecx
movzx ecx, byte [esp + 0x43]
push 0xffffffffffffffc8
pop edi
sub edi, edx
sbb ebx, esi
movzx esi, byte [esp + 0x47]
shl esi, 8
xor edx, edx
or esi, eax
shl ecx, 8
movzx eax, byte [esp + 0x45]
shl esi, 8
or esi, eax
movzx eax, byte [esp + 0x44]
shl esi, 8
or esi, eax
movzx eax, byte [esp + 0x42]
or ecx, eax
or esi, ebp
movzx eax, byte [esp + 0x41]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x40]
shl ecx, 8
or ecx, eax
or edx, ecx
sub edi, edx
mov edx, dword [esp + 0x10]
sbb ebx, esi
mov esi, dword [esp + 0x14]
add esi, edi
adc edx, ebx
jmp 0x404122
movzx edx, byte [esi + 0x13]
movzx eax, byte [esi + 0x12]
movzx ecx, byte [esi + 0xf]
shl edx, 8
or edx, eax
shl ecx, 8
movzx eax, byte [esi + 0x11]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0x10]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0xe]
or ecx, eax
movzx eax, byte [esi + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xc]
mov esi, dword [esp + 0x14]
shl ecx, 8
or ecx, eax
xor eax, eax
add ecx, edx
push ebp
adc eax, ebp
sub esi, ecx
mov ecx, dword [esp + 0x14]
sbb ecx, eax
add edx, esi
mov eax, ebp
mov dword [esp + 0x14], ecx
adc eax, ecx
push eax
push edx
push edi
call fcn.0040d0d0
add esp, 0x10
cmp edx, ebp
jg 0x40411e
jl 0x404118
cmp eax, ebp
jae 0x40411e
mov eax, ebx
mov edx, ebx
jmp 0x404124
mov edx, dword [esp + 0x10]
mov eax, esi
pop ebp
mov ecx, dword [esp + 0x414]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040b10c
add esp, 0x40c
ret