Function at 0x40f440
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov rax, rsp
sub rsp, 0x860
mov qword [rax - 8], rbx
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r13
mov qword [rax - 0x30], r14
mov qword [rax - 0x38], r15
lea rbp, [rsp + 0x50]
and rbp, 0xffffffffffffffe0
mov rax, qword [0x004466e8]
xor rax, rsp
mov qword [rbp + 0x7c0], rax
test rcx, rcx
mov rbx, qword [rsp + 0x8a8]
mov r13d, r9d
mov qword [rbp + 0x10], r8
mov dword [rbp + 0x18], edx
mov qword [rbp + 0x20], rcx
mov qword [rbp + 0x28], rbx
jne 0x40f4b8
lea r8d, [rcx + 0x2a]
lea rdx, str.._srcpkpkcs1pkcs_1_pss_decode.c
lea rcx, str.msghash___NULL
call fcn.0040e740
test rbx, rbx
jne 0x40f4d4
lea r8d, [rbx + 0x2b]
lea rdx, str.._srcpkpkcs1pkcs_1_pss_decode.c
lea rcx, str.res___NULL
call fcn.0040e740
mov dword [rbx], 0
movsxd rbx, dword [rsp + 0x898]
mov ecx, ebx
call fcn.0040f7f0
test eax, eax
jne 0x40f7a0
lea rax, [0x004483d0]
mov edi, 0
mov r15, rbx
shl r15, 7
mov ecx, dword [r15 + rax + 0xc]
mov eax, dword [rsp + 0x8a0]
test al, 7
mov dword [rbp], ecx
setne dil
shr eax, 3
add edi, eax
mov eax, dword [rsp + 0x890]
cmp eax, edi
ja 0x40f79b
lea eax, [rcx + rax + 2]
cmp edi, eax
jb 0x40f79b
cmp r13d, edi
jne 0x40f79b
mov ecx, edi
call fcn.00414e40
mov ecx, edi
mov r12, rax
call fcn.00414e40
mov ecx, edi
mov rsi, rax
call fcn.00414e40
mov ecx, edi
mov qword [rbp + 8], rax
call fcn.00414e40
test r12, r12
mov r14, rax
je 0x40f769
test rsi, rsi
je 0x40f761
cmp qword [rbp + 8], 0
je 0x40f761
test rax, rax
je 0x40f761
mov rax, qword [rbp + 0x10]
lea ecx, [r13 - 1]
cmp byte [rcx + rax], 0xbc
je 0x40f5a9
mov ebx, 7
jmp 0x40f73c
mov r13d, edi
mov rdx, rax
mov rcx, r12
sub r13d, dword [rbp]
lea ebx, [r13 - 1]
mov r8d, ebx
call fcn.004159a0
mov ecx, dword [rbp]
mov edx, edi
sub edx, ecx
mov r8, rcx
mov qword [rbp + 0x30], rcx
add edx, 0xffffffff
mov rcx, r14
add rdx, qword [rbp + 0x10]
call fcn.004159a0
lea ecx, [rdi*8]
mov edi, 0xff
sub ecx, dword [rsp + 0x8a0]
add ecx, 1
sar edi, cl
mov rcx, qword [rbp + 0x10]
mov eax, edi
not eax
test byte [rcx], al
jne 0x40f59f
mov r8d, dword [rbp]
mov ecx, dword [rsp + 0x898]
mov r9, rsi
mov rdx, r14
mov dword [rsp + 0x20], ebx
call fcn.00414660
test eax, eax
mov ebx, eax
jne 0x40f73c
lea eax, [r13 - 1]
test eax, eax
je 0x40f652
mov r8, rsi
mov rcx, r12
mov edx, eax
sub r8, r12
nop
nop
movzx eax, byte [r8 + rcx]
add rcx, 1
xor byte [rcx - 1], al
sub rdx, 1
jne 0x40f640
and byte [r12], dil
sub r13d, dword [rsp + 0x890]
xor edi, edi
sub r13d, 2
je 0x40f685
mov rax, r12
nop
nop
cmp byte [rax], 0
jne 0x40f59f
add edi, 1
add rax, 1
cmp edi, r13d
jb 0x40f670
cmp byte [rdi + r12], 1
jne 0x40f59f
lea r13, [0x004483d0]
lea rcx, [rbp + 0x40]
call qword [r15 + r13 + 0x58]
test eax, eax
mov ebx, eax
jne 0x40f73c
lea edx, [rax + 8]
mov rcx, rsi
call fcn.00414600
lea r8d, [rbx + 8]
lea rcx, [rbp + 0x40]
mov rdx, rsi
call qword [r15 + r13 + 0x60]
test eax, eax
mov ebx, eax
jne 0x40f73c
mov r8d, dword [rbp + 0x18]
mov rdx, qword [rbp + 0x20]
lea rcx, [rbp + 0x40]
call qword [r15 + r13 + 0x60]
test eax, eax
mov ebx, eax
jne 0x40f73c
mov r8d, dword [rsp + 0x890]
lea edx, [rdi + 1]
lea rcx, [rbp + 0x40]
add rdx, r12
call qword [r15 + r13 + 0x60]
test eax, eax
mov ebx, eax
jne 0x40f73c
lea rcx, [rbp + 0x40]
mov rdx, rsi
call qword [r15 + r13 + 0x68]
test eax, eax
mov ebx, eax
jne 0x40f73c
mov r8, qword [rbp + 0x30]
lea r9d, [rax + 1]
mov rdx, r14
mov rcx, rsi
mov dword [rsp + 0x20], 1
call fcn.0041c5c0
test eax, eax
jne 0x40f73a
mov rax, qword [rbp + 0x28]
mov dword [rax], 1
xor ebx, ebx
mov rcx, r14
call fcn.00414e00
mov rcx, qword [rbp + 8]
call fcn.00414e00
mov rcx, rsi
call fcn.00414e00
mov rcx, r12
call fcn.00414e00
mov eax, ebx
jmp 0x40f7a0
mov rcx, r12
call fcn.00414e00
test rsi, rsi
je 0x40f776
mov rcx, rsi
call fcn.00414e00
mov rax, qword [rbp + 8]
test rax, rax
je 0x40f787
mov rcx, rax
call fcn.00414e00
test r14, r14
je 0x40f794
mov rcx, r14
call fcn.00414e00
mov eax, 0xd
jmp 0x40f7a0
mov eax, 0x16
mov rcx, qword [rbp + 0x7c0]
xor rcx, rsp
call fcn.0041c590
mov rbx, qword [rsp + 0x858]
mov rsi, qword [rsp + 0x850]
mov rdi, qword [rsp + 0x848]
mov r12, qword [rsp + 0x840]
mov r13, qword [rsp + 0x838]
mov r14, qword [rsp + 0x830]
mov r15, qword [rsp + 0x828]
add rsp, 0x860
pop rbp
ret