Function at 0x615880
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 rdi, qword [rsp + 0xf0]
mov qword [rsp + 0xd8], rdx
mov r12, rcx
mov r14, r8
mov rbx, r9
call sym.EVP_MD_CTX_new
mov r13, rax
test rax, rax
je 0x615cc4
test rbx, rbx
mov rcx, r14
cmove rbx, r14
call sym.EVP_MD_size
mov ebp, eax
test eax, eax
js 0x615cc4
cmp dword [rsp + 0xf8], 0xffffffff
je 0x615d30
cmp dword [rsp + 0xf8], 0xfffffffd
jl 0x615d60
mov rcx, qword [r12 + 0x18]
mov r15d, 0xff
call sym.BN_num_bits
mov rcx, r12
lea esi, [rax - 1]
call sym.RSA_size
and esi, 7
movzx edx, byte [rdi]
mov ecx, esi
shl r15d, cl
and r15d, edx
jne 0x615ca0
test esi, esi
jne 0x61592c
add rdi, 1
sub eax, 1
lea edx, [rbp + 1]
cmp edx, eax
jge 0x615d80
mov r11d, eax
sub r11d, ebp
cmp dword [rsp + 0xf8], 0xfffffffd
je 0x615d40
lea edx, [r11 - 1]
cmp edx, dword [rsp + 0xf8]
jle 0x615db0
cdqe
cmp byte [rdi + rax - 1], 0xbc
jne 0x615d00
lea r10d, [r11 - 1]
mov r8d, 0x5d
mov dword [rsp + 0x34], r11d
lea rdx, str.crypto_rsa_rsa_pss.c
movsxd rcx, r10d
mov dword [rsp + 0x30], r10d
lea rax, [rdi + rcx]
mov qword [rsp + 0x38], rax
call sym.CRYPTO_malloc
mov r10d, dword [rsp + 0x30]
mov r11d, dword [rsp + 0x34]
test rax, rax
mov r12, rax
je 0x615e10
mov qword [rsp + 0x20], rbx
mov r8, qword [rsp + 0x38]
mov r9d, ebp
mov edx, r10d
mov rcx, rax
mov dword [rsp + 0x34], r11d
mov dword [rsp + 0x30], r10d
call sym.PKCS1_MGF1
test eax, eax
js 0x615cca
mov r10d, dword [rsp + 0x30]
mov r11d, dword [rsp + 0x34]
test r10d, r10d
jle 0x615b78
lea rdx, [rdi + 0xf]
lea eax, [r11 - 2]
sub rdx, r12
cmp rdx, 0x1e
jbe 0x615e40
cmp eax, 0xe
jbe 0x615e40
mov edx, r10d
xor eax, eax
shr edx, 4
shl rdx, 4
nop word [rax + rax]
movdqu xmm0, xmmword [r12 + rax]
movdqu xmm1, xmmword [rdi + rax]
pxor xmm0, xmm1
movups xmmword [r12 + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x615a18
mov eax, r10d
and eax, 0xfffffff0
test r10b, 0xf
je 0x615b78
movsxd rdx, eax
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 1]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 2]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 3]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 4]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 5]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 6]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 7]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 8]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 9]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xa]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xb]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xc]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xd]
cmp r10d, edx
jle 0x615b78
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rdi + rdx]
xor byte [r12 + rdx], cl
cmp r10d, eax
jle 0x615b78
cdqe
movzx edx, byte [rdi + rax]
xor byte [r12 + rax], dl
nop dword [rax]
movzx edx, byte [r12]
test esi, esi
jne 0x615dc0
test dl, dl
jne 0x615e91
cmp r11d, 2
jle 0x615de0
lea ecx, [r11 - 3]
mov eax, 1
add rcx, 2
jmp 0x615bbd
add rax, 1
cmp rax, rcx
je 0x615de0
movzx edx, byte [r12 + rax]
mov ebx, eax
test dl, dl
je 0x615bb0
add ebx, 1
cmp dl, 1
jne 0x615de0
cmp dword [rsp + 0xf8], 0xfffffffe
je 0x615bf0
mov eax, r10d
sub eax, ebx
cmp eax, dword [rsp + 0xf8]
jne 0x615e68
xor r8d, r8d
mov rdx, r14
mov rcx, r13
mov dword [rsp + 0x30], r10d
call sym.EVP_DigestInit_ex
test eax, eax
je 0x615cc7
mov r8d, 8
lea rdx, [0x008f5258]
mov rcx, r13
call sym.EVP_DigestUpdate
test eax, eax
je 0x615cc7
movsxd rsi, ebp
mov rdx, qword [rsp + 0xd8]
mov rcx, r13
mov r8, rsi
call sym.EVP_DigestUpdate
test eax, eax
je 0x615cc7
mov r10d, dword [rsp + 0x30]
cmp r10d, ebx
je 0x615c68
sub r10d, ebx
movsxd rdx, ebx
mov rcx, r13
add rdx, r12
movsxd r8, r10d
call sym.EVP_DigestUpdate
test eax, eax
je 0x615cc7
lea r14, [rsp + 0x40]
xor r8d, r8d
mov rcx, r13
mov rdx, r14
call sym.EVP_DigestFinal_ex
test eax, eax
je 0x615cc7
mov rdx, qword [rsp + 0x38]
mov r8, rsi
mov rcx, r14
call sym.memcmp
test eax, eax
jne 0x615e9b
mov r15d, 1
jmp 0x615cca
mov dword [rsp + 0x20], 0x46
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x85
mov edx, 0x7e
mov ecx, 4
call sym.ERR_put_error
xor r12d, r12d
xor r15d, r15d
mov r8d, 0x83
lea rdx, str.crypto_rsa_rsa_pss.c
mov rcx, r12
call sym.CRYPTO_free
mov rcx, r13
call sym.EVP_MD_CTX_free
mov eax, r15d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0x58
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x86
xor r12d, r12d
mov edx, 0x7e
mov ecx, 4
call sym.ERR_put_error
jmp 0x615cca
mov dword [rsp + 0xf8], eax
jmp 0x6158f2
cdqe
lea edx, [r11 - 2]
cmp byte [rdi + rax - 1], 0xbc
mov dword [rsp + 0xf8], edx
je 0x615969
jmp 0x615d00
mov dword [rsp + 0x20], 0x3f
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x88
jmp 0x615cb5
mov dword [rsp + 0x20], 0x4e
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x6d
mov edx, 0x7e
xor r12d, r12d
mov ecx, 4
call sym.ERR_put_error
jmp 0x615cca
mov dword [rsp + 0x20], 0x54
jmp 0x615d88
mov ecx, 8
mov eax, 0xff
sub ecx, esi
sar eax, cl
and edx, eax
mov byte [r12], dl
jmp 0x615b85
mov r8d, 0x87
mov edx, 0x7e
mov ecx, 4
mov dword [rsp + 0x20], 0x6a
lea r9, str.crypto_rsa_rsa_pss.c
call sym.ERR_put_error
jmp 0x615cca
mov r8d, 0x41
mov edx, 0x7e
mov ecx, 4
mov dword [rsp + 0x20], 0x5f
lea r9, str.crypto_rsa_rsa_pss.c
call sym.ERR_put_error
jmp 0x615cca
mov edx, eax
xor eax, eax
nop dword [rax]
movzx ecx, byte [rdi + rax]
xor byte [r12 + rax], cl
mov rcx, rax
add rax, 1
cmp rcx, rdx
jne 0x615e48
jmp 0x615b78
mov r8d, 0x88
mov edx, 0x7e
mov ecx, 4
mov dword [rsp + 0x20], 0x6e
lea r9, str.crypto_rsa_rsa_pss.c
call sym.ERR_put_error
jmp 0x615cca
mov ebx, 1
jmp 0x615bcb
mov r8d, 0x68
mov edx, 0x7e
mov ecx, 4
mov dword [rsp + 0x20], 0x7c
lea r9, str.crypto_rsa_rsa_pss.c
call sym.ERR_put_error
jmp 0x615cca