Function at 0x200ad460
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov eax, edx
and eax, 0x1f
cmp eax, 0xd
jb 0x200ad4b2
cmp eax, 0x13
jae 0x200ad4ef
cmp eax, 0xf
ja 0x200ad541
cmp eax, 0xd
je 0x200ad751
cmp eax, 0xf
jne 0x200adbc3
test ecx, ecx
jne 0x200adb52
jmp 0x200ad738
cmp eax, 5
jae 0x200ad516
cmp eax, 1
jbe 0x200ad55f
cmp eax, 2
je 0x200ad762
cmp eax, 4
jne 0x200ad7bf
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x48], 0
jmp 0x200ad944
cmp eax, 0x16
jb 0x200ad57e
cmp eax, 0x17
jbe 0x200ad60b
cmp eax, 0x18
jne 0x200ad84d
lea rsi, [0x205ebf90]
jmp 0x200add26
cmp eax, 7
ja 0x200ad5d9
je 0x200ad6b8
cmp eax, 5
jne 0x200adb50
mov edx, 0xab065156
mov r11, r9
mov rsi, rcx
mov rcx, r9
jmp 0x200ad61a
cmp eax, 0x10
je 0x200ad799
cmp eax, 0x12
jne 0x200ad7d2
call fcn.20421e38
xor esi, esi
jmp 0x200add26
test eax, eax
je 0x200ad719
movzx eax, byte [0x2056a055]
cmp al, 0xb9
je 0x200ade75
mov esi, r9d
jmp 0x200ad673
mov rsi, r8
cmp eax, 0x15
je 0x200ad8f2
cmp eax, 0x13
jne 0x200ad6d5
mov edi, edx
xor eax, eax
sub eax, dword [r9 - 4]
cdqe
mov rbx, r9
lea rsi, [r9 + rax]
add rsi, 0xffffffffffffff68
mov r14, rcx
mov rcx, rsi
call fcn.200a7e10
test r14d, r14d
je 0x200add26
mov rcx, rsi
call fcn.200782c0
mov edx, edi
mov r9, rbx
test dl, dl
jns 0x200add26
jmp 0x200ade7e
cmp eax, 0xa
jae 0x200ad678
cmp eax, 8
jne 0x200ad8ce
mov rsi, rcx
mov rdi, r8
call fcn.2007ad00
test edi, edi
je 0x200add26
mov rcx, rsi
call fcn.200782c0
jmp 0x200add26
cmp eax, 0x16
jne 0x200ad8dd
mov r11, rcx
mov rsi, r9
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x38], r8
cmp rsi, r8
jae 0x200ad740
test edx, 0x400
jne 0x200ad911
xor eax, eax
nop word cs:[rax + rax]
cmp rcx, rax
je 0x200ad9d1
movzx r9d, byte [r8 + rax]
mov byte [rsi + rax], r9b
inc rax
test edx, 0x1000
jne 0x200ad650
mov rcx, r11
mov r9, rsi
jmp 0x200adb6f
je 0x200ad930
cmp eax, 0xc
jne 0x200ad93c
movzx eax, byte [0x2056a095]
lea rsi, [0x2056a080]
cmp al, 0x62
je 0x200add26
mov cl, 0xfc
mov al, 0xd5
lock cmpxchg byte [0x2056a095], cl
je 0x200adaa0
cmp al, 0x62
jne 0x200ad69f
jmp 0x200add26
movzx eax, byte [0x2056a0a9]
cmp al, 0x22
je 0x200adeda
test dl, 0x20
jne 0x200ade8a
jmp 0x200adbc3
movzx eax, byte [0x2056a153]
cmp al, 0x20
je 0x200ad9c5
mov cl, 0xef
nop word cs:[rax + rax]
mov al, 0xd9
lock cmpxchg byte [0x2056a153], cl
je 0x200ad99f
cmp al, 0x20
jne 0x200ad6f0
test dl, 0x40
jne 0x200ad9c5
lea rsi, [0x2056a060]
jmp 0x200add26
test r9d, r9d
je 0x200ad738
mov rcx, r8
mov edi, edx
mov rsi, r8
call fcn.200782c0
mov r8, rsi
test dil, 0x20
je 0x200adbd2
mov rsi, r8
jmp 0x200add26
xor r10d, r10d
mov rcx, r11
mov r9, rsi
mov r11, rsi
jmp 0x200adb8f
mov rsi, rcx
test r8d, r8d
jne 0x200ade32
jmp 0x200add26
movzx eax, byte [0x2056a076]
lea rsi, [0x2056a060]
cmp al, 0x64
je 0x200add26
mov cl, 0x11
nop word [rax + rax]
mov al, 0x62
lock cmpxchg byte [0x2056a076], cl
je 0x200ada04
cmp al, 0x64
jne 0x200ad780
jmp 0x200add26
mov rax, qword [r8 + 0x38]
mov rbx, qword [rax]
test rbx, rbx
je 0x200ad95c
mov rdi, qword [r8 + 0x50]
cmp dword [rdi], 0
jg 0x200ade5b
lea r10, [r8 + 0x38]
jmp 0x200adddb
mov rcx, r8
mov edx, r9d
mov rsi, r8
call fcn.20423890
jmp 0x200add26
mov rdi, rcx
lea rax, [0x2046f1b8]
mov qword [r8], rax
mov rcx, r8
mov rbx, r8
call fcn.200a3bf0
mov rcx, rbx
lea rax, [0x2046e1c8]
mov qword [rbx], rax
mov rsi, qword [rbx + 0x60]
test rsi, rsi
je 0x200ad83d
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x200ad832
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x200ad832
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rsi
call fcn.200782c0
mov rcx, rbx
test edi, edi
jne 0x200ade32
mov rsi, rcx
jmp 0x200add26
cmp eax, 0x19
ja 0x200ad966
lea rax, [0x2046e1c8]
mov qword [r8], rax
mov rdi, qword [r8 + 0x60]
test rdi, rdi
je 0x200ada96
mov rsi, r9
mov r14, rcx
mov rbx, r8
mov ebp, edx
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x200ad9ef
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x200ad9ef
mov edx, ebp
test ebp, 0x200
mov r8, rbx
mov rcx, r14
mov r9, rsi
jne 0x200add95
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
jmp 0x200ad9ef
mov rcx, r8
call fcn.20421e98
xor esi, esi
jmp 0x200add26
mov esi, ecx
mov eax, 0x14
mov edx, 0x18f369d4
cmp eax, 0x15
jne 0x200ad58a
mov rsi, qword [rcx + 8]
test rsi, rsi
sete r10b
movzx eax, byte [0x20569ff2]
cmp al, 0xb9
jne 0x200adea0
jmp 0x200adec4
lea rdi, [rsp + 0x20]
lea r9, [rsp + 0x48]
lea rax, [rsp + 0x28]
lea r10, [rsp + 0x40]
mov rcx, r11
mov r8, rdi
jmp 0x200ade24
call fcn.20422308
mov esi, eax
jmp 0x200add26
test ecx, ecx
je 0x200add01
test dl, dl
jns 0x200add95
mov rcx, r9
mov rsi, r9
call fcn.200782c0
jmp 0x200add26
mov esi, 0xffffffff
jmp 0x200add26
mov rsi, rcx
mov rcx, r9
mov edi, edx
mov r14, r8
mov rbx, r9
call fcn.2007ad00
mov r9, rbx
mov rcx, rsi
mov r8, r14
mov edx, edi
test r8d, r8d
jne 0x200adda5
lea rsi, [rsp + 0x20]
test dl, dl
jns 0x200add26
jmp 0x200ade7e
xor byte [0x2056a150], 0x16
test dl, 0x20
jne 0x200add26
xor byte [0x2056a151], 0x3d
xor byte [0x2056a152], 0xaa
mov al, 0x20
xchg byte [0x2056a153], al
lea rsi, [0x2056a150]
jmp 0x200add26
test dl, 0x20
jne 0x200ada8c
test dl, dl
jns 0x200add26
mov rbx, r8
mov ebp, edx
lea rdi, [rsp + 0x50]
mov r14, r11
mov rcx, rdi
call fcn.200782c0
mov edx, ebp
mov r8, rbx
mov rcx, r14
jmp 0x200adbca
mov eax, 0xeb30ee6
mov ecx, 0xf14cf12c
mov edx, 1
mov r8d, 0xeb30ee7
mov r9d, 0xcccccccd
lea rsi, [0x2056a060]
lea r10, [0x2046f550]
nop dword [rax]
mov r11d, ecx
imul r11, r9
shr r11, 0x24
shl r11d, 2
lea r11d, [r11 + r11*4]
lea edi, [rax + r11]
add r11d, r8d
movzx ebx, byte [rdx + rsi - 1]
xor bl, byte [r11 + r10]
movzx r11d, byte [rdx + rsi]
xor bl, 0xb
xor r11b, byte [rdi + r10]
mov byte [rdx + rsi - 1], bl
xor r11b, 0xb
mov byte [rdx + rsi], r11b
add eax, 0xfffffffe
add ecx, 2
add rdx, 2
add r8d, 0xfffffffe
cmp rdx, 0x17
jne 0x200ada30
mov al, 0x64
xchg byte [0x2056a076], al
jmp 0x200add26
lea rsi, [rsp + 0x48]
jmp 0x200add26
xor eax, eax
mov esi, r9d
jmp 0x200adba1
mov ecx, 0xffffffff
lea r8, [rcx - 0x125ae37f]
add rcx, 0xffffffffeda51c82
xor r10d, r10d
movabs r11, 0x8618618618618619
lea rax, [0x2046f570]
mov edi, 0xeda51c77
add rdi, rax
lea rsi, [0x2056a080]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rdi
movzx eax, byte [r10 + rax + 9]
xor al, 0xc0
add byte [r10 + rsi], al
cmp r10, 0x14
je 0x200adb43
mov rax, rcx
sub rax, r9
shr rax, 1
add rax, r9
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rdi
add rax, 0xa
movzx eax, byte [rax + r10]
xor al, 0xc0
add byte [r10 + rsi + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x200adad6
mov al, 0x62
xchg byte [0x2056a095], al
jmp 0x200add26
ud2
mov rcx, r8
mov edi, edx
mov rbx, r8
mov rsi, r9
call fcn.200782c0
test dil, 0x40
cmovne rsi, rbx
jmp 0x200add26
mov r11b, 0xb6
mov al, 0x3e
lock cmpxchg byte [0x2056a055], r11b
jne 0x200adba1
mov r10b, 1
lea r11, [rsp + 0x48]
test edx, 0x2000
jne 0x200adbc3
test edx, 0x200
jne 0x200adbe2
mov r10, qword [rsp + 0x40]
jmp 0x200add43
test edx, 0x100
je 0x200adbca
lea r11, [rsp + 0x58]
cmp al, 0xb9
je 0x200ade3f
test edx, 0x800
jne 0x200adb6f
jmp 0x200add43
xor esi, esi
jmp 0x200add26
test esi, esi
je 0x200add13
mov rcx, r8
mov rsi, r8
call fcn.200782c0
jmp 0x200add26
mov eax, 0x4d0478e7
mov ecx, 0xb2fb872d
xor r8d, r8d
mov r11d, 0x86186187
lea rdi, [0x2056a040]
lea rsi, [0x2046f530]
nop word cs:[rax + rax]
mov ebx, ecx
imul rbx, r11
shr rbx, 0x20
mov r14d, ecx
sub r14d, ebx
shr r14d, 1
add r14d, ebx
shr r14d, 4
lea ebx, [r14 + r14*4]
lea ebx, [r14 + rbx*4]
add ebx, eax
movzx ebp, byte [r8 + rdi]
xor bpl, byte [rbx + rsi]
xor bpl, 0x6f
mov byte [r8 + rdi], bpl
cmp r8, 0x14
je 0x200add01
inc r8
dec eax
inc ecx
test dl, dl
jns 0x200adc10
add rsi, rbx
lea r8, [0x2046f4d0]
mov r9d, 0xefaeefc3
add r9, r8
mov ecx, 0xffffffff
add rcx, 0xffffffffefaeefc3
xor r11d, r11d
movabs rdi, 0xe38e38e38e38e38f
lea rbx, [0x20569fe0]
mov r14d, 0xefaeefc2
nop word cs:[rax + rax]
mov rax, rcx
mul rdi
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rax, [rdx + rdx*8]
mov rdx, r9
sub rdx, rax
mov r15, r8
sub r15, rax
add r15, r11
movzx eax, byte [r11 + rbx]
movzx ebp, byte [r11 + rbx + 1]
xor al, byte [r14 + r15]
xor al, 0x39
mov byte [r11 + rbx], al
xor bpl, byte [rdx]
xor bpl, 0x39
mov byte [r11 + rbx + 1], bpl
add r11, 2
add r9, 2
add rcx, 2
cmp r11, 0x12
jne 0x200adca0
mov al, 0xb9
xchg byte [0x20569ff2], al
jmp 0x200adec4
mov rsi, r9
test dl, 0x20
jne 0x200add26
mov al, 0xb9
xchg byte [0x2056a055], al
jmp 0x200add1f
test dl, 0x40
cmove rcx, r8
mov rsi, rcx
jmp 0x200add26
lea rsi, [0x2056a040]
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.20421ce0
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
test r10, r10
je 0x200add7a
test edx, 0x100
je 0x200adb52
mov rax, qword [rsp + 0x38]
movzx eax, byte [rax + r10 - 1]
mov rdi, qword [rsp + 0x20]
mov byte [rdi + r10 - 1], al
dec r10
test edx, 0x800
jne 0x200adb6f
jmp 0x200add43
lea r10, [rsp + 0x28]
lea rax, [rsp + 0x30]
lea rbx, [rsp + 0x48]
lea rdi, [rsp + 0x20]
jmp 0x200addfb
inc qword [rsp + 0x48]
mov rax, qword [rsp + 0x48]
cmp rax, qword [rsp + 0x28]
jae 0x200ade3f
test dl, 0x20
je 0x200ade63
mov rbx, qword [rsp + 0x48]
movzx eax, byte [r8 + rbx]
mov r10, qword [rsp + 0x50]
mov byte [r10 + rbx], al
test edx, 0x100
je 0x200add90
add rbx, r8
lea r10, [rsp + 0x38]
lea rax, [rsp + 0x28]
lea rdi, [rsp + 0x30]
mov esi, 0xffffffff
mov r11, qword [r8 + 0x40]
mov r11, qword [r11]
test r11, r11
je 0x200add26
test byte [r8 + 0x70], 4
jne 0x200add26
mov rsi, r9
test dl, 0x40
jne 0x200add26
mov esi, 0xffffffff
mov r9, qword [r8 + 0x68]
cmp r9, r11
cmovb r9, r11
cmp r9, rbx
jbe 0x200add26
add r8, 0x68
mov qword [r8], r9
sub r9d, dword [rax]
mov dword [rdi], r9d
test dl, 0x20
jne 0x200ade55
mov rsi, rcx
call fcn.200782c0
jmp 0x200add26
test edx, 0x400
jne 0x200add1f
mov rsi, qword [rsp + 0x58]
jmp 0x200add26
mov rax, qword [r10]
mov rbx, qword [rax]
movzx esi, byte [rbx]
jmp 0x200add26
mov rcx, r9
mov esi, edx
mov rdi, r9
call fcn.200782c0
mov r9, rdi
mov edx, esi
test dl, 0x40
jne 0x200add1f
mov rsi, r9
jmp 0x200add26
cmp al, 0x22
je 0x200adeda
xor r10d, r10d
mov cl, 0xb9
mov al, 6
lock cmpxchg byte [0x2056a0a9], cl
lea rsi, [rsp + 0x30]
je 0x200adee6
test dl, 0x40
je 0x200ade86
mov cl, 0x2a
nop word [rax + rax]
mov al, 0xab
lock cmpxchg byte [0x20569ff2], cl
je 0x200adc5d
cmp al, 0xb9
jne 0x200adeb0
test r10b, 1
je 0x200add26
lea rsi, [0x20569fe0]
jmp 0x200add26
lea rsi, [0x2056a0a0]
jmp 0x200add26
xor byte [0x2056a0a0], 0x66
xor dword [0x2056a0a2], 0xf055d564
xor byte [0x2056a0a6], 0xde
not byte [0x2056a0a7]
lea rsi, [0x2056a0a0]
xor byte [0x2056a0a8], 0x8d
mov al, 0x22
xchg byte [0x2056a0a9], al
jmp 0x200add26