Function at 0x140020c74
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x78]
sub rsp, 0x178
mov rax, qword [0x1401652a8]
xor rax, rsp
mov qword [rbp + 0x60], rax
and qword [rsp + 0x4c], 0
lea rdi, [0x140000000]
and dword [rsp + 0x48], 0
mov r15, r8
and dword [rsp + 0x54], 0
mov r12, rdx
cmp dword [rbp + 0xf0], 0
mov r13, rcx
mov qword [rbp - 0x80], r8
mov esi, 0xfffffff
mov qword [rbp - 0x78], rdx
mov qword [rbp - 0x70], rcx
je 0x140020dbd
mov ebx, dword [0x1401652c4]
mov r8d, r13d
mov eax, dword [0x1401652c0]
add rbx, rdi
sub r8d, edi
mov qword [rsp + 0x4c], rbx
xor r10d, r10d
mov dword [rsp + 0x48], eax
lea r11d, [rax - 1]
test r11d, r11d
js 0x140020d2a
lea eax, [r11 + r10]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov eax, dword [rbx + rdx*4]
and eax, esi
cmp r8d, eax
jae 0x140020d1f
lea r11d, [rdx - 1]
jmp 0x140020d25
jbe 0x140020d2d
lea r10d, [rdx + 1]
cmp r11d, r10d
jge 0x140020d03
mov edx, r10d
mov r10, qword [0x1401652d0]
lea eax, [r15 + r8]
mov dword [rsp + 0x54], edx
sub r10, rdi
movups xmm0, xmmword [rsp + 0x48]
mov dword [rsp + 0x58], eax
mov dword [rsp + 0x5c], edx
movsd xmm1, qword [rsp + 0x58]
movaps xmmword [rsp + 0x60], xmm0
mov r11, qword [rsp + 0x64]
movsd qword [rsp + 0x70], xmm1
mov r8d, dword [rsp + 0x74]
cmp r8d, dword [rsp + 0x60]
jae 0x140020dc8
mov eax, r8d
mov eax, dword [r11 + rax*4]
mov ecx, eax
and ecx, esi
cmp ecx, dword [rsp + 0x70]
jae 0x140020dc8
mov ecx, eax
inc r8d
and rcx, rsi
shr eax, 0x1c
add rcx, rdi
mov dword [rsp + 0x74], r8d
mov rdx, r12
sub rdx, r13
add rdx, rcx
test eax, eax
je 0x140020d67
cmp eax, 3
je 0x140020db4
cmp eax, 0xa
jne 0x140020d67
mov rcx, qword [rcx]
add rcx, r10
mov qword [rdx], rcx
jmp 0x140020d67
mov ecx, dword [rcx]
add ecx, r10d
mov dword [rdx], ecx
jmp 0x140020d67
movsd xmm1, qword [rsp + 0x58]
movups xmm0, xmmword [rsp + 0x48]
test r15, r15
je 0x140021168
mov ebx, dword [rbp + 0xe0]
mov eax, r15d
and eax, 7
mov ecx, ebx
mov dword [rsp + 0x20], eax
not ecx
jne 0x140020dff
xor r11d, r11d
mov dword [rsp + 0x3c], ebx
mov dword [rsp + 0x38], ecx
xor r10d, r10d
mov rax, qword [rsp + 0x38]
jmp 0x140020fe5
movzx r14d, r9w
mov rax, r9
shr rax, 0x10
mov r8d, r14d
xor r8d, ebx
movzx esi, ax
imul r8d, esi
mov eax, ebx
shr eax, 0xf
mov rdi, r9
shr rdi, 0x20
movzx r11d, di
mov qword [rbp - 0x40], r9
xor r8d, eax
mov qword [rbp - 0x38], r9
xor r8d, ecx
mov qword [rbp - 0x30], r9
mov edx, r8d
mov qword [rbp - 0x28], r9
mov eax, r8d
mov qword [rbp - 0x20], r9
shr eax, 8
sub edx, r11d
imul edx, r14d
mov qword [rbp - 0x18], r9
mov qword [rbp - 0x10], r9
mov qword [rbp - 8], r9
mov qword [rbp], r9
sub edx, eax
mov qword [rbp + 8], r9
xor edx, ebx
mov qword [rbp + 0x10], r9
mov ecx, edx
mov qword [rbp + 0x18], r9
sub ecx, r9d
mov qword [rbp + 0x20], r9
mov rbx, r9
mov qword [rbp + 0x28], r9
shr rbx, 0x30
sub ecx, ebx
mov qword [rbp + 0x30], r9
xor ecx, r8d
mov qword [rbp + 0x38], r9
mov r8d, ecx
mov qword [rbp + 0x40], r9
xor r8d, r9d
mov qword [rbp + 0x48], r9
ror r8d, 0xb
mov eax, ecx
imul r8d, r11d
ror eax, 0x13
xor r8d, eax
xor r8d, edx
mov eax, r8d
ror eax, 0x11
lea edx, [r8 + rdi]
ror edx, 0x1e
imul edx, esi
sub edx, eax
xor edx, ecx
mov ecx, r14d
mov r10d, edx
ror r10d, 0xc
sub r10d, r14d
imul r10d, ebx
xor r10d, r8d
mov r8d, r9d
sub r8d, r10d
mov eax, r10d
ror r8d, 0xf
ror eax, 2
imul r8d, ebx
sub r8d, eax
xor r8d, edx
xor ecx, r8d
mov eax, r8d
rol ecx, 4
imul ecx, r11d
shr eax, 0xb
add ecx, eax
xor ecx, r10d
mov edx, dword [rsp + 0x20]
xor ebx, ecx
imul ebx, esi
mov r11d, ecx
ror r11d, 0xb
xor eax, eax
mov qword [rbp + 0x50], r9
mov qword [rbp + 0x58], r9
mov qword [rsp + 0x40], rax
add r11d, ebx
mov ebx, edx
xor r11d, r8d
mov r10d, r11d
mov dword [rsp + 0x28], r11d
sub r10d, r14d
xor r10d, edi
xor r10d, ecx
mov rcx, r13
mov dword [rsp + 0x2c], r10d
test rdx, rdx
je 0x140020f75
lea r8, [rsp + 0x40]
sub r8, r13
mov al, byte [rcx]
mov byte [rcx + r8], al
inc rcx
sub rbx, 1
jne 0x140020f57
mov r10d, dword [rsp + 0x2c]
mov r11d, dword [rsp + 0x28]
mov rax, qword [rsp + 0x40]
xor r10d, dword [rsp + 0x44]
lea r8, [rsp + 0x28]
xor r11d, eax
mov dword [rsp + 0x2c], r10d
mov ecx, 8
mov dword [rsp + 0x28], r11d
mov qword [rsp + 0x38], rax
lea r8, [r8 + rdx]
sub rcx, rdx
je 0x140020fb6
mov byte [r8], 0
inc r8
sub rcx, 1
jne 0x140020f9f
mov r10d, dword [rsp + 0x2c]
mov r11d, dword [rsp + 0x28]
lea r8, [rsp + 0x28]
test rdx, rdx
je 0x140020fe5
lea rcx, [rsp + 0x28]
mov r10, r12
sub r10, rcx
mov cl, byte [r8]
mov byte [r8 + r10], cl
inc r8
sub rdx, 1
jne 0x140020fcb
mov r10d, dword [rsp + 0x2c]
mov r11d, dword [rsp + 0x28]
mov rdi, r15
mov rsi, r15
and edi, 7
shr rsi, 3
add rdi, r12
test rsi, rsi
je 0x140021155
mov rcx, r9
movzx r8d, r9w
shr rcx, 0x20
mov r14, r9
mov qword [rsp + 0x40], rcx
mov r15, r9
mov rcx, r13
shr r14, 0x30
mov r13, qword [rsp + 0x40]
shr r15, 0x10
sub rcx, r12
mov dword [rsp + 0x20], r8d
mov r12, rcx
mov rdx, qword [r12 + rdi]
shr rdx, 0x20
xor edx, r10d
movzx ebx, r15w
mov r10d, r8d
mov ecx, edx
xor r10d, edx
shr ecx, 0xf
imul r10d, ebx
xor r10d, ecx
xor r10d, dword [r12 + rdi]
xor r10d, r11d
movzx r11d, r13w
mov r8d, r10d
mov ecx, r10d
sub r8d, r11d
shr ecx, 8
imul r8d, dword [rsp + 0x20]
sub r8d, ecx
xor r8d, edx
mov edx, r8d
sub edx, r9d
sub edx, r14d
xor edx, r10d
mov r10d, r9d
xor r10d, edx
mov ecx, edx
ror r10d, 0xb
imul r10d, r11d
ror ecx, 0x13
xor r10d, ecx
xor r10d, r8d
mov ecx, r10d
ror ecx, 0x11
lea r8d, [r10 + r13]
ror r8d, 0x1e
imul r8d, ebx
sub r8d, ecx
xor r8d, edx
mov edx, r8d
ror edx, 0xc
sub edx, dword [rsp + 0x20]
imul edx, r14d
xor edx, r10d
mov r10d, r9d
sub r10d, edx
mov ecx, edx
ror r10d, 0xf
imul r10d, r14d
ror ecx, 2
sub r10d, ecx
xor r10d, r8d
mov r8d, dword [rsp + 0x20]
xor r8d, r10d
mov ecx, r10d
shr ecx, 0xb
rol r8d, 4
imul r8d, r11d
add r8d, ecx
xor r8d, edx
mov ecx, r8d
mov edx, r8d
ror edx, 0xb
xor ecx, r14d
imul ecx, ebx
add edx, ecx
xor edx, r10d
mov r10, rax
mov rax, qword [r12 + rdi]
mov r11d, edx
xor r11d, dword [rsp + 0x38]
sub edx, dword [rsp + 0x20]
shr r10, 0x20
xor r10d, edx
mov dword [rdi], r11d
xor r10d, r13d
mov qword [rsp + 0x38], rax
xor r10d, r8d
mov dword [rdi + 4], r10d
lea rdi, [rdi + 8]
sub rsi, 1
mov r8d, dword [rsp + 0x20]
jne 0x14002102f
mov r15, qword [rbp - 0x80]
mov r12, qword [rbp - 0x78]
mov r13, qword [rbp - 0x70]
mov r10b, byte [r15 + r12 - 1]
lea rdi, [0x140000000]
mov esi, 0xfffffff
jmp 0x14002116d
mov r10b, byte [rsp + 0x30]
cmp dword [rbp + 0xf0], 0
je 0x1400211e3
mov rax, qword [0x1401652d0]
mov r8, rdi
movaps xmmword [rbp - 0x60], xmm0
sub r8, rax
mov r11, qword [rbp - 0x5c]
movsd qword [rbp - 0x50], xmm1
mov r9d, dword [rbp - 0x4c]
cmp r9d, dword [rbp - 0x60]
jae 0x1400211e3
mov eax, r9d
mov eax, dword [r11 + rax*4]
mov ecx, eax
and ecx, esi
cmp ecx, dword [rbp - 0x50]
jae 0x1400211e3
mov ecx, eax
mov rdx, r12
and rcx, rsi
shr eax, 0x1c
add rcx, rdi
sub rdx, r13
add rdx, rcx
inc r9d
test eax, eax
je 0x140021194
cmp eax, 3
je 0x1400211da
cmp eax, 0xa
jne 0x140021194
mov rcx, qword [rcx]
add rcx, r8
mov qword [rdx], rcx
jmp 0x140021194
mov ecx, dword [rcx]
add ecx, r8d
mov dword [rdx], ecx
jmp 0x140021194
cmp r10b, byte [rbp + 0xe8]
je 0x1400211f1
call fcn.140015f70
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.14003b560
add rsp, 0x178
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret