Function at 0x14018ad60
Capabilities:
Compute adler32 checksum

Disassembly:
mov r8d, r8d
jmp 0x14018ad70
mov r9d, ecx
mov r10, rdx
shr r9d, 0x10
movzx ecx, cx
cmp r8, 1
jne 0x14018adb4
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 0x14018adbd
lea eax, [rdx + 1]
ret
cmp r8, 0x10
jae 0x14018ae0c
test r8, r8
je 0x14018ade3
nop dword [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x14018add0
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 0x14018af3f
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 0x14018ae50
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 0x14018ae40
test r8, r8
je 0x14018b03b
cmp r8, 0x10
jb 0x14018b002
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 0x14018af50
test r8, r8
je 0x14018b015
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x14018b002
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