Function at 0x14014d390
Capabilities:
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 - 0xf8]
sub rsp, 0x1f8
mov qword [rsp + 0x70], 0xfffffffffffffffe
movaps xmmword [rsp + 0x1e0], xmm6
mov rax, qword [0x14047b0a0]
xor rax, rsp
mov qword [rbp + 0xd0], rax
mov r14, r9
mov r15, r8
mov edi, edx
mov rsi, rcx
mov r12, qword [rbp + 0x160]
mov byte [r12], 0
mov rbx, qword [rcx + 0x240]
xor r13d, r13d
cmp rbx, qword [rcx + 0x248]
je 0x14014d43d
mov dword [rsp + 0x6c], r13d
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea rdx, [rsp + 0x6c]
mov qword [rsp + 0x20], rdx
mov r9, r14
mov r8, r15
mov edx, edi
call qword [rax]
cmp dword [rsp + 0x6c], r13d
je 0x14014d426
cmp edi, 0x200
jne 0x14014d433
add rbx, 8
cmp rbx, qword [rsi + 0x248]
jmp 0x14014d3f6
mov byte [r12], 1
jmp 0x14014e948
cmp edi, 0x10d
ja 0x14014d9a5
je 0x14014d965
lea eax, [rdi - 5]
cmp eax, 0xfd
ja case.0x14014d9e1.271
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x14e9a4]
mov ecx, dword [rdx + rax*4 + 0x14e974]
add rcx, rdx
jmp rcx
mov rcx, qword [rsi + 0x130]
xorps xmm6, xmm6
test rcx, rcx
je 0x14014d4ae
mov qword [rbp], r13
movss dword [rsp + 0x30], xmm6
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x10]
call fcn.140152dd0
mov rcx, qword [rsi + 0x138]
test rcx, rcx
je 0x14014d4e1
mov qword [rbp], r13
movss dword [rsp + 0x30], xmm6
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x13]
call fcn.140152dd0
mov rcx, qword [rsi + 0x150]
test rcx, rcx
je 0x14014d514
mov qword [rbp], r13
movss dword [rsp + 0x30], xmm6
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x13]
call fcn.140152dd0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je 0x14014d547
mov qword [rbp], r13
movss dword [rsp + 0x30], xmm6
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x13]
call fcn.140152dd0
xor edx, edx
mov rcx, rsi
call fcn.14014ed20
mov edx, 4
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_GetWindow]
test rax, rax
je case.0x14014d9e1.271
mov rcx, rax
call qword [sym.imp.USER32.dll_SetFocus]
jmp case.0x14014d9e1.271
mov byte [r12], 1
mov eax, 1
jmp 0x14014e948
mov rcx, rsi
call fcn.14014f360
mov byte [r12], 1
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je 0x14014d5ce
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x26]
call fcn.140152dd0
mov rcx, qword [rsi + 0x28]
test rcx, rcx
je 0x14014d5dd
mov rax, qword [rcx]
call qword [rax + 0x48]
cmp r15, 2
jne 0x14014d5e7
mov dl, 1
jmp 0x14014d5ee
test r15, r15
jne 0x14014d58e
xor edx, edx
lea rcx, [rsi + 0x2e0]
call fcn.14017b9a0
mov byte [r12], 1
jmp case.0x14014d9e1.271
mov rbx, qword [rsi + 0x138]
mov rax, qword [rsi + 0x150]
test rax, rax
cmovne rbx, rax
mov rax, qword [rsi + 0x160]
test rax, rax
cmovne rbx, rax
movsx edi, r14w
mov rax, r14
shr rax, 0x10
movsx r12d, ax
mov dword [rbp], edi
mov dword [rbp + 4], r12d
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
test rbx, rbx
je case.0x14014d9e1.271
cmp byte [rbx + 0xc3], r13b
je case.0x14014d9e1.271
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], r13b
mov dword [rbp], edi
mov dword [rbp + 4], r12d
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.SHELL32.dll_ILCloneFirst
mov rcx, rbx
call fcn.140152dd0
mov qword [rsi + 0x138], r13
mov qword [rsi + 0x150], r13
mov qword [rsi + 0x160], r13
jmp case.0x14014d9e1.271
movsx eax, r14w
mov dword [rbp], eax
shr r14, 0x10
movsx eax, r14w
mov dword [rbp + 4], eax
lea rdx, [rbp]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
cmp qword [rsi + 0x138], r13
je case.0x14014d9e1.271
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], r13b
mov rax, qword [rbp]
mov rcx, qword [rsi + 0x138]
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
mov r9, rcx
mov r8, r15
mov edx, 1
call fcn.140152dd0
mov qword [rsi + 0x138], r13
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je case.0x14014d9e1.271
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r15w
mov r9, r14
mov r8, r15
mov edx, 0xa
call fcn.140152dd0
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je case.0x14014d9e1.271
cmp r15, 9
jne 0x14014d826
mov rax, qword [rcx]
call qword [rax + Ordinal_41]
test al, al
je 0x14014d803
mov rcx, qword [rsi + 0x120]
mov rax, qword [rcx]
call qword [rax + VarUI4FromDisp]
test al, al
je 0x14014d803
mov dword [rsp + 0x20], r13d
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rsi + 0x120]
call fcn.1402dce2c
test rax, rax
je 0x14014d803
mov dword [rsp + 0x20], r13d
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rsi + 0x120]
call fcn.1402dce2c
cmp byte [rax + 0x5c9], r13b
jne case.0x14014d9e1.271
mov ecx, reloc.WS2_32.dll_recv
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setns dl
mov rcx, rsi
call fcn.14014eec0
mov eax, 1
jmp 0x14014e948
mov qword [rsi + 0x140], rcx
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r15w
mov r9, r14
mov r8, r15
mov edx, 8
call fcn.140152dd0
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0x140]
test rcx, rcx
je case.0x14014d9e1.271
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r15w
mov r9, r14
mov r8, r15
mov edx, 9
call fcn.140152dd0
mov qword [rsi + 0x140], r13
jmp case.0x14014d9e1.271
cmp r14w, 1
jne case.0x14014d9e1.271
cmp qword [rsi + 0x138], r13
jne 0x14014d58e
cmp qword [rsi + 0x150], r13
jne 0x14014d58e
cmp qword [rsi + 0x160], r13
jne 0x14014d58e
mov qword [rbp], r13
lea rcx, [rbp]
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rbp]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rdx, qword [rbp]
mov qword [rsi + 0x148], rdx
mov rcx, rsi
call fcn.14014f040
test rax, rax
je case.0x14014d9e1.271
mov rcx, qword [rbp]
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rcx
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, Ordinal_41
mov rcx, rax
call fcn.140152dd0
mov byte [r12], r14b
jmp case.0x14014d9e1.271
test r14, r14
je 0x14014d58e
lea edx, [rdi + 0x2000]
mov r9, r14
mov r8, r15
mov rcx, qword [r14]
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x14014e948
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je case.0x14014d9e1.271
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r15w
mov r9, r14
mov r8, r15
mov edx, 0x30
call fcn.140152dd0
jmp case.0x14014d9e1.271
cmp edi, 0x240
ja 0x14014e1fa
je 0x14014dec9
lea eax, [rdi - 0x10e]
cmp eax, 0xfc
ja case.0x14014d9e1.271
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x14eacc]
mov ecx, dword [rdx + rax*4 + 0x14eaa4]
add rcx, rdx
jmp rcx
cmp qword [rsi + 0x150], r13
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], r13
jne case.0x14014d9e1.271
cmp byte [rsi + 0x172], r13b
jne 0x14014da5b
mov dword [rbp + 0x14], r13d
mov dword [rbp], ILCombine
mov dword [rbp + 4], 3
mov rax, qword [rsi + 0x10]
mov qword [rbp + 8], rax
mov rcx, qword [rsi + 0xd0]
test rcx, rcx
jne 0x14014da35
mov dword [rbp + 0x10], 0x190
jmp 0x14014da4a
xor r9d, r9d
mov edx, 0x415
lea r8d, [r9 + 3]
call qword [sym.imp.USER32.dll_SendMessageW]
mov dword [rbp + 0x10], eax
lea rcx, [rbp]
call qword [sym.imp.COMCTL32.dll__TrackMouseEvent]
mov byte [rsi + 0x172], 1
movsx eax, r14w
mov dword [rbp], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rbp + 4], eax
mov rbx, qword [rbp]
mov qword [rsi + 0x148], rbx
mov r9, r14
mov r8, r15
lea rdx, [rbp]
mov rcx, rsi
call fcn.14014ebd0
test al, al
je case.0x14014d9e1.271
mov rcx, qword [rsi + 0x138]
test rcx, rcx
jne 0x14014daae
mov rcx, qword [rsi + 0x128]
test rcx, rcx
je case.0x14014d9e1.271
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rbx
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.WLDAP32.dll_Ordinal_14
call fcn.140152dd0
jmp case.0x14014d9e1.271
cmp qword [rsi + 0x150], r13
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], r13
jne case.0x14014d9e1.271
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx eax, r14w
mov dword [rbp], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rbp + 4], eax
mov rbx, qword [rbp]
mov qword [rsi + 0x148], rbx
mov rdx, rbx
mov rcx, rsi
call fcn.14014f040
mov rdi, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsi + 0x138], rdi
mov rdx, qword [rdi]
mov rcx, rdi
call qword [rdx + 0x148]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rsi + 0x173], 1
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rbx
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.SHELL32.dll_ILClone
mov rcx, rdi
call fcn.140152dd0
jmp case.0x14014d9e1.271
cmp qword [rsi + 0x150], r13
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], r13
jne case.0x14014d9e1.271
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx eax, r14w
mov dword [rbp], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rbp + 4], eax
mov rbx, qword [rbp]
mov qword [rsi + 0x148], rbx
mov rdx, rbx
mov rcx, rsi
call fcn.14014f040
mov rdi, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsi + 0x138], rdi
mov rdx, qword [rdi]
mov rcx, rdi
call qword [rdx + 0x148]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rsi + 0x173], 1
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rbx
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.WS2_32.dll_sendto
mov rcx, rdi
call fcn.140152dd0
jmp case.0x14014d9e1.271
cmp qword [rsi + 0x150], r13
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], r13
jne case.0x14014d9e1.271
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
movsx eax, r14w
mov dword [rbp], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rbp + 4], eax
mov rbx, qword [rbp]
mov qword [rsi + 0x148], rbx
mov rdx, rbx
mov rcx, rsi
call fcn.14014f040
mov rdi, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsi + 0x138], rdi
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rsi + 0x173], 1
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rbx
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
xor edx, edx
mov rcx, rdi
call fcn.140152dd0
jmp case.0x14014d9e1.271
movsx ebx, r14w
mov rax, r14
shr rax, 0x10
movsx edi, ax
mov dword [rbp], ebx
mov dword [rbp + 4], edi
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], r13b
mov rcx, qword [rsi + 0x138]
test rcx, rcx
je case.0x14014d9e1.271
mov dword [rbp], ebx
mov dword [rbp + 4], edi
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.SHELL32.dll_ILCloneFirst
call fcn.140152dd0
mov qword [rsi + 0x138], r13
jmp case.0x14014d9e1.271
movsx ebx, r14w
mov rax, r14
shr rax, 0x10
movsx edi, ax
mov dword [rbp], ebx
mov dword [rbp + 4], edi
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], r13b
mov rcx, qword [rsi + 0x138]
test rcx, rcx
je case.0x14014d9e1.271
mov dword [rbp], ebx
mov dword [rbp + 4], edi
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
mov r9, r14
mov r8, r15
mov edx, reloc.WS2_32.dll_setsockopt
call fcn.140152dd0
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je case.0x14014d9e1.271
mov qword [rbp], r13
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r15w
mov r9, r14
mov r8, r15
mov edx, 0x31
call fcn.140152dd0
jmp case.0x14014d9e1.271
movsx eax, r14w
mov dword [rbp], eax
mov rax, r14
shr rax, 0x10
cwde
mov dword [rbp + 4], eax
lea rdx, [rbp]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rdx, qword [rbp]
mov qword [rsi + 0x148], rdx
mov rcx, rsi
call fcn.14014f040
mov rbx, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsp + 0x60], r13
shr r15, 0x10
movsx r8, r15w
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov rax, r13
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r13w
mov r9, r14
mov edx, ILCombine
mov rcx, rbx
call fcn.140152dd0
jmp case.0x14014d9e1.271
test r14, r14
je case.0x14014d9e1.271
mov byte [r12], 1
lea edx, [rdi + 0x2000]
mov r9, r14
mov r8, r15
mov rcx, r14
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x14014e948
mov ecx, r15d
mov eax, 0x30
mul rcx
mov r9, 0xffffffffffffffff
cmovo rax, r9
mov rcx, rax
call fcn.1401af66c
mov rdi, rax
mov r13d, 4
cmp r15d, 1
jb 0x14014e17e
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx]
mov ecx, dword [r13 + rdx]
cmp dword [0x1404935d8], ecx
jle 0x14014df58
lea rcx, [0x1404935d8]
call fcn.1401af53c
cmp dword [0x1404935d8], 0xffffffff
jne 0x14014df58
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 [0x1404935e0], rax
lea rcx, [0x1404935d8]
call fcn.1401af4dc
mov rax, qword [0x1404935e0]
test rax, rax
je 0x14014e17e
mov r9d, 0x30
mov r8, rdi
mov edx, r15d
mov rcx, r14
call rax
cmp eax, 1
jne 0x14014e17e
cmp dword [rdi + 0x10], 0
je 0x14014e17e
mov eax, 0x51eb851f
imul dword [rdi]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [rsp + 0x60], edx
mov eax, 0x51eb851f
imul dword [rdi + 4]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [rsp + 0x64], edx
lea rdx, [rsp + 0x60]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [rdi + 0x14]
test al, 2
je 0x14014e07c
cmp qword [rsi + 0x138], 0
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], 0
jne case.0x14014d9e1.271
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
mov rdx, qword [rsp + 0x60]
mov qword [rsi + 0x158], rdx
mov rcx, rsi
call fcn.14014f040
mov rbx, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsi + 0x150], rbx
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x148]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rsi + 0x173], 1
mov rax, qword [rsp + 0x60]
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rax
xor eax, eax
mov word [rsp + 0x20], ax
mov r9, r14
xor r8d, r8d
lea edx, [rax + 0x1b]
mov rcx, rbx
call fcn.140152dd0
jmp 0x14014e17e
test al, 1
je 0x14014e122
cmp qword [rsi + 0x138], 0
jne case.0x14014d9e1.271
cmp qword [rsi + 0x160], 0
jne case.0x14014d9e1.271
mov eax, dword [rsp + 0x60]
cmp dword [rsi + 0x158], eax
jne 0x14014e0bc
mov eax, dword [rsp + 0x64]
cmp dword [rsi + 0x15c], eax
je case.0x14014d9e1.271
mov rax, qword [rsp + 0x60]
mov qword [rsi + 0x158], rax
cmp qword [rsi + 0x150], 0
je case.0x14014d9e1.271
mov r9, r14
mov r8, r15
lea rdx, [rsp + 0x60]
mov rcx, rsi
call fcn.14014ebd0
test al, al
je case.0x14014d9e1.271
mov rax, qword [rsp + 0x60]
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rax
xor eax, eax
mov word [rsp + 0x20], ax
xor r9d, r9d
xor r8d, r8d
lea edx, [rax + 0x1c]
mov rcx, qword [rsi + 0x150]
call fcn.140152dd0
jmp 0x14014e17e
test al, 4
je 0x14014e17e
mov rax, qword [rsp + 0x60]
mov qword [rsi + 0x158], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], 0
mov rcx, qword [rsi + 0x150]
test rcx, rcx
je case.0x14014d9e1.271
mov rax, qword [rsp + 0x60]
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rax
xor ebx, ebx
mov word [rsp + 0x20], bx
mov r9, r14
xor r8d, r8d
lea edx, [rbx + 0x1d]
call fcn.140152dd0
mov qword [rsi + 0x150], rbx
mov rax, qword gs:[0x58]
mov rdx, qword [rax]
mov eax, dword [r13 + rdx]
cmp dword [0x1404935e8], eax
jle 0x14014e1dc
lea rcx, [0x1404935e8]
call fcn.1401af53c
cmp dword [0x1404935e8], 0xffffffff
jne 0x14014e1dc
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 [0x1404935f0], rax
lea rcx, [0x1404935e8]
call fcn.1401af4dc
mov rax, qword [0x1404935f0]
test rax, rax
je 0x14014e1ed
mov rcx, r14
call rax
mov rcx, rdi
call fcn.1401aed44
jmp case.0x14014d9e1.271
cmp edi, 0x2a1
ja 0x14014e80e
je 0x14014e61b
lea eax, [rdi - 0x245]
cmp eax, 7
ja case.0x14014d9e1.271
mov ecx, reloc.WLDAP32.dll_Ordinal_167
bt ecx, eax
jae case.0x14014d9e1.271
cmp byte [rsi + 0x168], r13b
je case.0x14014d9e1.271
mov rax, r15
shr rax, 0x10
mov ecx, 0x2000
test cx, ax
je 0x14014d58e
movzx ecx, r15w
mov dword [rsp + 0x68], ecx
mov ebx, 4
mov rax, qword gs:[0x58]
mov r13, qword [rax]
mov eax, dword [rbx + r13]
cmp dword [0x1404935f8], eax
jle 0x14014e2b9
lea rcx, [0x1404935f8]
call fcn.1401af53c
cmp dword [0x1404935f8], 0xffffffff
jne 0x14014e2b5
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 [0x140493600], rax
lea rcx, [0x1404935f8]
call fcn.1401af4dc
mov ecx, dword [rsp + 0x68]
mov rax, qword [0x140493600]
test rax, rax
je case.0x14014d9e1.271
lea rdx, [rsp + 0x60]
call rax
cmp eax, 1
jne case.0x14014d9e1.271
xor eax, eax
mov qword [rbp], rax
mov eax, dword [rsp + 0x60]
sub eax, 2
je 0x14014e379
cmp eax, 1
jne case.0x14014d9e1.271
mov eax, dword [rbx + r13]
cmp dword [0x140493618], eax
jle 0x14014e346
lea rcx, [0x140493618]
call fcn.1401af53c
cmp dword [0x140493618], 0xffffffff
jne 0x14014e346
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 [0x140493620], rax
lea rcx, [0x140493618]
call fcn.1401af4dc
mov rax, qword [0x140493620]
test rax, rax
je case.0x14014d9e1.271
lea rdx, [rbp - 0x80]
mov ecx, dword [rsp + 0x68]
call rax
cmp eax, 1
jne case.0x14014d9e1.271
mov rax, qword [rbp - 0x50]
mov qword [rbp], rax
mov eax, dword [rbp - 0x18]
jmp 0x14014e3fb
mov eax, dword [rbx + r13]
cmp dword [0x140493608], eax
jle 0x14014e3ca
lea rcx, [0x140493608]
call fcn.1401af53c
cmp dword [0x140493608], 0xffffffff
jne 0x14014e3ca
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 [0x140493610], rax
lea rcx, [0x140493608]
call fcn.1401af4dc
mov rax, qword [0x140493610]
test rax, rax
je case.0x14014d9e1.271
lea rdx, [rbp + 0x40]
mov ecx, dword [rsp + 0x68]
call rax
cmp eax, 1
jne case.0x14014d9e1.271
mov rax, qword [rbp + 0x70]
mov qword [rbp], rax
mov eax, dword [rbp + 0xcc]
xorps xmm6, xmm6
cvtsi2ss xmm6, rax
mulss xmm6, dword [0x1404154c4]
lea rdx, [rbp]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_ScreenToClient]
sub edi, 0x245
je 0x14014e57a
sub edi, 1
je 0x14014e4b2
sub edi, 1
je 0x14014e441
sub edi, 3
je 0x14014e441
cmp edi, 2
jne case.0x14014d9e1.271
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x173], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je case.0x14014d9e1.271
mov rax, qword [rbp]
movss dword [rsp + 0x30], xmm6
mov qword [rsp + 0x28], rax
xor ebx, ebx
mov word [rsp + 0x20], bx
mov r9, r14
xor r8d, r8d
lea edx, [rbx + 0x22]
call fcn.140152dd0
mov rax, qword [rsi + 0x160]
test rax, rax
je 0x14014e4a6
cmp byte [rax + 0xc2], bl
je 0x14014e4a6
mov byte [r12], 1
mov qword [rsi + 0x160], rbx
jmp case.0x14014d9e1.271
cmp qword [rsi + 0x138], 0
jne 0x14014d58e
cmp qword [rsi + 0x150], 0
jne 0x14014d58e
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetFocus]
mov rdx, qword [rbp]
mov qword [rsi + 0x148], rdx
mov rcx, rsi
call fcn.14014f040
mov rbx, rax
test rax, rax
je case.0x14014d9e1.271
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx]
cmp rax, rsi
jne case.0x14014d9e1.271
mov qword [rsi + 0x160], rbx
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x148]
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rsi + 0x173], 1
mov rax, qword [rbp]
movss dword [rsp + 0x30], xmm6
mov qword [rsp + 0x28], rax
xor eax, eax
mov word [rsp + 0x20], ax
mov r9, r14
xor r8d, r8d
lea edx, [rax + 0x20]
mov rcx, rbx
call fcn.140152dd0
mov rax, qword [rsi + 0x160]
test rax, rax
je case.0x14014d9e1.271
cmp byte [rax + 0xc2], 0
je case.0x14014d9e1.271
mov byte [r12], 1
jmp case.0x14014d9e1.271
cmp qword [rsi + 0x138], 0
jne 0x14014d58e
cmp qword [rsi + 0x150], 0
jne 0x14014d58e
mov rax, qword [rbp]
mov qword [rsi + 0x148], rax
cmp qword [rsi + 0x160], 0
je case.0x14014d9e1.271
mov r9, r14
mov r8, r15
lea rdx, [rbp]
mov rcx, rsi
call fcn.14014ebd0
test al, al
je case.0x14014d9e1.271
mov rax, qword [rbp]
movss dword [rsp + 0x30], xmm6
mov qword [rsp + 0x28], rax
xor eax, eax
mov word [rsp + 0x20], ax
xor r9d, r9d
xor r8d, r8d
lea edx, [rax + 0x21]
mov rcx, qword [rsi + 0x160]
call fcn.140152dd0
mov rax, qword [rsi + 0x160]
test rax, rax
je case.0x14014d9e1.271
cmp byte [rax + 0xc2], 0
je case.0x14014d9e1.271
mov byte [r12], 1
jmp case.0x14014d9e1.271
mov byte [rsi + 0x172], r13b
movsx eax, r14w
mov dword [rbp], eax
shr r14, 0x10
movsx eax, r14w
mov dword [rbp + 4], eax
mov rbx, qword [rbp]
mov rdx, rbx
mov rcx, rsi
call fcn.14014f040
mov rdi, rax
test rax, rax
je case.0x14014d9e1.271
mov rcx, qword [rsi + 0x130]
test rcx, rcx
je 0x14014e67e
xorps xmm0, xmm0
movss dword [rsp + 0x30], xmm0
mov qword [rsp + 0x28], rbx
mov word [rsp + 0x20], r13w
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x11]
call fcn.140152dd0
mov rax, qword [rdi]
lea rdx, [rbp + 0x18]
mov rcx, rdi
call qword [rax + 0x78]
nop
mov qword [rsi + 0xf0], r13
mov qword [rsi + 0xf8], r13
mov qword [rsi + 0x100], r13
mov qword [rsi + 0x108], r13
mov qword [rsi + 0x110], r13
mov qword [rsi + 0x118], r13
mov dword [rsi + 0xd8], PathYetAnotherMakeUniqueName
mov dword [rsi + 0xdc], 1
mov rax, qword [rsi + 0x10]
mov qword [rsi + 0xe0], rax
mov qword [rsi + 0xe8], rax
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rsi + 0x100], rax
lea rax, [rbp + 0x18]
cmp qword [rbp + 0x30], 8
cmovae rax, qword [rbp + 0x18]
mov qword [rsi + 0x108], rax
mov rax, qword [rdi]
mov r8b, 1
lea rdx, [rbp]
mov rcx, rdi
call qword [rax + gethostname]
movups xmm0, xmmword [rax]
movups xmmword [rsi + 0xf0], xmm0
cmp qword [rsi + 0xd0], 0
jne 0x14014e79b
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], r13
mov rax, qword [rsi + 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 [rsi + 0xd0], rax
lea r9, [rsi + 0xd8]
xor r8d, r8d
mov edx, 0x432
mov rcx, rax
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.SHLWAPI.dll_IUnknown_QueryService]
movsxd r9, eax
xor r8d, r8d
mov edx, 0x418
mov rcx, qword [rsi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
lea r9, [rsi + 0xd8]
xor r8d, r8d
mov edx, 0x436
mov rcx, qword [rsi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
lea r9, [rsi + 0xd8]
mov edx, 0x411
mov r8d, 1
mov rcx, qword [rsi + 0xd0]
call qword [sym.imp.USER32.dll_SendMessageW]
nop
lea rcx, [rbp + 0x18]
call fcn.14007ec70
mov byte [r12], 1
jmp case.0x14014d9e1.271
sub edi, 0x2a3
je 0x14014e8fc
sub edi, 0x3d
je 0x14014e881
cmp edi, 0x7d21
jne case.0x14014d9e1.271
mov rbx, qword [rsi + 0x288]
cmp rbx, qword [rsi + 0x290]
je 0x14014e86e
nop dword [rax + rax]
mov rdx, qword [rbx]
test rdx, rdx
je 0x14014e861
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 [rsi + 0x290]
jne 0x14014e840
mov rax, qword [rsi + 0x288]
mov qword [rsi + 0x290], rax
jmp case.0x14014d9e1.271
mov edi, dword [rsi + 0x33c]
call fcn.14016b730
movzx ecx, r15w
mov edx, 0x64
lea r8d, [rdx - 4]
call qword [sym.imp.KERNEL32.dll_MulDiv]
mov ebx, eax
mov dword [rsi + 0x33c], eax
mov rcx, qword [rsi + 0xb0]
mov r8, qword [rcx]
mov edx, eax
call qword [r8 + 0x138]
mov r9, qword [rsi]
mov r8d, ebx
mov edx, edi
mov rcx, rsi
call qword [r9 + PathYetAnotherMakeUniqueName]
mov r9d, dword [r14 + 4]
mov r8d, dword [r14]
mov ecx, dword [r14 + 0xc]
sub ecx, r9d
mov eax, dword [r14 + 8]
sub eax, r8d
mov dword [rsp + 0x30], reloc.WS2_32.dll_sendto
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], eax
xor edx, edx
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SetWindowPos]
jmp case.0x14014d9e1.271
mov rcx, qword [rsi + 0xd0]
test rcx, rcx
je 0x14014e91d
lea r9, [rsi + 0xd8]
xor r8d, r8d
mov edx, 0x411
call qword [sym.imp.USER32.dll_SendMessageW]
cmp byte [rsi + 0x172], r13b
je 0x14014e93f
mov r9, 0xffffffffffffffff
xor r8d, r8d
mov edx, 0x200
mov rcx, qword [rsi + 0x10]
call qword [sym.imp.USER32.dll_SendMessageW]
mov byte [rsi + 0x172], r13b
xor eax, eax
mov rcx, qword [rbp + 0xd0]
xor rcx, rsp
call fcn.1401aed20
movaps xmm6, xmmword [rsp + 0x1e0]
add rsp, 0x1f8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret