Function at 0x1400957a0
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 r13, rdx
mov qword [rsp + 0x60], rcx
mov r14, qword [rdx + 0x38]
mov qword [rdx + 0x38], 0
test r14, r14
je 0x140095be7
movzx eax, byte [r14 + 0x80]
test al, al
jne 0x14009585a
mov r15, r8
mov rax, qword [r8]
mov rdx, qword [rax]
mov rcx, qword [rax + 8]
call qword [rdx]
mov cl, 1
xchg byte [r14 + 0x60], cl
test cl, cl
je 0x14009581c
mov rcx, rdx
call qword [rax + 0x18]
mov r8, r15
jmp 0x14009585a
mov r8, qword [r14 + 0x50]
test r8, r8
je 0x140095839
mov rcx, qword [r14 + 0x58]
mov rsi, rax
mov rbx, rdx
call qword [r8 + 0x18]
mov rdx, rbx
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
mov r8, r15
je 0x140095939
mov cl, 1
mov al, 1
xchg byte [r14 + 0x48], al
test al, al
jne 0x14009587a
movzx eax, byte [r14 + 0x41]
mov byte [r14 + 0x41], 2
cmp al, 2
jne 0x1400958e2
xor eax, eax
xchg byte [r14 + 0x48], al
mov byte [rsp + 0x1f8], 1
mov al, 1
xchg byte [r14 + 0x80], al
xchg byte [r14 + 0x60], cl
test cl, cl
jne 0x1400958b1
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 0x1400958b1
call qword [rax + 0x18]
mov al, 1
xchg byte [r14 + 0x78], al
test al, al
jne 0x140095ad0
mov rax, qword [r14 + 0x68]
mov rcx, qword [r14 + 0x70]
mov qword [r14 + 0x68], 0
test rax, rax
je 0x140095942
xor edx, edx
xchg byte [r14 + 0x78], dl
call qword [rax + 8]
jmp 0x140095ad0
lea rcx, [r14 + 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 [r14 + 0x42]
mov dword [rsp + 0x1a0], ecx
movzx ecx, word [r14 + 0x46]
mov word [rsp + 0x1a4], cx
xor ecx, ecx
xchg byte [r14 + 0x48], cl
cmp al, 3
jne 0x14009594d
mov qword [r13 + 0x38], r14
jmp 0x140096a75
xor eax, eax
xchg byte [r14 + 0x78], al
jmp 0x140095ad0
movdqa xmm0, xmmword [rsp + 0x70]
movdqa xmm1, xmmword [rsp + 0x80]
movdqa xmm2, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0x180], xmm2
movzx ecx, byte [rsp + 0xa0]
mov byte [rsp + 0x190], cl
movdqa xmmword [rsp + 0x170], xmm1
movdqa xmmword [rsp + 0x160], xmm0
mov byte [rsp + 0x191], al
mov eax, dword [rsp + 0x1a0]
mov dword [rsp + 0x192], eax
movzx eax, word [rsp + 0x1a4]
mov word [rsp + 0x196], ax
mov rax, qword [rsp + 0x188]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x140095a7c
mov rax, qword [rsp + 0x160]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x170], 2
cmove edx, ecx
test dl, dl
je 0x140095a7c
mov r15, r8
mov rdx, qword [r13 + 0x30]
lea rcx, [rsp + 0x1f8]
lea r9, [rsp + 0x160]
mov r8, r13
call fcn.140096d90
movzx ebx, byte [rsp + 0x268]
mov sil, 1
mov al, 1
xchg byte [r14 + 0x80], al
mov al, 1
xchg byte [r14 + 0x60], al
test al, al
jne 0x140095a54
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 0x140095a54
call qword [rax + 0x18]
xchg byte [r14 + 0x78], sil
test sil, sil
mov r8, r15
je 0x140095af6
movzx esi, bl
lock dec qword [r14]
je 0x140095b39
cmp esi, 2
jne 0x140095b49
jmp 0x140095ade
mov byte [rsp + 0x1f8], 2
lea rcx, [rsp + 0x160]
call fcn.140089b50
mov bl, 1
mov al, 1
xchg byte [r14 + 0x80], al
mov al, 1
xchg byte [r14 + 0x60], al
test al, al
jne 0x140095ac4
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 0x140095ac4
call qword [rax + 0x18]
xchg byte [r14 + 0x78], bl
test bl, bl
je 0x1400958bf
lock dec qword [r14]
jne 0x140095ade
mov rcx, r14
call fcn.140060e70
movzx eax, byte [rsp + 0x1f8]
mov rcx, qword [rsp + 0x60]
mov byte [rcx], al
mov byte [rcx + 0x70], 2
jmp 0x140096af2
mov rax, qword [r14 + 0x68]
mov rcx, qword [r14 + 0x70]
mov qword [r14 + 0x68], 0
test rax, rax
je 0x140095b26
xor edx, edx
xchg byte [r14 + 0x78], dl
call qword [rax + 8]
mov r8, r15
movzx esi, bl
lock dec qword [r14]
jne 0x140095a71
jmp 0x140095b39
xor eax, eax
xchg byte [r14 + 0x78], al
movzx esi, bl
lock dec qword [r14]
jne 0x140095a71
mov rcx, r14
call fcn.140060e70
mov r8, r15
cmp esi, 2
je 0x140095ade
cmp esi, 3
je 0x140095be7
cmp esi, 4
je 0x140096a75
movzx eax, byte [rsp + 0x1f8]
movups xmm0, xmmword [rsp + 0x258]
mov r8, qword [rsp + 0x60]
movups xmmword [r8 + 0x60], xmm0
movups xmm0, xmmword [rsp + 0x249]
movups xmmword [r8 + 0x51], xmm0
movups xmm0, xmmword [rsp + 0x239]
movups xmmword [r8 + 0x41], xmm0
movups xmm0, xmmword [rsp + 0x229]
movups xmmword [r8 + 0x31], xmm0
movups xmm0, xmmword [rsp + 0x219]
movups xmmword [r8 + 0x21], xmm0
movups xmm0, xmmword [rsp + 0x209]
movups xmmword [r8 + 0x11], xmm0
movdqu xmm0, xmmword [rsp + 0x1f9]
movdqu xmmword [r8 + 1], xmm0
mov ecx, dword [rsp + 0x269]
mov edx, dword [rsp + 0x26c]
mov dword [r8 + 0x71], ecx
mov dword [r8 + 0x74], edx
mov byte [r8], al
mov byte [r8 + 0x70], bl
jmp 0x140096af2
mov rsi, qword [r13 + 0x30]
test rsi, rsi
je 0x140096a6e
lea rbx, [rsi + 0x10]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rsi + 0x10], cl
mov qword [rsp + 0x30], rsi
jne 0x140096990
mov rax, qword [0x1401542a8]
shl rax, 1
test rax, rax
jne 0x1400969b6
mov dword [rsp + 0x54], 0
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x158], r8
movzx eax, byte [rsi + 0x11]
test al, al
jne 0x140096cf8
cmp qword [rsi + 0x70], 0
mov qword [rsp + 0x48], r13
je 0x140095d13
mov rax, qword [rsi + 0xd8]
mov qword [rsp + 0x38], rax
mov eax, dword [rsi + 0xe0]
mov dword [rsp + 0x44], eax
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rsi + 0x80]
mov r8, r13
call fcn.1400807c0
mov rbp, qword [rsi + 0x58]
mov rbx, qword [rsi + 0x60]
mov r14, rbx
and r14, rax
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea r12, [rbp - 0x48]
xor r15d, r15d
pcmpeqd xmm7, xmm7
movdqu xmm8, xmmword [rbp + r14]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb esi, xmm0
test esi, esi
je 0x140095cf0
tzcnt eax, esi
add rax, r14
and rax, rbx
neg rax
mov rcx, r13
lea r13, [rax + rax*8]
lea rdx, [r12 + r13*8]
call fcn.140080d40
test al, al
jne 0x140095d20
lea eax, [rsi - 1]
and ax, si
mov esi, eax
mov r13, qword [rsp + 0x48]
jne 0x140095cc0
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
mov rsi, qword [rsp + 0x30]
jne 0x140095d13
add r14, r15
add r14, 0x10
add r15, 0x10
and r14, rbx
jmp 0x140095ca8
mov dword [rsp + 0x1e0], 0x3b9aca00
jmp 0x140095d70
mov rax, qword [rbp + r13*8 - 8]
test rax, rax
mov rsi, qword [rsp + 0x30]
mov r12d, dword [rsp + 0x44]
je 0x140095d60
mov r15, rbp
lea rbx, [r13*8]
add rbx, rbp
dec rax
mov qword [rbx - 8], rax
mov rcx, qword [rbx - 0x10]
lea rdx, [rax + rax*8]
mov eax, dword [rcx + rdx*8 + 0x40]
cmp eax, 0x3b9aca00
jne 0x140096433
mov dword [rsp + 0x1e0], 0x3b9aca00
mov r13, qword [rsp + 0x48]
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmm1, xmmword [rsp + 0x80]
movdqu xmm2, xmmword [rsp + 0x90]
movdqu xmm3, xmmword [rsp + 0xa0]
movdqa xmmword [rsp + 0x2c0], xmm3
movdqa xmmword [rsp + 0x2b0], xmm2
movdqa xmmword [rsp + 0x2a0], xmm1
movdqa xmmword [rsp + 0x290], xmm0
mov ebp, 0x3b9aca00
mov dword [rsp + 0x44], 0
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rsi + 0x80]
mov r8, r13
call fcn.1400807c0
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 edi, edi
pcmpeqd xmm7, xmm7
movdqu xmm8, xmmword [rbx + r12]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb esi, xmm0
test esi, esi
je 0x140095e59
mov dword [rsp + 0x38], ebp
tzcnt ebp, esi
add rbp, r12
and rbp, r14
mov rax, rbp
neg rax
lea r15, [rax + rax*8]
lea rdx, [r15*8]
add rdx, r13
mov rcx, qword [rsp + 0x48]
call fcn.140080d40
test al, al
jne 0x140095e7b
lea eax, [rsi - 1]
and ax, si
mov esi, eax
mov ebp, dword [rsp + 0x38]
jne 0x140095e1e
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
jne 0x140095f61
add r12, rdi
add r12, 0x10
add rdi, 0x10
and r12, r14
jmp 0x140095e03
shl rbp, 3
lea rcx, [rbp*8]
add rcx, rbp
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 0x140095ed1
bsr r9w, dx
xor r9d, 0xf
jmp 0x140095ed6
mov r9w, 0x10
mov r10, qword [rsp + 0x30]
mov ebp, dword [rsp + 0x38]
lea rdx, [rbx + r15*8]
or r8d, 0x10000
tzcnt r8d, r8d
add r9d, r8d
mov r8b, 0x80
cmp r9w, 0xf
ja 0x140095f03
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
xor eax, eax
cmp rax, qword [rsp + 0xa0]
jno 0x14009600c
mov r13, qword [rsp + 0x48]
cmp ebp, 0x3b9aca00
sete sil
jne 0x1400960c3
cmp qword [r13 + 0x38], 0
mov r14, qword [rsp + 0x58]
jne 0x1400969fb
movzx eax, byte [0x1401542b0]
mov edx, 0x88
xor ecx, ecx
call fcn.1400de8b0
test rax, rax
je 0x140096d33
mov r15, rax
mov dword [rsp + 0xf8], 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 0x140096d42
movzx esi, byte [r13]
test esi, esi
je 0x1400960cd
cmp esi, 1
jne 0x1400960cf
movzx eax, byte [r13 + 1]
jmp 0x140096128
mov rbx, qword [rdx - 0x18]
mov r14, qword [rdx - 0x10]
mov rsi, qword [rdx - 8]
cmp byte [rsp + 0x70], 2
jb 0x14009604e
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 qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
xor edx, edx
mov r8, r12
call qword [sym.imp.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]
mov rax, rbx
neg rax
mov r13, qword [rsp + 0x48]
jo 0x140095f66
test rsi, rsi
je 0x1400960a1
mov r12, r14
nop word [rax + rax]
mov rcx, r12
call fcn.140089b50
add r12, 0x48
dec rsi
jne 0x140096090
test rbx, rbx
je 0x140095f66
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
xor edx, edx
mov r8, r14
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x140095f66
mov r14, qword [rsp + 0x58]
jmp 0x1400969fb
jmp 0x140096128
mov rbx, qword [r13 + 8]
movzx eax, byte [0x1401542b0]
mov edx, 0x20
xor ecx, ecx
call fcn.1400de8b0
test rax, rax
je 0x140096d74
mov r14, rax
lea rdx, [rbx + 0x18]
mov rax, qword [rbx]
mov r8, qword [rbx + 8]
mov r9, qword [rbx + 0x10]
lea rcx, [rsp + 0x100]
call qword [rax]
movdqu xmm0, xmmword [rsp + 0x100]
movdqu xmm1, xmmword [rsp + 0x110]
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.1400807c0
mov rdx, rax
shr rdx, 0x39
mov rcx, qword [rsi + 0x88]
mov r8, qword [rsi + 0x90]
mov qword [rsp + 0x38], r8
and r8, rax
mov qword [rsp + 0x150], 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 + 0x68], rdx
mov r13, qword [rsp + 0x88]
mov qword [rsp + 0x148], 0
mov r14, qword [rsp + 0x90]
pcmpeqd xmm1, xmm1
mov dword [rsp + 0xfc], r9d
movdqu xmm2, xmmword [rcx + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r11d, xmm3
test r11d, r11d
je 0x140096339
tzcnt edx, r11d
add rdx, r8
and rdx, qword [rsp + 0x38]
neg rdx
lea rdx, [rdx + rdx*4]
shl rdx, 4
lea r12, [rcx + rdx]
movzx edx, byte [rcx + rdx - 0x50]
cmp edx, 1
je 0x1400962ad
cmp edx, 2
jne 0x140096c85
cmp r9d, 2
jne 0x140096312
mov rdx, qword [r12 - 0x48]
mov rsi, qword [rdx + 0x10]
mov r9, qword [rsp + 0x68]
cmp rsi, qword [r9 + 0x10]
jne 0x14009631b
mov r9, qword [rdx + 8]
mov rdx, qword [rsp + 0x68]
mov rbx, qword [rdx + 8]
xor edx, edx
nop word [rax + rax]
cmp rsi, rdx
je 0x1400962bf
movzx ebp, byte [r9 + rdx]
lea r10d, [rbp - 0x41]
cmp r10b, 0x1a
setb r10b
shl r10b, 5
or r10b, bpl
movzx ebp, byte [rbx + rdx]
lea edi, [rbp - 0x41]
cmp dil, 0x1a
setb dil
shl dil, 5
or dil, bpl
inc rdx
cmp r10b, dil
je 0x140096270
jmp 0x14009631b
cmp r9d, 1
jne 0x140096312
movzx edx, byte [rsp + 0x2f]
cmp byte [r12 - 0x4f], dl
jne 0x14009631b
cmp qword [r12 - 0x30], r14
jne 0x14009631b
mov r9, qword [r12 - 0x38]
xor edx, edx
nop dword [rax]
cmp r14, rdx
je 0x14009636a
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 0x1400962d0
jmp 0x14009631b
test r9d, r9d
je 0x140096c85
lea edx, [r11 - 1]
and dx, r11w
mov r11d, edx
mov rsi, qword [rsp + 0x30]
mov r9d, dword [rsp + 0xfc]
jne 0x14009620a
pcmpeqb xmm2, xmm1
pmovmskb edx, xmm2
test edx, edx
jne 0x1400963c4
mov rdx, qword [rsp + 0x148]
add r8, rdx
add r8, 0x10
add rdx, 0x10
mov qword [rsp + 0x148], rdx
and r8, qword [rsp + 0x38]
jmp 0x1400961ee
cmp byte [rsp + 0x2e], 2
jb 0x14009639c
mov rsi, qword [rsp + 0x68]
lea rcx, [rsi + 0x18]
mov rax, qword [rsi]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
call qword [rax + 0x20]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
xor edx, edx
mov r8, rsi
call qword [sym.imp.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 + 0x48]
mov r14, qword [rsp + 0x58]
jmp 0x1400967f2
cmp qword [rsi + 0x98], 0
movzx r11d, byte [rsp + 0x2e]
je 0x140096cb8
lea r8, [rsp + 0x71]
mov ecx, dword [r8]
mov edx, dword [r8 + 3]
mov dword [rsp + 0xeb], edx
mov dword [rsp + 0xe8], ecx
mov rcx, qword [rsp + 0x80]
movdqu xmm0, xmmword [r8 + 0x17]
movdqa xmmword [rsp + 0x270], xmm0
mov rdx, qword [r8 + 0x27]
mov qword [rsp + 0x280], rdx
cmp r11b, 3
mov r13, qword [rsp + 0x48]
mov r14, qword [rsp + 0x58]
jne 0x1400966b1
mov r12, qword [rsp + 0x68]
jmp 0x1400967f2
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 + 0x120], xmm2
movdqa xmmword [rsp + 0x130], xmm3
movdqa xmmword [rsp + 0x110], xmm1
movdqa xmmword [rsp + 0x100], xmm0
mov dword [rsp + 0x140], eax
mov dword [rsp + 0x144], edx
mov rax, qword [rsp + 0x128]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x140096540
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x110], 2
cmove edx, ecx
cmp dl, 1
jne 0x140096540
mov r14, qword [rsp + 0x138]
mov ebp, dword [rsp + 0x140]
cmp r12d, 0x3b9aca00
je 0x140096685
call fcn.1400de700
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x78], edx
lea rcx, [rsp + 0x70]
mov rdx, r14
mov r8d, ebp
call fcn.1400dba10
xor ecx, ecx
cmp edx, 0x3b9aca00
cmove edx, ecx
cmovne rcx, rax
xor eax, eax
cmp rcx, qword [rsp + 0x38]
setne al
mov ecx, 0xff
cmovb eax, ecx
xor r8d, r8d
cmp edx, r12d
setne r8b
cmovb r8d, ecx
test al, al
cmovne r8d, eax
cmp r8b, 1
jne 0x140096685
nop
lea rcx, [rsp + 0x100]
call fcn.140089b50
mov rax, qword [rbx - 8]
test rax, rax
je 0x140095d60
dec rax
mov qword [rbx - 8], rax
mov rcx, qword [rbx - 0x10]
lea rdx, [rax + rax*8]
mov eax, dword [rcx + rdx*8 + 0x40]
cmp eax, 0x3b9aca00
je 0x140095d60
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 + 0x120], xmm2
movdqa xmmword [rsp + 0x130], xmm3
movdqa xmmword [rsp + 0x110], xmm1
movdqa xmmword [rsp + 0x100], xmm0
mov dword [rsp + 0x140], eax
mov dword [rsp + 0x144], edx
mov rax, qword [rsp + 0x128]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x140096540
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x10]
xor ecx, ecx
cmp rax, 3
setne cl
xor edx, edx
cmp rax, 1
sete dl
cmp byte [rsp + 0x110], 2
cmove edx, ecx
cmp dl, 1
jne 0x140096540
mov r14, qword [rsp + 0x138]
mov ebp, dword [rsp + 0x140]
cmp r12d, 0x3b9aca00
je 0x140096685
call fcn.1400de700
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x78], edx
lea rcx, [rsp + 0x70]
mov rdx, r14
mov r8d, ebp
call fcn.1400dba10
cmp edx, 0x3b9aca00
mov ecx, 0
cmove edx, ecx
mov ecx, 0
cmovne rcx, rax
xor eax, eax
cmp rcx, qword [rsp + 0x38]
setne al
mov r8d, 0xff
cmovb eax, r8d
xor ecx, ecx
cmp edx, r12d
setne cl
cmovb ecx, r8d
test al, al
cmovne ecx, eax
cmp cl, 1
je 0x140096540
lea rdi, [rsp + 0x70]
lea rdx, [rsp + 0x100]
mov rcx, rdi
call fcn.140073230
cmp byte [rsp + 0xd9], 2
jne 0x140096b39
mov rsi, qword [rbx - 8]
jmp 0x140096bbf
mov edx, dword [rsp + 0xe8]
mov r8d, dword [rsp + 0xeb]
mov dword [rsp + 0xf0], edx
mov dword [rsp + 0xf3], r8d
movaps xmm0, xmmword [rsp + 0x270]
movaps xmmword [rsp + 0x100], xmm0
mov rdx, qword [rsp + 0x280]
mov qword [rsp + 0x110], rdx
mov rdx, qword [rsi + 0x88]
mov r8, qword [rsi + 0x90]
and rax, r8
movdqu xmm0, xmmword [rdx + rax]
pmovmskb r9d, xmm0
test r9d, r9d
jne 0x140096739
mov r10d, 0x10
nop word cs:[rax + rax]
add rax, r10
and rax, r8
movdqu xmm0, xmmword [rdx + rax]
pmovmskb r9d, xmm0
add r10, 0x10
test r9d, r9d
je 0x140096720
tzcnt r9d, r9d
add r9, rax
and r9, r8
movzx eax, byte [rdx + r9]
test al, al
jns 0x140096ce1
lea r10, [r9 - 0x10]
and r10, r8
mov r8, qword [rsp + 0x150]
mov byte [rdx + r9], r8b
mov byte [rdx + r10 + 0x10], r8b
neg r9
lea r8, [r9 + r9*4]
and al, 1
movzx eax, al
sub qword [rsi + 0x98], rax
shl r8, 4
lea r12, [rdx + r8]
mov byte [rdx + r8 - 0x50], r11b
mov eax, dword [rsp + 0xf0]
mov r9d, dword [rsp + 0xf3]
mov dword [rdx + r8 - 0x4f], eax
mov dword [rdx + r8 - 0x4c], r9d
mov rax, qword [rsp + 0x68]
mov qword [rdx + r8 - 0x48], rax
mov qword [rdx + r8 - 0x40], rcx
movdqa xmm0, xmmword [rsp + 0x100]
movdqu xmmword [rdx + r8 - 0x38], xmm0
mov rax, qword [rsp + 0x110]
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 [rsi + 0xa0]
mov rcx, qword [r12 - 0x20]
mov rax, qword [r12 - 8]
cmp rax, rcx
jne 0x140096815
lea rcx, [r12 - 0x20]
call fcn.140060d30
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
jne 0x1400968a8
mov rax, qword [rsp + 0x158]
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 0x14009686d
mov rcx, rdx
call qword [rax + 0x18]
jmp 0x1400968a8
mov r8, qword [r15 + 0x50]
test r8, r8
je 0x14009688a
mov rcx, qword [r15 + 0x58]
mov rsi, rax
mov rbx, rdx
call qword [r8 + 0x18]
mov rdx, rbx
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 0x140096b1f
mov al, 1
xchg byte [r15 + 0x48], al
test al, al
jne 0x140096d4a
movzx eax, byte [r15 + 0x41]
mov byte [r15 + 0x41], 2
cmp al, 2
je 0x140096d44
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 0x140096d52
mov rsi, qword [r13 + 0x38]
test rsi, rsi
je 0x1400969e9
mov bl, 1
mov al, 1
xchg byte [rsi + 0x80], al
mov al, 1
xchg byte [rsi + 0x60], al
test al, al
jne 0x14009696a
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 0x14009696a
call qword [rax + 0x18]
xchg byte [rsi + 0x78], bl
test bl, bl
jne 0x1400969d6
mov rax, qword [rsi + 0x68]
mov rcx, qword [rsi + 0x70]
mov qword [rsi + 0x68], 0
test rax, rax
je 0x1400969d1
xor edx, edx
xchg byte [rsi + 0x78], dl
call qword [rax + 8]
jmp 0x1400969d6
mov rcx, rbx
mov rsi, r8
call fcn.1400fccc0
mov r8, rsi
mov rsi, qword [rsp + 0x30]
mov rax, qword [0x1401542a8]
shl rax, 1
test rax, rax
je 0x140095c1f
mov rsi, r8
call fcn.1400fcd80
mov r8, rsi
mov rsi, qword [rsp + 0x30]
xor al, 1
mov dword [rsp + 0x54], eax
jmp 0x140095c27
xor eax, eax
xchg byte [rsi + 0x78], al
mov rax, qword [r13 + 0x38]
lock dec qword [rax]
jne 0x1400969e9
mov rcx, qword [r13 + 0x38]
call fcn.140060e70
mov qword [r13 + 0x38], r15
mov ebp, dword [rsp + 0x1e0]
mov esi, dword [rsp + 0xf8]
cmp ebp, 0x3b9aca00
sete al
mov ecx, dword [rsp + 0x44]
or cl, al
jne 0x140096a1c
lea rcx, [rsp + 0x1a0]
call fcn.140089b50
mov sil, 1
cmp byte [rsp + 0x54], 0
jne 0x140096a36
mov rax, qword [0x1401542a8]
shl rax, 1
test rax, rax
jne 0x140096c9d
xor eax, eax
xchg byte [r14], al
cmp al, 2
je 0x140096c6e
test sil, sil
jne 0x140096a6e
mov rdx, qword [r13 + 0x30]
lea rcx, [rsp + 0x1f8]
lea r9, [rsp + 0x290]
mov r8, r13
call fcn.140096d90
cmp byte [rsp + 0x268], 2
jne 0x140096a8e
cmp qword [r13 + 0x30], 0
je 0x140096a80
mov rax, qword [rsp + 0x60]
mov byte [rax + 0x70], 3
jmp 0x140096af2
mov rax, qword [rsp + 0x60]
mov byte [rax], 0
mov byte [rax + 0x70], 2
jmp 0x140096af2
mov rax, qword [rsp + 0x268]
mov rcx, qword [rsp + 0x60]
mov qword [rcx + 0x70], rax
movups xmm0, xmmword [rsp + 0x258]
movups xmmword [rcx + 0x60], xmm0
movups xmm0, xmmword [rsp + 0x248]
movups xmmword [rcx + 0x50], xmm0
movups xmm0, xmmword [rsp + 0x238]
movups xmmword [rcx + 0x40], xmm0
movups xmm0, xmmword [rsp + 0x1f8]
movups xmm1, xmmword [rsp + 0x208]
movups xmm2, xmmword [rsp + 0x218]
movups xmm3, xmmword [rsp + 0x228]
movups xmmword [rcx + 0x30], xmm3
movups xmmword [rcx + 0x20], xmm2
movups xmmword [rcx + 0x10], xmm1
movups xmmword [rcx], 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 byte [rsp + 0xa1], 3
mov rsi, qword [r13 + 0x38]
test rsi, rsi
jne 0x14009693a
jmp 0x1400969e9
call fcn.1400de700
mov r12, rax
mov r8d, edx
mov rsi, qword [rbx - 8]
cmp rsi, qword [rbx - 0x18]
jne 0x140096b68
lea rcx, [r15 + r13*8]
add rcx, 0xffffffffffffffe8
lea rdx, [0x14013af80]
mov edi, r8d
call fcn.140016ab0
mov r8d, edi
lea rdi, [rsp + 0xa8]
mov rax, qword [rbx - 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], r12
mov dword [rax + rcx*8 + 0x40], r8d
inc rsi
mov qword [rbx - 8], rsi
mov rax, qword [rdi + 0x30]
mov qword [rsp + 0x1d0], rax
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmm2, xmmword [rdi + 0x20]
movaps xmmword [rsp + 0x1c0], xmm2
movaps xmmword [rsp + 0x1b0], xmm1
movaps xmmword [rsp + 0x1a0], xmm0
mov qword [rsp + 0x1d8], r14
mov dword [rsp + 0x1e0], ebp
movaps xmmword [rsp + 0x290], xmm0
movaps xmmword [rsp + 0x2a0], xmm1
movaps xmmword [rsp + 0x2b0], xmm2
test rsi, rsi
sete byte [rsp + 0x1e8]
mov rax, qword [rsp + 0x1d0]
mov qword [rsp + 0x2c0], rax
mov rax, qword [rsp + 0x1d8]
mov qword [rsp + 0x2c8], rax
mov r13, qword [rsp + 0x48]
je 0x140096c5e
xor esi, esi
mov r14, qword [rsp + 0x58]
cmp byte [rsp + 0x54], 0
je 0x140096a23
jmp 0x140096a36
mov al, 1
mov dword [rsp + 0x44], eax
mov rsi, qword [rsp + 0x30]
jmp 0x140095dc2
mov rcx, r14
call qword [sym.imp.api_ms_win_core_synch_l1_2_0.dll_WakeByAddressSingle]
test sil, sil
je 0x140096a48
jmp 0x140096a6e
lea rcx, str.internal_error:_entered_unreachable_codemark_pending_called_when_the_timer_entry_is_in_an_invalid_state
lea r8, [0x140115078]
mov edx, 0x28
call fcn.1400f8090
call fcn.1400fcd80
test al, al
jne 0x140096a36
mov rax, qword [rsp + 0x30]
mov byte [rax + 0x11], 1
jmp 0x140096a36
lea rcx, [rsi + 0x88]
lea rdx, [rsi + 0xa8]
mov rsi, rax
call fcn.1400fae50
movzx r11d, byte [rsp + 0x2e]
mov rax, rsi
mov rsi, qword [rsp + 0x30]
jmp 0x1400963d8
movdqa xmm0, xmmword [rdx]
pmovmskb eax, xmm0
tzcnt r9d, eax
movzx eax, byte [rdx + r9]
jmp 0x140096751
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x70], rax
mov eax, dword [rsp + 0x54]
mov byte [rsp + 0x78], al
lea rax, [0x14013ae80]
mov qword [rsp + 0x20], rax
lea rcx, str.called__Result::unwrap____on_an__Err__valueassertion_failed:_self.is_char_boundary_idx_
lea r9, [0x14013b180]
lea r8, [rsp + 0x70]
mov edx, 0x2b
call fcn.1400f8310
mov ecx, 8
mov edx, 0x88
call fcn.1400f7b90
ud2
xor eax, eax
xchg byte [r15 + 0x48], al
mov byte [rsp + 0xa1], 2
lea rcx, [rsp + 0x70]
call fcn.140096ef0
lea rcx, str.assertion_failed:_Pin::new_mut_rx_.poll_cx_.is_pending__
lea r8, [0x14013aef0]
mov edx, 0x39
call fcn.1400f8090
mov ecx, 8
mov edx, 0x20
call fcn.1400f7b90
int3