Function at 0x140087260
Capabilities:
Compute adler32 checksum

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x40
mov rax, qword [0x140158e70]
xor rax, rsp
mov qword [rsp + 0x30], rax
xor ebp, ebp
mov rsi, rcx
test rcx, rcx
je 0x1400875b2
mov rdi, qword [rcx + 0x28]
test rdi, rdi
je 0x1400875b2
mov r9, qword [rcx + 0x10]
test r9, r9
je 0x1400875b2
mov ecx, dword [rcx + 0x18]
test ecx, ecx
jne 0x1400872ae
lea eax, [rbp - 5]
jmp 0x1400875b7
cmp dword [rdi + 0x84], 1
jne 0x1400872c1
mov eax, 1
jmp 0x1400875b7
mov qword [rsp + 0x68], rbx
mov qword [rsp + 0x70], r14
movabs r14, 0x79baa6bb6398b6f7
nop word [rax + rax]
mov eax, dword [rsi + 8]
mov rbx, qword [rsi]
mov qword [rsp + 0x20], rax
mov eax, ecx
mov qword [rsp + 0x28], rax
test rdi, rdi
jne 0x140087306
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x28], rbp
jmp 0x140087530
lea rax, [rsp + 0x20]
mov qword [rdi + 0x88], rbx
mov qword [rdi + 0x98], rax
lea rax, [rsp + 0x28]
mov qword [rdi + 0xa0], rax
mov qword [rdi + 0x90], r9
mov qword [rdi + 0xb0], rbx
mov rax, qword [rsp + 0x20]
mov qword [rdi + 0xb8], rax
mov qword [rdi + 0xc0], rbp
mov dword [rdi + 0xa8], 4
cmp qword [rdi], rbp
jne 0x14008751c
cmp dword [rdi + 0x84], ebp
jne 0x14008751c
cmp qword [rsp + 0x20], rbp
je 0x140087375
test rbx, rbx
je 0x14008751c
cmp qword [rsp + 0x28], rbp
je 0x140087385
test r9, r9
je 0x14008751c
or dword [rdi + 0x80], 1
cmp dword [rdi + 0x74], ebp
jne 0x140087509
cmp dword [rdi + 0x78], ebp
jne 0x140087509
mov rcx, rdi
call fcn.140089210
test eax, eax
jne 0x1400873b6
mov r8d, dword [rdi + 0x84]
jmp 0x140087536
test dword [rdi + 0x10], 0x3000
je 0x1400874d5
test rbx, rbx
je 0x1400874d5
mov r11, qword [rdi + 0xb0]
mov rax, r14
mov r8d, dword [rdi + 0x20]
sub r11, rbx
mul r11
mov rax, r11
movzx ecx, r8w
sub rax, rdx
shr r8d, 0x10
shr rax, 1
mov r9, r11
add rax, rdx
shr rax, 0xc
imul rax, rax, 0x15b0
sub r9, rax
test r11, r11
je 0x1400874ca
nop
mov edx, ebp
cmp r9, 7
jbe 0x14008747a
mov r10d, 7
nop
movzx eax, byte [rbx]
add r10d, 8
add ecx, eax
add edx, 8
movzx eax, byte [rbx + 1]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 2]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 3]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 4]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 5]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 6]
add r8d, ecx
add ecx, eax
movzx eax, byte [rbx + 7]
add r8d, ecx
add ecx, eax
add rbx, 8
add r8d, ecx
mov eax, r10d
cmp rax, r9
jb 0x140087420
mov eax, edx
cmp rax, r9
jae 0x140087495
movzx eax, byte [rbx]
inc edx
add ecx, eax
inc rbx
add r8d, ecx
mov eax, edx
cmp rax, r9
jb 0x140087481
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul r8d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r8d, eax
sub r11, r9
mov r9d, 0x15b0
jne 0x140087410
shl r8d, 0x10
lea eax, [r8 + rcx]
mov dword [rdi + 0x20], eax
cmp dword [rdi + 0x28], ebp
jne 0x140087509
cmp qword [rdi + 0xb8], rbp
jne 0x140087509
cmp dword [rdi + 0x74], ebp
jne 0x140087509
mov edx, 4
mov rcx, rdi
call fcn.140088a60
test eax, eax
jns 0x140087502
mov r8d, dword [rdi + 0x84]
jmp 0x140087536
mov dword [rdi + 0x78], 1
mov rcx, rdi
call fcn.140089b10
mov r8d, eax
mov dword [rdi + 0x84], eax
jmp 0x140087536
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x28], rbp
mov dword [rdi + 0x84], 0xfffffffe
mov r8d, 0xfffffffe
mov rcx, qword [rsp + 0x20]
sub dword [rsi + 8], ecx
add dword [rsi + 0xc], ecx
mov rdx, qword [rsp + 0x28]
mov rdi, qword [rsi + 0x28]
mov eax, ecx
add qword [rsi], rax
mov ecx, dword [rsi + 0x18]
mov eax, dword [rdi + 0x20]
sub ecx, edx
add dword [rsi + 0x1c], edx
mov r9d, edx
add r9, qword [rsi + 0x10]
mov dword [rsi + 0x4c], eax
mov qword [rsi + 0x10], r9
mov dword [rsi + 0x18], ecx
test r8d, r8d
js 0x14008759f
cmp r8d, 1
je 0x14008758c
test ecx, ecx
jne 0x1400872e0
mov r14, qword [rsp + 0x70]
mov eax, ebp
mov rbx, qword [rsp + 0x68]
jmp 0x1400875b7
mov r14, qword [rsp + 0x70]
mov ebp, 1
mov rbx, qword [rsp + 0x68]
mov eax, ebp
jmp 0x1400875b7
mov r14, qword [rsp + 0x70]
mov ebp, 0xfffffffe
mov rbx, qword [rsp + 0x68]
mov eax, ebp
jmp 0x1400875b7
mov eax, 0xfffffffe
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.1400f16c0
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret