Function at 0x140153690
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x40
mov esi, r9d
mov eax, 0xaa897674
add eax, dword [0x140509dd8]
cmp ecx, eax
jne 0x1401536f9
mov eax, dword [0x140509dd8]
mov ecx, eax
xor ecx, 0xaa897674
and eax, 0x2a897674
lea eax, [rcx + rax*2]
cmp edx, eax
jne 0x140153759
movzx eax, byte [0x14050993b]
cmp al, 0x86
je 0x14015394c
mov cl, 0x48
nop
mov al, 0x76
lock cmpxchg byte [0x14050993b], cl
je 0x14015387c
cmp al, 0x86
jne 0x1401536e0
jmp 0x14015394c
test edx, edx
je 0x1401537c3
mov eax, dword [0x1405099a0]
mov edx, esi
xor edx, 0x5af75d56
add eax, esi
add eax, 0xffffe44e
cdqe
add rax, qword [0x1405099b8]
lea rcx, [rsp + 0x37]
call qword [0x1404ee420]
movzx eax, byte [0x140509ddc]
add al, 0x8c
cmp byte [rsp + 0x37], al
je 0x140153870
mov cl, 0x7a
nop
mov al, 0x1c
lock cmpxchg byte [0x1405098a3], cl
je 0x140153832
cmp al, 0x61
jne 0x140153740
jmp 0x140153870
movzx eax, byte [0x14050973c]
cmp al, 0x6e
je 0x140153938
mov bpl, 0xf0
mov edi, esi
xor edi, 0x3db71f55
nop word cs:[rax + rax]
mov al, 0x40
lock cmpxchg byte [0x14050973c], bpl
mov ebx, eax
sete dl
mov eax, dword [0x1405099a8]
add eax, esi
add eax, 0xffffe44e
cdqe
add rax, qword [0x1405099b0]
mov ecx, ebx
mov r8d, edi
call qword [0x1404ee420]
test al, 1
jne 0x1401538ac
cmp bl, 0x6e
jne 0x140153780
jmp 0x140153938
mov eax, dword [0x1405099a4]
mov ecx, esi
xor ecx, 0x355050b
add eax, esi
add eax, 0xffffe44e
cdqe
add rax, qword [0x1405099c8]
call qword [0x1404ee420]
test al, 1
jne 0x1401539d9
nop
movzx ecx, byte [0x140509ddc]
mov edx, ecx
xor dl, 0xa
mov eax, ecx
and al, 0xa
add al, al
mov r8d, edx
xor r8b, al
and al, dl
add al, al
add al, r8b
mov edx, ecx
xor dl, 0xab
and cl, 0x2b
add cl, cl
add cl, dl
lock cmpxchg byte [0x140509888], cl
je 0x140153958
cmp al, 3
jne 0x1401537f0
jmp 0x1401539d9
xor eax, eax
lea rcx, [0x1405098a0]
lea rdx, [0x14042b5f0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 2
jg 0x140153868
inc rax
jmp 0x140153850
mov al, 0x61
xchg byte [0x1405098a3], al
lea rax, [0x1405098a0]
jmp 0x1401539e0
xor eax, eax
lea rcx, [0x140509930]
lea rdx, [0x14042b680]
nop dword [rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0xa
jg 0x140153944
inc rax
jmp 0x140153890
xor eax, eax
lea r15, [0x140509710]
mov ebp, esi
xor ebp, 0x8536110a
lea rdi, [rsp + 0x36]
lea rbx, [rsp + 0x38]
mov r12d, 0xaa8976a0
nop dword [rax]
movsxd r14, eax
lea rcx, [r15 + r14]
mov eax, dword [0x1405099ac]
add eax, esi
add eax, 0xffffe44e
cdqe
add rax, qword [0x1405099c0]
mov dword [rsp + 0x20], ebp
mov edx, r14d
mov r8, rdi
mov r9, rbx
call qword [0x1404ee420]
movzx eax, byte [rsp + 0x36]
mov rcx, qword [rsp + 0x38]
mov byte [rcx + r15], al
mov eax, r14d
xor eax, 1
mov ecx, r14d
xor ecx, 0x7ffffffe
and ecx, r14d
lea eax, [rax + rcx*2]
mov ecx, dword [0x140509dd8]
add ecx, r12d
cmp eax, ecx
jl 0x1401538d0
mov al, 0x6e
xchg byte [0x14050973c], al
lea rax, [0x140509710]
jmp 0x1401539e0
mov al, 0x86
xchg byte [0x14050993b], al
lea rax, [0x140509930]
jmp 0x1401539e0
xor edx, edx
lea rax, [0x140509870]
lea rcx, [0x14042b5c0]
nop dword [rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rax]
movzx r9d, byte [rdx + rcx]
mov r10d, r8d
not r10b
mov r11d, r10d
and r11b, r9b
mov ebx, r8d
xor r8b, r9b
not r9b
and bl, r9b
or bl, r11b
and r9b, r10b
or r9b, r8b
not r9b
add r9b, r9b
add r9b, bl
mov byte [rdx + rax], r9b
add edx, 0xec1cceb1
mov r8d, edx
xor r8d, 0x13e33150
and edx, 0x13e33150
lea edx, [r8 + rdx*2]
cmp edx, 0x18
jl 0x140153970
movzx eax, byte [0x140509ddc]
add al, 0x2e
xchg byte [0x140509888], al
lea rax, [0x140509870]
add rsp, 0x40
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret