Function at 0x577840
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.0053da30
mov edi, eax
test eax, eax
js 0x5779c6
cmp ebx, 0xffffffff
je 0x577cb0
cmp ebx, 0xfffffffe
je 0x5779d3
cmp ebx, 0xfffffffd
jl 0x577cc0
mov rcx, qword [r12 + 0x18]
call fcn.004f9ad0
mov rcx, r12
sub eax, 1
and eax, 7
mov r14d, eax
mov dword [rsp + 0x44], eax
call fcn.00570d50
mov r13d, eax
test r14d, r14d
jne 0x5778d7
mov byte [r15], 0
sub r13d, 1
add r15, 1
lea eax, [rdi + 1]
cmp eax, r13d
jge 0x5779a2
mov eax, r13d
sub eax, edi
mov dword [rsp + 0x38], eax
cmp ebx, 0xfffffffd
je 0x577ca0
sub eax, 1
movsxd r14, ebx
cmp eax, ebx
jle 0x577ce0
test ebx, ebx
jle 0x577c90
mov r8d, 0xc5
lea rdx, str.crypto_rsa_rsa_pss.c
mov rcx, r14
call fcn.0054a3f0
mov r12, rax
test rax, rax
je 0x577d11
mov edx, ebx
mov rcx, rax
call fcn.0056b270
test eax, eax
jle 0x577c82
call fcn.0052b470
mov r10, rax
xor eax, eax
test r10, r10
je 0x577969
xor r8d, r8d
mov rcx, r10
mov rdx, rbp
mov qword [rsp + 0x48], r10
call fcn.0052b6f0
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x5779e0
mov rcx, r10
mov dword [rsp + 0x38], eax
call fcn.0052b490
mov r9d, 0xf7
mov rdx, r14
mov rcx, r12
lea r8, str.crypto_rsa_rsa_pss.c
call fcn.0054a800
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.005292e0
movsxd r14, ebx
xor r10d, r10d
xor r12d, r12d
xor eax, eax
jmp 0x577969
mov ebx, 0xfffffffd
jmp 0x5778a4
mov rcx, r10
mov r8d, 8
lea rdx, [0x008d17d8]
call fcn.0052b970
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x577969
mov rdx, qword [rsp + 0xb0]
mov rcx, r10
movsxd r8, edi
call fcn.0052b970
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x577969
test ebx, ebx
je 0x577a46
mov rcx, r10
mov r8, r14
mov rdx, r12
mov qword [rsp + 0x48], r10
call fcn.0052b970
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x577969
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.0052ba10
mov r10, qword [rsp + 0x38]
test eax, eax
je 0x577969
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 0x577969
mov eax, r13d
sub eax, ebx
sub eax, edi
cdqe
lea rcx, [r15 + rax - 2]
xor byte [rcx], 1
test ebx, ebx
jle 0x577c54
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 0x577d3f
cmp r8d, 0xe
jbe 0x577d3f
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 0x577b04
mov edx, ebx
and edx, 0xfffffff0
mov r8d, edx
lea rax, [rcx + r8 + 1]
cmp ebx, edx
je 0x577c54
movzx ecx, byte [r12 + r8]
xor byte [rax], cl
lea ecx, [rdx + 1]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 1], cl
lea ecx, [rdx + 2]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 2], cl
lea ecx, [rdx + 3]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 3], cl
lea ecx, [rdx + 4]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 4], cl
lea ecx, [rdx + 5]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 5], cl
lea ecx, [rdx + 6]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 6], cl
lea ecx, [rdx + 7]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 7], cl
lea ecx, [rdx + 8]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 8], cl
lea ecx, [rdx + 9]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 9], cl
lea ecx, [rdx + 0xa]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xa], cl
lea ecx, [rdx + 0xb]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xb], cl
lea ecx, [rdx + 0xc]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xc], cl
lea ecx, [rdx + 0xd]
cmp ebx, ecx
jle 0x577c54
movsxd rcx, ecx
add edx, 0xe
movzx ecx, byte [r12 + rcx]
xor byte [rax + 0xd], cl
cmp ebx, edx
jle 0x577c54
movsxd rdx, edx
movzx edx, byte [r12 + rdx]
xor byte [rax + 0xe], dl
mov eax, dword [rsp + 0x44]
test eax, eax
je 0x577c6f
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 0x577969
xor r10d, r10d
xor eax, eax
jmp 0x577969
xor r12d, r12d
jmp 0x57793e
lea ebx, [rax - 2]
movsxd r14, ebx
jmp 0x577903
mov ebx, eax
jmp 0x5778a4
mov dword [rsp + 0x20], 0xae
lea r9, str.crypto_rsa_rsa_pss.c
mov r8d, 0x88
jmp 0x5779b7
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.005292e0
xor r10d, r10d
xor eax, eax
jmp 0x577969
mov r8d, 0x41
mov edx, 0x98
mov ecx, 4
mov dword [rsp + 0x20], 0xc8
lea r9, str.crypto_rsa_rsa_pss.c
call fcn.005292e0
xor r10d, r10d
xor eax, eax
jmp 0x577969
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 0x577d4b
jmp 0x577c54