Function at 0x409572
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
lea ebp, [esp - 0x7d0]
sub esp, 0x850
mov eax, dword [0x437b00]
xor eax, ebp
mov dword [ebp + 0x7cc], eax
mov eax, dword [ebp + 0x7d8]
mov ecx, dword [ebp + 0x7dc]
mov edx, dword [0x43b218]
and dword [0x43b534], 0
and dword [0x43b8ac], 0
mov dword [ebp - 0x3c], eax
mov eax, dword [0x43b8a8]
imul eax, eax, 0x30
push ebx
add eax, 0x43b2e0
push esi
push edi
mov dword [ebp - 0x38], ecx
mov dword [0x436038], eax
mov dword [0x43ca44], 1
mov dword [0x43b53c], edx
mov dword [0x43b888], 0x10
test ecx, ecx
je 0x409650
mov esi, dword [sym.imp.PPLIB32W.DLL__GetCustTable_16]
mov ebx, 0x800
push ebx
lea eax, [ebp - 0x34]
push eax
push ecx
mov edi, str.XV_opts
push edi
call esi
test eax, eax
je 0x409633
push 0x43b8b8
call dword [sym.imp.PPLIB32W.DLL__VFSFindLastEntry_4]
push eax
mov dword [ebp - 0x40], eax
call dword [sym.imp.PPLIB32W.DLL__FindExtSeparator_4]
mov ecx, dword [ebp - 0x40]
lea eax, [ecx + eax*2]
cmp word [eax], 0
je 0x409626
inc eax
inc eax
push ebx
lea ecx, [ebp - 0x34]
push ecx
push eax
push edi
call esi
test eax, eax
jne 0x40964b
push 0
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.004134a8
lea eax, [ebp - 0x80]
push eax
call fcn.00407cea
mov eax, dword [0x436038]
xor ebx, ebx
cmp dword [ebp - 0x3c], ebx
je 0x409664
push dword [ebp - 0x3c]
call fcn.00407cea
mov eax, dword [0x436038]
mov ecx, dword [0x43b8a8]
dec ecx
je 0x409ac7
dec ecx
je 0x409a5a
dec ecx
je 0x4099e1
dec ecx
je 0x409910
dec ecx
jne 0x409b28
push 0x10
pop edi
push 0x18
mov dword [0x43b8ac], edi
pop esi
cmp dword [0x438af4], ebx
jne 0x4096e4
mov dword [0x438af4], 1
mov dword [eax + 0x10], esi
cmp dword [0x436004], ebx
jge 0x4096d0
mov ecx, dword [0x436870]
cmp ecx, ebx
mov eax, dword [0x436008]
jle 0x4096cb
imul eax, eax, 0x64
cdq
idiv ecx
mov dword [0x436004], eax
push str.NRGUWidth_change:_drag_status__________
push 0x20000000
call fcn.00417cf8
mov eax, dword [0x436038]
xor ecx, ecx
inc ecx
mov dword [0x43a404], ecx
mov dword [0x43a408], ecx
mov word [0x43a40c], cx
mov ecx, dword [0x43ca54]
mov dword [0x43a400], 0x28
mov dx, word [eax + 0x10]
and dx, 0x3f
mov word [0x43a40e], dx
mov dword [0x43a414], ebx
mov dword [0x43a418], ebx
mov dword [0x43a41c], ebx
cmp ecx, ebx
je 0x409748
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [0x436038]
mov dx, word [0x43a40e]
mov dword [0x43ca54], ebx
mov ecx, 0x43a400
mov dword [0x43ca60], ecx
mov dword [0x43ca64], ecx
mov ecx, dword [0x43bd68]
mov dword [0x43ca58], ecx
mov ecx, dword [eax + 0x10]
cmp ecx, edi
jl 0x40986e
sub ecx, esi
neg ecx
sbb ecx, ecx
and ecx, 3
mov dword [0x43a410], ecx
mov dword [0x43a420], ebx
mov dword [0x43a424], ebx
mov dword [0x43a434], ebx
cmp dx, di
jne 0x4097e6
test byte [eax + 0x10], 0x40
push 0x1f
pop ecx
mov dword [0x43a430], ecx
je 0x4097d5
mov edx, 0xf800
mov dword [0x43a428], edx
mov dword [0x43a42c], 0x7e0
test byte [eax + 0x10], 0x80
je 0x409906
mov dword [0x43a430], edx
mov dword [0x43a428], ecx
jmp 0x409906
mov edx, 0x7c00
mov dword [0x43a42c], 0x3e0
jmp 0x409806
test byte [eax + 0x10], 0x40
je 0x409827
mov ecx, 0x3ff
mov edx, 0x3ff00000
mov dword [0x43a42c], 0xffc00
mov dword [0x43a430], ecx
mov dword [0x43a428], edx
test byte [eax + 0x10], 0x80
je 0x409906
mov dword [0x43a428], ecx
mov dword [0x43a430], edx
jmp 0x409906
mov esi, 0xff0000
mov ecx, 0xff
mov dword [0x43a428], esi
mov dword [0x43a42c], 0xff00
mov dword [0x43a430], ecx
test byte [eax + 0x10], 0x80
je 0x409859
mov dword [0x43a428], ecx
mov dword [0x43a430], esi
cmp dx, 0x20
jne 0x409906
mov dword [0x43ca70], ebx
jmp 0x409906
movzx eax, dx
dec eax
mov dword [0x43a410], ebx
je 0x4098bf
sub eax, 7
jne 0x4098af
mov eax, edi
mov ecx, eax
and ecx, 0xc0
shl ecx, 6
mov edx, eax
and edx, 0x38
or ecx, edx
shl ecx, 5
mov edx, eax
and edx, 7
or ecx, edx
shl ecx, 5
mov dword [eax*4 + 0x43a428], ecx
inc eax
cmp eax, 0x100
jl 0x409881
mov ecx, edi
mov esi, 0x42df80
mov edi, 0x43a428
rep movsd dword es:[edi], dword [esi]
jmp 0x4098cf
mov dword [0x43a428], ebx
mov dword [0x43a42c], 0xffffff
mov eax, dword [0x43a420]
shl eax, 0x10
add eax, 0x300
push 0x43a424
mov dword [0x43a424], eax
call dword [sym.imp.GDI32.dll_CreatePalette]
mov cl, byte [0x43a40e]
mov dword [0x43ca54], eax
xor eax, eax
inc eax
shl eax, cl
mov dword [0x43a420], eax
mov dword [0x43a424], eax
call fcn.0040665f
jmp 0x409b23
mov edx, dword [0x43bd68]
mov dword [0x43b8ac], 4
mov edx, dword [edx]
mov ecx, str.GIF8
cmp edx, dword [ecx]
jne 0x409936
push ebx
call fcn.00408810
mov eax, dword [0x436038]
mov edx, dword [0x43bd68]
mov edx, dword [edx]
mov ecx, 0x42e370
cmp edx, dword [ecx]
jne 0x409952
push ebx
call fcn.00408592
mov eax, dword [0x436038]
mov edx, dword [0x43bd68]
mov edx, dword [edx]
mov ecx, 0x42e36c
cmp edx, dword [ecx]
jne 0x40996e
push ebx
call fcn.004067d7
mov eax, dword [0x436038]
mov edx, dword [0x43bd68]
mov edx, dword [edx]
mov ecx, 0x42e364
cmp edx, dword [ecx]
jne 0x40998a
push ebx
call fcn.004067d7
mov eax, dword [0x436038]
cmp dword [0x43ca64], ebx
jne 0x4099ab
mov eax, dword [0x43ca60]
push 0x43b8a0
mov dword [0x43ca64], eax
call fcn.0040565a
mov eax, dword [0x436038]
mov ecx, dword [0x43ca60]
cmp word [ecx + 0xe], 0x20
jne 0x409b28
cmp dword [ecx + 0x10], 3
je 0x4099cd
mov dword [0x43ca70], ebx
jmp 0x409b28
cmp dword [ecx], 0x38
jb 0x409b28
cmp dword [ecx + 0x34], ebx
je 0x409b28
jmp 0x4099c2
xor edx, edx
inc edx
cmp dword [0x43b8b0], ebx
jne 0x4099f2
mov dword [0x43b8b0], edx
cmp dword [eax + 0x24], ebx
jne 0x409a12
mov ecx, dword [0x4367f4]
mov dword [eax + 0x24], ecx
mov dword [0x43b8ac], edx
push edx
push ebx
call fcn.004123ad
jmp 0x409b23
mov ecx, dword [0x43ca34]
cmp ecx, ebx
je 0x409a49
cmp ecx, dword [0x4367f4]
je 0x409a49
mov dword [eax + 0x24], ecx
mov eax, dword [0x43ca3c]
push edx
push ebx
mov dword [0x436800], eax
mov dword [0x43b250], ebx
mov dword [0x43b238], edx
call fcn.004123ad
mov eax, dword [0x436038]
mov ecx, dword [0x43b8b0]
mov dword [0x43b8ac], ecx
jmp 0x409b28
mov dword [0x43b8ac], 1
cmp dword [eax + 0x24], ebx
jne 0x409b28
mov ecx, dword [eax + 0x10]
cmp ecx, ebx
jl 0x409a79
cmp ecx, 0xe
jl 0x409aae
push dword [0x43bd70]
push dword [0x43bd68]
call fcn.00407fd6
mov ecx, dword [0x436038]
mov dword [ecx + 0x10], eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 0x10]
cmp ecx, 0xe
jl 0x409aae
add ecx, 0xfffffff2
push ecx
call fcn.00406635
mov eax, dword [0x436038]
mov ecx, dword [0x43bd68]
mov dword [eax + 0x24], ecx
mov eax, dword [0x43bd70]
mov dword [0x436800], eax
push ebx
jmp 0x409a07
mov dword [0x43b8ac], 2
cmp dword [eax + 0x24], ebx
jne 0x409b10
mov dword [eax + 0x14], 0x4b
mov eax, dword [0x43bd70]
mov ecx, dword [0x436038]
add eax, 0xf
shr eax, 4
mov dword [ecx + 0x1c], eax
mov eax, dword [0x436038]
mov dword [eax + 0x20], 1
mov eax, dword [0x436038]
mov ecx, dword [0x43bd68]
mov dword [eax + 0x24], ecx
mov eax, dword [0x436038]
mov ecx, dword [eax + 0x10]
cmp ecx, ebx
jl 0x409b1c
cmp ecx, 0xe
jl 0x409b28
mov dword [eax + 0x10], 3
mov eax, dword [0x436038]
cmp dword [0x43cae0], ebx
jg 0x409b9f
mov ecx, dword [0x43b8a8]
mov dword [0x43cae0], ecx
mov ecx, dword [eax + 0x10]
or dword [0x43cb04], 0xffffffff
mov dword [0x43cae8], ecx
mov ecx, dword [0x43b53c]
mov dword [0x43caec], ecx
mov ecx, dword [0x43b250]
mov dword [0x43caf0], ecx
mov ecx, dword [0x43cb40]
mov dword [0x43caf4], ecx
mov ecx, dword [0x43b238]
mov dword [0x43caf8], ecx
mov eax, dword [eax + 0x14]
or dword [0x43cb0c], 0xffffffff
mov dword [0x43cb08], eax
mov eax, dword [0x43ca8c]
mov dword [0x43cb14], eax
mov eax, dword [0x43b2d8]
mov dword [0x43cb18], eax
cmp dword [0x43b8ac], 1
jne 0x409bec
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x13
call esi
cmp dword [0x43ca44], ebx
je 0x409bec
mov edi, 0x3e8
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
add ecx, edi
cmp ecx, dword [eax + 0x1c]
jl 0x409bec
push edi
push 1
call fcn.004123ad
push 0x13
call esi
mov ecx, 0x8001
test cx, ax
jne 0x409bec
cmp dword [0x43ca44], ebx
jne 0x409bbf
cmp dword [ebp - 0x38], ebx
je 0x409bfa
cmp dword [0x436870], 0xfffffffe
jl 0x409bff
call fcn.0041864a
cmp dword [0x43903c], ebx
jne 0x409c28
test byte [0x43b8ac], 3
je 0x409c20
cmp dword [0x43ca44], ebx
je 0x409c20
cmp dword [0x43bd70], ebx
ja 0x409c28
mov dword [0x436804], ebx
jmp 0x409c4a
push 0x408d81
push 0x64
push 0xcf
push dword [0x43b52c]
mov dword [0x439034], 1
call dword [sym.imp.USER32.dll_SetTimer]
mov ecx, dword [ebp + 0x7cc]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422725
add ebp, 0x7d0
leave
ret 8