Function at 0x404544
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x38
mov eax, dword [0x432034]
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.0040a84a
mov ebp, eax
pop ecx
test ebp, ebp
jne 0x40457c
or eax, 0xffffffff
jmp 0x4046ff
push ebx
push esi
push edi
mov edi, dword [esp + 0x4c]
push ebp
push edi
call fcn.00403f4e
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x18], eax
and ecx, edx
mov dword [esp + 0x1c], edx
cmp ecx, 0xffffffff
je 0x4046f0
mov eax, 0x400
push eax
push ebp
push edi
call fcn.004175dd
mov esi, eax
add esp, 0xc
test esi, esi
js 0x4046f0
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 0x4046f0
cmp esi, 0x2e
jge 0x404614
push esi
push ebx
push ebp
call fcn.0040b7f0
mov ebx, eax
lea ecx, [esi + ebp]
mov eax, 0x400
push eax
push ecx
push edi
call fcn.004175dd
add esp, 0x18
test eax, eax
jle 0x4046f0
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 0x404685
cmp ebx, ebp
je 0x40465e
push esi
push ebx
push ebp
call fcn.0040b7f0
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.004175dd
add esp, 0xc
test eax, eax
jle 0x4046f0
add esi, eax
push dword [esp + 0x10]
call fcn.0040ee60
movzx edx, byte [ebx + 0x1d]
pop ecx
movzx ecx, byte [ebx + 0x1c]
shl edx, 8
or edx, ecx
cmp edx, eax
jne 0x4046be
push dword [esp + 0x10]
call fcn.0040ee60
push eax
push dword [esp + 0x18]
lea eax, [ebx + 0x2e]
push eax
call fcn.0040a84a
add esp, 0x10
test eax, eax
je 0x40470f
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 0x4045e8
or esi, 0xffffffff
push ebp
call fcn.0040a84a
pop ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
pop ebp
xor ecx, esp
call fcn.004097b0
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.0040a84a
xor esi, esi
add esp, 0x10
cmp edx, esi
jl 0x4046f0
jg 0x404769
cmp eax, esi
jb 0x4046f0
push 0x1e
lea eax, [esp + 0x28]
push eax
push edi
call fcn.004175dd
add esp, 0xc
test eax, eax
js 0x4046f0
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 0x4046f0
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 0x4046f3