Function at 0x14031b8e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov qword [rsp + 0xe8], rdx
mov rbx, r9
mov qword [rsp + 0xf0], r8
mov qword [rsp + 0xe0], rcx
call fcn.1401bd560
mov rcx, rax
mov r13, rax
call fcn.14031ae00
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0x48], rax
mov rsi, rax
call fcn.1401e7dc0
mov edi, eax
test rsi, rsi
je 0x14031bec8
test eax, eax
jle 0x14031bec8
mov rax, qword [rsp + 0x108]
mov rcx, qword [rsp + 0x100]
mov edx, 0xff
mov r8, qword [rax]
call fcn.14042d780
lea rdx, [rsp + 0xf0]
lea r9, [0x1406d61e0]
xor ecx, ecx
mov r8d, ebx
call fcn.140192040
mov r12, rax
test rax, rax
je 0x14031bfe8
mov rax, qword [rax + 0x10]
cmp dword [rax], edi
jne 0x14031bf50
mov rdx, qword [r12 + 0x18]
mov rax, qword [rax + 8]
mov rbx, qword [rdx + 8]
mov qword [rsp + 0x68], rax
movsxd rax, dword [rdx]
mov qword [rsp + 0x58], rbx
mov rbx, qword [rsp + 0x108]
mov dword [rsp + 0x64], eax
mov qword [rsp + 0x50], rax
cmp qword [rbx], rax
jb 0x14031bf10
call fcn.140298990
mov r15, rax
test rax, rax
je 0x14031c008
mov rcx, rax
call fcn.140298b70
mov rcx, r15
call fcn.140298d40
mov rcx, r15
mov qword [rsp + 0x78], rax
call fcn.140298d40
mov rbx, rax
test rax, rax
je 0x14031c048
lea r14, str.crypto_sm2_sm2_crypt.c
mov rcx, qword [rsp + 0x50]
mov r8d, 0x13d
mov rdx, r14
call fcn.1401f4f40
mov r8d, 0x13e
mov rdx, r14
mov qword [rsp + 0x70], rax
mov rax, qword [rsp + 0x48]
add rax, rax
mov rcx, rax
mov qword [rsp + 0x80], rax
call fcn.1401f4f40
mov rdx, r14
mov r8d, 0x13f
mov rsi, rax
movsxd rax, edi
mov rcx, rax
mov qword [rsp + 0x88], rax
call fcn.1401f4f40
mov r11, qword [rsp + 0x70]
mov rbp, rax
test r11, r11
sete al
test rsi, rsi
sete dl
or al, dl
jne 0x14031bf70
test rbp, rbp
je 0x14031bf70
mov rcx, r13
mov qword [rsp + 0x70], r11
call fcn.1401beb90
mov r11, qword [rsp + 0x70]
test rax, rax
mov rdi, rax
je 0x14031c070
mov r9, qword [r12 + 8]
mov qword [rsp + 0x20], r15
mov rdx, rax
mov rcx, r13
mov r8, qword [r12]
mov qword [rsp + 0x70], r11
call fcn.1401bfec0
mov r11, qword [rsp + 0x70]
test eax, eax
je 0x14031bfb0
mov rcx, qword [rsp + 0xe0]
mov qword [rsp + 0x70], r11
call fcn.1401bd5c0
mov qword [rsp + 0x28], r15
xor r8d, r8d
mov r9, rdi
mov qword [rsp + 0x20], rax
mov rdx, rdi
mov rcx, r13
call fcn.1401c10b0
mov r11, qword [rsp + 0x70]
test eax, eax
je 0x14031bfb0
mov qword [rsp + 0x20], r15
mov r8, qword [rsp + 0x78]
mov r9, rbx
mov rdx, rdi
mov rcx, r13
call fcn.1401c0370
mov r11, qword [rsp + 0x70]
test eax, eax
je 0x14031bfb0
mov r13, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x78]
mov rdx, rsi
mov r8d, r13d
call fcn.1401a14f0
mov r11, qword [rsp + 0x70]
test eax, eax
js 0x14031c08f
mov rax, r13
lea r13, [rsi + r13]
mov rcx, rbx
mov r8d, eax
mov rdx, r13
call fcn.1401a14f0
mov r11, qword [rsp + 0x70]
test eax, eax
js 0x14031c08f
mov rax, qword [rsp + 0xe8]
mov rdx, qword [rsp + 0x50]
mov rcx, r11
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9, qword [rsp + 0x80]
mov r8, rsi
mov qword [rsp + 0x30], rax
call fcn.1402d2f90
mov r11, qword [rsp + 0x70]
test eax, eax
je 0x14031c08f
mov eax, dword [rsp + 0x64]
test eax, eax
je 0x14031bd5b
mov r10, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x100]
mov ebx, dword [rsp + 0x64]
lea r8, [r10 + 1]
sub rdx, r8
lea eax, [rbx - 1]
mov ecx, ebx
cmp rdx, 0xe
seta r8b
cmp eax, 6
seta dl
test r8b, dl
je 0x14031c114
mov rdx, qword [rsp + 0x100]
lea r8, [r11 + 1]
sub rdx, r8
cmp rdx, 0xe
jbe 0x14031c114
cmp eax, 0xe
jbe 0x14031c141
shr ebx, 4
xor eax, eax
mov rcx, r10
mov edx, ebx
shl rdx, 4
nop word cs:[rax + rax]
movdqu xmm0, xmmword [rcx + rax]
movdqu xmm2, xmmword [r11 + rax]
mov rbx, qword [rsp + 0x100]
pxor xmm0, xmm2
movups xmmword [rbx + rax], xmm0
add rax, 0x10
cmp rdx, rax
jne 0x14031bc30
mov ebx, dword [rsp + 0x64]
mov edx, ebx
and edx, 0xfffffff0
mov eax, edx
cmp ebx, edx
je 0x14031bd5b
sub ebx, edx
lea r8d, [rbx - 1]
mov ecx, ebx
cmp r8d, 6
jbe 0x14031bca5
mov rbx, qword [rsp + 0x58]
movq xmm0, qword [r11 + rdx]
movq xmm1, qword [rbx + rdx]
mov rbx, qword [rsp + 0x100]
pxor xmm0, xmm1
movq qword [rbx + rdx], xmm0
mov edx, ecx
and edx, 0xfffffff8
add eax, edx
cmp ecx, edx
je 0x14031bd5b
mov rbx, qword [rsp + 0x58]
movsxd rdx, eax
mov r10, qword [rsp + 0x100]
movzx ecx, byte [rbx + rdx]
xor cl, byte [r11 + rdx]
mov byte [r10 + rdx], cl
mov r10d, dword [rsp + 0x64]
lea edx, [rax + 1]
cmp r10d, edx
je 0x14031bd5b
movsxd rdx, edx
mov r9, qword [rsp + 0x100]
movzx ecx, byte [r11 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 2]
cmp r10d, edx
je 0x14031bd5b
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 3]
cmp r10d, edx
je 0x14031bd5b
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 4]
cmp r10d, edx
je 0x14031bd5b
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 5]
cmp r10d, edx
je 0x14031bd5b
movsxd rdx, edx
add eax, 6
movzx ecx, byte [rbx + rdx]
xor cl, byte [r11 + rdx]
mov byte [r9 + rdx], cl
cmp r10d, eax
je 0x14031bd5b
cdqe
movzx edx, byte [rbx + rax]
xor dl, byte [r11 + rax]
mov byte [r9 + rax], dl
mov qword [rsp + 0x58], r11
call fcn.1401d47b0
mov r11, qword [rsp + 0x58]
test rax, rax
mov rbx, rax
je 0x14031c0e1
mov rdx, qword [rsp + 0xe8]
mov rcx, rax
mov qword [rsp + 0x58], r11
call fcn.1401d4800
mov r11, qword [rsp + 0x58]
test eax, eax
je 0x14031c0ae
mov r8, qword [rsp + 0x48]
mov rdx, rsi
mov rcx, rbx
mov qword [rsp + 0x58], r11
call fcn.1401d4ca0
mov r11, qword [rsp + 0x58]
test eax, eax
je 0x14031c0ae
mov r8, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x100]
mov rcx, rbx
call fcn.1401d4ca0
mov r11, qword [rsp + 0x58]
test eax, eax
je 0x14031c0ae
mov r8, qword [rsp + 0x48]
mov rdx, r13
mov rcx, rbx
call fcn.1401d4ca0
mov r11, qword [rsp + 0x58]
test eax, eax
je 0x14031c0ae
xor r8d, r8d
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x48], r11
call fcn.1401d4cc0
mov r11, qword [rsp + 0x48]
test eax, eax
je 0x14031c0ae
mov r8, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x68]
mov rcx, rbp
call fcn.140274710
mov r11, qword [rsp + 0x48]
test eax, eax
jne 0x14031c14a
mov rax, qword [rsp + 0x108]
mov rdx, qword [rsp + 0x50]
mov r13d, 1
mov qword [rax], rdx
mov rcx, r11
mov rdx, r14
mov r8d, 0x17b
call fcn.1401f4d70
mov rdx, r14
mov rcx, rsi
mov r8d, 0x17c
call fcn.1401f4d70
mov r8d, 0x17d
mov rdx, r14
mov rcx, rbp
call fcn.1401f4d70
mov rcx, rdi
call fcn.1401bf970
mov rcx, r15
call fcn.140298ab0
lea rdx, [0x1406d61e0]
mov rcx, r12
call fcn.140193b10
mov rcx, rbx
call fcn.1401d47d0
mov eax, r13d
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor ebx, ebx
xor r11d, r11d
xor ebp, ebp
xor esi, esi
xor r12d, r12d
xor edi, edi
lea r14, str.crypto_sm2_sm2_crypt.c
xor r15d, r15d
mov rax, qword [rsp + 0x108]
xor edx, edx
mov qword [rsp + 0x48], r11
xor r13d, r13d
mov rcx, qword [rsp + 0x100]
mov r8, qword [rax]
call fcn.14042d780
mov r11, qword [rsp + 0x48]
jmp 0x14031be51
mov dword [rsp + 0x20], 0x12a
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x6b
mov edx, 0x66
mov ecx, 0x35
xor ebx, ebx
xor ebp, ebp
call fcn.1401d1f90
xor esi, esi
xor r11d, r11d
xor edi, edi
xor r15d, r15d
lea r14, str.crypto_sm2_sm2_crypt.c
jmp 0x14031bee0
mov dword [rsp + 0x20], 0x122
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x68
jmp 0x14031bf25
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor ebx, ebx
xor edi, edi
mov r8d, 0x41
mov ecx, 0x35
mov qword [rsp + 0x48], r11
mov dword [rsp + 0x20], 0x142
call fcn.1401d1f90
mov r11, qword [rsp + 0x48]
jmp 0x14031bee0
mov qword [rsp + 0x48], r11
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov dword [rsp + 0x20], 0x151
mov edx, 0x66
mov ecx, 0x35
xor ebx, ebx
call fcn.1401d1f90
mov r11, qword [rsp + 0x48]
jmp 0x14031bee0
mov dword [rsp + 0x20], 0x11d
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x64
jmp 0x14031bf25
mov dword [rsp + 0x20], 0x130
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
xor ebx, ebx
mov edx, 0x66
mov ecx, 0x35
call fcn.1401d1f90
xor r11d, r11d
xor ebp, ebp
xor esi, esi
xor edi, edi
lea r14, str.crypto_sm2_sm2_crypt.c
jmp 0x14031bee0
mov r8d, 3
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x139
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1401d1f90
jmp 0x14031c02e
mov qword [rsp + 0x48], r11
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov dword [rsp + 0x20], 0x148
jmp 0x14031bfca
mov qword [rsp + 0x48], r11
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov dword [rsp + 0x20], 0x159
jmp 0x14031bfca
mov r8d, 6
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x16b
lea r9, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], r11
call fcn.1401d1f90
mov r11, qword [rsp + 0x48]
jmp 0x14031bee0
mov r8d, 0x41
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x162
lea r9, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], r11
call fcn.1401d1f90
mov r11, qword [rsp + 0x48]
jmp 0x14031bee0
mov eax, dword [rsp + 0x64]
mov r8, qword [rsp + 0x58]
xor edx, edx
mov rbx, qword [rsp + 0x100]
movzx ecx, byte [r11 + rdx]
xor cl, byte [r8 + rdx]
mov byte [rbx + rdx], cl
add rdx, 1
cmp rdx, rax
jne 0x14031c11f
jmp 0x14031bd5b
xor edx, edx
xor eax, eax
jmp 0x14031bc75
mov r8d, 0x66
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x170
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1401d1f90
mov r11, qword [rsp + 0x48]
jmp 0x14031bee0