Function at 0x18003c8a0
Capabilities:
Hash data with crc32

Disassembly:
push rbx
push rdi
push r14
push r15
sub rsp, 0x38
mov r15d, r9d
mov rbx, r8
mov r14, rdx
mov rdi, rcx
call fcn.18003cf30
cmp eax, 0xffffffff
je 0x18003c8d3
mov rax, 0xffffffffffffffff
add rsp, 0x38
pop r15
pop r14
pop rdi
pop rbx
ret
mov ecx, dword [rdi + 0x24]
mov r8d, dword [rdi + 0x20]
mov qword [rsp + 0x30], rbp
mov ebp, 8
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], r12
mov r12d, dword [rdi]
cmp r8d, ecx
jne 0x18003c91d
inc r8d
test ecx, ecx
je 0x18003c908
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x18003c90a
mov eax, ebp
cmp eax, r8d
lea rcx, [rdi + 0x20]
cmovg r8d, eax
mov edx, r8d
call fcn.18001d3f0
movsxd rcx, dword [rdi + 0x20]
mov rax, qword [rdi + 0x28]
mov dword [rax + rcx*4], r12d
inc dword [rdi + 0x20]
mov ecx, dword [rdi + 0x14]
mov r8d, dword [rdi + 0x10]
cmp r8d, ecx
jne 0x18003c95f
inc r8d
test ecx, ecx
je 0x18003c94a
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x18003c94c
mov eax, ebp
cmp eax, r8d
lea rcx, [rdi + 0x10]
cmovg r8d, eax
mov edx, r8d
call fcn.18001d3f0
movsxd rcx, dword [rdi + 0x10]
mov rax, qword [rdi + 0x18]
mov dword [rax + rcx*4], r15d
inc dword [rdi + 0x10]
mov esi, dword [rdi]
add esi, r15d
cmp esi, dword [rdi + 4]
jle 0x18003c9da
mov rax, qword [0x1801935b8]
test rax, rax
je 0x18003c98a
inc dword [rax + 0xf4]
movsxd rcx, esi
shl rcx, 2
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rdx, qword [rdi + 8]
mov r12, rax
test rdx, rdx
je 0x18003c9d3
movsxd r8, dword [rdi]
mov rcx, rax
shl r8, 2
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x18003c9cd
mov rax, qword [0x1801935b8]
test rax, rax
je 0x18003c9cd
dec dword [rax + 0xf4]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [rdi + 8], r12
mov dword [rdi + 4], esi
mov r12, qword [rsp + 0x20]
test r15d, r15d
jle 0x18003ca05
mov rsi, r15
nop word [rax + rax]
mov rdx, rbx
mov rcx, rdi
call fcn.18001cba0
add rbx, 4
sub rsi, 1
jne 0x18003c9f0
mov eax, dword [rdi + 0x60]
xor ecx, ecx
mov r8d, dword [rdi + 0x70]
test eax, eax
lea esi, [rax - 1]
cmove esi, ecx
mov ecx, dword [rdi + 0x74]
cmp r8d, ecx
jne 0x18003ca45
inc r8d
test ecx, ecx
je 0x18003ca30
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x18003ca32
mov eax, ebp
cmp eax, r8d
lea rcx, [rdi + 0x70]
cmovg r8d, eax
mov edx, r8d
call fcn.18001d3f0
movsxd rcx, dword [rdi + 0x70]
mov rax, qword [rdi + 0x78]
mov dword [rax + rcx*4], esi
mov rax, 0xffffffffffffffff
inc dword [rdi + 0x70]
nop word [rax + rax]
inc rax
cmp byte [r14 + rax], 0
jne 0x18003ca60
lea r8, [r14 + 1]
mov rdx, r14
add r8, rax
lea rcx, [rdi + 0x60]
call fcn.1800059c0
mov ecx, dword [rdi + 0x84]
mov ebx, dword [rdi + 0x80]
cmp ebx, ecx
jne 0x18003cb14
inc ebx
test ecx, ecx
je 0x18003caa1
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
lea ebp, [rcx + rax]
cmp ebp, ebx
cmovg ebx, ebp
cmp ebx, ecx
jle 0x18003cb14
mov rax, qword [0x1801935b8]
test rax, rax
je 0x18003cabc
inc dword [rax + 0xf4]
movsxd rcx, ebx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rdx, qword [rdi + 0x88]
mov rsi, rax
test rdx, rdx
je 0x18003cb07
movsxd r8, dword [rdi + 0x80]
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [rdi + 0x88]
test rcx, rcx
je 0x18003cb01
mov rax, qword [0x1801935b8]
test rax, rax
je 0x18003cb01
dec dword [rax + 0xf4]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [rdi + 0x88], rsi
mov dword [rdi + 0x84], ebx
movsxd rdx, dword [rdi + 0x80]
lea r8, [r14 + 1]
mov rcx, qword [rdi + 0x88]
mov r10d, 0xffffffff
movzx eax, byte [rsp + 0x80]
mov rsi, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x30]
mov byte [rdx + rcx], al
mov edx, r10d
inc dword [rdi + 0x80]
movzx r9d, byte [r14]
test r9b, r9b
je 0x18003cb90
lea r11, [0x1800c4f80]
nop word [rax + rax]
cmp r9b, 0x23
jne 0x18003cb73
cmp byte [r8], r9b
jne 0x18003cb73
cmp byte [r8 + 1], r9b
cmove edx, r10d
movzx ecx, dl
movzx eax, r9b
movzx r9d, byte [r8]
xor rcx, rax
shr edx, 8
inc r8
xor edx, dword [r11 + rcx*4]
test r9b, r9b
jne 0x18003cb60
mov ebx, dword [rdi + 0xa0]
lea rcx, [rdi + 0x90]
not edx
lea r8d, [rbx + 1]
mov dword [rdi + 0xa0], r8d
mov r8d, ebx
call fcn.180005920
mov edx, ebx
mov rcx, rdi
call fcn.18003cbd0
mov eax, ebx
add rsp, 0x38
pop r15
pop r14
pop rdi
pop rbx
ret