Function at 0x8c47d0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov r14, qword [rsp + 0x110]
mov rsi, qword [rsp + 0x118]
mov r13, rcx
mov qword [rsp + 0xf0], r8
mov r12d, r9d
lea ebx, [rdx - 1]
test r14, r14
je 0x8c4d70
test rsi, rsi
mov rcx, r14
mov r15d, ebx
cmove rsi, r14
call fcn.00795270
lea r11d, [rax + rax]
mov edi, eax
sub r15d, r11d
cmp r15d, r12d
jle 0x8c4d40
cmp r11d, ebx
jge 0x8c4d10
cdqe
mov byte [r13], 0
xor r9d, r9d
movsxd rdx, dword [rsp + 0x108]
mov qword [rsp + 0x28], 0
lea rbp, [r13 + rax + 1]
mov rcx, qword [rsp + 0x100]
mov qword [rsp + 0x20], r14
mov r8, rbp
mov dword [rsp + 0x44], r11d
mov qword [rsp + 0x38], rax
call fcn.00783760
mov r11d, dword [rsp + 0x44]
test eax, eax
jne 0x8c48d0
xor r12d, r12d
xor ebx, ebx
lea r14, [rsp + 0x50]
xor esi, esi
mov edx, 0x40
mov rcx, r14
call fcn.0081b4c0
mov r9d, 0x68
mov rdx, r12
mov rcx, rbx
lea r8, str.crypto_rsa_rsa_oaep.c
call fcn.007a2040
mov eax, esi
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, ebx
mov rax, qword [rsp + 0x38]
xor edx, edx
lea r14, [r13 + 1]
sub r9d, r12d
mov qword [rsp + 0x48], r14
sub r9d, r11d
lea rcx, [rbp + rax]
lea r8d, [r9 - 1]
mov dword [rsp + 0x44], r9d
movsxd r8, r8d
call sub.msvcrt.dll_memset
mov r9d, dword [rsp + 0x44]
movsxd rax, r12d
movsxd rcx, ebx
sub rcx, rax
mov rdx, qword [rsp + 0xf0]
sub rcx, qword [rsp + 0x38]
mov r8d, r12d
add r9d, edi
add rcx, rbp
movsxd r9, r9d
mov byte [rbp + r9 - 1], 1
call sub.msvcrt.dll_memcpy
mov edx, edi
mov rcx, r14
call fcn.007c2ab0
test eax, eax
jle 0x8c4882
add r15d, edi
mov r8d, 0x55
lea rdx, str.crypto_rsa_rsa_oaep.c
movsxd r12, r15d
mov rcx, r12
call fcn.007a1c30
mov rbx, rax
test rax, rax
je 0x8c4d90
mov qword [rsp + 0x20], rsi
mov r8, qword [rsp + 0x48]
mov r9d, edi
mov edx, r15d
mov rcx, rax
call fcn.008c4640
test eax, eax
js 0x8c4d80
test r15d, r15d
jle 0x8c4b30
mov rcx, qword [rsp + 0x38]
lea eax, [r15 - 1]
lea rdx, [r13 + rcx + 0x11]
cmp rbx, rdx
lea rdx, [rbx + 0x10]
setae cl
cmp rbp, rdx
setae dl
or cl, dl
je 0x8c4dc0
cmp eax, 0xe
jbe 0x8c4dc0
mov edx, r15d
xor eax, eax
shr edx, 4
shl rdx, 4
nop
movdqu xmm0, xmmword [rbp + rax]
movdqu xmm1, xmmword [rbx + rax]
pxor xmm0, xmm1
movups xmmword [rbp + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x8c49d0
mov eax, r15d
and eax, 0xfffffff0
cmp r15d, eax
je 0x8c4b30
mov edx, eax
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 1]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 2]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 3]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 4]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 5]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 6]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 7]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 8]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 9]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xa]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xb]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xc]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
lea edx, [rax + 0xd]
cmp r15d, edx
jle 0x8c4b30
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rbx + rdx]
xor byte [rbp + rdx], cl
cmp r15d, eax
jle 0x8c4b30
cdqe
movzx edx, byte [rbx + rax]
xor byte [rbp + rax], dl
nop
mov qword [rsp + 0x20], rsi
lea r14, [rsp + 0x50]
mov r9d, r15d
mov r8, rbp
mov edx, edi
mov rcx, r14
xor esi, esi
call fcn.008c4640
test eax, eax
js 0x8c488e
test edi, edi
jle 0x8c4d00
lea eax, [rdi - 1]
cmp eax, 0xe
jbe 0x8c4de9
movdqu xmm0, xmmword [r13 + 1]
mov eax, edi
pxor xmm0, xmmword [rsp + 0x50]
shr eax, 4
movups xmmword [r13 + 1], xmm0
cmp eax, 1
je 0x8c4bc3
movdqu xmm0, xmmword [r13 + 0x11]
pxor xmm0, xmmword [rsp + 0x60]
movups xmmword [r13 + 0x11], xmm0
cmp eax, 2
je 0x8c4bc3
movdqu xmm0, xmmword [r13 + 0x21]
pxor xmm0, xmmword [rsp + 0x70]
movups xmmword [r13 + 0x21], xmm0
cmp eax, 3
je 0x8c4bc3
movdqu xmm0, xmmword [r13 + 0x31]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [r13 + 0x31], xmm0
mov eax, edi
and eax, 0xfffffff0
cmp edi, eax
je 0x8c4d00
mov rsi, qword [rsp + 0x48]
movsxd rdx, eax
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 1]
cmp edx, edi
jge 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 2]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 3]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 4]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 5]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 6]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 7]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 8]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 9]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xa]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xb]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xc]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
lea edx, [rax + 0xd]
cmp edi, edx
jle 0x8c4d00
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rsp + rdx + 0x50]
xor byte [rsi + rdx], cl
cmp edi, eax
jle 0x8c4d00
cdqe
movzx edx, byte [rsp + rax + 0x50]
xor byte [rsi + rax], dl
nop word [rax + rax]
mov esi, 1
jmp 0x8c488e
mov dword [rsp + 0x20], 0x44
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x78
xor esi, esi
mov edx, 0x9a
mov ecx, 4
call fcn.00780b20
jmp 0x8c48b3
mov dword [rsp + 0x20], 0x3e
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x6e
xor esi, esi
mov edx, 0x9a
mov ecx, 4
call fcn.00780b20
jmp 0x8c48b3
call fcn.00796140
mov r14, rax
jmp 0x8c480d
xor esi, esi
lea r14, [rsp + 0x50]
jmp 0x8c488e
mov dword [rsp + 0x20], 0x57
lea r9, str.crypto_rsa_rsa_oaep.c
mov r8d, 0x41
xor esi, esi
mov edx, 0x9a
mov ecx, 4
lea r14, [rsp + 0x50]
call fcn.00780b20
jmp 0x8c488e
mov edx, eax
xor eax, eax
jmp 0x8c4dd3
mov rax, rcx
movzx ecx, byte [rbx + rax]
xor byte [rbp + rax], cl
lea rcx, [rax + 1]
cmp rax, rdx
jne 0x8c4dd0
jmp 0x8c4b30
xor eax, eax
jmp 0x8c4bd0