Function at 0x6987c0
Capabilities:
Encode data using add xor sub operations
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1a8
movups xmmword [rsp + 0x100], xmm6
movups xmmword [rsp + 0x110], xmm7
movups xmmword [rsp + 0x120], xmm8
movups xmmword [rsp + 0x130], xmm9
movups xmmword [rsp + 0x140], xmm10
movups xmmword [rsp + 0x150], xmm11
movups xmmword [rsp + 0x160], xmm12
movups xmmword [rsp + 0x170], xmm13
movups xmmword [rsp + 0x180], xmm14
movups xmmword [rsp + 0x190], xmm15
mov rax, r8
mov r12, rdx
mov qword [rsp + 0x1f0], rcx
shl rax, 7
mov qword [rsp + 0x200], r8
mov qword [rsp + 0x48], 0
lea rax, [rdx + rax - 0x40]
movdqu xmm3, xmmword [rax]
movdqu xmm4, xmmword [rax + 0x10]
movdqu xmm5, xmmword [rax + 0x20]
movups xmmword [rsp + 0x80], xmm3
movdqu xmm3, xmmword [rax + 0x30]
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0x80]
mov qword [rsp + 0x68], rax
mov rax, r8
add rax, rax
movups xmmword [rsp + 0x90], xmm4
mov qword [rsp + 0x70], rax
movups xmmword [rsp + 0xa0], xmm5
movups xmmword [rsp + 0xb0], xmm3
je 0x698df7
nop dword [rax]
mov eax, dword [r12]
xor eax, dword [rsp + 0x80]
add r12, 0x40
movd xmm2, eax
mov eax, dword [r12 - 0x3c]
xor eax, dword [rsp + 0x84]
movd xmm13, eax
mov eax, dword [r12 - 0x38]
xor eax, dword [rsp + 0x88]
movd xmm5, eax
mov eax, dword [r12 - 0x34]
xor eax, dword [rsp + 0x8c]
movd xmm14, eax
mov eax, dword [r12 - 0x30]
xor eax, dword [rsp + 0x90]
movd xmm1, eax
mov eax, dword [r12 - 0x2c]
xor eax, dword [rsp + 0x94]
movd xmm11, eax
mov eax, dword [r12 - 0x28]
xor eax, dword [rsp + 0x98]
movd xmm4, eax
mov eax, dword [r12 - 0x24]
xor eax, dword [rsp + 0x9c]
movd xmm12, eax
mov eax, dword [r12 - 0x20]
xor eax, dword [rsp + 0xa0]
movd xmm0, eax
mov eax, dword [r12 - 0x1c]
xor eax, dword [rsp + 0xa4]
movd xmm10, eax
mov eax, dword [r12 - 0x18]
xor eax, dword [rsp + 0xa8]
movd xmm3, eax
mov eax, dword [r12 - 0x14]
xor eax, dword [rsp + 0xac]
mov dword [rsp + 0x54], eax
mov eax, dword [r12 - 0x10]
xor eax, dword [rsp + 0xb0]
mov dword [rsp + 0x58], eax
mov eax, dword [r12 - 0xc]
xor eax, dword [rsp + 0xb4]
mov dword [rsp + 0x5c], eax
mov eax, dword [r12 - 8]
xor eax, dword [rsp + 0xb8]
movdqu xmm7, xmmword [r12 - 0x40]
pxor xmm7, xmmword [rsp + 0x80]
movdqu xmm6, xmmword [r12 - 0x20]
mov dword [rsp + 0x60], eax
pxor xmm6, xmmword [rsp + 0xa0]
mov eax, dword [r12 - 4]
movups xmmword [rsp + 0xc0], xmm7
movd edi, xmm7
mov esi, dword [rsp + 0xc8]
movdqu xmm7, xmmword [r12 - 0x30]
pxor xmm7, xmmword [rsp + 0x90]
xor eax, dword [rsp + 0xbc]
movups xmmword [rsp + 0xe0], xmm6
movd r11d, xmm6
mov dword [rsp + 0x20], esi
mov esi, dword [rsp + 0xcc]
movd ecx, xmm7
movups xmmword [rsp + 0xd0], xmm7
movdqu xmm7, xmmword [r12 - 0x10]
mov r14d, dword [rsp + 0xdc]
pxor xmm7, xmmword [rsp + 0xb0]
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x38], esi
mov edx, dword [rsp + 0xe4]
movups xmmword [rsp + 0xf0], xmm7
mov ebx, dword [rsp + 0xd4]
mov ebp, dword [rsp + 0xc4]
movd r8d, xmm7
mov dword [rsp + 0x3c], r14d
mov r9d, dword [rsp + 0xf4]
mov eax, dword [rsp + 0xf8]
mov r10d, dword [rsp + 0xe8]
mov r13d, dword [rsp + 0xd8]
mov esi, dword [rsp + 0xfc]
mov r15d, dword [rsp + 0xec]
mov dword [rsp + 0x50], 4
mov qword [rsp + 0x1f8], r12
lea r12d, [rdi + r8]
rol r12d, 7
xor ecx, r12d
lea r12d, [rsi + r15]
lea r14d, [rcx + rdi]
rol r12d, 7
xor r12d, dword [rsp + 0x38]
rol r14d, 9
xor r14d, r11d
lea r11d, [rcx + r14]
rol r11d, 0xd
xor r11d, r8d
lea r8d, [r14 + r11]
mov dword [rsp + 0x40], r11d
ror r8d, 0xe
xor edi, r8d
lea r8d, [rbx + rbp]
rol r8d, 7
xor edx, r8d
lea r8d, [rdx + rbx]
rol r8d, 9
xor r8d, r9d
lea r11d, [rdx + r8]
mov dword [rsp + 0x44], r8d
rol r11d, 0xd
xor r11d, ebp
lea r8d, [r8 + r11]
ror r8d, 0xe
xor ebx, r8d
lea r8d, [r10 + r13]
rol r8d, 7
xor eax, r8d
lea r9d, [rax + r10]
rol r9d, 9
xor r9d, dword [rsp + 0x20]
lea r8d, [rax + r9]
rol r8d, 0xd
xor r13d, r8d
lea r8d, [r9 + r13]
ror r8d, 0xe
xor r10d, r8d
lea r8d, [r12 + rsi]
rol r8d, 9
xor r8d, dword [rsp + 0x3c]
lea ebp, [r12 + r8]
rol ebp, 0xd
xor r15d, ebp
lea ebp, [r8 + r15]
ror ebp, 0xe
xor esi, ebp
lea ebp, [rdi + r12]
rol ebp, 7
xor ebp, r11d
lea r11d, [rdi + rbp]
rol r11d, 9
xor r11d, r9d
lea r9d, [rbp + r11]
mov dword [rsp + 0x20], r11d
rol r9d, 0xd
xor r9d, r12d
add r11d, r9d
mov dword [rsp + 0x38], r9d
mov r9d, r11d
ror r9d, 0xe
xor edi, r9d
lea r9d, [rcx + rbx]
rol r9d, 7
xor r13d, r9d
lea r9d, [rbx + r13]
rol r9d, 9
mov r11d, r9d
xor r11d, r8d
lea r8d, [r13 + r11]
mov dword [rsp + 0x3c], r11d
rol r8d, 0xd
xor ecx, r8d
lea r8d, [r11 + rcx]
ror r8d, 0xe
xor ebx, r8d
lea r8d, [rdx + r10]
rol r8d, 7
xor r15d, r8d
lea r11d, [r10 + r15]
rol r11d, 9
xor r11d, r14d
lea r8d, [r15 + r11]
rol r8d, 0xd
xor edx, r8d
lea r8d, [r11 + rdx]
ror r8d, 0xe
xor r10d, r8d
lea r8d, [rax + rsi]
rol r8d, 7
xor r8d, dword [rsp + 0x40]
lea r9d, [rsi + r8]
rol r9d, 9
xor r9d, dword [rsp + 0x44]
lea r12d, [r8 + r9]
rol r12d, 0xd
xor eax, r12d
lea r12d, [r9 + rax]
ror r12d, 0xe
xor esi, r12d
sub dword [rsp + 0x50], 1
jne 0x698aa8
movd xmm7, eax
movd xmm6, esi
movd xmm15, r9d
mov r12, qword [rsp + 0x1f8]
punpckldq xmm7, xmm6
movd xmm6, r8d
movd xmm8, r10d
punpckldq xmm6, xmm15
movd xmm15, edx
punpckldq xmm4, xmm12
mov edx, 0x40
punpcklqdq xmm6, xmm7
movd xmm7, r15d
movd xmm9, r13d
punpckldq xmm8, xmm7
movd xmm7, r11d
punpckldq xmm1, xmm11
movups xmmword [rsp + 0xf0], xmm6
punpckldq xmm7, xmm15
movd xmm15, dword [rsp + 0x3c]
punpcklqdq xmm1, xmm4
movd xmm4, dword [rsp + 0x54]
punpcklqdq xmm7, xmm8
movd xmm8, ecx
punpckldq xmm0, xmm10
mov rcx, qword [rsp + 0x78]
punpckldq xmm9, xmm15
movd xmm15, ebx
punpckldq xmm3, xmm4
movups xmmword [rsp + 0xe0], xmm7
punpckldq xmm8, xmm15
movd xmm15, dword [rsp + 0x20]
punpcklqdq xmm0, xmm3
punpckldq xmm5, xmm14
punpcklqdq xmm8, xmm9
movd xmm9, dword [rsp + 0x38]
punpckldq xmm2, xmm13
paddd xmm7, xmm0
movd xmm3, dword [rsp + 0x64]
movd xmm0, dword [rsp + 0x58]
movups xmmword [rsp + 0xd0], xmm8
punpcklqdq xmm2, xmm5
punpckldq xmm15, xmm9
movd xmm5, dword [rsp + 0x5c]
paddd xmm8, xmm1
movd xmm1, dword [rsp + 0x60]
movq qword [rsp + 0x20], xmm15
movd xmm9, edi
movd xmm15, ebp
punpckldq xmm1, xmm3
punpckldq xmm0, xmm5
punpckldq xmm9, xmm15
movups xmmword [rsp + 0x90], xmm8
movhps xmm9, qword [rsp + 0x20]
punpcklqdq xmm0, xmm1
movups xmmword [rsp + 0xa0], xmm7
paddd xmm2, xmm9
paddd xmm6, xmm0
movups xmmword [rsp + 0xc0], xmm9
movups xmmword [rsp + 0x80], xmm2
movups xmmword [rsp + 0xb0], xmm6
call sym.OPENSSL_cleanse
mov rsi, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x68]
mov rax, rsi
mov rdx, rsi
movdqu xmm3, xmmword [rbx]
movdqu xmm5, xmmword [rbx + 0x10]
and eax, 1
shr rdx, 1
add rsi, 1
imul rax, qword [rsp + 0x200]
mov qword [rsp + 0x48], rsi
add rax, rdx
shl rax, 6
add rax, qword [rsp + 0x1f0]
movups xmmword [rax], xmm3
movdqu xmm3, xmmword [rbx + 0x20]
movups xmmword [rax + 0x10], xmm5
movdqu xmm5, xmmword [rbx + 0x30]
movups xmmword [rax + 0x20], xmm3
movups xmmword [rsp + 0x20], xmm5
movups xmmword [rax + 0x30], xmm5
cmp rsi, qword [rsp + 0x70]
jne 0x6988b8
mov rcx, qword [rsp + 0x68]
mov edx, 0x40
call sym.OPENSSL_cleanse
nop
movups xmm6, xmmword [rsp + 0x100]
movups xmm7, xmmword [rsp + 0x110]
movups xmm8, xmmword [rsp + 0x120]
movups xmm9, xmmword [rsp + 0x130]
movups xmm10, xmmword [rsp + 0x140]
movups xmm11, xmmword [rsp + 0x150]
movups xmm12, xmmword [rsp + 0x160]
movups xmm13, xmmword [rsp + 0x170]
movups xmm14, xmmword [rsp + 0x180]
movups xmm15, xmmword [rsp + 0x190]
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret