Function at 0x444690
Capabilities:
Compute adler32 checksum
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
xor al, al
mov dword [ebp - 8], 0
xor esi, esi
mov byte [ebp - 1], al
push 0x2000
mov dword [ebp - 0x10], esi
call fcn.0051138a
mov edi, eax
add esp, 4
mov dword [ebp - 0x14], edi
nop dword [eax]
push 0
lea eax, [ebp - 8]
push eax
push 0x2000
push edi
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ebx, dword [ebp - 8]
test eax, eax
jne 0x4446e6
test ebx, ebx
je 0x4446ee
mov byte [ebp - 1], 1
jmp 0x4446ee
test ebx, ebx
je 0x444923
xor esi, esi
lea ecx, [esi + 1]
cmp ebx, ecx
jne 0x44470a
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax]
inc eax
mov edi, eax
shl edi, 0x10
or edi, eax
jmp 0x44490c
cmp ebx, 0x10
jae 0x444748
test ebx, ebx
je 0x444730
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x444713
cmp ecx, 0xfff1
jb 0x444730
sub ecx, 0xfff1
mov eax, 0x80078071
mul esi
shr edx, 0xf
mov edi, edx
shl edi, 4
sub edi, edx
add edi, esi
jmp 0x444907
cmp ebx, 0x15b0
jb 0x44483a
mov eax, 0x5e6ea9af
mul ebx
shr edx, 0xb
mov dword [ebp - 0xc], edx
sub ebx, 0x15b0
mov edx, 0x15b
nop dword [eax]
movzx eax, byte [edi]
add ecx, eax
movzx eax, byte [edi + 1]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 2]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 3]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 4]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 5]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 6]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 7]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 8]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 9]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xa]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xb]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xc]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xd]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xe]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xf]
add esi, ecx
add edi, 0x10
add ecx, eax
add esi, ecx
sub edx, 1
jne 0x444770
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul eax, edx, 0xffff000f
add esi, eax
sub dword [ebp - 0xc], 1
jne 0x444761
test ebx, ebx
je 0x444905
cmp ebx, 0x10
jb 0x4448d2
mov edx, ebx
shr edx, 4
nop
movzx eax, byte [edi]
sub ebx, 0x10
add ecx, eax
movzx eax, byte [edi + 1]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 2]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 3]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 4]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 5]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 6]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 7]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 8]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 9]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xa]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xb]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xc]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xd]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xe]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xf]
add esi, ecx
add edi, 0x10
add ecx, eax
add esi, ecx
sub edx, 1
jne 0x444840
test ebx, ebx
je 0x4448e1
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x4448d2
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul eax, edx, 0xffff000f
add esi, eax
mov edi, esi
shl edi, 0x10
or edi, ecx
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp + 0xc]
mov dword [esi + eax], edi
add esi, 4
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x10], esi
jmp 0x4446c0
push 0
push 0
push 0
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
call fcn.00511347
add esp, 4
or ecx, 0xffffffff
cmp byte [ebp - 1], 0
cmovne esi, ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc