Function at 0x519df0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x45c
mov eax, dword [0x5b120c]
push ebx
push ebp
push esi
xor ebx, ebx
cmp eax, ebx
mov ebp, edx
mov esi, ecx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x14], esi
je 0x519e25
xor ecx, ecx
call fcn.0041d520
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x45c
ret 0xc
cmp esi, ebx
push edi
mov edi, 1
mov dword [0x5b120c], edi
je 0x519e56
push esi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x519e56
push esi
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
jne 0x519e56
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x519e5f
mov eax, dword [0x5b4314]
mov dword [esp + 0x18], eax
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
call esi
test ah, ah
js 0x519e74
push 2
call esi
test ah, ah
jns 0x519e9e
lea ecx, [esp + 0x1ec]
push ecx
call dword [sym.imp.USER32.dll_GetKeyboardState]
lea edx, [esp + 0x1ec]
push edx
mov byte [esp + 0x1f1], bl
mov byte [esp + 0x1f2], bl
call dword [sym.imp.USER32.dll_SetKeyboardState]
mov edx, 0x1e
mov ecx, 0x5b0c60
call fcn.0041ef30
mov edx, 0x180
mov ecx, 0x5b03f8
call fcn.0041ef30
mov edx, 0x3e7
mov ecx, 0x5b0578
call fcn.0041ef30
mov edx, 0x180
lea ecx, [esp + 0x6c]
call fcn.0041ef30
mov edx, 0x180
mov ecx, 0x5b0c80
call fcn.0041ef30
mov edx, 0x3e7
mov ecx, 0x5b0e00
call fcn.0041ef30
mov eax, dword [esp + 0x478]
mov dword [0x5b11e8], eax
mov eax, dword [esp + 0x474]
cmp eax, ebx
mov dword [esp + 0x14], edi
mov dword [0x5b11ec], ebx
mov dword [0x5b11f0], ebx
mov dword [esp + 0x1c], ebx
mov dword [0x5b11f4], ebx
je 0x519f38
push eax
mov edx, 0x1e
mov ecx, 0x5b0c60
call fcn.0041ee40
cmp ebp, 0x64
jl 0x519f48
sub ebp, 0x64
mov dword [esp + 0x10], ebp
mov dword [esp + 0x1c], edi
cmp ebp, 0xa
jl 0x519f58
sub ebp, 0xa
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], ebx
mov edx, 0x180
lea ecx, [esp + 0x6c]
call fcn.0041ef30
mov edx, dword [0x5b4310]
push 0x180
lea ecx, [esp + 0x70]
push ecx
push 0x13f0
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [esp + 0x6c]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x519f90
sub eax, edx
mov cl, byte [esp + eax + 0x6b]
mov dl, byte [esp + 0x6c]
xor eax, eax
cmp dl, bl
je 0x519fd8
cmp byte [esp + eax + 0x6c], cl
jne 0x519fb1
mov byte [esp + eax + 0x6c], bl
cmp eax, 0x104
jae 0x519fc3
mov dl, byte [esp + eax + 0x6d]
inc eax
cmp dl, bl
jne 0x519fa7
jmp 0x519fd8
mov byte [esp + 0x170], bl
mov byte [esp + 0x16f], bl
mov byte [esp + 0x16e], bl
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x5b0960]
mov byte [eax + 0x5b03f8], cl
inc eax
cmp cl, bl
jne 0x519fe0
push 0x5a15c8
push 0x5a14c8
push 0x5a13c8
push 0x5a13c0
push 0x5b03f8
call fcn.005706cf
mov al, byte [0x5b03f8]
add esp, 0x14
cmp al, bl
je 0x51a0cc
xor eax, eax
mov cl, byte [eax + 0x5a13c0]
mov byte [eax + 0x5b03f8], cl
inc eax
cmp cl, bl
jne 0x51a021
mov eax, 0x5a13c8
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x51a040
mov edi, 0x5b03f8
sub eax, edx
dec edi
nop
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x51a050
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x5a14c8]
mov byte [eax + 0x5b0578], cl
inc eax
cmp cl, bl
jne 0x51a070
mov eax, 0x5a15c8
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x51a088
mov edi, 0x5b0578
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x51a097
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x586c38
push 0x5b0578
rep movsb byte es:[edi], byte [esi]
call fcn.005809c6
add esp, 8
mov ebp, eax
neg ebp
sbb ebp, ebp
add ebp, 2
jmp 0x51a0ec
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x5a9798]
mov byte [eax + 0x5b03f8], cl
inc eax
cmp cl, bl
jne 0x51a0d0
mov byte [0x5b0578], bl
mov ebp, 2
mov eax, 0x5a15c8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x51a0f4
sub eax, edx
cmp eax, 3
jb 0x51a16b
mov edi, 2
lea ecx, [esp + 0x6c]
jmp 0x51a110
cmp byte [ecx], bl
je 0x51a16b
mov esi, ecx
mov al, byte [esi + 1]
inc esi
cmp al, bl
jne 0x51a116
mov eax, edi
and eax, reloc.WSOCK32.dll_accept
jns 0x51a12c
dec eax
or eax, 0xfffffffe
inc eax
je 0x51a13c
mov edx, 0x5a15c8
call fcn.0041e2a0
test eax, eax
jne 0x51a146
lea ecx, [esi + 1]
inc edi
cmp ecx, ebx
jne 0x51a110
jmp 0x51a16b
push 0x584674
push 0x5a14c8
call fcn.005809c6
add esp, 8
test eax, eax
jne 0x51a162
mov byte [0x5b0578], bl
mov eax, edi
cdq
sub eax, edx
mov ebp, eax
sar ebp, 1
mov edx, 2
mov ecx, 0x5b03f8
call fcn.0041fd10
test eax, eax
jne 0x51a191
mov edi, edi
mov cl, byte [eax + 0x5a9798]
mov byte [eax + 0x5b03f8], cl
inc eax
cmp cl, bl
jne 0x51a180
mov eax, 0x5b03f8
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x51a1a0
sub eax, edx
cmp eax, 3
jbe 0x51a1bd
cmp byte [eax + 0x5b03f7], 0x5c
jne 0x51a1bd
mov byte [eax + 0x5b03f7], bl
mov esi, dword [esp + 0x470]
xor eax, eax
mov ecx, 0x13
lea edi, [esp + 0x20]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x10]
cmp eax, ebx
pop edi
jne 0x51a237
mov ecx, dword [esp + 0x14]
mov edx, esi
call fcn.0051a730
test eax, eax
je 0x51a220
xor eax, eax
jmp 0x51a1f0
mov cl, byte [eax + 0x5b03f8]
mov byte [eax + 0x5b0960], cl
inc eax
cmp cl, bl
jne 0x51a1f0
mov cl, byte [0x5b0960]
pop esi
xor eax, eax
cmp cl, bl
pop ebp
mov dword [0x5b120c], ebx
setne al
pop ebx
add esp, 0x45c
ret 0xc
mov dword [0x5b0578], 0x2a2e2a
mov dword [esp + 0x50], 0x20a0924
jmp 0x51a307
cmp eax, 1
je 0x51a2e3
cmp eax, 4
je 0x51a2e3
cmp eax, 5
je 0x51a2e3
cmp eax, 2
jne 0x51a282
cmp dword [esp + 0x10], ebx
mov dword [esp + 0x64], 0x14a
mov dword [esp + 0x50], 0x20a0a64
je 0x51a275
mov dword [esp + 0x50], 0x20a1a64
mov dword [esp + 0x60], 0x519330
jmp 0x51a30f
cmp eax, 3
jne 0x51a29b
mov dword [0x5b11ec], 1
mov dword [esp + 0x50], 0x20a0824
jmp 0x51a307
cmp eax, 6
jne 0x51a2c8
cmp dword [esp + 0x10], ebx
mov dword [esp + 0x64], 0x154
mov dword [esp + 0x50], 0x20a0864
je 0x51a2be
mov dword [esp + 0x50], 0x20a1864
mov dword [esp + 0x60], 0x519c40
jmp 0x51a30f
xor ecx, ecx
call fcn.0041d520
pop esi
pop ebp
mov dword [0x5b120c], ebx
xor eax, eax
pop ebx
add esp, 0x45c
ret 0xc
cmp dword [esp + 0x10], ebx
mov dword [esp + 0x50], 0x20a0824
je 0x51a2f9
mov dword [esp + 0x50], 0x20a1824
cmp dword [esp + 0x18], ebx
je 0x51a307
or dword [esp + 0x50], 0x200
mov dword [esp + 0x60], 0x519840
cmp byte [esi], bl
je 0x51a317
mov dword [esp + 0x4c], esi
mov eax, dword [0x5aa620]
cmp eax, ebx
mov dword [esp + 0x1c], 0x4c
je 0x51a32e
mov dword [esp + 0x24], eax
jmp 0x51a338
mov ecx, dword [0x5b4310]
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x20], edx
lea eax, [esp + 0x68]
mov edx, 0x180
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], 0x5b0578
mov dword [esp + 0x3c], 0x3e7
mov dword [esp + 0x48], 0x5b03f8
call fcn.0041ef30
lea ecx, [esp + 0x2e8]
push 0x104
push ecx
call fcn.00581aa3
add esp, 8
test eax, eax
jne 0x51a3a4
push 0x5a9798
mov edx, 0x180
lea ecx, [esp + 0x2ec]
call fcn.0041ee40
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
test eax, eax
je 0x51a56e
mov esi, dword [esp + 0xc]
cmp esi, 2
jne 0x51a47a
xor eax, eax
jmp 0x51a3d0
mov cl, byte [eax + 0x5b0e00]
mov byte [eax + 0x5afe08], cl
inc eax
cmp cl, bl
jne 0x51a3d0
mov edx, 0x3e7
mov ecx, 0x5b0e00
call fcn.0041ef30
mov ecx, dword [0x5a5bdc]
push ebx
push 1
mov edx, 0x5afc20
call fcn.004c8960
cmp eax, ebx
je 0x51a40c
mov dword [0x5a5bdc], eax
mov ecx, dword [0x5a5bdc]
push 0x5a98a0
push 0x14
push 0x583d84
mov edx, str.dccnicks
call fcn.004b23b0
mov edx, 0x180
mov ecx, 0x5afc88
call fcn.0041ef30
push 0x180
push 0x5afc88
call fcn.00581aa3
add esp, 8
mov ecx, 0x5afc88
call fcn.004203c0
lea eax, [esp + 0x2e8]
push eax
call fcn.005818e2
add esp, 4
pop esi
pop ebp
mov dword [0x5b120c], ebx
mov eax, 1
pop ebx
add esp, 0x45c
ret 0xc
mov edx, 0x180
mov ecx, 0x5b0960
call fcn.0041ef30
push 0x104
push 0x5b0960
call fcn.00581aa3
add esp, 8
mov ecx, 0x5b0960
call fcn.004203c0
lea ecx, [esp + 0x2e8]
push ecx
call fcn.005818e2
add esp, 4
cmp esi, ebx
je 0x51a548
push 9
push 0x5b0e00
call fcn.00570260
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x51a4d4
mov byte [esi], bl
push 0x5a15c8
push 0x5a14c8
push 0x5a13c8
push 0x5a13c0
push 0x5b0e00
call fcn.005706cf
push 0x5a15c8
push 0x5a14c8
push 0x583954
push 0x5b0ae0
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x24
cmp esi, ebx
je 0x51a516
mov byte [esi], 9
xor eax, eax
jmp 0x51a520
mov cl, byte [eax + 0x5b0960]
mov byte [eax + 0x5b0c80], cl
inc eax
cmp cl, bl
jne 0x51a520
pop esi
pop ebp
mov dword [0x5b120c], ebx
mov eax, 1
pop ebx
add esp, 0x45c
ret 0xc
mov edx, 0x180
mov ecx, 0x5b0ae0
call fcn.0041ef30
pop esi
pop ebp
mov dword [0x5b120c], ebx
mov eax, 1
pop ebx
add esp, 0x45c
ret 0xc
mov edx, 0x180
mov ecx, 0x5b0960
call fcn.0041ef30
mov edx, 0x180
mov ecx, 0x5b0ae0
call fcn.0041ef30
mov edx, 0x180
mov ecx, 0x5b0c80
call fcn.0041ef30
mov edx, 0x3e7
mov ecx, 0x5b0e00
call fcn.0041ef30
call dword [sym.imp.comdlg32.dll_CommDlgExtendedError]
cmp eax, 0x3003
jne 0x51a5c1
mov dword [0x5b11f4], 1
lea edx, [esp + 0x2e8]
push edx
call fcn.005818e2
add esp, 4
pop esi
pop ebp
mov dword [0x5b120c], ebx
xor eax, eax
pop ebx
add esp, 0x45c
ret 0xc