Function at 0x18015d450
Capabilities:
Encode data using xor

Disassembly:
jmp 0x18015d450
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0xc0
call fcn.180001055
sub rsp, rax
xor edi, edi
mov rsi, r9
mov r14d, edi
mov r15, rdx
mov rbx, rcx
call sym.libcrypto_1_1_x64.dll_EVP_MD_CTX_new
mov rcx, rbx
mov r12, rax
call sym.libcrypto_1_1_x64.dll_EC_KEY_get0_group
mov rcx, rax
mov rbp, rax
call sym.libcrypto_1_1_x64.dll_EC_GROUP_get0_order
mov rcx, rbx
mov qword [rsp + 0xa0], rax
call sym.libcrypto_1_1_x64.dll_EC_KEY_get0_public_key
mov rcx, r15
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0x50], rdi
mov ebx, edi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], rdi
call sym.libcrypto_1_1_x64.dll_EVP_MD_size
mov dword [rsp + 0x48], eax
mov qword [rsp + 0x98], rdi
mov qword [rsp + 0x90], rdi
test r12, r12
je 0x18015da6f
test eax, eax
jle 0x18015da6f
mov rcx, rbp
call fcn.18015ca30
mov r15, rax
test rax, rax
jne 0x18015d513
mov dword [rsp + 0x20], 0x8a
jmp 0x18015da77
mov rcx, rbp
call sym.libcrypto_1_1_x64.dll_EC_POINT_new
mov rcx, rbp
mov qword [rsp + 0x50], rax
call sym.libcrypto_1_1_x64.dll_EC_POINT_new
mov qword [rsp + 0x58], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_new
mov r14, rax
cmp qword [rsp + 0x50], rbx
je 0x18015da5f
cmp qword [rsp + 0x58], rbx
je 0x18015da5f
test rax, rax
je 0x18015da5f
mov rcx, rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_start
mov rcx, r14
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r14
mov r13, rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r14
mov qword [rsp + 0x70], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r14
mov qword [rsp + 0x68], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov rcx, r14
mov qword [rsp + 0x78], rax
call sym.libcrypto_1_1_x64.dll_BN_CTX_get
mov qword [rsp + 0xb0], rax
test rax, rax
jne 0x18015d5b4
mov dword [rsp + 0x20], 0x9e
lea r8d, [rax + 3]
jmp 0x18015da7d
lea rcx, [r15 + r15]
mov r8d, 0xa2
lea rdx, str.crypto_sm2_sm2_crypt.c
call sym.libcrypto_1_1_x64.dll_CRYPTO_zalloc
movsxd rcx, dword [rsp + 0x48]
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r8d, 0xa3
mov qword [rsp + 0x60], rax
call sym.libcrypto_1_1_x64.dll_CRYPTO_zalloc
mov qword [rsp + 0x40], rax
cmp qword [rsp + 0x60], rbx
je 0x18015da36
test rax, rax
je 0x18015da36
mov rax, qword [rsp + 0x128]
xor edx, edx
mov rcx, qword [rsp + 0x120]
mov r8, qword [rax]
call sub.VCRUNTIME140.dll_memset
mov rdx, qword [rsp + 0xa0]
mov rcx, r13
call sym.libcrypto_1_1_x64.dll_BN_priv_rand_range
test eax, eax
jne 0x18015d657
mov dword [rsp + 0x20], 0xad
mov edx, 0x67
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
lea r8d, [rdx - 0x23]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
mov rbp, qword [rsp + 0x40]
jmp 0x18015da94
mov rdx, qword [rsp + 0x50]
xor r9d, r9d
mov qword [rsp + 0x28], r14
mov r8, r13
mov rcx, rbp
mov qword [rsp + 0x20], rdi
call sym.libcrypto_1_1_x64.dll_EC_POINT_mul
test eax, eax
je 0x18015da0f
mov r9, qword [rsp + 0x78]
mov rcx, rbp
mov r8, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x50]
mov qword [rsp + 0x20], r14
call sym.libcrypto_1_1_x64.dll_EC_POINT_get_affine_coordinates
test eax, eax
je 0x18015da0f
mov r9, qword [rsp + 0xa8]
xor r8d, r8d
mov rdx, qword [rsp + 0x58]
mov rcx, rbp
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r13
call sym.libcrypto_1_1_x64.dll_EC_POINT_mul
test eax, eax
je 0x18015da0f
mov r13, qword [rsp + 0xb0]
mov rcx, rbp
mov r8, qword [rsp + 0x68]
mov r9, r13
mov rdx, qword [rsp + 0x58]
mov qword [rsp + 0x20], r14
call sym.libcrypto_1_1_x64.dll_EC_POINT_get_affine_coordinates
test eax, eax
je 0x18015da0f
mov rbp, qword [rsp + 0x60]
mov r8d, r15d
mov rcx, qword [rsp + 0x68]
mov rdx, rbp
call sym.libcrypto_1_1_x64.dll_BN_bn2binpad
test eax, eax
js 0x18015da02
lea rdx, [r15 + rbp]
mov r8d, r15d
mov rcx, r13
call sym.libcrypto_1_1_x64.dll_BN_bn2binpad
test eax, eax
js 0x18015da02
mov r8d, 0xbf
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rsi
call sym.libcrypto_1_1_x64.dll_CRYPTO_zalloc
mov rbx, rax
test rax, rax
jne 0x18015d752
mov dword [rsp + 0x20], 0xc1
jmp 0x18015da3e
mov r13, qword [rsp + 0x108]
lea r9, [r15 + r15]
mov qword [rsp + 0x30], r13
mov r8, rbp
mov qword [rsp + 0x28], rdi
mov rdx, rsi
mov rcx, rbx
mov qword [rsp + 0x20], rdi
call fcn.180002121
test eax, eax
jne 0x18015d790
mov dword [rsp + 0x20], 0xc8
lea r8d, [rax + 6]
jmp 0x18015da44
mov r9, rdi
test rsi, rsi
je 0x18015d861
mov r8, qword [rsp + 0x110]
cmp rsi, 0x40
jb 0x18015d83b
lea rcx, [rsi - 1]
lea rax, [r8 - 1]
add rcx, rbx
add rax, rsi
cmp rbx, rax
ja 0x18015d7c6
cmp rcx, r8
jae 0x18015d83b
mov rdx, rsi
and rdx, 0xffffffffffffffc0
mov rcx, r8
mov rax, rbx
sub rcx, rbx
nop word [rax + rax]
movdqu xmm0, xmmword [rax]
add r9, 0x40
movdqu xmm1, xmmword [rcx + rax]
lea rax, [rax + 0x40]
pxor xmm1, xmm0
movdqu xmmword [rax - 0x40], xmm1
movdqu xmm0, xmmword [rax - 0x30]
movdqu xmm1, xmmword [rcx + rax - 0x30]
pxor xmm1, xmm0
movdqu xmmword [rax - 0x30], xmm1
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmm1, xmmword [rcx + rax - 0x20]
pxor xmm1, xmm0
movdqu xmmword [rax - 0x20], xmm1
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmm1, xmmword [rcx + rax - 0x10]
pxor xmm1, xmm0
movdqu xmmword [rax - 0x10], xmm1
cmp r9, rdx
jne 0x18015d7e0
cmp r9, rsi
je 0x18015d861
sub r8, rbx
lea rcx, [r9 + rbx]
mov rdx, rsi
sub rdx, r9
nop dword [rax]
movzx eax, byte [rcx + r8]
xor byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x18015d850
mov rdx, r13
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_DigestInit
test eax, eax
je 0x18015d9d8
mov r8, r15
mov rdx, rbp
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_DigestUpdate
test eax, eax
je 0x18015d9d8
mov rdx, qword [rsp + 0x110]
mov r8, rsi
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_DigestUpdate
test eax, eax
je 0x18015d9d8
mov r8, r15
lea rdx, [r15 + rbp]
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_DigestUpdate
mov rbp, qword [rsp + 0x40]
test eax, eax
je 0x18015d9dd
xor r8d, r8d
mov rdx, rbp
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_DigestFinal
test eax, eax
je 0x18015d9dd
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x88], rax
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_new
mov qword [rsp + 0x90], rax
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_new
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x98], rax
test rcx, rcx
je 0x18015d9b3
test rax, rax
je 0x18015d9b3
mov r8d, dword [rsp + 0x48]
mov rdx, rbp
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_set
test eax, eax
je 0x18015d98e
mov rcx, qword [rsp + 0x98]
mov r8d, esi
mov rdx, rbx
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_set
test eax, eax
je 0x18015d98e
lea r8, [0x180234380]
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x80]
call sym.libcrypto_1_1_x64.dll_ASN1_item_i2d
test eax, eax
jns 0x18015d977
mov dword [rsp + 0x20], 0xea
jmp 0x18015d996
mov rcx, qword [rsp + 0x128]
mov edi, 1
cdqe
mov qword [rcx], rax
jmp 0x18015da94
mov dword [rsp + 0x20], 0xe3
mov edx, 0x67
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
lea r8d, [rdx - 0x23]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
jmp 0x18015da94
mov edx, 0x67
mov dword [rsp + 0x20], 0xde
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
lea r8d, [rdx - 0x26]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
jmp 0x18015da94
mov rbp, qword [rsp + 0x40]
mov edx, 0x67
mov dword [rsp + 0x20], 0xd4
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
lea r8d, [rdx - 0x61]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
jmp 0x18015da94
mov dword [rsp + 0x20], 0xbb
jmp 0x18015d635
mov edx, 0x67
mov dword [rsp + 0x20], 0xb5
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
lea r8d, [rdx - 0x57]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
mov rbp, qword [rsp + 0x40]
jmp 0x18015da94
mov dword [rsp + 0x20], 0xa6
mov r8d, 0x41
mov ecx, 0x35
lea r9, str.crypto_sm2_sm2_crypt.c
lea edx, [rcx + 0x32]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
mov rbp, qword [rsp + 0x40]
jmp 0x18015da94
mov dword [rsp + 0x20], 0x92
mov r8d, 0x41
jmp 0x18015da7d
mov dword [rsp + 0x20], 0x84
mov r8d, 0x44
mov edx, 0x67
lea r9, str.crypto_sm2_sm2_crypt.c
lea ecx, [rdx - 0x32]
call sym.libcrypto_1_1_x64.dll_ERR_put_error
mov rbp, rbx
mov rcx, qword [rsp + 0x98]
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_free
mov rcx, qword [rsp + 0x90]
call sym.libcrypto_1_1_x64.dll_ASN1_OCTET_STRING_free
mov r8d, 0xf4
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rbx
call sym.libcrypto_1_1_x64.dll_CRYPTO_free
mov rcx, qword [rsp + 0x60]
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r8d, 0xf5
call sym.libcrypto_1_1_x64.dll_CRYPTO_free
mov r8d, 0xf6
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rbp
call sym.libcrypto_1_1_x64.dll_CRYPTO_free
mov rcx, r12
call sym.libcrypto_1_1_x64.dll_EVP_MD_CTX_free
mov rcx, r14
call sym.libcrypto_1_1_x64.dll_BN_CTX_free
mov rcx, qword [rsp + 0x50]
call sym.libcrypto_1_1_x64.dll_EC_POINT_free
mov rcx, qword [rsp + 0x58]
call sym.libcrypto_1_1_x64.dll_EC_POINT_free
mov rbx, qword [rsp + 0x100]
mov eax, edi
add rsp, 0xc0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret