Function at 0x5031bd
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
sub esp, 0x68
push 0x18
mov eax, 0x6381c0
call fcn.0058c0ed
mov ebx, ecx
push dword [ebx + 0x360]
lea ecx, [ebp + 0x44]
call fcn.004c85fc
xor edi, edi
mov dword [ebp - 4], edi
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
lea ecx, [ebp + 0x44]
call fcn.005656a6
mov esi, dword [sym.imp.USER32.dll_AppendMenuW]
push 0x6431dc
push 0xb266
push edi
push dword [ebp + 0x48]
call esi
push 0x669754
push 0xb267
push edi
push dword [ebp + 0x48]
call esi
push 0x669750
push 0xb268
push edi
push dword [ebp + 0x48]
call esi
push 0x66974c
push 0xb269
push edi
push dword [ebp + 0x48]
call esi
push 0x669748
push 0xb26a
push edi
push dword [ebp + 0x48]
call esi
push 0x669744
push 0xb26b
push edi
push dword [ebp + 0x48]
call esi
push 0x669740
push 0xb26c
push edi
push dword [ebp + 0x48]
call esi
push 0x65e068
push 0xb26d
push edi
push dword [ebp + 0x48]
call esi
push str.9765432
push 0xb26e
push edi
push dword [ebp + 0x48]
call esi
push 0x65e060
push 0xb26f
push edi
push dword [ebp + 0x48]
call esi
push 0x65e058
push 0xb270
push edi
push dword [ebp + 0x48]
call esi
push 0x669734
push 0xb271
push edi
push dword [ebp + 0x48]
call esi
push 0x66972c
push 0xb272
push edi
push dword [ebp + 0x48]
call esi
push 0x669724
push 0xb273
push edi
push dword [ebp + 0x48]
call esi
push 0x66971c
push 0xb274
push edi
push dword [ebp + 0x48]
call esi
push 0x669714
push 0xb275
push edi
push dword [ebp + 0x48]
call esi
push dword [ebx + 0x360]
lea ecx, [ebp + 4]
call fcn.004c85fc
mov byte [ebp - 4], 1
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
lea ecx, [ebp + 4]
call fcn.005656a6
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x152
setne al
lea ecx, [ebp + 0x64]
mov dword [ebp + 0x68], eax
call fcn.0050b7ca
push dword [eax]
push 0x3012
push dword [ebp + 0x68]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp dword [ebx + 0x30c], 0xffffffff
push 0x14f
sete al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3016
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp dword [ebx + 0x30c], 0xffffffff
push 0x150
sete al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3017
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x151
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3011
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
push edi
push edi
push 0x800
push dword [ebp + 8]
call esi
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1ca
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3020
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1cb
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3021
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1cd
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3023
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1ce
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3024
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1cc
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3022
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
setne al
push 0x1cf
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3025
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x209
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3026
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x20b
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3028
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1d0
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x302a
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1a1
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301c
push dword [ebp + 0x64]
push dword [ebp + 8]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
mov ecx, dword [ebx + 0x334]
call fcn.0040997b
mov dword [ebp + 0x68], eax
cmp eax, 1
jne 0x50362f
push 8
push 0xb266
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 2
jne 0x503645
push 8
push 0xb267
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 3
jne 0x50365b
push 8
push 0xb268
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 4
jne 0x503671
push 8
push 0xb269
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 5
jne 0x503687
push 8
push 0xb26a
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 6
jne 0x50369d
push 8
push 0xb26b
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 7
jne 0x5036b3
push 8
push 0xb26c
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 8
jne 0x5036c9
push 8
push 0xb26d
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 9
jne 0x5036df
push 8
push 0xb26e
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0xa
jne 0x5036f5
push 8
push 0xb26f
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0xc
jne 0x50370b
push 8
push 0xb270
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0xf
jne 0x503721
push 8
push 0xb271
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0x14
jne 0x503737
push 8
push 0xb272
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0x19
jne 0x50374d
push 8
push 0xb273
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0x1e
jne 0x503763
push 8
push 0xb274
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
cmp dword [ebp + 0x68], 0x28
jne 0x503779
push 8
push 0xb275
push dword [ebp + 0x48]
call dword [sym.imp.USER32.dll_CheckMenuItem]
push dword [ebx + 0x360]
lea ecx, [ebp + 0x24]
call fcn.004c85fc
mov byte [ebp - 4], 2
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
lea ecx, [ebp + 0x24]
call fcn.005656a6
push 0x71
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push 0x3013
push edi
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
mov ecx, ebx
call fcn.004f1db8
test al, al
je 0x5037d3
cmp byte [ebx + 0x1d9], 0
mov dword [ebp + 0x68], edi
je 0x5037da
mov dword [ebp + 0x68], 1
push 0x73
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push 0x3014
push dword [ebp + 0x68]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
mov ecx, ebx
call fcn.004f1db8
test al, al
je 0x503815
cmp byte [ebx + 0x1d9], 0
mov dword [ebp + 0x68], edi
je 0x50381c
mov dword [ebp + 0x68], 1
push 0x17a
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push 0x3019
push dword [ebp + 0x68]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
mov ecx, ebx
call fcn.004f0965
xor ecx, ecx
test al, al
sete cl
push 0x70
mov dword [ebp + 0x64], ecx
lea ecx, [ebp + 0x68]
call fcn.0050b7ca
push dword [eax]
push 0x3018
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
push edi
push edi
push 0x800
push dword [ebp + 0x28]
call esi
push 0x14b
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push 0x3015
push edi
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
push 0x1d1
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push dword [ebp + 8]
push 0x10
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x14c
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x300c
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x183
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301a
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x276
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3029
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x19c
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301b
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1d2
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301f
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1a3
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301d
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x1a4
setne al
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x301e
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
setne al
push 0x14d
lea ecx, [ebp + 0x68]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x300d
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x68]
add ecx, 0xfffffff0
call fcn.00401493
push 0x1a2
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push dword [ebp + 0x48]
push 0x10
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
push edi
push edi
push 0x800
push dword [ebp + 0x28]
call esi
push 0x6401e8
push 0x3010
push edi
push dword [ebp + 0x28]
call esi
mov eax, dword [ebx + 0x334]
push dword [eax + 0xc48]
lea ecx, [ebp + 0x24]
push edi
push 0x3010
call fcn.004c8545
push 0x14e
lea ecx, [ebp + 0x64]
call fcn.0050b7ca
push dword [eax]
push 0x300f
push edi
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp + 0x64]
add ecx, 0xfffffff0
call fcn.00401493
xor eax, eax
cmp byte [ebx + 0x1d9], al
push 0x20a
setne al
lea ecx, [ebp]
mov dword [ebp + 0x64], eax
call fcn.0050b7ca
push dword [eax]
push 0x3027
push dword [ebp + 0x64]
push dword [ebp + 0x28]
call esi
mov ecx, dword [ebp]
add ecx, 0xfffffff0
call fcn.00401493
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push edi
push ebx
push dword [ebp - 0x10]
lea esi, [ebx + 0x201]
push dword [ebp - 0x14]
lea ecx, [ebp + 0x24]
push 0x102
mov byte [esi], 1
call fcn.00553dad
mov dword [ebp + 0x64], eax
mov byte [esi], 0
lea ecx, [ebp + 0x24]
call fcn.005656fe
lea ecx, [ebp + 4]
call fcn.005656fe
lea ecx, [ebp + 0x44]
call fcn.005656fe
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setl al
mov byte [ebp + 0x68], al
mov eax, dword [ebp + 0x64]
cmp eax, 0xb266
ja 0x503d13
je 0x503d0f
add eax, 0xffffcff4
cmp eax, 0x1e
ja case.default.0x503d1d
jmp dword [eax*4 + 0x503de5]
push 3
mov ecx, ebx
call fcn.004fa47e
jmp case.default.0x503d1d
push 4
jmp 0x503bab
push 2
jmp 0x503bab
mov ecx, ebx
call fcn.004f8636
jmp case.default.0x503d1d
cmp byte [ebx + 0x1d9], 0
jne case.default.0x503d1d
mov ecx, ebx
call fcn.004f08f7
mov ecx, ebx
call fcn.004f8367
jmp case.default.0x503d1d
mov ecx, ebx
call fcn.00502682
jmp case.default.0x503d1d
mov ecx, ebx
call fcn.004f3425
jmp case.default.0x503d1d
cmp byte [ebx + 0x1d9], 0
jne case.default.0x503d1d
mov ecx, ebx
call fcn.004f08f7
mov ecx, ebx
call fcn.004fbaa2
jmp case.default.0x503d1d
push 5
jmp 0x503bab
cmp byte [ebx + 0x1d9], 0
jne case.default.0x503d1d
mov ecx, ebx
call fcn.004f08f7
mov ecx, ebx
call fcn.004fa99f
jmp case.default.0x503d1d
cmp byte [ebx + 0x1d9], 0
jne case.default.0x503d1d
mov ecx, ebx
call fcn.004f08f7
mov ecx, ebx
call fcn.004f055c
push eax
call fcn.004fa214
jmp case.default.0x503d1d
mov ecx, ebx
call fcn.004faa53
jmp case.default.0x503d1d
mov ecx, ebx
call fcn.004fa2fd
jmp case.default.0x503d1d
push 9
jmp 0x503bab
push 8
mov ecx, ebx
call fcn.004fa47e
mov eax, dword [ebx + 0x334]
mov dword [eax + 0xc8c], ebx
jmp case.default.0x503d1d
mov ecx, ebx
call fcn.004faac8
jmp case.default.0x503d1d
push 0xa
jmp 0x503c8e
push 0xb
jmp 0x503c8e
push 0xc
jmp 0x503c8e
push 0xd
jmp 0x503c8e
push dword [ebp + 0x68]
push edi
mov ecx, ebx
call fcn.004fb175
jmp case.default.0x503d1d
push dword [ebp + 0x68]
push 1
jmp 0x503cc6
push dword [ebp + 0x68]
push 2
jmp 0x503cc6
push edi
push 3
jmp 0x503cc6
push edi
push 4
jmp 0x503cc6
push dword [ebp + 0x68]
push 5
jmp 0x503cc6
push dword [ebp + 0x68]
push 6
jmp 0x503cc6
push dword [ebp + 0x68]
push 7
jmp 0x503cc6
push 0xe
jmp 0x503bab
mov ecx, ebx
call fcn.004fac8b
jmp case.default.0x503d1d
push 1
jmp 0x503d5e
add eax, 0xffff4d99
cmp eax, 0xe
ja case.default.0x503d1d
jmp dword [eax*4 + 0x503e61]
push 2
jmp 0x503d5e
push 3
jmp 0x503d5e
push 4
jmp 0x503d5e
push 5
jmp 0x503d5e
push 6
jmp 0x503d5e
push 7
jmp 0x503d5e
push 8
jmp 0x503d5e
push 9
jmp 0x503d5e
push 0xa
jmp 0x503d5e
push 0xc
jmp 0x503d5e
push 0xf
jmp 0x503d5e
push 0x14
jmp 0x503d5e
push 0x19
jmp 0x503d5e
push 0x1e
jmp 0x503d5e
push 0x28
mov ecx, dword [ebx + 0x334]
call fcn.0040b0cf
mov ecx, ebx
call fcn.004f2da9
mov eax, dword [ebx + 0x334]
cmp dword [eax + 0xc4c], 5
je 0x503dab
cmp dword [ebx + 0x30c], 0xffffffff
je 0x503dab
or eax, 0xffffffff
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
lea esi, [ebp - 0x24]
lea edi, [ebx + 0x30c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, ebx
movsd dword es:[edi], dword [esi]
call fcn.004f9251
lea ecx, [ebp + 0x24]
mov byte [ebp - 4], 1
call fcn.0040bd21
lea ecx, [ebp + 4]
mov byte [ebp - 4], 0
call fcn.0040bd21
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 0x44]
call fcn.0040bd21
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add ebp, 0x6c
leave
ret 8