Function at 0x201f7340
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov esi, r9d
mov r12d, dword [rsp + 0xb0]
test ecx, ecx
je 0x201f73a5
test edx, edx
je 0x201f73f9
movzx eax, byte [0x2055b090]
cmp al, 0x46
je 0x201f7584
mov cl, 0x1a
nop dword [rax + rax]
mov al, 0xf8
lock cmpxchg byte [0x2055b090], cl
je 0x201f74fa
mov edx, r12d
xor dl, 0xf2
add dl, byte [0x2055b324]
cmp al, dl
jne 0x201f7380
jmp 0x201f7584
test edx, edx
je 0x201f7477
movzx eax, byte [0x2055ad0d]
movzx ecx, byte [0x2055b324]
mov edx, r12d
xor dl, 0xdc
mov r8d, edx
xor r8b, cl
and dl, cl
add dl, dl
add dl, r8b
cmp al, dl
je 0x201f75f9
mov cl, 0x59
nop dword [rax + rax]
mov al, 0x12
lock cmpxchg byte [0x2055ad0d], cl
je 0x201f7590
cmp al, 0x2c
jne 0x201f73e0
jmp 0x201f75f9
movzx ecx, byte [0x2055ae3d]
mov edx, esi
xor edx, 0xa1b43844
call fcn.201f4ad0
test al, 1
jne 0x201f7651
mov edi, esi
xor edi, 0xf9b2ed3c
lea rbx, [rsp + 0x40]
nop word cs:[rax + rax]
movzx ecx, byte [0x2055b324]
mov eax, r12d
xor al, 0x70
add al, cl
mov edx, r12d
xor dl, 0x28
add dl, cl
lock cmpxchg byte [0x2055ae3d], dl
sete bpl
sete dl
mov ecx, eax
mov r8, rbx
mov r9d, edi
call fcn.201637b0
test bpl, bpl
jne 0x201f7605
cmp byte [rsp + 0x40], 0x18
jne 0x201f7430
jmp 0x201f7651
mov ecx, esi
xor ecx, 0x8980c9e3
call fcn.201f63f0
test al, 1
jne 0x201f76e3
mov ebx, esi
xor ebx, 0x6f269923
lea rdi, [rsp + 0x40]
mov ebp, esi
xor ebp, 0x427fbbea
nop word cs:[rax + rax]
mov al, 0x7c
mov cl, 0x6b
lock cmpxchg byte [0x2055b18a], cl
mov r14d, eax
sete r15b
mov ecx, eax
mov edx, r15d
mov r8, rdi
mov r9d, ebx
call fcn.201637b0
movzx r13d, byte [rsp + 0x40]
mov ecx, r14d
mov edx, r15d
mov r8d, ebp
call fcn.201f5610
test al, 1
jne 0x201f765d
cmp r13b, 0xb3
jne 0x201f74b0
jmp 0x201f76e3
mov edi, 1
lea r15, [0x2055b080]
mov eax, esi
not eax
mov ecx, eax
and ecx, 0xba5ab77d
mov r12d, esi
and r12d, 0x45a54882
or r12d, ecx
lea rbx, [rsp + 0x3f]
lea r14, [rsp + 0x40]
and eax, 0x7ff92a78
mov ebp, esi
and ebp, 0x8006d587
or ebp, eax
nop dword [rax + rax]
lea eax, [rdi - 1]
movsxd rdx, eax
lea rcx, [r15 + rdx]
mov dword [rsp + 0x20], r12d
mov r8, rbx
mov r9, r14
call fcn.201f4a60
movzx eax, byte [rsp + 0x3f]
mov rcx, qword [rsp + 0x40]
mov byte [rcx], al
mov ecx, edi
mov edx, ebp
call fcn.201b6ce0
test al, 1
jne 0x201f7577
inc edi
jmp 0x201f7540
xor esi, 0x8dfc74b0
mov ecx, esi
call fcn.201f40a0
lea rax, [0x2055b080]
jmp 0x201f76ea
xor edi, edi
xor esi, 0xe829d942
lea rbx, [rsp + 0x40]
lea r14, [0x20475540]
lea r15, [0x2055ad00]
xor r12d, 0xe2c3f3f3
nop word cs:[rax + rax]
movsxd rdi, edi
mov rcx, rdi
mov rdx, rbx
mov r8d, esi
call fcn.201f63e0
mov rax, qword [rsp + 0x40]
movzx eax, byte [rax]
xor al, byte [rdi + r14]
mov byte [rdi + r15], al
mov eax, dword [0x2055b320]
add eax, r12d
add edi, eax
cmp edi, 0xd
jl 0x201f75c0
mov al, 0x2c
xchg byte [0x2055ad0d], al
lea rax, [0x2055ad00]
jmp 0x201f76ea
mov edi, 1
lea rbx, [0x2055ae30]
lea r14, [0x20475670]
xor esi, 0xb527c6a4
nop
lea eax, [rdi - 1]
cdqe
movzx ecx, byte [rax + r14]
mov edx, ecx
xor dl, cl
not dl
and dl, byte [rax + rbx]
xor dl, cl
mov byte [rax + rbx], dl
mov ecx, edi
mov edx, esi
call fcn.201f5d70
test al, 1
jne 0x201f7649
inc edi
jmp 0x201f7620
mov al, 0x18
xchg byte [0x2055ae3d], al
lea rax, [0x2055ae30]
jmp 0x201f76ea
xor eax, eax
lea r15, [0x2055b170]
lea r13, [0x20475980]
xor r12d, 0xe7833917
lea rbx, [rsp + 0x3f]
nop dword [rax]
movsxd r14, eax
movzx ecx, byte [r14 + r15]
movzx edx, byte [r14 + r13]
mov eax, dword [0x2055b320]
add eax, r12d
mov r8d, eax
xor r8d, eax
not r8d
and r8d, esi
xor r8d, eax
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x28], r8d
mov r8d, r14d
mov r9, rbx
call fcn.201f40b0
movzx eax, byte [rsp + 0x3f]
mov rcx, qword [rsp + 0x40]
mov byte [rcx + r15], al
mov eax, r14d
xor eax, 1
and r14d, 1
lea eax, [rax + r14*2]
cmp eax, 0x1a
jl 0x201f7680
mov al, 0xb3
xchg byte [0x2055b18a], al
lea rax, [0x2055b170]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret