Function at 0x20197620
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xf8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x70], 0xfffffffffffffffe
mov rbx, rdx
mov rsi, rcx
call fcn.2019a920
mov edi, eax
movzx edx, byte [0x20401848]
mov rcx, qword [0x203cd090]
mov eax, dword [0x203cd05c]
mov dword [rbp + 0x68], edx
or eax, edx
mov edx, 0x82a9
sub edx, edi
mov dword [rbp + 0x64], edx
sub eax, edx
cdqe
add rax, rcx
call qword [case.0x200b73a7.0]
mov r12d, eax
mov r13, r12
shl r13, 0x23
or r13, r12
movabs r15, 0xe7d83c10bcfb079a
xor r15, r13
mov r8, qword [rbx + r15]
test r8, r8
je 0x201977f8
mov qword [rbp + 0x48], rdi
mov dword [rbp + 0x6c], eax
movabs rcx, 0xf9d210e8722c47f4
xor rcx, r13
mov rdi, r12
shl rdi, 0x20
or rdi, r12
movabs rdx, 0x389094d521f17ee3
xor rdx, rdi
add rdx, rcx
mov rax, r12
shl rax, 0x1e
xor rax, r12
movabs rcx, 0x54aaad485e0e811c
xor rcx, rax
add rcx, rdx
movabs rdx, 0xcecb12e70dd3b80b
mov qword [rbp + 0x40], rax
xor rdx, rax
lea r14, [rdx + r8*2]
add r14, rcx
xorps xmm0, xmm0
movaps xmmword [rbp], xmm0
mov qword [rbp + 0x10], 0
add r14, 4
mov qword [rbp + 0x58], rsi
je 0x201978a1
test byte [0x20401848], 1
jne 0x201978a1
test r14, r14
js 0x20198267
mov rcx, r12
shl rcx, 0x1f
movabs rdx, 0x5e7d83c1bcfb087d
xor rdx, r12
xor rdx, rcx
cmp r14, rdx
jbe 0x2019785f
add r8, r8
movabs rcx, 0xbcfb0782bcfb07ab
xor rcx, rdi
add rcx, r8
mov rdx, qword [0x203cd0a8]
mov eax, dword [0x203cd06c]
xor eax, dword [rbp + 0x68]
sub eax, dword [rbp + 0x64]
cdqe
add rax, rdx
call qword [case.0x200b73a7.0]
mov rcx, r12
shl rcx, 0x1d
movabs rdx, 0xf6481f4ff4a9a554
xor rdx, r12
xor rdx, rcx
mov rcx, r12
shl rcx, 0x1b
movabs r8, 0x5e7d83cacfb07a5
xor r8, r12
xor r8, rcx
add r8, rdx
add r8, rax
not r8
add r8, rdx
movabs rdx, 0x4304f87d4304f862
xor rdx, rdi
xor rdx, r8
mov r8, r12
shl r8, 0x22
or r8, r12
movabs rcx, 0xc13e1f74304f862
xor rcx, r8
and rcx, rdx
mov qword [rcx - 8], rax
jmp 0x20197883
mov rdx, r12
shl rdx, 0x1c
xor rdx, r12
movabs rax, 0xbcfb0789cfb078a
xor rax, rdx
mov r8, r12
shl r8, 0x1b
xor r8, r12
movabs rcx, 0x5e7d83cacfb079a
xor rcx, r8
movabs r9, 0xbcfb0789cfb07a2
xor r9, rdx
movabs rdx, 0x5e7d83cacfb078d
xor rdx, r8
cmp qword [rsi + r9], rdx
jbe 0x2019784c
mov rax, qword [rsi + rax]
jmp 0x2019784f
add rax, rsi
mov qword [rsi + rcx], 0
mov byte [rax], 0
jmp 0x20198250
mov rcx, qword [0x203cd0a8]
mov eax, dword [0x203cd06c]
xor eax, dword [rbp + 0x68]
sub eax, dword [rbp + 0x64]
cdqe
add rax, rcx
mov rcx, r14
call qword [case.0x200b73a7.0]
mov rcx, rax
mov qword [rbp], rcx
lea rsi, [rcx + r14]
mov qword [rbp + 0x10], rsi
xor edx, edx
mov r8, r14
call fcn.202d57b0
mov qword [rbp + 8], rsi
mov rsi, qword [rbp + 0x58]
movabs r8, 0xe7d83c10bcfb078a
xor r8, r13
add r8, rbx
mov rax, qword [rbp]
mov r9d, dword [rbx + r15]
mov rcx, r12
shl rcx, 0x1b
xor rcx, r12
movabs rdx, 0x5e7d83cacfb07a2
mov qword [rbp + 0x20], rcx
xor rdx, rcx
movabs rcx, 0x2f3ec1e03cfb0785
xor rcx, qword [rbp + 0x40]
mov qword [rbp - 0x38], rdx
cmp qword [rbx + rdx], rcx
jbe 0x201978ef
mov r8, qword [r8]
mov edx, dword [rbp + 0x6c]
xor edx, 0xbcfb0582
xorps xmm0, xmm0
movups xmmword [rsp + 0x30], xmm0
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
xor ecx, ecx
call fcn.20179220
mov r8d, dword [rbp + 0x68]
neg r8d
mov rcx, qword [rbp + 0x48]
add ecx, 0xffff7d57
mov qword [rbp + 0x48], rcx
inc eax
cmp eax, 1
mov dword [rbp + 0x3c], r8d
ja 0x201979d6
mov r14, qword [rbx + r15]
mov rcx, r12
shl rcx, 0x1f
xor rcx, r12
movabs rax, 0x5e7d83c1bcfb078a
xor rax, rcx
mov rdx, rdi
lea rdi, [rax + rbp]
add rdi, 0xffffffffffffffd0
movabs r15, 0xbcfb0782bcfb079a
mov qword [rbp + 0x50], rdx
xor r15, rdx
movabs rbx, 0x5e7d83c1bcfb07a2
mov qword [rbp - 8], rcx
xor rbx, rcx
mov qword [rbp + r15 - 0x30], 0
mov rdx, r12
shl rdx, 0x24
or rdx, r12
movabs rcx, 0xcfb07820bcfb078d
mov qword [rbp + 0x30], rdx
xor rcx, rdx
mov qword [rbp + rbx - 0x30], rcx
mov byte [rbp + rax - 0x30], 0
cmp r14, rcx
mov qword [rbp + 0x28], rdi
jbe 0x20197a52
mov eax, dword [rbp + 0x6c]
mov r9d, eax
xor r9b, 0xbd
mov rcx, rdi
mov rdx, r14
call fcn.200a4a20
mov rdi, qword [rbp + 0x50]
jmp 0x20197a6d
mov r14, qword [rbp]
movabs rbx, 0x2f3ec1e03cfb078a
xor rbx, qword [rbp + 0x40]
add rbx, rsi
movabs rax, 0xe7d83c10bcfb07a2
xor rax, r13
mov rsi, qword [rsi + rax]
test r14, r14
je 0x20197afa
mov edx, dword [rbp + 0x6c]
xor edx, 0xd4e87ca8
mov rcx, qword [0x203cd078]
mov eax, dword [0x203cd058]
or eax, dword [rbp + 0x68]
sub eax, dword [rbp + 0x64]
cdqe
add rax, rcx
mov rcx, r14
call qword [case.0x200b73a7.0]
mov r15, rax
cmp rsi, rax
jae 0x20197b44
mov rcx, rbx
mov rdx, r15
mov r9, r14
call fcn.2006f780
mov rsi, qword [rbp + 0x58]
jmp 0x201980a4
mov qword [rbp + r15 - 0x30], r14
mov rcx, rdi
mov dl, 0x3f
mov r8, r14
call fcn.202d57b0
mov byte [rdi + r14], 0
mov rdi, qword [rbp + 0x50]
lea rax, [0x202f2f78]
mov qword [rbp - 0x30], rax
lea rax, [rbp - 0x30]
cmp rax, rsi
je 0x20197c1a
mov r15, qword [rbp + r15 - 0x30]
movabs r14, 0xcfb07820bcfb078a
mov rcx, qword [rbp + 0x30]
xor r14, rcx
add r14, rsi
test r15, r15
je 0x20197b90
mov rcx, r12
shl rcx, 0x21
or rcx, r12
movabs rax, 0x79f60f04bcfb078d
xor rax, rcx
mov r9, qword [rbp + 0x28]
cmp qword [rbp + rbx - 0x30], rax
jbe 0x20197ad0
mov rdx, qword [rbp + 0x28]
mov r9, qword [rdx]
movabs rdx, 0x79f60f04bcfb07a2
xor rcx, rdx
mov rcx, qword [rsi + rcx]
cmp rcx, r15
jae 0x20197beb
mov rcx, r14
mov rdx, r15
call fcn.2006f780
jmp 0x20197c1a
mov rcx, r12
shl rcx, 0x21
or rcx, r12
movabs rax, 0x79f60f04bcfb079a
xor rax, rcx
mov rcx, r12
shl rcx, 0x24
or rcx, r12
movabs rdx, 0xcfb07820bcfb078d
xor rdx, rcx
cmp rsi, rdx
jbe 0x20197b30
mov rbx, qword [rbx]
mov rsi, qword [rbp + 0x58]
mov qword [rsi + rax], 0
mov byte [rbx], 0
jmp 0x201980a4
mov rax, r12
shl rax, 0x22
or rax, r12
movabs rcx, 0xf3ec1e08bcfb078d
xor rcx, rax
cmp rsi, rcx
jbe 0x20197b63
mov rbx, qword [rbx]
mov rsi, qword [rbp + 0x58]
movabs rax, 0xbcfb0782bcfb079a
xor rax, rdi
mov qword [rsi + rax], r15
mov rcx, rbx
mov rdx, r14
mov r8, r15
call fcn.202d5100
mov byte [rbx + r15], 0
jmp 0x201980a4
movabs rax, 0xcfb07820bcfb079a
xor rax, rcx
mov rcx, r12
shl rcx, 0x1c
movabs rdx, 0xbcfb0789cfb07a2
xor rdx, r12
xor rdx, rcx
mov rcx, r12
shl rcx, 0x22
or rcx, r12
movabs r8, 0xf3ec1e08bcfb078d
xor r8, rcx
cmp qword [rsi + rdx], r8
mov rcx, qword [r14]
cmova r14, rcx
cmp byte [0x20401800], 0
cmovne r14, rcx
mov qword [rsi + rax], 0
jmp 0x20197c16
cmp rcx, rax
jbe 0x20197bf3
mov r14, qword [r14]
movabs rax, 0x5e7d83cacfb079a
xor rax, qword [rbp + 0x20]
mov qword [rsi + rax], r15
mov rcx, r14
mov rdx, r9
mov r8, r15
call fcn.202d5100
add r14, r15
mov byte [r14], 0
mov rax, qword [0x20401ab8]
add rax, qword [rbp + rbx - 0x30]
mov r8, r12
shl r8, 0x22
or r8, r12
movabs rdx, 0xf3ec1e08bcfb078d
xor rdx, r8
mov ecx, dword [rbp + 0x6c]
xor ecx, 0xc911cd0d
cmp dword [0x203ccfc8], ecx
mov rcx, qword [0x203ccfc0]
jne 0x20197dd2
movabs r9, 0x21827c3e4304f87a
mov rsi, qword [rbp - 8]
xor r9, rsi
movsxd r9, dword [rcx + r9*4]
movabs r11, 0xe98083eab38d0f82
xor r11, rsi
add r11, r9
mov r9, r11
shl r9, cl
mov r10, r9
sub r10, r11
imul r10, r9
movabs rcx, 0x2a810417b8a62fe1
xor rcx, rsi
movabs rsi, 0x160f5e2e625d5675
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x30]
xor rsi, rax
add rsi, rcx
mov rcx, r12
shl rcx, 0x21
or rcx, r12
movabs rbx, 0xf2f5772d4759d01e
xor rbx, rcx
mov r11, r12
shl r11, 0x1d
xor r11, r12
movabs r14, 0x4b2424feafc53629
xor r14, r11
add r14, rbx
add r14, rsi
movabs rsi, 0x23a701cd8da2a98a
mov r15, qword [rbp + 0x20]
xor rsi, r15
movabs rbx, 0xa6a363cd003ac9d6
xor rbx, r15
add rbx, rsi
add rbx, r14
lea r9, [rbx + r9*2]
lea rsi, [r9 + r10]
add r10, r9
add r10, 3
movabs r9, 0xf4f9f8564c72f07d
xor r9, rdi
add rsi, r9
add rsi, 4
movabs r9, 0xa06260dbf38d0f82
xor r9, r11
imul r9, rsi
movabs rsi, 0xca64e8a4e9098276
xor rsi, r15
movabs rbx, 0x27e3af9746f67d89
xor rbx, r11
add rbx, rsi
mov dword [0x203ccfc8], 0x93bdf293
movabs r11, 0x2ceb13e8ddb92799
xor r11, qword [rbp + 0x40]
movabs rsi, 0x85dc22f3a246d866
xor rsi, rcx
mov rcx, r12
shl rcx, 0x1c
movabs r14, 0xa5053076b75f923a
xor r14, r12
xor r14, rcx
sub r11, r14
add r11, rbx
add r11, rsi
mov rsi, qword [rbp + 0x58]
add r11, r10
add r11, r9
add r9, r9
sub r11, r9
add r11, 2
movabs rcx, 0x617af82e975f923a
xor rcx, rax
mov rax, qword [rbp + 0x50]
xor rcx, r11
and r11, r14
lea r10, [rcx + r11*2]
jmp 0x20197e05
movsxd r9, dword [rcx]
mov r10, r12
shl r10, 0x21
or r10, r12
movabs r11, 0xce0b0f2fb38d0f82
xor r11, r10
movabs r10, 0xbbeee1dc4c72f07d
xor r10, r8
add r10, r11
add r10, rcx
add r10, r9
inc r10
mov rcx, qword [rbp + 0x28]
mov r11d, dword [0x202fd30c]
cmp rax, rdx
jbe 0x201980a4
mov r9, qword [rcx]
lea rdx, [rax + 1]
movabs rcx, 0xf3ec1e08bcfb087d
xor rcx, r8
cmp rdx, rcx
jbe 0x20198078
mov edx, dword [0x203ccfa0]
mov ecx, dword [rbp + 0x6c]
cmp dword [0x203ccfcc], ecx
jne 0x20197e67
lea esi, [rdx + 1]
mov ecx, 0xfffffffe
sub ecx, edx
mov ebx, esi
xor ebx, ecx
mov r14d, ebx
and r14d, edx
xor r14d, ebx
and ecx, edx
or ecx, r14d
not ecx
jmp 0x20197e95
xor ecx, 0xae002db7
mov esi, edx
sub esi, ecx
lea ebx, [rsi + rsi]
and ebx, 2
mov r14d, esi
xor r14d, ebx
xor r14d, 1
and ebx, esi
lea esi, [r14 + rbx*2]
shl esi, cl
mov ecx, esi
sub ecx, edx
shl edx, cl
shl edx, cl
and edx, ecx
mov ecx, edx
mov dword [0x203ccfa0], esi
xor edx, edx
test ecx, ecx
mov qword [rbp + 0x50], rax
jne 0x20197f4c
test r11d, r11d
jle 0x20197f4c
mov edx, dword [rbp + 0x6c]
xor edx, 0xb9de5fd
movabs r14, 0xcfb07820bcfb0785
xor r14, qword [rbp + 0x30]
xor r15d, r15d
cmp dword [0x203ccfd4], edx
cmovne r14, r15
mov ebx, r11d
and ebx, 7
cmp r11d, 8
jae 0x20197ee6
xor edx, edx
jmp 0x20197f30
and r11d, 0xfffffff8
lea rsi, [r14 + r10]
add rsi, 7
xor r15d, r15d
xor edx, edx
nop word [rax + rax]
xor dl, byte [rsi + r15 - 7]
xor dl, byte [rsi + r15 - 6]
xor dl, byte [rsi + r15 - 5]
xor dl, byte [rsi + r15 - 4]
xor dl, byte [rsi + r15 - 3]
xor dl, byte [rsi + r15 - 2]
xor dl, byte [rsi + r15 - 1]
xor dl, byte [rsi + r15]
add r15, 8
cmp r11, r15
jne 0x20197f00
test rbx, rbx
je 0x20197f4c
add r14, r15
add r10, r14
xor r11d, r11d
nop
xor dl, byte [r10 + r11]
inc r11
cmp rbx, r11
jne 0x20197f40
mov r10, r12
shl r10, 0x21
or r10, r12
movabs r11, 0x83e1f6c18bd05b91
xor r11, r10
movabs rsi, 0xa1827c3e4304f87a
mov r15, qword [rbp - 8]
xor rsi, r15
movabs rbx, 0xfde06642fa46e
xor rbx, qword [rbp + 0x20]
add rbx, rsi
movabs rsi, 0xb101bc63366ad66c
xor rsi, rdi
movabs r14, 0xc693a5ddec6fbb0
xor r14, r13
add r14, rbx
add r14, rsi
movabs rsi, 0x6db8f6b62139044f
xor rsi, r10
add rsi, r11
mov r10, r12
shl r10, 0x1c
xor r10, r12
movabs r11, 0xa58ca508ddc09b34
mov rax, qword [rbp + 0x30]
xor r11, rax
movabs rbx, 0x88c648b8aea123fd
xor rbx, r10
add rbx, r11
add rbx, rsi
add rbx, r14
movabs r11, 0x9e0c92af023f64cb
xor r11, r10
movabs r10, 0xdd3b85fe49952993
xor r10, qword [rbp + 0x40]
add r11, r10
movabs r10, 0xb3467f1f715edc02
xor r10, rax
add r10, r11
add r10, rbx
add r10, r9
mov r9, qword [r9 - 8]
sub r10, r9
add r10, 5
cmp r10, qword [rbp - 0x38]
jae 0x20198292
mov rcx, r12
shl rcx, 0x1d
xor rcx, r12
movabs rdx, 0x5e7d83c1bcfb07aa
xor r15, rdx
xor rcx, r15
movabs rdx, 0x73ec1e08bcfb07aa
xor r8, rdx
mov rax, qword [rbp + 0x50]
and r8, rax
movabs rdx, 0xe8609f0f0304f855
xor rdx, rcx
and rdx, rax
xor rdx, r15
lea rdx, [rdx + r8*2]
mov rsi, qword [rbp + 0x58]
mov r8d, dword [rbp + 0x6c]
xor r8d, 0x82c8211c
mov rcx, qword [0x203cd0a0]
mov eax, dword [0x203cd068]
or eax, dword [rbp + 0x68]
sub eax, dword [rbp + 0x64]
cdqe
add rax, rcx
mov rcx, r9
call qword [case.0x200b73a7.0]
mov rcx, qword [rbp]
test rcx, rcx
je 0x20198250
mov rdx, qword [rbp + 0x10]
mov rax, r12
shl rax, 0x1d
xor rax, r12
movabs r8, 0x8a22f701ad2b20ee
xor r8, rax
mov rax, r12
shl rax, 0x24
or rax, r12
movabs r9, 0x4f0b378c57384bef
xor r9, rax
movabs rax, 0xc3bfb7d1a8c7b410
xor rdi, rax
add rdi, r9
mov rax, r12
shl rax, 0x22
or rax, r12
movabs r9, 0xe69a203eec5ac5c9
xor r9, rax
add r9, r8
add r9, rdi
movabs r8, 0x67a5b03202d4df11
mov r11, qword [rbp + 0x20]
xor r8, r11
movabs r10, 0xd51fdd913a53a36
xor r13, r10
add r13, r8
add r13, r9
sub r13, rcx
add rdx, r13
add rdx, 3
movabs r8, 0xf3ec1e08bcfb087d
xor r8, rax
cmp rdx, r8
jbe 0x20198227
mov rdi, qword [rcx - 8]
movabs r9, 0xfa1827c35304f87a
xor r11, r9
movabs r9, 0x8a24d453c91c2c0c
mov r8, qword [rbp + 0x40]
xor r8, r9
add r8, r11
mov r9, r12
shl r9, 0x21
or r9, r12
movabs r10, 0xd731de1fa57eeb4b
xor r10, r9
add r10, r8
movabs r11, 0xa2d430ec5a8114b4
xor r11, rax
movabs rsi, 0xa909f444b6e3d3f3
xor rsi, rax
add rsi, r11
add rsi, r10
add rsi, rcx
sub rsi, rdi
add rsi, 2
mov rcx, r12
shl rcx, 0x1f
xor rcx, r12
movabs r10, 0x5e7d83c1bcfb07a2
xor r10, rcx
cmp rsi, r10
mov r8d, dword [rbp + 0x6c]
jae 0x2019828d
xor rax, rdx
movabs r10, 0xf3ec1e08bcfb07a5
xor r10, rax
xor r9, rdx
not rdx
movabs rax, 0x21827c3e4304f85a
xor rcx, rax
and rcx, rdx
movabs rax, 0x79f60f04bcfb07a5
xor rax, r9
or rax, rcx
not rax
lea rdx, [r10 + rax*2]
mov rcx, rdi
mov rsi, qword [rbp + 0x58]
jmp 0x2019822b
mov r8d, dword [rbp + 0x6c]
mov r9, qword [0x203cd0a0]
mov eax, dword [rbp + 0x68]
or eax, dword [0x203cd068]
xor r8d, 0x82c8211c
sub eax, dword [rbp + 0x64]
cdqe
add rax, r9
call qword [case.0x200b73a7.0]
mov rax, rsi
add rsp, 0xf8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rdx, qword [rbp + 0x48]
add edx, dword [rbp + 0x68]
mov rcx, qword [0x203cd080]
mov eax, dword [0x203cd054]
add eax, edx
add eax, 0xffff7d57
cdqe
add rax, rcx
call qword [case.0x200b73a7.0]
call fcn.20080930
movzx eax, byte [0x202fd308]
sub al, dl
test ecx, ecx
sete dl
movzx eax, al
cmovne ecx, eax
neg dl
or cl, dl
xor al, dl
not al
test cl, al
setne al
or al, byte [0x20401800]
and al, 1
mov byte [0x20401800], al
call fcn.20080930
int3