Function at 0x140003440
Capabilities:
Compute adler32 checksum

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x20
mov rbx, rdx
mov rdi, rcx
test rcx, rcx
jne 0x14000346a
test r8, r8
je 0x14000345d
xor esi, esi
mov qword [r8], rsi
mov eax, 0xfffffffe
add rsp, 0x20
pop rdi
pop rsi
pop rbx
ret
xor esi, esi
mov qword [rsp + 0x40], rbp
mov qword [rcx + 0x88], rbx
mov qword [rcx + 0x98], r8
mov qword [rcx + 0x90], rsi
mov qword [rcx + 0xa0], rsi
mov qword [rcx + 0xb0], rbx
test r8, r8
je 0x14000349e
mov rax, qword [r8]
jmp 0x1400034a1
mov rax, rsi
mov ebp, dword [rsp + 0x68]
mov dword [rcx + 0xa8], ebp
mov qword [rcx + 0xb8], rax
mov qword [rcx + 0xc0], rsi
cmp qword [rcx], rsi
je 0x1400037ce
cmp dword [rcx + 0x84], esi
jne 0x1400037ce
mov ecx, dword [rcx + 0x80]
test ecx, ecx
je 0x1400034e1
cmp ebp, 4
jne 0x1400037ce
test r8, r8
je 0x1400034f4
cmp qword [r8], rsi
je 0x1400034f4
test rbx, rbx
je 0x1400037d3
mov qword [rsp + 0x48], r14
cmp ebp, 4
mov qword [rsp + 0x50], r15
lea r14, [rdi + 0x74]
mov r15d, esi
sete r15b
mov eax, r15d
or eax, ecx
mov dword [rdi + 0x80], eax
cmp dword [r14], esi
jne 0x140003740
cmp dword [rdi + 0x78], esi
jne 0x140003740
mov rcx, rdi
call fcn.140002b60
test eax, eax
je 0x14000368a
test dword [rdi + 0x10], 0x3000
je 0x140003665
test rbx, rbx
je 0x140003665
mov r11, qword [rdi + 0xb0]
movabs rax, 0x79baa6bb6398b6f7
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 0x14000365a
mov edx, esi
cmp r9, 7
jbe 0x14000360a
mov r10d, 7
nop word [rax + rax]
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 0x1400035b0
mov eax, edx
cmp rax, r9
jae 0x140003625
movzx eax, byte [rbx]
inc edx
add ecx, eax
inc rbx
add r8d, ecx
mov eax, edx
cmp rax, r9
jb 0x140003611
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 0x140003598
shl r8d, 0x10
lea eax, [r8 + rcx]
mov dword [rdi + 0x20], eax
test ebp, ebp
je 0x1400036db
cmp dword [rdi + 0x28], esi
jne 0x1400036db
cmp qword [rdi + 0xb8], rsi
jne 0x1400036db
cmp dword [r14], esi
jne 0x1400036db
mov edx, ebp
mov rcx, rdi
call fcn.140002380
test eax, eax
jns 0x1400036a7
mov eax, dword [rdi + 0x84]
mov r14, qword [rsp + 0x48]
mov r15, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
pop rsi
pop rbx
ret
mov dword [rdi + 0x78], r15d
cmp ebp, 3
jne 0x1400036db
lea rcx, [rdi + 0x292aa]
xor edx, edx
mov r8d, 0x10000
call sub.VCRUNTIME140.dll_memset
lea rcx, [rdi + 0x192aa]
xor edx, edx
mov r8d, 0x10000
call sub.VCRUNTIME140.dll_memset
mov dword [rdi + 0x2c], esi
mov rcx, qword [rdi + 0x98]
test rcx, rcx
je 0x1400036f8
mov rax, qword [rdi + 0xb0]
sub rax, qword [rdi + 0x88]
mov qword [rcx], rax
mov rbx, qword [rdi + 0xa0]
test rbx, rbx
je 0x1400037b2
mov rcx, qword [rdi + 0xc0]
mov rbx, qword [rbx]
mov eax, dword [r14]
sub rbx, rcx
mov edx, dword [rdi + 0x70]
cmp rbx, rax
cmovae rbx, rax
add rcx, qword [rdi + 0x90]
add rdx, 0x392aa
mov r8, rbx
add rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
sub dword [r14], ebx
jmp 0x140003794
mov rbp, r14
test r8, r8
je 0x14000374f
mov qword [r8], rsi
lea rbp, [rdi + 0x74]
mov rbx, qword [rdi + 0xa0]
test rbx, rbx
je 0x1400037b2
mov rcx, qword [rdi + 0xc0]
mov rbx, qword [rbx]
mov eax, dword [r14]
sub rbx, rcx
mov edx, dword [rdi + 0x70]
cmp rbx, rax
cmovae rbx, rax
add rcx, qword [rdi + 0x90]
add rdx, 0x392aa
mov r8, rbx
add rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
sub dword [r14], ebx
mov r14, rbp
mov rcx, qword [rdi + 0xc0]
add dword [rdi + 0x70], ebx
mov rax, qword [rdi + 0xa0]
add rcx, rbx
mov qword [rdi + 0xc0], rcx
mov qword [rax], rcx
cmp dword [rdi + 0x78], esi
je 0x1400037c1
cmp dword [r14], esi
jne 0x1400037c1
mov esi, 1
mov dword [rdi + 0x84], esi
mov eax, esi
jmp 0x140003690
test r8, r8
je 0x1400037d6
mov qword [r8], rsi
mov rbp, qword [rsp + 0x40]
mov eax, 0xfffffffe
mov dword [rdi + 0x84], 0xfffffffe
add rsp, 0x20
pop rdi
pop rsi
pop rbx
ret