Function at 0x1401c2a50
Capabilities:
Compute adler32 checksum

Disassembly:
mov r8d, r8d
jmp 0x1401c2a60
mov r9d, ecx
mov r10, rdx
shr r9d, 0x10
movzx ecx, cx
cmp r8, 1
jne 0x1401c2aa4
movzx edx, byte [rdx]
add edx, ecx
cmp edx, 0xfff1
lea r8d, [rdx - 0xfff1]
cmovb r8d, edx
lea eax, [r8 + r9]
cmp eax, 0xfff1
lea ecx, [rax - 0xfff1]
cmovb ecx, eax
shl ecx, 0x10
or ecx, r8d
mov eax, ecx
ret
test rdx, rdx
jne 0x1401c2aad
lea eax, [rdx + 1]
ret
cmp r8, 0x10
jae 0x1401c2afc
test r8, r8
je 0x1401c2ad3
nop dword [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x1401c2ac0
cmp ecx, 0xfff1
lea r8d, [rcx - 0xfff1]
mov eax, 0x80078071
cmovb r8d, ecx
mul r9d
shr edx, 0xf
imul eax, edx, 0xf
add eax, r9d
shl eax, 0x10
or eax, r8d
ret
cmp r8, 0x15b0
jb 0x1401c2c2f
mov r11, r8
movabs rax, 0x79baa6bb6398b6f7
mul r8
sub r11, rdx
shr r11, 1
add r11, rdx
shr r11, 0xc
imul rax, r11, 0xffffffffffffea50
add r8, rax
mov edx, 0x15b
nop word [rax + rax]
movzx eax, byte [r10]
add ecx, eax
movzx eax, byte [r10 + 1]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 2]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 3]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 4]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 5]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 6]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 7]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 8]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 9]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xa]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xb]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xc]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xd]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xe]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xf]
add r9d, ecx
add r10, 0x10
add ecx, eax
add r9d, ecx
add edx, 0xffffffff
jne 0x1401c2b40
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r9d, eax
sub r11, 1
jne 0x1401c2b30
test r8, r8
je 0x1401c2d2b
cmp r8, 0x10
jb 0x1401c2cf2
mov rdx, r8
shr rdx, 4
imul rax, rdx, 0xfffffffffffffff0
add r8, rax
nop dword [rax]
movzx eax, byte [r10]
add ecx, eax
movzx eax, byte [r10 + 1]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 2]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 3]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 4]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 5]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 6]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 7]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 8]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 9]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xa]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xb]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xc]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xd]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xe]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 + 0xf]
add r9d, ecx
add r10, 0x10
add ecx, eax
add r9d, ecx
sub rdx, 1
jne 0x1401c2c40
test r8, r8
je 0x1401c2d05
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x1401c2cf2
mov eax, 0x80078071
mul ecx
mov eax, 0x80078071
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mul r9d
shr edx, 0xf
imul edx, edx, 0xffff000f
add r9d, edx
shl r9d, 0x10
or r9d, ecx
mov eax, r9d
ret