Function at 0x200afa10
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rsi, rdx
mov rbx, qword [rsp + 0xd8]
mov rdi, qword [rsp + 0xd0]
mov rax, qword [0x20562ac8]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov eax, ecx
and eax, 0x1f
cmp eax, 0xd
jae 0x200afaa9
cmp eax, 6
jae 0x200afb7d
cmp eax, 3
jae 0x200afbf3
test eax, eax
je 0x200afd51
cmp eax, 2
jne 0x200afd99
mov rcx, qword [r9 + 8]
movzx eax, byte [0x20502772]
cmp al, 0xbe
je 0x200b0233
mov dl, 0x75
nop word cs:[rax + rax]
mov al, 0x9b
lock cmpxchg byte [0x20502772], dl
je 0x200b0177
cmp al, 0xbe
jne 0x200afa90
jmp 0x200b0233
mov r10d, ebx
xor ebp, ebp
mov r11d, esi
mov rdx, r8
jmp 0x200afac5
mov eax, ecx
and eax, 0x1f
cmp eax, 0x15
jbe 0x200afb00
cmp eax, 0x19
jbe 0x200afb20
cmp eax, 0x1c
jb 0x200afcc3
je 0x200afcf1
cmp eax, 0x1e
jae 0x200afe3b
mov ecx, 0xefc0fe6d
mov rdi, r10
jmp 0x200afac0
cmp eax, 0x10
jb 0x200afc50
cmp eax, 0x13
jb 0x200afb48
cmp eax, 0x14
jne 0x200afbaa
mov edx, edx
mov ecx, 0x61dd964e
jmp 0x200afac0
cmp eax, 0x16
je 0x200afce2
cmp eax, 0x17
jbe 0x200afd36
cmp eax, 0x19
je 0x200afe13
mov ecx, 0x9c12ec97
mov rdi, r11
jmp 0x200afac0
cmp eax, 0x10
je 0x200b04b1
cmp eax, 0x12
je 0x200b04c4
mov rdi, r9
sub rdi, rdx
test bpl, 1
cmove r14, r9
mov ecx, 0xded3a73c
mov bpl, 1
mov eax, 0x1c
mov rsi, rdx
jmp 0x200afaae
cmp eax, 9
jae 0x200afc16
cmp eax, 6
je 0x200afd82
cmp eax, 8
jne 0x200afdb8
mov rcx, rbx
mov rdx, r8
call fcn.203c93a0
xor esi, esi
jmp 0x200b0596
cmp eax, 0x13
jne 0x200afc82
movzx eax, byte [0x20502815]
lea rdx, [0x20502800]
cmp al, 0x30
je 0x200b02c6
mov r8b, 0x61
nop dword [rax]
mov al, 0x5f
lock cmpxchg byte [0x20502815], r8b
je 0x200b005a
test cl, 0x20
jne 0x200aff83
cmp al, 0x30
jne 0x200afbd0
jmp 0x200b02c6
je 0x200afd8f
cmp eax, 5
jne 0x200afde5
movzx eax, byte [0x20502829]
cmp al, 0x58
je 0x200b0584
jmp 0x200b04d1
cmp eax, 0xa
jbe 0x200afc97
cmp eax, 0xc
jne 0x200afe45
lea rax, [0x204122e8]
mov qword [rdi], rax
mov rbx, qword [rdi + 0x60]
test rbx, rbx
je 0x200b0065
mov rdx, qword [rbx + 8]
test rdx, rdx
je 0x200b02ce
mov rsi, rbx
jmp 0x200b050c
cmp eax, 0xd
je 0x200afef0
cmp eax, 0xf
jne 0x200aff29
test edx, edx
je 0x200afcd4
mov r15d, ecx
mov rcx, rsi
call fcn.20077cc0
mov ecx, r15d
test cl, 0x20
jne 0x200afdcd
jmp 0x200b058d
lock inc dword [rsi + 8]
test bpl, 1
jne 0x200b0593
xor esi, esi
jmp 0x200b0596
cmp eax, 9
jne 0x200afebb
mov rdi, r8
mov rcx, r8
call fcn.200799c0
test esi, esi
je 0x200b0419
mov rsi, rdi
mov rcx, rdi
call fcn.20077cc0
jmp 0x200b0596
cmp eax, 0x1a
jne 0x200aff44
test edx, edx
je 0x200b028a
test cl, 0x40
jne 0x200b058d
jmp 0x200b05c4
xor esi, esi
lock dec dword [rdx + 8]
cmove rsi, rdx
jmp 0x200b058d
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], 0
test rdi, rdi
je 0x200afd2e
xor eax, eax
nop dword [rax + rax]
movzx ecx, byte [rsi + rax]
mov rdx, qword [rsp + 0x40]
mov byte [rdx + rax], cl
mov rax, qword [rsp + 0x38]
inc rax
mov qword [rsp + 0x38], rax
cmp rax, rdi
jb 0x200afd10
mov rsi, rbx
jmp 0x200b058d
movzx eax, byte [0x205027f6]
cmp al, 0x3a
jne 0x200aff57
lea rsi, [0x205027e0]
jmp 0x200b058d
mov esi, ecx
mov rcx, rbx
mov rdi, r9
call fcn.200799c0
test edi, edi
je 0x200affd6
mov rcx, rbx
call fcn.20077cc0
test sil, 0x20
lea rsi, [0x205028d0]
cmovne rsi, rbx
jmp 0x200b0596
call fcn.20078210
movzx esi, al
jmp 0x200b0596
mov esi, 0xffffffff
jmp 0x200b0596
mov rax, qword [r9 + 8]
mov rcx, qword [rbx + 8]
cmp rcx, qword [rax + 8]
sete al
cmp dword [r9], esi
sete cl
and cl, al
movzx esi, cl
jmp 0x200b0596
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x50], rsi
cmp rdi, rsi
jae 0x200aff8b
xor ebp, ebp
test ecx, 0x100
jne 0x200afffa
lea rsi, [0x20502800]
jmp 0x200b058d
mov eax, 0xffffffff
mov rdx, qword [rsi + 0x38]
mov r8, qword [rdx]
test r8, r8
je 0x200affde
mov rcx, qword [rsi + 0x50]
cmp dword [rcx], 0
jle 0x200b0246
movzx eax, byte [r8]
mov rsi, rax
jmp 0x200b0596
test esi, esi
je 0x200affea
test cl, 0x20
jne 0x200b055e
mov esi, ecx
mov rcx, r9
mov rdi, r9
call fcn.20077cc0
mov r9, rdi
mov ecx, esi
jmp 0x200aff75
mov esi, 0xffffffff
jmp 0x200b058d
mov r15, r9
mov r13d, ecx
lea rax, [0x20413328]
mov qword [rsi], rax
mov rcx, rsi
call fcn.200a5960
lea rax, [0x204122e8]
mov qword [rsi], rax
mov rdi, qword [rsi + 0x60]
test rdi, rdi
je 0x200b007b
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x200b02d8
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
xor r12d, r12d
test rax, rax
je 0x200b04aa
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
xor ebp, ebp
mov ecx, r13d
jmp 0x200b0621
mov r15, r8
mov ebp, ecx
xor eax, eax
sub eax, dword [r9 - 4]
cdqe
mov r14, r9
lea rsi, [r9 + rax]
add rsi, 0xffffffffffffff68
mov rcx, rsi
call fcn.200a9d70
test ebx, ebx
je 0x200b0082
mov ecx, ebp
mov r8, r15
jmp 0x200b04ec
movzx eax, byte [0x205027d5]
lea rsi, [0x205027c0]
cmp al, 0x92
je 0x200b058d
mov cl, 0x84
nop dword [rax + rax]
mov al, 0xb8
lock cmpxchg byte [0x205027d5], cl
je 0x200b02df
cmp al, 0x92
jne 0x200aff10
jmp 0x200b058d
movzx eax, byte [0x205028d3]
cmp al, 0x9e
jne 0x200b0024
lea rsi, [0x205028d0]
jmp 0x200b058d
test bpl, 1
jne 0x200b0593
movzx esi, byte [rdx + 0x18]
jmp 0x200b0596
mov r8b, 0x90
nop word [rax + rax]
mov al, 0x35
lock cmpxchg byte [0x205027f6], r8b
je 0x200b009e
cmp al, 0x3a
jne 0x200aff60
test cl, 0x40
lea rax, [0x205027e0]
cmove r9, rax
mov rsi, r9
jmp 0x200b058d
test rbx, rbx
je 0x200b0419
mov rcx, rbx
and rcx, 3
je 0x200b03af
mov rdx, rbx
nop word cs:[rax + rax]
mov r8, qword [rsp + 0x50]
lea rax, [rdx - 1]
movzx r8d, byte [r8 + rdx - 1]
mov r9, qword [rsp + 0x58]
mov byte [r9 + rdx - 1], r8b
mov rdx, rax
dec rcx
jne 0x200affb0
jmp 0x200b03b2
mov rsi, rbx
jmp 0x200b0596
xor ebp, ebp
mov rdx, rsi
mov esi, 0xffffffff
jmp 0x200b0029
mov rsi, r9
test cl, cl
js 0x200b058d
jmp 0x200b0637
test rbx, rbx
je 0x200b0557
cmp rbx, 1
mov rdx, rbx
adc rdx, 0
mov eax, edx
and eax, 3
cmp rbx, 4
jae 0x200b0421
xor ecx, ecx
jmp 0x200b0482
mov rdx, rsi
xor esi, esi
test cl, 0x40
je 0x200b058d
mov r8b, 0xfa
lea rsi, [0x205028d0]
nop dword [rax]
mov al, 0x51
lock cmpxchg byte [0x205028d3], r8b
je 0x200b028f
cmp al, 0x9e
jne 0x200b0040
jmp 0x200b058d
mov r15, r9
xor r12d, r12d
jmp 0x200b05ce
test r8d, r8d
je 0x200b0419
mov rcx, rdi
call fcn.20077cc0
jmp 0x200b0419
xor ebp, ebp
jmp 0x200b05bf
test ebp, 0x100
je 0x200b0596
mov rsi, r14
mov rcx, r14
call fcn.20077cc0
jmp 0x200b0596
mov dword [rsp + 0x2c], ebp
mov qword [rsp + 0x30], r14
mov eax, 0x4bded579
mov r8d, 0xb4212a9d
mov r9d, 1
mov r10d, 0x4bded57a
mov r11d, 0xb4212a9c
mov ebx, 0xb21642c9
lea rsi, [0x205027e0]
lea r15, [0x20413700]
nop word [rax + rax]
mov r13d, r8d
imul r13, rbx
shr r13, 0x24
lea r12d, [r13 + r13*2]
shl r12d, 3
sub r12d, r13d
add r12d, eax
mov r13d, r11d
imul r13, rbx
shr r13, 0x24
lea r14d, [r13 + r13*2]
shl r14d, 3
sub r14d, r13d
add r14d, r10d
movzx r13d, byte [r9 + rsi - 1]
movzx ebp, byte [r9 + rsi]
xor r13b, byte [r14 + r15]
xor r13b, 0x68
mov byte [r9 + rsi - 1], r13b
xor bpl, byte [r12 + r15]
xor bpl, 0x68
mov byte [r9 + rsi], bpl
add eax, 0xfffffffe
add r8d, 2
add r9, 2
add r10d, 0xfffffffe
add r11d, 2
cmp r9, 0x17
jne 0x200b00e0
test cl, 0x20
jne 0x200b0394
mov al, 0x3a
xchg byte [0x205027f6], al
test byte [rsp + 0x2c], 1
mov r14, qword [rsp + 0x30]
jne 0x200b0593
jmp 0x200b0596
mov eax, 0x981a285a
mov edx, 0x67e5d7b8
mov r8d, 1
mov r9d, 0x981a285b
mov r10d, 0x67e5d7b7
mov r11d, 0xaf286bcb
lea rsi, [0x20502760]
lea rdi, [0x20413680]
nop word [rax + rax]
mov ebx, edx
imul rbx, r11
shr rbx, 0x20
mov r14d, edx
sub r14d, ebx
shr r14d, 1
add r14d, ebx
shr r14d, 4
lea ebx, [r14 + r14*8]
lea ebx, [r14 + rbx*2]
add ebx, eax
mov r14d, r10d
imul r14, r11
shr r14, 0x20
mov r15d, r10d
sub r15d, r14d
shr r15d, 1
add r15d, r14d
shr r15d, 4
lea r14d, [r15 + r15*8]
lea r14d, [r15 + r14*2]
add r14d, r9d
movzx ebp, byte [r14 + rdi]
xor bpl, 0xa6
add byte [r8 + rsi - 1], bpl
movzx ebx, byte [rbx + rdi]
xor bl, 0xa6
add byte [r8 + rsi], bl
add eax, 0xfffffffe
add edx, 2
add r8, 2
add r9d, 0xfffffffe
add r10d, 2
cmp r8, 0x13
jne 0x200b01b0
mov al, 0xbe
xchg byte [0x20502772], al
test rcx, rcx
lea rsi, [0x20502760]
cmovne rsi, rcx
jmp 0x200b0596
mov r9, qword [rsi + 0x40]
mov r10, qword [r9]
test r10, r10
je 0x200afe0b
test byte [rsi + 0x70], 4
jne 0x200afe0b
mov r9, qword [rsi + 0x68]
cmp r9, r10
cmovb r9, r10
cmp r9, r8
jbe 0x200afe0b
mov qword [rsi + 0x68], r9
sub r9d, dword [rdx]
mov dword [rcx], r9d
mov rax, qword [rsi + 0x38]
mov r8, qword [rax]
jmp 0x200afe07
mov rdx, rsi
jmp 0x200b02a4
xor byte [0x205028d0], 0x3f
xor byte [0x205028d1], 0x62
xor byte [0x205028d2], 0x17
test cl, cl
js 0x200b02c6
mov al, 0x9e
xchg byte [0x205028d3], al
test bpl, 1
jne 0x200b0593
lea rsi, [0x205028d0]
jmp 0x200b0596
mov rsi, rdx
jmp 0x200b058d
mov rsi, r8
xor ebp, ebp
jmp 0x200b0543
xor ebp, ebp
jmp 0x200b05b7
mov eax, 1
mov ecx, 0x95137a6e
mov edx, 0x6aec85a6
mov r8d, 0x95137a6f
mov r9d, 0x6aec85a5
mov r10d, 0x86186187
lea rsi, [0x205027c0]
lea r11, [0x204136e0]
nop
mov edi, r9d
imul rdi, r10
shr rdi, 0x20
mov ebx, r9d
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, r8d
movzx ebx, byte [rax + rsi - 1]
xor bl, byte [rdi + r11]
xor bl, 0xac
mov byte [rax + rsi - 1], bl
cmp rax, 0x15
je 0x200b0387
mov edi, edx
imul rdi, r10
shr rdi, 0x20
mov ebx, edx
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, ecx
movzx ebx, byte [rax + rsi]
mov edi, edi
xor bl, byte [rdi + r11]
xor bl, 0xac
mov byte [rax + rsi], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x200b0310
mov al, 0x92
xchg byte [0x205027d5], al
jmp 0x200b058d
mov rsi, rdx
lea rbx, [rsp + 0x40]
lea rcx, [rsp + 0x38]
mov r14, qword [rsp + 0x30]
mov ebp, dword [rsp + 0x2c]
jmp 0x200b0532
mov rax, rbx
cmp rbx, 4
jb 0x200b0419
mov rcx, rax
nop dword [rax + rax]
mov rdx, qword [rsp + 0x50]
movzx edx, byte [rdx + rax - 1]
mov r8, qword [rsp + 0x58]
mov byte [r8 + rax - 1], dl
mov rdx, qword [rsp + 0x50]
movzx edx, byte [rdx + rax - 2]
mov r8, qword [rsp + 0x58]
mov byte [r8 + rax - 2], dl
mov rdx, qword [rsp + 0x50]
movzx edx, byte [rdx + rax - 3]
mov r8, qword [rsp + 0x58]
mov byte [r8 + rax - 3], dl
mov rdx, qword [rsp + 0x50]
movzx edx, byte [rdx + rax - 4]
mov r8, qword [rsp + 0x58]
mov byte [r8 + rax - 4], dl
add rcx, 0xfffffffffffffffc
mov rax, rcx
jne 0x200b03c0
mov rsi, rdi
jmp 0x200b0596
and rdx, 0xfffffffffffffffc
xor ecx, ecx
mov r8, qword [rsp + 0x50]
movzx r8d, byte [r8 + rcx]
mov r9, qword [rsp + 0x58]
mov byte [r9 + rcx], r8b
mov r8, qword [rsp + 0x50]
movzx r8d, byte [r8 + rcx + 1]
mov r9, qword [rsp + 0x58]
mov byte [r9 + rcx + 1], r8b
mov r8, qword [rsp + 0x50]
movzx r8d, byte [r8 + rcx + 2]
mov r9, qword [rsp + 0x58]
mov byte [r9 + rcx + 2], r8b
mov r8, qword [rsp + 0x50]
movzx r8d, byte [r8 + rcx + 3]
mov r9, qword [rsp + 0x58]
mov byte [r9 + rcx + 3], r8b
add rcx, 4
cmp rdx, rcx
jne 0x200b0427
test rax, rax
je 0x200b0557
mov rdx, qword [rsp + 0x50]
movzx edx, byte [rdx + rcx]
mov r8, qword [rsp + 0x58]
mov byte [r8 + rcx], dl
inc rcx
dec rax
jne 0x200b048b
jmp 0x200b0557
xor ebp, ebp
jmp 0x200b05b7
test edx, edx
je 0x200aff83
mov rcx, r9
mov rsi, r9
jmp 0x200b05c7
mov rcx, rbx
call fcn.200a9aa0
jmp 0x200afd2e
mov dl, 0xe5
mov al, 0xad
lock cmpxchg byte [0x20502829], dl
je 0x200b055c
lea rsi, [rsp + 0x50]
cmp al, 0x58
je 0x200b0584
test cl, cl
js 0x200b04d1
mov ebx, ecx
mov rcx, rsi
mov r14, r8
call fcn.20077cc0
mov r8, r14
mov ecx, ebx
lea rbx, [rsp + 0x50]
lea rdx, [rsp + 0x48]
test cl, 0x40
je 0x200b0596
mov rsi, r8
mov rax, qword [rdx]
mov rax, qword [rax + 0x10]
mov rcx, rdx
call qword [case.0x200c7fcc.0]
mov rcx, rax
xor ebp, ebp
test rax, rax
je 0x200b0543
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x200c7fcc.0]
mov rcx, rbx
call fcn.20077cc0
test esi, esi
je 0x200b0557
mov rcx, rdi
call fcn.20077cc0
mov rsi, rdi
jmp 0x200b058d
xor ebp, ebp
movabs rax, 0xcc947c46a0a97f9a
xor qword [0x20502820], rax
xor byte [0x20502828], 0x87
mov al, 0x58
xchg byte [0x20502829], al
test bpl, 1
jne 0x200b0593
lea rsi, [0x20502820]
jmp 0x200b0596
test bpl, 1
je 0x200b0596
mov rsi, r14
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.203c9080
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rdi
call fcn.20077cc0
test r15d, r15d
je 0x200b058d
mov rcx, rsi
call fcn.20077cc0
jmp 0x200b058d
lea eax, [r12 + 0xfd64814]
mov edx, 0xb21642c9
imul rdx, rax
shr rdx, 0x24
lea eax, [rdx + rdx*2]
shl eax, 3
sub edx, eax
lea eax, [r12 + rdx]
add eax, 0xfd64814
movsxd r12, r12d
lea rdx, [0x20502800]
lea r8, [0x20413720]
sub r8, rax
movzx eax, byte [r8 + 0x16]
xor al, 0xe9
add byte [r12 + rdx], al
inc r12d
lea rdi, [rsp + 0x58]
cmp r12d, 0x14
jg 0x200b062b
test ecx, 0x200
je 0x200b05ce
jmp 0x200b05b7
mov rsi, rbx
test cl, 0x40
jne 0x200b058d
mov al, 0x30
xchg byte [0x20502815], al
test bpl, 1
jne 0x200b0593
lea rsi, [0x20502800]
jmp 0x200b0596