Function at 0x671fe0
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.0052b0b0
mov rcx, rbx
mov rdi, rax
call fcn.00515980
mov rcx, rax
mov rsi, rax
call fcn.00516a30
mov rcx, rbx
mov r14, rax
call fcn.00515a70
mov rcx, qword [rsp + 0x108]
mov qword [rsp + 0x58], rax
call fcn.0053d670
pxor xmm0, xmm0
mov dword [rsp + 0x54], eax
movaps xmmword [rsp + 0xa0], xmm0
test rdi, rdi
je 0x6722e0
test eax, eax
jle 0x6722e0
mov rcx, rsi
call fcn.00671d70
mov qword [rsp + 0x60], rax
test rax, rax
je 0x672210
mov rcx, rsi
call fcn.00516e60
mov rcx, rsi
mov rbp, rax
call fcn.00516e60
mov r13, rax
call fcn.005f0ab0
test rbp, rbp
sete dl
test r13, r13
mov rbx, rax
sete al
or dl, al
jne 0x6722f0
test rbx, rbx
je 0x6722f0
mov rcx, rbx
call fcn.005f0c80
mov rcx, rbx
call fcn.005f0e50
mov rcx, rbx
mov qword [rsp + 0x68], rax
call fcn.005f0e50
mov rcx, rbx
mov qword [rsp + 0x70], rax
call fcn.005f0e50
mov rcx, rbx
mov qword [rsp + 0x80], rax
call fcn.005f0e50
mov rcx, rbx
mov qword [rsp + 0x78], rax
call fcn.005f0e50
mov r12, rax
test rax, rax
je 0x672350
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.0054a1d0
movsxd rcx, dword [rsp + 0x54]
mov r8d, 0xac
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r15, rax
call fcn.0054a1d0
mov qword [rsp + 0x48], rax
test r15, r15
je 0x672330
test rax, rax
je 0x672330
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.005f94f0
mov r14d, eax
test eax, eax
je 0x672843
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.005190b0
test eax, eax
je 0x6721da
mov qword [rsp + 0x20], rbx
mov r9, qword [rsp + 0x78]
mov rdx, rbp
mov rcx, rsi
mov r8, qword [rsp + 0x70]
call fcn.00518360
test eax, eax
jne 0x672390
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.00528f20
jmp 0x67224d
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.00528f20
mov qword [rsp + 0x48], 0
mov rcx, qword [rsp + 0xa8]
call fcn.004ee0e0
mov rcx, qword [rsp + 0xa0]
call fcn.004ee0e0
mov rcx, r12
mov r8d, 0xfd
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a000
mov rcx, r15
mov r8d, 0xfe
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a000
mov rcx, qword [rsp + 0x48]
mov r8d, 0xff
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a000
mov rcx, rdi
call fcn.0052b0d0
mov rcx, rbx
call fcn.005f0bc0
mov rcx, rbp
call fcn.005179c0
mov rcx, r13
call fcn.005179c0
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 0x672218
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.00528f20
mov qword [rsp + 0x48], 0
jmp 0x67224d
mov dword [rsp + 0x20], 0xaf
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
jmp 0x6721ef
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.00528f20
mov qword [rsp + 0x48], 0
jmp 0x67224d
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.005190b0
test eax, eax
je 0x6721da
mov qword [rsp + 0x20], rbx
mov r9, r12
mov rdx, r13
mov rcx, rsi
mov r14, qword [rsp + 0x80]
mov r8, r14
call fcn.00518360
test eax, eax
je 0x6721da
mov r8d, dword [rsp + 0x60]
mov rdx, r15
mov rcx, r14
call fcn.004fa1c0
test eax, eax
js 0x67286f
mov rax, qword [rsp + 0x60]
mov rcx, r12
lea rsi, [r15 + rax]
mov r8d, eax
mov rdx, rsi
call fcn.004fa1c0
test eax, eax
js 0x67286f
mov rcx, qword [rsp + 0x118]
mov r8d, 0xc8
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a1d0
mov r12, rax
test rax, rax
je 0x6728de
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.0062a3e0
mov r14d, eax
test eax, eax
je 0x6728b5
cmp qword [rsp + 0x118], 0
je 0x672708
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 0x67290a
mov rax, qword [rsp + 0x118]
sub rax, 1
cmp rax, 0xe
jbe 0x67290a
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 0x6724e7
mov rax, qword [rsp + 0x118]
and rax, 0xfffffffffffffff0
cmp qword [rsp + 0x118], rax
je 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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 0x672708
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.0052b100
test eax, eax
je 0x672889
mov r14, qword [rsp + 0x60]
mov rdx, r15
mov rcx, rdi
mov r8, r14
call fcn.0052b5b0
test eax, eax
je 0x672889
mov r8, qword [rsp + 0x118]
mov rdx, qword [rsp + 0x110]
mov rcx, rdi
call fcn.0052b5b0
test eax, eax
je 0x672889
mov r8, r14
mov rdx, rsi
mov rcx, rdi
call fcn.0052b5b0
test eax, eax
je 0x672889
mov rdx, qword [rsp + 0x48]
xor r8d, r8d
mov rcx, rdi
call fcn.0052b5d0
test eax, eax
je 0x672889
movq xmm0, qword [rsp + 0x70]
movhps xmm0, qword [rsp + 0x78]
movaps xmmword [rsp + 0x90], xmm0
call fcn.004ee0d0
mov qword [rsp + 0xa0], rax
call fcn.004ee0d0
mov rcx, qword [rsp + 0xa0]
mov qword [rsp + 0xa8], rax
test rcx, rcx
je 0x672932
test rax, rax
je 0x672932
mov r8d, dword [rsp + 0x54]
mov rdx, qword [rsp + 0x48]
call fcn.005e09d0
test eax, eax
je 0x672968
mov r8d, dword [rsp + 0x118]
mov rcx, qword [rsp + 0xa8]
mov rdx, r12
call fcn.005e09d0
test eax, eax
je 0x672968
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x90]
lea r8, [0x008f8740]
call fcn.004ec460
test eax, eax
js 0x67293c
mov rsi, qword [rsp + 0x128]
cdqe
mov r14d, 1
mov qword [rsi], rax
jmp 0x67224d
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.00528f20
jmp 0x67224d
mov dword [rsp + 0x20], 0xc4
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
jmp 0x6721ef
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.00528f20
jmp 0x67224d
mov r8d, 6
mov edx, 0x67
mov ecx, 0x35
mov dword [rsp + 0x20], 0xd1
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.00528f20
jmp 0x67224d
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.00528f20
jmp 0x67224d
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 0x67291c
jmp 0x672708
mov dword [rsp + 0x20], 0xe7
jmp 0x6728e6
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.00528f20
jmp 0x67224d
mov dword [rsp + 0x20], 0xec
jmp 0x672944