Function at 0x6a29d0
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 r14, rcx
mov qword [rsp + 0xf0], r8
call fcn.00549e50
mov rcx, rax
mov r13, rax
call fcn.006a1eb0
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0x48], rax
mov rsi, rax
call fcn.00573950
mov edi, eax
test rsi, rsi
je 0x6a2ab8
test eax, eax
jle 0x6a2ab8
mov rax, qword [rsp + 0x108]
mov rcx, qword [rsp + 0x100]
mov edx, 0xff
mov r8, qword [rax]
call sub.msvcrt.dll_memset
lea rdx, [rsp + 0xf0]
lea r9, [0x00942820]
xor ecx, ecx
mov r8d, ebx
call fcn.0051e600
mov r12, rax
test rax, rax
je 0x6a30c8
mov rax, qword [rax + 0x10]
cmp dword [rax], edi
je 0x6a2b70
mov dword [rsp + 0x20], 0x12b
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x68
mov edx, 0x66
mov ecx, 0x35
xor ebx, ebx
xor ebp, ebp
call fcn.0055dd20
xor esi, esi
xor r10d, r10d
xor edi, edi
xor r15d, r15d
jmp 0x6a2ac9
xor ebx, ebx
xor r10d, r10d
xor ebp, ebp
xor esi, esi
xor r12d, r12d
xor edi, edi
xor r15d, r15d
mov rax, qword [rsp + 0x108]
xor edx, edx
mov qword [rsp + 0x48], r10
xor r13d, r13d
mov rcx, qword [rsp + 0x100]
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov r10, qword [rsp + 0x48]
mov rcx, r10
mov r8d, 0x180
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.00580410
mov rcx, rsi
mov r8d, 0x181
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.00580410
mov r8d, 0x182
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rbp
call fcn.00580410
mov rcx, rdi
call fcn.0054c180
mov rcx, r15
call fcn.00621e40
lea rdx, [0x00942820]
mov rcx, r12
call fcn.005200b0
mov rcx, rbx
call fcn.00560410
mov eax, r13d
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [r12 + 0x18]
mov rax, qword [rax + 8]
mov rbx, qword [rdx + 8]
mov qword [rsp + 0x68], rax
mov eax, dword [rdx]
mov qword [rsp + 0x60], rbx
mov dword [rsp + 0x50], eax
call fcn.00621d30
mov r15, rax
test rax, rax
je 0x6a3090
mov rcx, rax
call fcn.00621f00
mov rcx, r15
call fcn.006220e0
mov rcx, r15
mov qword [rsp + 0x70], rax
call fcn.006220e0
mov rbx, rax
test rax, rax
je 0x6a30e8
movsxd rax, dword [rsp + 0x50]
mov r8d, 0x142
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rax
mov qword [rsp + 0x78], rax
call fcn.005805e0
mov r8d, 0x143
lea rdx, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x48]
add rax, rax
mov rcx, rax
mov qword [rsp + 0x80], rax
call fcn.005805e0
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x144
mov rsi, rax
movsxd rax, edi
mov rcx, rax
mov qword [rsp + 0x88], rax
call fcn.005805e0
mov r10, qword [rsp + 0x58]
mov rbp, rax
test r10, r10
sete dl
test rsi, rsi
sete al
or dl, al
jne 0x6a3058
test rbp, rbp
je 0x6a3058
mov rcx, r13
mov qword [rsp + 0x58], r10
call fcn.0054b3a0
mov r10, qword [rsp + 0x58]
test rax, rax
mov rdi, rax
je 0x6a3120
mov r9, qword [r12 + 8]
mov qword [rsp + 0x20], r15
mov rdx, rax
mov rcx, r13
mov r8, qword [r12]
mov qword [rsp + 0x58], r10
call fcn.0054c6c0
mov r10, qword [rsp + 0x58]
test eax, eax
je 0x6a3020
mov rcx, r14
mov qword [rsp + 0x58], r10
call fcn.00549eb0
mov qword [rsp + 0x28], r15
xor r8d, r8d
mov r9, rdi
mov qword [rsp + 0x20], rax
mov rdx, rdi
mov rcx, r13
call fcn.0054d8b0
mov r10, qword [rsp + 0x58]
test eax, eax
je 0x6a3020
mov r14, qword [rsp + 0x70]
mov qword [rsp + 0x20], r15
mov r9, rbx
mov rdx, rdi
mov rcx, r13
mov r8, r14
call fcn.0054cb70
mov r10, qword [rsp + 0x58]
test eax, eax
je 0x6a3020
mov r13, qword [rsp + 0x48]
mov rdx, rsi
mov rcx, r14
mov r8d, r13d
call fcn.0052da00
mov r10, qword [rsp + 0x58]
test eax, eax
js 0x6a313f
mov rax, r13
add r13, rsi
mov rcx, rbx
mov r8d, eax
mov rdx, r13
call fcn.0052da00
mov r10, qword [rsp + 0x58]
test eax, eax
js 0x6a313f
mov rax, qword [rsp + 0xe8]
mov rdx, qword [rsp + 0x78]
mov rcx, r10
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.0065b120
mov r10, qword [rsp + 0x58]
test eax, eax
je 0x6a313f
mov eax, dword [rsp + 0x50]
test eax, eax
je 0x6a2f24
mov r11, qword [rsp + 0x60]
mov rax, qword [rsp + 0x100]
mov ebx, dword [rsp + 0x50]
lea rdx, [r11 + 1]
sub rax, rdx
lea ecx, [rbx - 1]
mov r8d, ebx
cmp rax, 0xe
seta dl
cmp ecx, 6
seta al
test dl, al
je 0x6a31c4
mov rax, qword [rsp + 0x100]
lea rdx, [r10 + 1]
sub rax, rdx
cmp rax, 0xe
jbe 0x6a31c4
cmp ecx, 0xe
jbe 0x6a31f1
shr ebx, 4
xor eax, eax
mov r8, r11
mov edx, ebx
shl rdx, 4
nop word [rax + rax]
movdqu xmm0, xmmword [r8 + rax]
movdqu xmm2, xmmword [r10 + rax]
mov rbx, qword [rsp + 0x100]
pxor xmm0, xmm2
movups xmmword [rbx + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x6a2df8
mov ebx, dword [rsp + 0x50]
mov edx, ebx
and edx, 0xfffffff0
mov eax, edx
cmp ebx, edx
je 0x6a2f24
sub ebx, edx
sub ecx, edx
mov r8d, ebx
cmp ecx, 6
jbe 0x6a2e6e
mov rbx, qword [rsp + 0x60]
movq xmm0, qword [r10 + rdx]
movq xmm1, qword [rbx + rdx]
mov rbx, qword [rsp + 0x100]
pxor xmm0, xmm1
movq qword [rbx + rdx], xmm0
mov edx, r8d
and edx, 0xfffffff8
add eax, edx
cmp edx, r8d
je 0x6a2f24
mov rbx, qword [rsp + 0x60]
movsxd rdx, eax
mov r11, qword [rsp + 0x100]
movzx ecx, byte [rbx + rdx]
xor cl, byte [r10 + rdx]
mov byte [r11 + rdx], cl
mov r11d, dword [rsp + 0x50]
lea edx, [rax + 1]
cmp r11d, edx
je 0x6a2f24
movsxd rdx, edx
mov r14, qword [rsp + 0x100]
movzx ecx, byte [r10 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r14 + rdx], cl
lea edx, [rax + 2]
cmp r11d, edx
je 0x6a2f24
movsxd rdx, edx
movzx ecx, byte [r10 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r14 + rdx], cl
lea edx, [rax + 3]
cmp r11d, edx
je 0x6a2f24
movsxd rdx, edx
movzx ecx, byte [r10 + rdx]
xor cl, byte [rbx + rdx]
mov byte [r14 + rdx], cl
lea edx, [rax + 4]
cmp edx, r11d
je 0x6a2f24
movsxd rdx, edx
movzx ecx, byte [rbx + rdx]
xor cl, byte [r10 + rdx]
mov byte [r14 + rdx], cl
lea edx, [rax + 5]
cmp r11d, edx
je 0x6a2f24
movsxd rdx, edx
add eax, 6
movzx ecx, byte [rbx + rdx]
xor cl, byte [r10 + rdx]
mov byte [r14 + rdx], cl
cmp r11d, eax
je 0x6a2f24
cdqe
movzx edx, byte [rbx + rax]
xor dl, byte [r10 + rax]
mov byte [r14 + rax], dl
mov qword [rsp + 0x50], r10
call fcn.005603f0
mov r10, qword [rsp + 0x50]
test rax, rax
mov rbx, rax
je 0x6a3191
mov rdx, qword [rsp + 0xe8]
mov rcx, rax
mov qword [rsp + 0x50], r10
call fcn.005607b0
mov r10, qword [rsp + 0x50]
test eax, eax
je 0x6a315e
mov r14, qword [rsp + 0x48]
mov rdx, rsi
mov rcx, rbx
mov qword [rsp + 0x50], r10
mov r8, r14
call fcn.00560890
mov r10, qword [rsp + 0x50]
test eax, eax
je 0x6a315e
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x100]
mov rcx, rbx
mov qword [rsp + 0x48], r10
call fcn.00560890
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x6a315e
mov r8, r14
mov rdx, r13
mov rcx, rbx
call fcn.00560890
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x6a315e
xor r8d, r8d
mov rdx, rbp
mov rcx, rbx
call fcn.005608b0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x6a315e
mov r8, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x68]
mov rcx, rbp
call fcn.005fde50
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x6a31fa
mov rax, qword [rsp + 0x108]
mov rdx, qword [rsp + 0x78]
mov r13d, 1
mov qword [rax], rdx
jmp 0x6a2af0
mov qword [rsp + 0x48], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov dword [rsp + 0x20], 0x156
mov edx, 0x66
mov ecx, 0x35
xor ebx, ebx
call fcn.0055dd20
mov r10, qword [rsp + 0x48]
jmp 0x6a2ac9
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], r10
mov dword [rsp + 0x20], 0x147
call fcn.0055dd20
mov r10, qword [rsp + 0x48]
jmp 0x6a2ac9
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor ebx, ebx
xor ebp, ebp
mov r8d, 0x41
mov ecx, 0x35
xor esi, esi
xor edi, edi
mov dword [rsp + 0x20], 0x135
call fcn.0055dd20
xor r10d, r10d
jmp 0x6a2ac9
mov dword [rsp + 0x20], 0x126
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x64
jmp 0x6a2a94
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor ebp, ebp
xor esi, esi
mov dword [rsp + 0x20], 0x13e
mov r8d, 3
mov ecx, 0x35
xor edi, edi
call fcn.0055dd20
xor r10d, r10d
jmp 0x6a2ac9
mov qword [rsp + 0x48], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov dword [rsp + 0x20], 0x14d
jmp 0x6a303a
mov qword [rsp + 0x48], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov dword [rsp + 0x20], 0x15e
jmp 0x6a303a
mov r8d, 6
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x170
lea r9, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], r10
call fcn.0055dd20
mov r10, qword [rsp + 0x48]
jmp 0x6a2ac9
mov r8d, 0x41
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x167
lea r9, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], r10
call fcn.0055dd20
mov r10, qword [rsp + 0x48]
jmp 0x6a2ac9
mov eax, dword [rsp + 0x50]
mov r8, qword [rsp + 0x60]
xor edx, edx
mov rbx, qword [rsp + 0x100]
movzx ecx, byte [r10 + rdx]
xor cl, byte [r8 + rdx]
mov byte [rbx + rdx], cl
add rdx, 1
cmp rdx, rax
jne 0x6a31cf
jmp 0x6a2f24
xor edx, edx
xor eax, eax
jmp 0x6a2e3c
mov r8d, 0x66
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x175
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.0055dd20
mov r10, qword [rsp + 0x48]
jmp 0x6a2ac9