Function at 0x49ed60
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
cmp qword [rsp + 0x168], 0
mov ebp, dword [rsp + 0x150]
mov rdi, qword [rsp + 0x170]
mov qword [rsp + 0x130], rcx
mov r13, r8
mov esi, r9d
mov dword [rsp + 0x138], edx
je 0x49f4a0
mov rcx, qword [rsp + 0x168]
test rdi, rdi
cmove rdi, qword [rsp + 0x168]
call sym.EVP_MD_size
mov edx, dword [rsp + 0x138]
mov ebx, eax
test edx, edx
jle 0x49f5a0
test esi, esi
jle 0x49f5a0
movsxd r14, ebp
cmp esi, ebp
jg 0x49edeb
lea eax, [rax + rax + 2]
cmp eax, ebp
jle 0x49ee80
xor r15d, r15d
xor ebp, ebp
lea rsi, [rsp + 0x60]
xor r12d, r12d
mov r8d, 0x79
mov edx, 0x99
mov ecx, 4
mov dword [rsp + 0x20], 0xf4
lea r9, str.crypto_rsa_rsa_oaep.c
call sym.ERR_put_error
mov dword [rsp + 0x38], 0xffffffff
mov edx, 0x40
mov rcx, rsi
call sym.OPENSSL_cleanse
mov r9d, 0xf8
mov rdx, r15
mov rcx, r12
lea r8, str.crypto_rsa_rsa_oaep.c
call sym.CRYPTO_clear_free
mov r9d, 0xf9
mov rdx, r14
mov rcx, rbp
lea r8, str.crypto_rsa_rsa_oaep.c
call sym.CRYPTO_clear_free
mov eax, dword [rsp + 0x38]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, ebp
mov r8d, 0x9a
lea rdx, str.crypto_rsa_rsa_oaep.c
sub eax, ebx
mov dword [rsp + 0x50], eax
sub eax, 1
movsxd r15, eax
mov dword [rsp + 0x3c], eax
mov rcx, r15
call sym.CRYPTO_malloc
mov r12, rax
test rax, rax
je 0x49f4f0
cmp esi, ebp
je 0x49f490
mov r8d, 0xa1
lea rdx, str.crypto_rsa_rsa_oaep.c
mov rcx, r14
call sym.CRYPTO_zalloc
mov rbp, rax
test rax, rax
je 0x49f4b8
movsxd r8, esi
mov rcx, r14
mov rdx, r13
mov r13, rbp
sub rcx, r8
add rcx, rax
call sym.memcpy
movzx eax, byte [r13]
movsxd r10, ebx
mov qword [rsp + 0x20], rdi
mov edx, ebx
mov r9d, dword [rsp + 0x3c]
lea rsi, [rsp + 0x60]
mov qword [rsp + 0x48], r10
mov byte [rsp + 0x57], al
lea rax, [r10 + 1]
mov rcx, rsi
lea r11, [r13 + rax]
mov qword [rsp + 0x58], rax
mov r8, r11
mov qword [rsp + 0x40], r11
call sym.PKCS1_MGF1
mov dword [rsp + 0x38], 0xffffffff
test eax, eax
jne 0x49ee24
test ebx, ebx
mov r11, qword [rsp + 0x40]
mov r10, qword [rsp + 0x48]
jle 0x49f140
lea rax, [r13 + 0x11]
lea rdx, [r13 + 1]
cmp rsi, rax
lea rax, [rsp + 0x70]
lea ecx, [rbx - 1]
setae r8b
cmp rdx, rax
setae al
or r8b, al
je 0x49f530
cmp ecx, 0xe
jbe 0x49f530
movdqu xmm0, xmmword [r13 + 1]
mov eax, ebx
pxor xmm0, xmmword [rsp + 0x60]
shr eax, 4
movups xmmword [rsp + 0x60], xmm0
cmp eax, 1
je 0x49efe8
movdqu xmm0, xmmword [r13 + 0x11]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [rsp + 0x70], xmm0
cmp eax, 2
je 0x49efe8
movdqu xmm0, xmmword [r13 + 0x21]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [rsp + 0x80], xmm0
cmp eax, 3
je 0x49efe8
movdqu xmm0, xmmword [r13 + 0x31]
pxor xmm0, xmmword [rsp + 0x90]
movups xmmword [rsp + 0x90], xmm0
mov eax, ebx
and eax, 0xfffffff0
test bl, 0xf
je 0x49f140
movsxd rdx, eax
mov ecx, eax
movzx ecx, byte [r13 + rcx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 1]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 2]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 3]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 4]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 5]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 6]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 7]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 8]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 9]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xa]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xb]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xc]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xd]
cmp ebx, edx
jle 0x49f140
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
cmp ebx, eax
jle 0x49f140
cdqe
movzx edx, byte [r13 + rax + 1]
xor byte [rsp + rax + 0x60], dl
nop dword [rax]
mov qword [rsp + 0x20], rdi
mov edx, dword [rsp + 0x3c]
mov r9d, ebx
mov r8, rsi
mov rcx, r12
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x40], r11
call sym.PKCS1_MGF1
mov r11, qword [rsp + 0x40]
mov r10, qword [rsp + 0x48]
mov dword [rsp + 0x38], 0xffffffff
test eax, eax
mov edi, eax
jne 0x49ee24
mov eax, dword [rsp + 0x3c]
test eax, eax
jle 0x49f340
mov eax, dword [rsp + 0x50]
lea rdx, [r13 + r10 + 0x11]
sub eax, 2
cmp r12, rdx
lea rdx, [r12 + 0x10]
setae cl
cmp r11, rdx
setae dl
or cl, dl
je 0x49f560
cmp eax, 0xe
jbe 0x49f560
mov edx, dword [rsp + 0x3c]
xor eax, eax
shr edx, 4
shl rdx, 4
nop dword [rax]
movdqu xmm0, xmmword [r11 + rax]
movdqu xmm1, xmmword [r12 + rax]
pxor xmm0, xmm1
movups xmmword [r12 + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x49f1c8
mov r9d, dword [rsp + 0x3c]
mov eax, r9d
and eax, 0xfffffff0
test r9b, 0xf
je 0x49f340
movsxd rdx, eax
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 1]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 2]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 3]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 4]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 5]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 6]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 7]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 8]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 9]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xa]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xb]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xc]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xd]
cmp r9d, edx
jle 0x49f340
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
cmp r9d, eax
jle 0x49f340
cdqe
movzx edx, byte [r11 + rax]
xor byte [r12 + rax], dl
nop
mov rax, qword [rsp + 0x168]
xor r9d, r9d
mov qword [rsp + 0x40], r10
lea r13, [rsp + 0xa0]
mov qword [rsp + 0x28], 0
movsxd rdx, dword [rsp + 0x160]
mov r8, r13
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x158]
call sym.EVP_Digest
mov dword [rsp + 0x38], 0xffffffff
test eax, eax
je 0x49ee24
mov r10, qword [rsp + 0x40]
movzx r11d, byte [rsp + 0x57]
mov rdx, r13
mov rcx, r12
mov r8, r10
mov dword [rsp + 0x38], r11d
call sym.CRYPTO_memcmp
mov r11d, dword [rsp + 0x38]
mov edx, r11d
lea r9d, [r11 - 1]
mov r11d, dword [rsp + 0x3c]
not edx
and edx, r9d
mov r9d, eax
sub eax, 1
not r9d
and r9d, eax
and r9d, edx
sar r9d, 0x1f
cmp ebx, r11d
jge 0x49edf8
mov r10, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x58]
xor r8d, r8d
jmp 0x49f3f4
add rcx, 1
movzx edx, byte [r12 + r10]
xor r10d, edi
mov eax, edx
xor eax, 1
movzx eax, al
mov ebx, eax
sub eax, 1
not ebx
and eax, ebx
mov ebx, r8d
not ebx
sar eax, 0x1f
and r10d, ebx
or r8d, eax
and r10d, eax
mov eax, edx
sub edx, 1
not eax
xor edi, r10d
mov r10, rcx
and edx, eax
sar edx, 0x1f
or edx, r8d
and r9d, edx
cmp r11d, ecx
jg 0x49f3f0
test r8d, r9d
je 0x49edf8
mov eax, dword [rsp + 0x3c]
add edi, 1
sub eax, edi
mov dword [rsp + 0x38], eax
cmp dword [rsp + 0x138], eax
jge 0x49f582
mov r8d, 0x6d
mov edx, 0x99
mov ecx, 4
mov dword [rsp + 0x20], 0xe8
lea r9, str.crypto_rsa_rsa_oaep.c
call sym.ERR_put_error
jmp 0x49edf8
xor ebp, ebp
jmp 0x49eef3
call sym.EVP_sha1
mov qword [rsp + 0x168], rax
jmp 0x49eda6
mov r8d, 0x41
mov edx, 0x99
mov ecx, 4
mov dword [rsp + 0x20], 0xa3
lea r9, str.crypto_rsa_rsa_oaep.c
lea rsi, [rsp + 0x60]
call sym.ERR_put_error
mov dword [rsp + 0x38], 0xffffffff
jmp 0x49ee24
mov dword [rsp + 0x20], 0x9c
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor ebp, ebp
mov edx, 0x99
mov ecx, 4
lea rsi, [rsp + 0x60]
call sym.ERR_put_error
mov dword [rsp + 0x38], 0xffffffff
jmp 0x49ee24
mov rax, rsi
lea r8, [rsp + rcx + 0x61]
nop dword [rax + rax]
movzx ecx, byte [rdx]
xor byte [rax], cl
add rax, 1
add rdx, 1
cmp rax, r8
jne 0x49f540
jmp 0x49f140
xor edx, edx
nop word [rax + rax]
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
mov rcx, rdx
add rdx, 1
cmp rcx, rax
jne 0x49f568
jmp 0x49f340
movsxd rdi, edi
movsxd r8, dword [rsp + 0x38]
mov rcx, qword [rsp + 0x130]
lea rdx, [r12 + rdi]
call sym.memcpy
jmp 0x49ee24
mov dword [rsp + 0x38], 0xffffffff
jmp 0x49ee61