Function at 0x140243940
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
movzx esi, cx
mov eax, ecx
shr eax, 0x10
cmp r8, 1
jne 0x14024398c
movzx ecx, byte [rdx]
lea edx, [rsi + rcx]
cmp edx, 0xfff1
lea ecx, [rsi + rcx - 0xfff1]
cmovb ecx, edx
add eax, ecx
mov edx, eax
shl edx, 0x10
cmp eax, 0xfff1
lea eax, [rdx + 0xf0000]
cmovb eax, edx
or eax, ecx
jmp 0x140243e8e
test rdx, rdx
je 0x1402439da
cmp r8, 0x10
jae 0x1402439e4
test r8, r8
je 0x140243e61
mov rcx, r8
and rcx, 3
je 0x140243e09
xor r9d, r9d
movzx r10d, byte [rdx + r9]
add esi, r10d
add eax, esi
inc r9
cmp rcx, r9
jne 0x1402439b0
add rdx, r9
mov rcx, r8
sub rcx, r9
cmp r8, 4
jae 0x140243e12
jmp 0x140243e61
mov eax, 1
jmp 0x140243e8e
cmp r8, 0x15b0
jb 0x140243ca0
mov r9d, 0x80078071
nop word [rax + rax]
add r8, 0xffffffffffffea50
xor r11d, r11d
nop word [rax + rax]
movzx ecx, byte [rdx + r11]
add ecx, dword [0x140490850]
add ecx, esi
add eax, ecx
movzx r10d, byte [rdx + r11 + 1]
add r10d, ecx
add eax, r10d
movzx ecx, byte [rdx + r11 + 2]
add ecx, r10d
add eax, ecx
movzx r10d, byte [rdx + r11 + 3]
add r10d, ecx
add eax, r10d
movzx ecx, byte [rdx + r11 + 4]
add ecx, r10d
add eax, ecx
movzx esi, byte [rdx + r11 + 5]
add esi, ecx
mov rdi, qword [0x140464748]
movsxd rcx, dword [rdi]
mov r10d, dword [0x140377624]
add eax, esi
movzx ebx, byte [rdx + r11 + 6]
add ebx, esi
add eax, ebx
movzx esi, byte [rdx + r11 + 7]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 8]
add ebx, esi
add eax, ebx
movzx esi, byte [rdx + r11 + 9]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 0xa]
mov r14d, esi
xor r14d, ebx
and esi, ebx
lea esi, [r14 + rsi*2]
add eax, esi
movzx ebx, byte [rdx + r11 + 0xb]
add ebx, esi
mov esi, eax
xor esi, ebx
and eax, ebx
lea eax, [rsi + rax*2]
movzx esi, byte [rdx + r11 + 0xc]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 0xd]
add ebx, esi
add eax, ebx
movzx ebp, byte [rdx + r11 + 0xe]
add ebp, ebx
add eax, ebp
movzx esi, byte [rdx + r11 + 0xf]
add esi, ebp
add eax, esi
add r11, 0x10
cmp r11d, 0x15b0
jne 0x140243a10
add rdx, 0x15b0
mov r11d, esi
imul r11, r9
shr r11, 0x2f
imul r11d, r11d, 0xfff1
sub esi, r11d
mov r11d, eax
imul r11, r9
shr r11, 0x2f
imul r11d, r11d, 0xfff1
sub eax, r11d
cmp r8, 0x15af
ja 0x140243a00
add rcx, rdi
mov edi, dword [0x140464740]
lea r9d, [rdi + 1]
mov dword [0x140464740], r9d
mov ebx, edi
not ebx
xor r11d, r11d
xor edi, r9d
not r9d
and r9d, ebx
mov bl, 1
nop word cs:[rax + rax]
test r11b, r11b
jne 0x140243b6a
test r11b, r11b
je 0x140243b70
test bl, bl
je 0x140243b60
jmp 0x140243b65
or edi, r9d
xor r9d, r9d
xor edi, 0xffffffff
jne 0x140243ba7
test r10d, r10d
jle 0x140243ba7
xor r11d, r11d
xor ebx, ebx
xor r9d, r9d
nop dword [rax + rax]
test r11b, r11b
jne 0x140243b90
movsxd rbx, ebx
lea r14, [rcx + rbx]
xor r9d, dword [r14]
add ebx, 4
cmp ebx, r10d
jl 0x140243b90
test r8, r8
je 0x140243dff
mov ecx, dword [0x140377620]
xor ebx, ebx
mov ebp, ecx
sub ebp, r9d
sub r9d, ecx
mov r14d, r9d
sub r14d, ecx
mov r15b, 1
nop dword [rax]
test bl, bl
jne 0x140243bee
cmp edi, 1
mov ecx, 0
sbb ecx, ecx
and ecx, ebp
add dword [0x140490850], ecx
test bl, bl
je 0x140243c96
mov r10d, r14d
mov ecx, r9d
shl r10d, cl
sub r10d, r9d
mov r11d, r10d
mov ecx, r10d
shl r11d, cl
shl r11d, cl
sub r11d, r10d
imul r11d, r10d
shl r11d, cl
shl r11d, cl
shl r11d, cl
mov ecx, r11d
sub ecx, r10d
imul ecx, r10d
and ecx, r11d
mov r10d, dword [0x140490850]
sub r10d, ecx
imul r10d, ecx
sub ecx, r10d
mov r12d, ecx
sub r12d, r10d
mov r10d, r12d
shl r10d, cl
mov r11d, r12d
mov ecx, r10d
shl r11d, cl
sub r12d, r11d
imul r12d, r11d
mov r13d, r11d
sub r13d, r12d
mov r10d, r13d
mov ecx, r11d
shl r10d, cl
sub r13d, r10d
imul r13d, r10d
mov r11d, r13d
mov ecx, r10d
shl r11d, cl
mov r10d, r13d
mov ecx, r11d
shl r10d, cl
mov ecx, r10d
shl r13d, cl
add r13d, r10d
mov dword [0x140490850], r13d
test r15b, r15b
je 0x140243bd0
jmp 0x140243bd4
cmp r8, 0xf
jbe 0x140243d5d
add r8, 0xfffffffffffffff0
movzx ecx, byte [rdx]
add ecx, esi
add eax, ecx
movzx r9d, byte [rdx + 1]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 2]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 3]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 4]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 5]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 6]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 7]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 8]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 9]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xa]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 0xb]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xc]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 0xd]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xe]
add ecx, r9d
add eax, ecx
movzx esi, byte [rdx + 0xf]
add esi, ecx
mov ecx, eax
xor ecx, esi
and eax, esi
lea eax, [rcx + rax*2]
add rdx, 0x10
cmp r8, 0xf
ja 0x140243ca0
test r8, r8
je 0x140243dd6
mov r9, r8
not r9
lea rcx, [r9 + r8*2]
mov r10, r8
xor r10, 3
and r9, 0xfffffffffffffffc
or r9, r10
xor r9, 0xffffffffffffffff
je 0x140243d98
xor r10d, r10d
nop
movzx r11d, byte [rdx + r10]
add esi, r11d
add eax, esi
inc r10
cmp r9, r10
jne 0x140243d80
add rdx, r10
sub r8, r10
cmp rcx, 3
jb 0x140243dd6
xor ecx, ecx
movzx r9d, byte [rdx + rcx]
add r9d, esi
add eax, r9d
movzx r10d, byte [rdx + rcx + 1]
add r10d, r9d
add eax, r10d
movzx r9d, byte [rdx + rcx + 2]
add r9d, r10d
add eax, r9d
movzx esi, byte [rdx + rcx + 3]
add esi, r9d
add eax, esi
add rcx, 4
cmp r8, rcx
jne 0x140243da0
mov ecx, esi
mov edx, 0x80078071
imul rcx, rdx
shr rcx, 0x2f
imul ecx, ecx, 0xfff1
sub esi, ecx
mov ecx, eax
imul rcx, rdx
shr rcx, 0x2f
imul ecx, ecx, 0xfff1
sub eax, ecx
shl eax, 0x10
or eax, esi
jmp 0x140243e8e
mov rcx, r8
cmp r8, 4
jb 0x140243e61
xor r8d, r8d
nop word cs:[rax + rax]
movzx r9d, byte [rdx + r8]
add r9d, esi
add eax, r9d
movzx r10d, byte [rdx + r8 + 1]
add r10d, r9d
add eax, r10d
movzx r9d, byte [rdx + r8 + 2]
add r9d, r10d
add eax, r9d
movzx esi, byte [rdx + r8 + 3]
add esi, r9d
mov r9d, esi
xor r9d, eax
and eax, esi
lea eax, [r9 + rax*2]
add r8, 4
cmp rcx, r8
jne 0x140243e20
lea ecx, [rsi - 0xfff1]
cmp esi, 0xfff1
cmovb ecx, esi
mov edx, eax
mov r8d, 0x80078071
imul r8, rdx
shr r8, 0x2f
imul edx, r8d, 0xfff1
sub eax, edx
shl eax, 0x10
or eax, ecx
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret