Function at 0x14031b030
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
movups xmmword [rsp + 0xb0], xmm6
mov r14, rcx
mov qword [rsp + 0x118], rdx
mov qword [rsp + 0x120], r8
mov qword [rsp + 0x128], r9
call fcn.1401d47b0
mov rcx, r14
mov r13, rax
call fcn.1401bd560
mov rcx, rax
mov r12, rax
call fcn.1401be760
mov rcx, r14
mov rsi, rax
call fcn.1401bd6f0
mov rcx, qword [rsp + 0x118]
mov qword [rsp + 0x58], rax
call fcn.1401e7dc0
pxor xmm0, xmm0
mov dword [rsp + 0x54], eax
movups xmmword [rsp + 0xa0], xmm0
test r13, r13
je 0x14031b350
test eax, eax
jle 0x14031b350
mov rcx, r12
call fcn.14031ae00
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14031b270
mov rcx, r12
call fcn.1401beb90
mov rcx, r12
mov rbx, rax
call fcn.1401beb90
mov rbp, rax
call fcn.140298990
test rbx, rbx
mov r14, rax
sete al
test rbp, rbp
sete dl
or al, dl
jne 0x14031b360
test r14, r14
je 0x14031b360
mov rcx, r14
call fcn.140298b70
mov rcx, r14
call fcn.140298d40
mov rcx, r14
mov qword [rsp + 0x70], rax
call fcn.140298d40
mov rcx, r14
mov rdi, rax
mov qword [rsp + 0x78], rax
call fcn.140298d40
mov rcx, r14
movq xmm6, rdi
mov qword [rsp + 0x80], rax
call fcn.140298d40
mov rcx, r14
mov qword [rsp + 0x68], rax
movhps xmm6, qword [rsp + 0x68]
call fcn.140298d40
mov rdi, rax
test rax, rax
je 0x14031b3d0
mov rax, qword [rsp + 0x60]
lea r15, str.crypto_sm2_sm2_crypt.c
mov r8d, 0xa2
mov rdx, r15
add rax, rax
mov rcx, rax
mov qword [rsp + 0x88], rax
call fcn.1401f4f40
movsxd rcx, dword [rsp + 0x54]
mov r8d, 0xa3
mov rdx, r15
mov qword [rsp + 0x40], rax
call fcn.1401f4f40
cmp qword [rsp + 0x40], 0
mov qword [rsp + 0x48], rax
je 0x14031b3b0
test rax, rax
je 0x14031b3b0
mov rax, qword [rsp + 0x138]
mov rcx, qword [rsp + 0x130]
xor edx, edx
mov r8, qword [rax]
call fcn.14042d780
mov rcx, qword [rsp + 0x70]
mov rdx, rsi
call fcn.1402a15b0
mov esi, eax
test eax, eax
je 0x14031b7b0
mov qword [rsp + 0x28], r14
mov r8, qword [rsp + 0x70]
xor r9d, r9d
mov rdx, rbx
mov qword [rsp + 0x20], 0
mov rcx, r12
call fcn.1401c10b0
test eax, eax
je 0x14031b242
mov qword [rsp + 0x20], r14
mov r9, qword [rsp + 0x68]
mov rdx, rbx
mov rcx, r12
mov r8, qword [rsp + 0x78]
call fcn.1401c0370
test eax, eax
jne 0x14031b418
mov dword [rsp + 0x20], 0xb5
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov edx, 0x67
mov ecx, 0x35
xor edi, edi
xor esi, esi
call fcn.1401d1f90
jmp 0x14031b2b8
mov dword [rsp + 0x20], 0x8a
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x67
xor edi, edi
xor ebp, ebp
mov r8d, 0x44
mov ecx, 0x35
xor ebx, ebx
xor r14d, r14d
call fcn.1401d1f90
xor esi, esi
lea r15, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov rcx, qword [rsp + 0xa8]
call fcn.140194fd0
mov rcx, qword [rsp + 0xa0]
call fcn.140194fd0
mov rdx, r15
mov rcx, rdi
mov r8d, 0xf4
call fcn.1401f4d70
mov rcx, qword [rsp + 0x40]
mov rdx, r15
mov r8d, 0xf5
call fcn.1401f4d70
mov rcx, qword [rsp + 0x48]
mov r8d, 0xf6
mov rdx, r15
call fcn.1401f4d70
mov rcx, r13
call fcn.1401d47d0
mov rcx, r14
call fcn.140298ab0
mov rcx, rbx
call fcn.1401bf970
mov rcx, rbp
call fcn.1401bf970
nop
movups xmm6, xmmword [rsp + 0xb0]
mov eax, esi
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0x84
jmp 0x14031b278
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x67
xor edi, edi
xor esi, esi
mov dword [rsp + 0x20], 0x92
mov r8d, 0x41
mov ecx, 0x35
lea r15, str.crypto_sm2_sm2_crypt.c
call fcn.1401d1f90
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
jmp 0x14031b2b8
mov dword [rsp + 0x20], 0xa6
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
jmp 0x14031b257
mov dword [rsp + 0x20], 0x9e
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 3
xor esi, esi
mov edx, 0x67
mov ecx, 0x35
lea r15, str.crypto_sm2_sm2_crypt.c
call fcn.1401d1f90
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
jmp 0x14031b2b8
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x28], r14
xor r8d, r8d
mov rdx, rbp
mov r9, qword [rsp + 0x58]
mov rcx, r12
mov qword [rsp + 0x20], rax
call fcn.1401c10b0
test eax, eax
je 0x14031b242
mov qword [rsp + 0x20], r14
mov r9, rdi
mov rdx, rbp
mov rcx, r12
mov rsi, qword [rsp + 0x80]
mov r8, rsi
call fcn.1401c0370
test eax, eax
je 0x14031b242
mov r8d, dword [rsp + 0x60]
mov rdx, qword [rsp + 0x40]
mov rcx, rsi
call fcn.1401a14f0
test eax, eax
js 0x14031b7d7
mov rax, qword [rsp + 0x60]
mov r12, qword [rsp + 0x40]
mov rcx, rdi
add r12, rax
mov r8d, eax
mov rdx, r12
call fcn.1401a14f0
test eax, eax
js 0x14031b7d7
mov rcx, qword [rsp + 0x128]
mov r8d, 0xbf
mov rdx, r15
call fcn.1401f4f40
mov rdi, rax
test rax, rax
je 0x14031b845
mov rax, qword [rsp + 0x118]
mov r8, qword [rsp + 0x40]
mov rcx, rdi
mov qword [rsp + 0x28], 0
mov r9, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x128]
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x30], rax
call fcn.1402d2f90
mov esi, eax
test eax, eax
je 0x14031b81c
cmp qword [rsp + 0x128], 0
je 0x14031b676
mov rsi, qword [rsp + 0x120]
mov rax, qword [rsp + 0x128]
mov rdx, rdi
lea rcx, [rsi + 1]
sub rax, 1
sub rdx, rcx
cmp rdx, 0xe
jbe 0x14031b870
cmp rax, 6
jbe 0x14031b870
mov rdx, qword [rsp + 0x128]
cmp rax, 0xe
jbe 0x14031b897
and rdx, 0xfffffffffffffff0
xor eax, eax
mov rcx, rsi
movdqu xmm0, xmmword [rdi + rax]
movdqu xmm2, xmmword [rcx + rax]
pxor xmm0, xmm2
movups xmmword [rdi + rax], xmm0
add rax, 0x10
cmp rdx, rax
jne 0x14031b569
mov rax, qword [rsp + 0x128]
and rax, 0xfffffffffffffff0
test byte [rsp + 0x128], 0xf
je 0x14031b676
mov rdx, qword [rsp + 0x128]
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 6
jbe 0x14031b5e3
mov rsi, qword [rsp + 0x120]
lea rcx, [rdi + rax]
movq xmm1, qword [rcx]
movq xmm0, qword [rsi + rax]
pxor xmm0, xmm1
movq qword [rcx], xmm0
mov rcx, rdx
and rcx, 0xfffffffffffffff8
add rax, rcx
cmp rdx, rcx
je 0x14031b676
mov rsi, qword [rsp + 0x120]
movzx edx, byte [rsi + rax]
xor byte [rdi + rax], dl
lea rdx, [rax + 1]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx ecx, byte [rsi + rax + 1]
xor byte [rdi + rdx], cl
lea rdx, [rax + 2]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx ecx, byte [rsi + rax + 2]
xor byte [rdi + rdx], cl
lea rdx, [rax + 3]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx ecx, byte [rsi + rax + 3]
xor byte [rdi + rdx], cl
lea rdx, [rax + 4]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx ecx, byte [rsi + rax + 4]
xor byte [rdi + rdx], cl
lea rdx, [rax + 5]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx ecx, byte [rsi + rax + 5]
xor byte [rdi + rdx], cl
lea rdx, [rax + 6]
cmp qword [rsp + 0x128], rdx
je 0x14031b676
movzx eax, byte [rsi + rax + 6]
xor byte [rdi + rdx], al
mov rdx, qword [rsp + 0x118]
mov rcx, r13
call fcn.1401d4800
test eax, eax
je 0x14031b7f1
mov rsi, qword [rsp + 0x60]
mov rdx, qword [rsp + 0x40]
mov rcx, r13
mov r8, rsi
call fcn.1401d4ca0
test eax, eax
je 0x14031b7f1
mov r8, qword [rsp + 0x128]
mov rdx, qword [rsp + 0x120]
mov rcx, r13
call fcn.1401d4ca0
test eax, eax
je 0x14031b7f1
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.1401d4ca0
test eax, eax
je 0x14031b7f1
mov rdx, qword [rsp + 0x48]
xor r8d, r8d
mov rcx, r13
call fcn.1401d4cc0
test eax, eax
je 0x14031b7f1
movups xmmword [rsp + 0x90], xmm6
call fcn.140194fc0
mov qword [rsp + 0xa0], rax
call fcn.140194fc0
mov rcx, qword [rsp + 0xa0]
mov qword [rsp + 0xa8], rax
test rcx, rcx
je 0x14031b89e
test rax, rax
je 0x14031b89e
mov r8d, dword [rsp + 0x54]
mov rdx, qword [rsp + 0x48]
call fcn.14028c770
test eax, eax
je 0x14031b8d3
mov r8d, dword [rsp + 0x128]
mov rcx, qword [rsp + 0xa8]
mov rdx, rdi
call fcn.14028c770
test eax, eax
je 0x14031b8d3
lea rdx, [rsp + 0x130]
lea rcx, [rsp + 0x90]
lea r8, [0x1406d61e0]
call fcn.1401931c0
test eax, eax
js 0x14031b8a8
mov rsi, qword [rsp + 0x138]
cdqe
mov qword [rsi], rax
mov esi, 1
jmp 0x14031b2b8
mov r9, r15
mov r8d, 0x44
mov edx, 0x67
xor edi, edi
mov dword [rsp + 0x20], 0xad
mov ecx, 0x35
call fcn.1401d1f90
jmp 0x14031b2b8
mov dword [rsp + 0x20], 0xbb
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
jmp 0x14031b257
mov dword [rsp + 0x20], 0xd4
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 6
xor esi, esi
mov edx, 0x67
mov ecx, 0x35
call fcn.1401d1f90
jmp 0x14031b2b8
mov r8d, 6
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xc8
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.1401d1f90
jmp 0x14031b2b8
mov dword [rsp + 0x20], 0xc1
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov edx, 0x67
xor esi, esi
mov ecx, 0x35
call fcn.1401d1f90
jmp 0x14031b2b8
mov rcx, qword [rsp + 0x120]
mov r8, qword [rsp + 0x128]
xor eax, eax
movzx edx, byte [rcx + rax]
xor byte [rdi + rax], dl
add rax, 1
cmp r8, rax
jne 0x14031b882
jmp 0x14031b676
xor eax, eax
jmp 0x14031b5b3
mov dword [rsp + 0x20], 0xde
jmp 0x14031b84d
mov dword [rsp + 0x20], 0xea
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov edx, 0x67
xor esi, esi
mov ecx, 0x35
call fcn.1401d1f90
jmp 0x14031b2b8
mov dword [rsp + 0x20], 0xe3
jmp 0x14031b8b0