Function at 0x437750
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x4b34c4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push ebx
mov ebx, ecx
push esi
mov dword [ebp - 0x30], eax
mov eax, dword [ebx - 0x310]
push edi
lea ecx, [ebx - 0x310]
call dword [eax + 0xc8]
test al, al
je 0x4377cd
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0xd4]
test al, al
je 0x4377cd
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0xdc]
mov edi, dword [ebp + 8]
test al, al
jne 0x4377bb
lea eax, [edi - 0x200]
cmp eax, 0xd
jbe 0x4377cd
cmp edi, 0x20a
jne 0x4377e0
test byte [ebp + 0xc], 8
jne 0x437853
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042097b
leave
ret 0x10
cmp edi, 0x10f
jne 0x437853
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_char_const____thiscall_DuiLib::CDuiString::operator_char_const__void_const
push eax
call sub.IMM32.dll_ImmGetContext
mov edi, eax
test edi, edi
je 0x4377cd
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x20]
push eax
push edi
mov dword [ebp - 0x20], 2
call sub.IMM32.dll_ImmSetCompositionWindow
mov eax, dword [ebx - 0x310]
push edi
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_char_const____thiscall_DuiLib::CDuiString::operator_char_const__void_const
push eax
call sub.IMM32.dll_ImmReleaseContext
jmp 0x4377cd
mov byte [ebp - 0x21], 1
cmp edi, 0x200
jb 0x437867
cmp edi, 0x20d
jbe 0x437870
cmp edi, 0x20
jne 0x437991
mov ecx, dword [ebx + 4]
call fcn.004354ed
test eax, eax
jne 0x4378bf
cmp edi, 0x201
jb 0x4378bf
cmp edi, 0x205
ja 0x4378bf
mov ecx, dword [ebp + 0x10]
movsx eax, word [ebp + 0x10]
shr ecx, 0x10
movsx ecx, cx
push ecx
push eax
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_struct_tagPOINT_const
lea ecx, [ebx - 0x310]
cmp eax, ecx
jne 0x4377cd
mov ecx, dword [ebx + 4]
call fcn.004354ed
neg eax
sbb eax, eax
and eax, 3
jne 0x43794c
lea eax, [ebp - 0x14]
push eax
call fcn.0043565d
movsx eax, word [ebp + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cwde
mov dword [ebp - 0x28], eax
cmp edi, 0x20a
jne 0x437913
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_char_const____thiscall_DuiLib::CDuiString::operator_char_const__void_const
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x28]
lea eax, [ebp - 0x14]
push dword [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4377cd
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_bool___thiscall_DuiLib::CPaintManagerUI::IsCaptured_void_
test al, al
jne 0x4377cd
push 3
pop eax
cmp eax, 3
jne 0x4377cd
cmp edi, 0x20
je 0x437a24
cmp edi, 0x201
je 0x43797a
cmp edi, 0x203
je 0x43797a
cmp edi, 0x204
jne 0x437a44
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0xf0]
jmp 0x437a44
cmp edi, 0x100
jb 0x4379a5
cmp edi, 0x108
jbe 0x437a2a
cmp edi, 0x102
je 0x437a2a
cmp edi, 0x286
je 0x437a2a
cmp edi, 0x7b
jne 0x437a1b
movsx eax, word [ebp + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cwde
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_char_const____thiscall_DuiLib::CDuiString::operator_char_const__void_const
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x28]
mov eax, dword [ebx - 0x310]
push dword [ebp - 0x2c]
lea ecx, [ebx - 0x310]
call dword [eax + 0x1c]
mov ecx, eax
call sym.PB20Configurator.exe_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_struct_tagPOINT_const
lea ecx, [ebx - 0x310]
cmp eax, ecx
je 0x437aa5
jmp 0x4377cd
cmp edi, 0x53
jne 0x4377cd
mov byte [ebp - 0x21], 0
jmp 0x437aa5
mov eax, dword [ebx - 0x310]
lea ecx, [ebx - 0x310]
call dword [eax + 0xec]
test al, al
je 0x4377cd
cmp edi, 0x102
jne 0x437aa5
lea ecx, [ebx - 0x310]
call sym.PB20Configurator.exe_public:_bool___thiscall_DuiLib::CRichEditUI::IsAccumulateDBCMode_void_
test al, al
je 0x437aa5
push 0x15
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je 0x437a76
push 0
lea ecx, [ebx - 0x310]
call sym.PB20Configurator.exe_public:_void___thiscall_DuiLib::CRichEditUI::SetAccumulateDBCMode_bool_
jmp 0x437aa1
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x437a99
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x437aa5
movzx eax, word [ebp + 0xc]
shl eax, 8
mov dword [ebx + 0x24], eax
jmp 0x4377cd
or dword [ebp + 0xc], eax
mov edi, 0x286
and dword [ebx + 0x24], 0
mov eax, dword [ebx - 0x310]
and dword [ebp - 0x34], 0
lea ecx, [ebp - 0x34]
push ecx
push dword [ebp + 0x10]
lea ecx, [ebx - 0x310]
push dword [ebp + 0xc]
push edi
call dword [eax + 0x1b0]
test eax, eax
je 0x437b01
cmp edi, 0x100
jb 0x437ada
cmp edi, 0x108
jbe 0x437b01
cmp edi, 0x102
je 0x437b01
cmp edi, 0x286
je 0x437b01
add edi, 0xfffffe00
cmp edi, 0xd
ja 0x437b09
mov ecx, dword [ebx + 4]
call fcn.004354ed
test eax, eax
je 0x437b09
mov ecx, dword [ebp - 0x30]
mov al, byte [ebp - 0x21]
mov byte [ecx], al
mov eax, dword [ebp - 0x34]
jmp 0x4377cf