Function at 0x44c160
Capabilities:
Compute adler32 checksum

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rax, rdx
mov edx, ecx
mov dword [rsp + 0x80], r8d
shr edx, 0x10
cmp r8d, 1
movzx esi, cx
mov dword [rsp + 0x18], edx
je 0x44c61c
test rax, rax
je 0x44c64e
cmp dword [rsp + 0x80], 0xf
ja 0x44c359
mov edx, dword [rsp + 0x80]
test edx, edx
je 0x44c318
movzx edx, byte [rax]
add esi, edx
add dword [rsp + 0x18], esi
cmp dword [rsp + 0x80], 1
mov ecx, dword [rsp + 0x18]
je 0x44c318
movzx edx, byte [rax + 1]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 2
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 2]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 3
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 3]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 4
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 4]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 5
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 5]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 6
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 6]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 7
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 7]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 8
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 8]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 9
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 9]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 0xa
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 0xa]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 0xb
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 0xb]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 0xc
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 0xc]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 0xd
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx edx, byte [rax + 0xd]
add esi, edx
add ecx, esi
cmp dword [rsp + 0x80], 0xe
mov dword [rsp + 0x18], ecx
je 0x44c318
movzx eax, byte [rax + 0xe]
add esi, eax
add ecx, esi
mov dword [rsp + 0x18], ecx
lea eax, [rsi - 0xfff1]
cmp esi, 0xfff1
mov edx, 0x80078071
cmovae esi, eax
mov eax, dword [rsp + 0x18]
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
mov edx, dword [rsp + 0x18]
sub edx, eax
mov eax, edx
shl eax, 0x10
or eax, esi
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [rsp + 0x80], 0x15af
jbe 0x44c658
mov r15d, esi
mov rsi, rax
sub dword [rsp + 0x80], 0x15b0
lea rax, [rsi + 0x15b0]
mov qword [rsp + 0x10], rax
nop word [rax + rax]
movzx r13d, byte [rsi]
add rsi, 0x10
movzx r14d, byte [rsi - 0xf]
movzx r12d, byte [rsi - 0xe]
movzx ebp, byte [rsi - 0xd]
movzx edi, byte [rsi - 0xc]
movzx ebx, byte [rsi - 0xb]
movzx r11d, byte [rsi - 0xa]
add r13d, r15d
movzx r10d, byte [rsi - 9]
movzx r9d, byte [rsi - 8]
add r14d, r13d
movzx r8d, byte [rsi - 5]
movzx ecx, byte [rsi - 4]
add r12d, r14d
add r13d, r14d
movzx edx, byte [rsi - 3]
add ebp, r12d
add r13d, r12d
movzx r15d, byte [rsi - 1]
add edi, ebp
add r13d, ebp
add ebx, edi
add r13d, edi
add r11d, ebx
add ebx, r13d
add r10d, r11d
add r11d, ebx
lea eax, [r10 + r9]
movzx r9d, byte [rsi - 7]
add r10d, r11d
mov dword [rsp + 8], eax
add r10d, dword [rsp + 8]
add r9d, eax
mov eax, r9d
movzx r9d, byte [rsi - 6]
mov dword [rsp + 0xc], eax
add r10d, dword [rsp + 0xc]
add r9d, eax
movzx eax, byte [rsi - 2]
add r8d, r9d
add r9d, r10d
add ecx, r8d
add r8d, r9d
add edx, ecx
add ecx, r8d
add eax, edx
add edx, ecx
add r15d, eax
add eax, edx
add eax, r15d
add dword [rsp + 0x18], eax
cmp rsi, qword [rsp + 0x10]
jne 0x44c390
mov eax, 0x80078071
mov ecx, dword [rsp + 0x18]
mov rsi, qword [rsp + 0x10]
mul r15d
shr edx, 0xf
imul eax, edx, 0xfff1
sub r15d, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
cmp dword [rsp + 0x80], 0x15af
mov dword [rsp + 0x18], ecx
ja 0x44c370
mov eax, dword [rsp + 0x80]
mov esi, r15d
test eax, eax
je 0x44c60e
cmp dword [rsp + 0x80], 0xf
jbe 0x44c662
mov eax, dword [rsp + 0x80]
mov r15, qword [rsp + 0x10]
mov dword [rsp + 8], eax
movzx r13d, byte [r15]
movzx r14d, byte [r15 + 1]
add r15, 0x10
movzx r12d, byte [r15 - 0xe]
movzx ebp, byte [r15 - 0xd]
movzx edi, byte [r15 - 0xc]
movzx ebx, byte [r15 - 0xb]
movzx r11d, byte [r15 - 0xa]
movzx r10d, byte [r15 - 9]
add r13d, esi
movzx r9d, byte [r15 - 8]
movzx r8d, byte [r15 - 7]
add r14d, r13d
movzx ecx, byte [r15 - 6]
movzx eax, byte [r15 - 5]
add r12d, r14d
add r13d, r14d
sub dword [rsp + 8], 0x10
add ebp, r12d
add r13d, r12d
add edi, ebp
add r13d, ebp
add ebx, edi
add r13d, edi
add r11d, ebx
add ebx, r13d
add r10d, r11d
add r11d, ebx
add r9d, r10d
add r10d, r11d
add r8d, r9d
add r9d, r10d
add ecx, r8d
add r8d, r9d
lea edx, [rcx + rax]
movzx eax, byte [r15 - 4]
add ecx, r8d
mov esi, edx
mov dword [rsp + 0xc], esi
add ecx, dword [rsp + 0xc]
mov edx, eax
movzx eax, byte [r15 - 2]
add edx, esi
mov esi, edx
movzx edx, byte [r15 - 3]
mov dword [rsp + 0x1c], esi
add ecx, dword [rsp + 0x1c]
add edx, esi
movzx esi, byte [r15 - 1]
add eax, edx
add edx, ecx
add esi, eax
add eax, edx
add eax, esi
add dword [rsp + 0x18], eax
cmp dword [rsp + 8], 0xf
ja 0x44c4c7
mov eax, dword [rsp + 0x80]
mov edx, dword [rsp + 0x80]
sub eax, 0x10
and edx, 0xf
shr eax, 4
add rax, 1
shl rax, 4
add qword [rsp + 0x10], rax
test edx, edx
lea eax, [rdx - 1]
je 0x44c5e5
mov rbx, qword [rsp + 0x10]
mov ecx, dword [rsp + 0x18]
lea rdx, [rbx + rax + 1]
mov rax, rbx
add rax, 1
movzx r8d, byte [rax - 1]
add esi, r8d
add ecx, esi
cmp rax, rdx
jne 0x44c5ce
mov dword [rsp + 0x18], ecx
mov eax, esi
mov ecx, 0x80078071
mul ecx
mov eax, edx
shr eax, 0xf
imul eax, eax, 0xfff1
sub esi, eax
mov eax, dword [rsp + 0x18]
mul ecx
shr edx, 0xf
imul eax, edx, 0xfff1
sub dword [rsp + 0x18], eax
mov eax, dword [rsp + 0x18]
shl eax, 0x10
or eax, esi
jmp 0x44c348
movzx eax, byte [rax]
add eax, esi
lea edx, [rax - 0xfff1]
cmp eax, 0xfff1
cmovae eax, edx
mov edx, dword [rsp + 0x18]
add edx, eax
lea ecx, [rdx - 0xfff1]
cmp edx, 0xfff1
cmovae edx, ecx
shl edx, 0x10
or eax, edx
jmp 0x44c348
mov eax, 1
jmp 0x44c348
mov qword [rsp + 0x10], rax
jmp 0x44c4b7
mov eax, dword [rsp + 0x80]
sub eax, 1
jmp 0x44c5bd