Function at 0x8cd380
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov qword [rsp + 0xd8], rdx
mov rbx, r9
mov qword [rsp + 0xe0], r8
mov qword [rsp + 0xd0], rcx
call fcn.0076d580
mov rcx, rax
mov r12, rax
call fcn.008cc770
mov rcx, qword [rsp + 0xd8]
mov r13, rax
call fcn.00795270
mov ebp, eax
test r13, r13
je 0x8cd464
test eax, eax
jle 0x8cd464
mov rax, qword [rsp + 0xf8]
mov rcx, qword [rsp + 0xf0]
mov edx, 0xff
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov r8d, ebx
lea r9, [0x00d7a0e0]
xor ecx, ecx
lea rdx, [rsp + 0xe0]
call fcn.00742bb0
mov rbx, rax
test rax, rax
je 0x8cdb00
mov rax, qword [rax + 0x10]
cmp dword [rax], ebp
je 0x8cd520
mov dword [rsp + 0x20], 0x12b
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x68
mov edx, 0x66
mov ecx, 0x35
xor edi, edi
xor r15d, r15d
call fcn.00780b20
xor r14d, r14d
xor r10d, r10d
xor ebp, ebp
xor esi, esi
jmp 0x8cd475
xor edi, edi
xor r10d, r10d
xor r15d, r15d
xor r14d, r14d
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov rax, qword [rsp + 0xf8]
xor edx, edx
mov qword [rsp + 0x40], r10
xor r12d, r12d
mov rcx, qword [rsp + 0xf0]
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov r10, qword [rsp + 0x40]
mov rcx, r10
mov r8d, 0x180
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1c00
mov rcx, r14
mov r8d, 0x181
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.007a1c00
mov r8d, 0x182
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, r15
call fcn.007a1c00
mov rcx, rbp
call fcn.0076f5c0
mov rcx, rsi
call fcn.0084aae0
lea rdx, [0x00d7a0e0]
mov rcx, rbx
call fcn.007449b0
mov rcx, rdi
call fcn.00782cd0
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rbx + 0x18]
mov rax, qword [rax + 8]
mov rdi, qword [rdx + 8]
mov qword [rsp + 0x58], rax
mov eax, dword [rdx]
mov qword [rsp + 0x50], rdi
mov dword [rsp + 0x40], eax
call fcn.0084a9d0
mov rsi, rax
test rax, rax
je 0x8cdac0
mov rcx, rax
call fcn.0084aba0
mov rcx, rsi
call fcn.0084ad70
mov rcx, rsi
mov qword [rsp + 0x60], rax
call fcn.0084ad70
mov rdi, rax
test rax, rax
je 0x8cdb20
movsxd rax, dword [rsp + 0x40]
mov r8d, 0x142
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rax
mov qword [rsp + 0x68], rax
call fcn.007a1dd0
mov r8d, 0x143
lea rdx, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], rax
lea rax, [r13 + r13]
mov rcx, rax
mov qword [rsp + 0x70], rax
call fcn.007a1dd0
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x144
mov r14, rax
movsxd rax, ebp
mov rcx, rax
mov qword [rsp + 0x78], rax
call fcn.007a1dd0
mov r10, qword [rsp + 0x48]
mov r15, rax
test r10, r10
sete dl
test r14, r14
sete al
or dl, al
jne 0x8cda85
test r15, r15
je 0x8cda85
mov rcx, r12
mov qword [rsp + 0x48], r10
call fcn.0076ea60
mov r10, qword [rsp + 0x48]
test rax, rax
mov rbp, rax
je 0x8cdb54
mov r9, qword [rbx + 8]
mov qword [rsp + 0x20], rsi
mov rdx, rax
mov rcx, r12
mov r8, qword [rbx]
mov qword [rsp + 0x48], r10
call fcn.0076fae0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x8cda50
mov rcx, qword [rsp + 0xd0]
mov qword [rsp + 0x48], r10
call fcn.0076d5e0
mov qword [rsp + 0x28], rsi
xor r8d, r8d
mov r9, rbp
mov qword [rsp + 0x20], rax
mov rdx, rbp
mov rcx, r12
call fcn.00770cb0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x8cda50
mov qword [rsp + 0x20], rsi
mov r8, qword [rsp + 0x60]
mov r9, rdi
mov rdx, rbp
mov rcx, r12
call fcn.0076ff60
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x8cda50
mov rcx, qword [rsp + 0x60]
mov r8d, r13d
mov rdx, r14
call fcn.00751de0
mov r10, qword [rsp + 0x48]
test eax, eax
js 0x8cdb73
lea r12, [r14 + r13]
mov r8d, r13d
mov rcx, rdi
mov rdx, r12
call fcn.00751de0
mov r10, qword [rsp + 0x48]
test eax, eax
js 0x8cdb73
mov r9, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x68]
mov rcx, r10
mov r8, r14
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x30], rax
call fcn.008842e0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x8cdb73
mov eax, dword [rsp + 0x40]
test eax, eax
je 0x8cd957
mov rax, qword [rsp + 0xf0]
mov r11, qword [rsp + 0x50]
mov edi, dword [rsp + 0x40]
lea rdx, [rax + 0x10]
lea rax, [r11 + 0x10]
cmp qword [rsp + 0xf0], rax
setae al
cmp r11, rdx
lea ecx, [rdi - 1]
setae r8b
or eax, r8d
cmp ecx, 0xe
seta r8b
test al, r8b
je 0x8cdbf3
lea rax, [r10 + 0x10]
cmp qword [rsp + 0xf0], rax
setae r8b
cmp r10, rdx
setae al
or r8b, al
je 0x8cdbf3
shr edi, 4
xor eax, eax
mov rcx, r11
mov edx, edi
shl rdx, 4
nop dword [rax + rax]
movdqu xmm0, xmmword [rcx + rax]
movdqu xmm1, xmmword [r10 + rax]
mov rdi, qword [rsp + 0xf0]
pxor xmm0, xmm1
movups xmmword [rdi + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x8cd7a0
mov edi, dword [rsp + 0x40]
mov eax, edi
and eax, 0xfffffff0
cmp edi, eax
je 0x8cd957
mov r11, qword [rsp + 0x50]
movsxd rdx, eax
mov r9, qword [rsp + 0xf0]
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 1]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 2]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 3]
cmp edx, edi
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 4]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 5]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 6]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 7]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 8]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 9]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xa]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xb]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xc]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xd]
cmp edi, edx
je 0x8cd957
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
cmp edi, eax
je 0x8cd957
cdqe
movzx edx, byte [r10 + rax]
xor dl, byte [r11 + rax]
mov byte [r9 + rax], dl
mov qword [rsp + 0x40], r10
call fcn.00782cb0
mov r10, qword [rsp + 0x40]
test rax, rax
mov rdi, rax
je 0x8cdbc5
mov rdx, qword [rsp + 0xd8]
mov rcx, rax
mov qword [rsp + 0x40], r10
call fcn.00782d00
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x8cdb92
mov r8, r13
mov rdx, r14
mov rcx, rdi
mov qword [rsp + 0x40], r10
call fcn.007831b0
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x8cdb92
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0xf0]
mov rcx, rdi
call fcn.007831b0
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x8cdb92
mov r8, r13
mov rdx, r12
mov rcx, rdi
call fcn.007831b0
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x8cdb92
xor r8d, r8d
mov rdx, r15
mov rcx, rdi
call fcn.007831d0
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x8cdb92
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
mov rcx, r15
call fcn.0081b520
mov r10, qword [rsp + 0x40]
test eax, eax
jne 0x8cdc21
mov rax, qword [rsp + 0xf8]
mov rdx, qword [rsp + 0x68]
mov r12d, 1
mov qword [rax], rdx
jmp 0x8cd49c
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov dword [rsp + 0x20], 0x156
mov edx, 0x66
mov ecx, 0x35
xor edi, edi
call fcn.00780b20
mov r10, qword [rsp + 0x40]
jmp 0x8cd475
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor edi, edi
xor ebp, ebp
mov r8d, 0x41
mov ecx, 0x35
mov qword [rsp + 0x40], r10
mov dword [rsp + 0x20], 0x147
call fcn.00780b20
mov r10, qword [rsp + 0x40]
jmp 0x8cd475
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor edi, edi
xor ebp, ebp
mov dword [rsp + 0x20], 0x135
mov r8d, 0x41
xor r15d, r15d
xor r14d, r14d
mov ecx, 0x35
call fcn.00780b20
xor r10d, r10d
jmp 0x8cd475
mov dword [rsp + 0x20], 0x126
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x64
jmp 0x8cd444
mov r8d, 3
mov edx, 0x66
xor r15d, r15d
xor ebp, ebp
mov dword [rsp + 0x20], 0x13e
lea r9, str.crypto_sm2_sm2_crypt.c
mov ecx, 0x35
xor r14d, r14d
call fcn.00780b20
xor r10d, r10d
jmp 0x8cd475
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov dword [rsp + 0x20], 0x14d
jmp 0x8cda6a
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov dword [rsp + 0x20], 0x15e
jmp 0x8cda6a
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 + 0x40], r10
call fcn.00780b20
mov r10, qword [rsp + 0x40]
jmp 0x8cd475
mov r8d, 0x41
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x167
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.00780b20
mov r10, qword [rsp + 0x40]
jmp 0x8cd475
xor eax, eax
mov r8, qword [rsp + 0x50]
mov rdi, qword [rsp + 0xf0]
jmp 0x8cdc07
mov rax, rdx
movzx edx, byte [r8 + rax]
xor dl, byte [r10 + rax]
mov byte [rdi + rax], dl
lea rdx, [rax + 1]
cmp rax, rcx
jne 0x8cdc04
jmp 0x8cd957
mov r8d, 0x66
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x175
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.00780b20
mov r10, qword [rsp + 0x40]
jmp 0x8cd475