Function at 0x444468
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
xor ecx, ecx
cmp dword [ebp + 0x40], ecx
mov eax, 0x200
setl byte [ebp - 1]
cmp byte [ebp - 1], cl
mov dword [ebp - 8], eax
je 0x444487
neg dword [ebp + 0x40]
cmp dword [ebp + 0x34], ecx
je 0x444492
mov eax, dword [ebp + 0x34]
mov dword [ebp - 8], eax
cmp dword [ebp + 0x38], ecx
mov edx, dword [ebp + 0x2c]
push ebx
mov ebx, dword [ebp + 0x24]
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
je 0x4444cf
or edx, dword [ebp + 0x30]
je 0x4444b6
mov edi, dword [ebp + 0x28]
mov esi, ebx
add esi, dword [ebp + 0x2c]
adc edi, dword [ebp + 0x30]
cmp eax, 1
jle 0x444525
cdq
push edx
push eax
push dword [ebp + 0x28]
mov dword [ebp - 0x24], eax
push ebx
mov dword [ebp - 0x20], edx
call fcn.004951f0
jmp 0x4444fa
or edx, dword [ebp + 0x30]
je 0x4444df
mov edi, dword [ebp + 0x28]
mov esi, ebx
add esi, dword [ebp + 0x2c]
adc edi, dword [ebp + 0x30]
cmp eax, 1
jle 0x444525
cdq
push edx
push eax
push dword [ebp + 0x28]
mov dword [ebp - 0x24], eax
push ebx
mov dword [ebp - 0x20], edx
call fcn.004951f0
mov dword [ebp + 0x38], eax
cdq
push dword [ebp - 0x20]
sub ebx, eax
sbb dword [ebp + 0x28], edx
mov eax, dword [ebp + 0x38]
push dword [ebp - 0x24]
cdq
add ebx, eax
adc dword [ebp + 0x28], edx
push dword [ebp + 0x28]
push ebx
call fcn.004951f0
mov dword [ebp + 0x38], eax
cdq
sub ebx, eax
sbb dword [ebp + 0x28], edx
mov dword [ebp + 0x24], ebx
jmp 0x444528
mov dword [ebp + 0x38], ecx
cmp edi, dword [ebp + 0x14]
jl 0x44453a
jg 0x444534
cmp esi, dword [ebp + 0x10]
jbe 0x44453a
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
mov edx, 0xfffffe00
mov eax, ebx
and eax, edx
mov dword [ebp - 0x1c], eax
mov ecx, esi
add ecx, 0x1ff
mov eax, edi
adc eax, 0
and ecx, edx
cmp eax, dword [ebp + 0x14]
mov dword [ebp - 0x40], eax
jl 0x44456d
jg 0x444564
cmp ecx, dword [ebp + 0x10]
jbe 0x44456d
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0x38]
cdq
mov dword [ebp - 0x3c], eax
add eax, ebx
mov dword [ebp + 0x10], eax
mov eax, edx
adc eax, dword [ebp + 0x28]
mov dword [ebp - 0x38], edx
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x1c]
cdq
mov ebx, eax
mov eax, esi
sub eax, ebx
mov ebx, edi
sbb ebx, edx
sub eax, dword [ebp + 0x10]
sbb ebx, dword [ebp + 0x14]
and dword [ebp - 0x2c], 0
and dword [ebp - 0x28], 0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x3c]
test eax, eax
jne 0x4445cb
mov edx, dword [ebp + 0x28]
sub ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x40]
push edx
push dword [ebp - 0x1c]
sbb eax, edx
push 2
push eax
push ecx
push dword [ebp + 0xc]
lea ecx, [ebp - 0x2c]
call fcn.00437dc4
mov eax, dword [ebp - 0x28]
or dword [ebp - 0x44], 0xffffffff
or dword [ebp - 0x40], 0xffffffff
test eax, eax
je 0x4446d0
mov esi, dword [ebp + 0x10]
sub esi, dword [ebp - 0x1c]
and dword [ebp + 0x24], 0
add esi, eax
xor edi, edi
cmp byte [ebp - 1], 0
je 0x444623
cmp dword [ebp - 8], 1
mov eax, dword [ebp - 0x34]
mov edx, ebx
jle 0x444619
mov eax, dword [ebp - 8]
cdq
push edx
mov edi, eax
push edi
push ebx
push dword [ebp - 0x34]
mov dword [ebp - 0x20], edx
call fcn.00492e60
push dword [ebp - 0x20]
push edi
push edx
push eax
call fcn.00492f10
add esi, eax
neg dword [ebp - 8]
mov dword [ebp + 0x24], eax
mov edi, edx
cmp edi, ebx
jg 0x44493d
jge 0x44469a
test edi, edi
jl 0x44493d
jg 0x444641
cmp dword [ebp + 0x24], 0
jb 0x44493d
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push esi
call fcn.0043e050
add esp, 0xc
test eax, eax
je 0x444684
cmp dword [ebp + 8], 0
je 0x4446b8
mov eax, dword [ebp + 0x24]
add eax, dword [ebp + 0x10]
mov ecx, edi
adc ecx, dword [ebp + 0x14]
push ecx
push eax
push dword [ebp + 8]
call fcn.004440c9
xor eax, eax
add esp, 0xc
cmp dword [ebp + 0x40], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
jle 0x444684
dec dword [ebp + 0x40]
je 0x4446a7
mov eax, dword [ebp - 8]
cdq
add dword [ebp + 0x24], eax
adc edi, edx
add esi, dword [ebp - 8]
cmp edi, ebx
jl 0x44462d
jg 0x44493d
mov eax, dword [ebp + 0x24]
cmp eax, dword [ebp - 0x34]
jbe 0x44462d
jmp 0x44493d
lea ecx, [ebp - 0x2c]
call fcn.00437d98
xor eax, eax
xor edx, edx
jmp 0x44494b
lea ecx, [ebp - 0x2c]
call fcn.00437d98
mov eax, dword [ebp + 0x24]
add eax, dword [ebp + 0x10]
mov edx, edi
adc edx, dword [ebp + 0x14]
jmp 0x44494b
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x38]
lea ebx, [eax + ecx]
mov eax, ebx
cdq
mov ecx, esi
sub ecx, eax
mov eax, edi
sbb eax, edx
cmp byte [ebp - 1], 0
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
je 0x444700
mov esi, 0x80070057
or edi, 0xffffffff
jmp 0x44495c
push 0
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0xc]
call fcn.0043908b
add esp, 0x10
cmp dword [ebp + 0x24], eax
jne 0x44471d
cmp dword [ebp + 0x28], edx
je 0x444727
or edi, 0xffffffff
mov esi, edi
jmp 0x44495c
sub esi, dword [ebp + 0x24]
sbb edi, dword [ebp + 0x28]
mov ecx, esi
mov esi, ebx
shl esi, 2
mov eax, esi
cdq
cmp edx, edi
jl 0x444743
jg 0x444741
cmp eax, ecx
jbe 0x444743
mov esi, ecx
mov edi, dword [ebp - 0x18]
mov ebx, 0xfffffe00
add edi, 0x1ff
lea ecx, [esi + 0x1ff]
and ecx, ebx
mov eax, 0x200000
and edi, ebx
cmp ecx, eax
mov dword [ebp - 0xc], ecx
jge 0x44476a
mov dword [ebp - 0xc], eax
and dword [ebp + 0x14], 0
mov eax, dword [ebp - 0xc]
add eax, 0x100000
push eax
lea ecx, [ebp + 0x14]
call fcn.0043dc99
test eax, eax
mov dword [ebp - 0x10], eax
je 0x444795
add eax, 0x100000
and eax, 0xfff00000
mov dword [ebp - 0x10], eax
jne 0x4447b5
mov eax, dword [ebp - 0xc]
cmp eax, esi
jl 0x444935
cdq
sub eax, edx
sar eax, 1
add eax, 0x1ff
and eax, ebx
cmp dword [ebp - 0x10], 0
mov dword [ebp - 0xc], eax
je 0x44476e
cmp dword [ebp - 0xc], edi
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
jl 0x444935
and dword [ebp + 0x3c], 0
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebp - 0x30]
cmp dword [ebp + 0x28], eax
mov dword [ebp - 0x14], 0x3e8
jg 0x444935
jl 0x4447f1
mov eax, dword [ebp - 0x34]
cmp dword [ebp + 0x24], eax
ja 0x444935
mov ecx, dword [ebp - 0x34]
sub ecx, dword [ebp + 0x24]
mov esi, dword [ebp - 0x30]
sbb esi, dword [ebp + 0x28]
mov edi, dword [ebp - 0xc]
add ecx, 0x1ff
adc esi, 0
sub edi, dword [ebp + 0x3c]
and ecx, ebx
mov eax, edi
cdq
cmp esi, edx
jl 0x44481f
jg 0x44481b
cmp ecx, eax
jbe 0x44481f
mov ecx, eax
mov esi, edx
test esi, esi
jl 0x444935
jg 0x444831
test ecx, ecx
jbe 0x444935
mov esi, dword [ebp + 0x3c]
and dword [ebp + 0x34], 0
push 0
lea eax, [ebp + 0x34]
push eax
mov eax, dword [ebp - 0x10]
push ecx
add eax, esi
push eax
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x444858
cmp dword [ebp + 0x34], 0
jg 0x444869
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0
jle 0x444935
and dword [ebp + 0x34], 0
cmp dword [ebp + 0x34], edi
jle 0x444871
mov dword [ebp + 0x34], edi
add dword [ebp + 0x34], esi
mov eax, dword [ebp + 0x34]
cmp eax, dword [ebp - 0x18]
mov dword [ebp + 0x3c], eax
jl 0x44491b
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp - 0x20]
lea edi, [ecx + eax]
mov eax, dword [ebp + 0x3c]
sub eax, dword [ebp - 0x18]
and dword [ebp - 0x10], 0
add eax, dword [ebp - 8]
cdq
idiv dword [ebp - 8]
mov esi, eax
test esi, esi
jle 0x4448f9
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push edi
call fcn.0043e050
add esp, 0xc
test eax, eax
je 0x4448e4
cmp dword [ebp + 8], 0
je 0x44496a
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp + 0x24]
mov ecx, dword [ebp - 0x38]
adc ecx, dword [ebp + 0x28]
push ecx
push eax
push dword [ebp + 8]
call fcn.004440c9
add esp, 0xc
cmp dword [ebp + 0x40], 0
jle 0x4448e4
dec dword [ebp + 0x40]
je 0x444950
mov eax, dword [ebp - 8]
inc dword [ebp - 0x10]
cdq
add dword [ebp + 0x24], eax
adc dword [ebp + 0x28], edx
add edi, dword [ebp - 8]
cmp dword [ebp - 0x10], esi
jl 0x4448a3
imul esi, dword [ebp - 8]
sub dword [ebp + 0x3c], esi
cmp dword [ebp + 0x3c], 0
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
jle 0x44491b
push dword [ebp + 0x3c]
add esi, eax
push esi
push eax
call fcn.0041286c
add esp, 0xc
mov eax, dword [ebp + 0x28]
cmp eax, dword [ebp - 0x30]
jl 0x4447f1
jg 0x444935
mov eax, dword [ebp + 0x24]
cmp eax, dword [ebp - 0x34]
jbe 0x4447f1
lea ecx, [ebp + 0x14]
call fcn.00437e1a
lea ecx, [ebp - 0x2c]
call fcn.00437d98
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x40]
pop edi
pop esi
pop ebx
leave
ret
lea ecx, [ebp + 0x14]
call fcn.00437e1a
xor esi, esi
xor edi, edi
lea ecx, [ebp - 0x2c]
call fcn.00437d98
mov eax, esi
mov edx, edi
jmp 0x44494b
lea ecx, [ebp + 0x14]
call fcn.00437e1a
lea ecx, [ebp - 0x2c]
call fcn.00437d98
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp + 0x24]
mov edx, dword [ebp - 0x38]
adc edx, dword [ebp + 0x28]
jmp 0x44494b