Function at 0x20179810
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rbx
test ecx, ecx
je 0x20179884
mov eax, 0xb57fef91
add eax, dword [0x205500b8]
mov ecx, eax
xor ecx, 0xcdc9dbdb
and eax, 0x4dc9dbdb
lea eax, [rcx + rax*2]
add eax, 0xe2999a60
cmp edx, eax
jne 0x20179956
movzx eax, byte [0x2054ecf8]
cmp al, 0x7f
je 0x20179bb4
xor ecx, ecx
nop
mov al, 0x89
lock cmpxchg byte [0x2054ecf8], cl
je 0x20179a1b
movzx edx, byte [0x205500c8]
mov r8d, edx
xor r8b, 1
and r8b, dl
xor dl, 0xfe
add r8b, r8b
add r8b, dl
cmp al, r8b
jne 0x20179850
jmp 0x20179bb4
test edx, edx
je 0x20179989
movzx eax, byte [0x2054ed0e]
nop word cs:[rax + rax]
cmp al, 0x3a
je 0x20179c42
movzx ecx, byte [0x205500c8]
lea eax, [rcx - 0x27]
add cl, 0xc2
lock cmpxchg byte [0x2054ed0e], cl
jne 0x201798a0
xor ecx, ecx
lea rdx, [0x2054ed00]
lea r8, [0x20471ef0]
xor eax, eax
jmp 0x20179907
mov r9d, 0x190d08a2
sub r9d, eax
mov eax, r9d
xor eax, 0x810f9191
and r9d, 0x10f9191
lea eax, [rax + r9*2]
neg eax
cmp eax, 0xe
jge 0x20179bc0
movsxd r9, eax
test cl, cl
jne 0x20179937
nop
movzx eax, byte [r9 + r8]
xor byte [r9 + rdx], al
mov eax, dword [0x205500b8]
add eax, r9d
mov r10d, dword [0x205b3cd0]
lea r11d, [r10 - 1]
imul r11d, r10d
test r11b, 1
je 0x201798e0
movzx eax, byte [r9 + rdx]
movzx r10d, byte [r9 + r8]
sub al, r10b
mul r10b
sub al, r10b
mul r10b
xor al, r10b
mov byte [r9 + rdx], al
jmp 0x20179910
movzx eax, byte [0x2054ed7d]
cmp al, 0x91
je 0x20179b66
mov cl, 4
nop word [rax + rax]
mov al, 0x8f
lock cmpxchg byte [0x2054ed7d], cl
je 0x20179ade
cmp al, 0x91
jne 0x20179970
jmp 0x20179b66
movzx eax, byte [0x2054eca2]
cmp al, 0x41
je 0x20179d93
mov cl, 0x45
mov r8b, 1
mov r9d, 0x65e365ce
nop word cs:[rax + rax]
mov eax, dword [0x205b3cd4]
cmp eax, 0x49
jg 0x201799f0
nop dword [rax + rax]
mov al, 0x53
lock cmpxchg byte [0x2054eca2], cl
sete dl
test r8b, r8b
je 0x201799f0
test dl, dl
jne 0x20179c4e
cmp al, 0x41
jne 0x201799b0
jmp 0x20179d93
mov al, 0x53
lock cmpxchg byte [0x2054eca2], cl
mov edx, dword [0x205b3cd0]
lea eax, [rdx - 1]
imul eax, edx
mov r10d, dword [0x205500b8]
add r10d, r9d
xor edx, edx
div r10d
test edx, edx
jne 0x201799f0
jmp 0x201799c0
mov edx, 0x65e365cd
xor r8d, r8d
lea r9, [0x2054ece0]
lea r10, [0x20471ed0]
xor r11d, r11d
nop word cs:[rax + rax]
mov eax, dword [0x205b3cd4]
cmp eax, 0x54
jg 0x20179a80
nop dword [rax + rax]
movzx eax, byte [r11 + r10]
xor byte [r11 + r9], al
test r8b, r8b
jne 0x20179a80
lea eax, [r11 + 1]
cmp eax, 0x17
jg 0x20179b72
dec edx
inc r11
jmp 0x20179a40
movzx ebx, byte [r11 + r10]
mov eax, ebx
sub al, byte [r11 + r9]
mul bl
add al, bl
mov cl, 0x5c
sub cl, al
mov eax, ecx
xor al, 0xa4
and cl, 0x24
add cl, cl
add cl, al
mov eax, ecx
mul bl
add al, 0xb8
mov ecx, ebx
neg cl
mov esi, eax
xor sil, cl
and al, cl
add al, al
add al, sil
add al, 0x48
mul bl
mov ecx, eax
neg cl
dec al
mov esi, ebx
xor sil, al
xor al, cl
and al, bl
xor al, cl
and sil, bl
add sil, sil
add sil, al
xor sil, bl
mov byte [r11 + r9], sil
jmp 0x20179a50
xor r8d, r8d
lea rax, [0x2054ed70]
lea rcx, [0x20471f60]
mov edx, 0x65e365cd
nop word cs:[rax + rax]
movsxd r8, r8d
movzx r9d, byte [r8 + rax]
movzx r10d, byte [r8 + rcx]
mov r11d, r9d
not r11b
mov ebx, r11d
xor bl, r10b
and r11b, r10b
xor r10b, r9b
and r9b, r10b
or r9b, bl
not r9b
not r10b
or r11b, r10b
not r11b
or r11b, r9b
mov byte [r8 + rax], r11b
mov r9d, dword [0x205500b8]
add r9d, edx
mov r10d, r9d
xor r10d, r10d
not r10d
and r10d, r8d
xor r10d, r9d
and r9d, r8d
lea r8d, [r10 + r9*2]
cmp r8d, 0xd
jl 0x20179b00
mov al, 0x91
xchg byte [0x2054ed7d], al
lea rax, [0x2054ed70]
jmp 0x20179d9a
mov al, 1
jmp 0x20179ba4
movzx ecx, byte [0x205500c8]
mov edx, ecx
xor dl, 0xfe
and cl, 0x7e
add cl, cl
mov r8d, edx
xor r8b, cl
and cl, dl
add cl, cl
add cl, r8b
xchg byte [0x2054ecf8], cl
test al, al
je 0x20179b80
mov cl, 0x7f
xchg byte [0x2054ecf8], cl
test al, al
je 0x20179b80
lea rax, [0x2054ece0]
jmp 0x20179d9a
mov ecx, 0x65e36618
mov r8d, 0x65e365cc
mov r9d, 0x65e365ce
nop word cs:[rax + rax]
mov eax, dword [0x205b3cd4]
mov edx, dword [0x205500b8]
add edx, ecx
cmp eax, edx
jge 0x20179c12
mov eax, dword [0x205b3cd0]
mov edx, 0xf61c4215
sub edx, eax
imul edx, eax
and edx, 1
mov eax, dword [0x205500b8]
add eax, r8d
cmp edx, eax
je 0x20179c33
mov edx, dword [0x205b3cd0]
lea eax, [rdx - 1]
imul eax, edx
mov r10d, dword [0x205500b8]
add r10d, r9d
xor edx, edx
div r10d
test edx, edx
jne 0x20179be0
jmp 0x20179bf2
movzx eax, byte [0x205500c8]
add al, 0xb9
xchg byte [0x2054ed0e], al
lea rax, [0x2054ed00]
jmp 0x20179d9a
mov eax, dword [0x205b3cd4]
lea rax, [fcn.20179810]
add eax, eax
add eax, 0x2fc0
mov ecx, eax
not ecx
nop word cs:[rax + rax]
mov edx, dword [0x205500b8]
mov r8d, 0x9a1c9a32
sub r8d, edx
add edx, 0x65e365cd
and r8d, ecx
and edx, eax
or edx, r8d
mov r8d, edx
xor r8d, ecx
test r8d, edx
jne 0x20179c70
xor r8d, r8d
lea r9, [0x2054ec90]
lea r10, [0x20471e80]
jmp 0x20179cbd
inc r8d
cmp r8d, 0x12
jge 0x20179d6c
cmp dword [0x205500b8], 0x9a1c9a34
movsxd r11, r8d
jne 0x20179d10
nop dword [rax]
movzx eax, byte [r11 + r9]
movzx ecx, byte [r11 + r10]
xor cl, al
mov edx, ecx
not dl
and dl, al
add dl, dl
add dl, cl
mov byte [r11 + r9], dl
mov eax, dword [0x205b3cd0]
mov ecx, dword [0x205500b8]
not ecx
add ecx, eax
mov edx, 0xac7333f4
sub edx, ecx
imul edx, eax
test dl, 1
je 0x20179cb0
nop dword [rax]
movzx eax, byte [r11 + r9]
movzx ecx, byte [r11 + r10]
sub al, cl
mul cl
mov edx, eax
mov ebx, eax
shl bl, cl
sub bl, al
sub al, bl
mul bl
mov ecx, eax
shl dl, cl
mov eax, edx
shl al, cl
add al, dl
mov byte [r11 + r9], al
mov ecx, dword [0x205b3cd0]
mov eax, ecx
not eax
lea eax, [rax + rcx*2]
imul eax, ecx
mov ecx, dword [0x205500b8]
mov edx, ecx
xor edx, 0x65e365ce
and ecx, 0x65e365ce
lea ecx, [rdx + rcx*2]
xor edx, edx
div ecx
test edx, edx
jne 0x20179d10
jmp 0x20179cd0
mov eax, dword [0x205b3cd4]
nop word cs:[rax + rax]
mov eax, dword [0x205b3cd4]
cmp eax, 0xb
jg 0x20179d80
mov al, 0x41
xchg byte [0x2054eca2], al
lea rax, [0x2054ec90]
pop rbx
pop rsi
ret