Function at 0x1400ecf90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x198
mov rsi, rdx
mov rax, rcx
mov rcx, qword [0x14018e218]
xor rcx, rsp
mov qword [rsp + 0x190], rcx
mov r13, qword [rax + 8]
mov r12, rdx
sub r12, r13
movzx ecx, byte [rax + 0x100]
mov edx, 1
shl edx, cl
mov ecx, dword [rax + 0x1c]
mov r11d, r12d
sub r11d, ecx
mov r10d, r12d
sub r10d, edx
cmp r11d, edx
cmovbe r10d, ecx
mov qword [rsp + 0x80], r9
mov qword [rsp + 0x38], r8
cmp dword [rax + 0x28], 0
cmovne r10d, ecx
mov dword [rsp + 0x50], r10d
mov edx, dword [rax + 0x10c]
cmp edx, 6
mov ecx, 6
cmovb ecx, edx
mov ebp, 1
shl ebp, cl
mov rcx, qword [rax + 0x70]
mov qword [rsp + 0x48], rcx
mov r9, qword [rax + 0xf8]
mov qword [rsp + 0x68], r9
imul r15d, dword [rsi], 0x9e3779b1
mov cl, 0x22
sub cl, byte [r9 + 0x108]
mov ebx, r15d
shr ebx, cl
mov r8d, 1
mov qword [rsp + 0x60], rbx
shl rbx, 4
lea ecx, [rdx - 6]
shl r8d, cl
mov rcx, qword [rax + 0x38]
mov qword [rsp + 0x28], rcx
mov r11d, dword [rax + 0x34]
mov edi, dword [rax + 0x18]
mov r10, qword [rax + 0x60]
mov rcx, qword [r9 + 0x70]
prefetcht0 byte [rcx + rbx]
xor ecx, ecx
cmp edx, 7
cmovae ecx, r8d
cmp dword [rax + 0x12c], 0
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x78], rdi
mov dword [rsp + 0x44], ecx
je 0x1400ed0b9
xor r15d, r10d
mov cl, 0x18
sub cl, r11b
shr r15d, cl
mov dword [rax + 0x2c], r12d
mov r14, qword [rsp + 0x48]
mov r9, qword [rsp + 0x28]
jmp 0x1400ed38f
mov r15d, dword [rax + 0x2c]
mov ecx, r12d
sub ecx, r15d
cmp ecx, 0x181
mov qword [rsp + 0x70], r10
jb 0x1400ed258
mov rdx, qword [rsp + 0x28]
mov r9, qword [rsp + 0x48]
mov r12, r9
cmp r15d, 0xffffff9f
ja 0x1400ed1b5
lea rdx, [r15 + 0x60]
mov ecx, 0x18
mov dword [rsp + 0x40], r11d
sub ecx, r11d
mov r11, qword [rsp + 0x28]
nop word cs:[rax + rax]
imul r14d, dword [r13 + r15 + 8], 0x9e3779b1
xor r14d, dword [rax + 0x60]
shr r14d, cl
mov r12d, r14d
shr r12d, 2
and r12d, 0xffffffc0
prefetcht0 byte [r9 + r12*4]
prefetcht0 byte [r9 + r12*4 + 0x40]
prefetcht0 byte [r11 + r12]
prefetcht0 byte [r11 + r12 + 0x20]
mov r12d, r15d
and r12d, 7
mov r13d, dword [rax + r12*4 + 0x40]
mov dword [rax + r12*4 + 0x40], r14d
mov r14, r13
shr r14, 2
and r14d, 0x3fffffc0
lea r12, [r9 + r14*4]
movzx edi, byte [r11 + r14]
dec dil
and dil, 0x3f
mov r8d, 0
mov r10d, 0x3f
cmove r8d, r10d
lea r10, [r11 + r14]
movzx edi, dil
add rdi, r8
mov byte [r11 + r14], dil
mov byte [r10 + rdi], r13b
mov r13, qword [rsp + 0x30]
mov dword [r12 + rdi*4], r15d
inc r15
cmp rdx, r15
jne 0x1400ed110
mov rdx, qword [rax + 0x38]
mov r12, qword [rax + 0x70]
mov r11d, dword [rsp + 0x40]
mov r9, qword [rsp + 0x58]
lea r15d, [r9 - 0x20]
lea rcx, [rsi + 1]
lea r8, [r15 + r13]
mov r10d, ecx
sub r10d, r8d
inc r10d
cmp r10d, 8
mov edi, 8
cmovb edi, r10d
xor r10d, r10d
cmp r8, rcx
cmovbe r10d, edi
lea r14d, [r10 + r9]
add r14d, 0xffffffe0
cmp r14d, r15d
jbe 0x1400ed251
mov r8d, dword [rax + 0x60]
mov ecx, 0x18
sub ecx, dword [rax + 0x34]
mov r14d, r14d
mov r9, r13
mov r13, r15
nop dword [rax + rax]
imul r10d, dword [r9 + r13], 0x9e3779b1
xor r10d, r8d
shr r10d, cl
mov edi, r10d
shr edi, 2
and edi, 0xffffffc0
prefetcht0 byte [r12 + rdi*4]
prefetcht0 byte [r12 + rdi*4 + 0x40]
prefetcht0 byte [rdx + rdi]
prefetcht0 byte [rdx + rdi + 0x20]
mov edi, r13d
and edi, 7
mov dword [rax + rdi*4 + 0x40], r10d
inc r13
cmp r14, r13
jne 0x1400ed210
mov r13, r9
mov r10, qword [rsp + 0x70]
jmp 0x1400ed262
mov rdx, qword [rsp + 0x28]
mov r12, qword [rsp + 0x48]
mov r9, qword [rsp + 0x58]
cmp r15d, r9d
jae 0x1400ed33b
mov dword [rsp + 0x40], r11d
mov qword [rsp + 0x88], rsi
mov ecx, 0x18
sub ecx, dword [rax + 0x34]
mov r14, qword [rax + 8]
mov r15d, r15d
mov r8d, r9d
nop
imul r10d, dword [r14 + r15 + 8], 0x9e3779b1
xor r10d, dword [rax + 0x60]
shr r10d, cl
mov edi, r10d
shr edi, 2
and edi, 0xffffffc0
prefetcht0 byte [r12 + rdi*4]
prefetcht0 byte [r12 + rdi*4 + 0x40]
prefetcht0 byte [rdx + rdi]
prefetcht0 byte [rdx + rdi + 0x20]
mov edi, r15d
and edi, 7
mov r9d, dword [rax + rdi*4 + 0x40]
mov dword [rax + rdi*4 + 0x40], r10d
mov r10, r9
shr r10, 2
and r10d, 0x3fffffc0
lea rdi, [r12 + r10*4]
movzx r13d, byte [rdx + r10]
dec r13b
and r13b, 0x3f
mov esi, 0
mov r11d, 0x3f
cmove esi, r11d
lea r11, [rdx + r10]
movzx r13d, r13b
add r13, rsi
mov byte [rdx + r10], r13b
mov byte [r11 + r13], r9b
mov dword [rdi + r13*4], r15d
inc r15
cmp r8, r15
jne 0x1400ed290
mov rsi, qword [rsp + 0x88]
mov r13, qword [rsp + 0x30]
mov r12, qword [rsp + 0x58]
mov r11d, dword [rsp + 0x40]
mov r10, qword [rsp + 0x70]
jmp 0x1400ed341
mov r8d, r9d
mov r12, r9
mov dword [rax + 0x2c], r12d
imul edx, dword [r13 + r8 + 8], 0x9e3779b1
xor edx, r10d
mov cl, 0x18
sub cl, r11b
shr edx, cl
mov ecx, edx
shr ecx, 2
and ecx, 0xffffffc0
mov r14, qword [rsp + 0x48]
prefetcht0 byte [r14 + rcx*4]
prefetcht0 byte [r14 + rcx*4 + 0x40]
mov r9, qword [rsp + 0x28]
prefetcht0 byte [r9 + rcx]
prefetcht0 byte [r9 + rcx + 0x20]
mov ecx, r12d
and ecx, 7
mov r15d, dword [rax + rcx*4 + 0x40]
mov dword [rax + rcx*4 + 0x40], edx
add dword [rax + 0x68], r15d
mov r8d, r15d
shr r8d, 2
and r8d, 0xffffffc0
lea rdx, [r9 + r8]
movzx ecx, byte [r9 + r8]
movd xmm0, r15d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmm1, xmmword [r9 + r8]
movdqu xmm2, xmmword [r9 + r8 + 0x10]
movdqu xmm3, xmmword [r9 + r8 + 0x20]
movdqu xmm4, xmmword [r9 + r8 + 0x30]
pcmpeqb xmm1, xmm0
pmovmskb edi, xmm1
pcmpeqb xmm2, xmm0
pmovmskb r9d, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r10d, xmm3
pcmpeqb xmm4, xmm0
pmovmskb r11d, xmm4
lea r8, [r14 + r8*4]
shl r11, 0x30
shl r10, 0x20
or r10, r11
shl r9, 0x10
or r9, r10
xor r11d, r11d
or rdi, r9
je 0x1400ed45b
ror rdi, cl
xor r9d, r9d
nop dword [rax]
tzcnt r14, rdi
add r14d, ecx
and r14d, 0x3f
je 0x1400ed44c
mov r14d, dword [r8 + r14*4]
cmp r14d, dword [rsp + 0x50]
jb 0x1400ed45e
prefetcht0 byte [r13 + r14]
mov dword [rsp + r9*4 + 0x90], r14d
inc r9
dec ebp
lea r10, [rdi - 1]
and rdi, r10
je 0x1400ed45e
test ebp, ebp
jne 0x1400ed420
jmp 0x1400ed45e
xor r9d, r9d
shl qword [rsp + 0x60], 2
dec ecx
and ecx, 0x3f
mov r10d, 0x3f
cmove r11d, r10d
add r11, rcx
mov byte [rdx], r11b
mov byte [rdx + r11], r15b
mov ecx, dword [rax + 0x2c]
lea edx, [rcx + 1]
mov dword [rax + 0x2c], edx
mov dword [r8 + r11*4], ecx
test r9, r9
je 0x1400ed5f6
mov rdx, qword [rsp + 0x38]
lea rax, [rdx - 7]
lea rcx, [rdx - 3]
lea r10, [rdx - 1]
lea edx, [r12 + 3]
mov dword [rsp + 0x50], edx
lea rdi, [rsi + 8]
lea rdx, [r13 + 8]
mov qword [rsp + 0x28], rdx
mov edx, 3
xor r12d, r12d
jmp 0x1400ed4df
inc r12
mov r14, rdx
cmp r12, r9
je 0x1400ed5fc
mov r8d, dword [rsp + r12*4 + 0x90]
lea r15, [r8 + r13]
mov r11d, dword [rdx + r15 - 3]
cmp r11d, dword [rsi + rdx - 3]
jne 0x1400ed4d0
cmp rax, rsi
jbe 0x1400ed520
mov r11, qword [rsi]
xor r11, qword [r15]
je 0x1400ed53a
tzcnt r14, r11
shr r14, 3
jmp 0x1400ed5c7
mov r14, rsi
cmp r14, rcx
jae 0x1400ed590
mov r11d, dword [r15]
cmp r11d, dword [r14]
jne 0x1400ed590
add r14, 4
add r15, 4
jmp 0x1400ed590
mov r11, qword [rsp + 0x28]
lea r15, [r11 + r8]
xor r13d, r13d
nop word cs:[rax + rax]
lea r14, [rdi + r13]
cmp r14, rax
jae 0x1400ed57c
mov r14, qword [r14]
lea r11, [r13 + 8]
xor r14, qword [r15 + r13]
mov r13, r11
je 0x1400ed550
tzcnt r14, r14
shr r14, 3
add r14, r11
mov r13, qword [rsp + 0x30]
jmp 0x1400ed5c7
add r15, r13
mov r13, qword [rsp + 0x30]
cmp r14, rcx
jb 0x1400ed528
nop dword [rax]
cmp r14, r10
jae 0x1400ed5a7
movzx r11d, word [r15]
cmp r11w, word [r14]
jne 0x1400ed5a7
add r14, 2
add r15, 2
cmp r14, qword [rsp + 0x38]
jae 0x1400ed5c4
movzx r11d, byte [r15]
mov r15, rsi
xor esi, esi
cmp r11b, byte [r14]
sete sil
add r14, rsi
mov rsi, r15
sub r14, rsi
cmp r14, rdx
jbe 0x1400ed4d0
mov edx, dword [rsp + 0x50]
sub edx, r8d
mov r8, qword [rsp + 0x80]
mov qword [r8], rdx
lea r8, [rsi + r14]
mov rdx, r14
cmp r8, qword [rsp + 0x38]
jne 0x1400ed4d0
jmp 0x1400ed5fc
mov r14d, 3
mov rax, qword [rsp + 0x78]
add r13, rax
add ebp, dword [rsp + 0x44]
mov r8, qword [rsp + 0x68]
mov rcx, qword [r8]
mov rdi, qword [r8 + 8]
mov qword [rsp + 0x50], rcx
mov r12d, ecx
sub r12d, edi
sub r12d, eax
mov rax, qword [r8 + 0x70]
mov r9, qword [rsp + 0x60]
lea rcx, [r9*4]
mov edx, dword [rax + r9*4]
prefetcht0 byte [rdi + rdx]
mov rdx, rcx
or rdx, 4
mov edx, dword [rax + rdx]
prefetcht0 byte [rdi + rdx]
or rcx, 8
mov ecx, dword [rax + rcx]
cmp ebp, 3
mov edx, 3
cmovb edx, ebp
prefetcht0 byte [rdi + rcx]
or r9, 3
mov r15d, dword [rax + r9*4]
mov rax, r15
shr rax, 8
mov rcx, qword [r8 + 0x80]
prefetcht0 byte [rcx + rax*4]
test edx, edx
mov qword [rsp + 0x30], r13
je 0x1400ed75f
mov qword [rsp + 0x60], r9
lea rax, [rsi + 4]
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x78], r12
lea eax, [rax + r12 + 3]
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x44], edx
mov r15d, edx
mov r13, r14
jmp 0x1400ed6c9
add rbx, 4
dec r15
je 0x1400ed740
mov rax, qword [r8 + 0x70]
mov r12d, dword [rax + rbx]
test r12, r12
je 0x1400ed738
lea rdx, [rdi + r12]
mov eax, dword [rdx]
cmp eax, dword [rsi]
jne 0x1400ed6c0
add rdx, 4
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x28]
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x50]
call fcn.1400b81d0
mov r8, qword [rsp + 0x68]
mov r14, rax
add r14, 4
cmp r14, r13
jbe 0x1400ed6c0
mov eax, dword [rsp + 0x48]
sub eax, r12d
mov rcx, qword [rsp + 0x80]
mov qword [rcx], rax
lea rax, [rsi + r14]
mov r13, r14
cmp rax, qword [rsp + 0x38]
jne 0x1400ed6c0
jmp 0x1400ed8a1
mov r14, r13
jmp 0x1400ed8a1
mov rax, qword [r8 + 0x70]
mov rcx, qword [rsp + 0x60]
mov r15d, dword [rax + rcx*4]
mov eax, r15d
shr eax, 8
mov r14, r13
mov r12, qword [rsp + 0x78]
mov edx, dword [rsp + 0x44]
movzx ecx, r15b
sub ebp, edx
cmp ebp, ecx
cmovae ebp, ecx
test ebp, ebp
je 0x1400ed8a1
mov rcx, qword [r8 + 0x80]
mov edx, eax
mov r8d, ebp
mov eax, r8d
and eax, 3
cmp ebp, 4
jae 0x1400ed78e
xor r9d, r9d
jmp 0x1400ed7d0
and r8d, 0xfc
lea r10, [rcx + rdx*4]
add r10, 0xc
xor r9d, r9d
mov r11d, dword [r10 + r9*4 - 0xc]
prefetcht0 byte [rdi + r11]
mov r11d, dword [r10 + r9*4 - 8]
prefetcht0 byte [rdi + r11]
mov r11d, dword [r10 + r9*4 - 4]
prefetcht0 byte [rdi + r11]
mov r11d, dword [r10 + r9*4]
prefetcht0 byte [rdi + r11]
add r9, 4
cmp r8, r9
jne 0x1400ed7a0
mov r10, r12
test rax, rax
je 0x1400ed802
add r9, rdx
lea rcx, [rcx + r9*4]
shl rax, 2
xor edx, edx
nop word cs:[rax + rax]
mov r8d, dword [rcx + rdx]
prefetcht0 byte [rdi + r8]
add rdx, 4
cmp rax, rdx
jne 0x1400ed7f0
lea r12, [rsi + 4]
mov rax, qword [rsp + 0x58]
add eax, r10d
add eax, 3
mov dword [rsp + 0x28], eax
shr r15d, 8
mov r13d, dword [rsi]
mov r8, qword [rsp + 0x68]
jmp 0x1400ed837
inc r15
dec ebp
je 0x1400ed8a1
mov rax, qword [r8 + 0x80]
mov ebx, dword [rax + r15*4]
cmp dword [rdi + rbx], r13d
jne 0x1400ed830
lea rdx, [rdi + rbx]
add rdx, 4
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x50]
call fcn.1400b81d0
mov r8, qword [rsp + 0x68]
add rax, 4
cmp rax, r14
jbe 0x1400ed830
mov ecx, dword [rsp + 0x28]
sub ecx, ebx
mov rdx, qword [rsp + 0x80]
mov qword [rdx], rcx
lea rcx, [rsi + rax]
cmp rcx, qword [rsp + 0x38]
je 0x1400ed89e
mov r13d, dword [rsi]
mov r14, rax
jmp 0x1400ed830
mov r14, rax
mov rcx, qword [rsp + 0x190]
xor rcx, rsp
call fcn.14011fde0
mov rax, r14
add rsp, 0x198
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret