Function at 0x1800512c0
Capabilities:
Compute adler32 checksum

Disassembly:
mov qword [rsp + 0x20], rsi
push r14
sub rsp, 0x20
mov r10d, dword [r8]
xor esi, esi
movzx r9d, r10w
mov r14, r8
shr r10d, 0x10
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rbp
mov ebp, edx
cmp edx, 0x1f
jl 0x180051452
movaps xmmword [rsp + 0x10], xmm6
mov eax, ecx
movdqa xmm6, xmmword [0x18016dcd0]
xorps xmm4, xmm4
movaps xmmword [rsp], xmm7
movdqa xmm7, xmmword [0x18016dcc0]
and eax, 0xf
je 0x18005136a
neg eax
mov r11d, esi
and eax, 0xf
mov ebx, esi
mov r8d, eax
mov edx, esi
cmp r8, 2
jb 0x180051354
mov qword [rsp + 0x40], rdi
lea rdi, [rax - 1]
movzx eax, byte [rcx + rdx]
add r9d, eax
movzx eax, byte [rcx + rdx + 1]
add r11d, r9d
add rdx, 2
add r9d, eax
add ebx, r9d
cmp rdx, rdi
jl 0x180051331
mov rdi, qword [rsp + 0x40]
cmp rdx, r8
jl 0x1800514dd
lea eax, [rbx + r11]
sub ebp, r8d
add r10d, eax
add rcx, r8
mov r8d, ebp
movd xmm5, r9d
sar r8d, 4
movd xmm3, r10d
cmp r8d, 0x15a
jge 0x1800514ec
test r8d, r8d
je 0x180051446
movdqu xmm2, xmmword [rcx]
movdqa xmm0, xmm5
movdqa xmm1, xmm2
pslld xmm0, 4
punpcklbw xmm1, xmm4
paddd xmm0, xmm3
pmaddwd xmm1, xmm6
add rcx, 0x10
movdqa xmm3, xmm1
movdqa xmm1, xmm2
punpckhbw xmm1, xmm4
paddd xmm3, xmm0
psadbw xmm2, xmm4
pmaddwd xmm1, xmm7
paddd xmm2, xmm5
paddd xmm3, xmm1
movdqa xmm5, xmm2
sub r8d, 1
jne 0x180051391
movd r9d, xmm5
movdqa xmm0, xmm3
movdqa xmm1, xmm3
psrldq xmm5, 8
movd eax, xmm5
psrldq xmm0, 4
psrldq xmm1, 0xc
add r9d, eax
movd r10d, xmm0
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r9d, eax
movd eax, xmm1
add r10d, eax
movd eax, xmm3
psrldq xmm3, 8
add r10d, eax
movd eax, xmm3
add r10d, eax
mov eax, 0x80078071
mul r10d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r10d, eax
movaps xmm7, xmmword [rsp]
and ebp, 0xf
movaps xmm6, xmmword [rsp + 0x10]
movsxd r8, ebp
mov r11d, esi
mov rbp, qword [rsp + 0x38]
mov rdx, rsi
cmp r8, 2
jl 0x180051488
lea rbx, [r8 - 1]
movzx eax, byte [rcx + rdx]
add r9d, eax
movzx eax, byte [rcx + rdx + 1]
add esi, r9d
add rdx, 2
add r9d, eax
add r11d, r9d
cmp rdx, rbx
jl 0x18005146a
mov rbx, qword [rsp + 0x30]
cmp rdx, r8
jge 0x18005149c
movzx edx, byte [rdx + rcx]
add r9d, edx
add r10d, r9d
lea ecx, [r11 + rsi]
mov eax, 0x80078071
mov rsi, qword [rsp + 0x48]
add r10d, ecx
mul r9d
mov eax, 0x80078071
shr edx, 0xf
imul ecx, edx, 0xfff1
mul r10d
sub r9d, ecx
shr edx, 0xf
imul eax, edx, 0xf
add eax, r10d
shl eax, 0x10
or r9d, eax
mov dword [r14], r9d
add rsp, 0x20
pop r14
ret
movzx eax, byte [rdx + rcx]
add r9d, eax
add r10d, r9d
jmp 0x18005135d
mov eax, 0x7ad2208f
mul r8d
mov eax, r8d
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 8
mov r11d, eax
imul eax, eax, 0xfffffea6
add r8d, eax
mov eax, 0x15a
movdqu xmm2, xmmword [rcx]
movdqa xmm0, xmm5
movdqa xmm1, xmm2
pslld xmm0, 4
punpcklbw xmm1, xmm4
paddd xmm0, xmm3
pmaddwd xmm1, xmm6
add rcx, 0x10
movdqa xmm3, xmm1
movdqa xmm1, xmm2
punpckhbw xmm1, xmm4
paddd xmm3, xmm0
psadbw xmm2, xmm4
pmaddwd xmm1, xmm7
paddd xmm2, xmm5
paddd xmm3, xmm1
movdqa xmm5, xmm2
sub eax, 1
jne 0x180051511
movd r9d, xmm5
movdqa xmm0, xmm3
movdqa xmm1, xmm3
psrldq xmm5, 8
movd eax, xmm5
psrldq xmm0, 4
psrldq xmm1, 0xc
add r9d, eax
movd r10d, xmm0
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r9d, eax
movd eax, xmm1
add r10d, eax
movd eax, xmm3
psrldq xmm3, 8
movd xmm5, r9d
add r10d, eax
movd eax, xmm3
add r10d, eax
mov eax, 0x80078071
mul r10d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r10d, eax
movd xmm3, r10d
sub r11, 1
je 0x180051388
jmp 0x18005150c