Function at 0x6a3950
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
mov r15, qword [rsp + 0x100]
mov r12, qword [rsp + 0x108]
mov qword [rsp + 0xe0], r8
mov rbp, rcx
mov edi, r9d
lea ebx, [rdx - 1]
test r15, r15
je 0x6a3f30
test r12, r12
mov rcx, r15
cmove r12, r15
call sym.EVP_MD_size
mov r10d, ebx
lea r11d, [rax + rax]
mov esi, eax
sub r10d, r11d
cmp r10d, edi
jle 0x6a3f00
cmp r11d, ebx
jge 0x6a3ed0
movsxd r14, eax
mov byte [rbp], 0
xor r9d, r9d
movsxd rdx, dword [rsp + 0xf8]
mov qword [rsp + 0x28], 0
mov rcx, qword [rsp + 0xf0]
lea r13, [rbp + r14 + 1]
mov qword [rsp + 0x20], r15
mov r8, r13
mov dword [rsp + 0x3c], r10d
mov dword [rsp + 0x30], r11d
call sym.EVP_Digest
mov r11d, dword [rsp + 0x30]
mov r10d, dword [rsp + 0x3c]
test eax, eax
jne 0x6a3a50
xor edi, edi
xor ebx, ebx
lea rcx, [rsp + 0x40]
xor r12d, r12d
mov edx, 0x40
call sym.OPENSSL_cleanse
mov r9d, 0x68
mov rdx, rdi
mov rcx, rbx
lea r8, str.crypto_rsa_rsa_oaep.c
call sym.CRYPTO_clear_free
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, ebx
xor edx, edx
lea rcx, [r13 + r14]
mov dword [rsp + 0x3c], r10d
sub r9d, edi
lea r15, [rbp + 1]
sub r9d, r11d
lea r8d, [r9 - 1]
mov dword [rsp + 0x30], r9d
movsxd r8, r8d
call sym.memset
mov r9d, dword [rsp + 0x30]
movsxd rax, edi
movsxd rcx, ebx
sub rcx, rax
mov rdx, qword [rsp + 0xe0]
mov r8d, edi
add r9d, esi
sub rcx, r14
movsxd r9, r9d
add rcx, r13
mov byte [r13 + r9 - 1], 1
call sym.memcpy
mov edx, esi
mov rcx, r15
call sym.RAND_bytes
test eax, eax
jle 0x6a3a07
mov r10d, dword [rsp + 0x3c]
mov r8d, 0x55
lea rdx, str.crypto_rsa_rsa_oaep.c
add r10d, esi
movsxd rdi, r10d
mov dword [rsp + 0x30], r10d
mov rcx, rdi
call sym.CRYPTO_malloc
mov r10d, dword [rsp + 0x30]
test rax, rax
mov rbx, rax
je 0x6a3f50
mov qword [rsp + 0x20], r12
mov r9d, esi
mov r8, r15
mov edx, r10d
mov rcx, rax
mov dword [rsp + 0x30], r10d
call sym.PKCS1_MGF1
test eax, eax
js 0x6a3f40
mov r10d, dword [rsp + 0x30]
test r10d, r10d
jle 0x6a3cd8
lea rdx, [rbp + r14 + 0x11]
lea eax, [r10 - 1]
cmp rbx, rdx
lea rdx, [rbx + 0x10]
setae cl
cmp r13, rdx
setae dl
or cl, dl
je 0x6a3f88
cmp eax, 0xe
jbe 0x6a3f88
mov edx, r10d
xor eax, eax
shr edx, 4
shl rdx, 4
nop dword [rax]
movdqu xmm0, xmmword [r13 + rax]
movdqu xmm1, xmmword [rbx + rax]
pxor xmm0, xmm1
movups xmmword [r13 + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x6a3b60
mov eax, r10d
and eax, 0xfffffff0
test r10b, 0xf
je 0x6a3cd8
mov edx, eax
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 1]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 2]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 3]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 4]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 5]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 6]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 7]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 8]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 9]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 0xa]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 0xb]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 0xc]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
lea edx, [rax + 0xd]
cmp r10d, edx
jle 0x6a3cd8
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rbx + rdx]
xor byte [r13 + rdx], cl
cmp r10d, eax
jle 0x6a3cd8
cdqe
movzx edx, byte [rbx + rax]
xor byte [r13 + rax], dl
nop dword [rax]
mov qword [rsp + 0x20], r12
lea rcx, [rsp + 0x40]
mov r9d, r10d
mov r8, r13
mov edx, esi
mov qword [rsp + 0x30], rcx
xor r12d, r12d
call sym.PKCS1_MGF1
mov rcx, qword [rsp + 0x30]
test eax, eax
js 0x6a3a13
test esi, esi
jle 0x6a3ec0
lea eax, [rsi - 1]
cmp eax, 0xe
jbe 0x6a3faa
movdqu xmm0, xmmword [rbp + 1]
mov eax, esi
pxor xmm0, xmmword [rsp + 0x40]
shr eax, 4
movups xmmword [rbp + 1], xmm0
cmp eax, 1
je 0x6a3d68
movdqu xmm0, xmmword [rbp + 0x11]
pxor xmm0, xmmword [rsp + 0x50]
movups xmmword [rbp + 0x11], xmm0
cmp eax, 2
je 0x6a3d68
movdqu xmm0, xmmword [rbp + 0x21]
pxor xmm0, xmmword [rsp + 0x60]
movups xmmword [rbp + 0x21], xmm0
cmp eax, 3
je 0x6a3d68
movdqu xmm0, xmmword [rbp + 0x31]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [rbp + 0x31], xmm0
mov eax, esi
and eax, 0xfffffff0
test sil, 0xf
je 0x6a3ec0
movsxd rdx, eax
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 1]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 2]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 3]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 4]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 5]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 6]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 7]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 8]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 9]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 0xa]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 0xb]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 0xc]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
lea edx, [rax + 0xd]
cmp esi, edx
jle 0x6a3ec0
movsxd rdx, edx
add eax, 0xe
movzx r8d, byte [rsp + rdx + 0x40]
xor byte [r15 + rdx], r8b
cmp esi, eax
jle 0x6a3ec0
cdqe
movzx edx, byte [rsp + rax + 0x40]
xor byte [r15 + rax], dl
nop word [rax + rax]
mov r12d, 1
jmp 0x6a3a13
mov dword [rsp + 0x20], 0x43
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x78
xor r12d, r12d
mov edx, 0x9a
mov ecx, 4
call sym.ERR_put_error
jmp 0x6a3a35
mov dword [rsp + 0x20], 0x3d
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x6e
xor r12d, r12d
mov edx, 0x9a
mov ecx, 4
call sym.ERR_put_error
jmp 0x6a3a35
call sym.EVP_sha1
mov r15, rax
jmp 0x6a398d
xor r12d, r12d
lea rcx, [rsp + 0x40]
jmp 0x6a3a13
mov dword [rsp + 0x20], 0x57
mov ecx, 4
mov edx, 0x9a
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor r12d, r12d
call sym.ERR_put_error
lea rcx, [rsp + 0x40]
jmp 0x6a3a13
mov edx, eax
xor eax, eax
nop dword [rax]
movzx ecx, byte [rbx + rax]
xor byte [r13 + rax], cl
mov rcx, rax
add rax, 1
cmp rcx, rdx
jne 0x6a3f90
jmp 0x6a3cd8
xor eax, eax
jmp 0x6a3d77