Function at 0x20120620
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
mov r8d, dword [rsp + 0x40]
test ecx, ecx
je 0x201206f2
mov eax, r8d
xor eax, 0xee69e605
add eax, dword [0x20546384]
cmp edx, eax
jne 0x20120739
movzx eax, byte [0x2054588d]
nop dword [rax]
cmp al, 0xb8
je 0x201207ad
movzx ecx, byte [0x20546380]
mov edx, r8d
not dl
mov r9d, edx
and r9b, 0xc6
mov eax, r8d
and al, 0x39
or al, r9b
add al, cl
and dl, 0x22
mov r9d, r8d
and r9b, 0xdd
or r9b, dl
mov edx, r9d
xor dl, cl
and r9b, cl
add r9b, r9b
add r9b, dl
lock cmpxchg byte [0x2054588d], r9b
jne 0x20120650
xor eax, eax
lea rcx, [0x20545880]
lea rdx, [0x20470370]
nop dword [rax + rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
not r10b
mov r11d, r10d
xor r11b, r9b
not r9b
and r8b, r9b
or r8b, r11b
not r8b
xor r10b, r9b
and r10b, r9b
or r10b, r8b
mov byte [rax + rcx], r10b
lea r8d, [rax + 1]
cmp r8d, 0xc
jg 0x201207a5
inc rax
jmp 0x201206b0
test edx, edx
je 0x20120765
movzx eax, byte [0x20545ae5]
mov ecx, r8d
xor cl, 0xd7
add cl, byte [0x20546380]
cmp al, cl
je 0x2012088a
mov cl, 0x7b
nop word cs:[rax + rax]
mov al, 4
lock cmpxchg byte [0x20545ae5], cl
je 0x2012083d
cmp al, 0x8d
jne 0x20120720
jmp 0x2012088a
movzx eax, byte [0x20545a97]
cmp al, 0x2b
je 0x20120831
mov cl, 0xb
nop word [rax + rax]
mov al, 0x88
lock cmpxchg byte [0x20545a97], cl
je 0x201207b9
cmp al, 0x2b
jne 0x20120750
jmp 0x20120831
movzx eax, byte [0x2054589b]
cmp al, 0xb2
je 0x20120917
mov cl, 0xd8
nop word cs:[rax + rax]
mov al, 0x87
lock cmpxchg byte [0x2054589b], cl
je 0x20120896
mov edx, r8d
xor dl, 0xf0
add dl, byte [0x20546380]
cmp al, dl
jne 0x20120780
jmp 0x20120917
mov al, 0xb8
xchg byte [0x2054588d], al
lea rax, [0x20545880]
jmp 0x2012091e
xor eax, eax
lea rcx, [0x20545a90]
lea rdx, [0x20470550]
nop dword [rax]
movzx r9d, byte [rax + rdx]
xor byte [rax + rcx], r9b
lea r9d, [rax + 1]
mov r10d, dword [0x20546384]
mov r11d, r8d
xor r11d, 0xee69e63c
mov esi, r8d
not esi
and esi, r8d
xor esi, r11d
mov r11d, esi
not r11d
mov edi, r11d
and edi, r10d
mov ebx, esi
xor esi, r10d
not r10d
and ebx, r10d
or ebx, edi
and r10d, r11d
or r10d, esi
not r10d
lea r10d, [rbx + r10*2]
cmp r9d, r10d
jge 0x20120829
inc rax
jmp 0x201207d0
mov al, 0x2b
xchg byte [0x20545a97], al
lea rax, [0x20545a90]
jmp 0x2012091e
xor eax, eax
lea rcx, [0x20545ad0]
lea rdx, [0x20470590]
nop dword [rax]
movzx r9d, byte [rax + rdx]
add byte [rax + rcx], r9b
lea r9d, [rax + 1]
cmp r9d, 0x14
jg 0x20120868
inc rax
jmp 0x20120850
mov eax, r8d
not al
and al, 0xd7
xor r8b, 0x28
or r8b, al
not r8b
or r8b, al
add r8b, byte [0x20546380]
xchg byte [0x20545ae5], r8b
lea rax, [0x20545ad0]
jmp 0x2012091e
xor r9d, r9d
lea rax, [0x20545890]
lea rcx, [0x20470380]
mov r10d, r8d
not r10d
mov edx, r8d
xor edx, 0x119619fd
and r10d, 0xee69e602
or edx, r10d
not edx
or edx, r10d
neg edx
xor r8d, 0xee69e638
nop
movsxd r9, r9d
movzx r10d, byte [r9 + rcx]
xor byte [r9 + rax], r10b
mov r10d, dword [0x20546384]
mov r11d, r10d
neg r11d
mov esi, edx
xor esi, r11d
and r11d, edx
lea r11d, [rsi + r11*2]
neg r11d
xor r9d, r11d
mov esi, r9d
not esi
and esi, r11d
lea r9d, [r9 + rsi*2]
add r10d, r8d
cmp r9d, r10d
jl 0x201208d0
mov al, 0xb2
xchg byte [0x2054589b], al
lea rax, [0x20545890]
pop rbx
pop rdi
pop rsi
ret