Function at 0x40ff40
Capabilities:
Check http status code
Check os version
Create http request
Log keystrokes via polling
Read data from internet
Receive data

Disassembly:
mov eax, 0x1150
call fcn.00430610
mov eax, dword [0x449654]
xor eax, esp
mov dword [esp + 0x114c], eax
push ebx
push ebp
mov ebp, dword [esp + 0x115c]
push esi
push edi
lea eax, [esp + 0x28]
mov esi, ecx
mov edi, edx
push eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], edi
xor ebx, ebx
mov dword [esp + 0x2c], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x40ff94
cmp dword [esp + 0x2c], 5
jg 0x40ff94
mov ebx, 1
test esi, esi
je 0x4102ba
test edi, edi
je 0x4102ba
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x14
mov esi, 1
call edi
test eax, 0x8000
je 0x40ffd2
push 0x58
call edi
test eax, 0x8000
je 0x40ffd2
push 0x5a
call edi
test eax, 0x8000
je 0x40ffd2
xor esi, esi
mov eax, dword [esp + 0x1168]
cmp dword [eax - 0xc], 0
push 0
push 0
push 0
push esi
je 0x40fff5
push eax
call dword [sym.imp.WININET.dll_InternetOpenW]
mov edi, eax
mov dword [esp + 0x14], edi
jmp 0x410006
push str.CHM_MSDN
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esp + 0x14], eax
mov edi, eax
test edi, edi
je 0x4102ba
test ebx, ebx
je 0x41001f
push 0
push 0x84083180
push 0
push 0
jmp 0x41008d
push 4
lea ecx, [esp + 0x24]
push ecx
push 0x41
push edi
mov dword [esp + 0x30], 1
call dword [sym.imp.WININET.dll_InternetSetOptionW]
cmp dword [esp + 0x116c], 0
je 0x410066
mov eax, str.Accept_Encoding:_gzip_r_nConnection:_close
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x410050
sub eax, edx
sar eax, 1
mov ecx, str.Accept_Encoding:_gzip_r_nConnection:_close
jmp 0x410084
mov eax, str.Accept_Encoding:_gzip
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x410070
sub eax, edx
sar eax, 1
mov ecx, str.Accept_Encoding:_gzip
push 0
push 0x84083180
push eax
push ecx
push ebp
push edi
call dword [sym.imp.WININET.dll_InternetOpenUrlW]
mov ebp, eax
xor esi, esi
cmp ebp, esi
jne 0x4100c0
push edi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [esp + 0x1168]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x4102d1
xor eax, eax
push esi
lea edx, [esp + 0x28]
push edx
mov dword [esp + 0x14e], eax
mov dword [esp + 0x152], eax
mov dword [esp + 0x156], eax
mov dword [esp + 0x15a], eax
mov word [esp + 0x15e], ax
lea eax, [esp + 0x14c]
push eax
push 0x13
xor ecx, ecx
push ebp
mov word [esp + 0x158], cx
mov dword [esp + 0x38], 0x14
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x4102ae
lea ecx, [esp + 0x144]
push ecx
call fcn.0041e7df
add esp, 4
cmp eax, 0xc8
je 0x410156
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebp
call esi
push edi
call esi
mov eax, dword [esp + 0x1168]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x4102d1
push 0x1000
lea ecx, [esp + 0x15d]
push esi
push ecx
mov dword [esp + 0x1c], esi
xor edi, edi
mov byte [esp + 0x164], 0
call fcn.0041e9c0
mov ebx, dword [sym.imp.WININET.dll_InternetReadFile]
add esp, 0xc
lea edx, [esp + 0x10]
push edx
push 0x1000
lea eax, [esp + 0x160]
push eax
push ebp
call ebx
test eax, eax
je 0x41024e
lea ecx, [ecx]
cmp dword [esp + 0x10], 0
jbe 0x41023d
test esi, esi
jne 0x4101cd
push 0x1001
call fcn.0041cc07
push 0x1001
mov esi, eax
push 0
push esi
call fcn.0041e9c0
add esp, 0x10
jmp 0x4101ef
lea ecx, [edi + 0x1001]
push ecx
push esi
call fcn.0041ccd1
mov esi, eax
push 0x1001
lea edx, [esi + edi]
push 0
push edx
call fcn.0041e9c0
add esp, 0x14
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x15c]
push ecx
lea edx, [esi + edi]
push edx
call fcn.00422d00
add edi, dword [esp + 0x1c]
push 0x1001
lea eax, [esp + 0x168]
push 0
push eax
call fcn.0041e9c0
add esp, 0x18
lea ecx, [esp + 0x10]
push ecx
push 0x1000
lea edx, [esp + 0x160]
push edx
push ebp
call ebx
test eax, eax
jne 0x4101a0
test edi, edi
ja 0x410266
test esi, esi
je 0x41024e
push esi
call fcn.0041cb2a
add esp, 4
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [eax], 0
mov dword [ecx], 0
xor edi, edi
jmp 0x410277
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov dword [edx], esi
mov dword [eax], edi
mov edi, 1
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebp
call esi
mov ecx, dword [esp + 0x14]
push ecx
call esi
mov eax, dword [esp + 0x1168]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4102aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
jmp 0x4102df
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebp
call esi
push edi
call esi
mov eax, dword [esp + 0x1168]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4102dd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x115c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0041cb1b
add esp, 0x1150
ret