Function at 0x669da0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov r14, qword [rsp + 0x110]
mov rsi, qword [rsp + 0x118]
mov r13, rcx
mov qword [rsp + 0xf0], r8
mov r12d, r9d
lea ebx, [rdx - 1]
test r14, r14
je 0x66a340
test rsi, rsi
mov rcx, r14
mov r15d, ebx
cmove rsi, r14
call fcn.0053da30
lea r11d, [rax + rax]
mov edi, eax
sub r15d, r11d
cmp r15d, r12d
jle 0x66a310
cmp r11d, ebx
jge 0x66a2e0
cdqe
mov byte [r13], 0
xor r9d, r9d
movsxd rdx, dword [rsp + 0x108]
mov qword [rsp + 0x28], 0
lea rbp, [r13 + rax + 1]
mov rcx, qword [rsp + 0x100]
mov qword [rsp + 0x20], r14
mov r8, rbp
mov dword [rsp + 0x44], r11d
mov qword [rsp + 0x38], rax
call fcn.0052bf20
mov r11d, dword [rsp + 0x44]
test eax, eax
jne 0x669ea0
xor r12d, r12d
xor ebx, ebx
lea r14, [rsp + 0x50]
xor esi, esi
mov edx, 0x40
mov rcx, r14
call fcn.005c46c0
mov r9d, 0x68
mov rdx, r12
mov rcx, rbx
lea r8, str.crypto_rsa_rsa_oaep.c
call fcn.0054a800
mov eax, esi
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, ebx
mov rax, qword [rsp + 0x38]
xor edx, edx
lea r14, [r13 + 1]
sub r9d, r12d
mov qword [rsp + 0x48], r14
sub r9d, r11d
lea rcx, [rbp + rax]
lea r8d, [r9 - 1]
mov dword [rsp + 0x44], r9d
movsxd r8, r8d
call sub.msvcrt.dll_memset
mov r9d, dword [rsp + 0x44]
movsxd rax, r12d
movsxd rcx, ebx
sub rcx, rax
mov rdx, qword [rsp + 0xf0]
sub rcx, qword [rsp + 0x38]
mov r8d, r12d
add r9d, edi
add rcx, rbp
movsxd r9, r9d
mov byte [rbp + r9 - 1], 1
call sub.msvcrt.dll_memcpy
mov edx, edi
mov rcx, r14
call fcn.0056b270
test eax, eax
jle 0x669e52
add r15d, edi
mov r8d, 0x55
lea rdx, str.crypto_rsa_rsa_oaep.c
movsxd r12, r15d
mov rcx, r12
call fcn.0054a3f0
mov rbx, rax
test rax, rax
je 0x66a360
mov qword [rsp + 0x20], rsi
mov r8, qword [rsp + 0x48]
mov r9d, edi
mov edx, r15d
mov rcx, rax
call fcn.00669c10
test eax, eax
js 0x66a350
test r15d, r15d
jle 0x66a100
mov rcx, qword [rsp + 0x38]
lea eax, [r15 - 1]
lea rdx, [r13 + rcx + 0x11]
cmp rbx, rdx
lea rdx, [rbx + 0x10]
setae cl
cmp rbp, rdx
setae dl
or cl, dl
je 0x66a390
cmp eax, 0xe
jbe 0x66a390
mov edx, r15d
xor eax, eax
shr edx, 4
shl rdx, 4
nop
movdqu xmm0, xmmword [rbp + rax]
movdqu xmm1, xmmword [rbx + rax]
pxor xmm0, xmm1
movups xmmword [rbp + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x669fa0
mov eax, r15d
and eax, 0xfffffff0
cmp r15d, eax
je 0x66a100
mov edx, eax
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 1]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 2]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 3]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 4]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 5]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 6]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 7]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 8]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 9]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xa]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xb]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xc]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xd]
cmp r15d, edx
jle 0x66a100
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
cmp r15d, eax
jle 0x66a100
cdqe
movzx edx, byte [rbx + rax]
xor byte [rbp + rax], dl
nop
mov qword [rsp + 0x20], rsi
lea r14, [rsp + 0x50]
mov r9d, r15d
mov r8, rbp
mov edx, edi
mov rcx, r14
xor esi, esi
call fcn.00669c10
test eax, eax
js 0x669e5e
test edi, edi
jle 0x66a2d0
lea eax, [rdi - 1]
cmp eax, 0xe
jbe 0x66a3b9
movdqu xmm0, xmmword [r13 + 1]
mov eax, edi
pxor xmm0, xmmword [rsp + 0x50]
shr eax, 4
movups xmmword [r13 + 1], xmm0
cmp eax, 1
je 0x66a193
movdqu xmm0, xmmword [r13 + 0x11]
pxor xmm0, xmmword [rsp + 0x60]
movups xmmword [r13 + 0x11], xmm0
cmp eax, 2
je 0x66a193
movdqu xmm0, xmmword [r13 + 0x21]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [r13 + 0x21], xmm0
cmp eax, 3
je 0x66a193
movdqu xmm0, xmmword [r13 + 0x31]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [r13 + 0x31], xmm0
mov eax, edi
and eax, 0xfffffff0
cmp edi, eax
je 0x66a2d0
mov rsi, qword [rsp + 0x48]
movsxd rdx, eax
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 1]
cmp edx, edi
jge 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 2]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 3]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 4]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 5]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 6]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 7]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 8]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 9]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xa]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xb]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xc]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xd]
cmp edi, edx
jle 0x66a2d0
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
cmp edi, eax
jle 0x66a2d0
cdqe
movzx edx, byte [rsp + rax + 0x50]
xor byte [rsi + rax], dl
nop word [rax + rax]
mov esi, 1
jmp 0x669e5e
mov dword [rsp + 0x20], 0x44
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x78
xor esi, esi
mov edx, 0x9a
mov ecx, 4
call fcn.005292e0
jmp 0x669e83
mov dword [rsp + 0x20], 0x3e
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x6e
xor esi, esi
mov edx, 0x9a
mov ecx, 4
call fcn.005292e0
jmp 0x669e83
call fcn.0053e900
mov r14, rax
jmp 0x669ddd
xor esi, esi
lea r14, [rsp + 0x50]
jmp 0x669e5e
mov dword [rsp + 0x20], 0x57
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor esi, esi
mov edx, 0x9a
mov ecx, 4
lea r14, [rsp + 0x50]
call fcn.005292e0
jmp 0x669e5e
mov edx, eax
xor eax, eax
jmp 0x66a3a3
mov rax, rcx
movzx ecx, byte [rbx + rax]
xor byte [rbp + rax], cl
lea rcx, [rax + 1]
cmp rax, rdx
jne 0x66a3a0
jmp 0x66a100
xor eax, eax
jmp 0x66a1a0