Function at 0x1401ed890
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov rdi, rcx
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x110], r8
mov qword [rsp + 0x118], r9
call fcn.1400a47d0
mov rcx, rdi
mov rsi, rax
call fcn.14008dab0
mov rcx, rax
mov rbx, rax
call fcn.14008ebc0
mov rcx, rdi
mov r13, rax
call fcn.14008dc00
mov rcx, qword [rsp + 0x108]
mov qword [rsp + 0x58], rax
call fcn.1400b8150
pxor xmm0, xmm0
mov dword [rsp + 0x54], eax
movups xmmword [rsp + 0xa0], xmm0
test rsi, rsi
je 0x1401edb98
test eax, eax
jle 0x1401edb98
mov rcx, rbx
call fcn.1401ed680
mov qword [rsp + 0x60], rax
test rax, rax
je 0x1401edac0
mov rcx, rbx
call fcn.14008f050
mov rcx, rbx
mov r12, rax
call fcn.14008f050
mov r14, rax
call fcn.14016c7c0
test r12, r12
mov rdi, rax
sete al
test r14, r14
sete dl
or al, dl
jne 0x1401edba8
test rdi, rdi
je 0x1401edba8
mov rcx, rdi
call fcn.14016c9a0
mov rcx, rdi
call fcn.14016cb60
mov rcx, rdi
mov qword [rsp + 0x68], rax
call fcn.14016cb60
mov rcx, rdi
mov qword [rsp + 0x70], rax
call fcn.14016cb60
mov rcx, rdi
mov qword [rsp + 0x80], rax
call fcn.14016cb60
mov rcx, rdi
mov qword [rsp + 0x78], rax
call fcn.14016cb60
mov r15, rax
test rax, rax
je 0x1401edc20
mov rax, qword [rsp + 0x60]
lea rbp, str.crypto_sm2_sm2_crypt.c
mov r8d, 0xa2
mov rdx, rbp
add rax, rax
mov rcx, rax
mov qword [rsp + 0x88], rax
call fcn.1400c49b0
movsxd rcx, dword [rsp + 0x54]
mov r8d, 0xa3
mov rdx, rbp
mov qword [rsp + 0x40], rax
call fcn.1400c49b0
cmp qword [rsp + 0x40], 0
mov qword [rsp + 0x48], rax
je 0x1401edbf0
test rax, rax
je 0x1401edbf0
mov rax, qword [rsp + 0x128]
mov rcx, qword [rsp + 0x120]
xor edx, edx
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov rcx, qword [rsp + 0x68]
mov rdx, r13
call fcn.140175740
mov r13d, eax
test eax, eax
je 0x1401edf00
mov qword [rsp + 0x28], rdi
mov r8, qword [rsp + 0x68]
xor r9d, r9d
mov rdx, r12
mov qword [rsp + 0x20], 0
mov rcx, rbx
call fcn.1400911f0
test eax, eax
je 0x1401eda8e
mov qword [rsp + 0x20], rdi
mov r9, qword [rsp + 0x78]
mov rdx, r12
mov rcx, rbx
mov r8, qword [rsp + 0x70]
call fcn.1400904c0
test eax, eax
jne 0x1401edc68
mov r8d, 0x10
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xb5
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
xor r15d, r15d
xor r13d, r13d
jmp 0x1401edb0b
mov dword [rsp + 0x20], 0x8a
lea r9, str.crypto_sm2_sm2_crypt.c
xor r15d, r15d
xor r14d, r14d
xor r12d, r12d
mov r8d, 0x44
mov edx, 0x67
xor edi, edi
xor r13d, r13d
mov ecx, 0x35
lea rbp, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov rcx, qword [rsp + 0xa8]
call fcn.140065860
mov rcx, qword [rsp + 0xa0]
call fcn.140065860
mov rdx, rbp
mov rcx, r15
mov r8d, 0xf4
call fcn.1400c47e0
mov rcx, qword [rsp + 0x40]
mov rdx, rbp
mov r8d, 0xf5
call fcn.1400c47e0
mov rcx, qword [rsp + 0x48]
mov r8d, 0xf6
mov rdx, rbp
call fcn.1400c47e0
mov rcx, rsi
call fcn.1400a47f0
mov rcx, rdi
call fcn.14016c8e0
mov rcx, r12
call fcn.14008fb00
mov rcx, r14
call fcn.14008fb00
mov eax, r13d
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0x84
jmp 0x1401edac8
mov edx, 0x67
mov ecx, 0x35
xor r15d, r15d
xor r13d, r13d
mov dword [rsp + 0x20], 0x92
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
lea rbp, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
jmp 0x1401edb0b
mov dword [rsp + 0x20], 0xa6
mov r8d, 0x41
mov edx, 0x67
mov ecx, 0x35
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
jmp 0x1401edab2
mov dword [rsp + 0x20], 0x9e
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 3
xor r13d, r13d
mov edx, 0x67
mov ecx, 0x35
lea rbp, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
jmp 0x1401edb0b
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x28], rdi
xor r8d, r8d
mov rdx, r14
mov r9, qword [rsp + 0x58]
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.1400911f0
test eax, eax
je 0x1401eda8e
mov qword [rsp + 0x20], rdi
mov r9, r15
mov rdx, r14
mov rcx, rbx
mov r13, qword [rsp + 0x80]
mov r8, r13
call fcn.1400904c0
test eax, eax
je 0x1401eda8e
mov r8d, dword [rsp + 0x60]
mov rdx, qword [rsp + 0x40]
mov rcx, r13
call fcn.1400722a0
test eax, eax
js 0x1401edf28
mov rax, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x40]
mov rcx, r15
add rbx, rax
mov r8d, eax
mov rdx, rbx
call fcn.1400722a0
test eax, eax
js 0x1401edf28
mov rcx, qword [rsp + 0x118]
mov r8d, 0xbf
mov rdx, rbp
call fcn.1400c49b0
mov r15, rax
test rax, rax
je 0x1401ee119
mov rax, qword [rsp + 0x108]
mov r8, qword [rsp + 0x40]
mov rcx, r15
mov qword [rsp + 0x28], 0
mov r9, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x118]
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x30], rax
call fcn.1401a60d0
test eax, eax
je 0x1401ee10c
cmp qword [rsp + 0x118], 0
je 0x1401eddbb
mov rax, qword [rsp + 0x118]
lea rdx, [rax - 1]
cmp rdx, 6
jbe 0x1401ee0f5
mov rax, qword [rsp + 0x110]
mov rcx, r15
add rax, 1
sub rcx, rax
xor eax, eax
cmp rcx, 0xe
ja 0x1401edf7d
mov rcx, qword [rsp + 0x110]
mov r8, qword [rsp + 0x118]
movzx edx, byte [rcx + rax]
xor byte [r15 + rax], dl
add rax, 1
cmp r8, rax
jne 0x1401eddaa
mov rdx, qword [rsp + 0x108]
mov rcx, rsi
call fcn.1400a4b40
test eax, eax
je 0x1401edf51
mov r13, qword [rsp + 0x60]
mov rdx, qword [rsp + 0x40]
mov rcx, rsi
mov r8, r13
call fcn.1400a4c10
test eax, eax
je 0x1401edf51
mov r8, qword [rsp + 0x118]
mov rdx, qword [rsp + 0x110]
mov rcx, rsi
call fcn.1400a4c10
test eax, eax
je 0x1401edf51
mov r8, r13
mov rdx, rbx
mov rcx, rsi
call fcn.1400a4c10
test eax, eax
je 0x1401edf51
mov rdx, qword [rsp + 0x48]
xor r8d, r8d
mov rcx, rsi
call fcn.1400a4c30
test eax, eax
je 0x1401edf51
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x98], rax
call fcn.140065850
mov qword [rsp + 0xa0], rax
call fcn.140065850
mov rcx, qword [rsp + 0xa0]
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x1401ee135
test rcx, rcx
je 0x1401ee135
mov r8d, dword [rsp + 0x54]
mov rdx, qword [rsp + 0x48]
call fcn.14015bfa0
test eax, eax
je 0x1401ee187
mov r8d, dword [rsp + 0x118]
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call fcn.14015bfa0
test eax, eax
je 0x1401ee187
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x90]
lea r8, [0x1402d6820]
call fcn.140063ba0
test eax, eax
js 0x1401ee15e
mov rbx, qword [rsp + 0x128]
cdqe
mov r13d, 1
mov qword [rbx], rax
jmp 0x1401edb0b
mov r9, rbp
mov edx, 0x67
mov ecx, 0x35
xor r15d, r15d
mov dword [rsp + 0x20], 0xad
mov r8d, 0x44
call fcn.1400a0f90
jmp 0x1401edb0b
mov r8d, 0x44
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xbb
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
jmp 0x1401edab2
mov dword [rsp + 0x20], 0xd4
mov r8d, 6
mov edx, 0x67
mov ecx, 0x35
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
xor r13d, r13d
jmp 0x1401edb0b
cmp rdx, 0xe
jbe 0x1401ee126
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x110]
xor edx, edx
and rax, 0xfffffffffffffff0
movdqu xmm0, xmmword [r15 + rdx]
movdqu xmm2, xmmword [rcx + rdx]
pxor xmm0, xmm2
movups xmmword [r15 + rdx], xmm0
add rdx, 0x10
cmp rax, rdx
jne 0x1401edf9d
cmp rax, qword [rsp + 0x118]
je 0x1401eddbb
mov rdx, qword [rsp + 0x118]
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 6
jbe 0x1401ee00e
mov r10, qword [rsp + 0x110]
lea rcx, [r15 + rax]
movq xmm1, qword [rcx]
movq xmm0, qword [r10 + rax]
pxor xmm0, xmm1
movq qword [rcx], xmm0
mov rcx, rdx
and rcx, 0xfffffffffffffff8
add rax, rcx
and edx, 7
je 0x1401eddbb
mov rdx, qword [rsp + 0x110]
movzx edx, byte [rdx + rax]
xor byte [r15 + rax], dl
lea rdx, [rax + 1]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 1]
xor byte [r15 + rdx], cl
lea rdx, [rax + 2]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 2]
xor byte [r15 + rdx], cl
lea rdx, [rax + 3]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 3]
xor byte [r15 + rdx], cl
lea rdx, [rax + 4]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 4]
xor byte [r15 + rdx], cl
lea rdx, [rax + 5]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 5]
xor byte [r15 + rdx], cl
lea rdx, [rax + 6]
cmp qword [rsp + 0x118], rdx
je 0x1401eddbb
mov rcx, qword [rsp + 0x110]
movzx eax, byte [rcx + rax + 6]
xor byte [r15 + rdx], al
jmp 0x1401eddbb
mov rcx, qword [rsp + 0x110]
mov r8, qword [rsp + 0x118]
xor eax, eax
jmp 0x1401eddaa
mov dword [rsp + 0x20], 0xc8
jmp 0x1401edf59
mov dword [rsp + 0x20], 0xc1
jmp 0x1401edbf8
mov rdx, qword [rsp + 0x118]
xor eax, eax
jmp 0x1401edfdd
mov r8d, 0x41
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xde
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
jmp 0x1401edf75
mov dword [rsp + 0x20], 0xea
mov r8d, 0x44
mov edx, 0x67
mov ecx, 0x35
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1400a0f90
jmp 0x1401edf75
mov dword [rsp + 0x20], 0xe3
jmp 0x1401ee166