Function at 0x14009a558
Capabilities:
Check for time delay via gettickcount

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xc0]
sub rsp, 0x1c0
mov rax, qword [0x1401f5698]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov qword [rsp + 0x58], r8
mov r14d, edx
mov rsi, rcx
mov dword [rsp + 0x48], r9d
mov bl, 1
mov byte [rsp + 0x40], bl
lea r9, [rbp + 0x128]
lea r8, [rbp + 0x120]
lea rdx, [rsp + 0x48]
call fcn.14009b7f0
xor r12d, r12d
test al, al
jne 0x14009a5d7
test rsi, rsi
je 0x14009a5cf
cmp dword [rsi + 0x1b50], r12d
jne 0x14009a7a3
mov bl, r12b
jmp 0x14009a7a3
mov ebx, dword [rbp + 0x128]
mov dword [rsi + 0x1a5e], ebx
mov eax, dword [rsi + 0x1b50]
test eax, eax
setne r15b
test eax, eax
jne 0x14009a61e
cmp dword [rsi + 0x1b6c], r12d
jne 0x14009a613
lea eax, [r14 - 0x201]
test eax, 0xfffffff8
jne 0x14009a61e
cmp r14d, 0x206
je 0x14009a61e
mov rcx, rsi
call fcn.14009ef5c
mov r15b, al
mov dl, 1
mov rcx, qword [0x14022a9e0]
call fcn.1400266e8
mov edi, eax
mov dword [rsp + 0x78], eax
xor edx, edx
mov rcx, qword [0x14022a9e0]
call fcn.1400266e8
mov r12d, eax
mov r13d, dword [rbp + 0x120]
test r15b, r15b
je 0x14009a86e
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x1100a], 0
je 0x14009a86e
mov rax, qword [rsi + 0x58]
cmp dword [rax + 0x26f78], 0
jne 0x14009a86e
cmp dword [rsi + 0x1b50], 0
jne 0x14009a86e
test edi, edi
jne 0x14009a86e
mov edi, 0x201
cmp r14d, edi
jne 0x14009a6c5
mov edx, r13d
mov ecx, dword [rsp + 0x48]
call fcn.14011a564
mov qword [rsi + 0x1b74], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsi + 0x1b70], eax
mov dword [rsi + 0x1b6c], 1
jmp 0x14009a8c3
cmp dword [rsi + 0x1b6c], 0
je 0x14009a8a9
mov ecx, 1
call fcn.140116c84
test al, al
jne 0x14009a6ef
mov dword [rsi + 0x1b6c], 2
jmp 0x14009a8a9
mov rcx, qword [0x14022ab90]
call fcn.140051030
mov r15d, eax
mov dword [rbp - 0x78], eax
mov rcx, qword [0x14022ab90]
call fcn.140050dec
mov dword [rbp - 0x74], eax
cmp r15d, eax
cmovl r15d, eax
mov eax, dword [rsp + 0x48]
sub eax, dword [rsi + 0x1b74]
mov ecx, r13d
sub ecx, dword [rsi + 0x1b78]
cmp r14d, 0x200
jne 0x14009a7e1
cmp dword [rsi + 0x1b6c], 1
jne 0x14009a9b4
cdq
xor eax, edx
sub eax, edx
cmp eax, r15d
jl 0x14009a753
mov ebx, r14d
jmp 0x14009a768
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, r15d
jl 0x14009a9b4
mov ebx, 0x100
mov edx, ebx
mov rcx, qword [0x14022a9e0]
call fcn.140012fd0
or dword [rsi + 0x1b50], ebx
mov eax, dword [rsi + 0x1b78]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsi + 0x1b74]
mov r8, qword [rsp + 0x58]
mov edx, edi
mov rcx, rsi
call fcn.14009b134
xor r12d, r12d
mov bl, byte [rsp + 0x40]
cmp r14d, dword [rsi + 0x1b7c]
jne 0x14009a7b5
mov dword [rsi + 0x1b7c], r12d
mov bl, 1
mov al, bl
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.14012bda0
mov rbx, qword [rsp + 0x210]
add rsp, 0x1c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov r10d, 0x203
cmp r14d, r10d
jne 0x14009a8a9
cmp dword [rsi + 0x1b6c], 2
jne 0x14009a9c6
cdq
xor eax, edx
sub eax, edx
cmp eax, r15d
jge 0x14009a9c6
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, r15d
jge 0x14009a9c6
test dword [rsi + 0x1b50], 0x300
jne 0x14009a831
lea ecx, [r10 + 1]
mov dword [rsi + 0x1b50], ecx
mov dword [rsp + 0x20], r13d
mov r9d, dword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
mov edx, r10d
mov rcx, rsi
call fcn.14009b134
mov eax, dword [rsi + 0x1b50]
xor r12d, r12d
test eax, eax
je 0x14009a862
bts eax, 0xa
mov dword [rsi + 0x1b50], eax
mov dword [rsi + 0x1b6c], r12d
jmp 0x14009a79f
cmp dword [rsi + 0x1b6c], 0
je 0x14009a896
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
sub edi, dword [rsi + 0x1b70]
call qword [sym.imp.USER32.dll_GetDoubleClickTime]
cmp edi, eax
ja 0x14009a896
and dword [rsi + 0x1b6c], 0
test r15b, r15b
je 0x14009ab1b
mov edi, 0x201
cmp r14d, edi
je 0x14009a8c3
cmp r14d, 0x202
jne 0x14009a9ab
test byte [rsi + 0x1b50], 8
jne 0x14009a9c6
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x1100a], 0
je 0x14009a985
cmp dword [rsi + 0x1b50], 0
je 0x14009a985
mov rcx, rsi
call fcn.14009edc4
test al, al
jne 0x14009a985
mov r8d, r13d
mov edx, dword [rsp + 0x48]
mov rcx, rsi
call fcn.14009ee14
mov r15b, al
test al, al
jne 0x14009a920
and qword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call fcn.1400963f8
cmp r14d, edi
jne 0x14009a955
mov edx, r13d
mov ecx, dword [rsp + 0x48]
call fcn.14011a564
mov qword [rsi + 0x1b74], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsi + 0x1b70], eax
mov dword [rsi + 0x1b6c], 1
mov ecx, 0x202
jmp 0x14009a95f
mov ecx, 0x202
cmp r14d, ecx
je 0x14009a96e
test r15b, r15b
jne 0x14009a985
cmp r14d, edi
jne 0x14009a9ab
test r12d, r12d
jne 0x14009a98a
xor r12d, r12d
mov eax, r12d
cmp r14d, edi
cmove eax, ecx
mov dword [rsi + 0x1b7c], eax
jmp 0x14009a79f
cmp r14d, edi
jne 0x14009a9ab
mov dword [rsp + 0x20], r13d
mov r9d, dword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
mov edx, edi
mov rcx, rsi
call fcn.14009b134
test al, al
jne 0x14009a79c
cmp r14d, 0x200
jne 0x14009a9c6
cmp dword [rsi + 0x1b50], 0
jne 0x14009a9c6
test r12d, r12d
jne 0x14009a79c
mov rax, qword [0x14022ab50]
mov cl, byte [rax + 0x11028]
mov edi, 0x7d9
cmp cl, 2
je 0x14009aa66
cmp cl, 3
jne 0x14009a9f2
xor r12d, r12d
cmp dword [rsi + 0x1b50], r12d
je 0x14009aa69
mov rax, qword [0x14022ab50]
mov cl, byte [rax + 0x11029]
xor r12d, r12d
cmp cl, 2
je 0x14009aa1d
cmp cl, 3
jne 0x14009ab1e
cmp dword [rsi + 0x1b50], r12d
jne 0x14009ab5b
lea eax, [r14 - 0x207]
cmp eax, 1
ja 0x14009ab1e
xor edx, edx
mov rcx, qword [rsi + 0x58]
call fcn.1400b92c4
test al, al
sete r8b
mov edx, edi
mov rcx, qword [0x14022ab50]
call fcn.1400767e4
test al, al
je 0x14009ab1e
cmp r14d, 0x208
jne 0x14009a79f
jmp 0x14009ab00
xor r12d, r12d
lea eax, [r14 - 0x204]
cmp eax, 1
ja 0x14009a9f2
xor edx, edx
mov rcx, qword [rsi + 0x58]
call fcn.1400b92c4
test al, al
jne 0x14009aa98
mov rax, qword [rsi + 0x58]
cmp dword [rax + 0x26f78], r12d
mov r8b, 1
je 0x14009aa9b
mov r8b, r12b
mov edx, edi
mov rcx, qword [0x14022ab50]
call fcn.1400767e4
test al, al
je 0x14009a9f2
mov eax, 0x205
cmp r14d, eax
jne 0x14009a79f
cmp dword [rsi + 0x1b50], r12d
je 0x14009aaeb
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x1100a], r12b
je 0x14009aaeb
mov r8b, 1
mov dl, r8b
mov rcx, rsi
call fcn.140095008
jmp 0x14009a79f
mov qword [rsp + 0x20], r12
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call fcn.1400963f8
mov byte [rsp + 0x20], r12b
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsi + 0x58]
call fcn.1400acb58
jmp 0x14009a79f
xor r12d, r12d
cmp dword [rsi + 0x1b50], r12d
jne 0x14009ab5b
xor edx, edx
mov rcx, qword [rsi + 0x58]
call fcn.1400a8ec4
test al, al
je 0x14009ab5b
lea eax, [r14 - 0x200]
cmp eax, 3
ja 0x14009ab5b
mov r9b, 1
mov r8d, ebx
mov edx, r14d
mov rcx, rsi
call fcn.14009bf68
test al, al
jne 0x14009a79f
mov rcx, qword [rsi + 0x58]
call fcn.1400b92e0
mov r15b, al
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x10ffd], r12b
jne 0x14009ab87
mov rcx, qword [rsi + 0x58]
call fcn.1400b9c74
test al, al
mov dil, 1
jne 0x14009ab8a
mov dil, r12b
mov cl, r12b
lea eax, [r14 - 0x20a]
mov edx, 0xfffffffb
test edx, eax
jne 0x14009abd0
cmp byte [rsi + 0x1c18], r12b
je 0x14009ac44
cmp dword [rsi], 1
jne 0x14009abd0
test r15b, r15b
je 0x14009abd0
test dil, dil
je 0x14009abd0
mov rax, qword [rsi + 0x58]
mov rcx, qword [rax]
add rcx, 0x18
call fcn.1400fd4bc
mov cl, al
mov edx, 0xfffffffb
cmp byte [rsi + 0x1c18], r12b
je 0x14009ac44
cmp dword [rsi], 1
jne 0x14009ac00
test r15b, r15b
je 0x14009ac00
test dil, dil
je 0x14009ac00
test cl, cl
jne 0x14009ac00
lea eax, [r14 - 0x20a]
test edx, eax
jne 0x14009ac44
cmp dword [rsi + 0x1b50], r12d
je 0x14009ac6c
lea eax, [r14 - 0x20a]
test edx, eax
je 0x14009a79f
cmp dword [rsi + 0x1b50], r12d
jne 0x14009ac4d
mov rcx, qword [rsi + 0x58]
cmp rsi, qword [rcx + 0x4250]
jne 0x14009ac39
xor edx, edx
call fcn.1400b92c4
test al, al
je 0x14009ac39
cmp dword [rsi + 0x1b84], 0x28
jae 0x14009ac44
cmp dword [rsi], 1
setne bl
jmp 0x14009a7a3
cmp dword [rsi + 0x1b50], r12d
je 0x14009ac6c
mov dword [rsp + 0x20], r13d
mov r9d, dword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
mov edx, r14d
mov rcx, rsi
call fcn.14009b134
jmp 0x14009a79f
cmp dword [rsi], 1
jne 0x14009acac
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x11071], r12b
je 0x14009acac
mov ecx, 0x204
cmp r14d, ecx
jne 0x14009acdb
movsx ecx, word [rsi + 0x1b9a]
dec ecx
movsx eax, word [rbp + 0x12a]
cmp eax, ecx
jne 0x14009acac
mov rcx, qword [rsi + 0x58]
call fcn.1400b935c
test al, al
jne 0x14009ad00
cmp byte [rsi + 0x1c35], r12b
je 0x14009acbc
mov byte [rsi + 0x1c35], r12b
cmp dword [rsp + 0x78], r12d
je 0x14009ac39
cmp r14d, 0x200
jne 0x14009ac39
mov bl, 1
jmp 0x14009a7a3
mov eax, 0x205
cmp r14d, 0x200
je 0x14009acee
cmp r14d, eax
jne 0x14009acac
cmp byte [rsi + 0x1c35], r12b
je 0x14009acbc
cmp r14d, ecx
jne 0x14009af66
lea rcx, [rbp - 0x70]
call fcn.14011a6a4
nop
mov qword [rbp - 0x80], r12
mov dword [rsp + 0x50], r12d
mov byte [rsp + 0x20], r12b
mov r9b, 1
mov r8d, ebx
lea rdx, [rsp + 0x58]
mov rcx, rsi
call fcn.140094734
lea r13, vtable.CRefGuard_class_CRConData_.0
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x68], r12
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x70], eax
lea rax, vtable.CRConDataGuard.0
mov qword [rsp + 0x60], rax
movsx r15d, word [rsp + 0x5a]
lea rax, [rbp - 0x70]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x80]
mov r8d, r15d
lea rdx, [rsp + 0x60]
mov rcx, rsi
call fcn.140097cfc
test al, al
je 0x14009ae60
mov r9, qword [rbp - 0x80]
cmp word [r9], 0x31
jne 0x14009ae60
mov edx, r12d
mov r8d, 2
cmp dword [rsp + 0x50], 1
jle 0x14009ae60
mov r10d, r12d
lea r11d, [r8 - 0xa]
add r9, 4
lea ebx, [r8 + 0x2e]
lea edi, [rbx - 0x27]
mov eax, dword [rsp + 0x58]
movzx ecx, word [r9 - 2]
sub cx, bx
cmp cx, di
ja 0x14009ae4b
cmp r8d, edi
jg 0x14009ae04
movzx ecx, word [r9 - 2]
sub ecx, ebx
cmp ecx, r8d
jne 0x14009ae4b
cmp word [r9 - 4], 0x20
jne 0x14009ae4b
movzx ecx, word [r9]
sub cx, bx
cmp cx, di
jbe 0x14009ae4b
movsx ecx, ax
cmp ecx, r10d
jg 0x14009ae42
cmp ecx, edx
jge 0x14009aea1
jmp 0x14009ae42
cmp r11d, 2
jg 0x14009aeab
cmp word [r9 - 2], 0x31
jne 0x14009ae4b
movzx ecx, word [r9]
sub ecx, ebx
cmp ecx, r11d
jne 0x14009ae4b
cmp word [r9 - 4], 0x20
jne 0x14009ae4b
movzx ecx, word [r9 + 2]
sub cx, bx
cmp cx, di
jbe 0x14009ae4b
movsx ecx, ax
cmp ecx, r10d
jg 0x14009ae42
cmp ecx, edx
jge 0x14009ae9f
inc r8d
inc r11d
mov edx, r10d
inc r10d
add r9, 2
lea ecx, [r10 + 1]
cmp ecx, dword [rsp + 0x50]
jl 0x14009adc0
mov qword [rsp + 0x60], r13
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x14009af58
mov eax, dword [rcx + 8]
mov edx, 0x7fffffff
cmp eax, edx
je 0x14009af53
lock dec dword [rcx + 8]
mov eax, dword [rcx + 8]
test eax, eax
jg 0x14009af50
mov dword [rcx + 8], edx
mov rax, qword [rcx]
call qword [rax]
jmp 0x14009af53
inc edx
lea edi, [r8 + 0x6e]
test edi, edi
je 0x14009ae60
jmp 0x14009aeb2
inc edx
mov edi, 0x7b
mov byte [rsi + 0x1c35], 1
mov dword [rsi + 0x1c36], eax
lea rbx, [rsi + 0x1c3c]
mov r8d, r12d
cmp edi, 0x70
setne r8b
inc edx
add r8d, edx
mov rcx, qword [rsi + 0x58]
mov r9d, r15d
lea rdx, [rsp + 0x78]
mov rcx, qword [rcx]
call fcn.14010ba38
mov rcx, qword [rax]
mov qword [rbx], rcx
mov rcx, qword [rsi + 0x58]
call fcn.1400a7c44
mov rcx, rax
mov rdx, rbx
call qword [sym.imp.USER32.dll_ClientToScreen]
mov dword [rsi + 0x1c44], edi
mov qword [rsp + 0x60], r13
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x14009af42
mov eax, dword [rcx + 8]
mov edx, 0x7fffffff
cmp eax, edx
je 0x14009af3d
lock dec dword [rcx + 8]
mov eax, dword [rcx + 8]
test eax, eax
jg 0x14009af3a
mov dword [rcx + 8], edx
mov rax, qword [rcx]
call qword [rax]
jmp 0x14009af3d
mov eax, dword [rcx + 8]
mov qword [rsp + 0x68], r12
lea rcx, [rbp - 0x70]
call fcn.14011a71c
jmp 0x14009a79f
mov eax, dword [rcx + 8]
mov qword [rsp + 0x68], r12
lea rcx, [rbp - 0x70]
call fcn.14011a71c
jmp 0x14009acbc
cmp r14d, eax
jne 0x14009b121
call qword [sym.imp.USER32.dll_CreatePopupMenu]
mov r15, rax
mov rdi, r12
lea r13, [0x1401aadb8]
mov ebx, 0x80
mov word [rbp - 0x50], r12w
mov ecx, dword [r13 + rdi*4]
test cl, 8
je 0x14009afae
lea r8, str.Ctrl_
mov rdx, rbx
lea rcx, [rbp - 0x50]
call fcn.140001e48
mov ecx, dword [r13 + rdi*4]
test cl, 2
je 0x14009afcb
lea r8, str.Alt_
mov rdx, rbx
lea rcx, [rbp - 0x50]
call fcn.140001e48
mov ecx, dword [r13 + rdi*4]
test cl, 4
je 0x14009afe8
lea r8, str.RCtrl_
mov rdx, rbx
lea rcx, [rbp - 0x50]
call fcn.140001e48
mov ecx, dword [r13 + rdi*4]
test cl, 1
je 0x14009b005
lea r8, str.RAlt_
mov rdx, rbx
lea rcx, [rbp - 0x50]
call fcn.140001e48
mov ecx, dword [r13 + rdi*4]
test cl, 0x10
je 0x14009b01d
lea r8, str.Shift_
mov rdx, rbx
lea rcx, [rbp - 0x50]
call fcn.140001e48
mov ebx, dword [rsi + 0x1c44]
lea rcx, [rbp - 0x50]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
movsxd rcx, eax
lea rax, [rbp - 0x50]
lea rcx, [rax + rcx*2]
lea r9d, [rbx - 0x6f]
lea r8, [0x1401abe88]
mov edx, 8
call fcn.1401145a0
lea rbx, [rdi + 1]
and dil, 3
neg dil
sbb edx, edx
not edx
and edx, 0x40
lea r9, [rbp - 0x50]
mov r8, rbx
mov rcx, r15
call qword [sym.imp.USER32.dll_AppendMenuW]
mov rdi, rbx
cmp rbx, 0xc
mov ebx, 0x80
jb 0x14009af87
mov edx, dword [rsi + 0x1c3c]
lea eax, [rdx - 1]
mov dword [rbp - 0x60], eax
mov ecx, dword [rsi + 0x1c40]
lea eax, [rcx - 1]
mov dword [rbp - 0x5c], eax
lea eax, [rdx + 1]
mov dword [rbp - 0x58], eax
lea eax, [rcx + 1]
mov dword [rbp - 0x54], eax
lea rax, [rbp - 0x60]
mov qword [rsp + 0x38], rax
mov rax, qword [0x14022a9e8]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], edx
mov r9d, 0x122
mov r8, r15
lea edx, [rbx - 0x7b]
mov rcx, qword [0x14022a9e0]
mov rcx, qword [rcx + 0x3e48]
call fcn.140072840
lea ebx, [rax - 1]
mov rcx, r15
call qword [sym.imp.USER32.dll_DestroyMenu]
cmp ebx, 0xb
ja 0x14009b115
lfence
xor r9d, r9d
movsxd rax, ebx
or dword [rsp + 0x20], 0xffffffff
mov r8d, dword [r13 + rax*4]
movzx edx, word [rsi + 0x1c44]
mov rcx, qword [rsi + 0x58]
call fcn.1400adbbc
mov byte [rsi + 0x1c35], r12b
jmp 0x14009a79f
cmp r14d, 0x200
je 0x14009a79f
jmp 0x14009acbc