Function at 0x409be0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4211a1
mov eax, dword fs:[0]
push eax
sub esp, 0x344
mov eax, dword [0x42e054]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [0x4305c0]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x274], edi
mov dword [ebp - 0x250], esi
call fcn.004069e0
cmp eax, 9
jl 0x409d5d
push 0x104
lea eax, [ebp - 0x114]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
push str.PnHelp2.exe
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea eax, [ebp - 0x248]
push eax
push dword [esi + 0x84]
call dword [sym.imp.ole32.dll_StringFromIID]
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x214]
test esi, esi
je 0x409c99
push dword [ebp - 0x248]
push str.enableIcs___S_
push eax
call fcn.00408690
add esp, 0xc
jmp 0x409ca7
push str.disableIcs
push eax
call fcn.00408690
add esp, 8
push ecx
lea eax, [ebp - 0x214]
mov edx, 0x4e20
push eax
lea ecx, [ebp - 0x114]
call fcn.00408cf0
add esp, 8
cmp eax, 0x335
jne 0x409d16
push 0x25
push str.Internet_Connection_Sharing_times_out
lea ecx, [ebp - 0x244]
mov dword [ebp - 0x230], 0xf
mov dword [ebp - 0x234], 0
mov byte [ebp - 0x244], 0
call fcn.00407b20
lea eax, [ebp - 0x244]
mov ecx, edi
push eax
call fcn.0040c590
lea ecx, [ebp - 0x244]
call fcn.00407a20
xor eax, eax
jmp 0x40a8d2
cmp eax, 0xffffffff
jne 0x409d2d
push str.Internet_Connection_Sharing_error
lea ecx, [ebp - 0x244]
call fcn.00408e20
jmp 0x409cf6
test eax, eax
jne 0x409d47
test esi, esi
je 0x409d47
push str.Internet_Connection_Sharing_interface_not_found
lea ecx, [ebp - 0x244]
call fcn.00408e20
jmp 0x409cf6
mov eax, dword [ebp - 0x250]
mov dword [eax + 0xa8], esi
mov eax, 1
jmp 0x40a8d2
mov dword [ebp - 0x254], 0
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0
push eax
push str.HNetCfg.HNetShare.1
call dword [sym.imp.ole32.dll_CLSIDFromProgID]
test eax, eax
js 0x409e66
lea eax, [ebp - 0x254]
push eax
push 0x427f18
push 0x17
push 0
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x409e66
mov eax, 2
mov word [ebp - 0x288], ax
xor eax, eax
mov word [ebp - 0x280], ax
lea edx, [ebp - 0x258]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x254]
push edx
push 0x400
push 1
lea edx, [ebp - 0x248]
mov dword [ebp - 0x248], str.SharingInstalled
mov ecx, dword [eax]
push edx
push 0x422464
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x409e12
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x258]
lea ecx, [ebp - 0x254]
call fcn.00408710
cmp word [ebp - 0x280], 0xffff
je 0x409e59
push str.Internet_Sharing_Not_Installed
lea ecx, [ebp - 0x22c]
call fcn.00408e20
lea eax, [ebp - 0x22c]
mov ecx, edi
push eax
call fcn.0040c590
lea ecx, [ebp - 0x22c]
call fcn.00407a20
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
xor esi, esi
jmp 0x40a8b9
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x2bc]
push eax
push dword [esi + 0x84]
call dword [sym.imp.ole32.dll_StringFromIID]
mov edi, dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x34c]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x34c], xmm0
call edi
lea edx, [ebp - 0x258]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x254]
push edx
push 0x400
push 1
lea edx, [ebp - 0x248]
mov dword [ebp - 0x248], str.EnumEveryConnection
mov ecx, dword [eax]
push edx
push 0x422464
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x409ee2
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x258]
lea ecx, [ebp - 0x254]
call fcn.00408710
mov esi, dword [ebp - 0x344]
mov dword [ebp - 0x29c], esi
mov dword [ebp - 0x28c], esi
test esi, esi
je 0x409efe
mov eax, dword [esi]
push esi
call dword [eax + 4]
lea eax, [ebp - 0x30c]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x30c], xmm0
call edi
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x248]
mov dword [ebp - 0x248], str.Count
mov eax, dword [esi]
push ecx
push 0x422464
push esi
call dword [eax + 0x14]
test eax, eax
js 0x409f5b
lea eax, [ebp - 0x30c]
push eax
push dword [ebp - 0x258]
lea ecx, [ebp - 0x28c]
call fcn.00408710
lea eax, [ebp - 0x33c]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x33c], xmm0
call edi
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 5
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x248]
mov dword [ebp - 0x248], str._NewEnum
mov eax, dword [esi]
push ecx
push 0x422464
push esi
call dword [eax + 0x14]
test eax, eax
js 0x409fb8
lea eax, [ebp - 0x33c]
push eax
push dword [ebp - 0x258]
lea ecx, [ebp - 0x28c]
call fcn.00408710
mov ecx, dword [ebp - 0x334]
mov dword [ebp - 0x268], 0
test ecx, ecx
je 0x409ff0
mov eax, dword [ecx]
lea edx, [ebp - 0x268]
push edx
push 0x429a58
push ecx
call dword [eax]
mov ecx, dword [ebp - 0x268]
xor edx, edx
test eax, eax
cmovs ecx, edx
mov dword [ebp - 0x268], ecx
xor edi, edi
mov dword [ebp - 0x260], edi
xor eax, eax
mov dword [ebp - 0x264], eax
xor esi, esi
mov dword [ebp - 0x25c], esi
mov dword [ebp - 0x290], esi
mov byte [ebp - 4], 9
mov dword [ebp - 0x248], esi
cmp ax, word [ebp - 0x304]
jge 0x40a7f3
nop word [eax + eax]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x2ac]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x2ac], xmm0
call esi
lea eax, [ebp - 0x2fc]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x2fc], xmm0
call esi
lea eax, [ebp - 0x2ec]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x2ec], xmm0
call esi
xor esi, esi
mov dword [ebp - 0x278], esi
mov byte [ebp - 4], 0xd
lea edx, [ebp - 0x2ac]
mov eax, dword [ebp - 0x268]
push esi
push edx
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x350], eax
test eax, eax
je 0x40a0ad
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
lea edx, [ebp - 0x294]
mov byte [ebp - 4], 0xe
mov eax, dword [ebp - 0x254]
push edx
push 0x400
push 1
lea edx, [ebp - 0x26c]
mov dword [ebp - 0x26c], str.NetConnectionProps
mov ecx, dword [eax]
push edx
push 0x422464
push eax
call dword [ecx + 0x14]
push 0
push 0
lea edx, [ebp - 0x2fc]
mov dword [ebp - 0x318], 0
push edx
lea edx, [ebp - 0x31c]
mov dword [ebp - 0x314], 1
push edx
push 2
lea eax, [ebp - 0x2ac]
mov dword [ebp - 0x310], 0
mov dword [ebp - 0x31c], eax
mov eax, dword [ebp - 0x254]
push 0x400
push 0x422464
push dword [ebp - 0x294]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
mov edi, dword [ebp - 0x2f4]
mov dword [ebp - 0x26c], edi
test edi, edi
je 0x40a151
mov eax, dword [edi]
push edi
call dword [eax + 4]
lea eax, [ebp - 0x288]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x288], xmm0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x2dc]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x2dc], xmm0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x2cc]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x2cc], xmm0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 0x12
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x24c], str.Name
mov eax, dword [edi]
push ecx
push 0x422464
push edi
call dword [eax + 0x14]
test eax, eax
js 0x40a1e0
lea eax, [ebp - 0x288]
push eax
push dword [ebp - 0x298]
lea ecx, [ebp - 0x26c]
call fcn.00408710
lea ecx, [ebp - 0x2b8]
mov dword [ebp - 0x24c], str.DeviceName
mov eax, dword [edi]
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x24c]
push ecx
push 0x422464
push edi
call dword [eax + 0x14]
test eax, eax
js 0x40a226
lea eax, [ebp - 0x2dc]
push eax
push dword [ebp - 0x2b8]
lea ecx, [ebp - 0x26c]
call fcn.00408710
lea ecx, [ebp - 0x2b4]
mov dword [ebp - 0x24c], str.Guid
mov eax, dword [edi]
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x24c]
push ecx
push 0x422464
push edi
call dword [eax + 0x14]
test eax, eax
js 0x40a26c
lea eax, [ebp - 0x2cc]
push eax
push dword [ebp - 0x2b4]
lea ecx, [ebp - 0x26c]
call fcn.00408710
mov eax, dword [ebp - 0x254]
lea edx, [ebp - 0x2b0]
push edx
push 0x400
push 1
lea edx, [ebp - 0x24c]
mov dword [ebp - 0x24c], str.INetSharingConfigurationForINetConnection
mov ecx, dword [eax]
push edx
push 0x422464
push eax
call dword [ecx + 0x14]
push 0
push 0
lea edx, [ebp - 0x2ec]
mov dword [ebp - 0x328], 0
push edx
lea edx, [ebp - 0x32c]
mov dword [ebp - 0x324], 1
push edx
push 2
lea eax, [ebp - 0x2ac]
mov dword [ebp - 0x320], 0
mov dword [ebp - 0x32c], eax
mov eax, dword [ebp - 0x254]
push 0x400
push 0x422464
push dword [ebp - 0x2b0]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
test eax, eax
jns 0x40a342
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x2cc]
push eax
call esi
lea eax, [ebp - 0x2dc]
push eax
call esi
lea eax, [ebp - 0x288]
push eax
call esi
mov byte [ebp - 4], 0xe
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x258]
test eax, eax
je 0x40a59d
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x40a59d
mov ecx, dword [ebp - 0x2e4]
test ecx, ecx
je 0x40a35a
mov eax, dword [ecx]
mov esi, ecx
push ecx
call dword [eax + 4]
mov dword [ebp - 0x278], esi
push 6
push str.PdaNet
push dword [ebp - 0x280]
call fcn.004145a4
add esp, 0xc
test eax, eax
je 0x40a459
push 6
push str.PdaNet
push dword [ebp - 0x2d4]
call fcn.004145a4
add esp, 0xc
test eax, eax
je 0x40a459
mov ecx, dword [ebp - 0x2c4]
mov eax, dword [ebp - 0x2bc]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a3c6
test dx, dx
je 0x40a3c2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a3c6
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a3a0
xor eax, eax
jmp 0x40a3cb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40a487
mov ecx, dword [ebp - 0x264]
cmp ecx, esi
je 0x40a401
test esi, esi
je 0x40a3ed
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov ecx, dword [ebp - 0x264]
mov eax, ecx
mov ecx, esi
mov dword [ebp - 0x264], ecx
test eax, eax
je 0x40a401
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [ebp - 0x280]
mov eax, dword [ebp - 0x25c]
mov dword [ebp - 0x24c], ecx
cmp ecx, eax
je 0x40a487
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x24c]
test eax, eax
je 0x40a449
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x290], eax
test eax, eax
jne 0x40a487
push 0x8007000e
call fcn.004012b0
xor eax, eax
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x290], eax
jmp 0x40a487
mov ecx, dword [ebp - 0x260]
cmp ecx, esi
je 0x40a487
test esi, esi
je 0x40a473
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov ecx, dword [ebp - 0x260]
mov eax, ecx
mov ecx, esi
mov dword [ebp - 0x260], ecx
test eax, eax
je 0x40a487
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [ebp + 8], 0
je 0x40a544
lea eax, [ebp - 0x23c]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x23c], xmm0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x224]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x224], xmm0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea ecx, [ebp - 0x270]
mov dword [ebp - 0x24c], str.SharingEnabled
mov eax, dword [esi]
push ecx
push 0x400
push 1
lea ecx, [ebp - 0x24c]
push ecx
push 0x422464
push esi
call dword [eax + 0x14]
test eax, eax
js 0x40a52a
lea eax, [ebp - 0x23c]
push eax
push dword [ebp - 0x270]
lea ecx, [ebp - 0x278]
call fcn.00408710
test eax, eax
js 0x40a52a
cmp word [ebp - 0x234], 0xffff
jne 0x40a52a
lea eax, [ebp - 0x224]
push eax
push str.DisableSharing
lea ecx, [ebp - 0x278]
call fcn.00408780
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x2cc]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x2dc]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov byte [ebp - 4], 0xe
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x258]
test eax, eax
je 0x40a589
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0xc
test esi, esi
je 0x40a597
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x2ec]
push eax
call esi
lea eax, [ebp - 0x2fc]
push eax
call esi
lea eax, [ebp - 0x2ac]
mov byte [ebp - 4], 9
push eax
call esi
mov ecx, dword [ebp - 0x248]
movsx eax, word [ebp - 0x304]
inc ecx
mov dword [ebp - 0x248], ecx
cmp ecx, eax
jl 0x40a030
mov edi, dword [ebp - 0x260]
test edi, edi
je 0x40a7ed
mov eax, dword [ebp - 0x264]
test eax, eax
jne 0x40a640
push 0x19
push str.Hotspot_adapter_not_found
lea ecx, [ebp - 0x22c]
mov dword [ebp - 0x218], 0xf
mov dword [ebp - 0x21c], eax
mov byte [ebp - 0x22c], al
call fcn.00407b20
mov ecx, dword [ebp - 0x274]
lea eax, [ebp - 0x22c]
push eax
call fcn.0040c590
lea ecx, [ebp - 0x22c]
call fcn.00407a20
mov esi, dword [ebp - 0x25c]
jmp 0x40a83d
cmp dword [ebp + 8], 0
je 0x40a7a7
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
push 0
test cx, ax
jbe 0x40a69a
mov eax, dword [ebp - 0x25c]
xor esi, esi
push eax
mov eax, dword [ebp - 0x250]
push 0x883b
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [ebp - 0x250]
mov dword [ebp - 0x250], 1
mov dword [eax + 0xa8], 1
jmp 0x40a845
mov eax, 3
mov dword [ebp - 0x21c], 0
mov word [ebp - 0x224], ax
lea ecx, [ebp - 0x260]
lea eax, [ebp - 0x224]
push eax
push str.EnableSharing
call fcn.00408800
mov dword [ebp - 0x270], eax
lea eax, [ebp - 0x224]
push eax
call esi
mov eax, dword [ebp - 0x270]
test eax, eax
jns 0x40a709
push eax
push str.PdaNet_adapter_sharing_failed_x
push dword [ebp - 0x274]
call fcn.00406e90
mov esi, dword [ebp - 0x25c]
add esp, 0xc
mov dword [ebp - 0x250], 0
jmp 0x40a845
mov eax, 3
mov dword [ebp - 0x21c], 1
mov word [ebp - 0x224], ax
lea ecx, [ebp - 0x264]
push 0
lea eax, [ebp - 0x224]
push eax
push str.EnableSharing
call fcn.00408800
mov dword [ebp - 0x270], eax
lea eax, [ebp - 0x224]
push eax
call esi
mov esi, dword [ebp - 0x270]
test esi, esi
jns 0x40a782
push 0
push str.DisableSharing
lea ecx, [ebp - 0x260]
call fcn.00408780
push esi
push str.WiFi_adapter_sharing_failed_x
push dword [ebp - 0x274]
call fcn.00406e90
mov esi, dword [ebp - 0x25c]
add esp, 0xc
jmp 0x40a83d
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x25c]
mov dword [ebp - 0x250], 1
mov dword [eax + 0xa8], 1
jmp 0x40a845
push 0
push str.DisableSharing
lea ecx, [ebp - 0x260]
call fcn.00408780
push 0
push str.DisableSharing
lea ecx, [ebp - 0x264]
call fcn.00408780
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x25c]
mov dword [ebp - 0x250], 1
mov dword [eax + 0xa8], 0
jmp 0x40a845
mov esi, dword [ebp - 0x25c]
push 0x18
push str.PdaNet_adapter_not_found
lea ecx, [ebp - 0x22c]
mov dword [ebp - 0x218], 0xf
mov dword [ebp - 0x21c], 0
mov byte [ebp - 0x22c], 0
call fcn.00407b20
mov ecx, dword [ebp - 0x274]
lea eax, [ebp - 0x22c]
push eax
call fcn.0040c590
lea ecx, [ebp - 0x22c]
call fcn.00407a20
xor eax, eax
mov dword [ebp - 0x250], eax
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x264]
test eax, eax
je 0x40a860
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 6
test edi, edi
je 0x40a86e
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x40a882
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x33c]
push eax
call esi
lea eax, [ebp - 0x30c]
push eax
call esi
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x29c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea eax, [ebp - 0x34c]
push eax
call esi
mov esi, dword [ebp - 0x250]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x254]
test ecx, ecx
je 0x40a8d0
mov edx, dword [ecx]
push ecx
call dword [edx + 8]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040e432
mov esp, ebp
pop ebp
ret 8