Function at 0x20291d90
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
mov r8d, dword [rsp + 0x40]
test ecx, ecx
je 0x20291de5
test edx, edx
je 0x20291eb4
movzx eax, byte [0x205700d5]
cmp al, 0xbe
je 0x20291fc0
mov cl, 0x73
nop word cs:[rax + rax]
mov al, 0xa4
lock cmpxchg byte [0x205700d5], cl
je 0x20291f7c
mov edx, r8d
xor dl, 0x7c
add dl, byte [0x205719d4]
cmp al, dl
jne 0x20291dc0
jmp 0x20291fc0
test edx, edx
je 0x20291ee9
movzx eax, byte [0x205700b6]
nop word cs:[rax + rax]
cmp al, 0x9d
je 0x20291ea8
movzx ecx, byte [0x205719d4]
mov eax, r8d
xor al, 0x55
mov edx, eax
xor dl, cl
and al, cl
add al, al
add al, dl
mov edx, r8d
xor dl, 0x53
add dl, cl
lock cmpxchg byte [0x205700b6], dl
jne 0x20291e00
xor edx, edx
lea rax, [0x205700a0]
lea rcx, [0x2047b430]
movsxd rdx, edx
movzx r9d, byte [rdx + rax]
movzx r10d, byte [rdx + rcx]
mov r11d, r10d
not r11b
mov ebx, r11d
or bl, r9b
not bl
xor r11b, r10b
and r11b, r9b
xor r11b, r10b
and r11b, r9b
or r11b, bl
mov byte [rdx + rax], r11b
mov r9d, edx
xor r9d, 1
not edx
and edx, 0x7ffffffe
or edx, r9d
not edx
add edx, edx
mov r10d, r9d
xor r10d, edx
and edx, r9d
lea edx, [r10 + rdx*2]
cmp edx, 0x16
jl 0x20291e40
xor r8b, 0x5d
add r8b, byte [0x205719d4]
xchg byte [0x205700b6], r8b
lea rax, [0x205700a0]
jmp 0x2029208f
movzx eax, byte [0x20570000]
cmp al, 0x6c
je 0x20292077
mov cl, 0x69
nop word cs:[rax + rax]
mov al, 0xea
lock cmpxchg byte [0x20570000], cl
je 0x20291fcc
cmp al, 0x6c
jne 0x20291ed0
jmp 0x20292077
movzx eax, byte [0x205700f0]
cmp al, 0x6e
je 0x20292088
movzx ecx, byte [0x205719d4]
mov edx, r8d
not dl
mov eax, r8d
xor al, 0x24
mov r9d, edx
and r9b, 0xdb
or r9b, al
not r9b
or r9b, al
not r9b
mov eax, r8d
and al, 0x24
or al, r9b
add al, cl
and dl, 0xfe
mov r9d, r8d
and r9b, 1
or r9b, dl
add r9b, cl
lock cmpxchg byte [0x205700f0], r9b
jne 0x20291ef0
xor eax, eax
lea rcx, [0x205700e0]
lea rdx, [0x2047b470]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0xf
jg 0x20292080
inc rax
jmp 0x20291f60
xor eax, eax
lea rcx, [0x205700d0]
lea rdx, [0x2047b460]
nop dword [rax]
movzx r8d, byte [rax + rdx]
mov r9d, r8d
xor r9b, r8b
not r9b
and r9b, byte [rax + rcx]
xor r9b, r8b
mov byte [rax + rcx], r9b
lea r8d, [rax + 1]
cmp r8d, 4
jg 0x20291fb8
inc rax
jmp 0x20291f90
mov al, 0xbe
xchg byte [0x205700d5], al
lea rax, [0x205700d0]
jmp 0x2029208f
xor eax, eax
lea rcx, [0x2056fff0]
lea rdx, [0x2047b3a0]
nop dword [rax]
movzx r9d, byte [rax + rcx]
movzx r10d, byte [rax + rdx]
mov r11d, r9d
xor r11b, r10b
mov ebx, r9d
not bl
mov esi, ebx
and sil, r10b
mov edi, r9d
and r9b, r10b
not r10b
and dil, r10b
or dil, sil
xor r10b, bl
or r9b, r10b
not r9b
or r9b, dil
not r9b
add r9b, r9b
add r9b, r11b
mov byte [rax + rcx], r9b
lea r9d, [rax + 1]
cmp r9d, 0xf
jg 0x20292031
inc rax
jmp 0x20291fe0
mov eax, r8d
not al
mov ecx, eax
and cl, 0x2e
and r8b, 0x2e
or r8b, al
not r8b
xor al, r8b
not al
and al, cl
xor r8b, cl
or r8b, al
add r8b, byte [0x205719d4]
add r8b, 0x8a
mov eax, r8d
xor al, 0xd
and r8b, 0xd
add r8b, r8b
add r8b, al
add r8b, 0x69
xchg byte [0x20570000], r8b
lea rax, [0x2056fff0]
jmp 0x2029208f
mov al, 0x6e
xchg byte [0x205700f0], al
lea rax, [0x205700e0]
pop rbx
pop rdi
pop rsi
ret