Function at 0x404576
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.0041103f
mov ebp, eax
pop ecx
test ebp, ebp
jne 0x4045ae
or eax, 0xffffffff
jmp 0x404731
push ebx
push esi
push edi
mov edi, dword [esp + 0x4c]
push ebp
push edi
call fcn.00403f80
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x18], eax
and ecx, edx
mov dword [esp + 0x1c], edx
cmp ecx, 0xffffffff
je 0x404722
mov eax, 0x400
push eax
push ebp
push edi
call fcn.004175ef
mov esi, eax
add esp, 0xc
test esi, esi
js 0x404722
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 0x404722
cmp esi, 0x2e
jge 0x404646
push esi
push ebx
push ebp
call fcn.0040a020
mov ebx, eax
lea ecx, [esi + ebp]
mov eax, 0x400
push eax
push ecx
push edi
call fcn.004175ef
add esp, 0x18
test eax, eax
jle 0x404722
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 0x4046b7
cmp ebx, ebp
je 0x404690
push esi
push ebx
push ebp
call fcn.0040a020
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.004175ef
add esp, 0xc
test eax, eax
jle 0x404722
add esi, eax
push dword [esp + 0x10]
call fcn.0040ee70
movzx edx, byte [ebx + 0x1d]
pop ecx
movzx ecx, byte [ebx + 0x1c]
shl edx, 8
or edx, ecx
cmp edx, eax
jne 0x4046f0
push dword [esp + 0x10]
call fcn.0040ee70
push eax
push dword [esp + 0x18]
lea eax, [ebx + 0x2e]
push eax
call fcn.0041103f
add esp, 0x10
test eax, eax
je 0x404741
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 0x40461a
or esi, 0xffffffff
push ebp
call fcn.0041103f
pop ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
pop ebp
xor ecx, esp
call fcn.0040973e
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.0041103f
xor esi, esi
add esp, 0x10
cmp edx, esi
jl 0x404722
jg 0x40479b
cmp eax, esi
jb 0x404722
push 0x1e
lea eax, [esp + 0x28]
push eax
push edi
call fcn.004175ef
add esp, 0xc
test eax, eax
js 0x404722
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 0x404722
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 0x404725