Function at 0x528c85
Capabilities:
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
sub esp, 0x20
mov eax, dword [ebp + 0x10]
xchg edx, eax
mov eax, dword [0x580228]
mov dword [eax + 4], edx
mov eax, dword [ebp + 8]
xchg edx, eax
mov eax, dword [0x580228]
mov dword [eax + 8], edx
mov eax, 0
xchg edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
mov eax, 1
mov dword [ebp - 0x18], 1
mov eax, dword [ebp + 0x10]
cmp eax, 0xc
je 0x528d87
cmp eax, 0xe
je 0x528d9b
cmp eax, 0xf
je 0x528e66
cmp eax, 0xd
je 0x528ef4
cmp eax, 0x19
je 0x529095
cmp eax, 0x1a
je 0x5290db
cmp eax, 0xb
je 0x52913e
cmp eax, 0xa
je 0x52913e
cmp eax, 4
je 0x52913e
cmp eax, 3
je 0x52913e
cmp eax, 6
je 0x52913e
cmp eax, 5
je 0x52913e
cmp eax, 2
je 0x52913e
cmp eax, 1
je 0x52913e
cmp eax, 9
je 0x52914f
cmp eax, 0x1b
je 0x529167
mov eax, 0
jmp 0x52917c
mov eax, dword [ebp + 0xc]
xchg edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
and eax, 0xffff
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xe5
jne 0x528dcf
mov eax, 0xffffffff
mov dword [0x580244], 0xffffffff
mov eax, 1
jmp 0x5292c0
mov eax, dword [0x580548]
cmp eax, 0
jne 0x528dee
push dword [ebp - 0x1c]
call fcn.00528be4
cmp eax, 0
jne 0x528dee
xor eax, eax
jmp 0x528df1
xor eax, eax
inc eax
cmp eax, 0
je 0x528dff
mov eax, 0xffffffff
jmp 0x528e11
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
push eax
push dword [ebp - 0x1c]
call fcn.00528a3e
mov dword [0x580244], eax
mov eax, dword [0x580244]
cmp eax, 0xffffffff
jne 0x528e45
push 2
push dword [ebp - 0x1c]
call dword [sym.imp.USER32.DLL_MapVirtualKeyW]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
cmp eax, 0
je 0x528e45
mov eax, dword [ebp - 0x20]
and eax, 0xffff
mov dword [ebp - 0x1c], eax
xor eax, eax
push eax
call fcn.00528ae1
mov edx, eax
mov eax, dword [ebp - 0x1c]
or eax, edx
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
and eax, 0xffff
mov dword [ebp - 0x1c], eax
push dword [ebp - 0x1c]
call fcn.00528be4
cmp eax, 0
je 0x528e8d
mov eax, 0xffffffff
jmp 0x528e9f
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
push eax
push dword [ebp - 0x1c]
call fcn.00528a3e
mov dword [0x580244], eax
mov eax, dword [0x580244]
cmp eax, 0xffffffff
jne 0x528ed3
push 2
push dword [ebp - 0x1c]
call dword [sym.imp.USER32.DLL_MapVirtualKeyW]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
cmp eax, 0
je 0x528ed3
mov eax, dword [ebp - 0x20]
and eax, 0xffff
mov dword [ebp - 0x1c], eax
xor eax, eax
push eax
call fcn.00528ae1
mov edx, eax
mov eax, dword [ebp - 0x1c]
or eax, edx
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
xor eax, eax
push eax
call fcn.00528ae1
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
cmp eax, 0xd800
jl 0x528f21
mov eax, dword [ebp - 0x20]
cmp eax, 0xdbff
jg 0x528f21
jmp 0x528f25
xor eax, eax
jmp 0x528f28
xor eax, eax
inc eax
cmp eax, 0
je 0x528f46
mov eax, dword [ebp - 0x20]
mov dword [0x58024c], eax
mov eax, 1
jmp 0x5292c0
mov eax, dword [ebp - 0x20]
cmp eax, 0xdc00
jl 0x528f5c
mov eax, dword [ebp - 0x20]
cmp eax, 0xdfff
jg 0x528f5c
jmp 0x528f60
xor eax, eax
jmp 0x528f63
xor eax, eax
inc eax
cmp eax, 0
je 0x528fa8
mov eax, dword [0x58024c]
and eax, 0x3ff
shl eax, 0xa
mov edx, eax
mov eax, 0x10000
add eax, edx
push eax
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
pop edx
xchg edx, eax
add eax, edx
mov dword [0x58024c], eax
mov eax, dword [0x58024c]
mov dword [ebp - 0x20], eax
mov eax, 0
mov dword [ebp - 0x1c], 0
jmp 0x528fcc
xor eax, eax
inc eax
je 0x528fbe
mov eax, 0
mov dword [0x58024c], 0
jmp 0x528fcc
call 0x528fc3
pop eax
push eax
push 0x64
call fcn.004255d6
mov eax, dword [ebp - 0x1c]
and eax, 0x10000000
cmp eax, 0
je 0x528ff3
mov eax, 0x60
mov edx, dword [ebp - 0x20]
cmp eax, edx
jge 0x528ff3
mov eax, dword [ebp - 0x20]
cmp eax, 0x7b
jge 0x528ff3
jmp 0x528ff7
xor eax, eax
jmp 0x528ffa
xor eax, eax
inc eax
cmp eax, 0
je 0x52901b
mov eax, dword [ebp - 0x20]
add eax, 0x40
mov dword [ebp - 0x20], eax
mov eax, 0xffffffff
mov dword [0x580244], 0xffffffff
mov eax, dword [0x580548]
cmp eax, 0
je 0x529038
mov eax, dword [ebp - 0x1c]
and eax, 0x20000000
cmp eax, 0
je 0x529038
jmp 0x52903c
xor eax, eax
jmp 0x52903f
xor eax, eax
inc eax
cmp eax, 0
jne 0x529062
mov eax, dword [0x580244]
cmp eax, 0xa4
je 0x529062
mov eax, dword [0x580244]
cmp eax, 0xa5
je 0x529062
xor eax, eax
jmp 0x529065
xor eax, eax
inc eax
cmp eax, 0
je 0x52907b
mov eax, 0xffffffff
mov dword [0x580244], 0xffffffff
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
or eax, edx
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
push 0
push dword [ebp + 8]
call fcn.0053b21e
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 8]
mov edx, dword [0x57f95c]
cmp eax, edx
jne 0x5290c0
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0053ce5e
mov eax, dword [ebp + 0xc]
inc eax
and eax, 0xffff
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
push 0
push dword [ebp + 8]
call fcn.0053b21e
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 8]
push eax
call fcn.0044e3f8
mov edx, eax
mov eax, dword [0x57f9a0]
cmp eax, edx
jne 0x529119
mov eax, dword [ebp + 0xc]
and eax, 0xffff
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52913c
mov eax, 0
mov edx, dword [ebp + 0xc]
cmp eax, edx
sete al
xor ah, ah
cwde
xor al, 1
cmp eax, 0
je 0x52913c
push 0xffffffffffffffff
push dword [ebp + 8]
call fcn.0053ce5e
jmp 0x52917c
mov eax, dword [ebp + 0xc]
xchg edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
xor eax, eax
inc eax
push eax
call fcn.00528ae1
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
jmp 0x52917c
mov eax, dword [ebp + 0xc]
and eax, 0xffff
mov edx, eax
mov eax, dword [0x580228]
mov dword [eax + 0xc], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ebp - 0x24], eax
push dword [0x56f72c]
call fcn.00489745
mov eax, dword [0x575cbc]
mov dword [ebp - 0xc], eax
mov eax, dword [0x575ce4]
mov dword [ebp - 0x28], eax
mov dword [0x575ce4], 0
mov eax, 0xffffffff
push dword [ebp - 4]
push dword [ebp - 8]
mov dword [ebp - 4], eax
call 0x5291bc
pop eax
add eax, 0x4c
mov dword [ebp - 8], eax
push dword [0x57f1d8]
push dword [0x57b968]
call fcn.004895c9
push dword [0x580228]
call fcn.00523a90
xor eax, eax
push eax
call fcn.0043d55a
call fcn.0043d05a
push dword [0x57f1c8]
call fcn.004d4083
call fcn.00489b7f
call fcn.004896e0
call fcn.00489b48
lea esp, [ebp - 0x30]
pop dword [ebp - 8]
pop dword [ebp - 4]
mov eax, dword [ebp - 0x28]
mov dword [0x575ce4], eax
call fcn.0048a6cf
mov eax, dword [0x54702c]
mov eax, dword [eax + 0x24]
cmp eax, 0
je 0x529241
mov eax, 0
xchg edx, eax
mov eax, dword [0x54702c]
mov dword [eax + 0x24], edx
mov eax, dword [ebp - 0x24]
xchg edx, eax
mov eax, dword [ebp + 8]
mov dword [eax], edx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
and eax, 0xff
cmp eax, 0xf
jne 0x5292bd
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
push eax
call fcn.0044e3f8
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [0x57fa0c]
cmp eax, edx
jne 0x529288
mov eax, 1
mov dword [ebp - 0x18], 1
jmp 0x5292bd
mov eax, dword [ebp - 0x14]
mov edx, dword [0x57fa28]
cmp eax, edx
jne 0x5292a3
mov eax, 0
mov dword [ebp - 0x18], 0
jmp 0x5292bd
xor eax, eax
inc eax
je 0x5292af
mov eax, 0
jmp 0x5292bd
call 0x5292b4
pop eax
push eax
push 0x64
call fcn.004255d6
mov eax, dword [ebp - 0x18]
leave
ret 0xc