Function at 0x20152690
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
test ecx, ecx
je 0x201526fe
test edx, edx
je 0x20152759
movzx eax, byte [0x2054cc52]
cmp al, 0x9a
je 0x20152c2f
lea rsi, [rsp + 0x30]
lea rdi, [rsp + 0x2d]
nop word cs:[rax + rax]
mov rcx, rsi
mov rdx, rdi
mov r8d, 0xdc26137e
mov r9d, 0xa2ea97a7
call fcn.20154330
cmp byte [rsp + 0x31], 0
jne 0x20152829
cmp byte [rsp + 0x2d], 0x9a
jne 0x201526d0
jmp 0x20152c2f
xor eax, eax
test al, al
nop word cs:[rax + rax]
xor eax, eax
test al, al
jne 0x20152710
test edx, edx
je 0x201527ff
mov edx, dword [0x2054d280]
lea ecx, [rdx + 0x144616ba]
add edx, 0x54095873
call fcn.20154220
test al, 1
jne 0x20152ae5
mov cl, 0xd
nop
mov al, 0x23
lock cmpxchg byte [0x2054cbd9], cl
je 0x20152838
cmp al, 0x9a
jne 0x20152740
jmp 0x20152ae5
movzx eax, byte [0x2054cc05]
cmp al, 0xe0
je 0x20152c10
mov cl, 0x23
xor edx, edx
lea rax, [fcn.20152690]
lea r8d, [rax + rax]
add r8d, 0x3980
mov r9d, r8d
not r9d
add eax, eax
add eax, 0x3981
mov r10d, r9d
neg r10d
xor r8d, 0xfffffffe
or r8d, r10d
not r8d
or r8d, eax
mov r10d, r8d
not r10d
and r8d, eax
and eax, r10d
and r10d, r9d
or r8d, r10d
or r8d, eax
jmp 0x201527c8
cmp al, 0xe0
je 0x20152c10
mov al, 0xfd
lock cmpxchg byte [0x2054cc05], cl
je 0x2015287f
test dl, dl
jne 0x201527f0
nop dword [rax]
cmp r8d, 0xffffffff
je 0x201527c0
nop word cs:[rax + rax]
mov r9d, dword [0x205b3b1c]
cmp r9d, 0x46
jge 0x201527f0
jmp 0x201527e0
movzx eax, byte [0x2054ca1c]
cmp al, 0xb5
je 0x20152a96
mov cl, 0xe1
mov al, 0x75
lock cmpxchg byte [0x2054ca1c], cl
je 0x201528b6
cmp al, 0xb5
jne 0x20152810
jmp 0x20152a96
xor eax, eax
test al, al
jne 0x20152c50
jmp 0x20152c3b
xor eax, eax
lea rcx, [0x2054cbd0]
lea rdx, [0x20470fc0]
nop dword [rax + rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
not r8b
mov r10d, r8d
and r10b, r9b
or r8b, r9b
not r8b
or r8b, r10b
mov byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 8
jg 0x201528a7
inc rax
jmp 0x20152850
mov ecx, dword [0x205b3b18]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0xeb429f4
add ecx, dword [0x2054d280]
xor edx, edx
div ecx
test edx, edx
jne 0x20152b00
jmp 0x20152aee
mov al, 1
test al, al
je 0x20152ad0
jmp 0x20152aae
xor r15d, r15d
lea r13, [0x2054c9f0]
lea r12, [0x20470df0]
lea rsi, [rsp + 0x2e]
lea rdi, [rsp + 0x2f]
jmp 0x201528f4
add r15d, r14d
add r15d, 0xeb429f3
cmp r15d, 0x2c
jge 0x20152a60
mov ecx, dword [0x2054d280]
mov eax, 0xe467752a
add ecx, eax
mov edx, ecx
call fcn.2006dde0
mov ecx, dword [0x205b3b18]
lea eax, [rcx + 0x4cc4e4de]
mov edx, eax
xor edx, 0xee9f206a
and eax, 0x6e9f206a
lea edx, [rdx + rax*2]
sub edx, dword [0x2054d280]
add edx, 0xb5e7d0c5
mov r8d, 0x1ed7cbe
mov r9d, 0x5a8d2196
call fcn.2012a610
movsxd rbx, r15d
test al, 1
je 0x201529b0
nop dword [rax + rax]
movzx eax, byte [rbx + r13]
movzx ecx, byte [rbx + r12]
mov edx, eax
not dl
mov r8d, edx
and r8b, cl
mov r9d, eax
xor al, cl
not cl
and r9b, cl
or r9b, r8b
and cl, dl
or cl, al
not cl
add cl, cl
add cl, r9b
mov byte [rbx + r13], cl
mov r14d, dword [0x2054d280]
mov ecx, dword [0x205b3b18]
lea edx, [rcx - 1]
mov r8d, 0x29c1848
mov r9d, 0x2e3f19fc
call fcn.20154300
test al, 1
jne 0x201528e0
nop dword [rax]
movzx eax, byte [rbx + r13]
xor edx, edx
sub dl, al
mov eax, edx
xor al, 0xe1
and dl, 0x61
add dl, dl
add dl, al
mov cl, 0xe1
sub cl, dl
add dl, byte [rbx + r12]
mov eax, ecx
not al
add al, dl
add al, 0x20
mul cl
mov ebp, eax
shl al, cl
mov edx, ebp
mov ecx, eax
shl dl, cl
sub dl, bpl
mov dword [rsp + 0x20], 0xb471da73
mov ecx, ebp
mov r8, rsi
mov r9d, 0xc54146a0
call fcn.20153440
movzx r14d, byte [rsp + 0x2e]
mov ecx, ebp
mov rdx, rdi
mov r8d, 0x5a8d2196
mov r9d, 0xd6dcd0ae
call fcn.2012a020
add r14b, byte [rsp + 0x2f]
add r14b, bpl
mov rcx, rbx
mov edx, r14d
mov r8d, 0xcf25764c
mov r9d, 0x52f875bd
call fcn.201544e0
mov eax, dword [0x205b3b18]
mov ecx, 0xd7fd9780
sub ecx, eax
not ecx
add ecx, 0xd7fd9780
imul ecx, eax
test cl, 1
jne 0x201529b0
jmp 0x20152950
mov eax, dword [0x205b3b18]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x20152a7c
mov eax, dword [0x205b3b1c]
cmp eax, 0x29
jge 0x20152a60
mov eax, dword [0x205b3b1c]
cmp eax, 0x17
jg 0x20152a71
mov ecx, 0xaace0d67
mov edx, 0x57bb328d
call fcn.20154350
lea rax, [0x2054c9f0]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [0x205b3b1c]
mov ecx, 0xeb42a2e
add ecx, dword [0x2054d280]
cmp eax, ecx
jl 0x20152add
nop word cs:[rax + rax]
mov eax, dword [0x205b3b1c]
cmp eax, 0x57
jge 0x20152ad0
jmp 0x20152aae
mov al, 0x9a
xchg byte [0x2054cbd9], al
lea rax, [0x2054cbd0]
jmp 0x20152a9d
mov eax, dword [0x205b3b1c]
cmp eax, 0x2c
jl 0x20152b2b
nop dword [rax]
mov eax, dword [0x2054d280]
mov ecx, eax
not ecx
mov edx, eax
xor edx, 0xf14bd60d
and ecx, 0xeb429f2
or edx, ecx
not edx
or edx, ecx
and eax, 0xeb429f2
add eax, eax
add eax, edx
jne 0x20152b00
jmp 0x20152aee
xor esi, esi
lea rdi, [rsp + 0x2b]
lea rbx, [rsp + 0x2c]
lea r14, [rsp + 0x40]
lea r15, [0x2054cbf0]
nop word cs:[rax + rax]
mov eax, dword [0x2054d280]
lea r9d, [rax - 0x7d08efa]
add eax, 0x4f50cd07
mov dword [rsp + 0x20], eax
mov ecx, esi
mov rdx, rdi
mov r8, rbx
call fcn.20153420
movzx ebp, byte [rsp + 0x2c]
add bpl, byte [rsp + 0x2b]
mov r9d, dword [0x2054d280]
mov eax, r9d
xor eax, 0x255520d0
mov ecx, r9d
and ecx, 0x255520d0
lea r8d, [rax + rcx*2]
add r9d, 0x2924c6e
mov ecx, esi
mov rdx, r14
call fcn.20135500
mov rax, qword [rsp + 0x40]
mov byte [rax + r15], bpl
mov eax, esi
xor eax, 1
and esi, 1
lea esi, [rax + rsi*2]
cmp esi, 0x15
jl 0x20152b50
mov al, 1
test al, al
je 0x20152bf9
movzx eax, byte [0x2054d284]
add al, 0xa4
xchg byte [0x2054cc05], al
mov eax, dword [0x205b3b1c]
mov ecx, dword [0x2054d280]
mov edx, ecx
xor edx, 0xeb42a42
and ecx, 0xeb42a42
lea ecx, [rdx + rcx*2]
cmp eax, ecx
jl 0x20152c10
mov al, 0xe0
xchg byte [0x2054cc05], al
jmp 0x20152bc9
mov ecx, 0xcd5e452a
mov edx, 0x8a3aeb35
call fcn.201530d0
test al, 1
je 0x20152c10
lea rax, [0x2054cbf0]
jmp 0x20152a9d
lea rax, [0x2054cc40]
jmp 0x20152a9d
mov eax, dword [0x205b3b1c]
cmp eax, 0x3c
jl 0x20152c5d
nop word cs:[rax + rax]
mov eax, dword [0x205b3b1c]
cmp eax, 0x1c
jge 0x20152c50
jmp 0x20152c3b
xor eax, eax
lea rcx, [0x2054cc40]
lea rdx, [0x20471030]
mov r8d, 0xeb42a04
nop word cs:[rax + rax]
movzx r9d, byte [rax + rdx]
add byte [rax + rcx], r9b
lea r9d, [rax + 1]
mov r10d, dword [0x2054d280]
add r10d, r8d
cmp r9d, r10d
jge 0x20152ca1
inc rax
jmp 0x20152c80
mov edx, dword [0x2054d280]
lea ecx, [rdx - 0x251cded3]
add edx, 0xce9d4bf8
call fcn.201541e0
jmp 0x20152c2f