Function at 0x14009a040
Capabilities:
Log keystrokes via polling

Disassembly:
mov byte [rsp + 0x18], r8b
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x568
mov qword [rsp + 0x430], 0xfffffffffffffffe
movzx ebx, r8b
mov r12, rdx
mov rdi, rcx
mov rdx, qword [rcx + 0x40]
xor r14d, r14d
test rdx, rdx
je 0x14009a094
test r12, r12
jne 0x14009a084
mov rcx, r14
jmp 0x14009a089
mov rcx, qword [r12 + 8]
xor r9d, r9d
xor r8d, r8d
call fcn.1400a46e0
mov rax, qword [rdi]
lea rdx, [rsp + 0x140]
mov rcx, rdi
call qword [rax + 0x4c0]
mov r11, qword [rdi]
mov rcx, rdi
call qword [r11 + 0x2d8]
mov dword [rsp + 0x5c8], eax
lea rdx, [rsp + 0xb0]
mov rcx, qword [rdi + 0x40]
call qword [sym.imp.USER32.dll_GetClientRect]
mov r11, qword [rdi]
lea rdx, [rsp + 0x80]
mov rcx, rdi
call qword [r11 + 0x2f0]
mov rsi, r14
mov qword [rsp + 0x200], r14
mov r15, r14
mov edx, 0x26
mov rcx, qword [r12 + 8]
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
bt eax, 8
jae 0x14009a13c
lea rcx, [rdi + 0xa8]
mov rax, qword [rcx]
call qword [rax + 0x20]
xor r8d, r8d
lea rdx, [rax + 0x90]
mov rcx, r12
call fcn.14000cb94
mov rsi, rax
mov qword [rsp + 0x200], rax
mov rcx, qword [r12 + 8]
call qword [sym.imp.GDI32.dll_RealizePalette]
mov rdx, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rdx + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
xor r9d, r9d
mov r8, r12
mov rdx, rdi
mov rcx, rax
call qword [r10 + 0x348]
mov r11, qword [rdi]
lea rdx, [rsp + 0xc0]
mov rcx, rdi
call qword [r11 + 0x668]
lea rcx, [rsp + 0xd0]
call fcn.14000bda0
nop
lea rax, vtable.CExtMemoryDC.0
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xf8], r14
lea rax, vtable.CBitmap.0
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0x100], r14
mov qword [rsp + 0x108], r14
mov dword [rsp + 0x110], r14d
mov dword [rsp + 0x114], r14d
mov dword [rsp + 0x118], r14d
mov dword [rsp + 0x11c], r14d
and byte [rsp + 0x120], 0xfe
mov qword [rsp + 0x128], r14
test bl, bl
je 0x14009a2bc
movaps xmm0, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x3e0], xmm0
cmp dword [rsp + 0xc0], 0
jle 0x14009a234
mov ecx, dword [rsp + 0xc4]
test ecx, ecx
jle 0x14009a234
mov rax, qword [rsp + 0x80]
shr rax, 0x20
sub eax, ecx
mov dword [rsp + 0x3e4], eax
mov r9d, 3
lea r8, [rsp + 0x3e0]
mov rdx, r12
lea rcx, [rsp + 0xd0]
call fcn.14004aa60
test rsi, rsi
je 0x14009a290
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
xor r8d, r8d
lea rdx, [rax + 0x90]
lea rcx, [rsp + 0xd0]
call fcn.14000cb94
mov r15, rax
mov rcx, qword [rsp + 0xd8]
call qword [sym.imp.GDI32.dll_RealizePalette]
mov rdx, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rdx + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
mov r9b, 1
mov r8, r12
mov rdx, rdi
mov rcx, rax
call qword [r10 + 0x348]
lea rsi, [rsp + 0xd0]
test bl, bl
cmove rsi, r12
mov rbx, qword [rsi]
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
lea rdx, [rax + 0x168]
mov rcx, rsi
call qword [rbx + 0x50]
mov qword [rsp + 0x360], rax
or ebx, 0xffffffff
mov qword [rsp + 0x380], rsi
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x388]
call qword [sym.imp.USER32.dll_CopyRect]
mov qword [rsp + 0x398], rdi
and byte [rsp + 0x3a0], 0xfc
lea rcx, [rsp + 0x380]
call fcn.140079630
test byte [rsp + 0x3a0], 1
jne 0x14009a46c
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x4e0]
test al, al
je 0x14009a42e
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x338]
bt eax, 0x11
jae 0x14009a42e
mov qword [rsp + 0x1f8], r14
lea r13, vtable.CRgn.0
mov qword [rsp + 0x1f0], r13
lea rcx, [rsp + 0x80]
call qword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
mov rdx, rax
lea rcx, [rsp + 0x1f0]
call fcn.14000c9e8
test eax, eax
je 0x14009a3b2
lea rdx, [rsp + 0x1f0]
mov rcx, rsi
call fcn.14000c278
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
mov r9, rdi
mov r8, rsi
mov dl, 1
mov rcx, rax
call qword [r10 + 0x3a0]
test al, al
jne 0x14009a40c
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x3e8
mov rcx, rax
call qword [r10 + 0x150]
mov ebx, eax
xor edx, edx
mov rcx, rsi
call fcn.14000c278
nop
mov qword [rsp + 0x1f0], r13
lea rcx, [rsp + 0x1f0]
call fcn.14000cc4c
jmp 0x14009a454
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r9, qword [rax]
xor r8d, r8d
mov rdx, rdi
mov rcx, rax
call qword [r9 + 0x158]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x14009a46c
mov r8d, ebx
lea rdx, [rsp + 0x80]
mov rcx, rsi
call fcn.1400194c0
test byte [rsp + 0x3a0], 2
jne 0x14009a4a7
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
mov r9, rdi
lea r8, [rsp + 0x80]
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x340]
cmp dword [rsp + 0xc0], 0
jle 0x14009a53c
mov edx, dword [rsp + 0xc4]
test edx, edx
jle 0x14009a53c
movaps xmm0, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x90], xmm0
mov ecx, dword [rsp + 0x140]
mov eax, dword [rsp + 0x80]
add ecx, eax
mov dword [rsp + 0x90], ecx
mov ecx, dword [rsp + 0x94]
add ecx, dword [rsp + 0x144]
mov eax, dword [rsp + 0x148]
sub dword [rsp + 0x98], eax
mov dword [rsp + 0x9c], ecx
sub ecx, edx
mov dword [rsp + 0x94], ecx
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0x420], xmm0
mov rax, qword [rdi]
lea r8, [rsp + 0x420]
mov rdx, rsi
mov rcx, rdi
call qword [rax + 0x670]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x338]
bt eax, 0x1a
jae 0x14009a651
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
xor r9d, r9d
mov r8, rdi
lea rdx, [rsp + 0x340]
mov rcx, rax
call qword [r10 + 0x310]
movaps xmm5, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x90], xmm5
mov ecx, dword [rsp + 0x340]
mov eax, dword [rsp + 0x80]
add ecx, eax
mov dword [rsp + 0x90], ecx
mov eax, dword [rsp + 0x348]
sub dword [rsp + 0x98], eax
mov eax, dword [rsp + 0x34c]
sub dword [rsp + 0x9c], eax
mov dword [rsp + 0x5b0], r14d
mov dword [rsp + 0x5b8], r14d
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
mov r9, rdi
lea r8, [rsp + 0x5b8]
lea rdx, [rsp + 0x5b0]
mov rcx, rax
call qword [r10 + 0x318]
mov r11d, dword [rsp + 0x9c]
sub r11d, dword [rsp + 0x5b0]
mov dword [rsp + 0x94], r11d
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x20], r14
mov r9, rdi
lea r8, [rsp + 0x90]
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x320]
test byte [rdi + 0x3cc], 4
je 0x14009a6c2
mov rax, qword [rdi]
xor r9d, r9d
lea r8, [rsp + 0x2e0]
lea edx, [r9 - 4]
mov rcx, rdi
call qword [rax + 0x548]
lea rdx, [rsp + 0x2e0]
mov rcx, rsi
call fcn.14000bb18
movaps xmm5, xmmword [rsp + 0x2e0]
movdqa xmmword [rsp + 0x370], xmm5
mov eax, dword [rsp + 0xb0]
mov dword [rsp + 0x370], eax
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x378], eax
lea rdx, [rsp + 0x370]
mov rcx, rsi
call fcn.14000bb18
mov dword [rsp + 0x130], r14d
mov dword [rsp + 0x134], r14d
mov dword [rsp + 0x138], r14d
mov dword [rsp + 0x13c], r14d
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x4d8]
movzx r13d, al
test al, al
je 0x14009a75f
mov r10, qword [rdi]
xor r9d, r9d
lea r8, [rsp + 0x130]
lea edx, [r9 - 5]
mov rcx, rdi
call qword [r10 + 0x548]
lea rdx, [rsp + 0x130]
mov rcx, rsi
call fcn.14000bb18
movaps xmm5, xmmword [rsp + 0x130]
movdqa xmmword [rsp + 0x330], xmm5
mov eax, dword [rsp + 0xb0]
mov dword [rsp + 0x330], eax
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x338], eax
lea rdx, [rsp + 0x330]
mov rcx, rsi
call fcn.14000bb18
test byte [rdi + 0x3cc], 2
je 0x14009a88f
cmp dword [rdi + 0x3e0], 0
je 0x14009a7f4
mov rax, qword [rdi]
mov r9b, 1
lea r8, [rsp + 0x300]
mov edx, 0xfffffffe
mov rcx, rdi
call qword [rax + 0x548]
lea rdx, [rsp + 0x300]
mov rcx, rsi
call fcn.14000bb18
movaps xmm5, xmmword [rsp + 0x300]
movdqa xmmword [rsp + 0x320], xmm5
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [rsp + 0x320]
call qword [sym.imp.USER32.dll_InflateRect]
mov r11d, dword [rsp + 0xb0]
mov dword [rsp + 0x320], r11d
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x328], eax
lea rdx, [rsp + 0x320]
mov rcx, rsi
call fcn.14000bb18
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x5b0]
mov r14d, eax
cmp dword [rdi + 0x3e0], eax
je 0x14009a88f
mov r10, qword [rdi]
mov r9b, 1
lea r8, [rsp + 0x2d0]
mov edx, 0xfffffffd
mov rcx, rdi
call qword [r10 + 0x548]
lea rdx, [rsp + 0x2d0]
mov rcx, rsi
call fcn.14000bb18
movaps xmm5, xmmword [rsp + 0x2d0]
movdqa xmmword [rsp + 0x2f0], xmm5
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [rsp + 0x2f0]
call qword [sym.imp.USER32.dll_InflateRect]
mov r11d, dword [rsp + 0xb0]
mov dword [rsp + 0x2f0], r11d
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x2f8], eax
lea rdx, [rsp + 0x2f0]
mov rcx, rsi
call fcn.14000bb18
mov ecx, dword [rsp + 0x84]
cmp ecx, dword [rsp + 0xb4]
jl 0x14009a8d0
movaps xmm0, xmmword [rsp + 0xb0]
movdqa xmmword [rsp + 0x3d0], xmm0
mov eax, dword [rsp + 0x144]
add ecx, eax
mov dword [rsp + 0x3dc], ecx
lea rdx, [rsp + 0x3d0]
mov rcx, rsi
call fcn.14000bb18
mov eax, dword [rsp + 0x8c]
cmp eax, dword [rsp + 0xbc]
jg 0x14009a90f
movaps xmm0, xmmword [rsp + 0xb0]
movdqa xmmword [rsp + 0x3c0], xmm0
sub eax, dword [rsp + 0x14c]
mov dword [rsp + 0x3c4], eax
lea rdx, [rsp + 0x3c0]
mov rcx, rsi
call fcn.14000bb18
mov rax, qword [rdi]
mov rdx, rsi
mov rcx, rdi
call qword [rax + 0x4e8]
xor eax, eax
mov dword [rsp + 0xa0], eax
mov dword [rsp + 0xa4], eax
lea rcx, [rsp + 0xa0]
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rsp + 0xa0]
mov rcx, qword [rdi + 0x40]
call qword [sym.imp.USER32.dll_ScreenToClient]
xor edx, edx
mov rcx, rsi
call fcn.14000c278
test byte [rdi + 0x3cc], 4
je 0x14009a9ca
cmp qword [0x1402728c0], 0
jne 0x14009a989
mov rdx, qword [rsp + 0xa0]
lea rcx, [rsp + 0x2e0]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x14009a989
mov bl, 1
jmp 0x14009a98b
xor bl, bl
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], rdi
mov byte [rsp + 0x20], bl
movzx r9d, bl
lea r8, [rsp + 0x2e0]
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x1c0]
test r13b, r13b
je 0x14009aa44
mov rdx, qword [rsp + 0xa0]
lea rcx, [rsp + 0x130]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
setne bl
test bl, bl
je 0x14009aa07
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x298]
movzx ebx, bl
test al, al
mov eax, 0
cmovne ebx, eax
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
xor ecx, ecx
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rdi
mov byte [rsp + 0x20], bl
movzx r9d, bl
lea r8, [rsp + 0x130]
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x1d0]
test byte [rdi + 0x3cc], 2
je 0x14009ab64
cmp dword [rdi + 0x3e0], 0
je 0x14009aad7
mov rdx, qword [rsp + 0xa0]
lea rcx, [rsp + 0x300]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x14009aa83
cmp qword [0x1402728c0], 0
jne 0x14009aa83
mov r13b, 1
jmp 0x14009aa86
xor r13b, r13b
cmp dword [rdi + 0x450], 0
setg bl
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
xor ecx, ecx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x30], rdi
lea rcx, [rsp + 0x300]
mov qword [rsp + 0x28], rcx
mov byte [rsp + 0x20], 1
movzx r9d, bl
movzx r8d, r13b
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x1c8]
cmp dword [rdi + 0x3e0], r14d
je 0x14009ab69
mov rdx, qword [rsp + 0xa0]
lea rcx, [rsp + 0x2d0]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x14009ab0d
cmp qword [0x1402728c0], 0
jne 0x14009ab0d
mov r13b, 1
jmp 0x14009ab10
xor r13b, r13b
cmp dword [rdi + 0x450], 0
setl bl
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
xor r14d, r14d
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], rdi
lea rcx, [rsp + 0x2d0]
mov qword [rsp + 0x28], rcx
mov byte [rsp + 0x20], r14b
movzx r9d, bl
movzx r8d, r13b
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x1c8]
jmp 0x14009ab6c
xor r14d, r14d
jmp 0x14009ab6c
xor r14d, r14d
mov ecx, dword [rdi + 0x454]
test ecx, ecx
je 0x14009abfe
movaps xmm0, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x150], xmm0
mov eax, dword [rsp + 0x80]
add ecx, eax
mov dword [rsp + 0x158], ecx
xor r8d, r8d
mov edx, dword [rsp + 0x140]
lea rcx, [rsp + 0x150]
call qword [sym.imp.USER32.dll_OffsetRect]
mov r11d, dword [rsp + 0x144]
add dword [rsp + 0x154], r11d
mov eax, dword [rsp + 0x14c]
sub dword [rsp + 0x15c], eax
mov qword [rsp + 0x3f0], rsi
lea rax, [rsp + 0x150]
mov qword [rsp + 0x3f8], rax
mov qword [rsp + 0x400], rdi
lea rcx, [rsp + 0x3f0]
call fcn.140079670
test byte [rdi + 0xe0], 2
je 0x14009ae74
xor edx, edx
mov rcx, rsi
call fcn.14000c278
lea rcx, [rsp + 0x350]
mov eax, dword [rdi + 0xb0]
mov dword [rcx], eax
mov eax, dword [rdi + 0xb4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0xb8]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0xbc]
mov dword [rcx + 0xc], eax
lea rdx, [rsp + 0x350]
mov rcx, rdi
call fcn.14000c344
mov r11, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [r11 + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
mov ecx, dword [rdi + 0x134]
mov dword [rsp + 0x20], ecx
lea r9, [rsp + 0x80]
lea r8, [rsp + 0x350]
mov rdx, rsi
mov rcx, rax
call qword [r10 + 0x360]
xor edx, edx
mov rcx, rsi
call fcn.14000c278
cmp qword [rdi + 0xf0], 0
je 0x14009ae74
lea rcx, [rsp + 0x270]
call fcn.14000bda0
nop
lea rax, vtable.CExtMemoryDC.0
mov qword [rsp + 0x270], rax
mov qword [rsp + 0x298], r14
lea r13, vtable.CBitmap.0
mov qword [rsp + 0x290], r13
mov qword [rsp + 0x2a0], r14
mov qword [rsp + 0x2a8], r14
mov dword [rsp + 0x2b0], r14d
mov dword [rsp + 0x2b4], r14d
mov dword [rsp + 0x2b8], r14d
mov dword [rsp + 0x2bc], r14d
and byte [rsp + 0x2c0], 0xfe
mov qword [rsp + 0x2c8], r14
cmp qword [rsi + 8], 0
je 0x14009ad48
mov r9d, 0x21
lea r8, [rsp + 0x350]
mov rdx, rsi
lea rcx, [rsp + 0x270]
call fcn.14004aa60
nop
mov eax, dword [rdi + 0x134]
mov dword [rsp + 0x20], eax
lea r9, [rdi + 0xb0]
mov r8, rdi
lea rdx, [rsp + 0x270]
mov rcx, qword [rdi + 0xe8]
call qword [rdi + 0xf0]
nop
lea rax, vtable.CExtMemoryDC.0
mov qword [rsp + 0x270], rax
mov rcx, qword [rsp + 0x2a8]
test rcx, rcx
je 0x14009ae51
test byte [rsp + 0x2c0], 1
je 0x14009ae13
mov r10d, dword [rsp + 0x2bc]
mov r8d, dword [rsp + 0x2b4]
sub r10d, r8d
mov r9d, dword [rsp + 0x2b8]
mov edx, dword [rsp + 0x2b0]
sub r9d, edx
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], r8d
mov dword [rsp + 0x30], edx
mov rax, qword [rsp + 0x278]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.GDI32.dll_BitBlt]
mov rdx, qword [rsp + 0x2a0]
test rdx, rdx
jne 0x14009ae00
mov rdx, r14
jmp 0x14009ae04
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0x278]
call fcn.14000cabc
jmp 0x14009ae23
mov qword [rsp + 0x280], r14
mov qword [rsp + 0x278], r14
mov qword [rsp + 0x2a8], r14
mov qword [rsp + 0x2a0], r14
lea rcx, [rsp + 0x2b0]
call qword [sym.imp.USER32.dll_SetRectEmpty]
and byte [rsp + 0x2c0], 0xfe
mov qword [rsp + 0x2c8], r14
mov qword [rsp + 0x290], r13
lea rcx, [rsp + 0x290]
call fcn.14000cc4c
nop
lea rcx, [rsp + 0x270]
call fcn.14000c70c
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x338]
mov r13d, eax
bt eax, 0x15
jae 0x14009b09d
or ebx, 0xffffffff
bt eax, 0x17
jae 0x14009af96
xor edx, edx
mov rcx, rsi
call fcn.14000c278
mov r9, rsi
mov r8d, 0x800000
mov rdx, rdi
lea rcx, [rsp + 0x440]
call fcn.140084c50
nop
lea rcx, [rsp + 0x45c]
mov eax, dword [rdi + 0x440]
mov dword [rcx], eax
mov eax, dword [rdi + 0x444]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0x448]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0x44c]
mov dword [rcx + 0xc], eax
mov eax, dword [rsp + 0x464]
sub eax, dword [rsp + 0x45c]
mov dword [rsp + 0x458], eax
cmp dword [rdi + 0x3c0], 0xfffffff9
sete al
movzx ecx, byte [rsp + 0x46c]
xor al, cl
and al, 1
xor cl, al
mov byte [rsp + 0x46c], cl
test cl, 1
je 0x14009af47
lea ecx, [rbx + 2]
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x14009af40
mov al, 1
mov cl, byte [rsp + 0x46c]
jmp 0x14009af49
mov cl, byte [rsp + 0x46c]
xor eax, eax
add al, al
xor al, cl
and al, 2
xor cl, al
mov byte [rsp + 0x46c], cl
lea rcx, [rsp + 0x440]
call fcn.14007f170
nop
mov rdx, qword [rsp + 0x4c0]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14009af89
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x470]
call fcn.1400bcb00
bt r13d, 0x16
jae 0x14009b09d
xor edx, edx
mov rcx, rsi
call fcn.14000c278
mov r9, rsi
mov r8d, 0x400000
mov rdx, rdi
lea rcx, [rsp + 0x4d0]
call fcn.140084c50
nop
lea rcx, [rsp + 0x4ec]
mov eax, dword [rdi + 0x430]
mov dword [rcx], eax
mov eax, dword [rdi + 0x434]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0x438]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0x43c]
mov dword [rcx + 0xc], eax
mov eax, dword [rsp + 0x4f4]
sub eax, dword [rsp + 0x4ec]
mov dword [rsp + 0x4e8], eax
cmp dword [rdi + 0x3c0], 0xfffffffa
sete al
movzx edx, byte [rsp + 0x4fc]
xor al, dl
and al, 1
xor dl, al
mov byte [rsp + 0x4fc], dl
test dl, 1
je 0x14009b050
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x14009b049
mov al, 1
mov dl, byte [rsp + 0x4fc]
jmp 0x14009b052
mov dl, byte [rsp + 0x4fc]
xor eax, eax
add al, al
xor al, dl
and al, 2
xor dl, al
mov byte [rsp + 0x4fc], dl
lea rcx, [rsp + 0x4d0]
call fcn.14007f170
nop
mov rdx, qword [rsp + 0x550]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14009b090
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x500]
call fcn.1400bcb00
mov rax, qword [rsi]
mov rdx, qword [rsp + 0x360]
mov rcx, rsi
call qword [rax + 0x50]
cmp byte [rsp + 0x5c0], 0
je 0x14009b1a4
test r15, r15
je 0x14009b0d4
xor r8d, r8d
mov rdx, r15
lea rcx, [rsp + 0xd0]
call fcn.14000cb94
mov rcx, qword [rsp + 0x108]
test rcx, rcx
je 0x14009b1a4
test byte [rsp + 0x120], 1
je 0x14009b166
mov r10d, dword [rsp + 0x11c]
mov r8d, dword [rsp + 0x114]
sub r10d, r8d
mov r9d, dword [rsp + 0x118]
mov edx, dword [rsp + 0x110]
sub r9d, edx
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], r8d
mov dword [rsp + 0x30], edx
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.GDI32.dll_BitBlt]
mov rdx, qword [rsp + 0x100]
test rdx, rdx
jne 0x14009b153
mov rdx, r14
jmp 0x14009b157
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0xd8]
call fcn.14000cabc
jmp 0x14009b176
mov qword [rsp + 0xe0], r14
mov qword [rsp + 0xd8], r14
mov qword [rsp + 0x108], r14
mov qword [rsp + 0x100], r14
lea rcx, [rsp + 0x110]
call qword [sym.imp.USER32.dll_SetRectEmpty]
and byte [rsp + 0x120], 0xfe
mov qword [rsp + 0x128], r14
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x2c0]
test al, al
je 0x14009b514
test byte [rdi + 0x128], 1
je 0x14009b514
mov r13d, dword [rsp + 0x5c8]
test r13d, r13d
jle 0x14009b514
xor edx, edx
mov rcx, r12
call fcn.14000c278
mov dword [rsp + 0x170], r14d
mov dword [rsp + 0x174], r14d
mov dword [rsp + 0x178], r14d
mov dword [rsp + 0x17c], r14d
mov dword [rsp + 0x180], r14d
mov dword [rsp + 0x184], r14d
mov dword [rsp + 0x188], r14d
mov dword [rsp + 0x18c], r14d
mov dword [rsp + 0x160], r14d
mov dword [rsp + 0x164], r14d
mov dword [rsp + 0x168], r14d
mov dword [rsp + 0x16c], r14d
mov rbx, r14
mov rcx, qword [0x1402728c0]
test rcx, rcx
je 0x14009b2a1
test byte [rcx + 0x68], 2
jne 0x14009b2a1
cmp qword [rcx + 0x20], 0
je 0x14009b2a1
mov rcx, qword [rcx + 0x20]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x14009b29a
mov rcx, qword [0x1402728c0]
mov rbx, qword [rcx + 0x20]
test rbx, rbx
je 0x14009b2a1
mov edx, 0xfffffff0
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1c
cmovae rbx, r14
mov rcx, qword [0x1402728c0]
jmp 0x14009b2a1
mov rcx, qword [0x1402728c0]
test byte [rdi + 0xe0], 2
je 0x14009b475
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x2c0]
test al, al
je 0x14009b423
test byte [rdi + 0x128], 1
je 0x14009b423
test byte [rdi + 0x3cc], 1
je 0x14009b423
lea rcx, [rsp + 0x180]
mov eax, dword [rdi + 0xb0]
mov dword [rcx], eax
mov eax, dword [rdi + 0xb4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0xb8]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0xbc]
mov dword [rcx + 0xc], eax
lea rcx, [rsp + 0x170]
mov eax, dword [rdi + 0xb0]
mov dword [rcx], eax
mov eax, dword [rdi + 0xb4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0xb8]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0xbc]
mov dword [rcx + 0xc], eax
lea rdx, [rsp + 0x170]
mov rcx, rdi
call fcn.14000c344
lea rdx, [rsp + 0x80]
mov rcx, r12
call fcn.14000bb18
movaps xmm5, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x160], xmm5
lea rdx, [rsp + 0x160]
mov rcx, rdi
call fcn.14000c39c
mov rcx, qword [0x1402728c0]
test rcx, rcx
je 0x14009b39a
add rcx, 0x58
call qword [sym.imp.USER32.dll_IsRectEmpty]
test eax, eax
jne 0x14009b39a
mov rsi, qword [0x1402728c0]
add rsi, 0x58
jmp 0x14009b39d
mov rsi, r14
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov rdx, rax
lea rcx, [rdi + 0x1d8]
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x68], rbx
mov rax, qword [rdi + 0x40]
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x50], 1
mov byte [rsp + 0x48], 1
mov dword [rsp + 0x40], 0x64
mov dword [rsp + 0x38], 0x4b
mov dword [rsp + 0x30], r13d
lea rax, [rsp + 0x160]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x180]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x170]
mov r8, r12
call fcn.140095040
xor edx, edx
mov rcx, r12
call fcn.14000c278
lea rcx, [rsp + 0x3a8]
mov eax, dword [rdi + 0xb0]
mov dword [rcx], eax
mov eax, dword [rdi + 0xb4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0xb8]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0xbc]
mov dword [rcx + 0xc], eax
lea rdx, [rsp + 0x3a8]
mov rcx, rdi
call fcn.14000c344
lea rdx, [rsp + 0x3a8]
mov rcx, r12
call fcn.14000bb18
mov rcx, qword [0x1402728c0]
test rcx, rcx
je 0x14009b495
add rcx, 0x58
call qword [sym.imp.USER32.dll_IsRectEmpty]
test eax, eax
jne 0x14009b495
mov rsi, qword [0x1402728c0]
add rsi, 0x58
jmp 0x14009b498
mov rsi, r14
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov rdx, rax
lea rcx, [rdi + 0x138]
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x68], rbx
mov rax, qword [rdi + 0x40]
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x50], 1
mov byte [rsp + 0x48], 1
mov dword [rsp + 0x40], 0x64
mov dword [rsp + 0x38], 0x4b
mov dword [rsp + 0x30], r13d
lea rax, [rsp + 0x180]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x160]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x80]
mov r8, r12
call fcn.140095040
test byte [rdi + 0xe0], 2
je 0x14009b922
xor edx, edx
mov rcx, r12
call fcn.14000c278
lea rcx, [rsp + 0x310]
mov eax, dword [rdi + 0xb0]
mov dword [rcx], eax
mov eax, dword [rdi + 0xb4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 0xb8]
mov dword [rcx + 8], eax
mov eax, dword [rdi + 0xbc]
mov dword [rcx + 0xc], eax
lea rdx, [rsp + 0x310]
mov rcx, rdi
call fcn.14000c344
movaps xmm5, xmmword [rsp + 0x310]
movdqa xmmword [rsp + 0x410], xmm5
lea rcx, [rsp + 0x190]
call fcn.14000bda0
nop
lea r13, vtable.CExtMemoryDC.0
mov qword [rsp + 0x190], r13
mov qword [rsp + 0x1b8], r14
lea rsi, vtable.CBitmap.0
mov qword [rsp + 0x1b0], rsi
mov qword [rsp + 0x1c0], r14
mov qword [rsp + 0x1c8], r14
mov dword [rsp + 0x1d0], r14d
mov dword [rsp + 0x1d4], r14d
mov dword [rsp + 0x1d8], r14d
mov dword [rsp + 0x1dc], r14d
and byte [rsp + 0x1e0], 0xfe
mov qword [rsp + 0x1e8], r14
cmp qword [r12 + 8], 0
je 0x14009b612
mov r9d, 3
lea r8, [rsp + 0x410]
mov rdx, r12
lea rcx, [rsp + 0x190]
call fcn.14004aa60
nop
mov rax, qword [rdi + 0xa8]
lea rcx, [rdi + 0xa8]
call qword [rax + 0x20]
mov r10, qword [rax]
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
mov ecx, dword [rdi + 0x134]
mov dword [rsp + 0x20], ecx
lea r9, [rsp + 0x80]
lea r8, [rsp + 0x310]
lea rdx, [rsp + 0x190]
mov rcx, rax
call qword [r10 + 0x360]
cmp qword [rdi + 0xf0], 0
je 0x14009b825
lea rcx, [rsp + 0x210]
call fcn.14000bda0
nop
mov qword [rsp + 0x210], r13
mov qword [rsp + 0x238], r14
mov qword [rsp + 0x230], rsi
mov qword [rsp + 0x240], r14
mov qword [rsp + 0x248], r14
mov dword [rsp + 0x250], r14d
mov dword [rsp + 0x254], r14d
mov dword [rsp + 0x258], r14d
mov dword [rsp + 0x25c], r14d
and byte [rsp + 0x260], 0xfe
mov qword [rsp + 0x268], r14
cmp qword [rsp + 0x198], 0
je 0x14009b6ff
mov r9d, 0x21
lea r8, [rsp + 0x310]
lea rdx, [rsp + 0x190]
lea rcx, [rsp + 0x210]
call fcn.14004aa60
nop
mov eax, dword [rdi + 0x134]
mov dword [rsp + 0x20], eax
lea r9, [rdi + 0xb0]
mov r8, rdi
lea rdx, [rsp + 0x210]
mov rcx, qword [rdi + 0xe8]
call qword [rdi + 0xf0]
nop
mov qword [rsp + 0x210], r13
mov rcx, qword [rsp + 0x248]
test rcx, rcx
je 0x14009b801
test byte [rsp + 0x260], 1
je 0x14009b7c3
mov r10d, dword [rsp + 0x25c]
mov r8d, dword [rsp + 0x254]
sub r10d, r8d
mov r9d, dword [rsp + 0x258]
mov edx, dword [rsp + 0x250]
sub r9d, edx
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], r8d
mov dword [rsp + 0x30], edx
mov rax, qword [rsp + 0x218]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.GDI32.dll_BitBlt]
mov rdx, qword [rsp + 0x240]
test rdx, rdx
jne 0x14009b7b0
mov rdx, r14
jmp 0x14009b7b4
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0x218]
call fcn.14000cabc
jmp 0x14009b7d3
mov qword [rsp + 0x220], r14
mov qword [rsp + 0x218], r14
mov qword [rsp + 0x248], r14
mov qword [rsp + 0x240], r14
lea rcx, [rsp + 0x250]
call qword [sym.imp.USER32.dll_SetRectEmpty]
and byte [rsp + 0x260], 0xfe
mov qword [rsp + 0x268], r14
mov qword [rsp + 0x230], rsi
lea rcx, [rsp + 0x230]
call fcn.14000cc4c
nop
lea rcx, [rsp + 0x210]
call fcn.14000c70c
nop
mov qword [rsp + 0x190], r13
mov rcx, qword [rsp + 0x1c8]
test rcx, rcx
je 0x14009b8fd
test byte [rsp + 0x1e0], 1
je 0x14009b8bf
mov r10d, dword [rsp + 0x1dc]
mov r8d, dword [rsp + 0x1d4]
sub r10d, r8d
mov r9d, dword [rsp + 0x1d8]
mov edx, dword [rsp + 0x1d0]
sub r9d, edx
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], r8d
mov dword [rsp + 0x30], edx
mov rax, qword [rsp + 0x198]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.GDI32.dll_BitBlt]
mov rdx, qword [rsp + 0x1c0]
test rdx, rdx
jne 0x14009b8ac
mov rdx, r14
jmp 0x14009b8b0
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0x198]
call fcn.14000cabc
jmp 0x14009b8cf
mov qword [rsp + 0x1a0], r14
mov qword [rsp + 0x198], r14
mov qword [rsp + 0x1c8], r14
mov qword [rsp + 0x1c0], r14
lea rcx, [rsp + 0x1d0]
call qword [sym.imp.USER32.dll_SetRectEmpty]
and byte [rsp + 0x1e0], 0xfe
mov qword [rsp + 0x1e8], r14
mov qword [rsp + 0x1b0], rsi
lea rcx, [rsp + 0x1b0]
call fcn.14000cc4c
nop
lea rcx, [rsp + 0x190]
call fcn.14000c70c
jmp 0x14009b930
lea rsi, vtable.CBitmap.0
lea r13, vtable.CExtMemoryDC.0
mov rdx, qword [rsp + 0x200]
test rdx, rdx
je 0x14009b949
xor r8d, r8d
mov rcx, r12
call fcn.14000cb94
nop
mov qword [rsp + 0xd0], r13
mov rcx, qword [rsp + 0x108]
test rcx, rcx
je 0x14009ba21
test byte [rsp + 0x120], 1
je 0x14009b9e3
mov r10d, dword [rsp + 0x11c]
mov r8d, dword [rsp + 0x114]
sub r10d, r8d
mov r9d, dword [rsp + 0x118]
mov edx, dword [rsp + 0x110]
sub r9d, edx
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], r8d
mov dword [rsp + 0x30], edx
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.GDI32.dll_BitBlt]
mov rdx, qword [rsp + 0x100]
test rdx, rdx
jne 0x14009b9d0
mov rdx, r14
jmp 0x14009b9d4
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0xd8]
call fcn.14000cabc
jmp 0x14009b9f3
mov qword [rsp + 0xe0], r14
mov qword [rsp + 0xd8], r14
mov qword [rsp + 0x108], r14
mov qword [rsp + 0x100], r14
lea rcx, [rsp + 0x110]
call qword [sym.imp.USER32.dll_SetRectEmpty]
and byte [rsp + 0x120], 0xfe
mov qword [rsp + 0x128], r14
mov qword [rsp + 0xf0], rsi
lea rcx, [rsp + 0xf0]
call fcn.14000cc4c
nop
lea rcx, [rsp + 0xd0]
call fcn.14000c70c
add rsp, 0x568
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret