Function at 0x140029860
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x40
mov rax, rdx
movzx ebx, r9b
sub rax, rcx
mov rsi, r8
sar rax, 2
mov rbp, rdx
mov rdi, rcx
cmp rax, 0x20
jle 0x140029926
nop dword [rax]
test rsi, rsi
jle 0x14002998f
movzx r9d, bl
lea rcx, [rsp + 0x20]
mov r8, rbp
mov rdx, rdi
call fcn.140029580
mov r15, qword [rsp + 0x20]
mov rcx, rsi
mov r14, qword [rsp + 0x28]
mov rax, r15
sar rcx, 2
sub rax, rdi
sar rsi, 1
and rax, 0xfffffffffffffffc
add rsi, rcx
movzx r9d, bl
mov rcx, rbp
mov r8, rsi
sub rcx, r14
and rcx, 0xfffffffffffffffc
cmp rax, rcx
jge 0x140029904
mov rdx, r15
mov rcx, rdi
call fcn.140029860
mov rdi, r14
jmp 0x140029912
mov rdx, rbp
mov rcx, r14
call fcn.140029860
mov rbp, r15
mov rax, rbp
sub rax, rdi
sar rax, 2
cmp rax, 0x20
jg 0x1400298a0
cmp rax, 2
jl 0x140029b6b
cmp rdi, rbp
je 0x140029b6b
lea rsi, [rdi + 4]
mov rbx, rsi
cmp rsi, rbp
je 0x140029b6b
mov r14d, 4
movaps xmmword [rsp + 0x30], xmm6
sub r14, rdi
nop word [rax + rax]
movss xmm6, dword [rbx]
mov rcx, rbx
movss xmm0, dword [rdi]
comiss xmm0, xmm6
jbe 0x140029b2d
lea r8, [rbx - 4]
mov rdx, rdi
add r8, r14
mov rcx, rsi
call fcn.14026fce0
movss dword [rdi], xmm6
jmp 0x140029b59
cmp rax, 0x20
jle 0x140029926
mov r9, rbp
sub r9, rdi
sar r9, 2
mov r8, r9
sar r8, 1
test r8, r8
jle 0x140029a5b
lea r10, [r9 - 1]
sar r10, 1
nop word [rax + rax]
movss xmm1, dword [rdi + r8*4 - 4]
dec r8
mov rdx, r8
mov rcx, r8
cmp r8, r10
jge 0x140029a0b
nop word [rax + rax]
add rcx, rcx
xor eax, eax
movss xmm0, dword [rdi + rcx*4 + 4]
comiss xmm0, dword [rdi + rcx*4 + 8]
seta al
inc rcx
xor rax, 1
add rcx, rax
mov eax, dword [rdi + rcx*4]
mov dword [rdi + rdx*4], eax
mov rdx, rcx
cmp rcx, r10
jl 0x1400299e0
cmp rcx, r10
jne 0x140029a22
test r9b, 1
jne 0x140029a22
mov eax, dword [rdi + r9*4 - 4]
mov dword [rdi + rdx*4], eax
lea rdx, [r9 - 1]
lea rax, [rdx - 1]
sar rax, 1
cmp r8, rdx
jge 0x140029a4d
nop
movss xmm0, dword [rdi + rax*4]
comiss xmm1, xmm0
jbe 0x140029a4d
movss dword [rdi + rdx*4], xmm0
mov rdx, rax
dec rax
sar rax, 1
cmp r8, rdx
jl 0x140029a30
movss dword [rdi + rdx*4], xmm1
test r8, r8
jg 0x1400299c0
cmp r9, 2
jl 0x140029b6b
mov r14d, 4
lea r10, [rbp - 4]
sub r14, rdi
cmp r9, 2
jl 0x140029b12
movss xmm1, dword [r10]
mov r8, r10
mov eax, dword [rdi]
sub r8, rdi
sar r8, 2
xor edx, edx
xor ecx, ecx
mov dword [r10], eax
lea r9, [r8 - 1]
sar r9, 1
test r9, r9
jle 0x140029acb
add rcx, rcx
xor eax, eax
movss xmm0, dword [rdi + rcx*4 + 4]
comiss xmm0, dword [rdi + rcx*4 + 8]
seta al
inc rcx
xor rax, 1
add rcx, rax
mov eax, dword [rdi + rcx*4]
mov dword [rdi + rdx*4], eax
mov rdx, rcx
cmp rcx, r9
jl 0x140029aa0
cmp rcx, r9
jne 0x140029ae2
test r8b, 1
jne 0x140029ae2
mov eax, dword [rdi + r8*4 - 4]
mov dword [rdi + rdx*4], eax
lea rdx, [r8 - 1]
lea rax, [rdx - 1]
sar rax, 1
test rdx, rdx
jle 0x140029b0d
nop
movss xmm0, dword [rdi + rax*4]
comiss xmm1, xmm0
jbe 0x140029b0d
movss dword [rdi + rdx*4], xmm0
mov rdx, rax
dec rax
sar rax, 1
test rdx, rdx
jg 0x140029af0
movss dword [rdi + rdx*4], xmm1
sub r10, 4
lea rax, [r14 + r10]
sar rax, 2
mov r9, rax
cmp rax, 2
jge 0x140029a72
jmp 0x140029b6b
movss xmm0, dword [rbx - 4]
lea rax, [rbx - 4]
comiss xmm0, xmm6
jbe 0x140029b55
nop dword [rax + rax]
movss dword [rcx], xmm0
mov rcx, rax
movss xmm0, dword [rax - 4]
sub rax, 4
comiss xmm0, xmm6
ja 0x140029b40
movss dword [rcx], xmm6
add rbx, 4
cmp rbx, rbp
jne 0x140029960
movaps xmm6, xmmword [rsp + 0x30]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x40
pop r15
pop r14
pop rdi
ret