Function at 0x8cc9e0
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 rbx, rcx
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x110], r8
mov qword [rsp + 0x118], r9
call fcn.00782cb0
mov rcx, rbx
mov rdi, rax
call fcn.0076d580
mov rcx, rax
mov rsi, rax
call fcn.0076e630
mov rcx, rbx
mov r14, rax
call fcn.0076d670
mov rcx, qword [rsp + 0x108]
mov qword [rsp + 0x58], rax
call fcn.00795270
pxor xmm0, xmm0
mov dword [rsp + 0x54], eax
movaps xmmword [rsp + 0xa0], xmm0
test rdi, rdi
je 0x8ccce0
test eax, eax
jle 0x8ccce0
mov rcx, rsi
call fcn.008cc770
mov qword [rsp + 0x60], rax
test rax, rax
je 0x8ccc10
mov rcx, rsi
call fcn.0076ea60
mov rcx, rsi
mov rbp, rax
call fcn.0076ea60
mov r13, rax
call fcn.0084a9d0
test rbp, rbp
sete dl
test r13, r13
mov rbx, rax
sete al
or dl, al
jne 0x8cccf0
test rbx, rbx
je 0x8cccf0
mov rcx, rbx
call fcn.0084aba0
mov rcx, rbx
call fcn.0084ad70
mov rcx, rbx
mov qword [rsp + 0x68], rax
call fcn.0084ad70
mov rcx, rbx
mov qword [rsp + 0x70], rax
call fcn.0084ad70
mov rcx, rbx
mov qword [rsp + 0x80], rax
call fcn.0084ad70
mov rcx, rbx
mov qword [rsp + 0x78], rax
call fcn.0084ad70
mov r12, rax
test rax, rax
je 0x8ccd50
mov rax, qword [rsp + 0x60]
mov r8d, 0xab
lea rdx, str.crypto_sm2_sm2_crypt.c
add rax, rax
mov rcx, rax
mov qword [rsp + 0x88], rax
call fcn.007a1dd0
movsxd rcx, dword [rsp + 0x54]
mov r8d, 0xac
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r15, rax
call fcn.007a1dd0
mov qword [rsp + 0x48], rax
test r15, r15
je 0x8ccd30
test rax, rax
je 0x8ccd30
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, r14
call fcn.00853410
mov r14d, eax
test eax, eax
je 0x8cd243
mov qword [rsp + 0x28], rbx
mov r8, qword [rsp + 0x68]
xor r9d, r9d
mov rdx, rbp
mov qword [rsp + 0x20], 0
mov rcx, rsi
call fcn.00770cb0
test eax, eax
je 0x8ccbda
mov qword [rsp + 0x20], rbx
mov r9, qword [rsp + 0x78]
mov rdx, rbp
mov rcx, rsi
mov r8, qword [rsp + 0x70]
call fcn.0076ff60
test eax, eax
jne 0x8ccd90
mov dword [rsp + 0x20], 0xbe
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov edx, 0x67
mov ecx, 0x35
xor r12d, r12d
xor r14d, r14d
call fcn.00780b20
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0x93
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x67
xor ebp, ebp
xor ebx, ebx
mov r8d, 0x44
xor r15d, r15d
xor r12d, r12d
xor r13d, r13d
mov ecx, 0x35
xor r14d, r14d
call fcn.00780b20
mov qword [rsp + 0x48], 0
mov rcx, qword [rsp + 0xa8]
call fcn.00745d00
mov rcx, qword [rsp + 0xa0]
call fcn.00745d00
mov rcx, r12
mov r8d, 0xfd
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1c00
mov rcx, r15
mov r8d, 0xfe
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1c00
mov rcx, qword [rsp + 0x48]
mov r8d, 0xff
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1c00
mov rcx, rdi
call fcn.00782cd0
mov rcx, rbx
call fcn.0084aae0
mov rcx, rbp
call fcn.0076f5c0
mov rcx, r13
call fcn.0076f5c0
mov eax, r14d
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0x8d
jmp 0x8ccc18
mov edx, 0x67
mov ecx, 0x35
xor r15d, r15d
xor r12d, r12d
lea r9, str.crypto_sm2_sm2_crypt.c
mov dword [rsp + 0x20], 0x9b
mov r8d, 0x41
xor r14d, r14d
call fcn.00780b20
mov qword [rsp + 0x48], 0
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0xaf
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
jmp 0x8ccbef
mov edx, 0x67
mov ecx, 0x35
xor r15d, r15d
xor r14d, r14d
mov dword [rsp + 0x20], 0xa7
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 3
call fcn.00780b20
mov qword [rsp + 0x48], 0
jmp 0x8ccc4d
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x28], rbx
xor r8d, r8d
mov rdx, r13
mov r9, qword [rsp + 0x58]
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.00770cb0
test eax, eax
je 0x8ccbda
mov qword [rsp + 0x20], rbx
mov r9, r12
mov rdx, r13
mov rcx, rsi
mov r14, qword [rsp + 0x80]
mov r8, r14
call fcn.0076ff60
test eax, eax
je 0x8ccbda
mov r8d, dword [rsp + 0x60]
mov rdx, r15
mov rcx, r14
call fcn.00751de0
test eax, eax
js 0x8cd26f
mov rax, qword [rsp + 0x60]
mov rcx, r12
lea rsi, [r15 + rax]
mov r8d, eax
mov rdx, rsi
call fcn.00751de0
test eax, eax
js 0x8cd26f
mov rcx, qword [rsp + 0x118]
mov r8d, 0xc8
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1dd0
mov r12, rax
test rax, rax
je 0x8cd2de
mov rax, qword [rsp + 0x108]
mov r8, r15
mov rcx, r12
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.008842e0
mov r14d, eax
test eax, eax
je 0x8cd2b5
cmp qword [rsp + 0x118], 0
je 0x8cd108
lea rax, [r12 + 0x10]
cmp qword [rsp + 0x110], rax
mov rax, qword [rsp + 0x110]
setae dl
add rax, 0x10
cmp r12, rax
setae al
or dl, al
je 0x8cd30a
mov rax, qword [rsp + 0x118]
sub rax, 1
cmp rax, 0xe
jbe 0x8cd30a
mov rdx, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x110]
xor eax, eax
and rdx, 0xfffffffffffffff0
movdqu xmm0, xmmword [r12 + rax]
movdqu xmm1, xmmword [rcx + rax]
pxor xmm0, xmm1
movups xmmword [r12 + rax], xmm0
add rax, 0x10
cmp rdx, rax
jne 0x8ccee7
mov rax, qword [rsp + 0x118]
and rax, 0xfffffffffffffff0
cmp qword [rsp + 0x118], rax
je 0x8cd108
mov rdx, qword [rsp + 0x110]
movzx edx, byte [rdx + rax]
xor byte [r12 + rax], dl
lea rdx, [rax + 1]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 1]
xor byte [r12 + rdx], cl
lea rdx, [rax + 2]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 2]
xor byte [r12 + rdx], cl
lea rdx, [rax + 3]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 3]
xor byte [r12 + rdx], cl
lea rdx, [rax + 4]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 4]
xor byte [r12 + rdx], cl
lea rdx, [rax + 5]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 5]
xor byte [r12 + rdx], cl
lea rdx, [rax + 6]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 6]
xor byte [r12 + rdx], cl
lea rdx, [rax + 7]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 7]
xor byte [r12 + rdx], cl
lea rdx, [rax + 8]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 8]
xor byte [r12 + rdx], cl
lea rdx, [rax + 9]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 9]
xor byte [r12 + rdx], cl
lea rdx, [rax + 0xa]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 0xa]
xor byte [r12 + rdx], cl
lea rdx, [rax + 0xb]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 0xb]
xor byte [r12 + rdx], cl
lea rdx, [rax + 0xc]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 0xc]
xor byte [r12 + rdx], cl
lea rdx, [rax + 0xd]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx ecx, byte [rcx + rax + 0xd]
xor byte [r12 + rdx], cl
lea rdx, [rax + 0xe]
cmp qword [rsp + 0x118], rdx
je 0x8cd108
mov rcx, qword [rsp + 0x110]
movzx eax, byte [rcx + rax + 0xe]
xor byte [r12 + rdx], al
mov rdx, qword [rsp + 0x108]
mov rcx, rdi
call fcn.00782d00
test eax, eax
je 0x8cd289
mov r14, qword [rsp + 0x60]
mov rdx, r15
mov rcx, rdi
mov r8, r14
call fcn.007831b0
test eax, eax
je 0x8cd289
mov r8, qword [rsp + 0x118]
mov rdx, qword [rsp + 0x110]
mov rcx, rdi
call fcn.007831b0
test eax, eax
je 0x8cd289
mov r8, r14
mov rdx, rsi
mov rcx, rdi
call fcn.007831b0
test eax, eax
je 0x8cd289
mov rdx, qword [rsp + 0x48]
xor r8d, r8d
mov rcx, rdi
call fcn.007831d0
test eax, eax
je 0x8cd289
movq xmm0, qword [rsp + 0x70]
movhps xmm0, qword [rsp + 0x78]
movaps xmmword [rsp + 0x90], xmm0
call fcn.00745cf0
mov qword [rsp + 0xa0], rax
call fcn.00745cf0
mov rcx, qword [rsp + 0xa0]
mov qword [rsp + 0xa8], rax
test rcx, rcx
je 0x8cd332
test rax, rax
je 0x8cd332
mov r8d, dword [rsp + 0x54]
mov rdx, qword [rsp + 0x48]
call fcn.00839e20
test eax, eax
je 0x8cd368
mov r8d, dword [rsp + 0x118]
mov rcx, qword [rsp + 0xa8]
mov rdx, r12
call fcn.00839e20
test eax, eax
je 0x8cd368
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x90]
lea r8, [0x00d7a0e0]
call fcn.00744080
test eax, eax
js 0x8cd33c
mov rsi, qword [rsp + 0x128]
cdqe
mov r14d, 1
mov qword [rsi], rax
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0xb6
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
xor r12d, r12d
mov edx, 0x67
mov ecx, 0x35
call fcn.00780b20
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0xc4
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
jmp 0x8ccbef
mov dword [rsp + 0x20], 0xdd
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 6
xor r14d, r14d
mov edx, 0x67
mov ecx, 0x35
call fcn.00780b20
jmp 0x8ccc4d
mov r8d, 6
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xd1
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.00780b20
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0xca
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov edx, 0x67
xor r14d, r14d
mov ecx, 0x35
call fcn.00780b20
jmp 0x8ccc4d
mov rcx, qword [rsp + 0x110]
mov r8, qword [rsp + 0x118]
xor eax, eax
movzx edx, byte [rcx + rax]
xor byte [r12 + rax], dl
add rax, 1
cmp r8, rax
jne 0x8cd31c
jmp 0x8cd108
mov dword [rsp + 0x20], 0xe7
jmp 0x8cd2e6
mov dword [rsp + 0x20], 0xf3
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov edx, 0x67
xor r14d, r14d
mov ecx, 0x35
call fcn.00780b20
jmp 0x8ccc4d
mov dword [rsp + 0x20], 0xec
jmp 0x8cd344