Function at 0x653a3c80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x218
mov rbx, qword [rsp + 0x298]
test rcx, rcx
mov rdi, rcx
mov r13d, edx
mov rbp, r8
mov r12d, r9d
je 0x653a4344
test rbx, rbx
je 0x653a432b
mov ecx, dword [rsp + 0x288]
mov dword [rbx], 0
call fcn.653a1540
test eax, eax
mov r15d, eax
jne 0x653a3cfe
mov eax, dword [rsp + 0x290]
xor esi, esi
mov r15d, 0x16
lea r9d, [rax - 1]
test r9b, 7
mov edx, r9d
setne sil
shr edx, 3
add esi, edx
cmp esi, dword [rsp + 0x280]
jae 0x653a3d15
mov eax, r15d
add rsp, 0x218
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movsxd r14, dword [rsp + 0x288]
mov r8, qword [0x65411ce0]
mov r11d, dword [rsp + 0x280]
mov rcx, r14
shl rcx, 7
mov r10d, dword [r8 + rcx + 0xc]
lea eax, [r10 + r11 + 2]
cmp esi, eax
jb 0x653a3cfe
mov r15d, esi
mov dword [rsp + 0x60], r9d
mov dword [rsp + 0x58], r10d
mov rcx, r15
call fcn.654013a8
mov rcx, r15
mov qword [rsp + 0x50], rax
call fcn.654013a8
mov rcx, r15
mov qword [rsp + 0x38], rax
call fcn.654013a8
mov rcx, r15
mov qword [rsp + 0x40], rax
call fcn.654013a8
mov r11, qword [rsp + 0x50]
mov qword [rsp + 0x48], rax
test r11, r11
je 0x653a3df4
cmp qword [rsp + 0x38], 0
je 0x653a3df4
cmp qword [rsp + 0x40], 0
je 0x653a3df9
test rax, rax
mov r8d, dword [rsp + 0x58]
mov r10d, dword [rsp + 0x60]
je 0x653a3df9
lea r12d, [r12 - 1]
cmp byte [rbp + r12], 0xbc
je 0x653a3e46
mov r15d, 7
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x50], r11
call fcn.654013d8
mov rcx, qword [rsp + 0x40]
call fcn.654013d8
mov rcx, qword [rsp + 0x38]
call fcn.654013d8
mov rcx, qword [rsp + 0x50]
call fcn.654013d8
jmp 0x653a3cfe
test r11, r11
je 0x653a3e01
mov rcx, r11
call fcn.654013d8
mov rbx, qword [rsp + 0x38]
test rbx, rbx
je 0x653a3e13
mov rcx, rbx
call fcn.654013d8
mov rdi, qword [rsp + 0x40]
test rdi, rdi
je 0x653a3e25
mov rcx, rdi
call fcn.654013d8
mov r10, qword [rsp + 0x48]
mov r15d, 0xd
test r10, r10
je 0x653a3cfe
mov rcx, r10
call fcn.654013d8
jmp 0x653a3cfe
mov eax, r8d
mov rcx, r11
mov rdx, rbp
not eax
mov dword [rsp + 0x50], r8d
mov dword [rsp + 0x58], r10d
lea r15d, [rax + rsi]
mov qword [rsp + 0x68], r11
mov r8, r15
mov r12, r15
call fcn.65401398
mov r8d, dword [rsp + 0x50]
mov rcx, qword [rsp + 0x48]
lea rdx, [rbp + r15]
mov dword [rsp + 0x60], r8d
mov qword [rsp + 0x50], r8
call fcn.65401398
mov r9d, dword [rsp + 0x58]
lea ecx, [rsi*8]
movzx ebp, byte [rbp]
mov r10d, 0xff
mov edx, dword [rsp + 0x60]
mov r11, qword [rsp + 0x68]
sub ecx, r9d
sar r10d, cl
mov dword [rsp + 0x58], r10d
not r10d
test ebp, r10d
jne 0x653a3dbc
mov r8d, edx
mov r9, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x48]
mov ecx, dword [rsp + 0x288]
mov dword [rsp + 0x20], r15d
call fcn.653a7b30
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x68]
jne 0x653a3dc2
test r12d, r12d
mov r10d, dword [rsp + 0x60]
je 0x653a41dd
mov rax, r11
neg rax
and eax, 0xf
cmp eax, r12d
cmova eax, r12d
cmp r12d, 0x10
ja 0x653a435d
mov eax, r12d
mov r15, qword [rsp + 0x38]
movzx ecx, byte [r15]
xor byte [r11], cl
cmp eax, 1
je 0x653a4481
movzx ebp, byte [r15 + 1]
xor byte [r11 + 1], bpl
cmp eax, 2
je 0x653a4476
movzx r8d, byte [r15 + 2]
xor byte [r11 + 2], r8b
cmp eax, 3
je 0x653a44ad
movzx r9d, byte [r15 + 3]
xor byte [r11 + 3], r9b
cmp eax, 4
je 0x653a44a2
movzx edx, byte [r15 + 4]
xor byte [r11 + 4], dl
cmp eax, 5
je 0x653a4497
movzx ecx, byte [r15 + 5]
xor byte [r11 + 5], cl
cmp eax, 6
je 0x653a448c
movzx ebp, byte [r15 + 6]
xor byte [r11 + 6], bpl
cmp eax, 7
je 0x653a4505
movzx r8d, byte [r15 + 7]
xor byte [r11 + 7], r8b
cmp eax, 8
je 0x653a44fa
movzx r9d, byte [r15 + 8]
xor byte [r11 + 8], r9b
cmp eax, 9
je 0x653a44ef
movzx edx, byte [r15 + 9]
xor byte [r11 + 9], dl
cmp eax, 0xa
je 0x653a44e4
movzx ecx, byte [r15 + 0xa]
xor byte [r11 + 0xa], cl
cmp eax, 0xb
je 0x653a44d9
movzx ebp, byte [r15 + 0xb]
xor byte [r11 + 0xb], bpl
cmp eax, 0xc
je 0x653a44ce
movzx r8d, byte [r15 + 0xc]
xor byte [r11 + 0xc], r8b
cmp eax, 0xd
je 0x653a44c3
movzx r9d, byte [r15 + 0xd]
xor byte [r11 + 0xd], r9b
cmp eax, 0xe
je 0x653a44b8
movzx edx, byte [r15 + 0xe]
xor byte [r11 + 0xe], dl
cmp eax, 0x10
jne 0x653a446b
movzx r8d, byte [r15 + 0xf]
mov r15d, 0x10
xor byte [r11 + 0xf], r8b
cmp r12d, eax
je 0x653a41dd
mov edx, eax
mov eax, r15d
mov r8d, r12d
lea r9d, [r12 - 1]
mov ecx, edx
sub r8d, edx
lea ebp, [r8 - 0x10]
sub r9d, edx
shr ebp, 4
add ebp, 1
mov r15d, ebp
shl r15d, 4
cmp r9d, 0xe
jbe 0x653a40b7
lea r9, [r11 + rcx]
add rcx, qword [rsp + 0x38]
xor edx, edx
mov dword [rsp + 0x68], eax
mov qword [rsp + 0x60], rcx
xor ecx, ecx
mov rax, qword [rsp + 0x60]
add ecx, 1
movdqu xmm0, xmmword [rax + rdx]
pxor xmm0, xmmword [r9 + rdx]
movaps xmmword [r9 + rdx], xmm0
add rdx, 0x10
cmp ebp, ecx
ja 0x653a4087
mov eax, dword [rsp + 0x68]
add eax, r15d
cmp r15d, r8d
je 0x653a41dd
mov r8, qword [rsp + 0x38]
mov ebp, eax
lea edx, [rax + 1]
movzx r9d, byte [r8 + rbp]
xor byte [r11 + rbp], r9b
cmp r12d, edx
jbe 0x653a41dd
lea r15d, [rax + 2]
movzx ebp, byte [r8 + rdx]
xor byte [r11 + rdx], bpl
cmp r12d, r15d
jbe 0x653a41dd
lea ebp, [rax + 3]
movzx edx, byte [r8 + r15]
xor byte [r11 + r15], dl
cmp r12d, ebp
jbe 0x653a41dd
lea r9d, [rax + 4]
movzx r15d, byte [r8 + rbp]
xor byte [r11 + rbp], r15b
cmp r12d, r9d
jbe 0x653a41dd
lea r15d, [rax + 5]
movzx ebp, byte [r8 + r9]
xor byte [r11 + r9], bpl
cmp r12d, r15d
jbe 0x653a41dd
lea edx, [rax + 6]
movzx r9d, byte [r8 + r15]
xor byte [r11 + r15], r9b
cmp r12d, edx
jbe 0x653a41dd
lea r9d, [rax + 7]
movzx r15d, byte [r8 + rdx]
xor byte [r11 + rdx], r15b
cmp r12d, r9d
jbe 0x653a41dd
lea ebp, [rax + 8]
movzx edx, byte [r8 + r9]
xor byte [r11 + r9], dl
cmp r12d, ebp
jbe 0x653a41dd
lea edx, [rax + 9]
movzx r9d, byte [r8 + rbp]
xor byte [r11 + rbp], r9b
cmp r12d, edx
jbe 0x653a41dd
lea r15d, [rax + 0xa]
movzx ebp, byte [r8 + rdx]
xor byte [r11 + rdx], bpl
cmp r12d, r15d
jbe 0x653a41dd
lea ebp, [rax + 0xb]
movzx edx, byte [r8 + r15]
xor byte [r11 + r15], dl
cmp r12d, ebp
jbe 0x653a41dd
lea r9d, [rax + 0xc]
movzx r15d, byte [r8 + rbp]
xor byte [r11 + rbp], r15b
cmp r12d, r9d
jbe 0x653a41dd
lea r15d, [rax + 0xd]
movzx ebp, byte [r8 + r9]
xor byte [r11 + r9], bpl
cmp r12d, r15d
jbe 0x653a41dd
movzx ecx, byte [r8 + r15]
add eax, 0xe
xor byte [r11 + r15], cl
cmp r12d, eax
jbe 0x653a41dd
mov r12, qword [rsp + 0x38]
movzx r9d, byte [r12 + rax]
xor byte [r11 + rax], r9b
sub esi, dword [rsp + 0x280]
movzx eax, byte [rsp + 0x58]
and eax, dword [r11]
mov ebp, esi
sub ebp, r10d
mov byte [r11], al
sub ebp, 2
je 0x653a436c
test al, al
jne 0x653a3dbc
lea r15d, [rbp - 1]
xor edx, edx
lea r8, [r11 + 1]
and r15d, 7
je 0x653a42c1
lea r8, [r11 + 2]
cmp byte [r8 - 1], 0
mov edx, 1
jne 0x653a3dbc
cmp r15d, 1
je 0x653a42c1
cmp r15d, 2
je 0x653a42af
cmp r15d, 3
je 0x653a429d
cmp r15d, 4
je 0x653a428b
cmp r15d, 5
je 0x653a4279
cmp r15d, 6
je 0x653a4267
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
add r8, 1
add edx, 1
cmp byte [r8 - 1], 0
jne 0x653a3dbc
lea esi, [rdx + 1]
cmp esi, ebp
je 0x653a436e
cmp byte [r8], 0
jne 0x653a3dbc
cmp byte [r8 + 1], 0
jne 0x653a3dbc
cmp byte [r8 + 2], 0
jne 0x653a3dbc
cmp byte [r8 + 3], 0
jne 0x653a3dbc
cmp byte [r8 + 4], 0
jne 0x653a3dbc
cmp byte [r8 + 5], 0
jne 0x653a3dbc
cmp byte [r8 + 6], 0
jne 0x653a3dbc
add r8, 8
add edx, 8
cmp byte [r8 - 1], 0
je 0x653a42c1
jmp 0x653a3dbc
lea rdx, str.src_pk_pkcs1_pkcs_1_pss_decode.c
lea rcx, str.res___NULL
mov r8d, 0x29
call fcn.6539d600
lea rdx, str.src_pk_pkcs1_pkcs_1_pss_decode.c
lea rcx, str.msghash___NULL
mov r8d, 0x28
call fcn.6539d600
xor edx, edx
test eax, eax
je 0x653a404a
jmp 0x653a3f1c
xor esi, esi
mov ecx, esi
cmp byte [r11 + rcx], 1
jne 0x653a3dbc
shl r14, 7
lea rbp, [rsp + 0x70]
mov qword [rsp + 0x58], r11
mov r12, r14
add r12, qword [0x65411ce0]
mov rcx, rbp
call qword [r12 + 0x58]
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
mov r14, qword [rsp + 0x38]
mov edx, 8
mov rcx, r14
call fcn.6539e140
mov r8d, 8
mov rdx, r14
mov rcx, rbp
call qword [r12 + 0x60]
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
mov r8d, r13d
mov rdx, rdi
mov rcx, rbp
call qword [r12 + 0x60]
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
lea edx, [rsi + 1]
mov r8d, dword [rsp + 0x280]
mov rcx, rbp
add rdx, r11
call qword [r12 + 0x60]
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
mov rdx, qword [rsp + 0x38]
mov rcx, rbp
call qword [r12 + 0x68]
test eax, eax
mov r15d, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
mov r8, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x38]
call fcn.653a4ab0
test eax, eax
mov r11, qword [rsp + 0x58]
jne 0x653a3dc2
mov dword [rbx], 1
jmp 0x653a3dc2
mov r15d, 0xf
jmp 0x653a403c
mov r15d, 2
jmp 0x653a403c
mov r15d, 1
jmp 0x653a403c
mov r15d, 6
jmp 0x653a403c
mov r15d, 5
jmp 0x653a403c
mov r15d, 4
jmp 0x653a403c
mov r15d, 3
jmp 0x653a403c
mov r15d, 0xe
jmp 0x653a403c
mov r15d, 0xd
jmp 0x653a403c
mov r15d, 0xc
jmp 0x653a403c
mov r15d, 0xb
jmp 0x653a403c
mov r15d, 0xa
jmp 0x653a403c
mov r15d, 9
jmp 0x653a403c
mov r15d, 8
jmp 0x653a403c
mov r15d, 7
jmp 0x653a403c