Function at 0x12e410
Capabilities:
Get socket status
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x2b
push 0
push 0
dec ecx
jne 0x12e419
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x12e909
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 9], 0
mov dword [ebp - 0x128], 1
imul eax, dword [ebp - 8], 0x50e
mov eax, dword [eax*8 + 0x31d00c]
mov dword [ebp - 0x124], eax
xor eax, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], 0xa
lea eax, [ebp - 0x24]
push eax
push 0
lea eax, [ebp - 0x128]
push eax
push 0
push 0
call sub.wsock32.dll_select
mov ebx, eax
test ebx, ebx
jle 0x12e8eb
inc ebx
je 0x12e8eb
imul ebx, dword [ebp - 8], 0x50e
cmp dword [ebx*8 + 0x31f858], 0
jle 0x12e5a4
cmp dword [ebx*8 + 0x31d00c], 0xffffffff
je 0x12e529
xor eax, eax
push ebp
push 0x12e4ea
push dword fs:[eax]
mov dword fs:[eax], esp
imul eax, dword [ebp - 8], 0x50e
mov ecx, dword [eax*8 + 0x31f858]
mov edx, dword [ebx*8 + 0x31f848]
mov eax, dword [ebx*8 + 0x31d010]
call fcn.001275d4
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x12e52c
or ebx, 0xffffffff
test ebx, ebx
jle 0x12e576
mov byte [ebp - 9], 1
imul esi, dword [ebp - 8], 0x50e
sub dword [esi*8 + 0x31f858], ebx
mov eax, dword [esi*8 + 0x31f848]
add eax, ebx
mov ecx, dword [esi*8 + 0x31f858]
imul edx, dword [ebp - 8], 0x50e
mov edx, dword [edx*8 + 0x31f848]
call fcn.00012840
call sub.kernel32.dll_GetTickCount
mov dword [esi*8 + 0x31d01c], eax
jmp 0x12e8eb
imul eax, dword [ebp - 8], 0x50e
cmp byte [eax*8 + 0x31f878], 0
je 0x12e8eb
push 0x12
mov edx, dword [eax*8 + 0x31d00c]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.0012c528
jmp 0x12e8eb
cmp dword [ebx*8 + 0x31f850], 0
jle 0x12e8eb
call fcn.0012a1fc
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jne 0x12e5c7
mov dword [ebp - 0x14], 1
mov eax, dword [ebp - 0x14]
cdq
push edx
push eax
mov eax, dword [0x2a88f0]
xor edx, edx
call fcn.00016c8e
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x10]
mov edx, dword [ebp - 0x14]
call fcn.0002aea4
mov dword [ebp - 0x1c], 0xffffffff
xor eax, eax
push ebp
push 0x12e8e4
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebx*8 + 0x31f84c]
call fcn.00014090
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0xffffffff
je 0x12e64f
cmp dword [ebx*8 + 0x31f854], 0
jle 0x12e64f
push 0
push 0
imul eax, dword [ebp - 8], 0x50e
mov eax, dword [eax*8 + 0x31f854]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.kernel32.dll_SetFilePointer_1
cmp dword [ebp - 0x1c], 0xffffffff
je 0x12e66c
push 0
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.kernel32.dll_ReadFile_1
cmp dword [ebp - 0x18], 0
jbe 0x12e7a9
mov eax, dword [ebp - 0x18]
add dword [ebx*8 + 0x31f854], eax
mov eax, dword [ebx*8 + 0x31f858]
mov edx, dword [ebx*8 + 0x31f848]
add edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x18]
call fcn.00012840
mov eax, dword [ebp - 0x18]
add dword [ebx*8 + 0x31f858], eax
mov eax, dword [ebx*8 + 0x31f854]
cmp eax, dword [ebx*8 + 0x31f850]
jl 0x12e6db
xor eax, eax
mov dword [ebx*8 + 0x31f854], eax
xor eax, eax
mov dword [ebx*8 + 0x31f850], eax
lea eax, [ebx*8 + 0x31f84c]
call fcn.00013c3c
mov byte [ebx*8 + 0x31f85c], 0
cmp dword [ebx*8 + 0x31d00c], 0xffffffff
je 0x12e758
xor eax, eax
push ebp
push 0x12e719
push dword fs:[eax]
mov dword fs:[eax], esp
mov ecx, dword [ebx*8 + 0x31f858]
mov edx, dword [ebx*8 + 0x31f848]
mov eax, dword [ebx*8 + 0x31d010]
call fcn.001275d4
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x12e75b
or ebx, 0xffffffff
test ebx, ebx
jle 0x12e8bc
mov byte [ebp - 9], 1
imul esi, dword [ebp - 8], 0x50e
sub dword [esi*8 + 0x31f858], ebx
mov eax, dword [esi*8 + 0x31f848]
add eax, ebx
mov ecx, dword [esi*8 + 0x31f858]
imul edx, dword [ebp - 8], 0x50e
mov edx, dword [edx*8 + 0x31f848]
call fcn.00012840
call sub.kernel32.dll_GetTickCount
mov dword [esi*8 + 0x31d01c], eax
jmp 0x12e8bc
mov eax, dword [ebp - 4]
mov esi, dword [eax + 0x94]
test esi, esi
je 0x12e896
lea edx, [ebp - 0x144]
mov eax, 0x12e934
call fcn.00031d88
push dword [ebp - 0x144]
push dword [ebx*8 + 0x31f84c]
lea edx, [ebp - 0x148]
mov eax, 0x12e94c
call fcn.00031d88
push dword [ebp - 0x148]
lea edx, [ebp - 0x14c]
mov eax, dword [ebx*8 + 0x31f854]
call fcn.00033438
push dword [ebp - 0x14c]
lea edx, [ebp - 0x150]
mov eax, 0x12e950
call fcn.00031d88
push dword [ebp - 0x150]
lea edx, [ebp - 0x154]
mov eax, dword [ebx*8 + 0x31f850]
call fcn.00033438
push dword [ebp - 0x154]
lea edx, [ebp - 0x158]
mov eax, 0x12e950
call fcn.00031d88
push dword [ebp - 0x158]
lea edx, [ebp - 0x15c]
mov eax, dword [ebp - 0x14]
call fcn.00033438
push dword [ebp - 0x15c]
lea edx, [ebp - 0x160]
mov eax, 0x12e954
call fcn.00031d88
push dword [ebp - 0x160]
lea eax, [ebp - 0x140]
mov edx, 9
call fcn.00013f8c
mov edx, dword [ebp - 0x140]
lea ecx, [ebp - 0x13c]
mov eax, esi
call fcn.0004ced0
xor eax, eax
mov dword [ebx*8 + 0x31f854], eax
xor eax, eax
mov dword [ebx*8 + 0x31f850], eax
lea eax, [ebx*8 + 0x31f84c]
call fcn.00013c3c
mov byte [ebx*8 + 0x31f85c], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x12e8eb
cmp dword [ebp - 0x1c], 0xffffffff
je 0x12e8d8
mov eax, dword [ebp - 0x1c]
push eax
call sub.kernel32.dll_CloseHandle_1
lea eax, [ebp - 0x10]
mov edx, dword [ebp - 0x14]
call fcn.0002aecc
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x12e910
lea eax, [ebp - 0x160]
mov edx, 0xe
call fcn.00013c60
ret