Function at 0x7ce650
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, qword [rsp + 0xc0]
mov ebx, dword [rsp + 0xc8]
test rsi, rsi
mov r12, rcx
mov rcx, r9
mov r15, rdx
mov rbp, r9
mov qword [rsp + 0xb0], r8
cmove rsi, r9
call fcn.00795270
mov edi, eax
test eax, eax
js 0x7ce7d6
cmp ebx, 0xffffffff
je 0x7ceac0
cmp ebx, 0xfffffffe
je 0x7ce7e3
cmp ebx, 0xfffffffd
jl 0x7cead0
mov rcx, qword [r12 + 0x18]
call fcn.00751330
mov rcx, r12
sub eax, 1
and eax, 7
mov r14d, eax
mov dword [rsp + 0x44], eax
call fcn.007c8590
mov r13d, eax
test r14d, r14d
jne 0x7ce6e7
mov byte [r15], 0
sub r13d, 1
add r15, 1
lea eax, [rdi + 1]
cmp eax, r13d
jge 0x7ce7b2
mov eax, r13d
sub eax, edi
mov dword [rsp + 0x38], eax
cmp ebx, 0xfffffffd
je 0x7ceab0
sub eax, 1
movsxd r14, ebx
cmp eax, ebx
jle 0x7ceaf0
test ebx, ebx
jle 0x7ceaa0
mov r8d, 0xc5
lea rdx, str.crypto_rsa_rsa_pss.c
mov rcx, r14
call fcn.007a1c30
mov r12, rax
test rax, rax
je 0x7ceb21
mov edx, ebx
mov rcx, rax
call fcn.007c2ab0
test eax, eax
jle 0x7cea92
call fcn.00782cb0
mov r10, rax
xor eax, eax
test r10, r10
je 0x7ce779
xor r8d, r8d
mov rcx, r10
mov rdx, rbp
mov qword [rsp + 0x48], r10
call fcn.00782f30
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x7ce7f0
mov rcx, r10
mov dword [rsp + 0x38], eax
call fcn.00782cd0
mov r9d, 0xf7
mov rdx, r14
mov rcx, r12
lea r8, str.crypto_rsa_rsa_pss.c
call fcn.007a2040
mov eax, dword [rsp + 0x38]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0xba
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x6e
mov edx, 0x98
mov ecx, 4
call fcn.00780b20
movsxd r14, ebx
xor r10d, r10d
xor r12d, r12d
xor eax, eax
jmp 0x7ce779
mov ebx, 0xfffffffd
jmp 0x7ce6b4
mov rcx, r10
mov r8d, 8
lea rdx, [0x00d531b8]
call fcn.007831b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x7ce779
mov rdx, qword [rsp + 0xb0]
mov rcx, r10
movsxd r8, edi
call fcn.007831b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x7ce779
test ebx, ebx
je 0x7ce856
mov rcx, r10
mov r8, r14
mov rdx, r12
mov qword [rsp + 0x48], r10
call fcn.007831b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x7ce779
mov r11d, dword [rsp + 0x38]
xor r8d, r8d
mov rcx, r10
mov qword [rsp + 0x38], r10
sub r11d, 1
movsxd rbp, r11d
mov dword [rsp + 0x48], r11d
add rbp, r15
mov rdx, rbp
call fcn.00783250
mov r10, qword [rsp + 0x38]
test eax, eax
je 0x7ce779
mov r11d, dword [rsp + 0x48]
mov qword [rsp + 0x20], rsi
mov r9d, edi
mov r8, rbp
mov rcx, r15
mov qword [rsp + 0x38], r10
mov edx, r11d
call fcn.008c4640
mov r10, qword [rsp + 0x38]
mov edx, eax
xor eax, eax
test edx, edx
jne 0x7ce779
mov eax, r13d
sub eax, ebx
sub eax, edi
cdqe
lea rcx, [r15 + rax - 2]
xor byte [rcx], 1
test ebx, ebx
jle 0x7cea64
lea rdx, [r15 + rax - 1]
lea rax, [r15 + rax + 0xf]
cmp r12, rax
lea rax, [r12 + 0x10]
lea r8d, [rbx - 1]
setae r9b
cmp rdx, rax
setae al
or r9b, al
je 0x7ceb4f
cmp r8d, 0xe
jbe 0x7ceb4f
mov r8d, ebx
xor eax, eax
shr r8d, 4
shl r8, 4
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm1, xmmword [r12 + rax]
pxor xmm0, xmm1
movups xmmword [rdx + rax], xmm0
add rax, 0x10
cmp rax, r8
jne 0x7ce914
mov edx, ebx
and edx, 0xfffffff0
mov r8d, edx
lea rax, [rcx + r8 + 1]
cmp ebx, edx
je 0x7cea64
movzx ecx, byte [r12 + r8]
xor byte [rax], cl
lea ecx, [rdx + 1]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 1], cl
lea ecx, [rdx + 2]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 2], cl
lea ecx, [rdx + 3]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 3], cl
lea ecx, [rdx + 4]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 4], cl
lea ecx, [rdx + 5]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 5], cl
lea ecx, [rdx + 6]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 6], cl
lea ecx, [rdx + 7]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 7], cl
lea ecx, [rdx + 8]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 8], cl
lea ecx, [rdx + 9]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 9], cl
lea ecx, [rdx + 0xa]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xa], cl
lea ecx, [rdx + 0xb]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xb], cl
lea ecx, [rdx + 0xc]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xc], cl
lea ecx, [rdx + 0xd]
cmp ebx, ecx
jle 0x7cea64
movsxd rcx, ecx
add edx, 0xe
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xd], cl
cmp ebx, edx
jle 0x7cea64
movsxd rdx, edx
movzx edx, byte [r12 + rdx]
xor byte [rax + 0xe], dl
mov eax, dword [rsp + 0x44]
test eax, eax
je 0x7cea7f
mov ecx, 8
mov eax, 0xff
sub ecx, dword [rsp + 0x44]
sar eax, cl
and byte [r15], al
movsxd r13, r13d
mov eax, 1
mov byte [r15 + r13 - 1], 0xbc
jmp 0x7ce779
xor r10d, r10d
xor eax, eax
jmp 0x7ce779
xor r12d, r12d
jmp 0x7ce74e
lea ebx, [rax - 2]
movsxd r14, ebx
jmp 0x7ce713
mov ebx, eax
jmp 0x7ce6b4
mov dword [rsp + 0x20], 0xae
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x88
jmp 0x7ce7c7
mov dword [rsp + 0x20], 0xc1
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x6e
xor r12d, r12d
mov edx, 0x98
mov ecx, 4
call fcn.00780b20
xor r10d, r10d
xor eax, eax
jmp 0x7ce779
mov r8d, 0x41
mov edx, 0x98
mov ecx, 4
mov dword [rsp + 0x20], 0xc8
lea r9, str.crypto_rsa_rsa_pss.c
call fcn.00780b20
xor r10d, r10d
xor eax, eax
jmp 0x7ce779
mov edx, r8d
mov eax, 1
add rdx, 2
movzx r8d, byte [r12 + rax - 1]
xor byte [rcx + rax], r8b
add rax, 1
cmp rax, rdx
jne 0x7ceb5b
jmp 0x7cea64