Function at 0x448830
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.005187ea
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 0x448886
test ebx, ebx
je 0x44888e
mov byte [ebp - 1], 1
jmp 0x44888e
test ebx, ebx
je 0x448ac3
xor esi, esi
lea ecx, [esi + 1]
cmp ebx, ecx
jne 0x4488aa
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax]
inc eax
mov edi, eax
shl edi, 0x10
or edi, eax
jmp 0x448aac
cmp ebx, 0x10
jae 0x4488e8
test ebx, ebx
je 0x4488d0
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x4488b3
cmp ecx, 0xfff1
jb 0x4488d0
sub ecx, 0xfff1
mov eax, 0x80078071
mul esi
shr edx, 0xf
mov edi, edx
shl edi, 4
sub edi, edx
add edi, esi
jmp 0x448aa7
cmp ebx, 0x15b0
jb 0x4489da
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 0x448910
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 0x448901
test ebx, ebx
je 0x448aa5
cmp ebx, 0x10
jb 0x448a72
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 0x4489e0
test ebx, ebx
je 0x448a81
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x448a72
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 0x448860
push 0
push 0
push 0
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
call fcn.005187a7
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