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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x18], r8
push rdi
push r12
push r13
push r14
push r15
movzx ebx, byte [rdx]
movzx eax, byte [rdx + 1]
movzx esi, byte [rdx + 4]
movzx ebp, byte [rdx + 8]
movzx r12d, byte [rdx + 0xe]
shl eax, 0x10
shl ebx, 0x18
shl esi, 0x18
shl ebp, 0x18
or ebx, eax
movzx eax, byte [rdx + 2]
mov r13, rcx
mov r14d, dword [r13 + 0x3d4]
shl eax, 8
shl r12d, 8
or ebx, eax
movzx eax, byte [rdx + 3]
mov r15, r8
or ebx, eax
movzx eax, byte [rdx + 5]
xor ebx, dword [rcx + 0xc]
shl eax, 0x10
or esi, eax
movzx eax, byte [rdx + 6]
shl eax, 8
or esi, eax
movzx eax, byte [rdx + 7]
or esi, eax
movzx eax, byte [rdx + 9]
xor esi, dword [rcx + 0x10]
shl eax, 0x10
or ebp, eax
movzx eax, byte [rdx + 0xa]
shl eax, 8
or ebp, eax
movzx eax, byte [rdx + 0xb]
or ebp, eax
movzx eax, byte [rdx + 0xd]
xor ebp, dword [rcx + 0x14]
movzx ecx, byte [rdx + 0xc]
shl eax, 0x10
shl ecx, 0x18
or ecx, eax
movzx eax, byte [rdx + 0xf]
or r12d, eax
or r12d, ecx
xor r12d, dword [r13 + 0x18]
cmp r14d, 1
jle 0x140022441
lea r15d, [r14 - 1]
lea rdi, [r13 + 0x34]
lea r14, [0x140000000]
nop
movsxd r9, esi
movsxd r10, ebp
movsxd r11, r12d
movsxd r8, ebx
mov rax, r9
add rdi, 0x20
sar rax, 0x18
movzx edx, al
mov rax, r10
mov esi, dword [r14 + rdx*4 + 0x1399f0]
sar rax, 0x10
movzx ecx, al
mov rax, r11
xor esi, dword [r14 + rcx*4 + 0x139df0]
sar rax, 8
movzx ecx, al
movzx eax, r8b
xor esi, dword [r14 + rcx*4 + 0x13a1f0]
xor esi, dword [r14 + rax*4 + 0x13a5f0]
mov rax, r8
sar r8, 0x10
xor esi, dword [rdi - 0x24]
sar rax, 8
movzx edx, al
mov rax, r10
mov ebp, dword [r14 + rdx*4 + 0x13a1f0]
sar rax, 0x18
movzx edx, r8b
mov r12d, dword [r14 + rdx*4 + 0x139df0]
movzx ecx, al
mov rax, r11
xor ebp, dword [r14 + rcx*4 + 0x1399f0]
sar rax, 0x10
movzx ecx, al
movzx eax, r9b
xor ebp, dword [r14 + rcx*4 + 0x139df0]
xor ebp, dword [r14 + rax*4 + 0x13a5f0]
mov rax, r9
sar r9, 0x10
xor ebp, dword [rdi - 0x20]
sar rax, 8
movzx ecx, al
mov rax, r11
xor r12d, dword [r14 + rcx*4 + 0x13a1f0]
sar rax, 0x18
movzx ecx, al
movzx eax, r10b
sar r10, 8
xor r12d, dword [r14 + rcx*4 + 0x1399f0]
mov ecx, ebx
xor r12d, dword [r14 + rax*4 + 0x13a5f0]
shr rcx, 0x18
movzx eax, r9b
xor r12d, dword [rdi - 0x1c]
mov ebx, dword [r14 + rcx*4 + 0x1399f0]
xor ebx, dword [r14 + rax*4 + 0x139df0]
movzx eax, r10b
xor ebx, dword [r14 + rax*4 + 0x13a1f0]
movzx eax, r11b
xor ebx, dword [r14 + rax*4 + 0x13a5f0]
xor ebx, dword [rdi - 0x28]
sub r15, 1
jne 0x140022310
mov r14d, dword [r13 + 0x3d4]
mov r15, qword [rsp + 0x40]
movsxd rdi, ebx
movsxd r10, r14d
lea r14, [0x140000000]
shl r10, 5
movsxd r11, ebp
movsxd rbx, esi
mov r8d, dword [r10 + r13 + 0xc]
movsxd r9, r12d
mov rax, rdi
sar rax, 0x18
mov ecx, r8d
movzx edx, al
sar ecx, 0x18
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov ecx, r8d
mov byte [r15], al
sar ecx, 0x10
mov rax, rbx
sar rax, 0x10
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov ecx, r8d
mov byte [r15 + 1], al
sar ecx, 8
mov rax, r11
sar rax, 8
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov byte [r15 + 2], al
movzx eax, r9b
movzx eax, byte [rax + r14 + 0x1397f0]
xor al, r8b
mov byte [r15 + 3], al
mov r8d, dword [r10 + r13 + 0x10]
mov rax, rbx
sar rax, 0x18
mov ecx, r8d
movzx edx, al
sar ecx, 0x18
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov ecx, r8d
mov byte [r15 + 4], al
sar ecx, 0x10
mov rax, r11
sar rax, 0x10
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov ecx, r8d
mov byte [r15 + 5], al
sar ecx, 8
mov rax, r9
sar rax, 8
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov byte [r15 + 6], al
movzx eax, dil
movzx eax, byte [rax + r14 + 0x1397f0]
xor al, r8b
mov byte [r15 + 7], al
mov r8d, dword [r10 + r13 + 0x14]
mov rax, r11
sar rax, 0x18
mov ecx, r8d
movzx edx, al
sar ecx, 0x18
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov ecx, r8d
mov byte [r15 + 8], al
mov rax, r9
sar ecx, 0x10
sar rax, 0x10
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x48]
mov byte [r15 + 9], al
mov rax, rdi
sar r9, 0x18
mov ecx, r8d
sar rax, 8
sar ecx, 8
sar rdi, 0x10
movzx edx, al
movzx eax, byte [rdx + r14 + 0x1397f0]
xor al, cl
mov byte [r15 + 0xa], al
movzx eax, bl
sar rbx, 8
movzx eax, byte [rax + r14 + 0x1397f0]
xor al, r8b
mov byte [r15 + 0xb], al
mov edx, dword [r10 + r13 + 0x18]
movzx eax, r9b
movzx eax, byte [rax + r14 + 0x1397f0]
mov ecx, edx
sar ecx, 0x18
xor al, cl
mov ecx, edx
mov byte [r15 + 0xc], al
sar ecx, 0x10
movzx eax, dil
movzx eax, byte [rax + r14 + 0x1397f0]
xor al, cl
mov ecx, edx
mov byte [r15 + 0xd], al
movzx eax, bl
mov rbx, qword [rsp + 0x30]
movzx eax, byte [rax + r14 + 0x1397f0]
sar ecx, 8
xor al, cl
mov byte [r15 + 0xe], al
movzx eax, r11b
movzx eax, byte [rax + r14 + 0x1397f0]
xor al, dl
mov byte [r15 + 0xf], al
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov qword [rsp + 0x18], r8
push rbx
push rbp
sub rsp, 0x68
mov eax, dword [rcx + 0x3d0]
mov rbp, r8
mov r9, rdx
cmp eax, 0x10
mov rbx, rcx
jne 0x14002266a
add rsp, 0x68
pop rbp
pop rbx
jmp 0x140022240
mov qword [rsp + 0x88], rsi
mov qword [rsp + 0x60], rdi
cdq
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x50], r13
and edx, 3
add eax, edx
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r15
sar eax, 2
movsxd r13, eax
cmp r13d, 4
jne 0x1400226a3
xor eax, eax
mov ecx, eax
jmp 0x1400226b1
xor eax, eax
cmp r13d, 6
mov ecx, eax
setne cl
add ecx, 1
movsxd rax, ecx
lea rcx, [0x140000000]
lea r14, [rbx + 0x458]
shl rax, 5
test r13d, r13d
mov rdx, r14
mov edi, dword [rax + rcx + 0x13ca18]
mov r11d, dword [rax + rcx + 0x13ca20]
mov r15d, dword [rax + rcx + 0x13ca28]
mov dword [rsp + 0x24], edi
mov dword [rsp + 0x98], r11d
mov dword [rsp + 0x20], r15d
mov r12, r13
jle 0x140022743
lea r8, [rbx + 0xc]
mov r10, r13
movzx eax, byte [r9]
mov rcx, rdx
add r9, 4
shl eax, 0x18
add rdx, 4
add r8, 4
mov dword [rdx - 4], eax
movzx eax, byte [r9 - 3]
shl eax, 0x10
or dword [rdx - 4], eax
movzx eax, byte [r9 - 2]
shl eax, 8
or dword [rdx - 4], eax
movzx eax, byte [r9 - 1]
or dword [rdx - 4], eax
mov eax, dword [r8 - 4]
xor dword [rcx], eax
sub r10, 1
jne 0x140022700
mov esi, 1
cmp dword [rbx + 0x3d4], esi
mov dword [rsp + 0x80], esi
jle 0x14002289d
lea eax, [r13*4]
lea r15, [rbx + 0x438]
lea rbp, [rbx + 0x2c]
cdqe
mov qword [rsp + 0x28], rax
test r12, r12
jle 0x14002285b
mov r10d, r11d
mov r11d, dword [rsp + 0x20]
mov qword [rsp + 0x30], r15
sub r10d, edi
mov r14d, edi
sub r11d, edi
mov rdi, r12
mov r12, qword [rsp + 0x30]
mov r15, rbp
lea rsi, [0x140000000]
nop
nop
nop
lea eax, [r10 + r14]
add r12, 4
add r15, 4
cdq
idiv r13d
movsxd rax, edx
mov ecx, dword [rbx + rax*4 + 0x458]
lea eax, [r11 + r14]
cdq
sar rcx, 8
movzx r8d, cl
idiv r13d
mov r9d, dword [rsi + r8*4 + 0x13a1f0]
movsxd rax, edx
movzx ecx, byte [rbx + rax*4 + 0x458]
mov eax, r14d
add r14d, 1
xor r9d, dword [rsi + rcx*4 + 0x13a5f0]
cdq
idiv r13d
movsxd rax, edx
mov ecx, dword [rbx + rax*4 + 0x458]
sar rcx, 0x10
movzx eax, cl
xor r9d, dword [rsi + rax*4 + 0x139df0]
movzx eax, byte [r12 + 0x1f]
xor r9d, dword [rsi + rax*4 + 0x1399f0]
xor r9d, dword [r15 - 4]
sub rdi, 1
mov dword [r12 - 4], r9d
jne 0x1400227b0
mov edi, dword [rsp + 0x24]
mov esi, dword [rsp + 0x80]
mov rax, qword [rsp + 0x28]
mov r12, r13
lea r15, [rbx + 0x438]
lea r14, [rbx + 0x458]
mov r8, rax
mov rdx, r15
mov rcx, r14
call fcn.1400f24b0
mov r11d, dword [rsp + 0x98]
mov rax, qword [rsp + 0x28]
add esi, 1
add rbp, 0x20
cmp esi, dword [rbx + 0x3d4]
mov dword [rsp + 0x80], esi
jl 0x140022775
mov rbp, qword [rsp + 0x90]
mov r15d, dword [rsp + 0x20]
test r12, r12
mov rsi, qword [rsp + 0x88]
jle 0x14002297d
sub edi, r11d
sub r15d, r11d
lea r10, [0x140000000]
xor r9d, r9d
nop
movsxd rax, dword [rbx + 0x3d4]
add rbp, 4
add r14, 4
lea rcx, [r9 + rax*8]
movzx eax, byte [r14 - 1]
add r9, 1
movzx eax, byte [rax + r10 + 0x1397f0]
mov r8d, dword [rbx + rcx*4 + 0xc]
mov ecx, r8d
sar ecx, 0x18
xor al, cl
mov byte [rbp - 4], al
lea eax, [rdi + r11]
cdq
idiv r13d
movsxd rax, edx
mov ecx, dword [rbx + rax*4 + 0x458]
sar rcx, 0x10
movzx eax, cl
mov ecx, r8d
movzx eax, byte [rax + r10 + 0x1397f0]
sar ecx, 0x10
xor al, cl
mov byte [rbp - 3], al
mov eax, r11d
cdq
idiv r13d
movsxd rax, edx
mov ecx, dword [rbx + rax*4 + 0x458]
sar rcx, 8
movzx eax, cl
mov ecx, r8d
movzx eax, byte [rax + r10 + 0x1397f0]
sar ecx, 8
xor al, cl
mov byte [rbp - 2], al
lea eax, [r15 + r11]
add r11d, 1
cdq
idiv r13d
movsxd rax, edx
movzx ecx, byte [rbx + rax*4 + 0x458]
movzx eax, byte [rcx + r10 + 0x1397f0]
xor al, r8b
cmp r9, r12
mov byte [rbp - 1], al
jl 0x1400228c0
mov r14, qword [rsp + 0x48]
mov r13, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x60]
mov r15, qword [rsp + 0x40]
add rsp, 0x68
pop rbp
pop rbx
ret