Function at 0x18009a638
Capabilities:
Compute adler32 checksum

Disassembly:
mov qword [rsp + 8], rdi
mov r10d, ecx
movzx r9d, cx
shr r10d, 0x10
mov r11, rdx
cmp r8d, 1
jne 0x18009a685
movzx ecx, byte [rdx]
mov r8d, 0xfff1
add ecx, r9d
cmp ecx, r8d
lea edx, [rcx - 0xfff1]
cmovb edx, ecx
lea eax, [rdx + r10]
cmp eax, r8d
lea ecx, [rax - 0xfff1]
cmovb ecx, eax
shl ecx, 0x10
or ecx, edx
mov eax, ecx
jmp 0x18009a91b
test rdx, rdx
jne 0x18009a692
lea eax, [rdx + 1]
jmp 0x18009a91b
cmp r8d, 0x10
jae 0x18009a6e1
test r8d, r8d
je 0x18009a6b2
or ecx, 0xffffffff
movzx eax, byte [r11]
inc r11
add r9d, eax
add r10d, r9d
add r8d, ecx
jne 0x18009a6a0
mov r8d, 0xfff1
lea ecx, [r9 - 0xfff1]
cmp r9d, r8d
mov eax, 0x80078071
cmovb ecx, r9d
mul r10d
shr edx, 0xf
imul eax, edx, 0xf
add eax, r10d
shl eax, 0x10
or eax, ecx
jmp 0x18009a91b
or ecx, 0xffffffff
cmp r8d, 0x15b0
jb 0x18009a80a
mov eax, 0x5e6ea9af
mul r8d
shr edx, 0xb
mov edi, edx
add r8d, 0xffffea50
mov edx, 0x15b
movzx eax, byte [r11]
add r9d, eax
movzx eax, byte [r11 + 1]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 2]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 3]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 4]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 5]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 6]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 7]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 8]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 9]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xa]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xb]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xc]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xd]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xe]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xf]
add r10d, r9d
add r11, 0x10
add r9d, eax
add r10d, r9d
add edx, ecx
jne 0x18009a70a
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r9d, eax
mov eax, 0x80078071
mul r10d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r10d, eax
sub rdi, 1
jne 0x18009a6fe
test r8d, r8d
je 0x18009a911
cmp r8d, 0x10
jb 0x18009a8d7
mov edx, r8d
shr rdx, 4
movzx eax, byte [r11]
add r8d, 0xfffffff0
add r9d, eax
movzx eax, byte [r11 + 1]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 2]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 3]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 4]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 5]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 6]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 7]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 8]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 9]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xa]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xb]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xc]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xd]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xe]
add r10d, r9d
add r9d, eax
movzx eax, byte [r11 + 0xf]
add r10d, r9d
add r11, 0x10
add r9d, eax
add r10d, r9d
sub rdx, 1
jne 0x18009a811
test r8d, r8d
je 0x18009a8e9
movzx eax, byte [r11]
inc r11
add r9d, eax
add r10d, r9d
add r8d, ecx
jne 0x18009a8d7
mov eax, 0x80078071
mul r9d
mov eax, 0x80078071
shr edx, 0xf
imul ecx, edx, 0xffff000f
mul r10d
add r9d, ecx
shr edx, 0xf
imul ecx, edx, 0xffff000f
add r10d, ecx
shl r10d, 0x10
or r10d, r9d
mov eax, r10d
mov rdi, qword [rsp + 8]
ret