Function at 0x423d09
Capabilities:
Log keystrokes via application hook

Disassembly:
sub esp, 0x54
push ebx
push ebp
mov ebp, dword [esp + 0x60]
push esi
mov esi, ecx
push edi
push ebp
mov ecx, dword [esi + 0x30]
mov dword [esi + 0xc], ebp
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ebx, eax
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x423d31
mov eax, dword [eax + 4]
test eax, eax
je 0x423d31
push ebx
mov ecx, eax
call fcn.00416c20
mov edi, dword [sym.imp.USER32.dll_GetDlgItem]
lea ecx, [esp + 0x14]
push ecx
push 0x238
push ebp
call edi
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
lea edx, [esp + 0x14]
push 2
push edx
push 0x238
push ebp
call edi
push eax
push ebp
call dword [sym.imp.USER32.dll_MapWindowPoints]
mov eax, dword [esp + 0x18]
push 0x44
add eax, 0xfffffff1
push eax
push 0xa
push 5
push 5
push 0
push ebx
call dword [sym.imp.USER32.dll_SetWindowPos]
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x30]
xor edi, edi
test eax, eax
jle 0x423dc5
lea ecx, [esi + 0x34]
mov dword [esp + 0x10], ecx
cmp edi, 3
jae 0x423dc5
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x2c]
mov ebp, dword [ebx]
mov eax, dword [edx]
push eax
push edi
push 0
call fcn.004026a0
push eax
push edi
mov ecx, ebx
call dword [ebp + 0x2c]
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 0x14]
mov ebp, dword [esp + 0x68]
inc edi
add ecx, 4
cmp edi, eax
mov dword [esp + 0x10], ecx
jl 0x423d8e
mov eax, dword [esi + 0x18]
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x30]
mov ecx, esi
call fcn.00423a70
mov eax, dword [esi + 0x24]
test eax, eax
je 0x423df3
push 0
push 0x292
push ebp
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x423e2f
mov eax, dword [esi + 0x24c]
test eax, eax
jne 0x423e2f
push esi
call fcn.0041ea70
add esp, 4
test eax, eax
je 0x423e2f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 8]
push eax
push ecx
push 0x423b60
push 2
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
mov dword [esi + 0x24c], eax
mov eax, dword [esi + 0x24]
test eax, eax
jne 0x423efb
mov edx, dword [esi + 0x2c]
mov esi, dword [edx]
test esi, esi
je 0x423efb
mov ecx, esi
call fcn.004058b0
test eax, eax
je 0x423efb
lea eax, [esp + 0x24]
push 0x40
push eax
push 0xdd
mov byte [esp + 0x30], 0
call fcn.0041d1b0
add esp, 0xc
mov ecx, esi
call fcn.00405a10
mov ebx, eax
test ebx, ebx
je 0x423e8d
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
inc edx
jmp 0x423e92
mov edx, 0x10
lea edi, [esp + 0x24]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea ecx, [ecx + edx + 1]
push ecx
call fcn.00428481
mov esi, eax
add esp, 4
test esi, esi
je 0x423ee9
test ebx, ebx
jne 0x423ebc
mov ebx, str.NULL
lea edx, [esp + 0x24]
push ebx
push edx
push esi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0x10
push esi
push 0x53
call fcn.0041d350
add esp, 4
push eax
push ebp
call fcn.0041d490
push esi
call fcn.00428418
add esp, 0x14
push 0
push 2
push 0x111
push ebp
call fcn.004229d0
add esp, 0x10
push 0
push 0x238
push ebp
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x54
ret 0xc