Function at 0x49fc00
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
mov r14d, dword [rsp + 0x150]
mov dword [rsp + 0x138], edx
mov r13, r8
mov r15d, r9d
mov qword [rsp + 0x130], rcx
call sym.EVP_sha1
mov rcx, rax
mov rsi, rax
call sym.EVP_MD_size
mov edx, dword [rsp + 0x138]
mov ebx, eax
test edx, edx
jle 0x4a0418
test r15d, r15d
jle 0x4a0418
movsxd rdi, r14d
cmp r15d, r14d
jg 0x49fc6f
lea eax, [rax + rax + 2]
cmp r14d, eax
jge 0x49fd00
xor ebp, ebp
xor r14d, r14d
lea r15, [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 + 0x30], 0xffffffff
mov edx, 0x40
mov rcx, r15
call sym.OPENSSL_cleanse
mov r9d, 0xf8
mov rdx, rbp
mov rcx, r12
lea r8, str.crypto_rsa_rsa_oaep.c
call sym.CRYPTO_clear_free
mov r9d, 0xf9
mov rdx, rdi
mov rcx, r14
lea r8, str.crypto_rsa_rsa_oaep.c
call sym.CRYPTO_clear_free
mov eax, dword [rsp + 0x30]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, r14d
mov r8d, 0x9a
lea rdx, str.crypto_rsa_rsa_oaep.c
sub eax, ebx
mov dword [rsp + 0x4c], eax
sub eax, 1
movsxd rbp, eax
mov dword [rsp + 0x48], eax
mov rcx, rbp
call sym.CRYPTO_malloc
mov r12, rax
test rax, rax
je 0x4a0360
cmp r15d, r14d
je 0x4a0318
mov r8d, 0xa1
lea rdx, str.crypto_rsa_rsa_oaep.c
mov rcx, rdi
call sym.CRYPTO_zalloc
mov r14, rax
test rax, rax
je 0x4a0320
movsxd r8, r15d
mov rcx, rdi
mov rdx, r13
mov r13, r14
sub rcx, r8
add rcx, rax
call sym.memcpy
movzx eax, byte [r13]
movsxd r10, ebx
mov qword [rsp + 0x20], rsi
mov edx, ebx
mov r9d, dword [rsp + 0x48]
lea r15, [rsp + 0x60]
mov qword [rsp + 0x40], r10
mov byte [rsp + 0x5b], al
lea rax, [r10 + 1]
mov rcx, r15
lea r11, [r13 + rax]
mov qword [rsp + 0x50], rax
mov r8, r11
mov qword [rsp + 0x38], r11
call sym.PKCS1_MGF1
mov dword [rsp + 0x30], 0xffffffff
test eax, eax
jne 0x49fca8
test ebx, ebx
mov r11, qword [rsp + 0x38]
mov r10, qword [rsp + 0x40]
jle 0x49ffc0
lea rax, [r13 + 0x11]
lea rdx, [r13 + 1]
cmp r15, rax
lea rax, [rsp + 0x70]
lea ecx, [rbx - 1]
setae r8b
cmp rdx, rax
setae al
or r8b, al
je 0x4a03a0
cmp ecx, 0xe
jbe 0x4a03a0
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 0x49fe6a
movdqu xmm0, xmmword [r13 + 0x11]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [rsp + 0x70], xmm0
cmp eax, 2
je 0x49fe6a
movdqu xmm0, xmmword [r13 + 0x21]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [rsp + 0x80], xmm0
cmp eax, 3
je 0x49fe6a
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 0x49ffc0
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 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 2]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 3]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 4]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 5]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 6]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 7]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 8]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 9]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xa]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xb]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xc]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
lea edx, [rax + 0xd]
cmp ebx, edx
jle 0x49ffc0
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r13 + rdx + 1]
xor byte [rsp + rdx + 0x60], cl
cmp ebx, eax
jle 0x49ffc0
cdqe
movzx edx, byte [r13 + rax + 1]
xor byte [rsp + rax + 0x60], dl
nop
mov qword [rsp + 0x20], rsi
mov edx, dword [rsp + 0x48]
mov r9d, ebx
mov r8, r15
mov rcx, r12
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r11
call sym.PKCS1_MGF1
mov r11, qword [rsp + 0x38]
mov r10, qword [rsp + 0x40]
mov dword [rsp + 0x30], 0xffffffff
test eax, eax
mov dword [rsp + 0x5c], eax
jne 0x49fca8
mov eax, dword [rsp + 0x48]
test eax, eax
jle 0x4a01d0
mov eax, dword [rsp + 0x4c]
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 0x4a03d0
cmp eax, 0xe
jbe 0x4a03d0
mov edx, dword [rsp + 0x48]
xor eax, eax
shr edx, 4
shl rdx, 4
nop word cs:[rax + 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 0x4a0050
mov r9d, dword [rsp + 0x48]
mov eax, r9d
and eax, 0xfffffff0
test r9b, 0xf
je 0x4a01d0
movsxd rdx, eax
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 1]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 2]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 3]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 4]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 5]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 6]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 7]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 8]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 9]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xa]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xb]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xc]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
lea edx, [rax + 0xd]
cmp r9d, edx
jle 0x4a01d0
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r11 + rdx]
xor byte [r12 + rdx], cl
cmp r9d, eax
jle 0x4a01d0
cdqe
movzx edx, byte [r11 + rax]
xor byte [r12 + rax], dl
nop word cs:[rax + rax]
mov qword [rsp + 0x20], rsi
movsxd rdx, dword [rsp + 0x160]
xor r9d, r9d
lea r13, [rsp + 0xa0]
mov rcx, qword [rsp + 0x158]
mov r8, r13
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x28], 0
call sym.EVP_Digest
mov dword [rsp + 0x30], 0xffffffff
test eax, eax
je 0x49fca8
mov r10, qword [rsp + 0x38]
movzx esi, byte [rsp + 0x5b]
mov rdx, r13
mov rcx, r12
mov r8, r10
mov qword [rsp + 0x30], r10
call sym.CRYPTO_memcmp
mov r9d, esi
sub esi, 1
not r9d
and esi, r9d
mov r9d, eax
sub eax, 1
not r9d
and r9d, eax
mov eax, dword [rsp + 0x48]
and r9d, esi
sar r9d, 0x1f
cmp ebx, eax
jge 0x49fc7c
mov r11d, dword [rsp + 0x5c]
mov r10, qword [rsp + 0x30]
xor r8d, r8d
mov ebx, eax
mov rcx, qword [rsp + 0x50]
jmp 0x4a027c
add rcx, 1
movzx edx, byte [r12 + r10]
xor r10d, r11d
mov eax, edx
xor eax, 1
movzx eax, al
mov esi, eax
sub eax, 1
not esi
and eax, esi
mov esi, r8d
not esi
sar eax, 0x1f
and r10d, esi
or r8d, eax
and r10d, eax
mov eax, edx
sub edx, 1
not eax
xor r11d, r10d
mov r10, rcx
and edx, eax
sar edx, 0x1f
or edx, r8d
and r9d, edx
cmp ebx, ecx
jg 0x4a0278
test r8d, r9d
je 0x49fc7c
mov ebx, dword [rsp + 0x48]
mov eax, r11d
add eax, 1
sub ebx, eax
mov dword [rsp + 0x30], ebx
cmp dword [rsp + 0x138], ebx
jge 0x4a03f8
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 0x49fc7c
xor r14d, r14d
jmp 0x49fd75
mov r8d, 0x41
mov edx, 0x99
mov ecx, 4
mov dword [rsp + 0x20], 0xa3
lea r9, str.crypto_rsa_rsa_oaep.c
lea r15, [rsp + 0x60]
call sym.ERR_put_error
mov dword [rsp + 0x30], 0xffffffff
jmp 0x49fca8
mov dword [rsp + 0x20], 0x9c
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor r14d, r14d
mov edx, 0x99
mov ecx, 4
lea r15, [rsp + 0x60]
call sym.ERR_put_error
mov dword [rsp + 0x30], 0xffffffff
jmp 0x49fca8
mov rax, r15
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 0x4a03b0
jmp 0x49ffc0
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 0x4a03d8
jmp 0x4a01d0
movsxd r8, dword [rsp + 0x30]
mov rcx, qword [rsp + 0x130]
cdqe
lea rdx, [r12 + rax]
call sym.memcpy
jmp 0x49fca8
mov dword [rsp + 0x30], 0xffffffff
jmp 0x49fce5