Function at 0x20179400
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
test ecx, ecx
je 0x20179429
mov eax, 0x65e365cc
add eax, dword [0x205500b8]
cmp edx, eax
jne 0x2017945f
mov eax, dword [0x205b3cd4]
cmp eax, 0x55
jle 0x201795fa
jmp 0x20179607
test edx, edx
je 0x20179490
movzx eax, byte [0x2054eba4]
cmp al, 0x42
je 0x20179561
mov cl, 0xc
nop
mov al, 0xcb
lock cmpxchg byte [0x2054eba4], cl
je 0x201794aa
movzx edx, byte [0x205500c8]
add dl, 0xc1
cmp al, dl
jne 0x20179440
jmp 0x20179561
mov ecx, dword [0x205b3cd0]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, dword [0x205500b8]
lea r8d, [rcx + 0x65e365ce]
xor edx, edx
div r8d
add ecx, 0x65e365cc
cmp edx, ecx
je 0x20179731
jmp 0x2017973e
mov eax, dword [0x205b3cd0]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x20179580
jmp 0x2017956d
xor edx, edx
lea rax, [0x2054eba0]
lea rcx, [0x20471d90]
nop word [rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rcx]
mov r9d, r8d
xor r9b, r8b
not r9b
and r9b, byte [rdx + rax]
xor r9b, r8b
mov byte [rdx + rax], r9b
mov r8d, edx
xor r8d, 1
lea r9d, [rdx + rdx]
and r9d, 2
xor edx, r8d
not edx
and edx, r9d
xor edx, r8d
and r9d, r8d
add r9d, r9d
mov r8d, edx
xor r8d, r9d
and r9d, edx
lea edx, [r8 + r9*2]
cmp edx, 4
jl 0x201794c0
nop
mov eax, dword [0x205b3cd4]
cmp eax, 0x51
jg 0x20179510
xor eax, eax
mov cl, 1
nop
test al, al
je 0x20179528
test cl, cl
je 0x20179520
mov edx, dword [0x205b3cd4]
cmp edx, 0x26
jg 0x20179524
movzx eax, byte [0x205500c8]
mov ecx, eax
not cl
mov edx, eax
and dl, 0x3e
mov r8d, ecx
and r8b, 0xc1
or r8b, dl
xor al, 0x41
and cl, 0x3e
or cl, al
not cl
add cl, cl
add cl, r8b
xchg byte [0x2054eba4], cl
lea rax, [0x2054eba0]
jmp 0x201795f7
movzx eax, byte [0x2054ec46]
mov ecx, dword [0x205b3cd4]
cmp ecx, 0x40
jl 0x20179594
nop
movzx eax, byte [0x2054ec46]
mov eax, dword [0x205b3cd4]
cmp eax, 0x53
jge 0x20179580
jmp 0x2017956d
cmp al, 0x5a
je 0x201795f0
mov cl, 0xd9
nop word [rax + rax]
mov al, 0x72
lock cmpxchg byte [0x2054ec46], cl
je 0x201795b2
cmp al, 0x5a
jne 0x201795a0
jmp 0x201795f0
xor eax, eax
lea rcx, [0x2054ec40]
lea rdx, [0x20471e30]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 5
jg 0x201795e8
inc rax
jmp 0x201795d0
mov al, 0x5a
xchg byte [0x2054ec46], al
lea rax, [0x2054ec40]
pop rdi
pop rsi
ret
movzx eax, byte [0x2054eb0f]
xor ecx, ecx
test cl, cl
je 0x20179610
movzx eax, byte [0x2054eb0f]
jmp 0x201795fa
cmp al, 0x77
je 0x20179725
mov cl, 0x75
lea rdx, [fcn.20179400]
lea eax, [rdx + rdx]
add eax, 0x820
mov r9d, eax
not r9d
lea r8d, [rdx + rdx]
add r8d, 0x821
and eax, r9d
or r8d, r9d
or r8d, eax
not r8d
mov r9d, 0x65e365cc
mov r10d, 0x65e365cd
nop word cs:[rax + rax]
mov al, 0x4b
lock cmpxchg byte [0x2054eb0f], cl
je 0x201796ad
mov r11d, dword [0x205500b8]
add r11d, r9d
cmp r8d, r11d
mov r11d, dword [0x205500b8]
add r11d, r10d
lea esi, [rdx + rdx]
add esi, 0x4c80
xor esi, r11d
mov edi, r11d
not edi
xor r11d, edi
and r11d, esi
xor r11d, edi
and edi, esi
or edi, r11d
cmp edi, 0xffffffff
jne 0x20179679
cmp al, 0x77
jne 0x20179660
jmp 0x20179725
xor edx, edx
lea rax, [0x2054eae0]
lea rcx, [0x20471cd0]
nop dword [rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rax]
movzx r9d, byte [rdx + rcx]
mov r10d, r8d
xor r10b, r9b
and r8b, r9b
add r8b, r8b
add r8b, r10b
mov byte [rdx + rax], r8b
mov r8d, dword [0x205500b8]
add edx, r8d
add edx, 0x65e365cd
cmp edx, 0x2f
jl 0x201796c0
mov al, 1
test al, al
je 0x2017971b
movzx eax, byte [0x205500c8]
add al, 0xf6
xchg byte [0x2054eb0f], al
mov eax, dword [0x205b3cd0]
lea ecx, [rax + 1]
imul ecx, eax
test cl, 1
je 0x20179725
mov al, 0x77
xchg byte [0x2054eb0f], al
jmp 0x201796fb
lea rax, [0x2054eae0]
jmp 0x201795f7
movzx eax, byte [0x2054ed43]
xor ecx, ecx
test cl, cl
je 0x20179747
movzx eax, byte [0x2054ed43]
jmp 0x20179731
cmp al, 0x7c
je 0x20179803
xor ecx, ecx
nop word cs:[rax + rax]
mov al, 0x3c
lock cmpxchg byte [0x2054ed43], cl
je 0x20179780
cmp al, 0x7c
jne 0x20179760
jmp 0x20179803
mov eax, dword [0x205b3cd0]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x2017979c
mov eax, dword [0x205b3cd4]
cmp eax, 0x3e
jge 0x20179780
cmp dword [0x205500b8], 0x9a1c9a34
jne 0x20179791
xor edx, edx
lea rax, [0x2054ed20]
lea rcx, [0x20471f10]
nop dword [rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rcx]
mov r9d, r8d
xor r9b, r8b
not r9b
and r9b, byte [rdx + rax]
xor r9b, r8b
mov byte [rdx + rax], r9b
add edx, 0x1b7dcb36
mov r8d, edx
xor r8d, 1
and edx, 1
lea edx, [r8 + rdx*2]
add edx, 0xe48234ca
cmp edx, 0x23
jl 0x201797c0
mov al, 0x7c
xchg byte [0x2054ed43], al
lea rax, [0x2054ed20]
jmp 0x201795f7