Function at 0x18009e1b0
Capabilities:
Encode data using xor

Disassembly:
jmp 0x18009e1b0
push rbp
push rbx
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x68]
mov eax, 0x168
call fcn.180001055
sub rsp, rax
mov rax, qword [0x1802946b8]
xor rax, rsp
mov qword [rbp + 0x48], rax
mov rax, qword [rbp + 0xd0]
mov r14, r8
mov rdi, qword [rbp + 0xc0]
mov r15, r9
mov r12, qword [rbp + 0xe8]
mov rbx, rdx
mov qword [rbp - 0x40], rax
mov rax, qword [rbp + 0xe0]
shr r14, 3
mov qword [rbp - 0x48], rax
xor eax, eax
mov dword [rsp + 0x3c], eax
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x30], rax
lea eax, [r14 - 0x14]
mov qword [rbp - 0x58], rcx
mov rcx, qword [rbp + 0xd8]
mov qword [rsp + 0x40], r9
mov qword [rbp - 0x80], rdi
mov qword [rbp - 0x50], rcx
mov qword [rsp + 0x58], r12
mov qword [rbp - 0x68], 2
test eax, 0xfffffff3
jne 0x18009e2ed
cmp r14d, 0x18
je 0x18009e2ed
test r9, r9
jne 0x18009e296
cmp r14d, 0x14
jne 0x18009e272
call sym.libcrypto_1_1_x64.dll_EVP_sha1
mov r15, rax
mov qword [rsp + 0x40], rax
jmp 0x18009e2a1
cmp r14d, 0x1c
jne 0x18009e287
call sym.libcrypto_1_1_x64.dll_EVP_sha224
mov r15, rax
mov qword [rsp + 0x40], rax
jmp 0x18009e2a1
call sym.libcrypto_1_1_x64.dll_EVP_sha256
mov r15, rax
mov qword [rsp + 0x40], rax
jmp 0x18009e2a1
mov rcx, r9
call sym.libcrypto_1_1_x64.dll_EVP_MD_size
mov r14d, eax
mov eax, 0x200
cmp rbx, rax
cmovae rax, rbx
add rax, 0x3f
and rax, 0xffffffffffffffc0
mov qword [rbp - 0x78], rax
test rdi, rdi
je 0x18009e31c
mov r8, qword [rbp + 0xc8]
movsxd rax, r14d
cmp r8, rax
jae 0x18009e30c
mov edx, 0x7d
mov dword [rsp + 0x20], 0x55
lea r9, str.cryptodsadsa_gen.c
lea ecx, [rdx - 0x73]
lea r8d, [rdx - 0xf]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
xor eax, eax
mov rcx, qword [rbp + 0x48]
xor rcx, rsp
call fcn.1800028c4
add rsp, 0x168
pop r15
pop r14
pop r12
pop rdi
pop rbx
pop rbp
ret
cmova r8, rax
lea rcx, [rbp + 0x28]
mov rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov qword [rsp + 0x158], r13
call sym.libcrypto_1_1_x64.dll_BN_MONT_CTX_new
mov qword [rsp + 0x78], rax
test rax, rax
je 0x18009ea0e
call sym.libcrypto_1_1_x64.dll_BN_CTX_new
mov qword [rsp + 0x30], rax
mov r13, rax
test rax, rax
je 0x18009e919
mov rcx, rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_start
mov rcx, r13
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov rdi, rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rsp + 0x70], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rbp - 0x70], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rsp + 0x48], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rsp + 0x50], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rbp - 0x60], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r13
mov qword [rsp + 0x60], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov qword [rsp + 0x68], rax
test rax, rax
je 0x18009e919
mov rbx, qword [rbp - 0x78]
mov qword [rsp + 0x160], rsi
movsxd rsi, r14d
call sym.libcrypto_1_1_x64.dll_BN_value_one
mov rcx, qword [rsp + 0x68]
lea r8d, [rbx - 1]
mov rdx, rax
call sym.libcrypto_1_1_x64.dll_BN_lshift
test eax, eax
je 0x18009e911
nop
mov r8d, dword [rsp + 0x38]
xor ebx, ebx
cmp qword [rbp - 0x80], rbx
mov rcx, r12
sete bl
xor edx, edx
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
inc dword [rsp + 0x38]
test eax, eax
je 0x18009e911
cmp qword [rbp - 0x80], 0
jne 0x18009e431
mov edx, r14d
lea rcx, [rbp + 0x28]
call sym.libcrypto_1_1_x64.dll_RAND_bytes
test eax, eax
jle 0x18009e911
jmp 0x18009e439
mov qword [rbp - 0x80], 0
mov r8, rsi
lea rdx, [rbp + 0x28]
lea rcx, [rbp + 8]
call sub.VCRUNTIME140.dll_memcpy
mov r8, rsi
lea rdx, [rbp + 0x28]
lea rcx, [rbp - 0x18]
call sub.VCRUNTIME140.dll_memcpy
lea rax, [rsi - 1]
test rax, rax
js 0x18009e46f
add byte [rbp + rax + 8], 1
jne 0x18009e46f
sub rax, 1
jns 0x18009e462
mov qword [rsp + 0x28], 0
lea r8, [rbp - 0x38]
xor r9d, r9d
mov qword [rsp + 0x20], r15
mov rdx, rsi
lea rcx, [rbp + 0x28]
call sym.libcrypto_1_1_x64.dll_EVP_Digest
test eax, eax
je 0x18009e911
mov qword [rsp + 0x28], 0
lea r8, [rbp - 0x18]
xor r9d, r9d
mov qword [rsp + 0x20], r15
mov rdx, rsi
lea rcx, [rbp + 8]
call sym.libcrypto_1_1_x64.dll_EVP_Digest
test eax, eax
je 0x18009e911
xor ecx, ecx
test r14d, r14d
jle 0x18009e551
cmp r14d, 0x40
jb 0x18009e551
mov edx, r14d
and edx, 0x8000003f
jge 0x18009e4e8
dec edx
or edx, 0xffffffc0
inc edx
mov eax, r14d
sub eax, edx
movsxd rdx, eax
movdqu xmm0, xmmword [rbp + rcx - 0x38]
movdqu xmm1, xmmword [rbp + rcx - 0x18]
pxor xmm1, xmm0
movdqu xmmword [rbp + rcx - 0x38], xmm1
movdqu xmm0, xmmword [rbp + rcx - 0x28]
movdqu xmm1, xmmword [rbp + rcx - 8]
pxor xmm1, xmm0
movdqu xmmword [rbp + rcx - 0x28], xmm1
movdqu xmm0, xmmword [rbp + rcx - 0x18]
movdqu xmm1, xmmword [rbp + rcx + 8]
pxor xmm1, xmm0
movdqu xmmword [rbp + rcx - 0x18], xmm1
movdqu xmm0, xmmword [rbp + rcx - 8]
movdqu xmm1, xmmword [rbp + rcx + 0x18]
pxor xmm1, xmm0
movdqu xmmword [rbp + rcx - 8], xmm1
add rcx, 0x40
cmp rcx, rdx
jl 0x18009e4f0
cmp rcx, rsi
jge 0x18009e571
nop word [rax + rax]
movzx eax, byte [rbp + rcx - 0x18]
xor byte [rbp + rcx - 0x38], al
inc rcx
cmp rcx, rsi
jl 0x18009e560
or byte [rbp - 0x38], 0x80
lea rcx, [rbp - 0x38]
mov r8, qword [rsp + 0x48]
mov edx, r14d
or byte [rbp + rsi - 0x39], 1
call sym.libcrypto_1_1_x64.dll_BN_bin2bn
test rax, rax
je 0x18009e911
mov rcx, qword [rsp + 0x48]
mov r9d, ebx
mov r8, r13
mov qword [rsp + 0x20], r12
mov edx, 0x40
call sym.libcrypto_1_1_x64.dll_BN_is_prime_fasttest_ex
test eax, eax
jg 0x18009e5bd
je 0x18009e3f0
jmp 0x18009e911
xor r8d, r8d
mov rcx, r12
lea edx, [r8 + 2]
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
test eax, eax
je 0x18009e911
xor r8d, r8d
mov rcx, r12
lea edx, [r8 + 3]
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
test eax, eax
je 0x18009e911
mov rcx, qword [rbp - 0x78]
lea r15, [rsi - 1]
mov rbx, qword [rbp - 0x70]
dec rcx
movabs rax, 0xcccccccccccccccd
xor r13d, r13d
mul rcx
mov r12, rdx
shr r12, 7
test r13d, r13d
je 0x18009e62d
mov rcx, qword [rsp + 0x58]
mov r8d, r13d
xor edx, edx
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
test eax, eax
je 0x18009ea04
xor edx, edx
mov rcx, rbx
call sym.libcrypto_1_1_x64.dll_BN_set_word
xor ebx, ebx
test r12d, r12d
js 0x18009e6e4
mov rax, r15
test r15, r15
js 0x18009e65d
nop word [rax + rax]
add byte [rbp + rax + 8], 1
jne 0x18009e65d
sub rax, 1
jns 0x18009e650
mov rax, qword [rsp + 0x40]
lea r8, [rbp - 0x38]
mov qword [rsp + 0x28], 0
lea rcx, [rbp + 8]
xor r9d, r9d
mov qword [rsp + 0x20], rax
mov rdx, rsi
call sym.libcrypto_1_1_x64.dll_EVP_Digest
test eax, eax
je 0x18009ea04
mov r8, rdi
lea rcx, [rbp - 0x38]
mov edx, r14d
call sym.libcrypto_1_1_x64.dll_BN_bin2bn
test rax, rax
je 0x18009ea04
lea r8d, [r14*8]
mov rdx, rdi
imul r8d, ebx
mov rcx, rdi
call sym.libcrypto_1_1_x64.dll_BN_lshift
test eax, eax
je 0x18009ea04
mov rdx, qword [rbp - 0x70]
mov r8, rdi
mov rcx, rdx
call sym.libcrypto_1_1_x64.dll_BN_add
test eax, eax
je 0x18009ea04
inc ebx
cmp ebx, r12d
jle 0x18009e642
mov rdx, qword [rbp - 0x78]
mov rbx, qword [rbp - 0x70]
dec edx
mov rcx, rbx
call sym.libcrypto_1_1_x64.dll_BN_mask_bits
test eax, eax
je 0x18009ea04
mov rcx, qword [rsp + 0x50]
mov rdx, rbx
call sym.libcrypto_1_1_x64.dll_BN_copy
test rax, rax
je 0x18009ea04
mov rdx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x68]
mov rcx, rdx
call sym.libcrypto_1_1_x64.dll_BN_add
test eax, eax
je 0x18009ea04
mov rdx, qword [rsp + 0x48]
mov rcx, rdi
call sym.libcrypto_1_1_x64.dll_BN_lshift1
test eax, eax
je 0x18009ea04
mov rax, qword [rsp + 0x30]
mov r9, rdi
mov r8, qword [rsp + 0x50]
xor ecx, ecx
mov rdx, qword [rbp - 0x60]
mov qword [rsp + 0x20], rax
call sym.libcrypto_1_1_x64.dll_BN_div
test eax, eax
je 0x18009ea04
call sym.libcrypto_1_1_x64.dll_BN_value_one
mov rdx, qword [rbp - 0x60]
mov r8, rax
mov rcx, rdi
call sym.libcrypto_1_1_x64.dll_BN_sub
test eax, eax
je 0x18009ea04
mov rdx, qword [rsp + 0x50]
mov r8, rdi
mov rcx, qword [rsp + 0x60]
call sym.libcrypto_1_1_x64.dll_BN_sub
test eax, eax
je 0x18009ea04
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x60]
call sym.libcrypto_1_1_x64.dll_BN_cmp
test eax, eax
js 0x18009e7de
mov rax, qword [rsp + 0x58]
mov r9d, 1
mov r8, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0x3f]
call sym.libcrypto_1_1_x64.dll_BN_is_prime_fasttest_ex
test eax, eax
jg 0x18009e802
jne 0x18009ea04
inc r13d
cmp r13d, 0x1000
jl 0x18009e611
mov r15, qword [rsp + 0x40]
mov r12, qword [rsp + 0x58]
mov r13, qword [rsp + 0x30]
jmp 0x18009e3f0
mov rbx, qword [rsp + 0x58]
mov edx, 2
mov rcx, rbx
lea r8d, [rdx - 1]
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
test eax, eax
je 0x18009ea04
call sym.libcrypto_1_1_x64.dll_BN_value_one
mov r15, qword [rsp + 0x60]
mov r8, rax
mov r12, qword [rsp + 0x68]
mov rdx, r15
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_BN_sub
test eax, eax
je 0x18009ea04
mov r14, qword [rsp + 0x30]
mov r8, r12
mov r9, qword [rsp + 0x48]
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], r14
call sym.libcrypto_1_1_x64.dll_BN_div
test eax, eax
je 0x18009e90e
mov edx, 2
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_BN_set_word
test eax, eax
je 0x18009e90e
mov rcx, qword [rsp + 0x78]
mov r8, r14
mov rdx, r15
call sym.libcrypto_1_1_x64.dll_BN_MONT_CTX_set
test eax, eax
je 0x18009e90e
mov rax, qword [rsp + 0x78]
mov r9, r15
mov rcx, qword [rsp + 0x70]
mov r8, rdi
mov qword [rsp + 0x28], rax
mov rdx, r12
mov qword [rsp + 0x20], r14
call sym.libcrypto_1_1_x64.dll_BN_mod_exp_mont
test eax, eax
je 0x18009e90e
nop dword [rax + rax]
mov rcx, qword [rsp + 0x70]
call sym.libcrypto_1_1_x64.dll_BN_is_one
test eax, eax
je 0x18009e944
call sym.libcrypto_1_1_x64.dll_BN_value_one
mov r8, rax
mov rdx, r12
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_BN_add
test eax, eax
je 0x18009e90e
mov rax, qword [rsp + 0x78]
mov r9, r15
mov rcx, qword [rsp + 0x70]
mov r8, rdi
inc dword [rbp - 0x68]
mov rdx, r12
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r14
call sym.libcrypto_1_1_x64.dll_BN_mod_exp_mont
test eax, eax
jne 0x18009e8c0
mov r13, r14
mov rsi, qword [rsp + 0x160]
mov rcx, r13
call sym.libcrypto_1_1_x64.dll_BN_CTX_end
mov rcx, r13
call sym.libcrypto_1_1_x64.dll_BN_CTX_free
mov rcx, qword [rsp + 0x78]
call sym.libcrypto_1_1_x64.dll_BN_MONT_CTX_free
mov eax, dword [rsp + 0x3c]
mov r13, qword [rsp + 0x158]
jmp 0x18009e2ef
mov edx, 3
mov rcx, rbx
lea r8d, [rdx - 2]
call sym.libcrypto_1_1_x64.dll_BN_GENCB_call
test eax, eax
je 0x18009e90e
mov dword [rsp + 0x3c], 1
mov rbx, qword [rbp - 0x58]
mov rcx, qword [rbx + 8]
call sym.libcrypto_1_1_x64.dll_BN_free
mov rcx, qword [rbx + 0x10]
call sym.libcrypto_1_1_x64.dll_BN_free
mov rcx, qword [rbx + 0x18]
call sym.libcrypto_1_1_x64.dll_BN_free
mov rcx, r15
call sym.libcrypto_1_1_x64.dll_BN_dup
mov rcx, qword [rsp + 0x48]
mov qword [rbx + 8], rax
call sym.libcrypto_1_1_x64.dll_BN_dup
mov rcx, qword [rsp + 0x70]
mov qword [rbx + 0x10], rax
call sym.libcrypto_1_1_x64.dll_BN_dup
cmp qword [rbx + 8], 0
mov qword [rbx + 0x18], rax
je 0x18009e9f7
cmp qword [rbx + 0x10], 0
je 0x18009e9f7
test rax, rax
je 0x18009e9f7
mov rax, qword [rbp - 0x50]
test rax, rax
je 0x18009e9c7
mov dword [rax], r13d
mov rdx, qword [rbp - 0x48]
test rdx, rdx
je 0x18009e9d6
mov rax, qword [rbp - 0x68]
mov dword [rdx], eax
mov rax, qword [rbp - 0x40]
test rax, rax
je 0x18009e90e
mov r8, rsi
lea rdx, [rbp + 0x28]
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
jmp 0x18009e90e
mov dword [rsp + 0x3c], 0
jmp 0x18009e90e
mov r13, qword [rsp + 0x30]
jmp 0x18009e911
mov r13, qword [rsp + 0x30]
jmp 0x18009e919