Function at 0x140096a70
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x168
call fcn.1400cc090
sub rsp, rax
lea rbp, [rsp + 0x50]
and rbp, 0xffffffffffffffe0
mov rax, qword [0x140175060]
xor rax, rsp
mov qword [rbp + 0x100], rax
mov rax, qword [rsp + 0x1d8]
movsxd rdi, dword [rsp + 0x1d0]
mov qword [rbp + 0x38], rcx
lea ecx, [rdi + rdi*2]
mov rbx, rdx
mov qword [rbp + 0x30], rdx
shl ecx, 9
mov qword [rbp + 0x28], r8
xor r14d, r14d
lea rdx, [0x1401657f8]
add ecx, 0x40
mov r8d, 0x250
mov qword [rbp + 0x18], r9
mov qword [rbp + 0x68], rax
mov r15d, r14d
mov r12d, r14d
call fcn.14004d100
mov qword [rbp + 0x60], rax
test rax, rax
je 0x140097271
imul ecx, edi, 0x21
lea rdx, [0x140165818]
mov r8d, 0x252
call fcn.14004d100
mov rsi, rax
mov qword [rbp + 8], rax
test rax, rax
je 0x14009726e
lea ecx, [rdi*8]
lea rdx, [0x140165838]
mov r8d, 0x253
call fcn.14004d100
mov r13, rax
mov qword [rbp + 0x10], rax
test rax, rax
je 0x140097266
mov rcx, qword [rbp + 0x60]
mov qword [rbp + 0x48], r14
mov r12, rdi
mov rax, rcx
mov qword [rbp + 0x50], rdi
and eax, 0x3f
sub rcx, rax
mov eax, r14d
add rcx, 0x40
mov dword [rbp], eax
mov qword [rbp + 0x20], rcx
test edi, edi
jle 0x140096f6b
mov rdi, qword [rbp + 0x28]
mov r12, qword [rbp + 0x18]
mov rbx, r13
sub rdi, r13
sub r12, r13
mov qword [rbp + 0x40], r14
mov qword [rbp + 0x18], r12
mov qword [rbp + 0x58], rbx
mov qword [rbp + 0x28], rdi
nop dword [rax]
cdqe
lea r13, [rax + rax*2]
shl r13, 9
add r13, rcx
mov rcx, qword [rdi + rbx]
call fcn.140074500
cmp eax, 0x100
jg 0x140096bc7
mov rdi, qword [rdi + rbx]
cmp dword [rdi + 0x10], 0
je 0x140096c06
mov r12, qword [rbp + 0x68]
mov rcx, r12
call fcn.140081950
mov rdi, rax
test rax, rax
je 0x140096eef
mov rax, qword [rbp + 0x28]
mov r8, qword [rbp + 0x38]
mov r9, r12
mov rdx, qword [rax + rbx]
add r8, 0x10
mov rcx, rdi
call fcn.140089de0
test eax, eax
je 0x140096f48
mov r12, qword [rbp + 0x18]
mov qword [rbx], rdi
mov eax, dword [rdi + 8]
mov r9d, r14d
shl eax, 3
mov r8, r14
test eax, eax
jle 0x140096ca6
lea rdi, [rsi + r15]
mov eax, r9d
add r9d, 8
add r8, 8
cdq
and edx, 7
add eax, edx
sar eax, 3
movsxd rdx, eax
mov rax, qword [rbx]
mov rcx, qword [rax]
mov rcx, qword [rcx + rdx*8]
mov byte [rdi + r8 - 8], cl
mov rax, rcx
shr rax, 8
mov byte [rdi + r8 - 7], al
mov rax, rcx
shr rcx, 0x18
shr rax, 0x10
mov byte [rdi + r8 - 5], cl
shr rcx, 8
mov byte [rdi + r8 - 6], al
mov byte [rdi + r8 - 4], cl
mov rax, rcx
shr rax, 8
mov byte [rdi + r8 - 3], al
mov rax, rcx
shr rcx, 0x18
mov byte [rdi + r8 - 1], cl
shr rax, 0x10
mov byte [rdi + r8 - 2], al
mov rax, qword [rbx]
mov ecx, dword [rax + 8]
shl ecx, 3
cmp r9d, ecx
jl 0x140096c21
cmp r8, 0x21
jge 0x140096cb9
lea rdi, [r15 + r8]
mov ecx, 0x21
add rdi, rsi
sub rcx, r8
xor eax, eax
rep stosb byte [rdi], al
mov rdx, qword [r12 + rbx]
cmp dword [rdx + 0x10], 4
jg 0x140096ecd
xor eax, eax
mov rcx, r13
mov qword [r13], rax
mov qword [r13 + 8], rax
mov qword [r13 + 0x10], rax
mov qword [r13 + 0x18], rax
movsxd r8, dword [rdx + 0x10]
mov rdx, qword [rdx + 8]
shl r8, 3
call fcn.1400cdc90
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x20]
cmp dword [rdx + 0x28], 4
jg 0x140096ecd
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
movsxd r8, dword [rdx + 0x28]
mov rdx, qword [rdx + 0x20]
shl r8, 3
call fcn.1400cdc90
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x40]
cmp dword [rdx + 0x40], 4
jg 0x140096ecd
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
movsxd r8, dword [rdx + 0x40]
mov rdx, qword [rdx + 0x38]
shl r8, 3
call fcn.1400cdc90
lea rcx, [r13 + 0x60]
mov rdx, r13
call fcn.140046360
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0xc0]
mov r8, r13
call fcn.140046680
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0x120]
call fcn.140046360
lea rdx, [r13 + 0xc0]
lea rcx, [r13 + 0x1e0]
call fcn.140046360
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x2a0]
call fcn.140046360
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x420]
call fcn.140046360
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x180]
mov r8, r13
call fcn.140046680
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x240]
mov r8, r13
call fcn.140046680
lea rcx, [r13 + 0x300]
lea rdx, [r13 + 0x2a0]
mov r8, r13
call fcn.140046680
lea rcx, [r13 + 0x480]
lea rdx, [r13 + 0x420]
mov r8, r13
call fcn.140046680
lea rdx, [r13 + 0x240]
lea rcx, [r13 + 0x4e0]
call fcn.140046360
lea rdx, [r13 + 0x180]
lea rcx, [r13 + 0x360]
call fcn.140046360
lea rdx, [r13 + 0x4e0]
lea rcx, [r13 + 0x540]
mov r8, r13
call fcn.140046680
lea rcx, [r13 + 0x3c0]
lea rdx, [r13 + 0x360]
mov r8, r13
call fcn.140046680
lea rcx, [r13 + 0x5a0]
lea rdx, [r13 + 0x540]
mov r8, r13
call fcn.140046680
mov rcx, qword [rbp + 0x48]
mov eax, dword [rbp]
mov r15, qword [rbp + 0x40]
mov rbx, qword [rbp + 0x58]
mov r12, qword [rbp + 0x50]
inc rcx
inc eax
add r15, 0x21
add rbx, 8
xor r14d, r14d
mov dword [rbp], eax
mov qword [rbp + 0x48], rcx
mov qword [rbp + 0x40], r15
mov qword [rbp + 0x58], rbx
cmp rcx, r12
jge 0x140096f67
mov rsi, qword [rbp + 8]
mov rcx, qword [rbp + 0x20]
mov r12, qword [rbp + 0x18]
mov rdi, qword [rbp + 0x28]
jmp 0x140096ba0
mov edx, 0xf2
mov dword [rsp + 0x20], 0x285
lea r9, [0x140165898]
lea r8d, [rdx - 0x60]
mov ecx, 0x10
call fcn.14004b7a0
mov r15, qword [rbp + 8]
mov r12, qword [rbp + 0x10]
mov rax, qword [rbp + 0x60]
test rax, rax
je 0x140096f08
mov rcx, rax
call fcn.14004d060
test r15, r15
je 0x140096f15
mov rcx, r15
call fcn.14004d060
test r12, r12
je 0x140096f22
mov rcx, r12
call fcn.14004d060
mov eax, r14d
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.1400cbcb0
add rsp, 0x168
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ecx, 0x10
mov dword [rsp + 0x20], 0x264
lea r9, [0x140165878]
lea r8d, [rcx - 0xd]
mov edx, 0xf2
jmp 0x140096eea
mov rbx, qword [rbp + 0x30]
mov r15, qword [rbp + 8]
mov eax, 0x3f
mov esi, 0xff
movzx edx, byte [r15 + 0x1f]
mov dword [rbp], esi
shr edx, 6
and edx, 0x3f
sub eax, edx
mov ecx, edx
shr ecx, 5
dec ecx
not ecx
and eax, ecx
not ecx
and ecx, edx
mov rdx, qword [rbp + 0x20]
or eax, ecx
mov rcx, rbx
mov r8d, eax
and eax, 1
shr r8d, 1
add r8d, eax
btr r8d, 0x1f
call fcn.140045c80
nop word [rax + rax]
cmp esi, 0xff
mov r15d, r14d
sete r15b
movsxd rdx, r15d
cmp rdx, r12
jge 0x140097114
mov r14, qword [rbp + 8]
lea ecx, [rsi - 1]
imul rsi, rdx, 0x21
mov r13d, ecx
shr ecx, 3
lea eax, [rcx + 1]
and r13d, 7
mov qword [rbp + 0x38], rcx
mov qword [rbp + 0x30], rax
sub r12, rdx
nop dword [rax]
add rax, rsi
movzx edx, byte [rax + r14]
lea rax, [rcx + rsi]
movzx ecx, byte [rax + r14]
shl edx, 8
or edx, ecx
mov ecx, r13d
shr edx, cl
mov ecx, 0x3f
and edx, 0x3f
sub ecx, edx
mov edi, edx
shr edi, 5
dec edi
not edi
and ecx, edi
mov eax, edi
and edi, 1
not eax
and eax, edx
or ecx, eax
mov eax, ecx
and ecx, 1
shr eax, 1
add eax, ecx
lea rcx, [rbp + 0x80]
lea edi, [rdi + rax*2]
movsxd rax, r15d
lea rdx, [rax + rax*2]
mov r8d, edi
shl rdx, 9
shr r8d, 1
add rdx, qword [rbp + 0x20]
call fcn.140045c80
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140045100
mov eax, edi
lea r8, [rbp + 0x80]
movdqu xmm0, xmmword [rbp + 0xa0]
movdqu xmm1, xmmword [rbp + 0xe0]
movdqu xmm2, xmmword [rbp + 0xf0]
and eax, 1
mov rdx, rbx
mov rcx, rbx
neg rax
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm1, xmm4
pand xmm2, xmm4
pand xmm0, xmm3
pxor xmm1, xmm0
movdqu xmm0, xmmword [rbp + 0xb0]
movdqu xmmword [rbp + 0xa0], xmm1
pand xmm0, xmm3
pxor xmm2, xmm0
movdqu xmmword [rbp + 0xb0], xmm2
call fcn.140046680
mov rax, qword [rbp + 0x30]
mov rcx, qword [rbp + 0x38]
inc r15d
add rsi, 0x21
dec r12
jne 0x140097000
mov esi, dword [rbp]
mov r12, qword [rbp + 0x50]
xor r14d, r14d
add esi, 0xfffffffb
mov rdx, rbx
mov rcx, rbx
mov dword [rbp], esi
call fcn.140046360
mov rdx, rbx
mov rcx, rbx
call fcn.140046360
mov rdx, rbx
mov rcx, rbx
call fcn.140046360
mov rdx, rbx
mov rcx, rbx
call fcn.140046360
mov rdx, rbx
mov rcx, rbx
call fcn.140046360
cmp esi, 5
jae 0x140096fc0
mov r15, qword [rbp + 8]
test r12, r12
jle 0x14009725b
mov r13, qword [rbp + 0x20]
mov rsi, r15
nop
movzx edx, byte [rsi]
mov ecx, 0x3f
and edx, 0x1f
add edx, edx
sub ecx, edx
mov edi, edx
shr edi, 5
dec edi
not edi
and ecx, edi
mov eax, edi
and edi, 1
not eax
and eax, edx
or ecx, eax
mov eax, ecx
and ecx, 1
shr eax, 1
add eax, ecx
lea rcx, [rbp + 0x80]
lea edi, [rdi + rax*2]
movsxd rax, r14d
lea rdx, [rax + rax*2]
mov r8d, edi
shl rdx, 9
shr r8d, 1
add rdx, r13
call fcn.140045c80
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140045100
mov eax, edi
lea r8, [rbp + 0x80]
movdqu xmm0, xmmword [rbp + 0xa0]
movdqu xmm1, xmmword [rbp + 0xe0]
movdqu xmm2, xmmword [rbp + 0xf0]
and eax, 1
mov rdx, rbx
mov rcx, rbx
neg rax
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm1, xmm4
pand xmm2, xmm4
pand xmm0, xmm3
pxor xmm1, xmm0
movdqu xmm0, xmmword [rbp + 0xb0]
movdqu xmmword [rbp + 0xa0], xmm1
pand xmm0, xmm3
pxor xmm2, xmm0
movdqu xmmword [rbp + 0xb0], xmm2
call fcn.140046680
inc r14d
lea rsi, [rsi + 0x21]
dec r12
jne 0x140097170
mov r14d, 1
jmp 0x140096ef3
mov r15, rsi
mov r12, rax
jmp 0x140097271
mov r15, rax
mov ecx, 0x10
lea r9, [0x140165858]
mov edx, 0xf2
lea r8d, [rcx + 0x31]
mov dword [rsp + 0x20], 0x254
call fcn.14004b7a0
jmp 0x140096ef7