Function at 0x40ffb0
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.00430680
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 0x410004
cmp dword [esp + 0x2c], 5
jg 0x410004
mov ebx, 1
test esi, esi
je 0x41032a
test edi, edi
je 0x41032a
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x14
mov esi, 1
call edi
test eax, 0x8000
je 0x410042
push 0x58
call edi
test eax, 0x8000
je 0x410042
push 0x5a
call edi
test eax, 0x8000
je 0x410042
xor esi, esi
mov eax, dword [esp + 0x1168]
cmp dword [eax - 0xc], 0
push 0
push 0
push 0
push esi
je 0x410065
push eax
call dword [sym.imp.WININET.dll_InternetOpenW]
mov edi, eax
mov dword [esp + 0x14], edi
jmp 0x410076
push str.CHM_MSDN
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esp + 0x14], eax
mov edi, eax
test edi, edi
je 0x41032a
test ebx, ebx
je 0x41008f
push 0
push 0x84083180
push 0
push 0
jmp 0x4100fd
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 0x4100d6
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 0x4100c0
sub eax, edx
sar eax, 1
mov ecx, str.Accept_Encoding:_gzip_r_nConnection:_close
jmp 0x4100f4
mov eax, str.Accept_Encoding:_gzip
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4100e0
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 0x410130
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 0x410341
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 0x41031e
lea ecx, [esp + 0x144]
push ecx
call fcn.0041e84f
add esp, 4
cmp eax, 0xc8
je 0x4101c6
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 0x410341
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.0041ea30
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 0x4102be
lea ecx, [ecx]
cmp dword [esp + 0x10], 0
jbe 0x4102ad
test esi, esi
jne 0x41023d
push 0x1001
call fcn.0041cc7a
push 0x1001
mov esi, eax
push 0
push esi
call fcn.0041ea30
add esp, 0x10
jmp 0x41025f
lea ecx, [edi + 0x1001]
push ecx
push esi
call fcn.0041cd44
mov esi, eax
push 0x1001
lea edx, [esi + edi]
push 0
push edx
call fcn.0041ea30
add esp, 0x14
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x15c]
push ecx
lea edx, [esi + edi]
push edx
call fcn.00422d70
add edi, dword [esp + 0x1c]
push 0x1001
lea eax, [esp + 0x168]
push 0
push eax
call fcn.0041ea30
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 0x410210
test edi, edi
ja 0x4102d6
test esi, esi
je 0x4102be
push esi
call fcn.0041cb9d
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 0x4102e7
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 0x41031a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
jmp 0x41034f
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 0x41034d
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.0041cb8e
add esp, 0x1150
ret