Function at 0x404536
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x38
mov eax, dword [0x431034]
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.00409f7b
mov ebp, eax
pop ecx
test ebp, ebp
jne 0x40456e
or eax, 0xffffffff
jmp 0x4046f1
push ebx
push esi
push edi
mov edi, dword [esp + 0x4c]
push ebp
push edi
call fcn.00403f40
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x18], eax
and ecx, edx
mov dword [esp + 0x1c], edx
cmp ecx, 0xffffffff
je 0x4046e2
mov eax, 0x400
push eax
push ebp
push edi
call fcn.00417558
mov esi, eax
add esp, 0xc
test esi, esi
js 0x4046e2
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 0x4046e2
cmp esi, 0x2e
jge 0x404606
push esi
push ebx
push ebp
call fcn.0040b7b0
mov ebx, eax
lea ecx, [esi + ebp]
mov eax, 0x400
push eax
push ecx
push edi
call fcn.00417558
add esp, 0x18
test eax, eax
jle 0x4046e2
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 0x404677
cmp ebx, ebp
je 0x404650
push esi
push ebx
push ebp
call fcn.0040b7b0
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.00417558
add esp, 0xc
test eax, eax
jle 0x4046e2
add esi, eax
push dword [esp + 0x10]
call fcn.0040e970
movzx edx, byte [ebx + 0x1d]
pop ecx
movzx ecx, byte [ebx + 0x1c]
shl edx, 8
or edx, ecx
cmp edx, eax
jne 0x4046b0
push dword [esp + 0x10]
call fcn.0040e970
push eax
push dword [esp + 0x18]
lea eax, [ebx + 0x2e]
push eax
call fcn.00409f7b
add esp, 0x10
test eax, eax
je 0x404701
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 0x4045da
or esi, 0xffffffff
push ebp
call fcn.00409f7b
pop ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
pop ebp
xor ecx, esp
call fcn.004097a8
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.00409f7b
xor esi, esi
add esp, 0x10
cmp edx, esi
jl 0x4046e2
jg 0x40475b
cmp eax, esi
jb 0x4046e2
push 0x1e
lea eax, [esp + 0x28]
push eax
push edi
call fcn.00417558
add esp, 0xc
test eax, eax
js 0x4046e2
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 0x4046e2
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 0x4046e5