Function at 0x45a4cf
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x630
mov eax, 0x50f144
call fcn.004f41e2
mov ebx, ecx
mov dword [ebp - 0x620], ebx
mov al, byte [ebp + 0x10]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x62c], esi
mov byte [ebx + 0x1c], al
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov dword [ebp - 0x5dc], eax
xor eax, eax
test esi, esi
mov dword [ebp - 0x5f4], eax
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x604], esi
jne 0x45a547
test esi, esi
jne 0x45a547
mov ecx, dword [0x5a22a0]
mov ecx, dword [ecx + 0x3e64]
call fcn.004bf1f7
test al, al
je 0x45a547
mov eax, dword [0x5a23ec]
push 0x20
pop ecx
cmp byte [eax + 0x110b2], 1
cmove esi, ecx
mov dword [ebp - 0x604], esi
mov edi, esi
lea ecx, [ebp - 0x63c]
shr edi, 5
call fcn.004d840a
mov ecx, dword [0x5a22a0]
xor eax, eax
push eax
mov dword [ebp - 4], eax
lea eax, [ebp - 0x63c]
push eax
call fcn.0040ef51
test eax, eax
js 0x45a59f
mov ecx, dword [ebp - 0x638]
call fcn.004de78b
xor esi, esi
test eax, eax
je 0x45a5a1
mov ecx, dword [ebp - 0x638]
push esi
call fcn.004de78b
mov ecx, eax
call fcn.0048748a
mov dword [ebp - 0x5f4], eax
jmp 0x45a5a1
xor esi, esi
mov ecx, dword [0x5a23ec]
push esi
call fcn.0045f243
and edi, 1
mov dword [ebp - 0x628], eax
lea ecx, [ebx + 0x20]
mov dword [ebx + 0x34], esi
dec edi
call fcn.0040635a
push 0x9c
lea eax, [ebp - 0x298]
push esi
push eax
call fcn.004f5a90
add esp, 0xc
mov ecx, ebx
inc dword [ebx + 0x34]
mov esi, dword [ebx + 0x34]
push str.New_console_dialog...
push 0x7fb
call fcn.00459ec2
push eax
push esi
push 6
lea ecx, [ebp - 0x298]
call fcn.0045bebc
mov esi, dword [sym.imp.USER32.dll_InsertMenuW]
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5dc]
call esi
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
mov eax, dword [ebp - 0x5f4]
test eax, eax
je 0x45a688
xor ecx, ecx
cmp word [eax], cx
je 0x45a688
inc dword [ebx + 0x34]
lea ecx, [ebp - 0x298]
push eax
push dword [ebx + 0x34]
push 5
call fcn.0045bebc
mov eax, dword [ebp - 0x5f4]
mov dword [ebp - 0x28c], eax
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5dc]
call esi
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
xor eax, eax
push eax
push eax
push 0xc00
push edi
push dword [ebp - 0x5dc]
call esi
mov esi, dword [str.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ]
xor edx, edx
mov eax, dword [ebp - 0x5dc]
mov dword [ebp - 0x600], edx
mov dword [ebp - 0x5e8], edx
mov dword [ebp - 0x5ec], eax
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
cmp ax, dx
jne 0x45a6bd
movaps xmm0, xmmword [0x548e80]
sub esi, ecx
sar esi, 1
mov dword [ebp - 0x5f8], esi
mov dword [ebp - 0x60c], edx
movups xmmword [ebp - 0x61c], xmm0
push 0x88
push edx
lea eax, [ebp - 0x320]
mov byte [ebp - 4], 1
push eax
call fcn.004f5a90
add esp, 0xc
lea ecx, [ebp - 0x1fc]
call fcn.004e25a1
mov ecx, dword [0x5a23ec]
xor eax, eax
push eax
mov byte [ebp - 4], 2
call fcn.0045dc55
mov ecx, eax
mov dword [ebp - 0x5e4], ecx
jmp 0x45abd7
inc dword [ebp - 0x600]
or eax, 0xffffffff
mov dword [ebp - 0x5f0], eax
xor eax, eax
cmp dword [ecx + 4], 0
mov dword [ebp - 0x5e0], eax
mov eax, str._NULL_
cmovne eax, dword [ecx + 4]
push 0x52bb94
push eax
mov dword [ebp - 0x5fc], eax
call fcn.004f68e6
mov dword [ebp - 0x608], eax
pop ecx
pop ecx
test eax, eax
je 0x45aa0a
xor eax, eax
push 0x80
push eax
lea eax, [ebp - 0x90]
push eax
call fcn.004f5a90
mov edx, dword [ebp - 0x5fc]
add esp, 0xc
mov ecx, dword [ebp - 0x608]
sub ecx, edx
sar ecx, 1
push 0x3e
pop eax
inc ecx
cmp ecx, eax
cmovl eax, ecx
push eax
push edx
lea eax, [ebp - 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
push 0x5480b0
push 0x40
lea eax, [ebp - 0x90]
push eax
call fcn.004019cd
mov ecx, dword [ebp - 0x618]
test ecx, ecx
jle 0x45a82a
mov esi, dword [ebp - 0x60c]
mov ebx, ecx
add esi, 0x84
lea eax, [ebp - 0x90]
push eax
lea eax, [esi - 0x84]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x45a805
inc dword [esi]
mov eax, dword [esi]
mov dword [ebp - 0x5f0], eax
mov eax, dword [esi - 4]
mov dword [ebp - 0x5e0], eax
jmp 0x45a80b
mov eax, dword [ebp - 0x5e0]
add esi, 0x88
sub ebx, 1
jne 0x45a7d8
mov ebx, dword [ebp - 0x620]
test eax, eax
jne 0x45a9b4
mov esi, dword [ebp - 0x5f8]
xor eax, eax
push 0x9c
push eax
lea eax, [ebp - 0x298]
push eax
call fcn.004f5a90
mov ecx, dword [ebp - 0x5e8]
add esp, 0xc
or dword [ebp - 0x294], 0xffffffff
inc ecx
mov dword [ebp - 0x298], 4
mov dword [ebp - 0x5e8], ecx
cmp ecx, 1
jl 0x45a8ac
cmp ecx, esi
jg 0x45a8ac
mov eax, dword [str.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ]
movzx eax, word [eax + ecx*2 - 2]
push eax
lea eax, [ebp - 0x288]
push 0x5480b4
push eax
call fcn.00409b67
add esp, 0xc
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0x40
pop ecx
sub ecx, eax
push ecx
lea ecx, [ebp - 0x90]
push ecx
lea ecx, [ebp - 0x288]
lea eax, [ecx + eax*2]
jmp 0x45a8bb
lea eax, [ebp - 0x90]
push 0x40
push eax
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
call dword [sym.imp.USER32.dll_CreatePopupMenu]
lea ecx, [ebp - 0x288]
mov dword [ebp - 0x208], eax
push ecx
push eax
push 0x410
push edi
push dword [ebp - 0x5ec]
call dword [sym.imp.USER32.dll_InsertMenuW]
test eax, eax
je 0x45abdf
mov eax, dword [ebp - 0x208]
lea ecx, [ebx + 0x20]
mov dword [ebp - 0x5e0], eax
lea eax, [ebp - 0x298]
push eax
call fcn.0045cc68
xor eax, eax
push 0x88
push eax
lea eax, [ebp - 0x320]
push eax
call fcn.004f5a90
add esp, 0xc
lea eax, [ebp - 0x90]
push eax
push 0x40
lea eax, [ebp - 0x320]
push eax
call fcn.00401a0b
mov eax, dword [ebp - 0x208]
xor ecx, ecx
inc ecx
mov dword [ebp - 0x2a0], eax
cmp dword [ebp - 0x61c], 0
mov dword [ebp - 0x5f0], ecx
mov dword [ebp - 0x29c], ecx
je 0x45a9b4
mov eax, dword [ebp - 0x618]
mov ecx, dword [ebp - 0x614]
cmp ecx, eax
jg 0x45a989
mov edx, 0x100
cmp ecx, edx
mov eax, edx
cmovg eax, ecx
lea ecx, [ebp - 0x61c]
push eax
call fcn.004062e6
mov eax, dword [ebp - 0x618]
push dword [ebp - 0x61c]
lea ecx, [eax + 1]
imul eax, eax, 0x88
mov dword [ebp - 0x618], ecx
lea ecx, [ebp - 0x320]
push ecx
add eax, dword [ebp - 0x60c]
push eax
call fcn.004f5d30
add esp, 0xc
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
mov eax, dword [ebp - 0x608]
add eax, 4
push eax
push 0x5480c0
call fcn.004e23a5
add esp, 0x24
mov dword [ebp - 0x624], eax
lea eax, [ebp - 0x624]
lea ecx, [ebp - 0x1fc]
push eax
call fcn.004e2618
lea ecx, [ebp - 0x1fc]
call fcn.0044612f
cmp dword [ebp - 0x5e0], 0
mov dword [ebp - 0x5fc], eax
jne 0x45aac1
mov eax, dword [ebp - 0x5e8]
mov ecx, eax
inc eax
mov dword [ebp - 0x5e8], eax
cmp ecx, 0xa
jl 0x45aaaf
xor eax, eax
push 0x9c
push eax
lea eax, [ebp - 0x298]
push eax
call fcn.004f5a90
or dword [ebp - 0x294], 0xffffffff
lea eax, [ebp - 0x288]
add esp, 0xc
mov dword [ebp - 0x298], 4
push 0x5480c4
push 0x40
push eax
call fcn.00401a0b
call dword [sym.imp.USER32.dll_CreatePopupMenu]
lea ecx, [ebp - 0x288]
mov dword [ebp - 0x208], eax
push ecx
push eax
push 0x410
push edi
push dword [ebp - 0x5ec]
call dword [sym.imp.USER32.dll_InsertMenuW]
test eax, eax
je 0x45abdf
mov eax, dword [ebp - 0x208]
lea ecx, [ebx + 0x20]
mov dword [ebp - 0x5ec], eax
lea eax, [ebp - 0x298]
push eax
call fcn.0045cc68
xor eax, eax
inc eax
mov dword [ebp - 0x5e8], eax
mov dword [ebp - 0x5f0], eax
mov eax, dword [ebp - 0x5ec]
mov dword [ebp - 0x5e0], eax
mov esi, dword [ebx + 0x34]
xor eax, eax
push 0x9c
push eax
lea eax, [ebp - 0x298]
inc esi
push eax
mov dword [ebx + 0x34], esi
call fcn.004f5a90
mov ecx, dword [ebp - 0x5f0]
xor edx, edx
mov eax, dword [ebp - 0x5e4]
inc edx
add esp, 0xc
mov dword [ebp - 0x294], esi
mov esi, dword [ebp - 0x5f8]
mov dword [ebp - 0x298], edx
mov dword [ebp - 0x290], eax
cmp ecx, edx
jl 0x45ab35
cmp ecx, esi
jg 0x45ab35
mov eax, dword [str.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ]
movzx eax, word [eax + ecx*2 - 2]
push eax
lea eax, [ebp - 0x288]
push 0x5480b4
push eax
call fcn.00409b67
mov eax, dword [ebp - 0x5e4]
add esp, 0xc
jmp 0x45ab3e
xor ecx, ecx
mov word [ebp - 0x288], cx
xor ecx, ecx
push ecx
lea ecx, [ebp - 0x190]
push ecx
lea ecx, [eax + 0x18]
call fcn.0044cc8d
cmp byte [ebx + 0x1c], 0
lea ecx, [ebp - 0x298]
mov edx, dword [ebp - 0x5fc]
push eax
sete al
movzx eax, al
push eax
push edx
call fcn.0045c125
cmp byte [ebx + 0x1c], 0
je 0x45ab8f
call dword [sym.imp.USER32.dll_CreatePopupMenu]
lea ecx, [ebp - 0x288]
mov dword [ebp - 0x208], eax
push ecx
push eax
push 0x410
jmp 0x45aba1
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5e0]
call dword [sym.imp.USER32.dll_InsertMenuW]
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
mov eax, dword [ebp - 0x600]
mov ecx, dword [0x5a23ec]
push eax
call fcn.0045dc55
mov ecx, eax
mov dword [ebp - 0x5e4], eax
test ecx, ecx
jne 0x45a729
inc dword [ebx + 0x34]
mov ecx, ebx
mov esi, dword [ebx + 0x34]
push str.Setup_tasks...
push 0xaa6
call fcn.00459ec2
push eax
push esi
push 7
lea ecx, [ebp - 0x298]
call fcn.0045bebc
mov esi, dword [sym.imp.USER32.dll_InsertMenuW]
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5dc]
call esi
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
lea ecx, [ebp - 0x1fc]
call fcn.004e25e0
mov eax, dword [ebp - 0x60c]
mov byte [ebp - 4], 3
test eax, eax
je 0x45ac55
push eax
call fcn.004e1bea
pop ecx
mov eax, dword [ebp - 0x628]
xor ecx, ecx
mov byte [ebp - 4], cl
test eax, eax
je 0x45ad5b
cmp word [eax], cx
je 0x45ad5b
push ecx
push ecx
push 0xc00
push edi
push dword [ebp - 0x5dc]
call esi
xor eax, eax
jmp 0x45acf7
cmp dword [ebp - 0x5e4], 0x10
jge 0x45ad13
mov eax, dword [ebp - 0x5f4]
test eax, eax
je 0x45aca8
push esi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x45acf0
inc dword [ebx + 0x34]
lea ecx, [ebp - 0x298]
push esi
push dword [ebx + 0x34]
push 5
call fcn.0045bebc
lea eax, [ebp - 0x288]
mov dword [ebp - 0x28c], esi
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5dc]
call dword [sym.imp.USER32.dll_InsertMenuW]
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
mov eax, dword [ebp - 0x5e4]
inc eax
mov ecx, dword [0x5a23ec]
push eax
mov dword [ebp - 0x5e4], eax
call fcn.0045f243
mov esi, eax
test esi, esi
jne 0x45ac85
inc dword [ebx + 0x34]
lea ecx, [ebp - 0x298]
push str.Clear_history...
push dword [ebx + 0x34]
push 8
call fcn.0045bebc
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x294]
push 0x400
push edi
push dword [ebp - 0x5dc]
call dword [sym.imp.USER32.dll_InsertMenuW]
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebx + 0x20]
call fcn.0045cc68
xor ecx, ecx
xor eax, eax
lea edi, [ebp - 0x1a0]
stosd dword es:[edi], eax
push 8
pop esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, ecx
mov ecx, dword [ebp - 0x62c]
test ecx, ecx
je 0x45ad9c
mov eax, dword [ecx]
mov edx, dword [ebp - 0x604]
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x198], eax
mov dword [ebp - 0x194], ecx
test edx, edx
je 0x45ae25
mov esi, edx
jmp 0x45ae25
mov eax, dword [0x5a22a0]
mov ecx, dword [eax + 0x3e64]
test ecx, ecx
je 0x45ade2
call fcn.004bf1f7
test al, al
je 0x45ade2
mov ecx, dword [0x5a22a0]
lea eax, [ebp - 0x1a0]
push eax
push 2
mov ecx, dword [ecx + 0x3e64]
call fcn.004c0508
mov ecx, dword [ebp - 0x194]
lea edi, [ebp - 0x1a0]
mov eax, dword [ebp - 0x198]
jmp 0x45ae25
lea eax, [ebp - 0x1a0]
push eax
push dword [0x5a22a4]
call dword [sym.imp.USER32.dll_GetClientRect]
push 2
lea eax, [ebp - 0x1a0]
push eax
xor eax, eax
push eax
push dword [0x5a22a4]
call dword [sym.imp.USER32.dll_MapWindowPoints]
mov eax, dword [ebp - 0x198]
mov ecx, dword [ebp - 0x19c]
mov dword [ebp - 0x1a0], eax
mov dword [ebp - 0x194], ecx
push edi
xor edx, edx
mov word [ebx], 1
mov dword [ebx + 0x38], edx
or esi, 0x100
push dword [0x5a22a4]
push ecx
push eax
push esi
push dword [ebp - 0x5dc]
mov ecx, ebx
push 3
call fcn.0045ccbd
mov edi, eax
xor edx, edx
mov word [ebx], dx
cmp edi, 1
jge 0x45ae63
cmp dword [ebx + 0x38], edx
je 0x45b095
mov esi, dword [ebx + 0x38]
test esi, esi
jne 0x45aea0
mov eax, edx
mov dword [ebp - 0x298], edx
cmp dword [ebx + 0x24], eax
jle 0x45b095
mov edx, dword [ebx + 0x30]
lea ecx, [edx + 4]
cmp dword [ecx], edi
je 0x45ae96
inc eax
add ecx, 0x9c
cmp eax, dword [ebx + 0x24]
jl 0x45ae81
jmp 0x45b095
imul esi, eax, 0x9c
add esi, edx
xor edx, edx
push 0x27
pop ecx
lea edi, [ebp - 0x298]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x298]
cmp eax, 6
jne 0x45aed5
mov ecx, dword [0x5a23f0]
push edx
push 1
call fcn.0046aa38
mov ecx, dword [0x5a22a0]
push eax
call fcn.0041897c
jmp 0x45b095
cmp eax, 7
jne 0x45aeea
push 0x9d
call fcn.0046982b
pop ecx
jmp 0x45b095
cmp eax, 8
jne 0x45af00
mov ecx, dword [0x5a23f0]
push edx
call fcn.0046d4d3
jmp 0x45b095
cmp eax, 5
je 0x45af18
cmp eax, 3
je 0x45af18
cmp eax, 2
je 0x45af18
cmp eax, 1
jne 0x45b095
lea ecx, [ebp - 0x5d8]
call fcn.004ea5ed
mov eax, dword [ebp - 0x298]
mov byte [ebp - 4], 4
cmp eax, 2
je 0x45afa5
cmp eax, 1
je 0x45afa5
cmp eax, 3
jne 0x45af88
mov ecx, dword [ebp - 0x290]
lea eax, [ebp - 0x5d8]
push eax
call fcn.004a2d7b
xor ecx, ecx
lea eax, [ebp - 0x5d8]
push ecx
push eax
push ecx
push dword [ebp - 0x28c]
mov ecx, dword [0x5a22a0]
call fcn.0041796e
push eax
call fcn.004e230a
pop ecx
pop ecx
xor esi, esi
mov dword [ebp - 0x5c0], eax
push esi
lea ecx, [ebp - 0x5d8]
call fcn.004e87cc
jmp 0x45afce
xor esi, esi
cmp eax, 5
jne 0x45afce
push esi
push dword [ebp - 0x28c]
call fcn.004e230a
pop ecx
pop ecx
mov dword [ebp - 0x5c0], eax
jmp 0x45afce
mov esi, dword [ebp - 0x290]
xor eax, eax
push eax
push dword [esi + 4]
call fcn.004e230a
pop ecx
pop ecx
mov dword [ebp - 0x5c0], eax
mov ecx, esi
lea eax, [ebp - 0x5d8]
push eax
call fcn.004a2d7b
xor esi, esi
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x45b011
mov ecx, dword [0x5a22a0]
lea eax, [ebp - 0x5d8]
push esi
push eax
call fcn.00418d0d
cmp eax, 0x5f4
je 0x45b00a
lea ecx, [ebp - 0x5d8]
call fcn.004ea61b
jmp 0x45b0ee
call fcn.004d6822
jmp 0x45b034
cmp dword [ebp - 0x298], 5
je 0x45b023
cmp dword [ebp - 0x298], 1
jne 0x45b034
push dword [ebp - 0x5c0]
mov ecx, dword [0x5a23ec]
call fcn.0045f14e
mov ecx, dword [0x5a23f0]
call fcn.0046b57d
test al, al
jne 0x45b053
mov ecx, dword [0x5a22a0]
push esi
call fcn.0041f275
test al, al
jne 0x45b073
cmp dword [ebp - 0x33c], 2
je 0x45b073
mov ecx, dword [0x5a22a0]
lea eax, [ebp - 0x5d8]
push esi
push 1
push eax
call fcn.0040cfc8
jmp 0x45b085
mov ecx, dword [0x5a22a0]
lea eax, [ebp - 0x5d8]
push eax
call fcn.0040df95
xor eax, eax
lea ecx, [ebp - 0x5d8]
mov byte [ebp - 4], al
call fcn.004ea61b
xor eax, eax
mov edi, eax
cmp dword [ebx + 0x24], eax
jle 0x45b0e2
mov esi, eax
mov eax, dword [ebx + 0x30]
mov ecx, dword [esi + eax + 0x90]
test ecx, ecx
je 0x45b0b8
push ecx
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [ebx + 0x30]
mov eax, dword [esi + eax + 0x94]
test eax, eax
je 0x45b0d6
push eax
call fcn.004e1bea
mov eax, dword [ebx + 0x30]
pop ecx
xor ecx, ecx
mov dword [eax + esi + 0x94], ecx
inc edi
add esi, 0x9c
cmp edi, dword [ebx + 0x24]
jl 0x45b0a0
push dword [ebp - 0x5dc]
call dword [sym.imp.USER32.dll_DestroyMenu]
lea ecx, [ebp - 0x63c]
call fcn.004d84a5
call fcn.004f418c
ret 0xc