Function at 0x140031af0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x158
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0xc0], xmm15
movaps xmmword [rbp + 0xb0], xmm14
movaps xmmword [rbp + 0xa0], xmm13
movaps xmmword [rbp + 0x90], xmm12
movaps xmmword [rbp + 0x80], xmm11
movaps xmmword [rbp + 0x70], xmm10
movaps xmmword [rbp + 0x60], xmm9
movaps xmmword [rbp + 0x50], xmm8
movaps xmmword [rbp + 0x40], xmm7
movaps xmmword [rbp + 0x30], xmm6
mov rsi, r8
mov rbx, rdx
mov rdi, rcx
cmp rdx, 0x21
jae 0x140031d88
cmp rbx, 2
jb 0x1400324c8
mov r12, rbx
shr r12, 1
cmp rbx, 8
mov qword [rbp + 0x28], rdi
jb 0x140032201
mov rax, qword [rdi + 0x30]
mov rdx, qword [rdi + 0x70]
xor ecx, ecx
xor r10d, r10d
cmp rax, qword [rdi + 0x10]
setae cl
setb r10b
xor r9d, r9d
cmp rdx, qword [rdi + 0x50]
setb r9b
shl r10d, 5
lea r15, [rdi + r10]
shl ecx, 5
lea r14, [rdi + rcx]
mov eax, r9d
shl eax, 5
lea r8, [rdi + rax]
add r8, 0x40
xor r9d, 3
shl r9d, 5
mov rax, qword [rdi + rax + 0x50]
mov r11, qword [rdi + r9 + 0x10]
mov rcx, qword [rdi + rcx + 0x10]
cmp r11, rcx
mov rdi, r14
cmovb rdi, r8
mov rdx, qword [rbp + 0x28]
cmp rax, qword [rdx + r10 + 0x10]
cmovb rdi, r15
cmovb r15, r8
mov qword [rbp + 0x20], r15
mov rax, qword [rbp + 0x28]
lea rax, [rax + r9]
cmovb r8, r14
cmp r11, rcx
cmovae r14, rax
mov qword [rbp + 0x18], r14
cmovb r8, rax
mov rax, qword [r8 + 0x10]
cmp rax, qword [rdi + 0x10]
adc byte [rcx - 0x77], cl
cli
mov r15, r9
mov rax, qword [rbp + 0x148]
mov qword [rbp + 0x20], rax
mov r13d, dword [rbp + 0x140]
lea rax, [rsi - 0x20]
mov qword [rbp], rax
mov qword [rbp + 0x28], r9
lea rax, [rdi + 0x20]
mov qword [rbp + 8], rax
mov r14, rbx
nop word cs:[rax + rax]
sub r13d, 1
jb 0x1400321e6
mov r9, r14
shr r9, 3
mov rax, r9
shl rax, 7
add rax, rdi
imul r8, r9, 0xe0
add r8, rdi
cmp r14, 0x40
jae 0x140031e20
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rax + 0x10]
cmp rcx, rdx
setb r9b
mov r10, qword [r8 + 0x10]
cmp rcx, r10
setb cl
xor cl, r9b
cmp rdx, r10
setb dl
xor dl, r9b
cmovne rax, r8
test cl, cl
cmovne rax, rdi
jmp 0x140031e2b
mov rcx, rdi
mov rdx, rax
call fcn.140032590
mov r11, rax
sub r11, rdi
shr r11, 5
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rbp - 0x40], xmm1
movaps xmmword [rbp - 0x50], xmm0
cmp qword [rbp + 0x20], 0
mov dword [rbp + 0x10], r13d
je 0x140031e61
mov rcx, qword [rbp + 0x20]
mov rcx, qword [rcx + 0x10]
cmp rcx, qword [rax + 0x10]
jae 0x140032040
cmp r14, r15
ja 0x140032564
mov r15, r14
shl r15, 5
lea r13, [rsi + r15]
mov rax, r11
shl rax, 5
add rax, rdi
add rax, 0x10
xor ebx, ebx
mov rcx, rdi
mov rdx, r13
mov qword [rbp + 0x18], r11
mov r8, r11
nop word cs:[rax + rax]
mov r9, r8
shl r9, 5
add r9, rdi
cmp rcx, r9
jae 0x140031ee8
nop
mov r10, qword [rcx + 0x10]
add rdx, 0xffffffffffffffe0
mov r11, rbx
shl r11, 5
cmp r10, qword [rax]
mov r10, rdx
cmovb r10, rsi
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [r10 + r11 + 0x10], xmm1
movups xmmword [r10 + r11], xmm0
adc rbx, 0
add rcx, 0x20
cmp rcx, r9
jb 0x140031eb0
cmp r8, r14
je 0x140031f20
mov r8, rbx
shl r8, 5
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdx + r8 - 0x10], xmm1
movups xmmword [rdx + r8 - 0x20], xmm0
add rdx, 0xffffffffffffffe0
add rcx, 0x20
mov r8, r14
jmp 0x140031ea0
mov r12, rbx
shl r12, 5
mov rcx, rdi
mov rdx, rsi
mov r8, r12
call sub.msvcrt.dll_memcpy
mov rdx, r14
sub rdx, rbx
movabs r10, 0x7fffffffffffffe
mov r11, qword [rbp + 0x18]
je 0x140031fef
lea rax, [rbx + 1]
cmp r14, rax
jne 0x140031f60
xor eax, eax
jmp 0x140031fc3
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov rax, qword [rbp + 8]
lea r8, [rax + r12]
add r15, qword [rbp]
xor r9d, r9d
nop word cs:[rax + rax]
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r8 - 0x10], xmm1
movups xmmword [r8 - 0x20], xmm0
lea rax, [r9 + 2]
xor r9, r10
shl r9, 5
movups xmm0, xmmword [r13 + r9]
movups xmm1, xmmword [r13 + r9 + 0x10]
movups xmmword [r8], xmm0
movups xmmword [r8 + 0x10], xmm1
add r8, 0x40
add r15, 0xffffffffffffffc0
mov r9, rax
cmp rcx, rax
jne 0x140031f80
test dl, 1
je 0x140031fef
lea rcx, [rdi + r12]
mov r8, rax
not r8
shl r8, 5
shl rax, 5
movups xmm0, xmmword [r13 + r8]
movups xmm1, xmmword [r13 + r8 + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
test rbx, rbx
mov r15, qword [rbp + 0x28]
mov r13d, dword [rbp + 0x10]
je 0x140032040
cmp r14, rbx
jb 0x14003251b
add r12, rdi
lea rax, [rbp - 0x50]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
mov rcx, r12
mov r8, rsi
mov r9, r15
call fcn.140031af0
mov r14, rbx
cmp rbx, 0x21
jae 0x140031dc0
jmp 0x140031b5d
cmp r14, r15
ja 0x140032564
mov r13, r14
shl r13, 5
lea rdx, [rsi + r13]
mov rax, r11
shl rax, 5
add rax, rdi
add rax, 0x10
xor r12d, r12d
mov rcx, rdi
mov qword [rbp + 0x20], rdx
nop dword [rax]
mov r8, r11
shl r8, 5
add r8, rdi
cmp rcx, r8
jae 0x1400320b8
nop
mov r9, qword [rax]
add rdx, 0xffffffffffffffe0
mov r10, r12
shl r10, 5
cmp r9, qword [rcx + 0x10]
mov r9, rdx
cmovae r9, rsi
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [r9 + r10 + 0x10], xmm1
movups xmmword [r9 + r10], xmm0
sbb r12, 0xffffffffffffffff
add rcx, 0x20
cmp rcx, r8
jb 0x140032080
cmp r11, r14
je 0x1400320f0
add rdx, 0xffffffffffffffe0
mov r8, r12
shl r8, 5
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rsi + r8 + 0x10], xmm1
movups xmmword [rsi + r8], xmm0
inc r12
add rcx, 0x20
mov r11, r14
jmp 0x140032070
mov r8, r12
shl r8, 5
mov rcx, rdi
mov rdx, rsi
mov qword [rbp + 0x18], r8
call sub.msvcrt.dll_memcpy
movabs r9, 0x7fffffffffffffe
mov rbx, r14
sub rbx, r12
mov r10, qword [rbp + 0x20]
je 0x1400321bd
lea rax, [r12 + 1]
cmp r14, rax
jne 0x14003212e
xor eax, eax
jmp 0x14003218f
mov rcx, rbx
and rcx, 0xfffffffffffffffe
mov rax, qword [rbp + 0x18]
lea rdx, [rdi + rax]
add rdx, 0x20
add r13, qword [rbp]
xor r8d, r8d
nop dword [rax + rax]
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rdx - 0x10], xmm1
movups xmmword [rdx - 0x20], xmm0
lea rax, [r8 + 2]
xor r8, r9
shl r8, 5
movups xmm0, xmmword [r10 + r8]
movups xmm1, xmmword [r10 + r8 + 0x10]
movups xmmword [rdx], xmm0
movups xmmword [rdx + 0x10], xmm1
add rdx, 0x40
add r13, 0xffffffffffffffc0
mov r8, rax
cmp rcx, rax
jne 0x140032150
test bl, 1
je 0x1400321bd
mov rcx, qword [rbp + 0x18]
add rcx, rdi
mov rdx, rax
not rdx
shl rdx, 5
shl rax, 5
movups xmm0, xmmword [r10 + rdx]
movups xmm1, xmmword [r10 + rdx + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
cmp r14, r12
jb 0x14003254d
add rdi, qword [rbp + 0x18]
mov eax, 0
mov qword [rbp + 0x20], rax
cmp rbx, 0x21
mov r13d, dword [rbp + 0x10]
jae 0x140031da9
jmp 0x140031b5d
mov byte [rsp + 0x20], 1
mov rcx, rdi
mov rdx, r14
mov r8, rsi
mov r9, r15
call fcn.140031420
jmp 0x1400324c8
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
mov rax, r12
shl rax, 5
movups xmm0, xmmword [rdi + rax]
movups xmm1, xmmword [rdi + rax + 0x10]
movups xmmword [rsi + rax + 0x10], xmm1
movups xmmword [rsi + rax], xmm0
mov edx, 1
lea rax, str.mid___len
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x28], 1
mov qword [rbp - 0x20], 8
xorps xmm0, xmm0