Function at 0x1402c1240
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x158
movaps xmmword [rsp + 0x140], xmm6
mov rdi, rdx
mov qword [rsp + 0x48], rcx
lea rbp, [rsp + 0xe8]
lea rax, [rdx + 0x30]
mov qword [rsp + 0xd0], rax
lea r14, [rsp + 0xd8]
xorps xmm6, xmm6
jmp 0x1402c12e6
lea rax, [rsi + r12*8]
mov qword [rdi], rsi
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], rax
mov qword [rdi + 0x20], r13
mov qword [rdi + 0x28], r15
mov rax, qword [rsp + 0x130]
mov rcx, qword [rsp + 0xd0]
mov qword [rcx + 0x20], rax
movaps xmm0, xmmword [rsp + 0x110]
movaps xmm1, xmmword [rsp + 0x120]
movups xmmword [rcx + 0x10], xmm1
movups xmmword [rcx], xmm0
mov qword [rdi + 0x58], 0
lea r14, [rsp + 0xd8]
mov rcx, r14
mov rdx, rdi
call 0x1402c1c80
cmp qword [rsp + 0xd8], 0
jne 0x1402c1aac
mov rbx, qword [rdi + 0xc0]
test rbx, rbx
je 0x1402c1b2f
mov rsi, qword [rdi + 0xc8]
mov rcx, r14
mov rdx, rbx
call qword [rsi + 0x18]
mov r13, qword [rsp + 0xd8]
test r13, r13
je 0x1402c1afc
mov r15, qword [rsp + 0xe0]
mov rax, qword [rbp + 0x20]
mov qword [rsp + 0x130], rax
movups xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
mov rax, qword [rdi + 0xd0]
mov rcx, qword [rax]
test rcx, rcx
je 0x1402c1880
cmp ecx, 1
jne 0x1402c18a0
mov qword [rsp + 0x68], 8
lea rax, [rsp + 0x70]
movups xmmword [rax], xmm6
mov qword [rsp + 0xa0], r13
mov qword [rsp + 0xa8], r15
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], r15
mov qword [rsp + 0xc0], 1
movabs rax, 0x2d0000002d
mov qword [rsp + 0xc8], rax
mov eax, 8
mov qword [rsp + 0x50], rax
mov r14, r15
mov rsi, r15
mov r10, r13
xor r11d, r11d
xor eax, eax
mov qword [rsp + 0x58], rax
mov rax, r14
sub rax, r11
jb 0x1402c1a50
cmp r14, rsi
ja 0x1402c1a50
lea rcx, [r10 + r11]
mov rbx, qword [rsp + 0xc0]
cmp rbx, 4
mov qword [rsp + 0x38], r10
ja 0x1402c18c6
movzx edx, byte [rsp + rbx + 0xc7]
cmp rax, 0x10
jae 0x1402c1460
test rax, rax
je 0x1402c1a50
xor r9d, r9d
nop word cs:[rax + rax]
cmp byte [rcx + r9], dl
je 0x1402c15a0
inc r9
cmp rax, r9
jne 0x1402c1440
jmp 0x1402c1a50
lea r8, [rcx + 7]
and r8, 0xfffffffffffffff8
sub r8, rcx
je 0x1402c14c0
cmp r8, rax
cmovae r8, rax
test r8, r8
je 0x1402c14c0
xor r9d, r9d
nop dword [rax]
cmp byte [rcx + r9], dl
je 0x1402c1595
inc r9
cmp r8, r9
jne 0x1402c1480
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x60], r14
mov r14, r15
mov rsi, rbp
lea r9, [rax - 0x10]
cmp r8, r9
jbe 0x1402c14dc
jmp 0x1402c153e
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x60], r14
mov r14, r15
mov rsi, rbp
lea r9, [rax - 0x10]
xor r8d, r8d
mov r10, rdx
movabs r11, 0x101010101010101
imul r10, r11
nop dword [rax]
mov r11, qword [rcx + r8]
xor r11, r10
mov r12, r11
not r12
movabs r15, 0xfefefefefefefeff
add r11, r15
movabs rbp, 0x8080808080808080
and r12, rbp
test r12, r11
jne 0x1402c153e
mov r11, qword [rcx + r8 + 8]
xor r11, r10
mov r12, r11
not r12
add r11, r15
and r12, rbp
test r12, r11
jne 0x1402c153e
add r8, 0x10
cmp r8, r9
jbe 0x1402c14f0
sub rax, r8
mov rbp, rsi
mov r15, r14
mov r14, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x40]
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
je 0x1402c1a50
add rcx, r8
xor r9d, r9d
nop word [rax + rax]
cmp byte [rcx + r9], dl
je 0x1402c1590
inc r9
cmp rax, r9
jne 0x1402c1570
jmp 0x1402c1a50
add r9, r8
jmp 0x1402c15a0
mov r10, qword [rsp + 0x38]
nop word [rax + rax]
add r11, r9
inc r11
mov qword [rsp + 0xb0], r11
mov r12, r11
sub r12, rbx
jb 0x1402c15e2
cmp r11, rsi
ja 0x1402c15e2
lea rcx, [r10 + r12]
lea rdx, [rsp + 0xc8]
mov r8, rbx
mov qword [rsp + 0x30], r11
call sub.msvcrt.dll_memcmp
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test eax, eax
je 0x1402c15f7
lea rcx, [r10 + r11]
mov rax, r14
sub rax, r11
jae 0x1402c1419
jmp 0x1402c1a50
cmp r11, rbx
jne 0x1402c1609
mov ebx, 0x110000
mov r12d, 1
jmp 0x1402c1678
cmp r12, r15
jae 0x1402c161b
cmp byte [r13 + r12], 0xbf
jg 0x1402c1621
jmp 0x1402c1b90
jne 0x1402c1b90
movzx ebx, byte [r13 + r12 - 1]
test bl, bl
jns 0x1402c166b
movzx eax, byte [r13 + r12 - 2]
cmp al, 0xc0
jge 0x1402c1653
movzx ecx, byte [r13 + r12 - 3]
cmp cl, 0xc0
jge 0x1402c1658
movzx edx, byte [r13 + r12 - 4]
and edx, 7
shl edx, 6
and ecx, 0x3f
or ecx, edx
jmp 0x1402c165b
and eax, 0x1f
jmp 0x1402c1663
and ecx, 0xf
shl ecx, 6
and eax, 0x3f
or eax, ecx
shl eax, 6
and ebx, 0x3f
or ebx, eax
inc r12
jne 0x1402c1678
xor r8d, r8d
mov rax, r15
jmp 0x1402c169a
mov rax, r15
sub rax, r12
jbe 0x1402c1691
cmp byte [r13 + r12], 0xbf
jle 0x1402c1b71
mov r8, r12
jmp 0x1402c169a
mov r8, r15
jne 0x1402c1b71
test rax, rax
je 0x1402c16ae
movzx eax, byte [r13 + r8]
test al, al
js 0x1402c16b6
mov r9d, eax
jmp 0x1402c1707
mov r9d, 0x110000
jmp 0x1402c1707
mov r9d, eax
and r9d, 0x1f
movzx edx, byte [r13 + r8 + 1]
and edx, 0x3f
cmp al, 0xdf
jbe 0x1402c16f7
movzx ecx, byte [r13 + r8 + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp al, 0xf0
jb 0x1402c1700
movzx eax, byte [r13 + r8 + 3]
and r9d, 7
shl r9d, 0x12
shl ecx, 6
and eax, 0x3f
or eax, ecx
or r9d, eax
jmp 0x1402c1707
shl r9d, 6
or r9d, edx
jmp 0x1402c1707
shl r9d, 0xc
or r9d, ecx
cmp ebx, 0x110000
je 0x1402c13e9
mov eax, ebx
and eax, 0xffffffdf
add eax, 0xffffffbf
cmp eax, 0x1a
jb 0x1402c177c
cmp ebx, 0x80
jb 0x1402c1770
mov ecx, ebx
mov qword [rsp + 0x40], r8
mov r12d, r9d
call fcn.140145cd0
mov r9d, r12d
mov r8, qword [rsp + 0x40]
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test al, al
jne 0x1402c177c
mov ecx, ebx
call fcn.140145e30
mov r8, qword [rsp + 0x40]
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test al, al
je 0x1402c13e9
mov r9d, r12d
jmp 0x1402c177c
add ebx, 0xffffffc6
cmp ebx, 0xfffffff6
jb 0x1402c13e9
cmp r9d, 0x110000
je 0x1402c13e9
mov eax, r9d
and eax, 0xffffffdf
add eax, 0xffffffbf
cmp eax, 0x1a
jae 0x1402c17a6
cmp r9d, 0x110000
je 0x1402c13e9
jmp 0x1402c180d
cmp r9d, 0x80
jb 0x1402c17ff
mov ecx, r9d
mov rbx, r8
mov r12d, r9d
call fcn.140145cd0
mov r9d, r12d
mov r8, rbx
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test al, al
jne 0x1402c1797
mov ecx, r9d
call fcn.140145e30
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test al, al
je 0x1402c13e9
mov ecx, r12d
mov r8, rbx
cmp r12d, 0x110000
jne 0x1402c180d
jmp 0x1402c13e9
add r9d, 0xffffffd0
cmp r9d, 0xa
jae 0x1402c13e9
mov rdx, qword [rsp + 0x58]
cmp rdx, qword [rsp + 0x70]
jne 0x1402c1835
lea rcx, [rsp + 0x68]
mov rsi, r8
call fcn.1402cf1c0
mov r8, rsi
mov rax, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x78]
jmp 0x1402c183a
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x50], rax
mov qword [rax + rdx*8], r8
inc rdx
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x78], rdx
mov r10, qword [rsp + 0xa0]
mov rsi, qword [rsp + 0xa8]
mov r14, qword [rsp + 0xb8]
mov r11, qword [rsp + 0xb0]
jmp 0x1402c13e9
mov qword [rsp + 0x80], 8
lea rax, [rsp + 0x88]
movups xmmword [rax], xmm6
jmp 0x1402c1a6a
lea rcx, [rsp + 0x80]
mov rdx, r13
mov r8, r15
call qword [rax + 8]
jmp 0x1402c1a6a
lea rcx, [r10 + r11]
mov rax, r14
sub rax, r11
jb 0x1402c1a50
movzx edx, byte [rsp + rbx + 0xc7]
cmp rax, 0x10
jae 0x1402c18f7
test rax, rax
je 0x1402c1a50
xor r9d, r9d
cmp byte [rcx + r9], dl
je 0x1402c1a03
inc r9
cmp rax, r9
jne 0x1402c18e0
jmp 0x1402c1a50
lea r8, [rcx + 7]
and r8, 0xfffffffffffffff8
sub r8, rcx
je 0x1402c194a
cmp r8, rax
cmovae r8, rax
test r8, r8
je 0x1402c194a
xor r9d, r9d
nop word cs:[rax + rax]
cmp byte [rcx + r9], dl
je 0x1402c1a28
inc r9
cmp r8, r9
jne 0x1402c1920
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x40], rsi
mov rsi, r15
lea r9, [rax - 0x10]
cmp r8, r9
jbe 0x1402c195e
jmp 0x1402c19be
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x40], rsi
mov rsi, r15
lea r9, [rax - 0x10]
xor r8d, r8d
mov r10, rdx
movabs r11, 0x101010101010101
imul r10, r11
nop
mov r11, qword [rcx + r8]
xor r11, r10
mov r12, r11
not r12
movabs r15, 0xfefefefefefefeff
add r11, r15
movabs rbp, 0x8080808080808080
and r12, rbp
test r12, r11
jne 0x1402c19be
mov r11, qword [rcx + r8 + 8]
xor r11, r10
mov r12, r11
not r12
add r11, r15
and r12, rbp
test r12, r11
jne 0x1402c19be
add r8, 0x10
cmp r8, r9
jbe 0x1402c1970
sub rax, r8
lea rbp, [rsp + 0xe8]
mov r15, rsi
mov rsi, qword [rsp + 0x40]
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
je 0x1402c1a50
add rcx, r8
xor r9d, r9d
nop word cs:[rax + rax]
cmp byte [rcx + r9], dl
je 0x1402c1a00
inc r9
cmp rax, r9
jne 0x1402c19f0
jmp 0x1402c1a50
add r9, r8
add r11, r9
inc r11
mov qword [rsp + 0xb0], r11
cmp r11, rbx
jb 0x1402c18b6
cmp r11, rsi
ja 0x1402c18b6
jmp 0x1402c1b5b
mov r10, qword [rsp + 0x38]
add r11, r9
inc r11
mov qword [rsp + 0xb0], r11
cmp r11, rbx
jae 0x1402c1a1a
jmp 0x1402c18b6
movups xmm0, xmmword [rsp + 0x68]
movaps xmmword [rsp + 0x80], xmm0
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x90], rax
mov rsi, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x88]
mov r12, qword [rsp + 0x90]
mov r8, qword [rdi]
test r8, r8
je 0x1402c1290
cmp qword [rdi + 8], 0
je 0x1402c1290
mov rcx, qword [0x1403f6548]
xor edx, edx
call fcn.140302ad4
jmp 0x1402c1290
mov rax, qword [rsp + 0x108]
mov rcx, qword [rsp + 0x48]
mov qword [rcx + 0x30], rax
movups xmm0, xmmword [rsp + 0xd8]
movups xmm1, xmmword [rsp + 0xe8]
movups xmm2, xmmword [rsp + 0xf8]
movups xmmword [rcx + 0x20], xmm2
movups xmmword [rcx + 0x10], xmm1
movups xmmword [rcx], xmm0
movaps xmm6, xmmword [rsp + 0x140]
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbx
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x1402c1b24
cmp qword [rsi + 0x10], 0x11
jb 0x1402c1b13
mov rbx, qword [rbx - 8]
mov rcx, qword [0x1403f6548]
xor edx, edx
mov r8, rbx
call fcn.140302ad4
mov qword [rdi + 0xc0], 0
add rdi, 0x60
mov rcx, qword [rsp + 0x48]
mov rdx, rdi
movaps xmm6, xmmword [rsp + 0x140]
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x1402c1c80
lea r8, str._rustc_cc66ad468955717ab92600c770da8c1601a4ff33librarycore_src_strpattern.rs
mov edx, 4
mov rcx, rbx
call fcn.140137b60
ud2
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
mov rcx, r13
mov rdx, r15
mov r8, r12
mov r9, r15
call fcn.14013fdc0
ud2
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
mov rcx, r13
mov rdx, r15
xor r8d, r8d
mov r9, r12
call fcn.14013fdc0
ud2
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rsi, rcx
mov rax, qword [rdx]
test rax, rax
je 0x1402c1ce1
mov rdi, rdx
mov rcx, qword [rdx + 0x10]
cmp rcx, qword [rdx + 0x18]
je 0x1402c1ced
lea rax, [rcx + 8]
mov qword [rdi + 0x10], rax
mov r14, qword [rcx]
mov rcx, qword [rdi + 0x20]
mov rdx, qword [rdi + 0x28]
test r14, r14
je 0x1402c1d2e
cmp r14, rdx
jae 0x1402c1d32
cmp byte [rcx + r14], 0xbf
jg 0x1402c1d34
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov r9, r14
call fcn.14013fdc0
ud2
mov qword [rsi], 0
jmp 0x1402c1e5b
mov r14, qword [rdi + 0x28]
mov r8, qword [rdi + 0x58]
test r8, r8
je 0x1402c1dfa
cmp r14, r8
ja 0x1402c1dfa
cmp qword [rdi + 8], 0
je 0x1402c1d1f
mov rcx, qword [0x1403f6548]
xor edx, edx
mov r8, rax
call fcn.140302ad4
mov qword [rdi], 0
xor r15d, r15d
jmp 0x1402c1e40
xor ebp, ebp
jmp 0x1402c1d3e
jne 0x1402c1cc8
cmp byte [r14 + rcx - 1], 0x2d
sete bpl
mov r8, qword [rdi + 0x58]
mov rbx, r14
sub rbx, r8
jb 0x1402c1d70
test r8, r8
je 0x1402c1d5f
cmp r8, rdx
jae 0x1402c1d5d
cmp byte [rcx + r8], 0xc0
jge 0x1402c1d5f
jmp 0x1402c1d70
jne 0x1402c1d70
test r14, r14
je 0x1402c1d88
cmp r14, rdx
jae 0x1402c1d86
cmp byte [rcx + r14], 0xbf
jg 0x1402c1d88
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
mov r9, r14
call fcn.14013fdc0
ud2
jne 0x1402c1d70
lea r15, [rcx + r8]
test r8, r8
je 0x1402c1da0
cmp r8, rdx
jae 0x1402c1d9e
cmp byte [r15], 0xc0
jge 0x1402c1da0
jmp 0x1402c1db1
jne 0x1402c1db1
test r14, r14
je 0x1402c1dc9
cmp r14, rdx
jae 0x1402c1dc7
cmp byte [rcx + r14], 0xbf
jg 0x1402c1dc9
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
mov r9, r14
call fcn.14013fdc0
ud2
jne 0x1402c1db1
mov rcx, r15
mov rdx, rbx
call fcn.1402bf670
lea rcx, [0x1403d7910]
lea rdx, [0x1403b0f91]
test bpl, bpl
cmovne rdx, rcx
xor bpl, 1
movzx r8d, bpl
mov qword [rdi + 0x58], r14
xor r9d, r9d
jmp 0x1402c1e40
mov r15, qword [rdi + 0x20]
mov rbx, r14
test r8, r8
je 0x1402c1e1b
mov rbx, r14
sub rbx, r8
jbe 0x1402c1e17
cmp byte [r15 + r8], 0xbf
jg 0x1402c1e1b
jmp 0x1402c1e68
jne 0x1402c1e68
xor ebx, ebx
add r15, r8
mov rcx, r15
mov rdx, rbx
call fcn.1402bf670
mov rcx, qword [rdi + 0x30]
mov r9, qword [rdi + 0x38]
mov rdx, qword [rdi + 0x40]
mov r8, qword [rdi + 0x48]
inc r14
mov qword [rdi + 0x58], r14
mov qword [rsi], r15
mov qword [rsi + 8], rbx
mov qword [rsi + 0x10], rcx
mov qword [rsi + 0x18], r9
mov qword [rsi + 0x20], rdx
mov qword [rsi + 0x28], r8
mov qword [rsi + 0x30], rax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
lea rax, str._Users_sh1n_.cargo_registry_src_rsproxy.cn_8f6827c7555bfaf8_textwrap_0.16.0_src_word_splitters.rs
mov qword [rsp + 0x20], rax
mov rcx, r15
mov rdx, r14
mov r9, r14
call fcn.14013fdc0
ud2