Function at 0x1400c85f0
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x308
movdqa xmmword [rsp + 0x2f0], xmm8
movdqa xmmword [rsp + 0x2e0], xmm7
movdqa xmmword [rsp + 0x2d0], xmm6
mov r15, r8
mov r13, rdx
mov r12, rcx
mov r14, qword [rdx + 0x38]
mov qword [rdx + 0x38], 0
test r14, r14
je 0x1400c8766
movzx eax, byte [r14 + 0x80]
test al, al
jne 0x1400c86a2
mov rax, qword [r15]
mov rdx, qword [rax]
mov rcx, qword [rax + 8]
call qword [rdx]
mov cl, 1
xchg byte [r14 + 0x60], cl
test cl, cl
je 0x1400c8667
mov rcx, rdx
call qword [rax + 0x18]
jmp 0x1400c86a2
mov r8, qword [r14 + 0x50]
test r8, r8
je 0x1400c8684
mov rcx, qword [r14 + 0x58]
mov rsi, rax
mov rdi, rdx
call qword [r8 + 0x18]
mov rdx, rdi
mov rax, rsi
mov qword [r14 + 0x50], rax
mov qword [r14 + 0x58], rdx
xor eax, eax
xchg byte [r14 + 0x60], al
movzx eax, byte [r14 + 0x80]
test al, al
je 0x1400c8e75
mov al, 1
xchg byte [r14 + 0x48], al
test al, al
jne 0x1400c86c4
movzx eax, byte [r14 + 0x41]
mov byte [r14 + 0x41], 2
cmp al, 2
jne 0x1400c8e17
xor eax, eax
xchg byte [r14 + 0x48], al
mov byte [rsp + 0x1b8], 1
mov byte [rsp + 0x228], 2
mov bl, 1
mov al, 1
xchg byte [r14 + 0x80], al
mov al, 1
xchg byte [r14 + 0x60], al
test al, al
jne 0x1400c8707
mov rax, qword [r14 + 0x50]
mov rcx, qword [r14 + 0x58]
mov qword [r14 + 0x50], 0
xor edx, edx
xchg byte [r14 + 0x60], dl
test rax, rax
je 0x1400c8707
call qword [rax + 0x18]
xchg byte [r14 + 0x78], bl
test bl, bl
jne 0x1400c872d
mov rax, qword [r14 + 0x68]
mov rcx, qword [r14 + 0x70]
mov qword [r14 + 0x68], 0
xor edx, edx
xchg byte [r14 + 0x78], dl
test rax, rax
je 0x1400c872d
call qword [rax + 8]
lock dec qword [r14]
jne 0x1400c873b
mov rcx, r14
call fcn.1400bc660
movzx eax, byte [rsp + 0x228]
cmp eax, 2
je 0x1400c8f02
cmp eax, 3
je 0x1400c8766
cmp eax, 4
jne 0x1400c88aa
mov al, 3
mov byte [r12 + 0x70], al
jmp 0x1400c997d
mov rdi, qword [r13 + 0x30]
test rdi, rdi
je 0x1400c98f3
lea rsi, [rdi + 0x10]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rdi + 0x10], cl
jne 0x1400c99aa
mov rax, qword [0x1401aa170]
shl rax, 1
test rax, rax
jne 0x1400c99c5
mov dword [rsp + 0x4c], 0
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x1b0], r15
mov qword [rsp + 0x68], r12
movzx eax, byte [rdi + 0x11]
test al, al
jne 0x1400c9b96
mov qword [rsp + 0x30], rdi
cmp qword [rdi + 0x70], 0
mov qword [rsp + 0x38], r13
je 0x1400c889a
mov rsi, qword [rsp + 0x30]
mov rbp, qword [rsi + 0xd8]
mov ebx, dword [rsi + 0xe0]
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rsi + 0x80]
mov r8, r13
call fcn.140096170
mov rcx, qword [rsi + 0x58]
mov r14, qword [rsi + 0x60]
mov r15, r14
and r15, rax
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea r12, [rcx - 0x48]
xor edi, edi
pcmpeqd xmm7, xmm7
movdqu xmm8, xmmword [rcx + r15]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb esi, xmm0
test esi, esi
je 0x1400c887c
mov qword [rsp + 0x40], rcx
tzcnt eax, esi
add rax, r15
and rax, r14
neg rax
mov rcx, r13
lea r13, [rax + rax*8]
lea rdx, [r12 + r13*8]
call fcn.140096f80
test al, al
jne 0x1400c89c9
lea eax, [rsi - 1]
and ax, si
mov esi, eax
mov r13, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
jne 0x1400c8843
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
jne 0x1400c889a
add r15, rdi
add r15, 0x10
add rdi, 0x10
and r15, r14
jmp 0x1400c8827
mov dword [rsp + 0x190], 0x3b9aca00
jmp 0x1400c8cab
movzx ecx, byte [rsp + 0x1b8]
movups xmm0, xmmword [rsp + 0x1b9]
movaps xmmword [rsp + 0x70], xmm0
movups xmm0, xmmword [rsp + 0x1c9]
movaps xmmword [rsp + 0x80], xmm0
movups xmm0, xmmword [rsp + 0x1d9]
movaps xmmword [rsp + 0x90], xmm0
movups xmm0, xmmword [rsp + 0x1e9]
movaps xmmword [rsp + 0xa0], xmm0
movups xmm0, xmmword [rsp + 0x1f9]
movaps xmmword [rsp + 0xb0], xmm0
movups xmm0, xmmword [rsp + 0x209]
movaps xmmword [rsp + 0xc0], xmm0
movups xmm0, xmmword [rsp + 0x218]
movups xmmword [rsp + 0xcf], xmm0
mov edx, dword [rsp + 0x229]
mov dword [rsp + 0xf0], edx
mov edx, dword [rsp + 0x22c]
mov dword [rsp + 0xf3], edx
movups xmm0, xmmword [rsp + 0xcf]
movups xmmword [r12 + 0x60], xmm0
movaps xmm0, xmmword [rsp + 0xc0]
movups xmmword [r12 + 0x51], xmm0
movaps xmm0, xmmword [rsp + 0xb0]
movups xmmword [r12 + 0x41], xmm0
movdqa xmm0, xmmword [rsp + 0x70]
movdqa xmm1, xmmword [rsp + 0x80]
movdqa xmm2, xmmword [rsp + 0x90]
movdqa xmm3, xmmword [rsp + 0xa0]
movdqu xmmword [r12 + 0x31], xmm3
movdqu xmmword [r12 + 0x21], xmm2
movdqu xmmword [r12 + 0x11], xmm1
movdqu xmmword [r12 + 1], xmm0
mov edx, dword [rsp + 0xf0]
mov r8d, dword [rsp + 0xf3]
mov dword [r12 + 0x71], edx
mov dword [r12 + 0x74], r8d
mov byte [r12], cl
mov byte [r12 + 0x70], al
jmp 0x1400c997d
mov rax, qword [rsp + 0x40]
mov rax, qword [rax + r13*8 - 8]
test rax, rax
je 0x1400c8c9b
mov rcx, qword [rsp + 0x40]
lea r12, [rcx + r13*8]
dec rax
mov qword [r12 - 8], rax
mov rcx, qword [r12 - 0x10]
lea rdx, [rax + rax*8]
mov eax, dword [rcx + rdx*8 + 0x40]
cmp eax, 0x3b9aca00
je 0x1400c8c9b
mov rsi, rbp
lea rcx, [rcx + rdx*8]
mov edx, dword [rcx + 0x44]
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movdqu xmm2, xmmword [rcx + 0x20]
movdqu xmm3, xmmword [rcx + 0x30]
movdqa xmmword [rsp + 0x110], xmm2
movdqa xmmword [rsp + 0x120], xmm3
movdqa xmmword [rsp + 0x100], xmm1
movdqa xmmword [rsp + 0xf0], xmm0
mov dword [rsp + 0x130], eax
mov dword [rsp + 0x134], edx
mov rax, qword [rsp + 0x118]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x1400c8b0b
mov rax, qword [rsp + 0xf0]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x100], 2
cmove edx, ecx
cmp dl, 1
jne 0x1400c8b0b
mov r14, qword [rsp + 0x128]
mov ebp, dword [rsp + 0x130]
cmp ebx, 0x3b9aca00
je 0x1400c8c6e
call fcn.140114a40
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x78], edx
lea rcx, [rsp + 0x70]
mov rdx, r14
mov r8d, ebp
call fcn.140114bd0
xor ecx, ecx
cmp edx, 0x3b9aca00
cmove edx, ecx
cmovne rcx, rax
xor eax, eax
cmp rcx, rsi
setne al
mov ecx, 0xff
cmovb eax, ecx
xor r8d, r8d
cmp edx, ebx
setne r8b
cmovb r8d, ecx
test al, al
cmovne r8d, eax
cmp r8b, 1
jne 0x1400c8c6e
lea rcx, [rsp + 0xf0]
call fcn.1400c9c30
mov rax, qword [r12 - 8]
test rax, rax
je 0x1400c8c9b
lea rdi, [rsp + 0x70]
xor r15d, r15d
jmp 0x1400c8b4b
lea rcx, [rsp + 0xf0]
call fcn.1400c9c30
mov rax, qword [r12 - 8]
test rax, rax
je 0x1400c8c9b
dec rax
mov qword [r12 - 8], rax
mov rcx, qword [r12 - 0x10]
lea rdx, [rax + rax*8]
mov eax, dword [rcx + rdx*8 + 0x40]
cmp eax, 0x3b9aca00
je 0x1400c8c9b
lea rcx, [rcx + rdx*8]
mov edx, dword [rcx + 0x44]
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movdqu xmm2, xmmword [rcx + 0x20]
movdqu xmm3, xmmword [rcx + 0x30]
movdqa xmmword [rsp + 0x110], xmm2
movdqa xmmword [rsp + 0x120], xmm3
movdqa xmmword [rsp + 0x100], xmm1
movdqa xmmword [rsp + 0xf0], xmm0
mov dword [rsp + 0x130], eax
mov dword [rsp + 0x134], edx
mov rax, qword [rsp + 0x118]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x1400c8b30
mov rax, qword [rsp + 0xf0]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x100], 2
cmove edx, ecx
cmp dl, 1
jne 0x1400c8b30
mov r14, qword [rsp + 0x128]
mov ebp, dword [rsp + 0x130]
cmp ebx, 0x3b9aca00
je 0x1400c8c6e
call fcn.140114a40
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x78], edx
mov rcx, rdi
mov rdx, r14
mov r8d, ebp
call fcn.140114bd0
cmp edx, 0x3b9aca00
cmove edx, r15d
mov ecx, 0
cmovne rcx, rax
xor eax, eax
cmp rcx, rsi
setne al
mov r8d, 0xff
cmovb eax, r8d
xor ecx, ecx
cmp edx, ebx
setne cl
cmovb ecx, r8d
test al, al
cmovne ecx, eax
cmp cl, 1
je 0x1400c8b30
lea rdi, [rsp + 0x70]
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call fcn.140082b10
cmp byte [rsp + 0xd9], 2
jne 0x1400c99d5
mov rsi, qword [r12 - 8]
jmp 0x1400c9a5e
mov dword [rsp + 0x190], 0x3b9aca00
mov r13, qword [rsp + 0x38]
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmm1, xmmword [rsp + 0x80]
movdqu xmm2, xmmword [rsp + 0x90]
movdqu xmm3, xmmword [rsp + 0xa0]
movdqa xmmword [rsp + 0x260], xmm3
movdqa xmmword [rsp + 0x250], xmm2
movdqa xmmword [rsp + 0x240], xmm1
movdqa xmmword [rsp + 0x230], xmm0
mov ebp, 0x3b9aca00
mov dword [rsp + 0x40], 0
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rsi + 0x80]
mov r8, r13
call fcn.140096170
mov rbx, qword [rsi + 0x58]
mov r14, qword [rsi + 0x60]
mov r12, r14
and r12, rax
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea r13, [rbx - 0x48]
xor ecx, ecx
pcmpeqd xmm7, xmm7
movdqu xmm8, xmmword [rbx + r12]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb esi, xmm0
test esi, esi
je 0x1400c8d9f
mov dword [rsp + 0x50], ebp
mov rbp, rcx
tzcnt edi, esi
add rdi, r12
and rdi, r14
mov rax, rdi
neg rax
lea r15, [rax + rax*8]
lea rdx, [r15*8]
add rdx, r13
mov rcx, qword [rsp + 0x38]
call fcn.140096f80
test al, al
jne 0x1400c8dc1
lea eax, [rsi - 1]
and ax, si
mov esi, eax
mov rcx, rbp
mov ebp, dword [rsp + 0x50]
jne 0x1400c8d5e
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
jne 0x1400c8fb6
add r12, rcx
add r12, 0x10
add rcx, 0x10
and r12, r14
jmp 0x1400c8d43
shl rdi, 3
lea rcx, [rdi + rdi*8]
sar rcx, 3
movabs rax, 0x8e38e38e38e38e39
imul rax, rcx
lea rcx, [rax - 0x10]
and rcx, r14
movdqu xmm0, xmmword [rbx + rcx]
pcmpeqd xmm1, xmm1
pcmpeqb xmm0, xmm1
pmovmskb edx, xmm0
movdqu xmm0, xmmword [rbx + rax]
pcmpeqb xmm0, xmm1
pmovmskb r8d, xmm0
test edx, edx
je 0x1400c8f1a
bsr r9w, dx
xor r9d, 0xf
jmp 0x1400c8f1f
lea rcx, [r14 + 0x10]
movzx edx, byte [rcx + 0x30]
mov byte [rsp + 0x180], dl
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movdqu xmm2, xmmword [rcx + 0x20]
movdqa xmmword [rsp + 0x170], xmm2
movdqa xmmword [rsp + 0x160], xmm1
movdqa xmmword [rsp + 0x150], xmm0
mov ecx, dword [r14 + 0x42]
mov dword [rsp + 0x230], ecx
movzx ecx, word [r14 + 0x46]
mov word [rsp + 0x234], cx
xor ecx, ecx
xchg byte [r14 + 0x48], cl
cmp al, 3
jne 0x1400c9120
mov rsi, qword [r13 + 0x38]
test rsi, rsi
je 0x1400c8ee5
mov bl, 1
mov al, 1
xchg byte [rsi + 0x80], al
mov al, 1
xchg byte [rsi + 0x60], al
test al, al
jne 0x1400c8eae
mov rax, qword [rsi + 0x50]
mov rcx, qword [rsi + 0x58]
mov qword [rsi + 0x50], 0
xor edx, edx
xchg byte [rsi + 0x60], dl
test rax, rax
je 0x1400c8eae
call qword [rax + 0x18]
xchg byte [rsi + 0x78], bl
test bl, bl
jne 0x1400c8ed2
mov rax, qword [rsi + 0x68]
mov rcx, qword [rsi + 0x70]
mov qword [rsi + 0x68], 0
xor edx, edx
xchg byte [rsi + 0x78], dl
test rax, rax
je 0x1400c8ed2
call qword [rax + 8]
mov rax, qword [r13 + 0x38]
lock dec qword [rax]
jne 0x1400c8ee5
mov rcx, qword [r13 + 0x38]
call fcn.1400bc660
mov qword [r13 + 0x38], r14
mov byte [rsp + 0x228], 4
movzx eax, byte [rsp + 0x228]
cmp eax, 2
jne 0x1400c874c
movzx eax, byte [rsp + 0x1b8]
mov byte [r12], al
mov al, 2
mov byte [r12 + 0x70], al
jmp 0x1400c997d
mov r9w, 0x10
mov r10, qword [rsp + 0x30]
mov ebp, dword [rsp + 0x50]
lea rdx, [rbx + r15*8]
or r8d, 0x10000
tzcnt r8d, r8d
add r9d, r8d
mov r8b, pe_nt_image_headers64
cmp r9w, 0xf
ja 0x1400c8f4c
inc qword [r10 + 0x68]
mov r8b, 0xff
mov byte [rbx + rax], r8b
mov byte [rbx + rcx + 0x10], r8b
dec qword [r10 + 0x70]
movdqu xmm0, xmmword [rdx - 0x48]
movdqu xmm1, xmmword [rdx - 0x38]
movdqu xmm2, xmmword [rdx - 0x28]
movdqu xmm3, xmmword [rdx - 0x18]
movdqa xmmword [rsp + 0xa0], xmm3
mov rax, qword [rdx - 8]
mov qword [rsp + 0xb0], rax
movdqa xmmword [rsp + 0x90], xmm2
movdqa xmmword [rsp + 0x80], xmm1
movdqa xmmword [rsp + 0x70], xmm0
movabs rax, 0x7fffffffffffffff
lea r15, [rax + 1]
cmp qword [rsp + 0xa0], r15
jne 0x1400c9066
mov r13, qword [rsp + 0x38]
cmp ebp, 0x3b9aca00
sete sil
jne 0x1400c9111
cmp qword [r13 + 0x38], 0
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x58]
jne 0x1400c9879
movzx eax, byte [0x1401aa178]
mov edx, 0x88
xor ecx, ecx
call fcn.14011ab20
test rax, rax
je 0x1400c9bd1
mov r15, rax
mov dword [rsp + 0x140], esi
mov qword [rax], 1
mov qword [rax + 8], 1
mov byte [rax + 0x41], 2
mov byte [rax + 0x48], 0
mov qword [rax + 0x50], 0
mov byte [rax + 0x60], 0
mov qword [rax + 0x68], 0
mov byte [rax + 0x78], 0
mov byte [rax + 0x80], 0
lock inc qword [rax]
jle 0x1400c9be0
movzx esi, byte [r13]
test esi, esi
je 0x1400c91f0
cmp esi, 1
jne 0x1400c91f2
movzx eax, byte [r13 + 1]
jmp 0x1400c924b
mov rsi, qword [rdx - 0x18]
mov r14, qword [rdx - 0x10]
mov rbx, qword [rdx - 8]
cmp byte [rsp + 0x70], 2
jb 0x1400c90a6
mov r12, qword [rsp + 0x78]
lea rcx, [r12 + 0x18]
mov rax, qword [r12]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
call qword [rax + 0x20]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
lea rcx, [rsp + 0x98]
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov r8, qword [rsp + 0x90]
call qword [rax + 0x20]
cmp rsi, r15
mov r13, qword [rsp + 0x38]
je 0x1400c8fbb
test rbx, rbx
je 0x1400c90f1
mov r12, r14
nop
mov rcx, r12
call fcn.14008a750
add r12, 0x48
dec rbx
jne 0x1400c90e0
test rsi, rsi
je 0x1400c8fbb
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapFree
jmp 0x1400c8fbb
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x58]
jmp 0x1400c9879
movdqa xmm0, xmmword [rsp + 0x150]
movdqa xmm1, xmmword [rsp + 0x160]
movdqa xmm2, xmmword [rsp + 0x170]
movdqa xmmword [rsp + 0x290], xmm2
movzx ecx, byte [rsp + 0x180]
mov byte [rsp + 0x2a0], cl
movdqa xmmword [rsp + 0x280], xmm1
movdqa xmmword [rsp + 0x270], xmm0
mov byte [rsp + 0x2a1], al
mov eax, dword [rsp + 0x230]
mov dword [rsp + 0x2a2], eax
movzx eax, word [rsp + 0x234]
mov word [rsp + 0x2a6], ax
mov rax, qword [rsp + 0x298]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x1400c954d
mov rax, qword [rsp + 0x270]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x280], 2
cmove edx, ecx
test dl, dl
je 0x1400c954d
mov rdx, qword [r13 + 0x30]
lea rcx, [rsp + 0x1b8]
lea r9, [rsp + 0x270]
mov r8, r13
call fcn.1400c9cd0
jmp 0x1400c86d4
jmp 0x1400c924b
mov rdi, qword [r13 + 8]
movzx eax, byte [0x1401aa178]
mov edx, 0x20
xor ecx, ecx
call fcn.14011ab20
test rax, rax
je 0x1400c9c12
mov r14, rax
lea rdx, [rdi + 0x18]
mov rax, qword [rdi]
mov r8, qword [rdi + 8]
mov r9, qword [rdi + 0x10]
lea rcx, [rsp + 0xf0]
call qword [rax]
movdqu xmm0, xmmword [rsp + 0xf0]
movdqu xmm1, xmmword [rsp + 0x100]
movdqu xmmword [r14 + 0x10], xmm1
movdqu xmmword [r14], xmm0
mov byte [rsp + 0x70], sil
mov byte [rsp + 0x71], al
mov qword [rsp + 0x78], r14
lea rcx, [rsp + 0x80]
lea rdx, [r13 + 0x28]
mov rax, qword [r13 + 0x10]
mov r8, qword [r13 + 0x18]
mov r9, qword [r13 + 0x20]
call qword [rax]
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rsi + 0xa8]
mov rdx, qword [rsi + 0xb0]
lea r8, [rsp + 0x70]
call fcn.140096170
mov rdx, rax
shr rdx, 0x39
mov rcx, qword [rsi + 0x88]
mov r8, qword [rsi + 0x90]
mov qword [rsp + 0x50], r8
and r8, rax
mov qword [rsp + 0x1a8], rdx
movd xmm0, edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movzx edx, byte [rsp + 0x70]
movzx r9d, byte [rsp + 0x71]
mov byte [rsp + 0x2f], r9b
mov byte [rsp + 0x2e], dl
movzx r9d, dl
mov rdx, qword [rsp + 0x78]
mov qword [rsp + 0x60], rdx
mov r13, qword [rsp + 0x88]
mov qword [rsp + 0x148], 0
mov r14, qword [rsp + 0x90]
pcmpeqd xmm1, xmm1
mov dword [rsp + 0x144], r9d
movdqu xmm2, xmmword [rcx + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r11d, xmm3
test r11d, r11d
je 0x1400c9454
tzcnt edx, r11d
add rdx, r8
and rdx, qword [rsp + 0x50]
neg rdx
lea rdx, [rdx + rdx*4]
shl rdx, 4
lea r12, [rcx + rdx]
movzx edx, byte [rcx + rdx - 0x50]
cmp edx, 1
je 0x1400c93cd
cmp edx, 2
jne 0x1400c9b23
cmp r9d, 2
jne 0x1400c9432
mov rdx, qword [r12 - 0x48]
mov rsi, qword [rdx + 0x10]
mov r9, qword [rsp + 0x60]
cmp rsi, qword [r9 + 0x10]
jne 0x1400c943b
mov r9, qword [rdx + 8]
mov rdx, qword [rsp + 0x60]
mov rbx, qword [rdx + 8]
xor edx, edx
nop dword [rax]
cmp rsi, rdx
je 0x1400c93df
movzx edi, byte [r9 + rdx]
lea r10d, [rdi - 0x41]
cmp r10b, 0x1a
setb r10b
shl r10b, 5
or r10b, dil
movzx edi, byte [rbx + rdx]
lea ebp, [rdi - 0x41]
cmp bpl, 0x1a
setb bpl
shl bpl, 5
or bpl, dil
inc rdx
cmp r10b, bpl
je 0x1400c9390
jmp 0x1400c943b
cmp r9d, 1
jne 0x1400c9432
movzx edx, byte [rsp + 0x2f]
cmp byte [r12 - 0x4f], dl
jne 0x1400c943b
cmp qword [r12 - 0x30], r14
jne 0x1400c943b
mov r9, qword [r12 - 0x38]
xor edx, edx
nop dword [rax]
cmp r14, rdx
je 0x1400c9485
movzx r10d, byte [r9 + rdx]
lea esi, [r10 - 0x41]
cmp sil, 0x1a
setb bl
shl bl, 5
or bl, r10b
movzx r10d, byte [r13 + rdx]
lea esi, [r10 - 0x41]
cmp sil, 0x1a
setb sil
shl sil, 5
or sil, r10b
inc rdx
cmp bl, sil
je 0x1400c93f0
jmp 0x1400c943b
test r9d, r9d
je 0x1400c9b23
lea edx, [r11 - 1]
and dx, r11w
mov r11d, edx
mov r9d, dword [rsp + 0x144]
jne 0x1400c932d
pcmpeqb xmm2, xmm1
pmovmskb edx, xmm2
test edx, edx
jne 0x1400c94dd
mov rdx, qword [rsp + 0x148]
add r8, rdx
add r8, 0x10
add rdx, 0x10
mov qword [rsp + 0x148], rdx
and r8, qword [rsp + 0x50]
jmp 0x1400c9311
cmp byte [rsp + 0x2e], 2
jb 0x1400c94b5
mov rsi, qword [rsp + 0x60]
lea rcx, [rsi + 0x18]
mov rax, qword [rsi]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
call qword [rax + 0x20]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
mov rax, qword [rsp + 0x80]
lea rcx, [rsp + 0x98]
mov rdx, r13
mov r8, r14
call qword [rax + 0x20]
mov r13, qword [rsp + 0x38]
mov r14, qword [rsp + 0x58]
jmp 0x1400c96b7
mov rcx, qword [rsp + 0x30]
cmp qword [rcx + 0x98], 0
movzx r11d, byte [rsp + 0x2e]
je 0x1400c9b56
lea r8, [rsp + 0x71]
mov ecx, dword [r8]
mov edx, dword [r8 + 3]
mov dword [rsp + 0xe3], edx
mov dword [rsp + 0xe0], ecx
mov rcx, qword [rsp + 0x80]
movdqu xmm0, xmmword [r8 + 0x17]
movdqa xmmword [rsp + 0x2b0], xmm0
mov rdx, qword [r8 + 0x27]
mov qword [rsp + 0x2c0], rdx
cmp r11b, 3
mov r13, qword [rsp + 0x38]
mov r14, qword [rsp + 0x58]
jne 0x1400c956f
mov r12, qword [rsp + 0x60]
jmp 0x1400c96b7
mov byte [rsp + 0x1b8], 2
mov byte [rsp + 0x228], 2
lea rcx, [rsp + 0x270]
call fcn.1400c9c30
jmp 0x1400c86d4
mov edx, dword [rsp + 0xe0]
mov r8d, dword [rsp + 0xe3]
mov dword [rsp + 0xe8], edx
mov dword [rsp + 0xeb], r8d
movaps xmm0, xmmword [rsp + 0x2b0]
movaps xmmword [rsp + 0xf0], xmm0
mov rdx, qword [rsp + 0x2c0]
mov qword [rsp + 0x100], rdx
mov r8, qword [rsp + 0x30]
mov rdx, qword [r8 + 0x88]
mov r8, qword [r8 + 0x90]
and rax, r8
movdqu xmm0, xmmword [rdx + rax]
pmovmskb r9d, xmm0
test r9d, r9d
jne 0x1400c95f9
mov r10d, 0x10
nop dword [rax + rax]
add rax, r10
and rax, r8
movdqu xmm0, xmmword [rdx + rax]
pmovmskb r9d, xmm0
add r10, 0x10
test r9d, r9d
je 0x1400c95e0
tzcnt r9d, r9d
add r9, rax
and r9, r8
movzx eax, byte [rdx + r9]
test al, al
jns 0x1400c9b7f
lea r10, [r9 - 0x10]
and r10, r8
mov r8, qword [rsp + 0x1a8]
mov byte [rdx + r9], r8b
mov byte [rdx + r10 + 0x10], r8b
neg r9
lea r8, [r9 + r9*4]
and al, 1
movzx eax, al
mov r10, qword [rsp + 0x30]
sub qword [r10 + 0x98], rax
shl r8, 4
lea r12, [rdx + r8]
mov byte [rdx + r8 - 0x50], r11b
mov eax, dword [rsp + 0xe8]
mov r9d, dword [rsp + 0xeb]
mov dword [rdx + r8 - 0x4f], eax
mov dword [rdx + r8 - 0x4c], r9d
mov rax, qword [rsp + 0x60]
mov qword [rdx + r8 - 0x48], rax
mov qword [rdx + r8 - 0x40], rcx
movdqa xmm0, xmmword [rsp + 0xf0]
movdqu xmmword [rdx + r8 - 0x38], xmm0
mov rax, qword [rsp + 0x100]
mov qword [rdx + r8 - 0x28], rax
mov qword [rdx + r8 - 0x20], 0
mov qword [rdx + r8 - 0x18], 8
pxor xmm0, xmm0
movdqu xmmword [rdx + r8 - 0x10], xmm0
inc qword [r10 + 0xa0]
mov rcx, qword [r12 - 0x20]
mov rax, qword [r12 - 8]
cmp rax, rcx
jne 0x1400c96da
lea rcx, [r12 - 0x20]
call fcn.140088aa0
mov rcx, qword [r12 - 0x20]
mov rax, qword [r12 - 8]
mov rdx, qword [r12 - 0x10]
add rdx, rax
xor r8d, r8d
cmp rdx, rcx
cmovae r8, rcx
sub rdx, r8
mov rcx, qword [r12 - 0x18]
mov qword [rcx + rdx*8], r15
inc rax
mov qword [r12 - 8], rax
movzx eax, byte [r15 + 0x80]
test al, al
mov r12, qword [rsp + 0x68]
jne 0x1400c9772
mov rax, qword [rsp + 0x1b0]
mov rax, qword [rax]
mov rdx, qword [rax]
mov rcx, qword [rax + 8]
call qword [rdx]
mov cl, 1
xchg byte [r15 + 0x60], cl
test cl, cl
je 0x1400c9737
mov rcx, rdx
call qword [rax + 0x18]
jmp 0x1400c9772
mov r8, qword [r15 + 0x50]
test r8, r8
je 0x1400c9754
mov rcx, qword [r15 + 0x58]
mov rsi, rax
mov rdi, rdx
call qword [r8 + 0x18]
mov rdx, rdi
mov rax, rsi
mov qword [r15 + 0x50], rax
mov qword [r15 + 0x58], rdx
xor eax, eax
xchg byte [r15 + 0x60], al
movzx eax, byte [r15 + 0x80]
test al, al
je 0x1400c97f7
mov al, 1
xchg byte [r15 + 0x48], al
test al, al
jne 0x1400c9be8
movzx eax, byte [r15 + 0x41]
mov byte [r15 + 0x41], 2
cmp al, 2
je 0x1400c9be2
mov rcx, r15
add rcx, 0x10
movzx edx, byte [rcx + 0x30]
mov byte [rsp + 0xa0], dl
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movdqu xmm2, xmmword [rcx + 0x20]
movdqa xmmword [rsp + 0x90], xmm2
movdqa xmmword [rsp + 0x80], xmm1
movdqa xmmword [rsp + 0x70], xmm0
mov ecx, dword [r15 + 0x42]
mov dword [rsp + 0xa2], ecx
movzx ecx, word [r15 + 0x46]
mov word [rsp + 0xa6], cx
mov byte [rsp + 0xa1], al
xor ecx, ecx
xchg byte [r15 + 0x48], cl
cmp al, 3
jne 0x1400c9bf0
mov rsi, qword [r13 + 0x38]
test rsi, rsi
je 0x1400c9867
mov bl, 1
mov al, 1
xchg byte [rsi + 0x80], al
mov al, 1
xchg byte [rsi + 0x60], al
test al, al
jne 0x1400c9830
mov rax, qword [rsi + 0x50]
mov rcx, qword [rsi + 0x58]
mov qword [rsi + 0x50], 0
xor edx, edx
xchg byte [rsi + 0x60], dl
test rax, rax
je 0x1400c9830
call qword [rax + 0x18]
xchg byte [rsi + 0x78], bl
test bl, bl
jne 0x1400c9854
mov rax, qword [rsi + 0x68]
mov rcx, qword [rsi + 0x70]
mov qword [rsi + 0x68], 0
xor edx, edx
xchg byte [rsi + 0x78], dl
test rax, rax
je 0x1400c9854
call qword [rax + 8]
mov rax, qword [r13 + 0x38]
lock dec qword [rax]
jne 0x1400c9867
mov rcx, qword [r13 + 0x38]
call fcn.1400bc660
mov qword [r13 + 0x38], r15
mov ebp, dword [rsp + 0x190]
mov esi, dword [rsp + 0x140]
cmp ebp, 0x3b9aca00
sete al
mov ecx, dword [rsp + 0x40]
or cl, al
jne 0x1400c989a
lea rcx, [rsp + 0x150]
call fcn.1400c9c30
mov sil, 1
cmp byte [rsp + 0x4c], 0
jne 0x1400c98bb
mov rax, qword [0x1401aa170]
movabs rcx, 0x7fffffffffffffff
test rax, rcx
jne 0x1400c9b3b
xor eax, eax
xchg byte [r14], al
cmp al, 2
je 0x1400c9b0d
test sil, sil
jne 0x1400c98f3
mov rdx, qword [r13 + 0x30]
lea rcx, [rsp + 0x1b8]
lea r9, [rsp + 0x230]
mov r8, r13
call fcn.1400c9cd0
cmp byte [rsp + 0x228], 2
jne 0x1400c990f
cmp qword [r13 + 0x30], 0
je 0x1400c9902
mov byte [r12 + 0x70], 3
jmp 0x1400c997d
mov byte [r12], 0
mov byte [r12 + 0x70], 2
jmp 0x1400c997d
mov rax, qword [rsp + 0x228]
mov qword [r12 + 0x70], rax
movups xmm0, xmmword [rsp + 0x218]
movups xmmword [r12 + 0x60], xmm0
movups xmm0, xmmword [rsp + 0x208]
movups xmmword [r12 + 0x50], xmm0
movups xmm0, xmmword [rsp + 0x1f8]
movups xmmword [r12 + 0x40], xmm0
movups xmm0, xmmword [rsp + 0x1b8]
movups xmm1, xmmword [rsp + 0x1c8]
movups xmm2, xmmword [rsp + 0x1d8]
movups xmm3, xmmword [rsp + 0x1e8]
movups xmmword [r12 + 0x30], xmm3
movups xmmword [r12 + 0x20], xmm2
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r12], xmm0
movaps xmm6, xmmword [rsp + 0x2d0]
movaps xmm7, xmmword [rsp + 0x2e0]
movaps xmm8, xmmword [rsp + 0x2f0]
add rsp, 0x308
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rsi
call fcn.1400ee680
mov rax, qword [0x1401aa170]
shl rax, 1
test rax, rax
je 0x1400c8799
call fcn.1400ee730
xor al, 1
mov dword [rsp + 0x4c], eax
jmp 0x1400c87a1
call fcn.140114a40
mov rbx, rax
mov r15d, edx
mov rsi, qword [r12 - 8]
cmp rsi, qword [r12 - 0x18]
jne 0x1400c9a05
mov rax, qword [rsp + 0x40]
lea rcx, [rax + r13*8]
add rcx, 0xffffffffffffffe8
lea rdx, [0x140185ee0]
call fcn.140097d70
lea rdi, [rsp + 0xa8]
mov rax, qword [r12 - 0x10]
lea rcx, [rsi + rsi*8]
mov rdx, qword [rsp + 0xa0]
mov qword [rax + rcx*8 + 0x30], rdx
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmm1, xmmword [rsp + 0x80]
movdqu xmm2, xmmword [rsp + 0x90]
movdqu xmmword [rax + rcx*8 + 0x20], xmm2
movdqu xmmword [rax + rcx*8 + 0x10], xmm1
movdqu xmmword [rax + rcx*8], xmm0
mov qword [rax + rcx*8 + 0x38], rbx
mov dword [rax + rcx*8 + 0x40], r15d
inc rsi
mov qword [r12 - 8], rsi
mov rax, qword [rdi + 0x30]
mov qword [rsp + 0x180], rax
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmm2, xmmword [rdi + 0x20]
movaps xmmword [rsp + 0x170], xmm2
movaps xmmword [rsp + 0x160], xmm1
movaps xmmword [rsp + 0x150], xmm0
mov qword [rsp + 0x188], r14
mov dword [rsp + 0x190], ebp
movaps xmmword [rsp + 0x230], xmm0
movaps xmmword [rsp + 0x240], xmm1
movaps xmmword [rsp + 0x250], xmm2
test rsi, rsi
sete byte [rsp + 0x198]
mov rax, qword [rsp + 0x180]
mov qword [rsp + 0x260], rax
mov rax, qword [rsp + 0x188]
mov qword [rsp + 0x268], rax
mov r12, qword [rsp + 0x68]
mov r13, qword [rsp + 0x38]
je 0x1400c9b02
xor esi, esi
mov r14, qword [rsp + 0x58]
cmp byte [rsp + 0x4c], 0
je 0x1400c98a1
jmp 0x1400c98bb
mov al, 1
mov dword [rsp + 0x40], eax
jmp 0x1400c8cfd
mov rcx, r14
call sub.api_ms_win_core_synch_l1_2_0.dll_WakeByAddressSingle
test sil, sil
je 0x1400c98cd
jmp 0x1400c98f3
lea rcx, str.internal_error:_entered_unreachable_code
lea r8, [0x14015fe00]
mov edx, 0x28
call fcn.14000a990
call fcn.1400ee730
test al, al
jne 0x1400c98bb
mov rax, qword [rsp + 0x30]
mov byte [rax + 0x11], 1
jmp 0x1400c98bb
mov rdx, qword [rsp + 0x30]
lea rcx, [rdx + 0x88]
add rdx, 0xa8
mov rsi, rax
call fcn.1400c6cd0
movzx r11d, byte [rsp + 0x2e]
mov rax, rsi
jmp 0x1400c94f6
movdqa xmm0, xmmword [rdx]
pmovmskb eax, xmm0
tzcnt r9d, eax
movzx eax, byte [rdx + r9]
jmp 0x1400c9611
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x70], rax
mov eax, dword [rsp + 0x4c]
mov byte [rsp + 0x78], al
lea rax, [0x140185de0]
mov qword [rsp + 0x20], rax
lea rcx, str.called__Result::unwrap____on_an__Err__valueassertion_failed:_self.is_char_boundary_idx_
lea r9, [0x140185f98]
lea r8, [rsp + 0x70]
mov edx, 0x2b
call fcn.14000bd90
mov ecx, 8
mov edx, 0x88
call fcn.140006e69
ud2
xor eax, eax
xchg byte [r15 + 0x48], al
mov byte [rsp + 0xa1], 2
lea rcx, [rsp + 0x70]
call fcn.1400c9e30
lea rcx, str.assertion_failed:_Pin::new_mut_rx_.poll_cx_.is_pending__
lea r8, [0x140185e50]
mov edx, 0x39
call fcn.14000a990
mov ecx, 8
mov edx, 0x20
call fcn.140006e69
int3