Function at 0x577480
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, qword [rsp + 0xc0]
mov ebx, dword [rsp + 0xc8]
test rsi, rsi
mov r12, rcx
mov rcx, r9
mov r15, rdx
mov rbp, r9
mov qword [rsp + 0xb0], r8
cmove rsi, r9
call fcn.0053d670
mov edi, eax
test eax, eax
js 0x577606
cmp ebx, 0xffffffff
je 0x5778f0
cmp ebx, 0xfffffffe
je 0x577613
cmp ebx, 0xfffffffd
jl 0x577900
mov rcx, qword [r12 + 0x18]
call fcn.004f9710
mov rcx, r12
sub eax, 1
and eax, 7
mov r14d, eax
mov dword [rsp + 0x44], eax
call fcn.00570990
mov r13d, eax
test r14d, r14d
jne 0x577517
mov byte [r15], 0
sub r13d, 1
add r15, 1
lea eax, [rdi + 1]
cmp eax, r13d
jge 0x5775e2
mov eax, r13d
sub eax, edi
mov dword [rsp + 0x38], eax
cmp ebx, 0xfffffffd
je 0x5778e0
sub eax, 1
movsxd r14, ebx
cmp eax, ebx
jle 0x577920
test ebx, ebx
jle 0x5778d0
mov r8d, 0xc5
lea rdx, str.crypto_rsa_rsa_pss.c
mov rcx, r14
call fcn.0054a030
mov r12, rax
test rax, rax
je 0x577951
mov edx, ebx
mov rcx, rax
call fcn.0056aeb0
test eax, eax
jle 0x5778c2
call fcn.0052b0b0
mov r10, rax
xor eax, eax
test r10, r10
je 0x5775a9
xor r8d, r8d
mov rcx, r10
mov rdx, rbp
mov qword [rsp + 0x48], r10
call fcn.0052b330
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x577620
mov rcx, r10
mov dword [rsp + 0x38], eax
call fcn.0052b0d0
mov r9d, 0xf7
mov rdx, r14
mov rcx, r12
lea r8, str.crypto_rsa_rsa_pss.c
call fcn.0054a440
mov eax, dword [rsp + 0x38]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0xba
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x6e
mov edx, 0x98
mov ecx, 4
call fcn.00528f20
movsxd r14, ebx
xor r10d, r10d
xor r12d, r12d
xor eax, eax
jmp 0x5775a9
mov ebx, 0xfffffffd
jmp 0x5774e4
mov rcx, r10
mov r8d, 8
lea rdx, [0x008d1858]
call fcn.0052b5b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x5775a9
mov rdx, qword [rsp + 0xb0]
mov rcx, r10
movsxd r8, edi
call fcn.0052b5b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x5775a9
test ebx, ebx
je 0x577686
mov rcx, r10
mov r8, r14
mov rdx, r12
mov qword [rsp + 0x48], r10
call fcn.0052b5b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x5775a9
mov r11d, dword [rsp + 0x38]
xor r8d, r8d
mov rcx, r10
mov qword [rsp + 0x38], r10
sub r11d, 1
movsxd rbp, r11d
mov dword [rsp + 0x48], r11d
add rbp, r15
mov rdx, rbp
call fcn.0052b650
mov r10, qword [rsp + 0x38]
test eax, eax
je 0x5775a9
mov r11d, dword [rsp + 0x48]
mov qword [rsp + 0x20], rsi
mov r9d, edi
mov r8, rbp
mov rcx, r15
mov qword [rsp + 0x38], r10
mov edx, r11d
call fcn.00669c10
mov r10, qword [rsp + 0x38]
mov edx, eax
xor eax, eax
test edx, edx
jne 0x5775a9
mov eax, r13d
sub eax, ebx
sub eax, edi
cdqe
lea rcx, [r15 + rax - 2]
xor byte [rcx], 1
test ebx, ebx
jle 0x577894
lea rdx, [r15 + rax - 1]
lea rax, [r15 + rax + 0xf]
cmp r12, rax
lea rax, [r12 + 0x10]
lea r8d, [rbx - 1]
setae r9b
cmp rdx, rax
setae al
or r9b, al
je 0x57797f
cmp r8d, 0xe
jbe 0x57797f
mov r8d, ebx
xor eax, eax
shr r8d, 4
shl r8, 4
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm1, xmmword [r12 + rax]
pxor xmm0, xmm1
movups xmmword [rdx + rax], xmm0
add rax, 0x10
cmp rax, r8
jne 0x577744
mov edx, ebx
and edx, 0xfffffff0
mov r8d, edx
lea rax, [rcx + r8 + 1]
cmp ebx, edx
je 0x577894
movzx ecx, byte [r12 + r8]
xor byte [rax], cl
lea ecx, [rdx + 1]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 1], cl
lea ecx, [rdx + 2]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 2], cl
lea ecx, [rdx + 3]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 3], cl
lea ecx, [rdx + 4]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 4], cl
lea ecx, [rdx + 5]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 5], cl
lea ecx, [rdx + 6]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 6], cl
lea ecx, [rdx + 7]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 7], cl
lea ecx, [rdx + 8]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 8], cl
lea ecx, [rdx + 9]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 9], cl
lea ecx, [rdx + 0xa]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xa], cl
lea ecx, [rdx + 0xb]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xb], cl
lea ecx, [rdx + 0xc]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xc], cl
lea ecx, [rdx + 0xd]
cmp ebx, ecx
jle 0x577894
movsxd rcx, ecx
add edx, 0xe
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xd], cl
cmp ebx, edx
jle 0x577894
movsxd rdx, edx
movzx edx, byte [r12 + rdx]
xor byte [rax + 0xe], dl
mov eax, dword [rsp + 0x44]
test eax, eax
je 0x5778af
mov ecx, 8
mov eax, 0xff
sub ecx, dword [rsp + 0x44]
sar eax, cl
and byte [r15], al
movsxd r13, r13d
mov eax, 1
mov byte [r15 + r13 - 1], 0xbc
jmp 0x5775a9
xor r10d, r10d
xor eax, eax
jmp 0x5775a9
xor r12d, r12d
jmp 0x57757e
lea ebx, [rax - 2]
movsxd r14, ebx
jmp 0x577543
mov ebx, eax
jmp 0x5774e4
mov dword [rsp + 0x20], 0xae
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x88
jmp 0x5775f7
mov dword [rsp + 0x20], 0xc1
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x6e
xor r12d, r12d
mov edx, 0x98
mov ecx, 4
call fcn.00528f20
xor r10d, r10d
xor eax, eax
jmp 0x5775a9
mov r8d, 0x41
mov edx, 0x98
mov ecx, 4
mov dword [rsp + 0x20], 0xc8
lea r9, str.crypto_rsa_rsa_pss.c
call fcn.00528f20
xor r10d, r10d
xor eax, eax
jmp 0x5775a9
mov edx, r8d
mov eax, 1
add rdx, 2
movzx r8d, byte [r12 + rax - 1]
xor byte [rcx + rax], r8b
add rax, 1
cmp rax, rdx
jne 0x57798b
jmp 0x577894