Function at 0x201cfb00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
movdqa xmmword [rsp + 0x50], xmm9
movaps xmmword [rsp + 0x40], xmm8
movaps xmmword [rsp + 0x30], xmm7
movaps xmmword [rsp + 0x20], xmm6
mov rsi, rcx
mov r15d, dword [rcx + 0x44]
movd xmm0, r15d
lea ebp, [r15 - 0x106]
pshufd xmm6, xmm0, 0x50
xor r12d, r12d
movdqa xmm7, xmmword [0x203018b0]
movdqa xmm8, xmmword [0x203018c0]
pcmpeqd xmm9, xmm9
nop dword [rax + rax]
mov edi, dword [rsi + 0x58]
mov eax, dword [rsi + 0x94]
mov ecx, dword [rsi + 0x9c]
add ecx, eax
sub edi, ecx
mov ecx, dword [rsi + 0x44]
add ecx, ebp
cmp eax, ecx
jb 0x201cfd7e
mov rcx, qword [rsi + 0x50]
lea rdx, [rcx + r15]
mov r8d, r15d
sub r8d, edi
call fcn.202d5100
movq xmm0, qword [rsi + 0x94]
psubd xmm0, xmm6
movq qword [rsi + 0x94], xmm0
sub dword [rsi + 0x84], r15d
movd eax, xmm0
cmp dword [rsi + 0x1708], eax
jbe 0x201cfbc0
mov dword [rsi + 0x1708], eax
mov eax, dword [rsi + 0x44]
mov ecx, dword [rsi + 0x74]
mov rbx, qword [rsi + 0x68]
lea rdx, [rbx + rcx*2]
lea r8d, [rcx - 1]
movd xmm0, eax
cmp r8d, 7
jb 0x201cfc6e
inc r8
mov r9, r8
and r9, 0xfffffffffffffff8
lea r10, [r9 + r9]
neg r10
pshufd xmm1, xmm0, 0
mov r11, r9
neg r11
lea rbx, [rbx + rcx*2]
add rbx, 0xfffffffffffffff0
xor r14d, r14d
nop word [rax + rax]
movdqu xmm2, xmmword [rbx + r14*2]
movdqa xmm3, xmm1
pxor xmm3, xmm7
movdqa xmm4, xmm8
pcmpgtd xmm4, xmm3
movdqa xmm3, xmm1
pand xmm3, xmm4
pxor xmm4, xmm9
por xmm4, xmm3
pslld xmm4, 0x10
psrad xmm4, 0x10
packssdw xmm4, xmm4
pshuflw xmm3, xmm4, 0x1b
pshufhw xmm3, xmm3, 0x1b
psubusw xmm2, xmm3
movdqu xmmword [rbx + r14*2], xmm2
add r14, 0xfffffffffffffff8
cmp r11, r14
jne 0x201cfc10
cmp r8, r9
je 0x201cfc9b
add rdx, r10
sub ecx, r9d
neg ecx
xor r8d, r8d
nop word cs:[rax + rax]
movzx r9d, word [rdx + r8*2 - 2]
sub r9d, eax
cmovb r9d, r12d
mov word [rdx + r8*2 - 2], r9w
dec r8
cmp ecx, r8d
jne 0x201cfc80
mov r11, qword [rsi + 0x60]
lea rcx, [r11 + rax*2]
lea edx, [rax - 1]
cmp edx, 7
jae 0x201cfcc0
mov edx, eax
jmp 0x201cfd50
inc rdx
mov r8, rdx
and r8, 0xfffffffffffffff8
lea r9, [r8 + r8]
neg r9
pshufd xmm0, xmm0, 0
mov r10, r8
neg r10
lea r11, [r11 + rax*2]
add r11, 0xfffffffffffffff0
xor ebx, ebx
nop word cs:[rax + rax]
movdqu xmm1, xmmword [r11 + rbx*2]
movdqa xmm2, xmm0
pxor xmm2, xmm7
movdqa xmm3, xmm8
pcmpgtd xmm3, xmm2
movdqa xmm2, xmm0
pand xmm2, xmm3
pxor xmm3, xmm9
por xmm3, xmm2
pslld xmm3, 0x10
psrad xmm3, 0x10
packssdw xmm3, xmm3
pshuflw xmm2, xmm3, 0x1b
pshufhw xmm2, xmm2, 0x1b
psubusw xmm1, xmm2
movdqu xmmword [r11 + rbx*2], xmm1
add rbx, 0xfffffffffffffff8
cmp r10, rbx
jne 0x201cfcf0
cmp rdx, r8
je 0x201cfd7b
add rcx, r9
mov edx, eax
sub edx, r8d
neg edx
xor r8d, r8d
nop word cs:[rax + rax]
movzx r9d, word [rcx + r8*2 - 2]
sub r9d, eax
cmovb r9d, r12d
mov word [rcx + r8*2 - 2], r9w
dec r8
cmp edx, r8d
jne 0x201cfd60
add edi, r15d
mov r13, qword [rsi]
mov eax, dword [r13 + 8]
test eax, eax
je 0x201cfeeb
cmp eax, edi
cmovb edi, eax
test edi, edi
je 0x201cfe0b
mov ecx, dword [rsi + 0x94]
mov r14d, dword [rsi + 0x9c]
add rcx, qword [rsi + 0x50]
add r14, rcx
sub eax, edi
mov dword [r13 + 8], eax
mov rdx, qword [r13]
mov ebx, edi
mov rcx, r14
mov r8, rbx
call fcn.202d5100
mov rax, qword [r13 + 0x28]
mov eax, dword [rax + 0x2c]
cmp eax, 2
je 0x201cfdf0
cmp eax, 1
jne 0x201cfe03
mov ecx, dword [r13 + 0x4c]
mov rdx, r14
mov r8d, edi
call fcn.201d0230
jmp 0x201cfdff
mov ecx, dword [r13 + 0x4c]
mov rdx, r14
mov r8d, edi
call fcn.201d0220
mov dword [r13 + 0x4c], eax
add qword [r13], rbx
add dword [r13 + 0xc], edi
add edi, dword [rsi + 0x9c]
mov dword [rsi + 0x9c], edi
mov edx, dword [rsi + 0x1708]
lea eax, [rdx + rdi]
cmp eax, 3
jb 0x201cfed6
mov eax, dword [rsi + 0x94]
sub eax, edx
mov r8, qword [rsi + 0x50]
movzx r9d, byte [r8 + rax]
mov dword [rsi + 0x70], r9d
movzx ecx, byte [rsi + 0x80]
shl r9d, cl
lea ecx, [rax + 1]
movzx ecx, byte [r8 + rcx]
xor ecx, r9d
and ecx, dword [rsi + 0x7c]
mov dword [rsi + 0x70], ecx
nop dword [rax]
test edx, edx
je 0x201cfed0
mov edx, dword [rsi + 0x70]
movzx ecx, byte [rsi + 0x80]
shl edx, cl
lea ecx, [rax + 2]
mov r8, qword [rsi + 0x50]
mov r9, qword [rsi + 0x60]
movzx ecx, byte [r8 + rcx]
xor ecx, edx
and ecx, dword [rsi + 0x7c]
mov dword [rsi + 0x70], ecx
mov rdx, qword [rsi + 0x68]
movzx ecx, word [rdx + rcx*2]
mov edx, dword [rsi + 0x4c]
and edx, eax
mov word [r9 + rdx*2], cx
mov rcx, qword [rsi + 0x68]
mov edx, dword [rsi + 0x70]
mov word [rcx + rdx*2], ax
inc eax
mov ecx, dword [rsi + 0x1708]
lea edx, [rcx - 1]
mov dword [rsi + 0x1708], edx
mov edi, dword [rsi + 0x9c]
add ecx, edi
dec ecx
cmp ecx, 3
jae 0x201cfe60
jmp 0x201cfed6
mov edi, dword [rsi + 0x9c]
cmp edi, 0x105
ja 0x201cfeeb
mov rax, qword [rsi]
cmp dword [rax + 8], 0
jne 0x201cfb60
mov eax, dword [0x20403140]
add eax, dword [rsi + 0x1714]
mov edx, dword [rsi + 0x58]
mov ecx, edx
sub ecx, eax
jbe 0x201cff75
mov ebx, dword [rsi + 0x9c]
add ebx, dword [rsi + 0x94]
cmp eax, ebx
jae 0x201cff34
sub edx, ebx
cmp edx, 0x102
mov edi, 0x102
cmovb edi, edx
mov ecx, ebx
add rcx, qword [rsi + 0x50]
xor edx, edx
mov r8, rdi
call fcn.202d57b0
add edi, ebx
jmp 0x201cff6f
mov edx, dword [0x20401818]
lea edi, [rbx + rdx]
add edi, 0x102
sub edi, eax
jbe 0x201cff75
add edi, dword [0x20403144]
cmp edi, ecx
cmovae edi, ecx
mov ecx, eax
add rcx, qword [0x204018c0]
add rcx, qword [rsi + 0x50]
xor edx, edx
mov r8, rdi
call fcn.202d57b0
add edi, dword [rsi + 0x1714]
mov dword [rsi + 0x1714], edi
movaps xmm6, xmmword [rsp + 0x20]
movaps xmm7, xmmword [rsp + 0x30]
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm9, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret