Function at 0x421920
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x491011
mov eax, dword fs:[0]
push eax
sub esp, 0x808
mov eax, dword [0x4a8228]
xor eax, esp
mov dword [esp + 0x800], eax
push ebx
push esi
push edi
mov eax, dword [0x4a8228]
xor eax, esp
push eax
lea eax, [esp + 0x818]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
call fcn.0042d080
push 0x495130
push esi
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], 0x53f
call fcn.004626e0
add esp, 8
test eax, eax
jne 0x4219a5
push 0x10
push str.error
push str.SMC_cannot_execute_independently____n_nplease_execute_SMCUpdater.exe
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x421c6a
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
lea ecx, [esp + 0x34]
push ecx
call fcn.00401070
xor esi, esi
mov dword [esp + 0x820], esi
push 0x104
lea edx, [esp + 0x2e8]
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x104
lea eax, [esp + 0x600]
push eax
push 0x104
lea ecx, [esp + 0x710]
push ecx
push 0x104
lea edx, [esp + 0x400]
push edx
push 0x104
lea eax, [esp + 0x510]
push eax
lea ecx, [esp + 0x304]
push ecx
call fcn.004623f8
add esp, 0x24
lea edx, [esp + 0x3ec]
push edx
lea eax, [esp + 0x4f8]
push eax
push str._s_s
push 0x104
push 0x4ed1c0
call fcn.004627fb
mov eax, 0x4ed1c0
add esp, 0x14
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x421a50
sub eax, edx
mov byte [eax + 0x4ed1bf], cl
call fcn.00421ca0
push ebx
lea ecx, [esp + 0x218]
push ecx
mov dword [0x4ed6e0], esi
call fcn.00403f50
mov byte [esp + 0x820], 1
lea esi, [esp + 0x214]
call fcn.004616b0
cmp eax, 1
jne 0x421c42
lea eax, [esp + 0x1d8]
call fcn.004389b0
mov byte [esp + 0x820], 2
mov eax, dword [esp + 0x294]
mov edi, 0x10
cmp dword [esp + 0x2a8], edi
jae 0x421ac7
lea eax, [esp + 0x294]
push eax
push 0x104
push 0x4ed3d0
call fcn.004633e1
mov eax, dword [esp + 0x2bc]
add esp, 0xc
cmp dword [esp + 0x2c4], edi
jae 0x421af1
lea eax, [esp + 0x2b0]
lea esi, [esp + 0x1d8]
call fcn.00438a10
mov eax, esi
call fcn.00438a20
push eax
push 0x104
push 0x4ed4d4
call fcn.004633e1
mov eax, dword [esp + 0x2d8]
add esp, 0xc
cmp dword [esp + 0x2e0], edi
jae 0x421b2e
lea eax, [esp + 0x2cc]
lea esi, [esp + 0x1d8]
call fcn.00438a10
mov eax, esi
call fcn.00438a20
push eax
push 0x104
push 0x4ed5d8
call fcn.004633e1
add esp, 0xc
mov edx, ebx
lea ecx, [esp + 0x34]
call fcn.004011c0
test al, al
je 0x421c16
push 0
push 0
push 0
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x421c16
mov ebx, dword [sym.imp.USER32.dll_GetNextDlgTabItem]
jmp 0x421b90
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x421be7
cmp dword [esp + 0x1c], 0x100
jne 0x421be7
cmp dword [esp + 0x20], 9
jne 0x421be7
call dword [sym.imp.USER32.dll_GetFocus]
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetParent]
test esi, esi
mov edi, eax
je 0x421bfd
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ecx, ecx
test ax, ax
setl cl
push ecx
push esi
push edi
call ebx
test eax, eax
je 0x421bfd
push eax
call dword [sym.imp.USER32.dll_SetFocus]
jmp 0x421bfd
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
jne 0x421b90
lea esi, [esp + 0x34]
call fcn.004013e0
call fcn.00406a60
mov ecx, 0x4ed6f0
call fcn.00422f70
mov byte [esp + 0x820], 1
lea ecx, [esp + 0x1d8]
call fcn.004389e0
mov byte [esp + 0x820], 0
lea ecx, [esp + 0x214]
call fcn.00404020
mov dword [esp + 0x820], 0xffffffff
lea ecx, [esp + 0x34]
call fcn.00401130
xor eax, eax
mov ecx, dword [esp + 0x818]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x800]
xor ecx, esp
call fcn.004626c8
mov esp, ebp
pop ebp
ret 0x10