Function at 0x201608c0
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
mov eax, 0xaa8bd721
mov r8d, dword [0x2054e6cc]
add r8d, eax
cmp ecx, r8d
jne 0x20160930
nop word [rax + rax]
mov ecx, dword [0x205b3c78]
lea r8d, [rcx - 1]
imul r8d, ecx
and r8d, 1
mov ecx, dword [0x2054e6cc]
add ecx, eax
cmp r8d, ecx
jne 0x20160923
mov ecx, dword [0x205b3c78]
mov r8d, 0xf0316385
sub r8d, ecx
imul r8d, ecx
and r8d, 1
mov ecx, dword [0x2054e6cc]
add ecx, eax
cmp r8d, ecx
je 0x2016095c
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x1f
jge 0x201608e0
jmp 0x201608ff
test edx, edx
je 0x20160995
mov ecx, dword [0x205b3c78]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0xaa8bd723
add ecx, dword [0x2054e6cc]
xor edx, edx
div ecx
test edx, edx
jne 0x20160c51
jmp 0x20160c39
test edx, edx
je 0x201609c9
movzx eax, byte [0x2054e11d]
cmp al, 0x6c
je 0x20160a6f
mov cl, 0x84
nop word cs:[rax + rax]
mov al, 0x7d
lock cmpxchg byte [0x2054e11d], cl
je 0x20160a03
cmp al, 0x6c
jne 0x20160980
jmp 0x20160a6f
movzx eax, byte [0x2054df7f]
cmp al, 0x28
je 0x20160c00
mov cl, 0xb2
nop word cs:[rax + rax]
mov al, 0x1b
lock cmpxchg byte [0x2054df7f], cl
je 0x20160a7b
cmp al, 0x28
jne 0x201609b0
jmp 0x20160c00
movzx eax, byte [0x2054e0ed]
cmp al, 0x6d
je 0x20160c2e
mov cl, 0x31
nop word [rax + rax]
mov al, 0x83
lock cmpxchg byte [0x2054e0ed], cl
je 0x20160b5d
movzx edx, byte [0x2054e6c8]
add dl, 0x9b
cmp al, dl
jne 0x201609e0
jmp 0x20160c2e
xor eax, eax
lea rcx, [0x2054e110]
lea rdx, [0x20471960]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
not r10b
mov r11d, r9d
xor r11b, r10b
not r11b
and r10b, r9b
and r11b, r8b
mov r8d, r11d
xor r8b, r11b
not r8b
and r8b, r10b
and r10b, r11b
xor r8b, r11b
or r8b, r10b
mov byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0xc
jg 0x20160a67
inc rax
jmp 0x20160a20
mov al, 0x6c
xchg byte [0x2054e11d], al
lea rax, [0x2054e110]
jmp 0x20160c35
xor r8d, r8d
lea r9, [0x2054df70]
lea r10, [0x204717c0]
mov r11d, 0xaa8bd738
mov esi, 0xaa8bd76c
jmp 0x20160aad
inc r8d
cmp r8d, 0xf
jge 0x20160bf1
mov eax, dword [0x205b3c7c]
movsxd rdi, r8d
cmp eax, 0x54
jg 0x20160ae0
nop dword [rax + rax]
movzx eax, byte [rdi + r10]
add byte [rdi + r9], al
mov eax, dword [0x205b3c7c]
mov ecx, dword [0x2054e6cc]
add ecx, r11d
cmp eax, ecx
jl 0x20160aa0
nop dword [rax]
movzx eax, byte [rdi + r9]
movzx ecx, byte [rdi + r10]
mov dl, 0x9a
sub dl, al
sub al, cl
mul cl
mov ecx, eax
mov eax, edx
xor al, cl
and dl, cl
add dl, dl
add dl, al
add dl, 0x66
shl dl, cl
sub cl, dl
mov bl, 0x14
sub bl, cl
mov eax, ebx
xor al, 0xec
and bl, 0x6c
add bl, bl
add al, dl
add al, bl
add cl, al
add al, cl
neg al
mul cl
sub al, cl
mul cl
mov edx, eax
lea eax, [rdx - 0x1b]
mov ebx, eax
xor bl, 0xbf
and al, 0x3f
add al, al
add al, bl
sub al, cl
add al, 0x5c
mul cl
mov ecx, eax
sub dl, al
mov eax, edx
mul cl
add al, cl
mov byte [rdi + r9], al
mov eax, dword [0x205b3c7c]
mov ecx, dword [0x2054e6cc]
add ecx, esi
cmp eax, ecx
jge 0x20160ae0
jmp 0x20160ac0
xor r8d, r8d
lea rax, [0x2054e0e0]
lea rcx, [0x20471930]
mov edx, 0xaa8bd72e
nop word cs:[rax + rax]
movsxd r8, r8d
movzx r9d, byte [r8 + rax]
movzx r10d, byte [r8 + rcx]
not r9b
mov r11d, r9d
and r11b, r10b
or r9b, r10b
not r9b
or r9b, r11b
mov byte [r8 + rax], r9b
mov r9d, r8d
not r9d
mov r10d, r8d
xor r10d, 1
and r10d, r9d
mov r11d, r8d
xor r11d, 0xfffffffe
and r9d, 1
or r9d, r11d
not r9d
or r9d, r10d
and r8d, 1
lea r8d, [r9 + r8*2]
mov r9d, dword [0x2054e6cc]
add r9d, edx
cmp r8d, r9d
jl 0x20160b80
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x20160c14
jmp 0x20160c09
movzx eax, byte [0x2054e6c8]
add al, 0x56
xchg byte [0x2054df7f], al
lea rax, [0x2054df70]
jmp 0x20160c35
mov eax, dword [0x205b3c7c]
cmp eax, 0xe
jl 0x20160c26
mov al, 1
nop word cs:[rax + rax]
test al, al
je 0x20160c20
jmp 0x20160c09
mov al, 0x6d
xchg byte [0x2054e0ed], al
lea rax, [0x2054e0e0]
pop rbx
pop rdi
pop rsi
ret
movzx eax, byte [0x2054df89]
mov ecx, dword [0x205b3c78]
lea edx, [rcx + 1]
imul edx, ecx
test dl, 1
je 0x20160c5a
movzx eax, byte [0x2054df89]
jmp 0x20160c39
cmp al, 0x2c
je 0x20160d6b
mov ecx, 0xaa8bd722
lea rax, [fcn.201608c0]
lea edx, [rax + rax]
add edx, 0x2ae0
mov r8d, edx
not r8d
mov r9b, 0x12
xor r10d, r10d
nop word cs:[rax + rax]
mov eax, dword [0x2054e6cc]
add eax, ecx
mov r11d, edx
xor r11d, eax
not eax
and eax, r8d
or eax, r11d
cmp eax, 0xffffffff
jne 0x20160cf0
nop dword [rax + rax]
mov al, 0x4c
lock cmpxchg byte [0x2054df89], r9b
sete r11b
test r10b, r10b
jne 0x20160cf0
test r11b, r11b
jne 0x20160cfd
movzx r11d, byte [0x2054e6c8]
mov ebx, r11d
xor bl, 0x5a
and r11b, 0x5a
add r11b, r11b
add r11b, bl
cmp al, r11b
jne 0x20160c90
jmp 0x20160d6b
mov al, 0x4c
lock cmpxchg byte [0x2054df89], r9b
jmp 0x20160cb0
xor eax, eax
lea rcx, [0x2054df80]
lea rdx, [0x204717d0]
nop dword [rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
not r10b
mov r11d, r8d
and r11b, r9b
not r9b
mov ebx, r10d
and bl, r9b
or bl, r11b
xor r10b, r9b
and r10b, r8b
or r10b, bl
and r9b, r8b
not r9b
mov r8d, r9d
xor r8b, r10b
or r9b, r10b
not r9b
or r9b, r8b
mov byte [rax + rcx], r9b
lea r8d, [rax + 1]
cmp r8d, 8
jg 0x20160d63
inc rax
jmp 0x20160d10
mov al, 0x2c
xchg byte [0x2054df89], al
lea rax, [0x2054df80]
jmp 0x20160c35