Function at 0x18000fc38
Capabilities:
Compute adler32 checksum

Disassembly:
sub rsp, 0x88
mov r10d, r8d
mov r8d, ecx
mov r9, rdx
shr r8d, 0x10
movzx ecx, cx
cmp r10d, 1
jne 0x18000fa40
movzx edx, byte [r9]
lea eax, [rcx + rdx]
cmp eax, 0xfff1
lea ecx, [rcx + rdx - 0xfff1]
cmovae eax, ecx
lea edx, [r8 + rax]
cmp edx, 0xfff1
jae 0x18000fdbf
shl edx, 0x10
or eax, edx
add rsp, 0x88
ret
test r9, r9
je 0x18000fdc9
cmp r10d, 0x10
jae 0x18000faa3
test r10d, r10d
lea edx, [r10 - 1]
je 0x18000fa6c
movzx r10d, byte [r9]
add ecx, r10d
dec edx
add r8d, ecx
inc r9
cmp edx, 0xffffffff
jne 0x18000fa58
mov eax, 0x80078071
cmp ecx, 0xfff1
lea r9d, [rcx - 0xfff1]
cmovae ecx, r9d
mul r8d
shr edx, 0xf
imul r10d, edx, 0xffff000f
add r8d, r10d
shl r8d, 0x10
or ecx, r8d
mov eax, ecx
add rsp, 0x88
ret
cmp r10d, 0x15b0
jb 0x18000fc38
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], rbp
add r10d, 0xffffea50
mov edx, 0x15b
mov dword [rsp + 0x70], r10d
mov dword [rsp + 0x60], edx
movzx ebx, byte [r9]
add ecx, ebx
movzx r15d, byte [r9 + 1]
add r8d, ecx
add r15d, ecx
movzx eax, byte [r9 + 2]
add eax, r15d
movzx r14d, byte [r9 + 3]
add r14d, eax
movzx r13d, byte [r9 + 4]
add r13d, r14d
movzx r12d, byte [r9 + 5]
add r12d, r13d
movzx r11d, byte [r9 + 6]
add r11d, r12d
movzx r10d, byte [r9 + 7]
add r10d, r11d
movzx edi, byte [r9 + 8]
add edi, r10d
movzx esi, byte [r9 + 9]
add esi, edi
movzx ebp, byte [r9 + 0xa]
add ebp, esi
movzx ebx, byte [r9 + 0xb]
add ebx, ebp
movzx ecx, byte [r9 + 0xc]
add ecx, ebx
mov dword [rsp + 0x68], r15d
mov dword [rsp + 0x80], ecx
movzx r15d, byte [r9 + 0xd]
movzx edx, byte [r9 + 0xe]
add r15d, ecx
movzx ecx, byte [r9 + 0xf]
add edx, r15d
mov qword [rsp + 0x78], r9
add ecx, edx
mov r9d, dword [rsp + 0x68]
add r9d, r8d
add eax, r9d
add r14d, eax
add r13d, r14d
add r12d, r13d
add r11d, r12d
add r10d, r11d
add edi, r10d
add esi, edi
add ebp, esi
add ebx, ebp
mov r8d, dword [rsp + 0x80]
add r8d, ebx
add r15d, r8d
add edx, r15d
mov r9, qword [rsp + 0x78]
add r9, 0x10
dec dword [rsp + 0x60]
lea r8d, [rcx + rdx]
jne 0x18000faed
mov eax, 0x80078071
mul ecx
mov eax, 0x80078071
shr edx, 0xf
imul ebx, edx, 0xffff000f
mul r8d
mov r10d, dword [rsp + 0x70]
add ecx, ebx
shr edx, 0xf
imul ebp, edx, 0xffff000f
add r8d, ebp
cmp r10d, 0x15b0
jae 0x18000fad8
mov rbx, qword [rsp + 0x20]
test r10d, r10d
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov r15, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
je 0x18000fdae
cmp r10d, 0x10
jb 0x18000fd68
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], rbp
movzx ebx, byte [r9]
add ecx, ebx
movzx r15d, byte [r9 + 1]
add r10d, 0xfffffff0
add r15d, ecx
add r8d, ecx
movzx eax, byte [r9 + 2]
add eax, r15d
movzx r14d, byte [r9 + 3]
add r14d, eax
movzx r13d, byte [r9 + 4]
add r13d, r14d
movzx r12d, byte [r9 + 5]
add r12d, r13d
movzx r11d, byte [r9 + 6]
add r11d, r12d
mov dword [rsp + 0x70], r10d
movzx r10d, byte [r9 + 7]
add r10d, r11d
movzx edi, byte [r9 + 8]
add edi, r10d
movzx esi, byte [r9 + 9]
add esi, edi
movzx ebp, byte [r9 + 0xa]
add ebp, esi
movzx ebx, byte [r9 + 0xb]
add ebx, ebp
movzx ecx, byte [r9 + 0xc]
add ecx, ebx
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x68], ecx
movzx r15d, byte [r9 + 0xd]
movzx edx, byte [r9 + 0xe]
add r15d, ecx
movzx ecx, byte [r9 + 0xf]
add edx, r15d
mov qword [rsp + 0x78], r9
add ecx, edx
mov r9d, dword [rsp + 0x60]
add r9d, r8d
add eax, r9d
add r14d, eax
add r13d, r14d
add r12d, r13d
add r11d, r12d
add r10d, r11d
add edi, r10d
add esi, edi
add ebp, esi
add ebx, ebp
mov r8d, dword [rsp + 0x68]
add r8d, ebx
add r15d, r8d
add edx, r15d
mov r9, qword [rsp + 0x78]
mov r10d, dword [rsp + 0x70]
add r9, 0x10
cmp r10d, 0x10
lea r8d, [rcx + rdx]
jae 0x18000fc60
mov rbx, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov r15, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
test r10d, r10d
lea edx, [r10 - 1]
je 0x18000fd85
movzx r10d, byte [r9]
add ecx, r10d
dec edx
add r8d, ecx
inc r9
cmp edx, 0xffffffff
jne 0x18000fd71
mov eax, 0x80078071
mul ecx
mov eax, 0x80078071
shr edx, 0xf
imul r9d, edx, 0xffff000f
mul r8d
add ecx, r9d
shr edx, 0xf
imul r10d, edx, 0xffff000f
add r8d, r10d
shl r8d, 0x10
or ecx, r8d
mov eax, ecx
add rsp, 0x88
ret
lea edx, [rax + r8 + 0xf]
jmp 0x18000fa33
mov eax, 1
add rsp, 0x88
ret