Function at 0x140088190
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x148
mov edi, 1
mov r12d, dword [rsp + 0x1b0]
mov qword [rsp + 0x190], rcx
mov ecx, r12d
mov esi, edx
mov rbx, r8
mov rax, qword [rsp + 0x190]
mov ebp, r9d
shl edi, cl
cmp dword [rax + 0xc], edx
jl 0x140088870
cmp r12d, 3
jle 0x1400887f0
lea r15d, [r12 - 2]
mov edx, 1
mov ecx, r15d
shl edx, cl
lea eax, [rdx - 1]
and eax, ebp
sar ebp, cl
mov r11d, ebp
lea ecx, [rbp - 1]
mov r8d, ebp
mov r10d, ebp
not r11d
xor r8d, 1
mov r9d, ebp
xor r10d, 3
and r11d, ecx
mov ecx, ebp
sub r8d, 1
sub r10d, 1
xor ecx, 0xfffffffe
xor r9d, 2
shr r11d, 0x1f
and r8d, ecx
mov ecx, ebp
xor ebp, 0xfffffffc
sub r9d, 1
and ebp, r10d
xor ecx, 0xfffffffd
shr r8d, 0x1f
neg r11
and r9d, ecx
shr ebp, 0x1f
neg r8
shr r9d, 0x1f
mov r10d, ebp
neg r9
neg r10
test esi, esi
jle 0x1400887c8
movsxd rdi, edi
mov ecx, r15d
mov r12d, 2
mov r13d, eax
shl rdi, 3
shl r12d, cl
mov ebp, 3
not r13d
mov r14, qword [rsp + 0x190]
mov qword [rsp + 0x28], rdi
lea edi, [rsi - 1]
shl ebp, cl
mov ecx, ebp
mov r14, qword [r14]
lea rdi, [r14 + rdi*8 + 8]
mov qword [rsp + 0x138], r14
mov rbp, r14
mov qword [rsp + 0xb0], rdi
movsxd rdi, edx
shl rdi, 3
mov qword [rsp + 0x70], rdi
movsxd rdi, r12d
shl rdi, 3
mov qword [rsp + 0x68], rdi
movsxd rdi, ecx
shl rdi, 3
mov qword [rsp + 0x50], rdi
lea edi, [rax - 1]
and edi, r13d
mov r13d, eax
shr edi, 0x1f
xor r13d, 0xfffffffe
neg rdi
mov qword [rsp + 0x48], rdi
lea edi, [rdx + 1]
shl rdi, 3
mov qword [rsp + 0x40], rdi
lea edi, [r12 + 1]
shl rdi, 3
mov qword [rsp + 0x38], rdi
lea edi, [rcx + 1]
shl rdi, 3
mov qword [rsp + 0x30], rdi
mov edi, eax
xor edi, 1
sub edi, 1
and edi, r13d
mov r13d, eax
shr edi, 0x1f
xor r13d, 0xfffffffd
neg rdi
mov qword [rsp + 0x78], rdi
lea edi, [rdx + 2]
shl rdi, 3
mov qword [rsp + 0x58], rdi
lea edi, [r12 + 2]
shl rdi, 3
mov qword [rsp + 0x60], rdi
lea edi, [rcx + 2]
shl rdi, 3
mov qword [rsp + 0x80], rdi
mov edi, eax
xor edi, 2
sub edi, 1
and edi, r13d
mov r13d, eax
shr edi, 0x1f
neg rdi
mov qword [rsp + 0x88], rdi
lea edi, [rdx + 3]
shl rdi, 3
mov qword [rsp + 0x90], rdi
lea edi, [r12 + 3]
shl rdi, 3
mov qword [rsp + 0x98], rdi
lea edi, [rcx + 3]
shl rdi, 3
mov qword [rsp + 0xa0], rdi
mov edi, eax
xor edi, 3
sub edi, 1
xor r13d, 0xfffffffc
and edi, r13d
mov r13d, eax
shr edi, 0x1f
xor r13d, 0xfffffffb
neg rdi
mov qword [rsp + 0xa8], rdi
lea edi, [rdx + 4]
shl rdi, 3
mov qword [rsp + 0xb8], rdi
lea edi, [r12 + 4]
shl rdi, 3
mov qword [rsp + 0xc0], rdi
lea edi, [rcx + 4]
shl rdi, 3
mov qword [rsp + 0xc8], rdi
mov edi, eax
xor edi, 4
sub edi, 1
and edi, r13d
mov r13d, eax
shr edi, 0x1f
xor r13d, 0xfffffffa
neg rdi
mov qword [rsp + 0xd0], rdi
lea edi, [rdx + 5]
shl rdi, 3
mov qword [rsp + 0xd8], rdi
lea edi, [r12 + 5]
shl rdi, 3
mov qword [rsp + 0xe0], rdi
lea edi, [rcx + 5]
shl rdi, 3
mov qword [rsp + 0xe8], rdi
mov edi, eax
xor edi, 5
sub edi, 1
and edi, r13d
mov r13d, eax
shr edi, 0x1f
xor r13d, 0xfffffff9
neg rdi
mov qword [rsp + 0xf0], rdi
lea edi, [rdx + 6]
add edx, 7
shl rdi, 3
mov qword [rsp + 0xf8], rdi
lea edi, [r12 + 6]
shl rdi, 3
mov qword [rsp + 0x100], rdi
lea edi, [rcx + 6]
shl rdi, 3
mov qword [rsp + 0x108], rdi
mov edi, eax
xor edi, 6
sub edi, 1
and edi, r13d
shr edi, 0x1f
neg rdi
shl rdx, 3
mov qword [rsp + 0x110], rdi
mov qword [rsp + 0x118], rdx
lea edx, [r12 + 7]
shl rdx, 3
mov dword [rsp + 0x198], esi
mov qword [rsp + 0x120], rdx
lea edx, [rcx + 7]
lea rcx, [rdx*8]
mov edx, eax
xor eax, 0xfffffff8
xor edx, 7
mov qword [rsp + 0x128], rcx
sub edx, 1
and eax, edx
shr eax, 0x1f
neg rax
mov qword [rsp + 0x130], rax
nop
mov rsi, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x68]
mov rax, qword [rbx]
lea rdx, [rsi + rbx]
mov rsi, qword [rdx]
lea rdx, [rdi + rbx]
mov rdi, qword [rsp + 0x50]
and rax, r11
mov r14, qword [rdx]
lea rdx, [rdi + rbx]
mov rdi, qword [rsp + 0x40]
and rsi, r8
mov r13, qword [rdx]
mov rcx, qword [rbx + 8]
and r14, r9
lea rdx, [rdi + rbx]
mov rdi, qword [rsp + 0x38]
or rsi, r14
mov r12, qword [rdx]
and rcx, r11
or rsi, rax
and r13, r10
lea rdx, [rdi + rbx]
mov rdi, qword [rsp + 0x30]
or rsi, r13
and rsi, qword [rsp + 0x48]
mov rdx, qword [rdx]
and r12, r8
mov rax, qword [rsp + 0x58]
add rdi, rbx
or r12, rcx
mov rdi, qword [rdi]
and rdx, r9
add rax, rbx
mov rcx, qword [rbx + 0x10]
or r12, rdx
mov rax, qword [rax]
and rdi, r10
and rcx, r11
or r12, rdi
and r12, qword [rsp + 0x78]
and rax, r8
mov r13, r12
or rcx, rax
mov rax, qword [rsp + 0x88]
or r13, rsi
mov rsi, qword [rsp + 0x60]
lea rdx, [rsi + rbx]
mov rsi, qword [rsp + 0x80]
mov rdx, qword [rdx]
add rsi, rbx
mov rdi, qword [rsi]
and rdx, r9
or rcx, rdx
and rdi, r10
or rcx, rdi
mov rdi, qword [rsp + 0x98]
and rax, rcx
mov rcx, qword [rsp + 0x90]
or rax, r13
lea rdx, [rbx + rcx]
mov rsi, rax
mov rax, qword [rbx + 0x18]
mov rcx, qword [rdx]
lea rdx, [rbx + rdi]
mov rdi, qword [rsp + 0xa0]
mov rdx, qword [rdx]
and rax, r11
add rdi, rbx
and rcx, r8
mov rdi, qword [rdi]
or rcx, rax
and rdx, r9
mov rax, qword [rsp + 0xa8]
or rcx, rdx
and rdi, r10
or rcx, rdi
and rax, rcx
or rax, rsi
cmp r15d, 2
je 0x140088780
mov rsi, qword [rsp + 0xb8]
mov rdi, qword [rsp + 0xc0]
mov rcx, qword [rbx + 0x20]
lea rdx, [rbx + rsi]
mov rsi, qword [rdx]
lea rdx, [rbx + rdi]
mov rdi, qword [rsp + 0xc8]
and rcx, r11
mov rdx, qword [rdx]
add rdi, rbx
and rsi, r8
mov rdi, qword [rdi]
or rsi, rcx
and rdx, r9
mov rcx, qword [rbx + 0x28]
or rsi, rdx
and rdi, r10
and rcx, r11
or rsi, rdi
and rsi, qword [rsp + 0xd0]
mov rdi, qword [rsp + 0xe0]
or rax, rsi
mov rsi, qword [rsp + 0xd8]
lea rdx, [rbx + rsi]
mov rsi, qword [rdx]
lea rdx, [rbx + rdi]
mov rdi, qword [rsp + 0xe8]
mov rdx, qword [rdx]
add rdi, rbx
and rsi, r8
mov rdi, qword [rdi]
or rsi, rcx
and rdx, r9
or rsi, rdx
and rdi, r10
or rsi, rdi
and rsi, qword [rsp + 0xf0]
mov rdi, qword [rsp + 0x100]
mov rcx, rsi
mov rsi, qword [rsp + 0xf8]
or rcx, rax
mov rax, qword [rbx + 0x30]
lea rdx, [rbx + rsi]
mov rsi, qword [rdx]
lea rdx, [rbx + rdi]
mov rdi, qword [rsp + 0x108]
and rax, r11
mov rdx, qword [rdx]
add rdi, rbx
and rsi, r8
mov rdi, qword [rdi]
or rsi, rax
and rdx, r9
mov rax, qword [rsp + 0x110]
or rsi, rdx
and rdi, r10
or rsi, rdi
and rax, rsi
or rax, rcx
cmp r15d, 3
jne 0x140088780
mov rsi, qword [rsp + 0x118]
mov rdi, qword [rbx + 0x38]
lea rdx, [rsi + rbx]
mov rsi, qword [rsp + 0x120]
and rdi, r11
mov rcx, qword [rdx]
lea rdx, [rsi + rbx]
mov rsi, qword [rsp + 0x128]
mov rdx, qword [rdx]
and rcx, r8
add rsi, rbx
or rcx, rdi
mov rsi, qword [rsi]
and rdx, r9
or rcx, rdx
and rsi, r10
or rcx, rsi
and rcx, qword [rsp + 0x130]
or rax, rcx
mov qword [rbp], rax
add rbx, qword [rsp + 0x28]
add rbp, 8
cmp rbp, qword [rsp + 0xb0]
jne 0x140088500
mov esi, dword [rsp + 0x198]
mov rbx, qword [rsp + 0x138]
movsxd rax, esi
lea rax, [rbx + rax*8 - 8]
nop word [rax + rax]
sub rax, 8
cmp qword [rax + 8], 0
jne 0x1400887c8
sub esi, 1
jne 0x1400887b8
mov rax, qword [rsp + 0x190]
mov dword [rax + 8], esi
mov eax, 1
add rsp, 0x148
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test esi, esi
jle 0x1400887c8
mov rax, qword [rsp + 0x190]
movsxd r10, edi
shl r10, 3
mov rax, qword [rax]
mov rcx, rax
mov qword [rsp + 0x138], rax
mov r9, rax
lea eax, [rsi - 1]
lea r11, [rcx + rax*8 + 8]
nop dword [rax]
mov rcx, rbx
xor r8d, r8d
xor edx, edx
nop dword [rax + rax]
mov r13d, edx
mov r12, qword [rcx]
add edx, 1
add rcx, 8
xor r13d, ebp
lea eax, [r13 - 1]
not r13d
and eax, r13d
shr eax, 0x1f
neg rax
and rax, r12
or r8, rax
cmp edi, edx
jne 0x140088830
mov qword [r9], r8
add r9, 8
add rbx, r10
cmp r9, r11
jne 0x140088820
jmp 0x1400887a2
mov rcx, rax
call fcn.14008b5a0
mov r8, rax
xor eax, eax
test r8, r8
je 0x1400887d8
jmp 0x1400881d6