Function at 0x404568
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x38
mov eax, dword [0x433034]
xor eax, esp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x40]
push ebp
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
push 0x30032
mov dword [esp + 8], eax
call fcn.0041db9e
mov ebp, eax
pop ecx
test ebp, ebp
jne 0x4045a0
or eax, 0xffffffff
jmp 0x404723
push ebx
push esi
push edi
mov edi, dword [esp + 0x4c]
push ebp
push edi
call fcn.00403f72
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x18], eax
and ecx, edx
mov dword [esp + 0x1c], edx
cmp ecx, 0xffffffff
je 0x404714
mov eax, 0x400
push eax
push ebp
push edi
call fcn.0041757a
mov esi, eax
add esp, 0xc
test esi, esi
js 0x404714
movzx edx, byte [ebp + 3]
mov ebx, ebp
movzx ecx, byte [ebp + 2]
movzx eax, byte [ebp + 1]
shl edx, 8
or edx, ecx
shl edx, 8
or edx, eax
movzx eax, byte [ebp]
shl edx, 8
or edx, eax
cmp edx, 0x2014b50
jne 0x404714
cmp esi, 0x2e
jge 0x404638
push esi
push ebx
push ebp
call fcn.00409ff0
mov ebx, eax
lea ecx, [esi + ebp]
mov eax, 0x400
push eax
push ecx
push edi
call fcn.0041757a
add esp, 0x18
test eax, eax
jle 0x404714
add esi, eax
movzx edx, byte [ebx + 0x21]
movzx eax, byte [ebx + 0x20]
movzx ecx, byte [ebx + 0x1f]
shl edx, 8
or edx, eax
shl ecx, 8
movzx eax, byte [ebx + 0x1e]
or ecx, eax
movzx eax, byte [ebx + 0x1c]
add edx, ecx
movzx ecx, byte [ebx + 0x1d]
shl ecx, 8
or eax, ecx
add eax, 0x2e
add eax, edx
mov dword [esp + 0x14], eax
add eax, 4
cmp esi, eax
jge 0x4046a9
cmp ebx, ebp
je 0x404682
push esi
push ebx
push ebp
call fcn.00409ff0
add esp, 0xc
mov ebx, eax
mov eax, dword [esp + 0x14]
mov ecx, 0x400
sub eax, esi
add eax, 4
cmp eax, ecx
cmovl eax, ecx
push eax
lea eax, [esi + ebp]
push eax
push edi
call fcn.0041757a
add esp, 0xc
test eax, eax
jle 0x404714
add esi, eax
push dword [esp + 0x10]
call fcn.0040e990
movzx edx, byte [ebx + 0x1d]
pop ecx
movzx ecx, byte [ebx + 0x1c]
shl edx, 8
or edx, ecx
cmp edx, eax
jne 0x4046e2
push dword [esp + 0x10]
call fcn.0040e990
push eax
push dword [esp + 0x18]
lea eax, [ebx + 0x2e]
push eax
call fcn.0041db9e
add esp, 0x10
test eax, eax
je 0x404733
add ebx, dword [esp + 0x14]
sub esi, dword [esp + 0x14]
movzx ecx, byte [ebx + 3]
movzx eax, byte [ebx + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx]
shl ecx, 8
or ecx, eax
cmp ecx, 0x2014b50
je 0x40460c
or esi, 0xffffffff
push ebp
call fcn.0041db9e
pop ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
pop ebp
xor ecx, esp
call fcn.00409736
add esp, 0x38
ret
movzx eax, byte [ebx + 0x2d]
cdq
mov esi, eax
mov ecx, edx
movzx eax, byte [ebx + 0x2c]
shld ecx, esi, 8
cdq
shl esi, 8
or ecx, edx
or esi, eax
movzx eax, byte [ebx + 0x2b]
shld ecx, esi, 8
cdq
shl esi, 8
or ecx, edx
or esi, eax
movzx eax, byte [ebx + 0x2a]
shld ecx, esi, 8
cdq
shl esi, 8
or ecx, edx
or esi, eax
add esi, dword [esp + 0x18]
push 0
adc ecx, dword [esp + 0x20]
push ecx
push esi
push edi
call fcn.0041db9e
xor esi, esi
add esp, 0x10
cmp edx, esi
jl 0x404714
jg 0x40478d
cmp eax, esi
jb 0x404714
push 0x1e
lea eax, [esp + 0x28]
push eax
push edi
call fcn.0041757a
add esp, 0xc
test eax, eax
js 0x404714
movzx ecx, byte [esp + 0x27]
movzx eax, byte [esp + 0x26]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x25]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x24]
shl ecx, 8
or ecx, eax
cmp ecx, 0x4034b50
jne 0x404714
movzx ecx, byte [ebx + 0x1b]
movzx eax, byte [ebx + 0x1a]
mov edx, dword [esp + 0x20]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x19]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x18]
shl ecx, 8
or ecx, eax
mov dword [edx], ecx
movzx ecx, byte [ebx + 0x17]
movzx eax, byte [ebx + 0x16]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x15]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x14]
shl ecx, 8
or ecx, eax
mov dword [edx + 4], ecx
movzx eax, byte [ebx + 0x2d]
cdq
movzx ecx, byte [esp + 0x3f]
mov esi, eax
movzx eax, byte [ebx + 0x2c]
mov edi, edx
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
shl ecx, 8
movzx eax, byte [ebx + 0x2b]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ebx + 0x2a]
shld edi, esi, 8
cdq
shl esi, 8
or edi, edx
or esi, eax
movzx eax, byte [esp + 0x3e]
or ecx, eax
movzx eax, byte [esp + 0x40]
add esi, ecx
movzx ecx, byte [esp + 0x41]
push 0
pop edx
adc edi, edx
shl ecx, 8
or ecx, eax
add esi, ecx
adc edi, edx
add esi, dword [esp + 0x18]
adc edi, dword [esp + 0x1c]
add esi, 0x1e
adc edi, edx
mov edx, dword [esp + 0x20]
mov dword [edx + 8], esi
mov dword [edx + 0xc], edi
movzx ecx, byte [ebx + 0xb]
movzx eax, byte [ebx + 0xa]
shl ecx, 8
or ecx, eax
xor esi, esi
mov dword [edx + 0x10], ecx
jmp 0x404717