Function at 0x14010e670
Capabilities:
Compute adler32 checksum

Disassembly:
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
mov dword [rsp + 8], ecx
sub rsp, 0x28
mov r8d, dword [rsp + 0x40]
mov rdx, qword [rsp + 0x38]
mov ecx, dword [rsp + 0x30]
add rsp, 0x28
jmp 0x14010e6a0
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 0x14010e6f8
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 0x14010e707
lea eax, [r8 + 1]
ret
cmp r10, 0x10
jae 0x14010e74e
test r10, r10
je 0x14010e726
movzx eax, byte [r8]
lea r8, [r8 + 1]
add r9d, eax
add ecx, r9d
sub r10, 1
jne 0x14010e712
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 0x14010e87c
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 0x14010e790
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 0x14010e782
test r10, r10
je 0x14010e99c
cmp r10, 0x10
jb 0x14010e95d
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 0x14010e8a0
test r10, r10
je 0x14010e976
movzx eax, byte [r8]
lea r8, [r8 + 1]
add r9d, eax
add ecx, r9d
sub r10, 1
jne 0x14010e962
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