Function at 0x4d535c
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffb8
mov byte [esp + 1], 0
push 0
xor ecx, ecx
mov dl, 1
mov eax, dword [0x4b55c8]
call fcn.004bbbd8
mov edi, eax
xor edx, edx
mov eax, edi
call fcn.004bd7e4
mov dl, 1
mov eax, edi
call fcn.004c2100
xor edx, edx
mov eax, edi
call fcn.004c2114
mov ecx, edi
mov dl, 1
mov eax, dword [0x464b1c]
call fcn.0046a238
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x78]
mov edx, 0x4d5a80
mov eax, ebp
call fcn.00496110
mov eax, dword [ebp + 0x64]
mov edx, 0x4d5af8
call fcn.00451520
mov eax, dword [ebp + 0x64]
mov edx, 0x12
call fcn.00451598
mov eax, dword [ebp + 0x64]
mov edx, 0x5d2fff
call fcn.004511fc
mov eax, dword [ebp + 0x64]
movzx edx, byte [0x4d5b04]
call fcn.004515c4
mov edx, dword [ebp + 0x48]
add edx, 0x28
mov eax, edi
call fcn.004bc850
mov eax, edi
call fcn.004959c4
mov dword [esp + 4], eax
fild dword [esp + 4]
fdiv dword [0x4d5b08]
fild dword [ebp + 0x48]
fdiv dword [0x4d5b08]
fsubp st(1)
call fcn.0040469c
mov edx, eax
mov eax, ebp
call fcn.004956b0
mov edx, 0x14
mov eax, ebp
call fcn.004956e4
mov edx, dword [ebp + 0x44]
add edx, 0x41
add edx, dword [ebp + 0x4c]
add edx, 0x14
mov eax, edi
call fcn.004bc884
mov ecx, edi
mov dl, 1
mov eax, dword [0x46f934]
call fcn.00470ae0
mov ebx, eax
mov ecx, edi
mov dl, 1
mov eax, dword [0x46f934]
call fcn.00470ae0
mov esi, eax
mov dl, 5
mov eax, dword [ebx + 0x1b0]
call fcn.00451a98
mov dl, 5
mov eax, dword [esi + 0x1b0]
call fcn.00451a98
mov edx, 0xffdd69
mov eax, dword [ebx + 0x1b4]
call fcn.00451d50
mov edx, 0xffdd69
mov eax, dword [esi + 0x1b4]
call fcn.00451d50
mov edx, edi
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x78]
mov edx, edi
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x78]
fild dword [edi + 0x48]
fdiv dword [0x4d5b08]
call fcn.0040469c
mov edx, eax
sub edx, 2
mov eax, ebx
call fcn.00495718
fild dword [edi + 0x48]
fdiv dword [0x4d5b08]
call fcn.0040469c
mov edx, eax
sub edx, 2
mov eax, esi
call fcn.00495718
mov edx, dword [edi + 0x4c]
sub edx, dword [ebx + 0x4c]
mov eax, ebx
call fcn.004956e4
mov edx, dword [edi + 0x4c]
sub edx, dword [ebx + 0x4c]
mov eax, esi
call fcn.004956e4
mov eax, edi
call fcn.004959c4
mov edx, eax
sub edx, dword [esi + 0x48]
mov eax, esi
call fcn.004956b0
mov ecx, edi
mov dl, 1
mov eax, dword [0x464b1c]
call fcn.0046a238
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x78]
mov edx, 0x4d5b18
mov eax, ebp
call fcn.00496110
mov eax, dword [ebp + 0x64]
mov edx, 0x4d5af8
call fcn.00451520
mov eax, dword [ebp + 0x64]
mov edx, 0x12
call fcn.00451598
mov eax, dword [ebp + 0x64]
mov edx, 0xe16169
call fcn.004511fc
mov eax, dword [ebp + 0x64]
movzx edx, byte [0x4d5b04]
call fcn.004515c4
fild dword [ebx + 0x44]
fild dword [ebx + 0x4c]
fdiv dword [0x4d5b08]
faddp st(1)
fild dword [ebp + 0x4c]
fdiv dword [0x4d5b08]
fsubp st(1)
call fcn.0040469c
mov edx, eax
mov eax, ebp
call fcn.004956e4
fild dword [ebx + 0x48]
fdiv dword [0x4d5b08]
fild dword [ebp + 0x48]
fdiv dword [0x4d5b08]
fsubp st(1)
call fcn.0040469c
mov edx, eax
mov eax, ebp
call fcn.004956b0
mov ecx, edi
mov dl, 1
mov eax, dword [0x464b1c]
call fcn.0046a238
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x78]
mov edx, 0x4d5b34
mov eax, ebp
call fcn.00496110
mov eax, dword [ebp + 0x64]
mov edx, 0x4d5af8
call fcn.00451520
mov eax, dword [ebp + 0x64]
mov edx, 0x12
call fcn.00451598
mov eax, dword [ebp + 0x64]
mov edx, 0xe16169
call fcn.004511fc
mov eax, dword [ebp + 0x64]
movzx edx, byte [0x4d5b04]
call fcn.004515c4
fild dword [ebx + 0x44]
fild dword [ebx + 0x4c]
fdiv dword [0x4d5b08]
faddp st(1)
fild dword [ebp + 0x4c]
fdiv dword [0x4d5b08]
fsubp st(1)
call fcn.0040469c
mov edx, eax
mov eax, ebp
call fcn.004956e4
fild dword [esi + 0x40]
fild dword [esi + 0x48]
fdiv dword [0x4d5b08]
faddp st(1)
fild dword [ebp + 0x48]
fdiv dword [0x4d5b08]
fsubp st(1)
call fcn.0040469c
mov edx, eax
mov eax, ebp
call fcn.004956b0
mov dl, 4
mov eax, edi
call fcn.004be0fc
push 0x14
push 0x14
mov eax, edi
call fcn.00495a04
push eax
mov eax, edi
call fcn.004959c4
push eax
push 0
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov ebp, eax
push 0xffffffffffffffff
push ebp
mov eax, edi
call fcn.0049f024
push eax
call sub.user32.dll_SetWindowRgn
mov edx, 0xfff4a8
mov eax, edi
call fcn.00496290
mov dl, 1
mov eax, edi
call fcn.0049d9ac
mov eax, edi
call fcn.004c16dc
mov byte [esp + 2], 0
cmp byte [esp + 2], 0xfa
jae 0x4d5a1d
add byte [esp + 2], 2
movzx edx, byte [esp + 2]
mov eax, edi
call fcn.004c2114
push 1
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
cmp byte [esp + 2], 0xfa
jb 0x4d56c8
jmp 0x4d5a1d
mov eax, edi
call fcn.00496380
lea ecx, [esp + 0x10]
xor edx, edx
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x10]
lea ecx, [esp + 8]
mov eax, ebx
call fcn.00495ad4
mov ebp, dword [esp + 8]
lea edx, [esp + 0x10]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x10]
jg 0x4d5872
lea ecx, [esp + 0x20]
xor edx, edx
mov eax, dword [ebx + 0x48]
call fcn.004321e4
lea edx, [esp + 0x20]
lea ecx, [esp + 0x18]
mov eax, ebx
call fcn.00495ad4
mov ebp, dword [esp + 0x18]
lea edx, [esp + 0x20]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x20]
jl 0x4d5872
lea ecx, [esp + 0x30]
xor edx, edx
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x30]
lea ecx, [esp + 0x28]
mov eax, ebx
call fcn.00495ad4
mov ebp, dword [esp + 0x2c]
lea edx, [esp + 0x30]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x34]
jg 0x4d5872
lea ecx, [esp + 0x40]
mov edx, dword [ebx + 0x4c]
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x40]
lea ecx, [esp + 0x38]
mov eax, ebx
call fcn.00495ad4
mov ebp, dword [esp + 0x3c]
lea edx, [esp + 0x40]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x44]
jl 0x4d5872
jmp 0x4d5817
mov ebp, dword [ebx + 0x1b4]
mov eax, dword [ebp + 0x10]
mov edx, dword [eax + 0x14]
sub edx, 0x100
mov eax, ebp
call fcn.00451d50
push 5
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
mov eax, dword [ebx + 0x1b4]
call fcn.00451d48
call fcn.0040cb34
cmp al, 0xbe
ja 0x4d57eb
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x4d583c
mov byte [esp + 1], 1
mov byte [esp], 1
jmp 0x4d5886
mov eax, dword [ebx + 0x1b4]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
add edx, 0x100
mov eax, dword [ebx + 0x1b4]
call fcn.00451d50
push 5
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
mov eax, dword [ebx + 0x1b4]
call fcn.00451d48
call fcn.0040cb34
cmp al, 0xdd
jb 0x4d5842
lea ecx, [esp + 0x10]
xor edx, edx
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x10]
lea ecx, [esp + 8]
mov eax, esi
call fcn.00495ad4
mov ebp, dword [esp + 8]
lea edx, [esp + 0x10]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x10]
jg 0x4d59fd
lea ecx, [esp + 0x20]
xor edx, edx
mov eax, dword [esi + 0x48]
call fcn.004321e4
lea edx, [esp + 0x20]
lea ecx, [esp + 0x18]
mov eax, esi
call fcn.00495ad4
mov ebp, dword [esp + 0x18]
lea edx, [esp + 0x20]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x20]
jl 0x4d59fd
lea ecx, [esp + 0x30]
xor edx, edx
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x30]
lea ecx, [esp + 0x28]
mov eax, esi
call fcn.00495ad4
mov ebp, dword [esp + 0x2c]
lea edx, [esp + 0x30]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x34]
jg 0x4d59fd
lea ecx, [esp + 0x40]
mov edx, dword [esi + 0x4c]
xor eax, eax
call fcn.004321e4
lea edx, [esp + 0x40]
lea ecx, [esp + 0x38]
mov eax, esi
call fcn.00495ad4
mov ebp, dword [esp + 0x3c]
lea edx, [esp + 0x40]
mov eax, dword [0x508c20]
mov eax, dword [eax]
call fcn.004a4eac
cmp ebp, dword [esp + 0x44]
jl 0x4d59fd
jmp 0x4d59a2
mov eax, dword [esi + 0x1b4]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
sub edx, 0x100
mov eax, dword [esi + 0x1b4]
call fcn.00451d50
push 5
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
mov eax, dword [esi + 0x1b4]
call fcn.00451d48
call fcn.0040cb34
cmp al, 0xbe
ja 0x4d5972
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x4d5a11
mov byte [esp + 1], 1
mov byte [esp], 0
jmp 0x4d5a11
mov eax, dword [esi + 0x1b4]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
add edx, 0x100
mov eax, dword [esi + 0x1b4]
call fcn.00451d50
push 5
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
mov eax, dword [esi + 0x1b4]
call fcn.00451d48
call fcn.0040cb34
cmp al, 0xdd
jb 0x4d59cd
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
cmp byte [esp + 1], 0
je 0x4d56f8
mov byte [esp + 2], 0xfa
cmp byte [esp + 2], 2
jbe 0x4d5a5f
sub byte [esp + 2], 2
movzx edx, byte [esp + 2]
mov eax, edi
call fcn.004c2114
push 1
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x508a88]
mov eax, dword [eax]
call fcn.004c6084
cmp byte [esp + 2], 2
ja 0x4d5a34
mov dl, 1
mov eax, edi
mov ecx, dword [eax]
call dword [ecx - 4]
movzx eax, byte [esp]
add esp, 0x48
pop ebp
pop edi
pop esi
pop ebx
ret