Function at 0x14007c190
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
movapd xmmword [rsp + 0xa0], xmm9
movapd xmmword [rsp + 0x90], xmm8
movaps xmmword [rsp + 0x80], xmm7
movapd xmmword [rsp + 0x70], xmm6
mov rsi, rcx
mov rax, qword [0x14013a028]
xor rax, rsp
mov qword [rsp + 0x68], rax
mov rcx, qword [rcx + 8]
mov rdx, qword [rsi + 0x10]
movaps xmm7, xmmword [0x140119af0]
movaps xmmword [rsp + 0x50], xmm7
lea r8, [rsp + 0x50]
call fcn.140061770
mov rdi, qword [rsp + 0x50]
mov rbx, qword [0x14014bcd0]
cmp rbx, 1
jbe 0x14007ca89
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14007ca37
mov r14, qword [0x14014bce0]
movabs rbp, 0x5555555555555555
movabs r13, 0x3333333333333333
movabs r15, 0xf0f0f0f0f0f0f0f
movabs r12, 0x101010101010101
test r14, r14
je 0x14007c440
mov rax, qword [0x14014bcd0]
cmp rax, 1
jbe 0x14007cabb
mov r8, qword [r14 + 8]
test r8, r8
je 0x14007c440
bswap rdi
mov rax, r8
shr rax, 1
and rax, rbp
mov rcx, r8
sub rcx, rax
mov rax, rcx
and rax, r13
shr rcx, 2
and rcx, r13
add rcx, rax
mov r9, rcx
shr r9, 4
add r9, rcx
and r9, r15
imul r9, r12
shr r9, 0x38
cmp r9, 1
jbe 0x14007ca45
mov rcx, rdi
cmp rdi, r8
jb 0x14007c2c6
mov rax, rdi
xor edx, edx
div r8
mov rcx, rdx
mov rax, qword [r14]
mov rax, qword [rax + rcx*8]
test rax, rax
je 0x14007c440
mov r10, qword [rax]
test r10, r10
je 0x14007c440
mov rax, qword [r10 + 8]
cmp rdi, rax
jne 0x14007c41c
cmp qword [r10 + 0x10], rdi
jne 0x14007c438
mov rdi, qword [r10 + 0x18]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test rdi, rdi
je 0x14007c449
mov ebx, dword [rsi + 0x18]
mov rax, qword [rdi]
mov rax, qword [rax + 0x18]
xor ecx, ecx
lea rdx, [fcn.1400a49e0]
cmp rax, rdx
jne 0x14007c3ed
cmp ebx, ecx
jne 0x14007cc4a
mov r9, qword [rsi + 0x28]
test r9, r9
je 0x14007c3aa
mov edx, dword [rsi + 0x1c]
mov r8d, dword [rsi + 0x20]
mov rax, qword [rdi]
mov rax, qword [rax + 0x20]
lea rcx, [0x140050890]
cmp rax, rcx
jne 0x14007cc39
mov rax, qword [rdi + 0x18]
mov rcx, qword [rax + 0x18]
mov rax, qword [rcx]
mov rcx, qword [rcx + 8]
sub rcx, rax
mov r10, rcx
sar r10, 2
lea r11, [r10 - 1]
cmp r11, r9
jne 0x14007cc4a
cmp r11, 2
jb 0x14007ccc4
cmp r10, 1
jbe 0x14007ccbe
cmp dword [rax + 4], edx
jne 0x14007cc4a
mov eax, dword [rax + rcx - 8]
cmp eax, r8d
jne 0x14007cc4a
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.1400a77a0
mov rax, rdi
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x80]
movaps xmm8, xmmword [rsp + 0x90]
movaps xmm9, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 1
lea rdx, [0x14007ce30]
cmp rax, rdx
je 0x14007c32b
mov ecx, 2
lea rdx, [0x1400508e0]
cmp rax, rdx
je 0x14007c32b
jmp 0x14007ca79
cmp r9d, 1
jbe 0x14007ca51
cmp rax, r8
jb 0x14007c433
xor edx, edx
div r8
mov rax, rdx
cmp rax, rcx
jne 0x14007c440
mov r10, qword [r10]
jmp 0x14007c2d9
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rcx, qword [rsi + 8]
mov rdx, qword [rsi + 0x10]
lea rdi, [rsp + 0x50]
movaps xmmword [rdi], xmm7
mov r8, rdi
call fcn.140061770
mov edi, dword [rdi]
mov rbx, qword [0x14014bcd0]
cmp rbx, 1
jbe 0x14007cba3
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14007ca6b
mov rax, qword [0x14014bce0]
test rax, rax
je 0x14007c4a1
mov rcx, qword [rax + 0xa0]
test rcx, rcx
jne 0x14007ccf0
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsi]
mov rax, qword [rax]
lea rcx, [0x1400f4020]
cmp rax, rcx
jne 0x14007c8a2
mov ecx, 0x20
call fcn.1400a5638
mov rdi, rax
mov rdx, qword [rsi + 0x28]
inc rdx
mov rcx, rax
call fcn.14007cd90
cvtsi2sd xmm0, dword [rsi + 0x20]
call fcn.1400d6320
mov rax, qword [rdi]
mov rcx, qword [rdi + 8]
sub rcx, rax
cmp rcx, 4
jbe 0x14007cce1
mov r15d, dword [rsi + 0x1c]
mov dword [rax + 4], r15d
mov rcx, qword [rdi]
mov rax, qword [rdi + 8]
mov r14, rax
sub r14, rcx
sar r14, 2
lea rdx, [r14 - 1]
cmp rdx, 3
jb 0x14007c5f0
movapd xmm6, xmm0
add r14, 0xfffffffffffffffd
mov r12d, 2
lea rbx, [rsp + 0x50]
movq xmm8, qword [0x14011dd90]
movapd xmm9, xmmword [0x14011dda0]
nop word cs:[rax + rax]
xorps xmm0, xmm0
cvtsi2sd xmm0, r15d
call fcn.1400d6320
movsd qword [rsp + 0x50], xmm0
mov rcx, rbx
call fcn.14005de30
mov rbp, qword [rdi]
mov rax, qword [rdi + 8]
sub rax, rbp
sar rax, 2
cmp rax, r12
jbe 0x14007ccbb
movsd xmm1, qword [rsp + 0x50]
movapd xmm0, xmm6
subsd xmm0, xmm1
movq xmm2, r14
punpckldq xmm2, xmm8
subpd xmm2, xmm9
movapd xmm3, xmm2
unpckhpd xmm3, xmm2
addsd xmm3, xmm2
divsd xmm0, xmm3
addsd xmm0, xmm1
call fcn.1400d6850
call fcn.1400d62b8
cvttsd2si eax, xmm0
cmp r15d, eax
lea ecx, [r15 + 1]
cmovl ecx, eax
mov dword [rbp + r12*4], ecx
inc r12
mov r15d, ecx
dec r14
jne 0x14007c550
mov rcx, qword [rdi]
mov rax, qword [rdi + 8]
movabs r12, 0x101010101010101
cmp rax, rcx
movabs rbp, 0x5555555555555555
je 0x14007cce4
mov dword [rax - 4], 0x7fffffff
mov r8, qword [rdi]
mov rax, qword [rdi + 8]
mov rdx, rax
sub rdx, r8
movabs r15, 0xf0f0f0f0f0f0f0f
je 0x14007ccda
js 0x14007cce7
mov rcx, rdx
shr rcx, 2
test dl, 1
jne 0x14007cb41
mov rdx, r8
lea r9, [rax - 1]
cmp r9, r8
je 0x14007c67e
lea r8, [0x1401291c0]
movzx r9d, byte [rdx]
movzx r10d, cl
xor r10d, r9d
shr ecx, 8
xor ecx, dword [r8 + r10*4]
movzx r9d, byte [rdx + 1]
movzx r10d, cl
xor r10d, r9d
shr ecx, 8
xor ecx, dword [r8 + r10*4]
add rdx, 2
cmp rdx, rax
jne 0x14007c650
mov dword [rdi + 0x18], ecx
mov rcx, rdi
call fcn.14008c170
cmp qword [rsi + 0x28], 0
je 0x14007caed
and byte [rsi + 0x30], 0xbf
mov rcx, qword [rsi]
mov r9, qword [rcx + 8]
lea rdi, [rsp + 0x50]
mov rcx, rsi
mov rdx, rdi
mov r8, rax
mov rax, r9
call qword [0x14012eaa8]
mov rdi, qword [rdi]
mov eax, dword [rsi + 0x30]
lock or dword [rdi + 0x10], eax
mov rax, qword [rsi]
mov rax, qword [rax + 0x10]
lea rcx, [fcn.1400da340]
cmp rax, rcx
jne 0x14007c7a7
test rdi, rdi
je 0x14007ccd7
mov rax, qword [rdi]
mov rax, qword [rax + 0x10]
mov rcx, rdi
call qword [0x14012eaa8]
mov qword [rsp + 0x38], rax
mov rbx, qword [0x14014bcd0]
cmp rbx, 1
jbe 0x14007cbd5
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x14007c71c
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov rax, qword [0x14014bcd0]
cmp rax, 1
jbe 0x14007cc07
mov rcx, qword [0x14014bce0]
test rcx, rcx
je 0x14007cb85
lea r8, [rsp + 0x38]
lea rax, [rsp + 0x40]
mov qword [rax], r8
lea rdx, [rsp + 0x4f]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x20], rax
lea r9, [0x14011d920]
lea r14, [rsp + 0x50]
mov rdx, r14
call fcn.14007ce40
mov rax, qword [r14]
mov r14, qword [rax + 0x18]
test r14, r14
je 0x14007c7c7
cmp r14, rdi
je 0x14007c83e
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rdi]
mov rax, qword [rax]
mov rcx, rdi
mov edx, 1
call qword [0x14012eaa8]
mov rdi, r14
jmp 0x14007c30f
lea rcx, [fcn.1400069e0]
cmp rax, rcx
jne 0x14007cd2f
mov rcx, rsi
mov rdx, rdi
call fcn.1400069e0
jmp 0x14007c6d7
mov qword [rax + 0x18], rdi
mov r11, qword [0x14014bce0]
mov r9, qword [r11 + 0x30]
test r9, r9
je 0x14007c83e
mov rcx, qword [rsp + 0x38]
mov rax, r9
shr rax, 1
and rax, rbp
mov rdx, r9
sub rdx, rax
mov rax, rdx
and rax, r13
shr rdx, 2
and rdx, r13
add rdx, rax
mov r10, rdx
shr r10, 4
add r10, rdx
and r10, r15
imul r10, r12
shr r10, 0x38
cmp r10, 1
jbe 0x14007cd23
mov r8, rcx
cmp rcx, r9
jb 0x14007c831
mov rax, rcx
xor edx, edx
div r9
mov r8, rdx
mov rax, qword [r11 + 0x28]
mov rax, qword [rax + r8*8]
test rax, rax
jne 0x14007c84c
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x14007c30f
mov r11, qword [rax]
test r11, r11
je 0x14007c83e
mov rax, qword [r11 + 8]
cmp rcx, rax
je 0x14007ca23
cmp r10d, 1
jbe 0x14007cd17
cmp rax, r9
jb 0x14007c878
xor edx, edx
div r9
mov rax, rdx
cmp rax, r8
jne 0x14007c83e
mov r11, qword [r11]
jmp 0x14007c84f
lea rcx, [fcn.14007d370]
cmp rax, rcx
jne 0x14007ca5d
mov rcx, rsi
call fcn.14007d370
mov rdi, rax
jmp 0x14007c681
lea rcx, [0x1400d9c20]
cmp rax, rcx
jne 0x14007c882
mov ecx, 0x20
call fcn.1400a5638
mov rdi, rax
mov rdx, qword [rsi + 0x28]
inc rdx
mov rcx, rax
call fcn.14007cd90
mov r8, qword [rdi]
mov rdx, qword [rdi + 8]
mov rax, rdx
sub rax, r8
sar rax, 2
lea rcx, [rax - 1]
cmp rcx, 2
jb 0x14007c9a0
cvtsi2sd xmm0, dword [rsi + 0x1c]
cvtsi2sd xmm1, dword [rsi + 0x20]
add rax, 0xfffffffffffffffd
movq xmm2, rax
punpckldq xmm2, xmmword [0x14011dd90]
subpd xmm2, xmmword [0x14011dda0]
haddpd xmm2, xmm2
mov edx, 1
movq xmm3, qword [0x14011dd90]
movapd xmm4, xmmword [0x14011dda0]
movsd xmm5, qword [0x140127c20]
mov r8, qword [rdi]
mov r9, qword [rdi + 8]
sub r9, r8
sar r9, 2
cmp r9, rdx
jbe 0x14007ccc1
movq xmm6, rax
punpckldq xmm6, xmm3
subpd xmm6, xmm4
haddpd xmm6, xmm6
lea r9, [rdx - 1]
movq xmm8, r9
punpckldq xmm8, xmm3
subpd xmm8, xmm4
haddpd xmm8, xmm8
mulsd xmm6, xmm0
mulsd xmm8, xmm1
addsd xmm8, xmm6
divsd xmm8, xmm2
addsd xmm8, xmm5
cvttsd2si r9d, xmm8
mov dword [r8 + rdx*4], r9d
dec rax
inc rdx
cmp rdx, rcx
jne 0x14007c92d
mov r8, qword [rdi]
mov rdx, qword [rdi + 8]
cmp rdx, r8
je 0x14007ccea
mov dword [rdx - 4], 0x7fffffff
mov r8, qword [rdi]
mov rax, qword [rdi + 8]
mov rdx, rax
sub rdx, r8
je 0x14007ccda
js 0x14007cced
mov rcx, rdx
shr rcx, 2
test dl, 1
jne 0x14007cb63
mov rdx, r8
lea r9, [rax - 1]
cmp r9, r8
je 0x14007c67e
lea r8, [0x1401291c0]
movzx r9d, byte [rdx]
movzx r10d, cl
xor r10d, r9d
shr ecx, 8
xor ecx, dword [r8 + r10*4]
movzx r9d, byte [rdx + 1]
movzx r10d, cl
xor r10d, r9d
shr ecx, 8
xor ecx, dword [r8 + r10*4]
add rdx, 2
cmp rdx, rax
jne 0x14007c9f0
jmp 0x14007c67e
cmp qword [r11 + 0x10], rcx
jne 0x14007c87d
lock or dword [rdi + 0x10], 0x20
jmp 0x14007c83e
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x14007c21c
lea rcx, [r8 - 1]
and rcx, rdi
jmp 0x14007c2c6
lea rdx, [r8 - 1]
and rax, rdx
jmp 0x14007c433
mov rcx, rsi
call qword [0x14012eaa8]
jmp 0x14007c89a
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x14007c485
mov rcx, rdi
call qword [0x14012eaa8]
mov ecx, eax
jmp 0x14007c32b
lea rcx, [0x14014bcd0]
call fcn.140008f30
test al, al
je 0x14007cd46
mov qword [0x14014bcd8], 0
lea rbx, [0x14014bcd8]
mov qword [0x14014bcd0], rbx
jmp 0x14007c20b
lea rcx, [0x14014bcd0]
call fcn.140008f30
test al, al
je 0x14007cd52
mov qword [0x14014bcd8], 0
lea rax, [0x14014bcd8]
mov qword [0x14014bcd0], rax
jmp 0x14007c265
mov rcx, qword [rax + 8]
sub rcx, qword [rax]
sar rcx, 2
lea rdx, [rcx - 1]
mov qword [rsi + 0x28], rdx
mov rdx, qword [rax]
mov r8, qword [rax + 8]
sub r8, rdx
cmp r8, 4
jbe 0x14007cd40
mov edx, dword [rdx + 4]
mov dword [rsi + 0x1c], edx
lea r8, [rcx - 2]
mov rdx, qword [rax]
mov r9, qword [rax + 8]
sub r9, rdx
sar r9, 2
cmp r9, r8
jbe 0x14007cd43
mov ecx, dword [rdx + rcx*4 - 8]
mov dword [rsi + 0x20], ecx
jmp 0x14007c694
movzx edx, byte [r8]
movzx r9d, cl
xor r9d, edx
lea rdx, [0x1401291c0]
shr ecx, 8
xor ecx, dword [rdx + r9*4]
lea rdx, [r8 + 1]
jmp 0x14007c640
movzx edx, byte [r8]
movzx r9d, cl
xor r9d, edx
lea rdx, [0x1401291c0]
shr ecx, 8
xor ecx, dword [rdx + r9*4]
lea rdx, [r8 + 1]
jmp 0x14007c9dc
mov ecx, 0xb0
call fcn.1400a5638
mov rcx, rax
call fcn.14000d1c0
mov rcx, qword [0x14014bce0]
jmp 0x14007c73d
lea rcx, [0x14014bcd0]
call fcn.140008f30
test al, al
je 0x14007cd5e
mov qword [0x14014bcd8], 0
lea rbx, [0x14014bcd8]
mov qword [0x14014bcd0], rbx
jmp 0x14007c474
lea rcx, [0x14014bcd0]
call fcn.140008f30
test al, al
je 0x14007cd6a
mov qword [0x14014bcd8], 0
lea rbx, [0x14014bcd8]
mov qword [0x14014bcd0], rbx
jmp 0x14007c706
lea rcx, [0x14014bcd0]
call fcn.140008f30
test al, al
je 0x14007cd76
mov qword [0x14014bcd8], 0
lea rax, [0x14014bcd8]
mov qword [0x14014bcd0], rax
jmp 0x14007c72d
mov rcx, rdi
call qword [0x14012eaa8]
test al, al
jne 0x14007c3aa
mov rcx, qword [rsi + 8]
mov rdx, qword [rsi + 0x10]
lea rsi, [rsp + 0x50]
movaps xmmword [rsi], xmm7
mov r8, rsi
call fcn.140061770
mov rsi, qword [rsi]
bswap rsi
lea rdx, [0x140127c28]
lea rbx, [rsp + 0x50]
mov rcx, rbx
call fcn.1400d9180
mov rcx, rbx
mov edx, 1
call fcn.14007fb10
mov rdi, rax
cmp byte [rbx + 0x17], 0
jns 0x14007cc9c
mov rcx, qword [rsp + 0x50]
call fcn.1400a5630
mov rax, qword [rdi]
mov rax, qword [rax + 0x28]
mov rcx, rdi
mov edx, esi
call qword [0x14012eaa8]
call fcn.1400d8dd0
mov rdi, rax
jmp 0x14007c3aa
int3
int3
int3
mov eax, 0xffffffff
cmp edx, 0xffffffff
je 0x14007c3a1
jmp 0x14007cc4a
int3
xor ecx, ecx
jmp 0x14007c67e
int3
int3
int3
int3
int3
bswap edi
mov rax, qword [rcx]
mov rax, qword [rax + 8]
mov edx, edi
call qword [0x14012eaa8]
mov edi, eax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test dil, dil
jne 0x14007c4aa
jmp 0x14007ccae
lea rdx, [r9 - 1]
and rax, rdx
jmp 0x14007c878
lea r8, [r9 - 1]
and r8, rcx
jmp 0x14007c831
mov rcx, rsi
mov rdx, rdi
call qword [0x14012eaa8]
jmp 0x14007c6d7
int3
int3
mov rbx, qword [0x14014bcd0]
jmp 0x14007c20b
mov rax, qword [0x14014bcd0]
jmp 0x14007c265
mov rbx, qword [0x14014bcd0]
jmp 0x14007c474
mov rbx, qword [0x14014bcd0]
jmp 0x14007c706
mov rax, qword [0x14014bcd0]
jmp 0x14007c72d