Function at 0x164c79940
Capabilities:
Compute adler32 checksum

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov dword [rsp + 8], ecx
mov eax, dword [rsp + 8]
mov ecx, eax
mov r10, qword [rsp + 0x18]
shr ecx, 0x10
movzx r9d, ax
cmp r10, 1
jne 0x164c79998
mov rax, qword [rsp + 0x10]
movzx eax, byte [rax]
add eax, r9d
cmp eax, 0xfff1
lea edx, [rax - 0xfff1]
cmovb edx, eax
lea eax, [rdx + rcx]
cmp eax, 0xfff1
lea ecx, [rax - 0xfff1]
cmovb ecx, eax
shl ecx, 0x10
or ecx, edx
mov eax, ecx
ret
mov r8, qword [rsp + 0x10]
test r8, r8
jne 0x164c799a7
lea eax, [r8 + 1]
ret
cmp r10, 0x10
jae 0x164c799ee
test r10, r10
je 0x164c799c6
movzx eax, byte [r8]
lea r8, [r8 + 1]
add r9d, eax
add ecx, r9d
sub r10, 1
jne 0x164c799b2
cmp r9d, 0xfff1
lea r8d, [r9 - 0xfff1]
mov eax, 0x80078071
cmovb r8d, r9d
mul ecx
shr edx, 0xf
imul eax, edx, 0xf
add eax, ecx
shl eax, 0x10
or eax, r8d
ret
cmp r10, 0x15b0
jb 0x164c79b2f
mov r11, r10
movabs rax, 0x79baa6bb6398b6f7
mul r10
sub r11, rdx
shr r11, 1
add r11, rdx
shr r11, 0xc
imul rax, r11, 0xffffffffffffea50
add r10, rax
mov edx, 0x15b
nop word [rax + rax]
movzx eax, byte [r8]
add r9d, eax
movzx eax, byte [r8 + 1]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 2]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 3]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 4]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 5]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 6]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 7]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 8]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 9]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xa]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xb]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xc]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xd]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xe]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xf]
add ecx, r9d
add r8, 0x10
add r9d, eax
add ecx, r9d
add edx, 0xffffffff
jne 0x164c79a30
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r9d, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
sub r11, 1
jne 0x164c79a22
test r10, r10
je 0x164c79c3c
cmp r10, 0x10
jb 0x164c79c02
mov rdx, r10
shr rdx, 4
imul rax, rdx, 0xfffffffffffffff0
add r10, rax
nop dword [rax]
movzx eax, byte [r8]
add r9d, eax
movzx eax, byte [r8 + 1]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 2]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 3]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 4]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 5]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 6]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 7]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 8]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 9]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xa]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xb]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xc]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xd]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xe]
add ecx, r9d
add r9d, eax
movzx eax, byte [r8 + 0xf]
add ecx, r9d
add r8, 0x10
add r9d, eax
add ecx, r9d
sub rdx, 1
jne 0x164c79b40
test r10, r10
je 0x164c79c16
movzx eax, byte [r8]
lea r8, [r8 + 1]
add r9d, eax
add ecx, r9d
sub r10, 1
jne 0x164c79c02
mov eax, 0x80078071
mul r9d
mov eax, 0x80078071
shr edx, 0xf
imul edx, edx, 0xffff000f
add r9d, edx
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
shl ecx, 0x10
or ecx, r9d
mov eax, ecx
ret