Function at 0x20398a00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
mov eax, ecx
xor r13d, r13d
mov rsi, rdx
jmp 0x20398a30
mov r10d, 0xe5cc266b
cmp edx, 8
jne 0x20398a61
mov esi, esi
mov r9d, r10d
mov edx, r9d
and edx, 0x1f
cmp edx, 7
jae 0x20398a20
cmp edx, 2
jbe 0x20398a82
cmp edx, 5
jae 0x20398aba
mov r10d, 0x6715c302
cmp edx, 3
je case.default.0x20398a72
mov r13b, 1
mov r9d, 0xae6a17ac
mov rdx, rax
mov r8, rsi
jmp 0x20398a15
add edx, 0xfffffff9
lea rax, [0x2043ac98]
movsxd rdx, dword [rax + rdx*4]
add rdx, rax
jmp rdx
call fcn.203cba24
movzx r10d, al
jmp 0x20398dac
test edx, edx
je 0x20398bde
cmp edx, 2
jne 0x20398bf6
movzx edx, byte [0x20562a35]
cmp dl, 0xa6
jne 0x20398c2d
test r9d, 0x800
je 0x20399108
mov qword [rsp + 0x28], r8
jmp 0x20398e40
cmp edx, 6
jne 0x20398bb5
mov rbp, qword [rcx + 8]
test rbp, rbp
sete r12b
movzx eax, byte [0x20562a12]
cmp al, 0x72
je 0x203990b2
mov qword [rsp + 0x28], r8
test r9d, 0x4000
jne 0x20399176
jmp case.0x20398a72.1
movzx eax, byte [0x20562a89]
cmp al, 0xa7
jne 0x20398bca
test r9b, 0x40
jne 0x2039915b
jmp 0x203991b0
call fcn.200781e0
jmp 0x20398b89
mov rcx, rsi
call fcn.203c96b0
mov r10d, eax
jmp 0x20398dac
mov edx, dword [0x20562abc]
mov dword [0x20562ab8], 0x467f94a2
test ecx, ecx
je 0x20398c17
mov qword [rsp + 0x28], r8
test r9d, 0x200
je 0x2039916f
jmp 0x20399196
mov rdx, rsi
call fcn.203c93a0
jmp 0x20398b89
mov rcx, r8
call fcn.203c91d8
xor r10d, r10d
jmp 0x20398dac
movzx eax, byte [0x20562a75]
cmp al, 0x4d
jne 0x20398bd4
test r9w, r9w
jns 0x20398dd7
mov qword [rsp + 0x28], r8
lea rbp, [rsp + 0x30]
jmp 0x20399083
movzx eax, byte [0x20562a56]
cmp al, 0xc4
je 0x20398c21
mov qword [rsp + 0x28], r8
jmp 0x2039917f
mov qword [rsp + 0x28], r8
jmp 0x203990c6
mov qword [rsp + 0x28], r8
jmp 0x20398c8d
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x38], 0
jmp 0x20398e0d
mov ecx, ecx
mov rdx, rsi
mov r9d, 0x9cdf449
call fcn.20398a00
mov ecx, eax
xor eax, eax
test r13b, 1
cmove rax, rcx
jmp 0x20398db6
test r9b, 0x20
jne 0x203991b0
lea r10, [0x20562a40]
jmp 0x20398dac
mov qword [rsp + 0x28], r8
jmp 0x20398f94
mov dl, 0x4e
mov al, 3
lock cmpxchg byte [0x20562a12], dl
mov edx, eax
je 0x20398cbd
cmp dl, 0x72
jne case.0x20398a72.1
jmp 0x203990b2
test r9d, 0x400
jne 0x20398c61
mov rax, qword [rsp + 0x30]
jmp 0x20398c6e
cmp al, 0xa7
jne 0x203990c6
jmp 0x2039915b
test rax, rax
jne 0x20398de0
test r9d, 0x10000
jne 0x20398fad
test r9b, r9b
js 0x20399167
mov dl, 0xe7
lea rbp, [rsp + 0x38]
mov qword [rsp + 0x40], r14
nop dword [rax]
mov al, 0xc9
lock cmpxchg byte [0x20562a75], dl
mov dword [0x20562ab4], 0xb66cb8a4
je 0x20398cd7
cmp al, 0x4d
jne 0x20398ca0
xor r12d, r12d
test r9d, 0x400
jne 0x20398dd7
mov qword [rsp + 0x40], r14
mov r14, rbp
mov r8d, r13d
jmp 0x20398cee
xor eax, eax
test r9b, 0x20
jne 0x20398e50
mov r8d, r13d
lea r14, [rsp + 0x50]
mov r12b, 1
lea r13, [0x2043ac00]
lea rbp, [r13 + 0x724b7968]
add r13, 0x724b7967
mov r10d, 0x724b7968
mov r11d, 0x724b7966
movabs rbx, 0xe38e38e38e38e38f
lea r15, [0x20562a00]
mov rax, r10
mul rbx
mov rdi, rdx
mov rax, r11
mul rbx
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rax, [rdx + rdx*8]
mov rdx, r13
sub rdx, rax
movzx eax, byte [r10 + r15 - 0x724b7968]
xor al, byte [rdx]
xor al, 0x23
mov byte [r10 + r15 - 0x724b7968], al
test r9b, 0x40
jne 0x20398da6
shr rdi, 3
and rdi, 0xfffffffffffffffe
lea rax, [rdi + rdi*8]
neg rax
movzx edx, byte [r10 + r15 - 0x724b7967]
xor dl, byte [rbp + rax]
xor dl, 0x23
mov byte [r10 + r15 - 0x724b7967], dl
cmp r10, 0x724b7978
je 0x20398dc7
add rbp, 2
add r10, 2
add r13, 2
add r11, 2
test r9b, 0x40
je 0x20398d20
mov r10, rcx
mov r13d, r8d
xor eax, eax
test r13b, 1
cmove rax, r10
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r13d, r8d
mov rbp, r14
mov r14, qword [rsp + 0x40]
jmp 0x2039909d
lea r10, [0x20562a60]
jmp 0x20398dac
mov rax, qword [rsp + 0x30]
movzx edx, byte [rsi + rax - 1]
mov byte [rcx + rax - 1], dl
mov rax, qword [rsp + 0x30]
dec rax
mov qword [rsp + 0x30], rax
test r9d, 0x100
jne 0x20398c6e
jmp 0x2039915b
xor eax, eax
cmp qword [rsp + 0x38], rcx
jb 0x20398e28
xor r10d, r10d
test r9d, 0x200
cmove r10, qword [rsp + 0x28]
jmp 0x20398dac
test r9b, 0x40
jne 0x20398e50
mov rax, qword [rsp + 0x38]
movzx edx, byte [rsi + rax]
mov r8, qword [rsp + 0x28]
mov byte [r8 + rax], dl
inc qword [rsp + 0x38]
test r9d, 0x400
jne 0x20398e0d
jmp 0x20398ece
lea edx, [rax + 0x2ead2c9a]
mov r8d, 0xcccccccd
imul r8, rdx
shr r8, 0x24
shl r8d, 2
lea edx, [r8 + r8*4]
neg edx
add edx, eax
add edx, 0x2ead2c9a
cdqe
lea r10, [0x20562a60]
movzx r8d, byte [rax + r10]
lea r11, [0x2043ac60]
sub r11, rdx
xor r8b, byte [r11 + 0x13]
xor r8b, 0x56
mov byte [rax + r10], r8b
inc eax
cmp eax, 0x14
jle 0x20398e28
test r9d, 0x1000
jne 0x20398ec4
test r9d, 0x100
jne 0x20398f55
mov al, 0x4d
xchg byte [0x20562a75], al
jmp 0x20398dac
xor r12d, r12d
xor ebp, ebp
jmp case.0x20398a72.1
mov eax, 0x5d8aa0aa
mov edx, 0xa2755f6a
mov r8d, 1
mov r10d, 0x5d8aa0ab
mov r11d, 0xba2e8ba3
lea rdi, [0x20562a40]
lea rbx, [0x2043ac40]
nop dword [rax + rax]
mov r15d, edx
imul r15, r11
shr r15, 0x24
lea r12d, [r15 + r15*4]
lea r12d, [r15 + r12*4]
add r12d, r15d
lea r15d, [rax + r12]
add r12d, r10d
movzx ebp, byte [r8 + rdi - 1]
xor bpl, byte [r12 + rbx]
movzx r12d, byte [r8 + rdi]
xor bpl, 0xe9
xor r12b, byte [r15 + rbx]
mov byte [r8 + rdi - 1], bpl
xor r12b, 0xe9
mov byte [r8 + rdi], r12b
add eax, 0xfffffffe
add edx, 2
add r8, 2
add r10d, 0xfffffffe
cmp r8, 0x17
jne 0x20398f00
test r9d, 0x2000
jne 0x20398de0
mov al, 0xc4
xchg byte [0x20562a56], al
xor eax, eax
xor edx, edx
lea r10, [0x20562a40]
test r9d, 0x1000
jne 0x20398dac
cmp al, 0xa6
je 0x20399108
test r9b, 0x40
jne 0x20398dac
mov r8b, 0x41
mov al, 0x16
lock cmpxchg byte [0x20562a35], r8b
jne 0x20398f6e
test r9b, r9b
js 0x20399069
mov r8d, r13d
lea r12, [0x2043ac20]
lea r13, [r12 + 0x1b68e1fc]
add r12, 0x1b68e1fb
mov r10d, 0x1b68e1fc
mov r11d, 0x1b68e1fa
movabs rbx, 0xcccccccccccccccd
lea r15, [0x20562a20]
lea rbp, [0x20562a34]
jmp 0x20399028
test r9d, 0x200
je 0x20399064
shr rdi, 2
and rdi, 0xfffffffffffffffc
lea rax, [rdi + rdi*4]
neg rax
movzx eax, byte [r13 + rax]
xor al, 0xfb
add byte [r10 + r15 - 0x1b68e1fb], al
add r13, 2
add r10, 2
add r12, 2
add r11, 2
mov rax, r10
mul rbx
mov rdi, rdx
mov rax, r11
mul rbx
shr rdx, 2
and rdx, 0xfffffffffffffffc
lea rax, [rdx + rdx*4]
mov rdx, r12
sub rdx, rax
movzx eax, byte [rdx]
xor al, 0xfb
add byte [r10 + r15 - 0x1b68e1fc], al
cmp r10, 0x1b68e210
jne 0x20398ff0
mov r13d, r8d
jmp 0x20399076
mov r13d, r8d
jmp 0x203990c6
lea rbp, [rsp + 0x48]
mov r12b, 1
jmp 0x20398c47
test r9d, 0x4000
je 0x20399114
test r9b, 0x20
jne 0x203990c6
mov al, 0xa6
xchg byte [0x20562a35], al
test r9d, 0x2000
je 0x20399108
xor r12d, r12d
mov al, 0x72
xchg byte [0x20562a12], al
test r9d, 0x100
je 0x20398e0d
lea r10, [0x20562a00]
test r12b, 1
cmove r10, rbp
jmp 0x20398dac
mov dl, 0xa2
mov al, 0xa3
lock cmpxchg byte [0x20562a89], dl
jne 0x20398c51
test r9b, r9b
js 0x20398f55
xor byte [0x20562a80], 0xf
test r9d, 0x800
jne 0x20398b89
movabs rax, 0xf3350b747cb9a1ab
xor qword [0x20562a81], rax
jmp 0x2039912f
lea r10, [0x20562a20]
jmp 0x20398dac
mov dl, 0x41
mov al, 0x79
lock cmpxchg byte [0x20562a56], dl
je 0x20398ece
test r9w, r9w
js 0x2039914c
xor r14d, r14d
test r9d, 0x1000
jne 0x2039916f
mov al, 0xa7
xchg byte [0x20562a89], al
lea r10, [0x20562a80]
jmp 0x20398dac
xor ebp, ebp
cmp al, 0xc4
jne 0x20399076
jmp 0x20398c21
lea r10, [0x20562a80]
jmp 0x20398dac
mov r10, rcx
jmp 0x20398dac
cmp r14, qword [rsp + 0x48]
jae 0x20399167
movzx eax, byte [rsi + r14]
mov byte [rcx + r14], al
test r9d, 0x800
je 0x20399114
inc r14
mov edx, esi
test r9d, 0x200
je 0x2039916f
xor edx, 0x3238a1c3
mov rcx, rsi
mov edi, r9d
call fcn.20077cc0
mov r9d, edi
test r9b, 0x40
jne 0x2039915b
mov r10, rsi
jmp 0x20398dac