Function at 0x140020980
Capabilities:
Check for time delay via gettickcount
Link many functions at runtime
Log keystrokes via polling

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x148]
sub rsp, 0x248
movaps xmmword [rsp + 0x230], xmm6
mov rax, qword [0x1400b8080]
xor rax, rsp
mov qword [rbp + 0x120], rax
mov r14, r9
mov r12, r8
mov r15d, edx
mov rdi, rcx
mov r13, qword [rbp + 0x1b0]
mov byte [r13], 0
mov rbx, qword [rcx + 0x240]
xor esi, esi
cmp rbx, qword [rcx + 0x248]
je 0x140020a1c
nop
mov dword [rbp - 0x54], esi
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea rdx, [rbp - 0x54]
mov qword [rsp + 0x20], rdx
mov r9, r14
mov r8, r12
mov edx, r15d
call qword [rax]
cmp dword [rbp - 0x54], esi
je 0x140020a0f
cmp r15d, 0x200
jne 0x1400222a7
add rbx, 8
cmp rbx, qword [rdi + 0x248]
jne 0x1400209e0
cmp r15d, 0x10d
ja 0x140021189
je 0x14002112f
lea eax, [r15 - 5]
cmp eax, 0xfd
ja case.0x1400211c7.271
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x22310]
mov ecx, dword [rdx + rax*4 + 0x222e0]
add rcx, rdx
jmp rcx
mov rbx, qword [rdi + 0x130]
test rbx, rbx
je 0x140020aa7
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], InitCommonControls
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rbx, qword [rdi + 0x138]
test rbx, rbx
je 0x140020af5
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], 0x13
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rbx, qword [rdi + 0x150]
test rbx, rbx
je 0x140020b43
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], 0x13
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rbx, qword [rdi + 0x160]
test rbx, rbx
je 0x140020b91
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], 0x13
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
xor edx, edx
mov rcx, rdi
call fcn.140022740
mov edx, 4
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_GetWindow]
test rax, rax
je case.0x1400211c7.271
mov rcx, rax
call qword [sym.imp.USER32.dll_SetFocus]
xor eax, eax
jmp 0x1400222ac
mov eax, 1
jmp 0x1400222a7
mov rcx, rdi
call fcn.140022ca0
jmp 0x1400222a5
mov rbx, qword [rdi + 0x120]
test rbx, rbx
je 0x140020c28
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], 0x26
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x140020c37
mov rax, qword [rcx]
call qword [rax + 0x48]
cmp r12, 2
jne 0x140020cc3
cmp byte [rdi + 0x2e0], sil
je 0x1400222a5
mov rcx, qword [rdi + 0x338]
test rcx, rcx
je 0x1400222a5
xorps xmm0, xmm0
movups xmmword [rdi + 0x308], xmm0
mov rax, qword [rcx]
call qword [rax + 0x2c0]
movups xmm0, xmmword [rdi + 0x308]
movaps xmmword [rbp + 0x70], xmm0
mov r9, qword [rax]
xor r8d, r8d
lea rdx, [rbp + 0x70]
mov rcx, rax
call qword [r9 + 0x28]
cmp byte [rdi + 0x2e1], sil
je 0x1400222a5
mov rcx, qword [rdi + 0x338]
mov rax, qword [rcx]
xor edx, edx
call qword [rax + 0x248]
mov qword [rsp + 0x60], rsi
lea rdx, [rsp + 0x60]
mov rcx, rax
call fcn.1400366a0
jmp 0x1400222a5
test r12, r12
jne 0x1400222a5
cmp byte [rdi + 0x2e0], sil
je 0x1400222a5
mov rcx, qword [rdi + 0x338]
test rcx, rcx
je 0x1400222a5
movups xmm0, xmmword [rdi + 0x328]
movups xmmword [rdi + 0x308], xmm0
mov rax, qword [rcx]
call qword [rax + 0x2c0]
movups xmm0, xmmword [rdi + 0x308]
movaps xmmword [rbp + 0x70], xmm0
mov r9, qword [rax]
xor r8d, r8d
lea rdx, [rbp + 0x70]
mov rcx, rax
call qword [r9 + 0x28]
cmp byte [rdi + 0x2e1], sil
je 0x1400222a5
mov rcx, qword [rdi + 0x338]
mov rax, qword [rcx]
xor edx, edx
call qword [rax + 0x248]
mov dword [rsp + 0x60], 3
mov dword [rsp + 0x64], 3
lea rdx, [rsp + 0x60]
mov rcx, rax
call fcn.1400366a0
jmp 0x1400222a5
mov rax, qword [rdi + 0x138]
mov rbx, rsi
test rax, rax
cmovne rbx, rax
mov rax, qword [rdi + 0x150]
test rax, rax
cmovne rbx, rax
mov rax, qword [rdi + 0x160]
test rax, rax
cmovne rbx, rax
movsx r15d, r14w
mov rax, r14
shr rax, 0x10
movsx r13d, ax
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
test rbx, rbx
je case.0x1400211c7.271
cmp byte [rbx + 0xc3], sil
je case.0x1400211c7.271
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov qword [rbp + 0x38], rbx
mov dword [rbp + 0x30], 0x13
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], r12
mov qword [rbp + 0x58], r14
mov dword [rbp + 0x60], esi
mov rax, qword [rsp + 0x60]
mov rdx, rax
shr rdx, 0x20
mov ecx, esi
test r14w, r14w
sete cl
cmp ecx, edx
jne 0x140020e20
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x140020e24
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
mov qword [rdi + 0x138], rsi
mov qword [rdi + 0x150], rsi
mov qword [rdi + 0x160], rsi
xor eax, eax
jmp 0x1400222ac
movsx eax, r14w
mov dword [rsp + 0x60], eax
shr r14, 0x10
movsx eax, r14w
mov dword [rsp + 0x64], eax
lea rdx, [rsp + 0x60]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
cmp qword [rdi + 0x138], rsi
je case.0x1400211c7.271
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov r8d, dword [rsp + 0x60]
mov dword [rsp + 0x68], r8d
mov eax, dword [rsp + 0x64]
mov dword [rsp + 0x6c], eax
mov rbx, qword [rdi + 0x138]
mov dword [rbp + 0x30], 1
mov qword [rbp + 0x58], rbx
mov rax, qword [rsp + 0x68]
mov rdx, rax
shr rdx, 0x20
mov ecx, esi
test r8d, r8d
sete cl
cmp ecx, edx
jmp 0x1400215aa
mov rbx, qword [rdi + 0x120]
test rbx, rbx
je case.0x1400211c7.271
mov dword [rsp + 0x70], 0xa
jmp 0x140021147
mov rbx, qword [rdi + 0x120]
test rbx, rbx
je case.0x1400211c7.271
cmp r12, 9
jne 0x140020fb1
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x28]
test al, al
je 0x140020f8b
mov rcx, qword [rdi + 0x120]
mov rax, qword [rcx]
call qword [rax + 0x110]
test al, al
je 0x140020f8b
mov dword [rsp + 0x20], esi
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rdi + 0x120]
call fcn.140063ea0
test rax, rax
je 0x140020f8b
mov dword [rsp + 0x20], esi
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rdi + 0x120]
call fcn.140063ea0
cmp byte [rax + 0x359], sil
jne case.0x1400211c7.271
mov ecx, InitCommonControls
call qword [sym.imp.USER32.dll_GetKeyState]
shr ax, 0xf
xor al, 1
movzx edx, al
mov rcx, rdi
call fcn.140022910
mov eax, 1
jmp 0x1400222ac
mov qword [rdi + 0x140], rbx
mov dword [rsp + 0x70], 8
jmp 0x140021147
mov rbx, qword [rdi + 0x140]
test rbx, rbx
je case.0x1400211c7.271
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x78], rbx
mov dword [rsp + 0x70], 9
mov word [rbp - 0x74], r12w
mov qword [rbp - 0x70], r12
mov qword [rbp - 0x68], r14
mov dword [rbp - 0x60], esi
mov rax, rsi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
mov qword [rdi + 0x140], rsi
xor eax, eax
jmp 0x1400222ac
cmp r14w, 1
jne case.0x1400211c7.271
cmp qword [rdi + 0x138], rsi
jne 0x1400222a5
cmp qword [rdi + 0x150], rsi
jne 0x1400222a5
cmp qword [rdi + 0x160], rsi
jne 0x1400222a5
mov qword [rsp + 0x60], rsi
lea rcx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rsp + 0x60]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rdx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rdx
mov rcx, rdi
call fcn.140022a30
mov rbx, rax
test rax, rax
je case.0x1400211c7.271
mov rcx, qword [rsp + 0x60]
mov dword [rsp + 0x68], ecx
mov edx, dword [rsp + 0x64]
mov dword [rsp + 0x6c], edx
mov qword [rbp + 0x38], rax
mov dword [rbp + 0x30], 0x28
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], r12
mov qword [rbp + 0x58], r14
mov dword [rbp + 0x60], esi
mov rax, qword [rsp + 0x68]
mov rdx, rax
shr rdx, 0x20
test ecx, ecx
sete sil
cmp esi, edx
jne 0x1400210e9
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x1400210ed
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
jmp 0x1400222a5
test r14, r14
je 0x1400222a5
lea edx, [r15 + 0x2000]
mov r9, r14
mov r8, r12
mov rcx, qword [r14]
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x1400222ac
mov rbx, qword [rdi + 0x120]
test rbx, rbx
je case.0x1400211c7.271
mov dword [rsp + 0x70], 0x30
mov qword [rsp + 0x60], rsi
mov rax, rsi
mov qword [rbp - 0x70], r12
mov word [rbp - 0x74], r12w
mov qword [rsp + 0x78], rbx
mov qword [rbp - 0x68], r14
mov dword [rbp - 0x60], esi
mov qword [rbp - 0x7c], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [rbx]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call qword [rax + 0x1a0]
xor eax, eax
jmp 0x1400222ac
cmp r15d, 0x240
ja 0x140021b0e
je 0x140021769
lea eax, [r15 - 0x10e]
cmp eax, 0xfc
ja case.0x1400211c7.271
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x22438]
mov ecx, dword [rdx + rax*4 + 0x22410]
add rcx, rdx
jmp rcx
cmp qword [rdi + 0x150], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
cmp byte [rdi + 0x172], sil
jne 0x140021249
mov dword [rbp + 0x84], esi
mov dword [rbp + 0x70], 0x18
mov dword [rbp + 0x74], 3
mov rax, qword [rdi + 0x10]
mov qword [rbp + 0x78], rax
mov rcx, qword [rdi + 0xd0]
test rcx, rcx
jne 0x140021220
mov dword [rbp + 0x80], 0x190
jmp 0x140021238
xor r9d, r9d
mov edx, 0x415
lea r8d, [r9 + 3]
call qword [sym.imp.USER32.dll_SendMessageW]
mov dword [rbp + 0x80], eax
lea rcx, [rbp + 0x70]
call qword [sym.imp.COMCTL32.dll__TrackMouseEvent]
mov byte [rdi + 0x172], 1
movsx eax, r14w
mov dword [rsp + 0x60], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rsp + 0x64], eax
mov rbx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rbx
mov r9, r14
mov r8, r12
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140022540
test al, al
je case.0x1400211c7.271
mov r15, qword [rdi + 0x138]
test r15, r15
je 0x1400212a0
mov dword [rbp + 0x30], InitCommonControls
test r14w, r14w
jmp 0x1400213ad
mov rdi, qword [rdi + 0x128]
test rdi, rdi
je case.0x1400211c7.271
mov qword [rbp + 0x38], rdi
mov dword [rbp + 0x30], InitCommonControls
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], r12
mov qword [rbp + 0x58], r14
mov dword [rbp + 0x60], esi
test r14w, r14w
sete sil
mov rax, rbx
shr rax, 0x20
cmp esi, eax
jne 0x1400212ee
mov rax, qword [rdi + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x1400212f2
mov qword [rbp + 0x44], rbx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rdi]
lea rdx, [rbp + 0x30]
mov rcx, rdi
call qword [rax + 0x1a0]
xor eax, eax
jmp 0x1400222ac
cmp qword [rdi + 0x150], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx r13d, r14w
mov dword [rsp + 0x60], r13d
mov rax, r14
shr rax, 0x10
cwde
mov dword [rsp + 0x64], eax
mov rbx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rbx
mov rdx, rbx
mov rcx, rdi
call fcn.140022a30
mov r15, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rdi + 0x138], r15
mov rdx, qword [r15]
mov rcx, r15
call qword [rdx + 0x148]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rdi + 0x173], 1
mov dword [rbp + 0x30], 0x12
test r13d, r13d
mov dword [rbp + 0x60], esi
mov word [rbp + 0x4c], si
sete sil
mov rax, rbx
shr rax, 0x20
mov qword [rbp + 0x38], r15
mov qword [rbp + 0x50], r12
mov qword [rbp + 0x58], r14
cmp esi, eax
jne 0x1400213e0
mov rax, qword [r15 + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x1400213e4
mov qword [rbp + 0x44], rbx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [r15]
lea rdx, [rbp + 0x30]
mov rcx, r15
call qword [rax + 0x1a0]
xor eax, eax
jmp 0x1400222ac
cmp qword [rdi + 0x150], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx r13d, r14w
mov dword [rsp + 0x60], r13d
mov rax, r14
shr rax, 0x10
cwde
mov dword [rsp + 0x64], eax
mov rbx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rbx
mov rdx, rbx
mov rcx, rdi
call fcn.140022a30
mov r15, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rdi + 0x138], r15
mov rdx, qword [r15]
mov rcx, r15
call qword [rdx + 0x148]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov dword [rbp + 0x30], 0x14
mov byte [rdi + 0x173], 1
mov word [rbp + 0x4c], si
mov dword [rbp + 0x60], esi
mov rax, rbx
shr rax, 0x20
test r13d, r13d
sete sil
jmp 0x1400213bf
cmp qword [rdi + 0x150], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx r13d, r14w
mov dword [rsp + 0x60], r13d
mov rax, r14
shr rax, 0x10
cwde
mov dword [rsp + 0x64], eax
mov rbx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rbx
mov rdx, rbx
mov rcx, rdi
call fcn.140022a30
mov r15, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rdi + 0x138], r15
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov dword [rbp + 0x30], esi
jmp 0x140021495
movsx r15d, r14w
mov rax, r14
shr rax, 0x10
movsx r13d, ax
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov rbx, qword [rdi + 0x138]
test rbx, rbx
je case.0x1400211c7.271
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov dword [rbp + 0x30], 0x13
mov qword [rbp + 0x58], r14
mov edx, esi
test r14w, r14w
sete dl
mov rax, qword [rsp + 0x60]
mov rcx, rax
shr rcx, 0x20
cmp edx, ecx
mov dword [rbp + 0x60], esi
mov qword [rbp + 0x50], r12
mov word [rbp + 0x4c], si
mov qword [rbp + 0x38], rbx
jne 0x1400215cc
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x1400215d0
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
mov qword [rdi + 0x138], rsi
xor eax, eax
jmp 0x1400222ac
movsx r15d, r14w
mov rax, r14
shr rax, 0x10
movsx r13d, ax
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov rbx, qword [rdi + 0x138]
test rbx, rbx
je case.0x1400211c7.271
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x64], r13d
mov qword [rbp + 0x38], rbx
mov dword [rbp + 0x30], 0x15
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], r12
mov qword [rbp + 0x58], r14
mov dword [rbp + 0x60], esi
test r14w, r14w
sete sil
mov rax, qword [rsp + 0x60]
mov rcx, rax
shr rcx, 0x20
cmp esi, ecx
jne 0x140021686
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x14002168a
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
xor eax, eax
jmp 0x1400222ac
mov rbx, qword [rdi + 0x120]
test rbx, rbx
je case.0x1400211c7.271
mov dword [rsp + 0x70], 0x31
jmp 0x140021147
movsx eax, r14w
mov dword [rsp + 0x60], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rsp + 0x64], eax
lea rdx, [rsp + 0x60]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rdx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rdx
mov rcx, rdi
call fcn.140022a30
mov rbx, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rsp + 0x68], rsi
mov dword [rsp + 0x70], 0x18
mov word [rbp - 0x74], si
shr r12, 0x10
movsx rax, r12w
mov qword [rbp - 0x70], rax
mov rax, rsi
jmp 0x140021158
test r14, r14
je case.0x1400211c7.271
mov byte [r13], 1
lea edx, [r15 + 0x2000]
mov r9, r14
mov r8, r12
mov rcx, r14
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x1400222ac
mov ecx, r12d
mov eax, 0x30
mul rcx
mov r9, 0xffffffffffffffff
cmovo rax, r9
mov rcx, rax
call fcn.140061a7c
mov r15, rax
mov r13d, 4
cmp r12d, 1
jb 0x140021a90
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx]
mov ecx, dword [r13 + rdx]
cmp dword [0x1400be3f0], ecx
jle 0x1400217f8
lea rcx, [0x1400be3f0]
call fcn.1400620a4
cmp dword [0x1400be3f0], 0xffffffff
jne 0x1400217f8
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.GetTouchInputInfo
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1400be3f8], rax
lea rcx, [0x1400be3f0]
call fcn.140062038
mov rax, qword [0x1400be3f8]
test rax, rax
je 0x140021a90
mov r9d, 0x30
mov r8, r15
mov edx, r12d
mov rcx, r14
call rax
cmp eax, 1
jne 0x140021a90
cmp dword [r15 + 0x10], esi
je 0x140021a90
mov eax, 0x51eb851f
imul dword [r15]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [rsp + 0x68], edx
mov eax, 0x51eb851f
imul dword [r15 + 4]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [rsp + 0x6c], edx
lea rdx, [rsp + 0x68]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [r15 + 0x14]
test al, 2
je 0x1400218fd
cmp qword [rdi + 0x138], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
mov rdx, qword [rsp + 0x68]
mov qword [rdi + 0x158], rdx
mov rcx, rdi
call fcn.140022a30
mov rbx, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rdi + 0x150], rbx
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x148]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rdi + 0x173], 1
mov dword [rbp + 0x30], 0x1b
mov qword [rbp + 0x58], r14
jmp 0x140021981
test al, 1
je 0x1400219e9
cmp qword [rdi + 0x138], rsi
jne case.0x1400211c7.271
cmp qword [rdi + 0x160], rsi
jne case.0x1400211c7.271
mov eax, dword [rsp + 0x68]
cmp dword [rdi + 0x158], eax
jne 0x14002193b
mov eax, dword [rsp + 0x6c]
cmp dword [rdi + 0x15c], eax
je case.0x1400211c7.271
mov rax, qword [rsp + 0x68]
mov qword [rdi + 0x158], rax
cmp qword [rdi + 0x150], rsi
je case.0x1400211c7.271
mov r9, r14
mov r8, r12
lea rdx, [rsp + 0x68]
mov rcx, rdi
call fcn.140022540
test al, al
je case.0x1400211c7.271
mov rbx, qword [rdi + 0x150]
mov dword [rbp + 0x30], 0x1c
mov qword [rbp + 0x58], rsi
mov eax, dword [rsp + 0x6c]
mov ecx, dword [rsp + 0x68]
mov qword [rbp + 0x50], rsi
mov word [rbp + 0x4c], si
mov qword [rbp + 0x38], rbx
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x60], ecx
mov dword [rbp + 0x60], esi
test ecx, ecx
sete sil
mov rax, qword [rsp + 0x60]
mov rcx, rax
shr rcx, 0x20
cmp esi, ecx
jne 0x1400219c7
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x1400219cb
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
jmp 0x140021a90
test al, 4
je 0x140021a90
mov rax, qword [rsp + 0x68]
mov qword [rdi + 0x158], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov rbx, qword [rdi + 0x150]
test rbx, rbx
je case.0x1400211c7.271
mov ecx, dword [rsp + 0x68]
mov dword [rsp + 0x60], ecx
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x64], eax
mov qword [rbp + 0x38], rbx
mov dword [rbp + 0x30], 0x1d
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], rsi
mov qword [rbp + 0x58], r14
mov dword [rbp + 0x60], esi
mov edx, esi
test ecx, ecx
sete dl
mov rax, qword [rsp + 0x60]
mov rcx, rax
shr rcx, 0x20
cmp edx, ecx
jne 0x140021a6c
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
jmp 0x140021a70
mov qword [rbp + 0x44], rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
mov qword [rdi + 0x150], rsi
mov rax, qword gs:[0x58]
mov rdx, qword [rax]
mov eax, dword [r13 + rdx]
cmp dword [0x1400be400], eax
jle 0x140021aee
lea rcx, [0x1400be400]
call fcn.1400620a4
cmp dword [0x1400be400], 0xffffffff
jne 0x140021aee
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.CloseTouchInputHandle
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1400be408], rax
lea rcx, [0x1400be400]
call fcn.140062038
mov rax, qword [0x1400be408]
test rax, rax
je 0x140021aff
mov rcx, r14
call rax
mov rcx, r15
call fcn.140061530
xor eax, eax
jmp 0x1400222ac
cmp r15d, 0x24c
ja 0x140021f80
je 0x140021b3a
mov eax, r15d
sub eax, 0x245
je 0x140021b3a
sub eax, 1
je 0x140021b3a
sub eax, 1
je 0x140021b3a
cmp eax, 3
jne case.0x1400211c7.271
cmp byte [rdi + 0x168], sil
je case.0x1400211c7.271
mov rax, r12
shr rax, 0x10
bt ax, 0xd
jae 0x140021f74
movzx ecx, r12w
mov dword [rbp - 0x58], ecx
mov ebx, 4
mov rax, qword gs:[0x58]
mov rax, qword [rax]
mov qword [rbp + 0x70], rax
mov eax, dword [rbx + rax]
cmp dword [0x1400be410], eax
jle 0x140021bc8
lea rcx, [0x1400be410]
call fcn.1400620a4
cmp dword [0x1400be410], 0xffffffff
jne 0x140021bc5
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.GetPointerType
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1400be418], rax
lea rcx, [0x1400be410]
call fcn.140062038
mov ecx, dword [rbp - 0x58]
mov rax, qword [0x1400be418]
test rax, rax
je case.0x1400211c7.271
lea rdx, [rsp + 0x68]
call rax
cmp eax, 1
jne case.0x1400211c7.271
mov qword [rsp + 0x60], rsi
mov eax, dword [rsp + 0x68]
sub eax, 2
je 0x140021c8a
cmp eax, 1
jne case.0x1400211c7.271
mov rax, qword [rbp + 0x70]
mov eax, dword [rbx + rax]
cmp dword [0x1400be430], eax
jle 0x140021c57
lea rcx, [0x1400be430]
call fcn.1400620a4
cmp dword [0x1400be430], 0xffffffff
jne 0x140021c57
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.GetPointerPenInfo
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1400be438], rax
lea rcx, [0x1400be430]
call fcn.140062038
mov rax, qword [0x1400be438]
test rax, rax
je case.0x1400211c7.271
lea rdx, [rbp - 0x50]
mov ecx, dword [rbp - 0x58]
call rax
cmp eax, 1
jne case.0x1400211c7.271
mov rax, qword [rbp - 0x20]
mov qword [rsp + 0x60], rax
mov eax, dword [rbp + 0x18]
jmp 0x140021d15
mov rax, qword [rbp + 0x70]
mov eax, dword [rbx + rax]
cmp dword [0x1400be420], eax
jle 0x140021cde
lea rcx, [0x1400be420]
call fcn.1400620a4
cmp dword [0x1400be420], 0xffffffff
jne 0x140021cde
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.GetPointerTouchInfo
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1400be428], rax
lea rcx, [0x1400be420]
call fcn.140062038
mov rax, qword [0x1400be428]
test rax, rax
je case.0x1400211c7.271
lea rdx, [rbp + 0x90]
mov ecx, dword [rbp - 0x58]
call rax
cmp eax, 1
jne case.0x1400211c7.271
mov rax, qword [rbp + 0xc0]
mov qword [rsp + 0x60], rax
mov eax, dword [rbp + 0x11c]
xorps xmm6, xmm6
cvtsi2ss xmm6, rax
mulss xmm6, dword [0x1400a4590]
lea rdx, [rsp + 0x60]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
sub r15d, 0x245
je 0x140021ea2
sub r15d, 1
je 0x140021e1c
sub r15d, 1
je 0x140021d61
sub r15d, 3
je 0x140021d61
cmp r15d, 2
jne case.0x1400211c7.271
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rdi + 0x173], sil
mov rbx, qword [rdi + 0x160]
test rbx, rbx
je case.0x1400211c7.271
mov rax, qword [rsp + 0x60]
mov dword [rbp + 0x70], eax
mov ecx, dword [rsp + 0x64]
mov dword [rbp + 0x74], ecx
mov qword [rbp + 0x38], rbx
mov dword [rbp + 0x30], 0x22
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], rsi
mov qword [rbp + 0x58], r14
movss dword [rbp + 0x60], xmm6
mov rcx, qword [rbp + 0x70]
mov r8, rcx
shr r8, 0x20
mov edx, esi
test eax, eax
sete dl
cmp edx, r8d
jne 0x140021dd7
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rax, qword [rdi + 0x160]
test rax, rax
je 0x140021e0e
cmp byte [rax + 0xc2], sil
je 0x140021e0e
mov byte [r13], 1
mov qword [rdi + 0x160], rsi
xor eax, eax
jmp 0x1400222ac
cmp qword [rdi + 0x138], rsi
jne 0x140021f74
cmp qword [rdi + 0x150], rsi
jne 0x140021f74
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
mov rdx, qword [rsp + 0x60]
mov qword [rdi + 0x148], rdx
mov rcx, rdi
call fcn.140022a30
mov rbx, rax
test rax, rax
je case.0x1400211c7.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rdi
jne case.0x1400211c7.271
mov qword [rdi + 0x160], rbx
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x148]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rdi + 0x173], 1
mov dword [rbp + 0x30], 0x20
mov qword [rbp + 0x58], r14
jmp 0x140021f02
cmp qword [rdi + 0x138], rsi
jne 0x140021f74
cmp qword [rdi + 0x150], rsi
jne 0x140021f74
mov rax, qword [rsp + 0x60]
mov qword [rdi + 0x148], rax
cmp qword [rdi + 0x160], rsi
je case.0x1400211c7.271
mov r9, r14
mov r8, r12
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140022540
test al, al
je case.0x1400211c7.271
mov rbx, qword [rdi + 0x160]
mov dword [rbp + 0x30], 0x21
mov qword [rbp + 0x58], rsi
mov rax, qword [rsp + 0x60]
mov ecx, dword [rsp + 0x64]
mov dword [rbp + 0x70], eax
mov dword [rbp + 0x74], ecx
mov rcx, qword [rbp + 0x70]
mov rdx, rcx
shr rdx, 0x20
mov word [rbp + 0x4c], si
mov qword [rbp + 0x50], rsi
test eax, eax
sete sil
cmp esi, edx
movss dword [rbp + 0x60], xmm6
mov qword [rbp + 0x38], rbx
jne 0x140021f42
mov rax, qword [rbx + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp + 0x44], rcx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp + 0x40], eax
mov rax, qword [rbx]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [rax + 0x1a0]
mov rax, qword [rdi + 0x160]
test rax, rax
je case.0x1400211c7.271
cmp byte [rax + 0xc2], 0
je case.0x1400211c7.271
mov byte [r13], 1
xor eax, eax
jmp 0x1400222ac
sub r15d, 0x2a1
je 0x14002204d
sub r15d, 2
je 0x140021ffc
cmp r15d, 0x7d5e
jne case.0x1400211c7.271
mov rbx, qword [rdi + 0x288]
cmp rbx, qword [rdi + 0x290]
je 0x140021fde
nop dword [rax]
mov rdx, qword [rbx]
test rdx, rdx
je 0x140021fd1
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, rdx
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
add rbx, 8
cmp rbx, qword [rdi + 0x290]
jne 0x140021fb0
mov rax, qword [rdi + 0x288]
cmp rax, qword [rdi + 0x290]
je case.0x1400211c7.271
mov qword [rdi + 0x290], rax
xor eax, eax
jmp 0x1400222ac
mov rcx, qword [rdi + 0xd0]
test rcx, rcx
je 0x14002201d
lea r9, [rdi + 0xd8]
xor r8d, r8d
mov edx, 0x411
call qword [sym.imp.USER32.dll_SendMessageW]
cmp byte [rdi + 0x172], sil
je 0x14002203f
mov r9, 0xffffffffffffffff
xor r8d, r8d
mov edx, 0x200
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.USER32.dll_SendMessageW]
mov byte [rdi + 0x172], sil
xor eax, eax
jmp 0x1400222ac
mov byte [rdi + 0x172], sil
movsx r12d, r14w
mov dword [rbp + 0x70], r12d
shr r14, 0x10
movsx eax, r14w
mov dword [rbp + 0x74], eax
mov rbx, qword [rbp + 0x70]
mov rdx, rbx
mov rcx, rdi
call fcn.140022a30
mov r15, rax
test rax, rax
je case.0x1400211c7.271
mov r14, qword [rdi + 0x130]
test r14, r14
je 0x1400220ec
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x70], reloc.COMCTL32.dll_InitCommonControls
mov word [rbp - 0x74], si
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
mov dword [rbp - 0x60], esi
mov ecx, esi
test r12d, r12d
sete cl
mov rax, rbx
shr rax, 0x20
cmp ecx, eax
jne 0x1400220ce
mov rax, qword [r14 + 0x30]
mov rcx, qword [rax + 0x148]
mov qword [rbp - 0x7c], rcx
jmp 0x1400220d2
mov qword [rbp - 0x7c], rbx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x80], eax
mov rax, qword [r14]
lea rdx, [rsp + 0x70]
mov rcx, r14
call qword [rax + 0x1a0]
mov rax, qword [r15]
lea rdx, [rbp + 0x30]
mov rcx, r15
call qword [rax + 0x78]
nop
mov qword [rdi + 0xf0], rsi
mov qword [rdi + 0xf8], rsi
mov qword [rdi + 0x100], rsi
mov qword [rdi + 0x108], rsi
mov qword [rdi + 0x110], rsi
mov qword [rdi + 0x118], rsi
mov dword [rdi + 0xd8], 0x48
mov dword [rdi + 0xdc], 1
mov rax, qword [rdi + 0x10]
mov qword [rdi + 0xe0], rax
mov qword [rdi + 0xe8], rax
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rdi + 0x100], rax
lea rax, [rbp + 0x30]
cmp qword [rbp + 0x48], 7
cmova rax, qword [rbp + 0x30]
mov qword [rdi + 0x108], rax
mov rax, qword [r15]
mov r8b, 1
lea rdx, [rbp + 0x70]
mov rcx, r15
call qword [rax + 0x38]
movups xmm0, xmmword [rax]
movups xmmword [rdi + 0xf0], xmm0
cmp qword [rdi + 0xd0], 0
jne 0x140022209
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], rsi
mov rax, qword [rdi + 0x10]
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x38], 0x80000000
mov dword [rsp + 0x30], 0x80000000
mov dword [rsp + 0x28], 0x80000000
mov dword [rsp + 0x20], 0x80000000
mov r9d, 0x80000003
xor r8d, r8d
lea rdx, str.tooltips_class32
xor ecx, ecx
call qword [sym.imp.USER32.dll_CreateWindowExW]
mov qword [rdi + 0xd0], rax
lea r9, [rdi + 0xd8]
xor r8d, r8d
mov edx, 0x432
mov rcx, rax
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0xb0]
movsxd r9, eax
xor r8d, r8d
mov edx, 0x418
mov rcx, qword [rdi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
lea r9, [rdi + 0xd8]
xor r8d, r8d
mov edx, 0x436
mov rcx, qword [rdi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
lea r9, [rdi + 0xd8]
mov edx, 0x411
mov r8d, 1
mov rcx, qword [rdi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
nop
mov rdx, qword [rbp + 0x48]
cmp rdx, 7
jbe 0x1400222a5
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400222a0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400222d7
call fcn.140061530
xor eax, eax
mov byte [r13], 1
mov rcx, qword [rbp + 0x120]
xor rcx, rsp
call fcn.140061510
movaps xmm6, xmmword [rsp + 0x230]
add rsp, 0x248
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.14006a6c0
int3