Function at 0x14007173c
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xa8
mov qword [rsp + 0x40], r8
mov r12, qword [rcx + 0x18]
mov rax, r12
inc rax
je 0x140071e34
mov rbx, rdx
mov rdi, rcx
mov r13, qword [rcx + 8]
lea r8, [r13 + 1]
mov rsi, r8
shr rsi, 3
mov eax, esi
not eax
and eax, 7
mov rcx, rsi
and rcx, 0xfffffffffffffff8
imul rcx, rax
mov eax, esi
and eax, 7
or rsi, 7
imul rsi, rax
add rsi, rcx
cmp r13, 8
cmovb rsi, r13
mov rax, rsi
shr rax, 1
cmp r12, rax
jae 0x14007183f
mov rcx, r8
shr rcx, 4
mov rdx, r8
not rdx
or rdx, 0xf
add rdx, r8
xor eax, eax
cmp rdx, 0xffffffffffffffff
setne al
mov edx, eax
and edx, ecx
or rax, rcx
mov r14, qword [rdi]
add rax, rdx
je 0x140071820
xor ecx, ecx
movdqa xmm0, xmmword [0x140075660]
movdqa xmm1, xmmword [0x140075650]
mov rdx, r14
add rcx, 0x10
pxor xmm2, xmm2
pcmpgtb xmm2, xmmword [rdx]
movdqa xmm3, xmm2
pxor xmm3, xmm1
paddq xmm3, xmm2
pand xmm2, xmm0
psubq xmm3, xmm2
movdqa xmmword [rdx], xmm3
add rdx, 0x10
dec rax
jne 0x1400717f3
cmp r8, 0x10
jae 0x14007188f
lea rcx, [r14 + 0x10]
mov rdx, r14
call fcn.140070050
cmp r13, 0xffffffffffffffff
jne 0x14007189a
xor ecx, ecx
jmp 0x140071ac2
movabs rax, 0x53ce79c1cd14dc9f
mov rcx, r12
sub rcx, rax
add rax, rcx
inc rax
movabs rcx, 0xca89458ddaa0630
sub rsi, rcx
add rcx, rsi
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
jae 0x140071ae8
xor eax, eax
cmp rcx, 4
setae al
lea r8, [rax*4 + 4]
jmp 0x140071b3f
movdqu xmm0, xmmword [r14]
movdqu xmmword [r14 + r8], xmm0
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x38], rdi
xor ebp, ebp
mov r12, r13
not r12
cmp byte [r14 + rbp], 0x80
jne 0x140071aa3
mov r15, rbp
not r15
mov rax, r15
and rax, 0xffffffffffffffcf
mov ecx, ebp
and ecx, 0x30
imul rcx, rax
mov eax, r15d
and eax, 0x30
mov rsi, r15
or rsi, 0x30
imul rsi, rax
add rsi, rcx
add rsi, r14
lea rax, [r15 + r15*2]
shl rax, 4
lea rdi, [rax + r14]
add rdi, 0x30
mov r8, qword [rdi - 0x28]
mov r9, qword [rdi - 0x20]
mov rcx, rbx
mov rdx, qword [rsp + 0x40]
call fcn.14000351c
mov rcx, rax
not rcx
or rcx, r12
not rcx
movdqu xmm0, xmmword [r14 + rcx]
pmovmskb r10d, xmm0
mov r8, rcx
test r10d, r10d
jne 0x140071971
mov edx, 0x10
mov r8, rcx
xor r9d, r9d
add r9, 0x10
mov r10, rdx
and r10, r8
xor r8, rdx
lea r8, [r8 + r10*2]
mov r10, r8
not r10
or r10, r13
lea r11, [r8 + r10]
add r8, r10
inc r8
movdqu xmm0, xmmword [r14 + r11 + 1]
pmovmskb r10d, xmm0
add rdx, 0x10
test r10d, r10d
je 0x140071938
bsf edx, r10d
add rdx, r8
mov r8, rdx
xor r8, r13
not r8
or rdx, r13
and rdx, r8
cmp byte [r14 + rdx], 0
js 0x14007199a
movdqa xmm0, xmmword [r14]
pmovmskb edx, xmm0
bsf edx, edx
mov r8, r15
and r8, rcx
mov r9, rdx
sub r9, rcx
not rcx
and rcx, rbp
sub rcx, r8
mov r8, r9
and r8, rcx
or rcx, r9
not rcx
or r8, r12
or r8, rcx
cmp r8, 0xffffffffffffffef
ja 0x140071a36
mov rcx, rdx
not rcx
mov r8d, edx
and r8d, 0x30
mov r9, rcx
and r9, 0xffffffffffffffcf
imul r9, r8
mov r8d, ecx
and r8d, 0x30
or rcx, 0x30
imul rcx, r8
add rcx, r9
add rcx, r14
mov r8b, byte [r14 + rdx]
shr rax, 0x39
lea r9, [rdx - 0x10]
not r9
or r9, r12
not r9
mov byte [r14 + rdx], al
mov byte [r9 + r14 + 0x10], al
cmp r8b, 0xff
je 0x140071a58
xor eax, eax
mov dl, byte [rsi + rax]
mov r8b, byte [rcx + rax]
mov byte [rsi + rax], r8b
mov byte [rcx + rax], dl
inc rax
cmp rax, 0x30
jne 0x140071a1a
jmp 0x1400718f9
shr rax, 0x39
lea rcx, [rbp - 0x10]
mov rdx, r13
xor rdx, rcx
not rdx
or rcx, r13
and rcx, rdx
mov byte [r14 + rbp], al
mov byte [rcx + r14 + 0x10], al
jmp 0x140071aa3
mov rax, rbp
movabs rdx, 0x7ffffffffffffff0
and rax, rdx
mov rdx, rbp
xor rdx, 0xfffffffffffffff0
lea rax, [rdx + rax*2]
xor rax, r13
not rax
and rax, r13
mov dl, 0xff
mov byte [r14 + rbp], dl
mov byte [rax + r14 + 0x10], dl
movdqu xmm0, xmmword [rsi]
movdqu xmm1, xmmword [rsi + 0x10]
movdqu xmm2, xmmword [rsi + 0x20]
movdqu xmmword [rcx + 0x20], xmm2
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rcx], xmm0
lea rax, [rbp + 1]
cmp rbp, r13
mov rbp, rax
jne 0x1400718b1
mov rdi, qword [rsp + 0x38]
mov r12, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
movabs rax, 0x8000000000000001
movabs rdx, 0x615fb67f3fbb8acc
sub rcx, rdx
sub rcx, r12
add rcx, rdx
mov qword [rdi + 0x10], rcx
jmp 0x140071e20
mov rax, rcx
shr rax, 0x3d
jne 0x140071e34
shl rcx, 3
movabs rdx, 0x2492492492492493
mov rax, rcx
mul rdx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 2
movabs rax, 0x2956a517f06bbef5
mov rdx, rax
not rdx
add rdx, rax
add rdx, rcx
bsr rcx, rdx
not ecx
mov r8, 0xffffffffffffffff
shr r8, cl
inc r8
lea r14, [rsp + 0x88]
mov edx, 0x30
mov rcx, r14
call fcn.140031999
mov r15, qword [r14]
mov rax, qword [r14 + 8]
test r15, r15
je 0x140071e20
mov r14, qword [rsp + 0x98]
mov rsi, qword [rsp + 0xa0]
movabs rdx, 0x6d15c9fea1e512be
mov rcx, rax
sub rcx, rdx
lea r8, [rcx + rdx]
add r8, 0x11
mov rcx, r15
mov dl, 0xff
mov qword [rsp + 0x28], rax
call fcn.1400706f0
mov qword [rsp + 0x60], 0x10
mov qword [rsp + 0x68], r15
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], r14
mov qword [rsp + 0x80], rsi
test r12, r12
je 0x140071d93
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x38], rdi
mov r14, qword [rdi]
movdqa xmm0, xmmword [r14]
pmovmskb r13d, xmm0
not r13d
xor ebp, ebp
mov qword [rsp + 0x30], r12
mov rsi, r12
mov r12, r14
test r13w, r13w
jne 0x140071c16
movdqa xmm0, xmmword [r12 + 0x10]
add r12, 0x10
pmovmskb r13d, xmm0
add rbp, 0x10
cmp r13d, 0xffff
je 0x140071bf6
not r13d
bsf edi, r13d
mov eax, edi
and eax, ebp
or rdi, rbp
add rdi, rax
mov rax, rdi
neg rax
lea rax, [rax + rax*2]
shl rax, 4
mov r8, qword [r14 + rax - 0x28]
mov r9, qword [r14 + rax - 0x20]
mov rcx, rbx
mov rdx, qword [rsp + 0x40]
call fcn.14000351c
mov rcx, rax
not rcx
mov r11, qword [rsp + 0x28]
or rcx, r11
lea r8, [rax + rcx]
lea rdx, [rax + rcx]
inc rdx
movdqu xmm0, xmmword [r15 + r8 + 1]
pmovmskb r10d, xmm0
mov rcx, r11
not rcx
test r10d, r10d
jne 0x140071caf
mov r8d, 0x10
xor r9d, r9d
add r9, 0x10
mov r10, r8
and r10, rdx
or rdx, r8
add rdx, r10
not rdx
or rdx, rcx
not rdx
movdqu xmm0, xmmword [r15 + rdx]
pmovmskb r10d, xmm0
add r8, 0x10
test r10d, r10d
je 0x140071c82
bsf r8d, r10d
add r8, rdx
mov rdx, r11
xor rdx, r8
not rdx
and rdx, r8
cmp byte [r15 + rdx], 0
js 0x140071cd5
movdqa xmm0, xmmword [r15]
pmovmskb edx, xmm0
bsf edx, edx
mov r8d, r13d
neg r8d
not r13d
or r13d, r8d
not r13d
dec rsi
shr rax, 0x39
lea r8, [rdx - 0x10]
not r8
or r8, rcx
not r8
mov byte [r15 + rdx], al
mov byte [r15 + r8 + 0x10], al
mov rax, rdi
not rax
mov rcx, rax
and rcx, 0xffffffffffffffcf
and edi, 0x30
imul rdi, rcx
mov ecx, eax
and ecx, 0x30
or rax, 0x30
imul rax, rcx
add rax, rdi
lea rcx, [rdx + rdx]
not rcx
add rcx, rdx
mov edx, ecx
not edx
and edx, 0x30
mov r8, rcx
and r8, 0xffffffffffffffcf
imul r8, rdx
mov edx, ecx
and edx, 0x30
or rcx, 0x30
imul rcx, rdx
add rcx, r8
movdqu xmm0, xmmword [r14 + rax]
movdqu xmm1, xmmword [r14 + rax + 0x10]
movdqu xmm2, xmmword [r14 + rax + 0x20]
movdqu xmmword [r15 + rcx + 0x20], xmm2
movdqu xmmword [r15 + rcx + 0x10], xmm1
movdqu xmmword [r15 + rcx], xmm0
test rsi, rsi
jne 0x140071bf0
mov rdi, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov r14, qword [rsp + 0x48]
jmp 0x140071d95
xor edx, edx
mov rax, r14
xor rax, rdx
mov rcx, rdx
not rcx
and rcx, r14
add rcx, rcx
sub rcx, rax
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x80], rdx
xor eax, eax
mov rcx, qword [rdi + rax*8]
mov rdx, qword [rsp + rax*8 + 0x68]
mov qword [rdi + rax*8], rdx
mov qword [rsp + rax*8 + 0x68], rcx
inc rax
cmp rax, 4
jne 0x140071db9
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x140071e16
mov eax, ecx
and eax, 1
mov rdx, rcx
xor rdx, 1
lea rax, [rdx + rax*2]
mov edx, 0x30
mul rdx
add rcx, rax
cmp rcx, 0xffffffffffffffef
je 0x140071e16
mov r8, qword [rsp + 0x68]
sub r8, rax
mov rcx, qword [0x14008fb30]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
movabs rax, 0x8000000000000001
add rsp, 0xa8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2