Function at 0x18003b2c0
Capabilities:
Compute adler32 checksum

Disassembly:
mov r8d, r8d
jmp 0x18003b2d0
mov r9d, ecx
mov r10, rdx
shr r9d, 0x10
movzx ecx, cx
cmp r8, 1
jne 0x18003b314
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 0x18003b31d
lea eax, [rdx + 1]
ret
cmp r8, 0x10
jae 0x18003b36c
test r8, r8
je 0x18003b343
nop dword [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x18003b330
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 0x18003b49f
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 0x18003b3b0
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 0x18003b3a0
test r8, r8
je 0x18003b59b
cmp r8, 0x10
jb 0x18003b562
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 0x18003b4b0
test r8, r8
je 0x18003b575
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x18003b562
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