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

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x60
mov r14, r9
mov edi, r8d
mov rbx, rdx
mov rsi, rcx
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x58], rax
jmp 0x2022eea5
mov rsi, rbx
mov esi, esi
mov eax, edi
and eax, 0x1f
cmp eax, 0xd
jbe 0x2022eed0
cmp eax, 0x14
jae 0x2022ef7c
cmp eax, 0x10
jbe 0x2022ef22
cmp eax, 0x13
jne 0x2022ef66
mov edi, 0xfab77fc8
jmp 0x2022eea0
cmp eax, 7
jae 0x2022ef00
cmp eax, 3
jb 0x2022f0f1
cmp eax, 4
ja 0x2022efc9
cmp eax, 3
je 0x2022f02b
mov edi, 0x27d1d638
jmp 0x2022eea0
cmp eax, 8
jbe 0x2022f064
cmp eax, 0xa
jbe 0x2022f159
cmp eax, 0xb
jne 0x2022effe
mov edi, 0xfcdfed92
jmp 0x2022eea3
cmp eax, 0xe
je 0x2022f04d
cmp eax, 0x10
jne 0x2022f02b
mov rcx, qword [rsi + 0x38]
mov r8, qword [rcx]
test r8, r8
je 0x2022f22f
mov rdx, qword [rsi + 0x50]
cmp dword [rdx], 0
jle 0x2022f280
movzx eax, byte [r8]
test edi, 0x100
jne 0x2022efe5
jmp 0x2022f507
cmp eax, 0x11
jne 0x2022f032
test ebx, ebx
je 0x2022f256
jmp 0x2022f547
cmp eax, 0x17
jbe 0x2022f120
cmp eax, 0x18
jne 0x2022f1c9
movzx eax, byte [0x20598576]
lea rsi, [0x20598560]
cmp al, 0xed
je 0x2022f6cd
mov cl, 0x70
mov al, 0x7f
lock cmpxchg byte [0x20598576], cl
je 0x2022f39b
test dil, 0x20
je 0x2022f56e
cmp al, 0xed
jne 0x2022efa6
jmp 0x2022f6cd
cmp eax, 6
je 0x2022f02b
test r14d, r14d
je 0x2022f6cd
xor eax, eax
test edi, 0x100
je 0x2022f507
mov rcx, rsi
call fcn.200782c0
test edi, 0x400
jne 0x2022f6cd
jmp 0x2022f730
cmp eax, 0xc
jne 0x2022f02b
lea rax, [0x2046e1c8]
mov qword [rsi], rax
mov r14, qword [rsi + 0x60]
test r14, r14
je 0x2022f239
test dil, 0x20
jne 0x2022f289
xor eax, eax
jmp 0x2022f507
xor esi, esi
jmp 0x2022f6cd
movzx eax, byte [0x20598555]
cmp al, 0x7e
jne 0x2022f560
lea rsi, [0x20598540]
jmp 0x2022f6cd
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x40], r14
xor r15d, r15d
jmp 0x2022f819
cmp eax, 7
jne 0x2022f17d
lea rax, [0x2046f1b8]
mov qword [rsi], rax
mov rcx, rsi
call fcn.200a3bf0
lea rax, [0x2046e1c8]
mov qword [rsi], rax
mov r14, qword [rsi + 0x60]
test r14, r14
je 0x2022f0d8
mov rcx, qword [r14 + 8]
test rcx, rcx
je 0x2022f0c4
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x2022f0c4
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, r14
call fcn.200782c0
test edi, 0x800
jne 0x2022f36d
test ebx, ebx
jne 0x2022f6c5
test edi, 0x400
jne 0x2022f024
jmp 0x2022f6cd
test eax, eax
je 0x2022f248
cmp eax, 2
jne 0x2022f272
movzx eax, byte [0x205985a9]
lea rcx, [0x205985a0]
cmp al, 0xe9
jne 0x2022f304
mov rsi, rcx
jmp 0x2022f6cd
cmp eax, 0x15
jbe 0x2022f1f8
cmp eax, 0x17
jne 0x2022f2c8
xor eax, eax
sub eax, dword [rsi - 4]
cdqe
add rsi, rax
add rsi, 0xffffffffffffff78
mov rcx, rsi
call fcn.201162c0
test r14d, r14d
jne 0x2022f894
jmp 0x2022f6cd
cmp eax, 9
jne 0x2022f20e
movzx eax, byte [0x20598643]
cmp al, 0xb5
jne 0x2022f5f9
lea rsi, [0x20598640]
jmp 0x2022f6cd
movzx eax, byte [0x20598595]
cmp al, 0x42
je 0x2022f80d
test dil, 0x40
jne 0x2022f379
lea rsi, [0x205985a0]
movq xmm0, qword [0x205985a0]
paddb xmm0, xmmword [0x2047ae30]
movq qword [0x205985a0], xmm0
add byte [0x205985a8], 0xca
mov al, 0xe9
xchg byte [0x205985a9], al
jmp 0x2022f6cd
cmp eax, 0x19
ja 0x2022f2d7
test ebx, ebx
je 0x2022f396
test dil, 0x20
jne 0x2022f2ee
mov al, 0x42
xchg byte [0x20598595], al
lea rsi, [0x20598580]
jmp 0x2022f6cd
mov esi, 0xffffffff
cmp eax, 0x14
je 0x2022f6cd
movzx esi, bl
jmp 0x2022f6cd
test esi, esi
je 0x2022f2e9
test edi, 0x100
jne 0x2022f372
mov rcx, rbx
call fcn.200782c0
jmp 0x2022f805
mov eax, 0xffffffff
jmp 0x2022f507
test dil, 0x40
je 0x2022f41b
jmp 0x2022f6cd
mov qword [rsp + 0x30], r14
cmp rsi, rbx
jbe 0x2022f332
test dil, 0x20
je 0x2022f6cd
xor eax, eax
cmp rax, qword [rsp + 0x30]
jb 0x2022f741
jmp 0x2022f843
mov qword [rsp + 0x28], 0
jmp 0x2022f6e9
lea r9, [rsi + 0x38]
jmp 0x2022f4c3
mov rcx, qword [r14 + 8]
test rcx, rcx
je 0x2022f413
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x2022f413
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
jmp 0x2022f413
mov rcx, rsi
call fcn.20421e38
xor esi, esi
jmp 0x2022f6cd
cmp eax, 0x1a
jne 0x2022f37e
movzx esi, byte [rbx + 0x18]
jmp 0x2022f6cd
jmp 0x2022f83b
mov rcx, rsi
call fcn.200782c0
test dil, dil
jns 0x2022f6cd
jmp 0x2022f6e9
test dil, dil
js 0x2022f40e
mov dl, 0x15
mov al, 0xc9
lock cmpxchg byte [0x205985a9], dl
je 0x2022f196
test dil, 0x20
je 0x2022f6cd
cmp al, 0xe9
jne 0x2022f30f
jmp 0x2022f118
mov qword [rsp + 0x50], r14
test r14, r14
je 0x2022f4a6
mov rcx, r14
and rcx, 3
je 0x2022f44d
lea rax, [r14 - 1]
movzx edx, byte [rsi + rax]
mov byte [rbx + rax], dl
mov qword [rsp + 0x50], rax
dec rax
dec rcx
jne 0x2022f351
inc rax
jmp 0x2022f450
jmp 0x2022f820
mov eax, ebx
jmp 0x2022f801
jmp 0x2022f757
cmp eax, 0x1b
jbe 0x2022f428
mov rcx, rbx
call fcn.20423908
xor esi, esi
jmp 0x2022f6cd
jmp 0x2022f700
mov ecx, 0x77bedfee
xor r8d, r8d
movabs r9, 0x2e8ba2e8ba2e8ba3
lea r10, [0x2047afe0]
lea r11, [0x20598560]
mov rax, rcx
mul r9
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r10
movzx edx, byte [r8 + rax + 0x77bedfee]
movzx eax, byte [r8 + rax + 0x77bedfef]
xor dl, 0x7b
add byte [r8 + r11], dl
xor al, 0x7b
add byte [r8 + r11 + 1], al
add r8, 2
add rcx, 2
cmp r8, 0x16
jne 0x2022f3bb
mov al, 0xed
xchg byte [0x20598576], al
lea rsi, [0x20598560]
jmp 0x2022f6cd
lea r14, [rsp + 0x50]
mov rcx, r14
call fcn.200782c0
test ebx, ebx
jne 0x2022f6c5
jmp 0x2022f6cd
mov r9, qword [rbx + 8]
test r9, r9
sete r8b
movzx eax, byte [0x205984d2]
cmp al, 0x69
jne 0x2022f514
test dil, 0x40
je 0x2022f3fa
jmp 0x2022f873
mov rax, r14
cmp r14, 4
jb 0x2022f4a6
add rax, 0xfffffffffffffffc
lea rcx, [rax + 3]
movzx edx, byte [rsi + rax + 3]
mov byte [rbx + rax + 3], dl
mov qword [rsp + 0x50], rcx
lea rcx, [rax + 2]
movzx edx, byte [rsi + rax + 2]
mov byte [rbx + rax + 2], dl
mov qword [rsp + 0x50], rcx
lea rcx, [rax + 1]
movzx edx, byte [rsi + rax + 1]
mov byte [rbx + rax + 1], dl
mov qword [rsp + 0x50], rcx
movzx ecx, byte [rsi + rax]
mov byte [rbx + rax], cl
mov qword [rsp + 0x50], rax
add rax, 0xfffffffffffffffc
cmp rax, 0xfffffffffffffffc
jne 0x2022f45a
test dil, dil
js 0x2022f843
lea r9, [rsp + 0x38]
lea rcx, [rsp + 0x28]
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0x24]
mov eax, 0xffffffff
mov r10, qword [rsi + 0x40]
mov r10, qword [r10]
test r10, r10
je 0x2022f507
test byte [rsi + 0x70], 4
jne 0x2022f507
test edi, 0x200
jne 0x2022f50f
mov r11, qword [rsi + 0x68]
cmp r11, r10
cmovb r11, r10
cmp r11, r8
jbe 0x2022f507
mov qword [rsi + 0x68], r11
sub r11d, dword [rcx]
mov dword [rdx], r11d
mov rax, qword [r9]
mov r8, qword [rax]
jmp 0x2022f6a9
mov rsi, rax
jmp 0x2022f6cd
jmp 0x2022f748
test dil, 0x20
jne 0x2022f51f
jmp 0x2022f6f4
mov cl, 0x16
mov al, 0x34
lock cmpxchg byte [0x205984d2], cl
je 0x2022f61b
test edi, 0x400
je 0x2022f542
cmp al, 0x69
jne 0x2022f521
jmp 0x2022f851
jmp 0x2022f741
mov rcx, rsi
call fcn.200782c0
test edi, 0x100
jne 0x2022f82e
jmp 0x2022f6cd
mov cl, 0x66
mov al, 0x37
lock cmpxchg byte [0x20598555], cl
je 0x2022f577
cmp al, 0x7e
jne 0x2022f560
jmp 0x2022f041
mov eax, 1
mov ecx, 0x8de19306
mov edx, 0x721e6d0c
mov r8d, 0x8de19307
mov r9d, 0xcccccccd
lea rsi, [0x20598540]
lea r10, [0x2047afc0]
mov r11d, edx
imul r11, r9
shr r11, 0x24
shl r11d, 2
lea r11d, [r11 + r11*4]
lea edi, [r8 + r11]
movzx ebx, byte [rdi + r10]
xor bl, 0x4d
add byte [rax + rsi - 1], bl
cmp rax, 0x15
je 0x2022f5ec
add r11d, ecx
mov r11d, r11d
movzx r11d, byte [r11 + r10]
xor r11b, 0x4d
add byte [rax + rsi], r11b
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
jmp 0x2022f5a0
mov al, 0x7e
xchg byte [0x20598555], al
jmp 0x2022f6cd
mov cl, 0xf9
mov al, 0xb1
lock cmpxchg byte [0x20598643], cl
je 0x2022f713
lea r9, [rsp + 0x30]
xor r8d, r8d
cmp al, 0xb5
je 0x2022f6a9
test dil, dil
js 0x2022f5f9
mov ecx, 0x20e5c902
xor r10d, r10d
movabs r11, 0xe38e38e38e38e38f
lea rsi, [0x2047af60]
lea r14, [0x205984c0]
mov rax, rcx
mul r11
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rdx, [rdx + rdx*8]
mov rax, rsi
sub rax, rdx
movzx edx, byte [r10 + r14]
xor dl, byte [rax + r10 + 0x20e5c902]
xor dl, 5
mov byte [r10 + r14], dl
test edi, 0x100
je 0x2022f843
movzx edx, byte [r10 + r14 + 1]
xor dl, byte [rax + r10 + 0x20e5c903]
xor dl, 5
mov byte [r10 + r14 + 1], dl
cmp r10, 0x10
je 0x2022f6b8
add r10, 2
add rcx, 2
test edi, 0x100
jne 0x2022f640
jmp 0x2022f843
test dil, 0x40
je 0x2022ef51
jmp 0x2022f171
mov al, 0x69
xchg byte [0x205984d2], al
jmp 0x2022f873
mov rcx, rsi
call fcn.200782c0
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.20421ce0
mov rax, rsi
add rsp, 0x60
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
cmp qword [rsp + 0x28], r14
jae 0x2022f843
mov rax, qword [rsp + 0x28]
movzx ecx, byte [rsi + rax]
mov byte [rbx + rax], cl
test dil, 0x40
jne 0x2022f6cd
inc qword [rsp + 0x28]
test edi, 0x200
je 0x2022f6e9
add byte [0x20598640], 0x68
add byte [0x20598641], 0x5c
add byte [0x20598642], 0x45
test edi, 0x400
jne 0x2022f6cd
mov al, 0xb5
xchg byte [0x20598643], al
lea rsi, [0x20598640]
jmp 0x2022f6cd
movzx ecx, byte [rsi + rax]
mov byte [rbx + rax], cl
inc rax
cmp rax, qword [rsp + 0x30]
jb 0x2022f741
jmp 0x2022f843
mov cl, 9
mov al, 0xc7
lock cmpxchg byte [0x20598595], cl
jne 0x2022f801
test dil, dil
jns 0x2022f819
mov ecx, 0x5245556a
mov r8d, 0x52455568
xor r10d, r10d
movabs r11, 0x2e8ba2e8ba2e8ba3
lea r14, [0x2047b000]
lea r15, [0x20598580]
nop dword [rax + rax]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r14
add rax, 0x52455564
movzx eax, byte [r10 + rax + 5]
xor al, 0x95
add byte [r10 + r15], al
cmp r10, 0x14
je 0x2022f1da
shr r9, 2
imul rax, r9, 0xffffffffffffffea
add rax, r14
add rax, 0x5245556a
movzx eax, byte [rax + r10]
xor al, 0x95
add byte [r10 + r15 + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x2022f7a0
cmp al, 0x42
jne 0x2022f865
test edi, 0x200
je 0x2022f843
lea rsi, [0x20598580]
jmp 0x2022f6cd
cmp r15, qword [rsp + 0x48]
jae 0x2022f887
movzx eax, byte [r14 + r15]
movzx ecx, byte [rbx + r15]
cmp al, cl
jne 0x2022f84b
test dil, 0x40
jne 0x2022f547
inc r15
test edi, 0x1000
jne 0x2022f819
mov rsi, rbx
jmp 0x2022f6cd
xor r9d, r9d
xor r8d, r8d
test edi, 0x200
jne 0x2022f873
movzx eax, al
movzx ecx, cl
sub eax, ecx
mov dword [rsp + 0x24], eax
test edi, 0x400
jne 0x2022f757
jmp 0x2022f89e
lea rsi, [0x205984c0]
test r8b, 1
cmove rsi, r9
jmp 0x2022f6cd
mov dword [rsp + 0x24], 0
lea rsi, [rsp + 0x40]
test dil, 0x20
je 0x2022f6c5
mov esi, dword [rsp + 0x24]
jmp 0x2022f6cd