Function at 0x403f40
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x40c
mov eax, dword [0x431034]
xor eax, esp
mov dword [esp + 0x408], eax
push ebx
mov ebx, dword [esp + 0x414]
push ebp
mov ebp, dword [esp + 0x41c]
push esi
push edi
push ebp
push ebx
call fcn.004042f7
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x10], eax
and ecx, edx
mov dword [esp + 0x14], edx
or edi, 0xffffffff
cmp ecx, edi
je 0x4042da
cmp byte [0x431a0c], 0
je 0x404222
movzx eax, byte [ebp + 0xf]
cdq
mov ecx, eax
mov esi, edx
movzx eax, byte [ebp + 0xe]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xd]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xc]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xb]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xa]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 9]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 8]
shld esi, ecx, 8
cdq
shl ecx, 8
or ecx, eax
or esi, edx
jl 0x4042da
jg 0x40401c
test ecx, ecx
jb 0x4042da
push 0
push esi
push ecx
push ebx
call fcn.0040d862
add esp, 0x10
test edx, edx
jl 0x4042da
jg 0x40403b
test eax, eax
jb 0x4042da
push 0x400
lea eax, [esp + 0x1c]
push eax
push ebx
call fcn.00417558
add esp, 0xc
test eax, eax
js 0x4042da
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 0x4042da
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, 0
jl 0x4042da
jg 0x4040e2
test esi, esi
jb 0x4042da
push 0
push edx
push esi
push ebx
call fcn.0040d862
add esp, 0x10
test edx, edx
jl 0x4042da
jg 0x404101
test eax, eax
jb 0x4042da
movzx eax, byte [esp + 0x4f]
cdq
mov ecx, eax
mov esi, edx
shld esi, ecx, 8
movzx eax, byte [esp + 0x4e]
shl ecx, 8
cdq
or ecx, eax
or esi, edx
shld esi, ecx, 8
movzx eax, byte [esp + 0x4d]
shl ecx, 8
cdq
or ecx, eax
or esi, edx
shld esi, ecx, 8
movzx eax, byte [esp + 0x4c]
shl ecx, 8
cdq
or ecx, eax
or esi, edx
shld esi, ecx, 8
movzx eax, byte [esp + 0x4b]
shl ecx, 8
cdq
or ecx, eax
or esi, edx
movzx eax, byte [esp + 0x4a]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x49]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x48]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x47]
push 0xffffffffffffffc8
cdq
pop edi
sub edi, ecx
mov ecx, eax
movzx eax, byte [esp + 0x46]
push 0xffffffffffffffff
pop ebx
sbb ebx, esi
mov esi, edx
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x45]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x44]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x43]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
shld esi, ecx, 8
movzx eax, byte [esp + 0x42]
shl ecx, 8
cdq
or ecx, eax
or esi, edx
movzx eax, byte [esp + 0x41]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [esp + 0x40]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
mov edx, dword [esp + 0x14]
or ecx, eax
mov eax, dword [esp + 0x10]
sub edi, ecx
sbb ebx, esi
add eax, edi
adc edx, ebx
jmp 0x4042de
movzx eax, byte [ebp + 0x13]
cdq
mov ebx, eax
mov edi, edx
movzx eax, byte [ebp + 0x12]
shld edi, ebx, 8
cdq
or edi, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [ebp + 0x11]
cdq
shld edi, ebx, 8
push 0
or edi, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [ebp + 0x10]
cdq
shld edi, ebx, 8
or edi, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [ebp + 0xf]
cdq
mov ecx, eax
mov esi, edx
movzx eax, byte [ebp + 0xe]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xd]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
movzx eax, byte [ebp + 0xc]
shld esi, ecx, 8
cdq
shl ecx, 8
or esi, edx
or ecx, eax
mov eax, dword [esp + 0x14]
add ecx, ebx
adc esi, edi
sub eax, ecx
mov ecx, dword [esp + 0x18]
sbb ecx, esi
mov dword [esp + 0x14], eax
add ebx, eax
mov dword [esp + 0x18], ecx
adc edi, ecx
push edi
push ebx
push dword [esp + 0x42c]
call fcn.0040d862
add esp, 0x10
test edx, edx
jl 0x4042d7
jg 0x4042cd
test eax, eax
jb 0x4042d7
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
jmp 0x4042de
or edi, 0xffffffff
mov eax, edi
mov edx, edi
mov ecx, dword [esp + 0x418]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004097a8
add esp, 0x40c
ret