Function at 0x66b870
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
lea ebx, [rdx - 1]
mov r13, rcx
mov qword [rsp + 0xe0], r8
mov ebp, r9d
call fcn.0053e540
mov r15d, ebx
mov rcx, rax
mov r12, rax
call fcn.0053d670
lea r11d, [rax + rax]
mov esi, eax
sub r15d, r11d
cmp ebp, r15d
jge 0x66bd90
cmp ebx, r11d
jle 0x66bd60
movsxd r14, eax
mov byte [r13], 0
xor r9d, r9d
movsxd rdx, dword [rsp + 0xf8]
mov qword [rsp + 0x28], 0
lea rdi, [r13 + r14 + 1]
mov rcx, qword [rsp + 0xf0]
mov qword [rsp + 0x20], r12
mov r8, rdi
mov dword [rsp + 0x34], r11d
call fcn.0052bb60
mov r11d, dword [rsp + 0x34]
test eax, eax
jne 0x66b950
xor ebp, ebp
xor ebx, ebx
lea r14, [rsp + 0x40]
xor edi, edi
mov edx, 0x40
mov rcx, r14
call fcn.005c43c0
mov r9d, 0x68
mov rdx, rbp
mov rcx, rbx
lea r8, str.crypto_rsa_rsa_oaep.c
call fcn.0054a440
mov eax, edi
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, ebx
lea rax, [r13 + 1]
lea rcx, [rdi + r14]
xor edx, edx
sub r9d, ebp
mov qword [rsp + 0x38], rax
sub r9d, r11d
lea r8d, [r9 - 1]
mov dword [rsp + 0x34], r9d
movsxd r8, r8d
call sub.msvcrt.dll_memset
mov r9d, dword [rsp + 0x34]
movsxd rax, ebp
movsxd rcx, ebx
sub rcx, rax
mov rdx, qword [rsp + 0xe0]
mov r8d, ebp
add r9d, esi
sub rcx, r14
movsxd r9, r9d
add rcx, rdi
mov byte [rdi + r9 - 1], 1
call sub.msvcrt.dll_memcpy
mov edx, esi
lea rcx, [r13 + 1]
call fcn.0056aeb0
test eax, eax
jle 0x66b906
add r15d, esi
mov r8d, 0x55
lea rdx, str.crypto_rsa_rsa_oaep.c
movsxd rbp, r15d
mov rcx, rbp
call fcn.0054a030
mov rbx, rax
test rax, rax
je 0x66bdd0
mov qword [rsp + 0x20], r12
mov r9d, esi
lea r8, [r13 + 1]
mov edx, r15d
mov rcx, rax
call fcn.00669c10
test eax, eax
js 0x66bdc0
test r15d, r15d
jle 0x66bb90
lea rdx, [r13 + r14 + 0x11]
lea eax, [r15 - 1]
cmp rbx, rdx
lea rdx, [rbx + 0x10]
setae cl
cmp rdi, rdx
setae dl
or cl, dl
je 0x66be00
cmp eax, 0xe
jbe 0x66be00
mov edx, r15d
xor eax, eax
shr edx, 4
shl rdx, 4
movdqu xmm0, xmmword [rdi + rax]
movdqu xmm1, xmmword [rbx + rax]
pxor xmm0, xmm1
movups xmmword [rdi + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x66ba41
mov eax, r15d
and eax, 0xfffffff0
cmp r15d, eax
je 0x66bb90
mov edx, eax
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 1]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 2]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 3]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 4]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 5]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 6]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 7]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 8]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 9]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xa]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xb]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xc]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xd]
cmp r15d, edx
jle 0x66bb90
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rbx + rdx]
xor byte [rdi + rdx], cl
cmp r15d, eax
jle 0x66bb90
cdqe
movzx edx, byte [rbx + rax]
xor byte [rdi + rax], dl
nop dword [rax + rax]
mov qword [rsp + 0x20], r12
lea r14, [rsp + 0x40]
mov r8, rdi
mov r9d, r15d
mov edx, esi
mov rcx, r14
xor edi, edi
call fcn.00669c10
test eax, eax
js 0x66b911
test esi, esi
jle 0x66bd54
lea eax, [rsi - 1]
cmp eax, 0xe
jbe 0x66be28
movdqu xmm0, xmmword [r13 + 1]
mov eax, esi
pxor xmm0, xmmword [rsp + 0x40]
shr eax, 4
movups xmmword [r13 + 1], xmm0
cmp eax, 1
je 0x66bc20
movdqu xmm0, xmmword [r13 + 0x11]
pxor xmm0, xmmword [rsp + 0x50]
movups xmmword [r13 + 0x11], xmm0
cmp eax, 2
je 0x66bc20
movdqu xmm0, xmmword [r13 + 0x21]
pxor xmm0, xmmword [rsp + 0x60]
movups xmmword [r13 + 0x21], xmm0
cmp eax, 3
je 0x66bc20
movdqu xmm0, xmmword [r13 + 0x31]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [r13 + 0x31], xmm0
mov eax, esi
and eax, 0xfffffff0
cmp esi, eax
je 0x66bd54
mov rdi, qword [rsp + 0x38]
movsxd rdx, eax
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 1]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 2]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 3]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 4]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 5]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 6]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 7]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 8]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 9]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xa]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xb]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xc]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
lea edx, [rax + 0xd]
cmp esi, edx
jle 0x66bd54
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rsp + rdx + 0x40]
xor byte [rdi + rdx], cl
cmp esi, eax
jle 0x66bd54
cdqe
movzx edx, byte [rsp + rax + 0x40]
xor byte [rdi + rax], dl
mov edi, 1
jmp 0x66b911
mov dword [rsp + 0x20], 0x44
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x78
xor edi, edi
mov edx, 0x9a
mov ecx, 4
call fcn.00528f20
jmp 0x66b936
mov dword [rsp + 0x20], 0x3e
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x6e
xor edi, edi
mov edx, 0x9a
mov ecx, 4
call fcn.00528f20
jmp 0x66b936
xor edi, edi
lea r14, [rsp + 0x40]
jmp 0x66b911
mov dword [rsp + 0x20], 0x57
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor edi, edi
mov edx, 0x9a
mov ecx, 4
lea r14, [rsp + 0x40]
call fcn.00528f20
jmp 0x66b911
mov edx, eax
xor eax, eax
jmp 0x66be13
mov rax, rcx
movzx ecx, byte [rbx + rax]
xor byte [rdi + rax], cl
lea rcx, [rax + 1]
cmp rax, rdx
jne 0x66be10
jmp 0x66bb90
xor eax, eax
jmp 0x66bc2d