Function at 0x140093ba0
Capabilities:
Compute adler32 checksum

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x40
mov rax, qword [0x14014ce70]
xor rax, rsp
mov qword [rsp + 0x30], rax
xor ebp, ebp
mov rsi, rcx
test rcx, rcx
je 0x140093ef2
mov rdi, qword [rcx + 0x28]
test rdi, rdi
je 0x140093ef2
mov r9, qword [rcx + 0x10]
test r9, r9
je 0x140093ef2
mov ecx, dword [rcx + 0x18]
test ecx, ecx
jne 0x140093bee
lea eax, [rbp - 5]
jmp 0x140093ef7
cmp dword [rdi + 0x84], 1
jne 0x140093c01
mov eax, 1
jmp 0x140093ef7
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 0x140093c46
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x28], rbp
jmp 0x140093e70
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 0x140093e5c
cmp dword [rdi + 0x84], ebp
jne 0x140093e5c
cmp qword [rsp + 0x20], rbp
je 0x140093cb5
test rbx, rbx
je 0x140093e5c
cmp qword [rsp + 0x28], rbp
je 0x140093cc5
test r9, r9
je 0x140093e5c
or dword [rdi + 0x80], 1
cmp dword [rdi + 0x74], ebp
jne 0x140093e49
cmp dword [rdi + 0x78], ebp
jne 0x140093e49
mov rcx, rdi
call fcn.140095b50
test eax, eax
jne 0x140093cf6
mov r8d, dword [rdi + 0x84]
jmp 0x140093e76
test dword [rdi + 0x10], 0x3000
je 0x140093e15
test rbx, rbx
je 0x140093e15
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 0x140093e0a
nop
mov edx, ebp
cmp r9, 7
jbe 0x140093dba
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 0x140093d60
mov eax, edx
cmp rax, r9
jae 0x140093dd5
movzx eax, byte [rbx]
inc edx
add ecx, eax
inc rbx
add r8d, ecx
mov eax, edx
cmp rax, r9
jb 0x140093dc1
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 0x140093d50
shl r8d, 0x10
lea eax, [r8 + rcx]
mov dword [rdi + 0x20], eax
cmp dword [rdi + 0x28], ebp
jne 0x140093e49
cmp qword [rdi + 0xb8], rbp
jne 0x140093e49
cmp dword [rdi + 0x74], ebp
jne 0x140093e49
mov edx, 4
mov rcx, rdi
call fcn.1400953a0
test eax, eax
jns 0x140093e42
mov r8d, dword [rdi + 0x84]
jmp 0x140093e76
mov dword [rdi + 0x78], 1
mov rcx, rdi
call fcn.140096450
mov r8d, eax
mov dword [rdi + 0x84], eax
jmp 0x140093e76
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 0x140093edf
cmp r8d, 1
je 0x140093ecc
test ecx, ecx
jne 0x140093c20
mov r14, qword [rsp + 0x70]
mov eax, ebp
mov rbx, qword [rsp + 0x68]
jmp 0x140093ef7
mov r14, qword [rsp + 0x70]
mov ebp, 1
mov rbx, qword [rsp + 0x68]
mov eax, ebp
jmp 0x140093ef7
mov r14, qword [rsp + 0x70]
mov ebp, 0xfffffffe
mov rbx, qword [rsp + 0x68]
mov eax, ebp
jmp 0x140093ef7
mov eax, 0xfffffffe
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret