Function at 0x140039c10
Capabilities:
Compute adler32 checksum

Disassembly:
test r8, r8
je 0x1400381a2
nop word [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 1]
add ecx, eax
add r9d, ecx
sub r8, 1
jne 0x140038190
mov eax, 0x80078071
mul ecx
mov eax, 0x80078071
shr edx, 0xf
imul r8d, edx, 0xfff1
mul r9d
sub ecx, r8d
shr edx, 0xf
imul eax, edx, 0xf
add eax, r9d
shl eax, 0x10
or eax, ecx
ret
sub rsp, 0x78
mov r9d, ecx
movzx r11d, cx
shr r9d, 0x10
mov r10, rdx
cmp r8, 1
jne 0x140039c61
movzx r8d, byte [rdx]
mov eax, 0x80078071
add r8d, r11d
mul r8d
mov eax, 0x80078071
shr edx, 0xf
imul ecx, edx, 0xffff000f
add r8d, ecx
lea ecx, [r8 + r9]
mul ecx
shr edx, 0xf
imul eax, edx, 0xf
add eax, ecx
shl eax, 0x10
or eax, r8d
add rsp, 0x78
ret
test r10, r10
jne 0x140039c70
mov eax, 1
add rsp, 0x78
ret
cmp r8, 0x10
jae 0x140039c82
mov ecx, r11d
add rsp, 0x78
jmp 0x140038180
mov qword [rsp + 0x70], rdi
mov rcx, r10
movaps xmmword [rsp + 0x60], xmm6
and ecx, 0xf
movaps xmmword [rsp + 0x50], xmm7
mov edi, 0x10
movdqa xmm7, xmmword [0x140073fd0]
sub rdi, rcx
movaps xmmword [rsp + 0x40], xmm8
xor eax, eax
movaps xmmword [rsp + 0x30], xmm9
xorps xmm6, xmm6
movdqa xmm9, xmmword [0x140073fe0]
mov edx, 0x15b0
movaps xmmword [rsp + 0x20], xmm10
movdqa xmm10, xmmword [0x140073ff0]
test rcx, rcx
je 0x140039d82
lea rcx, [rdi + 0x10]
cmp r8, rcx
jae 0x140039d04
movd xmm3, r11d
sub r8, 0x10
movdqa xmm2, xmm3
movd xmm4, r9d
xorps xmm5, xmm5
mov rcx, r10
jmp 0x140039e41
mov qword [rsp + 0x80], rbx
mov ebx, eax
mov qword [rsp + 0x88], rsi
mov rsi, rax
cmp rdi, 2
jb 0x140039d4f
lea rdx, [rdi - 2]
shr rdx, 1
inc rdx
lea rsi, [rdx + rdx]
nop dword [rax]
movzx ecx, byte [r10]
add r11d, ecx
movzx ecx, byte [r10 + 1]
add eax, r11d
add r10, 2
add r11d, ecx
add ebx, r11d
sub rdx, 1
jne 0x140039d30
cmp rsi, rdi
mov rsi, qword [rsp + 0x88]
jae 0x140039d69
movzx ecx, byte [r10]
add r11d, ecx
add r9d, r11d
inc r10
lea ecx, [rbx + rax]
sub r8, rdi
mov rbx, qword [rsp + 0x80]
add r9d, ecx
mov edx, 0x15b0
sub rdx, rdi
cmp r8, 0x10
jb 0x140039ed0
cmp r8, rdx
movd xmm3, r11d
mov rax, rdx
movd xmm8, r9d
cmovb rax, r8
movdqa xmm5, xmm6
and rax, 0xfffffffffffffff0
movdqa xmm4, xmm6
sub r8, rax
cmp rax, 0x20
jb 0x140039e1e
mov rdx, rax
shr rdx, 5
imul rcx, rdx, 0xffffffffffffffe0
add rax, rcx
nop dword [rax]
nop word [rax + rax]
movdqu xmm1, xmmword [r10]
paddd xmm5, xmm3
movdqu xmm2, xmmword [r10 + 0x10]
movdqa xmm0, xmm1
psadbw xmm0, xmm6
add r10, 0x20
pmaddubsw xmm1, xmm10
paddd xmm3, xmm0
movdqa xmm0, xmm2
pmaddubsw xmm2, xmm9
psadbw xmm0, xmm6
pmaddwd xmm1, xmm7
pmaddwd xmm2, xmm7
paddd xmm3, xmm0
paddd xmm8, xmm1
paddd xmm4, xmm2
sub rdx, 1
jne 0x140039dd0
pslld xmm5, 5
paddd xmm4, xmm8
paddd xmm4, xmm5
movdqa xmm5, xmm6
movdqa xmm2, xmm3
mov rcx, r10
cmp rax, 0x10
jb 0x140039e69
sub rax, 0x10
movdqu xmm1, xmmword [rcx]
add r10, 0x10
paddd xmm5, xmm2
movdqa xmm0, xmm1
pmaddubsw xmm1, xmm9
psadbw xmm0, xmm6
pmaddwd xmm1, xmm7
paddd xmm3, xmm0
paddd xmm4, xmm1
jmp 0x140039e30
movdqa xmm0, xmm3
pslld xmm5, 4
psrldq xmm0, 8
paddd xmm5, xmm4
paddd xmm0, xmm3
mov eax, 0x80078071
movd r11d, xmm0
movdqa xmm1, xmm5
punpckhqdq xmm1, xmm5
paddd xmm1, xmm5
mul r11d
pshufd xmm0, xmm1, 1
paddd xmm0, xmm1
movd r9d, xmm0
shr edx, 0xf
imul eax, edx, 0xfff1
sub r11d, eax
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xfff1
mov edx, 0x15b0
sub r9d, eax
jmp 0x140039d82
movaps xmm10, xmmword [rsp + 0x20]
movaps xmm9, xmmword [rsp + 0x30]
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm6, xmmword [rsp + 0x60]
mov rdi, qword [rsp + 0x70]
test r8, r8
je 0x140039f14
nop word [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add r11d, eax
add r9d, r11d
sub r8, 1
jne 0x140039f00
mov eax, 0x80078071
mul r11d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r11d, eax
mov eax, 0x80078071
mul r9d
shr edx, 0xf
imul eax, edx, 0xf
add eax, r9d
shl eax, 0x10
or eax, r11d
add rsp, 0x78
ret