Function at 0x180004230
Capabilities:
Compute adler32 checksum

Disassembly:
mov r8d, r8d
jmp 0x180004240
mov r9d, ecx
mov r10, rdx
movzx ecx, cx
shr r9d, 0x10
cmp r8, 1
jne 0x180004288
movzx eax, byte [rdx]
add ecx, eax
cmp ecx, 0xfff1
jb 0x180004266
add ecx, 0xffff000f
add r9d, ecx
cmp r9d, 0xfff1
jb 0x180004518
add r9d, 0xffff000f
shl r9d, 0x10
or r9d, ecx
mov eax, r9d
ret
test rdx, rdx
jne 0x180004291
lea eax, [rdx + 1]
ret
cmp r8, 0x10
jae 0x1800042d7
test r8, r8
je 0x1800042b2
nop dword [rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
dec r8
jne 0x1800042a0
cmp ecx, 0xfff1
jb 0x1800042c0
add ecx, 0xffff000f
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xf
add eax, r9d
shl eax, 0x10
or eax, ecx
ret
cmp r8, 0x15b0
jb 0x1800043fa
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
nop dword [rax + rax]
mov edx, 0x15b
nop word [rax + rax]
movzx eax, byte [r10]
add r10, 0x10
add ecx, eax
movzx eax, byte [r10 - 0xf]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xe]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xd]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xc]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xb]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xa]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 9]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 8]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 7]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 6]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 5]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 4]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 3]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 2]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 1]
add r9d, ecx
add ecx, eax
add r9d, ecx
dec edx
jne 0x180004320
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
dec r11
jne 0x180004310
test r8, r8
je 0x180004518
cmp r8, 0x10
jb 0x1800044cc
mov rdx, r8
shr rdx, 4
imul rax, rdx, 0xfffffffffffffff0
add r8, rax
nop dword [rax + rax]
movzx eax, byte [r10]
add r10, 0x10
add ecx, eax
movzx eax, byte [r10 - 0xf]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xe]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xd]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xc]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xb]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 0xa]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 9]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 8]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 7]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 6]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 5]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 4]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 3]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 2]
add r9d, ecx
add ecx, eax
movzx eax, byte [r10 - 1]
add r9d, ecx
add ecx, eax
add r9d, ecx
dec rdx
jne 0x180004420
test r8, r8
je 0x1800044f2
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add ecx, eax
add r9d, ecx
dec r8
jne 0x1800044e0
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
shl r9d, 0x10
or r9d, ecx
mov eax, r9d
ret