Function at 0x14029d8b0
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rbx, rdx
mov rdx, qword [rsp + 0x98]
mov r10d, ecx
and r10d, 0x1f
cmp r10d, 8
jae 0x14029d91d
cmp r10d, 3
jbe 0x14029d999
cmp r10d, 6
jae 0x14029da3a
cmp r10d, 4
jne 0x14029da66
test edx, edx
je 0x14029db6b
mov esi, ecx
mov rdi, r9
mov rcx, r9
call fcn.1400954d0
mov ecx, esi
xor eax, eax
test cl, 0x40
jne 0x14029e217
jmp 0x14029e247
mov rax, qword [rsp + 0x90]
xor r14d, r14d
mov rdi, r9
cmp r10d, 0xb
jb 0x14029d978
nop word cs:[rax + rax]
cmp r10d, 0xe
jae 0x14029da0a
cmp r10d, 0xd
jne 0x14029d9b9
mov r9, rax
sub r9, r8
test r14b, 1
cmove rsi, rax
mov ecx, 0x64743449
mov r14b, 1
mov r10d, 9
mov rdi, r8
mov r8, r9
cmp r10d, 0xb
jae 0x14029d940
cmp r10d, 8
je 0x14029db0c
cmp r10d, 0xa
jne 0x14029db2a
mov rcx, rdx
call fcn.14059b818
jmp 0x14029db8c
mov edi, 0xffffffff
xor r14d, r14d
mov eax, r10d
lea r10, [0x1405f5df8]
movsxd rax, dword [r10 + rax*4]
add rax, r10
jmp rax
invalid
jmp 0x14029dba8
cmp r10d, 0xb
jne 0x14029db8c
mov r9, rdi
sub r9, rax
jae 0x14029dad8
test r8, r8
je case.0x14029d9b2.3
cmp r8, 1
mov rcx, r8
adc rcx, 0
xor edx, edx
cmp r8, 8
jb 0x14029ddba
cmp r9, 0x20
jb 0x14029ddba
cmp r8, 0x20
jae 0x14029dd4b
xor edx, edx
jmp 0x14029dd8f
add r10d, 0xfffffff2
lea r9, [0x1405f5de0]
lea ecx, [0x1405f5de0]
movsxd r10, dword [r9 + r10*4]
add r10, r9
jmp r10
movzx eax, byte [0x14073a4b6]
cmp al, 0x4e
jne 0x14029e10c
lea rdi, [0x14073a4a0]
jmp case.0x14029d9b2.3
cmp r10d, 7
jne 0x14029dacc
mov rax, qword [r8]
test rax, rax
je 0x14029db76
mov rcx, rax
mov rsi, r8
call fcn.1400954d0
mov r8, rsi
xor r14d, r14d
jmp 0x14029db85
mov edi, 0xffffffff
mov rax, qword [rdx + 0x38]
mov r8, qword [rax]
test r8, r8
je 0x14029e217
add byte [rax], al
add byte [rax], al
mov r10, qword [rdx + 0x50]
cmp dword [r10], 0
jle 0x14029dc4a
xor r14d, r14d
jmp 0x14029e03a
movzx eax, byte [0x14073a4e9]
lea rdi, [0x14073a4e0]
cmp al, 0x5d
je 0x14029e217
mov cl, 0x21
nop dword [rax]
mov al, 0x47
lock cmpxchg byte [0x14073a4e9], cl
je 0x14029dc25
xor r14d, r14d
cmp al, 0x5d
jne 0x14029dab0
jmp case.0x14029d9b2.3
movzx eax, byte [0x14073a4d5]
jmp 0x14029e260
test r8, r8
je case.0x14029d9b2.3
cmp r8, 4
jb 0x14029dfbf
mov rcx, rax
sub rcx, rdi
cmp rcx, 0x10
jb 0x14029dfbf
cmp r8, 0x10
jae 0x14029de28
xor ecx, ecx
jmp 0x14029de78
mov r11, qword [rdx + 8]
test r11, r11
sete bl
movzx eax, byte [0x14073a432]
cmp al, 0x1b
je 0x14029e1ed
jmp 0x14029e043
test r8, r8
je 0x14029dfa3
cmp r8, 1
mov rax, r8
adc rax, 0
xor ecx, ecx
cmp r8, 8
jb 0x14029df36
mov r9, rdx
sub r9, rdi
cmp r9, 0x20
jb 0x14029df36
cmp r8, 0x20
jae 0x14029deca
xor ecx, ecx
jmp 0x14029df0e
xor r14d, r14d
mov rdi, r9
jmp case.0x14029d9b2.3
xor r14d, r14d
mov rdi, r9
test cl, 0x40
jne case.0x14029d9b2.3
add byte [rax], al
mov qword [r8], 0
xor edi, edi
jmp case.0x14029d9b2.3
invalid
add byte [rax], al
test eax, eax
jne 0x14029e32d
jmp case.0x14029d9b2.3
mov r9, rdi
mov ecx, 0x6d33e60
movzx eax, byte [0x14073a495]
lea rdi, [0x14073a480]
cmp al, 0x51
je case.0x14029d9b2.3
mov dl, 4
mov al, 0x67
lock cmpxchg byte [0x14073a495], dl
je 0x14029dc96
add byte [rax], al
test cl, 0x20
je 0x14029db85
cmp al, 0x51
jne 0x14029dbc0
jmp case.0x14029d9b2.3
test edx, edx
je 0x14029dec2
test cl, 0x40
jne 0x14029dfab
invalid
add eax, dword [rax]
invalid
lea rdi, [0x14073a4c0]
jmp case.0x14029d9b2.3
xor eax, eax
sub eax, dword [rbx - 4]
cdqe
lea rdi, [rbx + rax]
add rdi, 0xffffffffffffff68
mov rcx, rdi
mov rbx, r8
call fcn.1400c78a0
test ebx, ebx
jne 0x14029e345
jmp case.0x14029d9b2.3
movq xmm0, qword [0x14073a4e1]
paddb xmm0, xmmword [0x1405f5bf0]
movq qword [0x14073a4e1], xmm0
mov al, 0x5d
xchg byte [0x14073a4e9], al
jmp 0x14029e217
mov r11, qword [rdx + 0x40]
mov r11, qword [r11]
test r11, r11
je 0x14029e217
test byte [rdx + 0x70], 4
jne 0x14029e217
mov rsi, qword [rdx + 0x68]
cmp rsi, r11
cmovb rsi, r11
cmp rsi, r8
jbe 0x14029e217
lea r11, [rdx + 0x70]
mov qword [rdx + 0x68], rsi
sub esi, dword [rax]
mov dword [r10], esi
mov rax, qword [rdx + 0x38]
mov r8, qword [rax]
xor r14d, r14d
xor ebx, ebx
jmp 0x14029e057
mov r8d, 0xdb88e38
mov r10d, 0xdb88e37
xor edi, edi
movabs rbx, 0x8618618618618619
lea r15, [0x1405f5d00]
lea r12, [0x14073a480]
nop dword [rax]
mov rax, r8
mul rbx
mov r11, rdx
mov rax, r10
mul rbx
mov rax, r10
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, r15
add rax, 0xdb88e2d
movzx edx, byte [rdi + r12]
xor dl, byte [rdi + rax + 0xa]
xor dl, 0xcd
mov byte [rdi + r12], dl
cmp rdi, 0x14
je 0x14029dd3e
mov rax, r8
sub rax, r11
shr rax, 1
add rax, r11
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, r15
add rax, 0xdb88e38
movzx edx, byte [rdi + r12 + 1]
xor dl, byte [rax + rdi]
xor dl, 0xcd
mov byte [rdi + r12 + 1], dl
add rdi, 2
add r8, 2
add r10, 2
jmp 0x14029dcc0
mov al, 0x51
xchg byte [0x14073a495], al
jmp 0x14029e270
mov rdx, rcx
and rdx, 0xffffffffffffffe0
xor r9d, r9d
nop word cs:[rax + rax]
movdqu xmm0, xmmword [rax + r9]
movups xmm1, xmmword [rax + r9 + 0x10]
movdqu xmmword [rdi + r9], xmm0
movups xmmword [rdi + r9 + 0x10], xmm1
add r9, 0x20
cmp rdx, r9
jne 0x14029dd60
cmp rcx, rdx
je case.0x14029d9b2.3
test cl, 0x18
je 0x14029ddba
mov r9, rdx
mov rdx, rcx
and rdx, 0xfffffffffffffff8
nop dword [rax]
mov r10, qword [rax + r9]
mov qword [rdi + r9], r10
add r9, 8
cmp rdx, r9
jne 0x14029dda0
cmp rcx, rdx
je case.0x14029d9b2.3
mov r10, rcx
mov r9, rdx
and r10, 3
je 0x14029dde1
mov r9, rdx
nop dword [rax]
movzx r11d, byte [rax + r9]
mov byte [rdi + r9], r11b
inc r9
dec r10
jne 0x14029ddd0
sub rdx, rcx
cmp rdx, 0xfffffffffffffffc
ja case.0x14029d9b2.3
nop
movzx ecx, byte [rax + r9]
mov byte [rdi + r9], cl
movzx ecx, byte [rax + r9 + 1]
mov byte [rdi + r9 + 1], cl
movzx ecx, byte [rax + r9 + 2]
mov byte [rdi + r9 + 2], cl
movzx ecx, byte [rax + r9 + 3]
mov byte [rdi + r9 + 3], cl
add r9, 4
cmp r8, r9
jne 0x14029ddf0
jmp case.0x14029d9b2.3
mov rcx, r8
and rcx, 0xfffffffffffffff0
lea rdx, [rdi + r8]
add rdx, 0xfffffffffffffff0
lea r9, [rax + r8]
add r9, 0xfffffffffffffff0
mov r10, rcx
neg r10
xor r11d, r11d
nop dword [rax + rax]
movdqu xmm0, xmmword [r9 + r11]
movdqu xmmword [rdx + r11], xmm0
add r11, 0xfffffffffffffff0
cmp r10, r11
jne 0x14029de50
cmp rcx, r8
je case.0x14029d9b2.3
test r8b, 0xc
je 0x14029dfbb
mov rdx, r8
and rdx, 0xfffffffffffffffc
mov r9d, r8d
and r9d, 3
lea r10, [rdi + r8]
add r10, 0xfffffffffffffffc
neg rcx
lea r11, [rax + r8]
add r11, 0xfffffffffffffffc
mov rbx, rdx
neg rbx
nop
mov ebp, dword [r11 + rcx]
mov dword [r10 + rcx], ebp
add rcx, 0xfffffffffffffffc
cmp rbx, rcx
jne 0x14029dea0
cmp rdx, r8
mov r8, r9
jne 0x14029dfbf
jmp case.0x14029d9b2.3
mov rdi, rbx
jmp case.0x14029d9b2.3
mov rcx, rax
and rcx, 0xffffffffffffffe0
xor r9d, r9d
nop word cs:[rax + rax]
movdqu xmm0, xmmword [rdi + r9]
movups xmm1, xmmword [rdi + r9 + 0x10]
movdqu xmmword [rdx + r9], xmm0
movups xmmword [rdx + r9 + 0x10], xmm1
add r9, 0x20
cmp rcx, r9
jne 0x14029dee0
cmp rax, rcx
je 0x14029dfa3
test al, 0x18
je 0x14029df36
mov r9, rcx
mov rcx, rax
and rcx, 0xfffffffffffffff8
nop dword [rax + rax]
mov r10, qword [rdi + r9]
mov qword [rdx + r9], r10
add r9, 8
cmp rcx, r9
jne 0x14029df20
cmp rax, rcx
je 0x14029dfa3
mov r10, rax
mov r9, rcx
and r10, 3
je 0x14029df61
mov r9, rcx
nop word cs:[rax + rax]
movzx r11d, byte [rdi + r9]
mov byte [rdx + r9], r11b
inc r9
dec r10
jne 0x14029df50
sub rcx, rax
cmp rcx, 0xfffffffffffffffc
ja 0x14029dfa3
nop word [rax + rax]
movzx eax, byte [rdi + r9]
mov byte [rdx + r9], al
movzx eax, byte [rdi + r9 + 1]
mov byte [rdx + r9 + 1], al
movzx eax, byte [rdi + r9 + 2]
mov byte [rdx + r9 + 2], al
movzx eax, byte [rdi + r9 + 3]
mov byte [rdx + r9 + 3], al
add r9, 4
cmp r8, r9
jne 0x14029df70
mov rdi, rdx
jmp case.0x14029d9b2.3
mov rcx, rbx
call fcn.1400954d0
mov rdi, rbx
jmp case.0x14029d9b2.3
and r8d, 0xf
lea rdx, [r8 - 1]
mov r9, r8
and r9, 3
je 0x14029dfe9
nop dword [rax]
lea rcx, [r8 - 1]
movzx r10d, byte [rax + r8 - 1]
mov byte [rdi + r8 - 1], r10b
mov r8, rcx
dec r9
jne 0x14029dfd0
jmp 0x14029dfec
mov rcx, r8
cmp rdx, 3
jb case.0x14029d9b2.3
mov rdx, rcx
nop dword [rax]
movzx r8d, byte [rax + rcx - 1]
mov byte [rdi + rcx - 1], r8b
movzx r8d, byte [rax + rcx - 2]
mov byte [rdi + rcx - 2], r8b
movzx r8d, byte [rax + rcx - 3]
mov byte [rdi + rcx - 3], r8b
movzx r8d, byte [rax + rcx - 4]
mov byte [rdi + rcx - 4], r8b
add rdx, 0xfffffffffffffffc
mov rcx, rdx
jne 0x14029e000
jmp case.0x14029d9b2.3
movzx edi, byte [r8]
jmp case.0x14029d9b2.3
xor r8d, r8d
mov dl, 0xd5
mov al, 0x2d
lock cmpxchg byte [0x14073a432], dl
je 0x14029e067
mov r9d, eax
test cl, 0x40
je 0x14029e03a
cmp r9b, 0x1b
jne 0x14029e043
jmp 0x14029e1ed
lea rdi, [0x1405f5cc0]
lea r15, [rdi + 0x79424d96]
add rdi, 0x79424d95
mov r8d, 0x79424d96
mov r9d, 0x79424d94
movabs r12, 0xe38e38e38e38e38f
lea r13, [0x14073a420]
nop dword [rax]
mov rax, r8
mul r12
mov r10, rdx
shr r10, 3
and r10, 0xfffffffffffffffe
mov rax, r9
mul r12
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rax, [rdx + rdx*8]
neg rax
movzx eax, byte [rdi + rax]
xor al, 0xb
add byte [r8 + r13 - 0x79424d96], al
lea rax, [r10 + r10*8]
neg rax
movzx eax, byte [r15 + rax]
xor al, 0xb
add byte [r8 + r13 - 0x79424d95], al
add r15, 2
add r8, 2
add rdi, 2
add r9, 2
cmp r8, 0x79424da8
jne 0x14029e0a0
test cl, 0x20
jne 0x14029e1e5
mov cl, 0x96
lea rdi, [0x14073a4a0]
nop word cs:[rax + rax]
mov al, 0xad
lock cmpxchg byte [0x14073a4b6], cl
je 0x14029e135
cmp al, 0x4e
jne 0x14029e120
jmp case.0x14029d9b2.3
mov eax, 0xecd24c8
mov ecx, 0xf132db4e
mov edx, 1
mov r8d, 0xecd24c9
mov r9d, 0xf132db4d
mov r10d, 0xb21642c9
lea rdi, [0x14073a4a0]
lea r11, [0x1405f5d20]
nop word cs:[rax + rax]
mov r15d, ecx
imul r15, r10
shr r15, 0x24
lea ebx, [r15 + r15*2]
shl ebx, 3
sub ebx, r15d
add ebx, eax
mov r15d, r9d
imul r15, r10
shr r15, 0x24
lea r12d, [r15 + r15*2]
shl r12d, 3
sub r12d, r15d
add r12d, r8d
movzx ebp, byte [rdx + rdi - 1]
movzx r15d, byte [rdx + rdi]
xor bpl, byte [r12 + r11]
xor bpl, 0xd9
mov byte [rdx + rdi - 1], bpl
xor r15b, byte [rbx + r11]
xor r15b, 0xd9
mov byte [rdx + rdi], r15b
add eax, 0xfffffffe
add ecx, 2
add rdx, 2
add r8d, 0xfffffffe
add r9d, 2
rol dword [rdx], 0x48
cmp edx, 0x17
jne 0x14029e170
mov al, 0x4e
xchg byte [0x14073a4b6], al
jmp case.0x14029d9b2.3
mov al, 0x1b
xchg byte [0x14073a432], al
lea rdi, [0x14073a420]
test bl, 1
cmove rdi, r11
test r14b, 1
cmove rsi, rdi
mov rax, rsi
mov eax, esi
mov eax, esi
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor r14d, r14d
jmp case.0x14029d9b2.3
cmp r14, r9
jae 0x14029e238
movzx eax, byte [rbx + r14]
movzx r8d, byte [rdx + r14]
cmp al, r8b
jne 0x14029e23c
inc r14
mov eax, r9d
jmp 0x14029e25b
xor eax, eax
jmp 0x14029e247
mov rdi, r9
sub rax, r8
test cl, 0x40
jne 0x14029e217
mov edi, eax
jmp 0x14029e217
mov r8b, 0x91
mov al, 0x81
lock cmpxchg byte [0x14073a4d5], r8b
je 0x14029e26d
test cl, 0x20
je case.0x14029d9b2.2
cmp al, 0xef
jne 0x14029e24b
lea rdi, [0x14073a4c0]
jmp 0x14029e217
xor r14d, r14d
test ecx, 0x100
jne 0x14029e284
lea rdi, [0x14073a480]
jmp case.0x14029d9b2.3
mov r8d, 0xffffffff
lea r10, [r8 - 0x1be75623]
add r8, 0xffffffffe418a9df
xor edi, edi
movabs rbx, 0xcccccccccccccccd
lea rax, [0x1405f5d40]
mov r15d, 0xe418a9cc
add r15, rax
lea r12, [0x14073a4c0]
nop dword [rax + rax]
mov rax, r8
mul rbx
mov r11, rdx
mov rax, r10
mul rbx
shr rdx, 2
and rdx, 0xfffffffffffffffc
lea rax, [rdx + rdx*4]
mov rdx, r15
sub rdx, rax
movzx eax, byte [rdi + r12]
xor al, byte [rdx + rdi + 0x11]
xor al, 0xfc
mov byte [rdi + r12], al
cmp rdi, 0x14
je 0x14029e32a
shr r11, 2
and r11, 0xfffffffffffffffc
lea rax, [r11 + r11*4]
mov rdx, r15
sub rdx, rax
add rdx, 0x12
movzx eax, byte [rdi + r12 + 1]
xor al, byte [rdx + rdi]
xor al, 0xfc
mov byte [rdi + r12 + 1], al
add rdi, 2
add r8, 2
add r10, 2
jmp 0x14029e2c0
mov rdi, r9
test cl, cl
js 0x14029e345
mov al, 0xef
xchg byte [0x14073a4d5], al
lea rdi, [0x14073a4c0]
jmp case.0x14029d9b2.3
mov rcx, rdi
call fcn.1400954d0
jmp case.0x14029d9b2.3
invalid
xchg byte [rbx], al
add eax, dword [rax]
add bh, dh
mov byte [rax], 2
add byte [rax], al
invalid