Function at 0x1400858f0
Capabilities:
Get keyboard layout
Log keystrokes
Log keystrokes via polling

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x1f0
mov qword [rsp + 0x88], 0xfffffffffffffffe
mov qword [rsp + 0x240], rbx
mov rax, qword [0x14025e510]
xor rax, rsp
mov qword [rsp + 0x1e0], rax
mov ebx, r9d
mov ebp, r8d
mov edi, edx
mov rsi, rcx
mov r15, qword [rsp + 0x250]
test rcx, rcx
je 0x140086b67
cmp qword [rcx + 0x40], 0
je 0x140086b67
test byte [rcx + 0x128], 1
jne 0x140085960
mov al, 1
jmp 0x140086b69
mov rax, qword [rcx]
call qword [rax + 0x678]
test al, al
je 0x140085974
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
call fcn.140055ed0
test al, al
jne 0x140086b63
call fcn.140078950
test al, al
jne 0x140086b63
call fcn.1400789a0
test rax, rax
jne 0x140086b63
movzx eax, byte [r15]
mov byte [rsp + 0x28], al
mov dword [rsp + 0x20], ebx
mov r9d, ebp
mov r8d, edi
mov rdx, rsi
lea rcx, [rsp + 0x90]
call fcn.1400785a0
lea rcx, [rsp + 0x90]
call fcn.140078640
test al, al
je 0x1400859f4
movzx eax, byte [rsp + 0x98]
shr al, 1
and al, 1
mov byte [r15], al
mov al, 1
jmp 0x140086b69
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov bp, ax
shr ebp, 0xf
and bpl, 1
mov dword [rsp + 0x5c], ebp
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov r12w, ax
shr r12d, 0xf
and r12b, 1
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov r14w, ax
shr r14d, 0xf
and r14b, 1
call qword [sym.imp.USER32.dll_GetFocus]
mov rbx, rax
mov r13d, 0x25
test rax, rax
je 0x140085b9f
lea edx, [r13 - 0x35]
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1e
jae 0x140085b9f
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetParent]
cmp rax, qword [rsi + 0x40]
jne 0x140085b9f
cmp edi, 0xd
jne 0x140085aa3
mov edx, dword [rsi + 0x3c0]
test edx, edx
js 0x140085aa3
mov rcx, rsi
call fcn.1400818b0
cmp qword [rax + 0xe8], 0
jne 0x140085c33
test bpl, bpl
je 0x140085ac1
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x1f]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_PostMessageW]
jmp 0x140085b92
cmp edi, 0x1b
jne 0x140085ad3
mov rcx, rsi
call fcn.14000a83c
jmp 0x140085b92
cmp edi, 0x2d
je 0x140085add
cmp edi, 0x43
jne 0x140085afb
test r12b, r12b
je 0x140085afb
xor r9d, r9d
xor r8d, r8d
mov edx, 0x301
mov rcx, rbx
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x140085b92
cmp edi, 0x58
jne 0x140085b0a
test r12b, r12b
jne 0x140085b14
jmp 0x140085b8e
cmp edi, 0x2e
jne 0x140085b41
test r14b, r14b
je 0x140085b2a
xor r9d, r9d
xor r8d, r8d
mov edx, 0x300
mov rcx, rbx
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x140085b92
xor r9d, r9d
xor r8d, r8d
mov edx, dword [0x140272ff0]
mov rcx, rbx
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x140085b92
cmp edi, 0x56
jne 0x140085b4d
test r12b, r12b
jne 0x140085b57
jmp 0x140085b8e
cmp edi, 0x2d
jne 0x140085b6d
test r14b, r14b
je 0x140085b8e
xor r9d, r9d
xor r8d, r8d
mov edx, 0x302
mov rcx, rbx
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x140085b92
cmp edi, 0x41
jne 0x140085b8e
test r12b, r12b
je 0x140085b8e
xor r9d, r9d
xor r8d, r8d
mov edx, dword [0x140272ff4]
mov rcx, rbx
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x140085b92
mov byte [r15], 1
xor ebp, ebp
cmp byte [r15], bpl
sete al
jmp 0x140086b69
cmp edi, 9
jne 0x140085c48
test r12b, r12b
jne 0x140085c41
test bpl, bpl
jne 0x140085c3a
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4e0]
test al, al
je 0x140085c1e
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
test eax, eax
jle 0x140085c1e
cmp dword [rsi + 0x3c0], 0
jl 0x140085c1e
mov ebx, dword [rsi + 0x3c0]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
dec eax
cmp ebx, eax
jg 0x140085c1e
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
test byte [rax + 0xbc], 0x10
je 0x140085c1e
mov ebx, 0x27
mov edi, ebx
test r14b, r14b
cmovne edi, r13d
jmp 0x140085c4d
mov edi, 0x28
mov eax, 0x26
test r14b, r14b
cmovne edi, eax
lea ebx, [rax + 1]
jmp 0x140085c4d
mov ebx, 0x27
jmp 0x140085c4d
mov ebx, 0x27
jmp 0x140085c4d
mov ebx, 0x27
jmp 0x140085c4d
mov ebx, 0x27
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x280]
movzx r8d, al
mov byte [rsp + 0x40], al
test al, al
je 0x140085c79
cmp edi, r13d
je 0x140085c6f
cmp edi, 0x27
jne 0x140085c79
cmp edi, r13d
cmove r13d, ebx
mov edi, r13d
lea eax, [rdi - 0xd]
cmp eax, 0x66
ja case.0x140085ca0.14
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x86bc4]
mov ecx, dword [rdx + rax*4 + 0x86b94]
add rcx, rdx
xor ebp, ebp
jmp rcx
mov rax, qword [rsi]
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [rax + 0x638]
mov al, 1
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
mov edx, dword [rsi + 0x3c0]
test edx, edx
jns 0x140085cd2
mov al, 1
jmp 0x140086b69
mov rcx, rsi
call fcn.1400818b0
mov edx, dword [rax + 0xc]
test edx, edx
je 0x140085cf6
cmp qword [rax + 0xc8], rbp
setne cl
test cl, cl
je 0x140085cf6
mov al, 1
jmp 0x140086b69
cmp qword [rax + 0xe8], rbp
je 0x140085d58
cmp edx, 0xffffffff
jne 0x140085d58
mov rcx, qword [rax]
test rcx, rcx
je 0x140085d12
cmp qword [rcx + 0x40], rbp
jne 0x140085d51
mov rbx, qword [rsi + 0x40]
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call qword [rax + 0x540]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140085d51
mov al, 1
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
cmp dword [rsi + 0x3c0], ebp
jge 0x140085d9d
mov rcx, rsi
call fcn.14007a860
mov edx, eax
test eax, eax
jns 0x140085d7c
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
xor r8d, r8d
mov rcx, rsi
call qword [rax + 0x540]
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call fcn.1400818b0
mov rbx, rax
cmp qword [rax + 0xe8], rbp
je 0x140085e9c
mov rdi, qword [rax + 0xe0]
test rdi, rdi
je 0x140085e95
movzx ecx, byte [rax + 0x114]
and cl, 1
je 0x140085e95
mov rcx, rdi
call fcn.14000a5c4
bt eax, 0x1c
jb 0x140085e8a
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x48]
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call qword [rax + 0x548]
mov r11, qword [rsi]
mov rcx, rsi
call qword [r11 + 0x280]
movzx r9d, al
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0xa8]
mov rcx, rbx
call fcn.140078b10
lea rdx, [rsp + 0x48]
mov ecx, dword [rax]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xc]
mov dword [rdx + 0xc], eax
mov r8, qword [rsp + 0x48]
mov r9, r8
shr r9, 0x20
mov rdx, qword [rsp + 0x50]
mov rax, rdx
shr rax, 0x20
sub eax, r9d
sub edx, r8d
mov dword [rsp + 0x30], 0x254
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
xor edx, edx
mov rcx, rdi
call fcn.14000a8a8
mov rcx, rdi
call fcn.14000a83c
jmp 0x140085e95
mov byte [r15], 1
xor al, al
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
cmp dword [rax + 0xc], ebp
sete al
test al, al
jne 0x140085f07
cmp qword [rbx + 0xc8], rbp
setne al
test al, al
je 0x140085f07
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x2f8]
test al, al
jne 0x140085f07
mov rax, qword [rbx + 0xc8]
mov rdx, rbx
mov rcx, rsi
call rax
mov rdx, rsi
lea rcx, [rsp + 0x60]
call fcn.14000c734
nop
mov rax, qword [rsi]
mov r8b, 1
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [rax + 0x2e0]
nop
lea rcx, [rsp + 0x60]
call fcn.14000c798
mov al, 1
jmp 0x140086b69
mov rcx, rbx
call fcn.140078c00
test al, al
jne 0x140085f2c
cmp dword [rbx + 0xc], 0xffffffff
jne case.0x140085ca0.39
lea rdx, str.CExtPopupColorMenuWnd
mov rcx, qword [rbx]
call fcn.14001b150
test eax, eax
je case.0x140085ca0.39
cmp dword [rbx + 0xc], ebp
je 0x140085f49
mov rax, qword [rbx + 0xc0]
test rax, rax
je 0x140085f49
mov rdx, rbx
mov rcx, rsi
call rax
test al, al
jne 0x140085f65
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x518]
mov r11, qword [rsi]
mov rdx, rbx
mov rcx, rsi
call qword [r11 + 0x630]
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4e0]
test al, al
je 0x140085fc6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
test eax, eax
jle 0x140085fc6
cmp dword [rsi + 0x3c0], ebp
jl 0x140085fc6
mov ebx, dword [rsi + 0x3c0]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
dec eax
cmp ebx, eax
jg 0x140085fc6
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
cmp dword [rax + 0xc], 0xffffffff
je 0x140085fc6
mov edx, 0xffffff9a
jmp 0x1400862ee
mov edx, dword [rsi + 0x3c0]
test edx, edx
jns 0x140085fe4
cmp qword [rsi + 0x9e8], rbp
jne 0x14008606d
mov al, 1
jmp 0x140086b69
mov rcx, rsi
call fcn.1400818b0
cmp dword [rax + 0xc], 0xffffffff
jne 0x14008606d
mov rax, qword [rax]
test rax, rax
je 0x140086004
cmp qword [rax + 0x40], rbp
jne 0x140086b5b
mov rbx, qword [rsi + 0x40]
mov rax, qword [rsi]
xor r8d, r8d
or edx, 0xffffffff
mov rcx, rsi
call qword [rax + 0x538]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x14008602e
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call qword [rax + 0x540]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140086b5b
mov al, 1
jmp 0x140086b69
cmp edi, 0x27
jne 0x140086b5b
cmp byte [0x140274730], bpl
je 0x1400860a4
mov edx, dword [0x140272954]
cmp byte [rsp + 0x40], bpl
cmovne edx, dword [0x140272958]
mov r9, rsi
xor r8d, r8d
mov rcx, qword [rsi + 0x3d8]
call qword [sym.imp.USER32.dll_PostMessageW]
mov al, 1
jmp 0x140086b69
test byte [rsi + 0x3cc], 1
je case.0x140085ca0.37
mov rax, qword [rsi]
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [rax + 0x638]
mov al, 1
jmp 0x140086b69
cmp edi, 0x25
jne 0x140086116
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4e0]
test al, al
je 0x140086111
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
test eax, eax
jle 0x14008610a
cmp dword [rsi + 0x3c0], ebp
jl 0x140086103
mov edx, 0xffffff99
jmp 0x1400862ee
mov r8b, byte [rsp + 0x40]
jmp 0x140086116
mov r8b, byte [rsp + 0x40]
jmp 0x140086116
mov r8b, byte [rsp + 0x40]
mov rcx, qword [rsi + 0x3e8]
test rcx, rcx
jne 0x140086155
cmp byte [0x140274730], bpl
je 0x14008614e
mov edx, dword [0x140272958]
test r8b, r8b
cmovne edx, dword [0x140272954]
mov r9, rsi
xor r8d, r8d
mov rcx, qword [rsi + 0x3d8]
call qword [sym.imp.USER32.dll_PostMessageW]
mov al, 1
jmp 0x140086b69
mov ebx, dword [rcx + 0x3c0]
mov rdi, qword [rsi + 0x40]
mov rax, qword [rcx]
call qword [rax + 0x598]
mov rcx, qword [rsi + 0x3e8]
mov rax, qword [rcx]
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 1]
call qword [rax + 0x530]
mov rcx, qword [rsi + 0x3e8]
mov rax, qword [rcx]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
xor r8d, r8d
mov edx, ebx
call qword [rax + 0x540]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400861bc
mov al, 1
jmp 0x140086b69
mov rcx, qword [rsi + 0x3e8]
mov rax, qword [rcx]
call qword [rax + 0x598]
mov al, 1
jmp 0x140086b69
cmp edi, 0x26
jne 0x140086223
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
test eax, eax
jle 0x140086223
cmp dword [rsi + 0x3c0], ebp
jl 0x140086223
mov ebx, dword [rsi + 0x3c0]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
cmp ebx, eax
jge 0x140086223
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
test byte [rax + 0xbe], 4
jne 0x140086223
mov edx, 0xffffff99
jmp 0x1400862ee
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4e0]
mov edx, 0xffffff99
mov ecx, 0xffffff97
test al, al
cmovne edx, ecx
jmp 0x1400862d7
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
mov ebx, 0x8000
test bx, ax
je 0x140086274
test byte [rsi + 0x3cc], 4
je 0x14008626d
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x5f0]
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
test eax, eax
jle 0x1400862bc
cmp dword [rsi + 0x3c0], ebp
jl 0x1400862bc
mov ebx, dword [rsi + 0x3c0]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x370]
cmp ebx, eax
jge 0x1400862bc
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
test byte [rax + 0xbe], 4
jne 0x1400862bc
mov edx, 0xffffff9a
jmp 0x1400862ee
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4e0]
mov edx, 0xffffff9a
mov ecx, 0xffffff98
test al, al
cmovne edx, ecx
cmp edx, 0xffffff9c
je 0x140086b5b
jmp 0x1400862ee
mov edx, 0xffffff95
jmp 0x1400862ee
mov edx, 0xffffff96
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x628]
cmp qword [rsi + 0x9e8], rbp
jle 0x140086347
test eax, eax
js 0x140086347
cmp eax, dword [rsi + 0x3c0]
je 0x140086347
mov rbx, qword [rsi + 0x40]
mov r10, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
xor r8d, r8d
mov edx, eax
mov rcx, rsi
call qword [r10 + 0x540]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
mov al, 1
jmp 0x140086b69
cmp eax, 0xfffffffc
jne 0x140086b5b
mov r12d, dword [rsi + 0x3c0]
mov rbx, qword [rsi + 0x40]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x5f0]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x14008637b
mov al, 1
jmp 0x140086b69
test r12d, r12d
js 0x14008643b
mov r13, qword [rsi + 0x40]
mov rbx, qword [rsi]
mov rcx, rsi
call qword [rbx + 0x648]
mov rcx, rax
call fcn.1400789a0
mov r9d, ebp
test rax, rax
sete r9b
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
xor r8d, r8d
mov edx, r12d
mov rcx, rsi
call qword [rbx + 0x540]
mov rcx, r13
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400863d5
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov edx, 0xffffff9a
mov rcx, rsi
call qword [rax + 0x628]
mov ebx, eax
mov rdi, qword [rsi]
mov rcx, rsi
call qword [rdi + 0x648]
mov rcx, rax
call fcn.1400789a0
mov r9d, ebp
test rax, rax
sete r9b
test ebx, ebx
cmovg r12d, ebx
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
xor r8d, r8d
mov edx, r12d
mov rcx, rsi
call qword [rdi + 0x540]
mov rcx, r13
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x14008643b
mov al, 1
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
mov ebx, 0x8000
test bx, ax
jne 0x140086b5f
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
jne 0x140086b5f
lea rcx, [rsp + 0xe0]
call qword [sym.imp.USER32.dll_GetKeyboardState]
xor edx, edx
mov ecx, edi
call qword [sym.imp.USER32.dll_MapVirtualKeyW]
mov ebx, eax
call fcn.14000d854
mov ecx, dword [rax + 0x60]
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
xor ebp, ebp
mov word [rsp + 0x58], bp
mov word [rsp + 0x5a], bp
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 1
lea r9, [rsp + 0x58]
lea r8, [rsp + 0xe0]
mov edx, ebx
mov ecx, edi
call qword [sym.imp.USER32.dll_ToUnicodeEx]
movzx ecx, word [rsp + 0x58]
mov word [rsp + 0x40], cx
mov rax, qword [rsi]
mov dword [rsp + 0x20], ebp
lea r9d, [rbp + 1]
mov r8d, dword [rsi + 0x3c0]
movzx edx, cx
mov rcx, rsi
call qword [rax + 0x460]
mov r13d, eax
test eax, eax
js 0x140086649
movzx eax, byte [rsi + 0x3cc]
test al, 4
je 0x140086859
test al, 8
jne 0x140086859
mov edx, r13d
mov rcx, rsi
call fcn.1400818b0
mov rbx, rax
mov qword [rsp + 0x48], rax
movzx eax, byte [rax + 0xbc]
test al, 2
jne 0x140086614
test al, 4
jne 0x140086614
mov r10, qword [rsi]
mov dword [rsp + 0x20], ebp
lea r9d, [rbp + 1]
mov r8d, r13d
movzx edx, word [rsp + 0x40]
mov rcx, rsi
call qword [r10 + 0x460]
test eax, eax
jns 0x14008656e
cmp dword [rbx + 0xc], 0xffffffff
jne 0x140086614
mov edx, 0x29e
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_KillTimer]
movzx ebx, byte [0x140260afd]
mov byte [0x140260afd], bpl
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x5f0]
mov r11, qword [rsi]
mov rcx, rsi
call qword [r11 + 0x2b8]
mov edx, 0x29a
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_KillTimer]
or byte [rsi + 0x128], 1
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
xor edx, edx
call fcn.1400789c0
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x5d8]
mov byte [0x140260afd], bl
mov rdx, rsi
lea rcx, [rsp + 0x60]
call fcn.14000c734
nop
mov rax, qword [rsi]
mov r8b, 1
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [rax + 0x2e0]
nop
lea rcx, [rsp + 0x60]
call fcn.14000c798
mov rbx, qword [rsp + 0x48]
cmp dword [rbx + 0xc], 0xffffffff
jne 0x140086859
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, r13d
mov rcx, rsi
call qword [rax + 0x540]
mov al, 1
jmp 0x140086b69
cmp dword [rsi + 0x3c0], ebp
jl 0x140086859
mov ebx, dword [rsi + 0x3c0]
mov rax, qword [rsi]
mov dword [rsp + 0x20], ebp
mov r9d, 1
or r8d, 0xffffffff
movzx edx, word [rsp + 0x40]
mov rcx, rsi
call qword [rax + 0x460]
cmp eax, ebx
jne 0x140086859
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
mov rbx, rax
cmp qword [rax + 0xe8], rbp
je 0x14008677a
cmp dword [rax + 0xc], 0xffffffff
je 0x14008677a
mov rdi, qword [rax + 0xe0]
test rdi, rdi
je 0x140086773
movzx ecx, byte [rax + 0x114]
and cl, 1
je 0x140086773
mov rcx, rdi
call fcn.14000a5c4
bt eax, 0x1c
jb 0x14008676b
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x48]
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call qword [rax + 0x548]
mov r11, qword [rsi]
mov rcx, rsi
call qword [r11 + 0x280]
movzx r9d, al
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0xc8]
mov rcx, rbx
call fcn.140078b10
lea rdx, [rsp + 0x48]
mov ecx, dword [rax]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xc]
mov dword [rdx + 0xc], eax
mov r8, qword [rsp + 0x48]
mov r9, r8
shr r9, 0x20
mov rdx, qword [rsp + 0x50]
mov rax, rdx
shr rax, 0x20
sub eax, r9d
sub edx, r8d
mov dword [rsp + 0x30], 0x254
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
xor edx, edx
mov rcx, rdi
call fcn.14000a8a8
mov rcx, rdi
call fcn.14000a83c
mov al, 1
jmp 0x140086b69
cmp dword [rax + 0xc], ebp
sete al
test al, al
jne 0x1400867e5
cmp qword [rbx + 0xc8], rbp
setne al
test al, al
je 0x1400867e5
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x2f8]
test al, al
jne 0x1400867e5
mov rax, qword [rbx + 0xc8]
mov rdx, rbx
mov rcx, rsi
call rax
mov rdx, rsi
lea rcx, [rsp + 0x60]
call fcn.14000c734
nop
mov rax, qword [rsi]
mov r8b, 1
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [rax + 0x2e0]
nop
lea rcx, [rsp + 0x60]
call fcn.14000c798
mov al, 1
jmp 0x140086b69
mov edx, dword [rbx + 0xc]
cmp edx, 0xffffffff
jne 0x14008681b
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call qword [rax + 0x540]
mov al, 1
jmp 0x140086b69
mov rcx, rbx
call fcn.140078c00
test al, al
je 0x140086859
test edx, edx
je 0x140086843
mov rax, qword [rbx + 0xc0]
test rax, rax
je 0x140086843
mov rdx, rbx
mov rcx, rsi
call rax
test al, al
jne 0x140086852
mov rax, qword [rsi]
mov rdx, rbx
mov rcx, rsi
call qword [rax + 0x630]
mov al, 1
jmp 0x140086b69
cmp dword [rsi + 0x3c0], r13d
je 0x140086a9e
test r13d, r13d
js 0x140086a9e
mov rbx, qword [rsi + 0x40]
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, r13d
mov rcx, rsi
call qword [rax + 0x540]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400868ab
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov dword [rsp + 0x20], 1
mov r9d, 1
mov r8d, r13d
movzx edx, word [rsp + 0x40]
mov rcx, rsi
call qword [rax + 0x460]
test eax, eax
jns 0x140086a97
mov edx, r13d
mov rcx, rsi
call fcn.1400818b0
mov rbx, rax
cmp qword [rax + 0xe8], 0
je 0x1400869cc
cmp dword [rax + 0xc], 0xffffffff
je 0x1400869cc
mov rdi, qword [rax + 0xe0]
test rdi, rdi
je 0x1400869c5
movzx ecx, byte [rax + 0x114]
and cl, 1
je 0x1400869c5
mov rcx, rdi
call fcn.14000a5c4
bt eax, 0x1c
jb 0x1400869bd
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x48]
mov edx, r13d
mov rcx, rsi
call qword [rax + 0x548]
mov r11, qword [rsi]
mov rcx, rsi
call qword [r11 + 0x280]
movzx r9d, al
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0xb8]
mov rcx, rbx
call fcn.140078b10
lea rdx, [rsp + 0x48]
mov ecx, dword [rax]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xc]
mov dword [rdx + 0xc], eax
mov r8, qword [rsp + 0x48]
mov r9, r8
shr r9, 0x20
mov rdx, qword [rsp + 0x50]
mov rax, rdx
shr rax, 0x20
sub eax, r9d
sub edx, r8d
mov dword [rsp + 0x30], 0x254
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
xor edx, edx
mov rcx, rdi
call fcn.14000a8a8
mov rcx, rdi
call fcn.14000a83c
mov al, 1
jmp 0x140086b69
cmp dword [rax + 0xc], 0
sete al
test al, al
jne 0x140086a39
cmp qword [rbx + 0xc8], 0
setne al
test al, al
je 0x140086a39
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x2f8]
test al, al
jne 0x140086a39
mov rax, qword [rbx + 0xc8]
mov rdx, rbx
mov rcx, rsi
call rax
mov rdx, rsi
lea rcx, [rsp + 0x60]
call fcn.14000c734
nop
mov rax, qword [rsi]
mov r8b, 1
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [rax + 0x2e0]
nop
lea rcx, [rsp + 0x60]
call fcn.14000c798
mov al, 1
jmp 0x140086b69
mov rcx, rbx
call fcn.140078c00
test al, al
je 0x140086a97
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x5a0]
cmp rax, rsi
jne 0x140086a97
cmp dword [rbx + 0xc], 0
je 0x140086a74
mov rax, qword [rbx + 0xc0]
test rax, rax
je 0x140086a74
mov rdx, rbx
mov rcx, rsi
call rax
test al, al
jne 0x140086a90
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x518]
mov r11, qword [rsi]
mov rdx, rbx
mov rcx, rsi
call qword [r11 + 0x630]
mov al, 1
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x308]
mov r11, rax
mov edx, dword [rsi + 0x3c0]
test edx, edx
js 0x140086b5b
test rax, rax
je 0x140086b5b
movzx ecx, word [rax + 2]
cmp edi, ecx
jne 0x140086b5b
neg r14b
sbb ecx, ecx
and ecx, 4
neg r12b
sbb eax, eax
and eax, 8
or ecx, eax
neg byte [rsp + 0x5c]
sbb eax, eax
and eax, 0x10
or ecx, eax
movzx eax, byte [r11]
and eax, 0x1c
cmp eax, ecx
jne 0x140086b5b
mov rcx, rsi
call fcn.1400818b0
mov ecx, dword [rax + 0xc]
cmp ecx, 0xffffffff
je 0x140086b5b
test ecx, ecx
je 0x140086b1b
cmp qword [rax + 0xc8], 0
setne cl
test cl, cl
jne 0x140086b5b
mov rcx, rax
call fcn.140078bf0
mov ebx, eax
mov byte [r15], 0
mov r9, qword [rsi]
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [r9 + 0x638]
call fcn.14000b840
mov rcx, qword [rax + 8]
mov r9, qword [rcx]
mov rdx, rbx
mov r8d, 1
call qword [r9 + 0x148]
mov al, 1
jmp 0x140086b69
xor al, al
jmp 0x140086b69
xor al, al
jmp 0x140086b69
mov al, 1
jmp 0x140086b69
mov al, 1
mov rcx, qword [rsp + 0x1e0]
xor rcx, rsp
call fcn.14002f990
mov rbx, qword [rsp + 0x240]
add rsp, 0x1f0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret