Function at 0x407540
Capabilities:
Read file on windows

Disassembly:
dec eax
mov dword [esp + 0x20], ebx
push ebp
push esi
push edi
inc ecx
push esp
inc ecx
push ebp
inc ecx
push esi
inc ecx
push edi
dec eax
sub esp, 0x50
dec eax
mov eax, dword [0x1cb65]
dec eax
xor eax, esp
dec eax
mov dword [esp + 0x48], eax
inc esp
mov ebp, ecx
mov ecx, 0x30032
dec ebp
mov edi, eax
dec eax
mov dword [esp + 0x20], edx
call fcn.0040c234
dec eax
mov edi, eax
dec eax
test eax, eax
jne 0x407588
or eax, 0xffffffff
jmp 0x407894
dec eax
mov edx, eax
inc ecx
mov ecx, ebp
dec eax
mov esi, eax
call fcn.004073b4
or ebp, 0xffffffff
inc esp
mov esi, eax
cmp eax, ebp
je 0x40788a
movzx eax, byte [edi + 0x12]
movzx edx, byte [edi + 0x13]
movzx ecx, byte [edi + 0xf]
shl ecx, 8
shl edx, 8
inc ebp
xor eax, eax
or edx, eax
movzx eax, byte [edi + 0x11]
shl edx, 8
or edx, eax
movzx eax, byte [edi + 0x10]
shl edx, 8
or edx, eax
movzx eax, byte [edi + 0xe]
or ecx, eax
movzx eax, byte [edi + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 0xc]
shl ecx, 8
or ecx, eax
add ecx, edx
inc esp
sub esi, ecx
inc ecx
mov ecx, ebp
inc ecx
add edx, esi
call fcn.004185c4
test eax, eax
js 0x40788a
inc ecx
mov eax, 0x400
dec eax
mov edx, edi
inc ecx
mov ecx, ebp
call fcn.004178f4
inc esp
mov esp, eax
test eax, eax
js 0x40788a
movzx eax, byte [edi + 2]
movzx ecx, byte [edi + 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
or ecx, eax
cmp ecx, 0x2014b50
jne 0x40788a
inc ecx
cmp esp, 0x2e
jge 0x40767a
dec ecx
arpl sp, bx
dec eax
mov edx, esi
dec eax
mov ecx, edi
dec esp
mov eax, ebx
call fcn.0040b0a0
dec eax
lea edx, [ebx + edi]
inc ecx
mov eax, 0x400
inc ecx
mov ecx, ebp
dec eax
mov esi, eax
call fcn.004178f4
test eax, eax
jle 0x40788a
inc esp
add esp, eax
movzx eax, byte [esi + 0x20]
movzx edx, byte [esi + 0x21]
movzx ecx, byte [esi + 0x1f]
shl ecx, 8
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0x1e]
or ecx, eax
movzx eax, byte [esi + 0x1c]
add edx, ecx
movzx ecx, byte [esi + 0x1d]
shl ecx, 8
or ecx, eax
lea ebx, [edx + ecx + 0x2e]
lea eax, [ebx + 4]
inc esp
cmp esp, eax
jge 0x4076f4
dec eax
cmp esi, edi
je 0x4076c5
dec ebp
arpl sp, ax
dec eax
mov edx, esi
dec eax
mov ecx, edi
call fcn.0040b0a0
dec eax
mov esi, eax
mov eax, 0x400
inc esp
mov eax, ebx
dec ecx
arpl sp, dx
inc ebp
sub eax, esp
inc ecx
mov ecx, ebp
inc ecx
add eax, 4
inc esp
cmp eax, eax
inc esp
cmovl eax, eax
dec eax
add edx, edi
call fcn.004178f4
test eax, eax
jle 0x40788a
inc esp
add esp, eax
dec ecx
mov ecx, edi
call fcn.0040af00
movzx ecx, byte [esi + 0x1d]
shl ecx, 8
dec eax
arpl cx, dx
movzx ecx, byte [esi + 0x1c]
dec eax
or edx, ecx
dec eax
cmp edx, eax
jne 0x40772d
dec ecx
mov ecx, edi
call fcn.0040af00
dec eax
lea ecx, [esi + 0x2e]
dec ecx
mov edx, edi
dec esp
mov eax, eax
call fcn.0040d4f0
test eax, eax
je 0x407754
dec eax
arpl bx, ax
inc esp
sub esp, ebx
dec eax
add esi, eax
movzx eax, byte [esi + 2]
movzx ecx, byte [esi + 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
jmp 0x407632
movzx eax, byte [esi + 0x2c]
movzx edx, byte [esi + 0x2d]
inc ebp
xor eax, eax
shl edx, 8
inc ecx
mov ecx, ebp
or edx, eax
movzx eax, byte [esi + 0x2b]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0x2a]
shl edx, 8
or edx, eax
inc ecx
add edx, esi
call fcn.004185c4
test eax, eax
js 0x40788a
dec eax
lea edx, [esp + 0x28]
inc ecx
mov eax, 0x1e
inc ecx
mov ecx, ebp
call fcn.004178f4
test eax, eax
js 0x40788a
movzx eax, byte [esp + 0x2a]
movzx ecx, byte [esp + 0x2b]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x29]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x28]
shl ecx, 8
or ecx, eax
cmp ecx, 0x4034b50
jne 0x40788a
movzx eax, byte [esi + 0x1a]
movzx ecx, byte [esi + 0x1b]
dec esp
mov ecx, dword [esp + 0x20]
movzx edx, byte [esp + 0x45]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x19]
shl edx, 8
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x18]
shl ecx, 8
dec eax
arpl cx, cx
dec eax
or ecx, eax
dec ecx
mov dword [ecx], ecx
movzx eax, byte [esi + 0x16]
movzx ecx, byte [esi + 0x17]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x15]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x14]
shl ecx, 8
dec eax
arpl cx, cx
dec eax
or ecx, eax
dec ecx
mov dword [ecx + 8], ecx
movzx eax, byte [esi + 0x2c]
inc esp
movzx eax, byte [esi + 0x2d]
movzx ecx, byte [esp + 0x43]
inc ecx
shl eax, 8
inc esp
or eax, eax
movzx eax, byte [esi + 0x2b]
shl ecx, 8
inc ecx
shl eax, 8
inc esp
or eax, eax
movzx eax, byte [esi + 0x2a]
inc ecx
shl eax, 8
inc esp
or eax, eax
movzx eax, byte [esp + 0x44]
or edx, eax
movzx eax, byte [esp + 0x42]
or ecx, eax
inc ecx
add edx, esi
inc ecx
add edx, eax
lea eax, [ecx + edx + 0x1e]
inc ecx
mov dword [ecx + 0x10], eax
movzx ecx, byte [esi + 0xb]
movzx eax, byte [esi + 0xa]
shl ecx, 8
or ecx, eax
xor ebp, ebp
inc ecx
mov dword [ecx + 0x14], ecx
dec eax
mov ecx, edi
call fcn.0040c3c0
mov eax, ebp
dec eax
mov ecx, dword [esp + 0x48]
dec eax
xor ecx, esp
call fcn.0040b780
dec eax
mov ebx, dword [esp + 0xa8]
dec eax
add esp, 0x50
inc ecx
pop edi
inc ecx
pop esi
inc ecx
pop ebp
inc ecx
pop esp
pop edi
pop esi
pop ebp
ret