Function at 0x140487680
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
test ecx, ecx
je 0x14048776f
test edx, edx
je 0x1404877df
movzx eax, byte [0x14067b13a]
cmp al, 0x18
je 0x140487921
mov cl, 7
mov edx, 0x13bcdd08
xor r8d, r8d
mov r9b, 1
jmp 0x1404876d5
movzx r10d, byte [0x14067c4b4]
add r10b, 0x31
cmp al, r10b
je 0x140487921
cmp byte [0x1406976b0], 0
jne 0x140487710
movzx r10d, byte [0x14067c4b4]
lea eax, [r10 + 0x3b]
add r10b, 0x20
lock cmpxchg byte [0x14067b13a], r10b
sete r10b
mov r11d, dword [0x1406976a8]
lea esi, [r11 + 1]
imul esi, r11d
test sil, 1
je 0x140487740
mov al, 0x22
lock cmpxchg byte [0x14067b13a], cl
mov eax, dword [0x1406976ac]
mov r10d, dword [0x14067c4b0]
add r10d, edx
cmp eax, r10d
jge 0x1404876d5
jmp 0x1404876de
test r10b, r10b
jne 0x140487899
test r8b, r8b
jne 0x140487760
nop
test r9b, r9b
jne 0x1404876c0
nop dword [rax]
mov r10d, dword [0x1406976ac]
cmp r10d, 0x5b
jge 0x140487760
jmp 0x140487750
test edx, edx
je 0x14048786f
movzx eax, byte [0x14067b2c5]
cmp al, 0x4a
je 0x140487ab4
xor ecx, ecx
mov dl, 0x52
jmp 0x1404877ae
mov al, 0xc6
lock cmpxchg byte [0x14067b2c5], dl
mov eax, dword [0x1406976a8]
lea r8d, [rax - 1]
imul r8d, eax
test r8b, 1
je 0x1404877b2
test cl, cl
jne 0x140487790
mov al, 0xc6
lock cmpxchg byte [0x14067b2c5], dl
sete r8b
mov r9d, dword [0x1406976ac]
cmp r9d, 0x4f
jg 0x140487790
test r8b, r8b
jne 0x14048792d
cmp al, 0x4a
jne 0x1404877ae
jmp 0x140487ab4
movzx eax, byte [0x14067b575]
cmp al, 0xc1
je 0x140487c98
mov cl, 0xb4
mov edx, 0x13bcdcb5
lea rax, [fcn.140487680]
lea r8d, [rax + rax]
add r8d, 0x3280
not r8d
jmp 0x140487818
cmp al, 0xc1
je 0x140487c98
mov al, 0x2d
lock cmpxchg byte [0x14067b575], cl
je 0x140487a26
mov r9d, dword [0x14067c4b0]
add r9d, edx
not r9d
mov r10d, r8d
xor r10d, r9d
and r10d, r8d
or r10d, r9d
cmp r10d, 0xffffffff
jne 0x140487860
nop word [rax + rax]
mov r9d, dword [0x1406976ac]
cmp r9d, 0x3f
jl 0x140487810
nop dword [rax]
mov r9d, dword [0x1406976ac]
cmp r9d, 0x59
jge 0x140487860
jmp 0x140487850
movzx eax, byte [0x14067ac44]
cmp al, 0xc2
je 0x140487c80
mov cl, 0x80
mov al, 0x75
lock cmpxchg byte [0x14067ac44], cl
je 0x140487ac0
cmp al, 0xc2
jne 0x140487880
jmp 0x140487c80
mov eax, dword [0x1406976ac]
mov ecx, 0x13bcdcb6
nop word cs:[rax + rax]
mov edx, dword [0x1406976a8]
lea eax, [rdx - 1]
imul eax, edx
mov r8d, dword [0x14067c4b0]
add r8d, ecx
xor edx, edx
div r8d
test edx, edx
jne 0x1404878b0
xor r8d, r8d
lea rax, [0x14067b130]
lea rcx, [0x14055c5d0]
mov edx, 0x13bcdcb5
nop word cs:[rax + rax]
movsxd r8, r8d
movzx r9d, byte [r8 + rcx]
add byte [r8 + rax], r9b
mov r9d, dword [0x14067c4b0]
add r9d, edx
mov r10d, r8d
xor r10d, r9d
and r9d, r8d
lea r8d, [r10 + r9*2]
cmp r8d, 0xa
jl 0x1404878f0
mov al, 0x18
xchg byte [0x14067b13a], al
lea rax, [0x14067b130]
jmp 0x140487c87
xor eax, eax
lea rdx, [0x14067b2c0]
lea r8, [0x14055c750]
lea rcx, [fcn.140487680]
lea r10d, [rcx + rcx]
add r10d, 0x4860
add ecx, ecx
add ecx, 0x4861
xor ecx, r10d
mov r9d, r10d
not r9d
xor ecx, 0xfffffffe
and r9d, r10d
or r9d, ecx
not r9d
or r9d, ecx
not r9d
mov r10d, 0x13bcdcb4
jmp 0x14048798b
inc eax
cmp eax, 5
jge 0x140487a9a
mov ecx, dword [0x1406976ac]
xor r11d, r11d
sub r11d, dword [0x14067c4b0]
mov esi, r11d
xor esi, 0xec43230f
and r11d, 0x6c43230f
lea esi, [rsi + r11*2]
neg esi
movsxd r11, eax
cmp ecx, esi
jge 0x140487a00
nop dword [rax + rax]
movzx ecx, byte [r11 + rdx]
movzx ebx, byte [r11 + r8]
mov esi, ebx
not sil
mov edi, ecx
xor dil, sil
xor sil, bl
and sil, cl
xor sil, bl
and dil, cl
add dil, dil
add dil, sil
mov byte [r11 + rdx], dil
mov ecx, dword [0x14067c4b0]
add ecx, r10d
cmp r9d, ecx
je 0x140487980
nop dword [rax + rax]
movzx ecx, byte [r11 + r8]
shl byte [r11 + rdx], cl
mov ecx, dword [0x1406976a8]
mov esi, dword [0x14067c4b0]
neg esi
add esi, ecx
inc esi
imul esi, ecx
test sil, 1
jne 0x140487a00
jmp 0x1404879c0
xor edx, edx
lea rax, [0x14067b560]
lea rcx, [0x14055c9b0]
nop word cs:[rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rax]
movzx r9d, byte [rdx + rcx]
mov r10d, r8d
xor r10b, r9b
not r8b
not r9b
and r9b, r8b
or r9b, r10b
not r9b
add r9b, r9b
add r9b, r10b
mov byte [rdx + rax], r9b
add edx, 0x275b797a
mov r8d, edx
xor r8d, 1
and edx, 1
lea edx, [r8 + rdx*2]
add edx, 0xd8a48686
cmp edx, 0x15
jl 0x140487a40
xor eax, eax
test al, al
jne 0x140487cb0
jmp 0x140487ca1
movzx eax, byte [0x14067c4b4]
mov ecx, eax
xor cl, 0xd5
and al, 0x55
add al, al
add al, cl
add al, 0x8e
xchg byte [0x14067b2c5], al
lea rax, [0x14067b2c0]
jmp 0x140487c87
xor r12d, r12d
lea rdi, [0x14067ac40]
lea r14, [0x14055c110]
lea rax, [fcn.140487680]
lea ebp, [rax + rax]
add ebp, 0x3440
mov r15d, ebp
not r15d
lea rsi, [0x140489dc0]
jmp 0x140487b47
mov eax, dword [0x14067c4b0]
lea ecx, [rax + 0x13bcdcb5]
mov edx, r12d
xor edx, 0xd7096bdd
and r12d, 0x57096bdd
lea edx, [rdx + r12*2]
mov r8d, edx
xor r8d, ecx
and edx, ecx
lea ecx, [r8 + rdx*2]
mov edx, ecx
xor edx, 0x28f69423
and ecx, 0x28f69423
lea r12d, [rdx + rcx*2]
mov ecx, eax
xor ecx, 0x13bcdcb8
and eax, 0x13bcdcb8
lea eax, [rcx + rax*2]
cmp r12d, eax
jge 0x140487bc6
mov eax, dword [0x1406976ac]
movsxd r13, r12d
cmp eax, 0x57
jg 0x140487b81
nop word cs:[rax + rax]
movzx eax, byte [r13 + r14]
mov ecx, eax
xor cl, al
not cl
and cl, byte [r13 + rdi]
xor cl, al
mov byte [r13 + rdi], cl
test r15d, ebp
je 0x140487af0
movzx ebx, byte [r13 + rdi]
mov ecx, 0x33
call fcn.1404ca39c
mov qword [0x140697698], rax
mov rcx, rsi
call fcn.1404ea090
mov ecx, ebx
sub cl, byte [r13 + r14]
mov edx, ecx
neg dl
add bl, cl
mov eax, ebx
mul dl
mov edx, eax
not dl
dec cl
and al, cl
xor cl, dl
and cl, dl
or cl, al
mov byte [r13 + rdi], cl
jmp 0x140487b60
mov eax, 0x13bcdcb5
lea rcx, [fcn.140487680]
lea edx, [rcx + rcx]
add edx, 0x19e0
mov r8d, edx
not r8d
nop word cs:[rax + rax]
cmp dword [0x14067c4b0], 0xec43234c
jne 0x140487c2d
mov r9d, dword [0x14067c4b0]
add r9d, eax
mov r10d, r8d
and r10d, r9d
not r9d
mov r11d, edx
and r11d, r9d
or r11d, r10d
mov r10d, r8d
xor r10d, r9d
not r10d
and r10d, r9d
or r10d, r11d
cmp r10d, 0xffffffff
je 0x140487c78
mov r9d, dword [0x14067c4b0]
add r9d, eax
lea r10d, [rcx + rcx]
add r10d, 0x5e0
not r10d
mov r11d, r9d
not r11d
mov esi, r11d
and esi, r10d
xor r10d, r11d
not r10d
and r10d, r9d
or r10d, esi
not r10d
mov r9d, r11d
xor r9d, r10d
and r9d, r11d
or r9d, r10d
cmp r9d, 0xffffffff
jne 0x140487bf0
jmp 0x140487bfc
mov al, 0xc2
xchg byte [0x14067ac44], al
lea rax, [0x14067ac40]
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x14067b560]
jmp 0x140487c87
mov al, 1
test al, al
jne 0x140487cc4
nop word [rax + rax]
mov eax, dword [0x1406976a8]
mov ecx, eax
not ecx
imul ecx, eax
test cl, 1
jne 0x140487cb0
jmp 0x140487ca1
mov al, 0xc1
xchg byte [0x14067b575], al
jmp 0x140487c98