Function at 0x448820
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 0x448876
test ebx, ebx
je 0x44887e
mov byte [ebp - 1], 1
jmp 0x44887e
test ebx, ebx
je 0x448ab3
xor esi, esi
lea ecx, [esi + 1]
cmp ebx, ecx
jne 0x44889a
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax]
inc eax
mov edi, eax
shl edi, 0x10
or edi, eax
jmp 0x448a9c
cmp ebx, 0x10
jae 0x4488d8
test ebx, ebx
je 0x4488c0
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x4488a3
cmp ecx, 0xfff1
jb 0x4488c0
sub ecx, 0xfff1
mov eax, 0x80078071
mul esi
shr edx, 0xf
mov edi, edx
shl edi, 4
sub edi, edx
add edi, esi
jmp 0x448a97
cmp ebx, 0x15b0
jb 0x4489ca
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 0x448900
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 0x4488f1
test ebx, ebx
je 0x448a95
cmp ebx, 0x10
jb 0x448a62
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 0x4489d0
test ebx, ebx
je 0x448a71
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
add esi, ecx
sub ebx, 1
jne 0x448a62
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 0x448850
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