
ws2_32.nostrip.dll:     file format pei-i386

Disassembly of section .text:

77781000 <_htonl@4>:
ULONG
EXPORT
htonl(
  IN  ULONG hostlong)
{
77781000:	55                   	push   %ebp
77781001:	89 e5                	mov    %esp,%ebp
77781003:	8b 4d 08             	mov    0x8(%ebp),%ecx
  return DH2N(hostlong);
}
77781006:	5d                   	pop    %ebp
77781007:	89 ca                	mov    %ecx,%edx
77781009:	89 c8                	mov    %ecx,%eax
7778100b:	c1 e8 18             	shr    $0x18,%eax
7778100e:	81 e2 00 00 ff 00    	and    $0xff0000,%edx
77781014:	c1 ea 08             	shr    $0x8,%edx
77781017:	09 d0                	or     %edx,%eax
77781019:	89 ca                	mov    %ecx,%edx
7778101b:	c1 e1 18             	shl    $0x18,%ecx
7778101e:	81 e2 00 ff 00 00    	and    $0xff00,%edx
77781024:	c1 e2 08             	shl    $0x8,%edx
77781027:	09 d0                	or     %edx,%eax
77781029:	09 c8                	or     %ecx,%eax
7778102b:	c2 04 00             	ret    $0x4
7778102e:	89 f6                	mov    %esi,%esi

77781030 <_htons@4>:


/*
 * @implemented
 */
USHORT
EXPORT
htons(
  IN  USHORT hostshort)
{
77781030:	55                   	push   %ebp
77781031:	89 e5                	mov    %esp,%ebp
  return WH2N(hostshort);
77781033:	8b 45 08             	mov    0x8(%ebp),%eax
}
77781036:	5d                   	pop    %ebp
77781037:	25 ff ff 00 00       	and    $0xffff,%eax
7778103c:	89 c2                	mov    %eax,%edx
7778103e:	c1 ea 08             	shr    $0x8,%edx
77781041:	c1 e0 08             	shl    $0x8,%eax
77781044:	09 d0                	or     %edx,%eax
77781046:	25 ff ff 00 00       	and    $0xffff,%eax
7778104b:	c2 04 00             	ret    $0x4
7778104e:	89 f6                	mov    %esi,%esi

77781050 <_ntohl@4>:


/*
 * @implemented
 */
ULONG
EXPORT
ntohl(
  IN  ULONG netlong)
{
77781050:	55                   	push   %ebp
77781051:	89 e5                	mov    %esp,%ebp
77781053:	8b 4d 08             	mov    0x8(%ebp),%ecx
  return DN2H(netlong);
}
77781056:	5d                   	pop    %ebp
77781057:	89 ca                	mov    %ecx,%edx
77781059:	89 c8                	mov    %ecx,%eax
7778105b:	c1 e8 18             	shr    $0x18,%eax
7778105e:	81 e2 00 00 ff 00    	and    $0xff0000,%edx
77781064:	c1 ea 08             	shr    $0x8,%edx
77781067:	09 d0                	or     %edx,%eax
77781069:	89 ca                	mov    %ecx,%edx
7778106b:	c1 e1 18             	shl    $0x18,%ecx
7778106e:	81 e2 00 ff 00 00    	and    $0xff00,%edx
77781074:	c1 e2 08             	shl    $0x8,%edx
77781077:	09 d0                	or     %edx,%eax
77781079:	09 c8                	or     %ecx,%eax
7778107b:	c2 04 00             	ret    $0x4
7778107e:	89 f6                	mov    %esi,%esi

77781080 <_ntohs@4>:


/*
 * @implemented
 */
USHORT
EXPORT
ntohs(
  IN  USHORT netshort)
{
77781080:	55                   	push   %ebp
77781081:	89 e5                	mov    %esp,%ebp
  return WN2H(netshort);
77781083:	8b 45 08             	mov    0x8(%ebp),%eax
}
77781086:	5d                   	pop    %ebp
77781087:	25 ff ff 00 00       	and    $0xffff,%eax
7778108c:	89 c2                	mov    %eax,%edx
7778108e:	c1 ea 08             	shr    $0x8,%edx
77781091:	c1 e0 08             	shl    $0x8,%eax
77781094:	09 d0                	or     %edx,%eax
77781096:	25 ff ff 00 00       	and    $0xffff,%eax
7778109b:	c2 04 00             	ret    $0x4
7778109e:	90                   	nop    
7778109f:	90                   	nop    

777810a0 <_ReferenceProviderByPointer>:
777810a0:	55                   	push   %ebp
777810a1:	89 e5                	mov    %esp,%ebp
777810a3:	8b 45 08             	mov    0x8(%ebp),%eax
777810a6:	8b 50 08             	mov    0x8(%eax),%edx
777810a9:	42                   	inc    %edx
777810aa:	89 50 08             	mov    %edx,0x8(%eax)
777810ad:	5d                   	pop    %ebp
777810ae:	c3                   	ret    
777810af:	90                   	nop    

777810b0 <_CreateCatalogEntry>:
777810b0:	55                   	push   %ebp
777810b1:	89 e5                	mov    %esp,%ebp
777810b3:	53                   	push   %ebx
777810b4:	50                   	push   %eax
777810b5:	50                   	push   %eax

/* EOF */
777810b6:	68 28 05 00 00       	push   $0x528
777810bb:	6a 00                	push   $0x0
777810bd:	a1 60 70 78 77       	mov    0x77787060,%eax
777810c2:	50                   	push   %eax
777810c3:	e8 28 31 00 00       	call   777841f0 <_HeapAlloc@12>
777810c8:	89 c3                	mov    %eax,%ebx
777810ca:	58                   	pop    %eax
777810cb:	31 c0                	xor    %eax,%eax
777810cd:	85 db                	test   %ebx,%ebx
777810cf:	74 62                	je     77781133 <_CreateCatalogEntry+0x83>
777810d1:	51                   	push   %ecx
777810d2:	68 28 05 00 00       	push   $0x528
777810d7:	6a 00                	push   $0x0
777810d9:	53                   	push   %ebx
777810da:	e8 d1 2f 00 00       	call   777840b0 <_memset>
777810df:	58                   	pop    %eax
777810e0:	8b 45 08             	mov    0x8(%ebp),%eax
777810e3:	5a                   	pop    %edx
777810e4:	50                   	push   %eax
777810e5:	8d 43 24             	lea    0x24(%ebx),%eax
777810e8:	50                   	push   %eax
777810e9:	e8 a2 2f 00 00       	call   77784090 <_RtlCreateUnicodeString@8>
777810ee:	5a                   	pop    %edx
777810ef:	84 c0                	test   %al,%al
777810f1:	59                   	pop    %ecx
777810f2:	74 44                	je     77781138 <_CreateCatalogEntry+0x88>
777810f4:	83 ec 0c             	sub    $0xc,%esp
777810f7:	8d 43 0c             	lea    0xc(%ebx),%eax
777810fa:	c7 43 08 01 00 00 00 	movl   $0x1,0x8(%ebx)
77781101:	50                   	push   %eax
77781102:	e8 f9 30 00 00       	call   77784200 <_InitializeCriticalSection@4>
  IN PLIST_ENTRY  ListHead,
  IN PLIST_ENTRY  Entry)
{ 
  PLIST_ENTRY OldBlink;
  OldBlink = ListHead->Blink;
77781107:	a1 34 70 78 77       	mov    0x77787034,%eax
  Entry->Flink = ListHead;
7778110c:	c7 03 30 70 78 77    	movl   $0x77787030,(%ebx)
  Entry->Blink = OldBlink;
77781112:	89 43 04             	mov    %eax,0x4(%ebx)
	WS_DbgPrint(MAX_TRACE, ("LibraryName (%S).\n", LibraryName));

  Provider = HeapAlloc(GlobalHeap, 0, sizeof(CATALOG_ENTRY));
  if (!Provider) {
    return NULL;
	}

  ZeroMemory(Provider, sizeof(CATALOG_ENTRY));

  if (!RtlCreateUnicodeString(&Provider->LibraryName, LibraryName)) {
    RtlFreeHeap(GlobalHeap, 0, Provider);
    return NULL;
  }

  Provider->ReferenceCount = 1;

	InitializeCriticalSection(&Provider->Lock);
  Provider->hModule = NULL;
77781115:	c7 43 2c 00 00 00 00 	movl   $0x0,0x2c(%ebx)
  PLIST_ENTRY OldBlink;
  OldBlink = ListHead->Blink;
  Entry->Flink = ListHead;
  Entry->Blink = OldBlink;
  OldBlink->Flink = Entry;
7778111c:	89 18                	mov    %ebx,(%eax)

  Provider->Mapping = NULL;
7778111e:	c7 83 a4 02 00 00 00 	movl   $0x0,0x2a4(%ebx)
77781125:	00 00 00 
static __inline VOID
InsertTailList(
  IN PLIST_ENTRY  ListHead,
  IN PLIST_ENTRY  Entry)
{ 
77781128:	83 c4 0c             	add    $0xc,%esp
  PLIST_ENTRY OldBlink;
  OldBlink = ListHead->Blink;
  Entry->Flink = ListHead;
  Entry->Blink = OldBlink;
  OldBlink->Flink = Entry;
  ListHead->Blink = Entry;
7778112b:	89 1d 34 70 78 77    	mov    %ebx,0x77787034

  //EnterCriticalSection(&CatalogLock);

  InsertTailList(&CatalogListHead, &Provider->ListEntry);

  //LeaveCriticalSection(&CatalogLock);

  return Provider;
77781131:	89 d8                	mov    %ebx,%eax
}
77781133:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781136:	c9                   	leave  
77781137:	c3                   	ret    
77781138:	50                   	push   %eax
77781139:	53                   	push   %ebx
7778113a:	6a 00                	push   $0x0
7778113c:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
77781142:	51                   	push   %ecx
77781143:	e8 58 2f 00 00       	call   777840a0 <_RtlFreeHeap@12>
77781148:	31 c0                	xor    %eax,%eax
7778114a:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778114d:	c9                   	leave  
7778114e:	c3                   	ret    
7778114f:	90                   	nop    

77781150 <_LocateProvider>:


INT DestroyCatalogEntry(
    PCATALOG_ENTRY Provider)
{
  INT Status;

  WS_DbgPrint(MAX_TRACE, ("Provider (0x%X).\n", Provider));

  //EnterCriticalSection(&CatalogLock);
  RemoveEntryList(&Provider->ListEntry);
  //LeaveCriticalSection(&CatalogLock);

  HeapFree(GlobalHeap, 0, Provider->Mapping);

  if (NULL != Provider->hModule) {
    Status = UnloadProvider(Provider);
  } else {
    Status = NO_ERROR;
  }

  //DeleteCriticalSection(&Provider->Lock);

  HeapFree(GlobalHeap, 0, Provider);

  return Status;
}


PCATALOG_ENTRY LocateProvider(
    LPWSAPROTOCOL_INFOW lpProtocolInfo)
{
77781150:	55                   	push   %ebp
77781151:	89 e5                	mov    %esp,%ebp
77781153:	57                   	push   %edi
77781154:	56                   	push   %esi
77781155:	53                   	push   %ebx
77781156:	53                   	push   %ebx
77781157:	53                   	push   %ebx
  PLIST_ENTRY CurrentEntry;
  PCATALOG_ENTRY Provider;
  UINT i;

  WS_DbgPrint(MAX_TRACE, ("lpProtocolInfo (0x%X).\n", lpProtocolInfo));

  //EnterCriticalSection(&CatalogLock);

  CurrentEntry = CatalogListHead.Flink;
77781158:	a1 30 70 78 77       	mov    0x77787030,%eax
7778115d:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
  while (CurrentEntry != &CatalogListHead) {
	  Provider = CONTAINING_RECORD(CurrentEntry,
                                 CATALOG_ENTRY,
                                 ListEntry);

    for (i = 0; i < Provider->Mapping->Rows; i++) {
      if ((lpProtocolInfo->iAddressFamily == (INT) Provider->Mapping->Mapping[i].AddressFamily) &&
        (lpProtocolInfo->iSocketType      == (INT) Provider->Mapping->Mapping[i].SocketType) &&
        ((lpProtocolInfo->iProtocol       == (INT) Provider->Mapping->Mapping[i].Protocol) ||
        (lpProtocolInfo->iSocketType      == SOCK_RAW))) {
        //LeaveCriticalSection(&CatalogLock);
				WS_DbgPrint(MID_TRACE, ("Returning provider at (0x%X).\n", Provider));
        return Provider;
      }
    }

    CurrentEntry = CurrentEntry->Flink;
77781160:	3d 30 70 78 77       	cmp    $0x77787030,%eax
77781165:	74 69                	je     777811d0 <_LocateProvider+0x80>
77781167:	8b 5d f0             	mov    0xfffffff0(%ebp),%ebx
7778116a:	31 c9                	xor    %ecx,%ecx
7778116c:	8b 93 a4 02 00 00    	mov    0x2a4(%ebx),%edx
77781172:	8b 02                	mov    (%edx),%eax
77781174:	83 f8 00             	cmp    $0x0,%eax
77781177:	76 47                	jbe    777811c0 <_LocateProvider+0x70>
77781179:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778117c:	89 c6                	mov    %eax,%esi
7778117e:	8b 7b 4c             	mov    0x4c(%ebx),%edi
77781181:	eb 08                	jmp    7778118b <_LocateProvider+0x3b>
77781183:	41                   	inc    %ecx
77781184:	83 c2 0c             	add    $0xc,%edx
77781187:	39 ce                	cmp    %ecx,%esi
77781189:	76 35                	jbe    777811c0 <_LocateProvider+0x70>
7778118b:	3b 7a 08             	cmp    0x8(%edx),%edi
7778118e:	75 f3                	jne    77781183 <_LocateProvider+0x33>
77781190:	8b 45 08             	mov    0x8(%ebp),%eax
77781193:	8b 40 58             	mov    0x58(%eax),%eax
77781196:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
77781199:	3b 42 0c             	cmp    0xc(%edx),%eax
7778119c:	75 e5                	jne    77781183 <_LocateProvider+0x33>
7778119e:	8b 5d 08             	mov    0x8(%ebp),%ebx
777811a1:	8b 42 10             	mov    0x10(%edx),%eax
777811a4:	39 43 5c             	cmp    %eax,0x5c(%ebx)
777811a7:	74 06                	je     777811af <_LocateProvider+0x5f>
777811a9:	83 7d ec 03          	cmpl   $0x3,0xffffffec(%ebp)
777811ad:	75 d4                	jne    77781183 <_LocateProvider+0x33>
777811af:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
  }

  //LeaveCriticalSection(&CatalogLock);

  return NULL;
}
777811b2:	5a                   	pop    %edx
777811b3:	59                   	pop    %ecx
777811b4:	5b                   	pop    %ebx
777811b5:	5e                   	pop    %esi
777811b6:	5f                   	pop    %edi
777811b7:	5d                   	pop    %ebp
777811b8:	c3                   	ret    
777811b9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777811c0:	8b 5d f0             	mov    0xfffffff0(%ebp),%ebx
777811c3:	8b 1b                	mov    (%ebx),%ebx
777811c5:	89 5d f0             	mov    %ebx,0xfffffff0(%ebp)
777811c8:	81 fb 30 70 78 77    	cmp    $0x77787030,%ebx
777811ce:	75 97                	jne    77781167 <_LocateProvider+0x17>
777811d0:	31 c0                	xor    %eax,%eax
777811d2:	5a                   	pop    %edx
777811d3:	59                   	pop    %ecx
777811d4:	5b                   	pop    %ebx
777811d5:	5e                   	pop    %esi
777811d6:	5f                   	pop    %edi
777811d7:	5d                   	pop    %ebp
777811d8:	c3                   	ret    
777811d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777811e0 <_LocateProviderById>:


PCATALOG_ENTRY LocateProviderById(
    DWORD CatalogEntryId)
{
777811e0:	55                   	push   %ebp
  PLIST_ENTRY CurrentEntry;
  PCATALOG_ENTRY Provider;

  WS_DbgPrint(MAX_TRACE, ("CatalogEntryId (%d).\n", CatalogEntryId));

  //EnterCriticalSection(&CatalogLock);
  CurrentEntry = CatalogListHead.Flink;
777811e1:	a1 30 70 78 77       	mov    0x77787030,%eax
777811e6:	89 e5                	mov    %esp,%ebp
777811e8:	8b 55 08             	mov    0x8(%ebp),%edx
777811eb:	eb 0a                	jmp    777811f7 <_LocateProviderById+0x17>
777811ed:	8d 76 00             	lea    0x0(%esi),%esi
  while (CurrentEntry != &CatalogListHead) {
	  Provider = CONTAINING_RECORD(CurrentEntry,
                                 CATALOG_ENTRY,
                                 ListEntry);

    if (Provider->ProtocolInfo.dwCatalogEntryId == CatalogEntryId) {
777811f0:	39 50 54             	cmp    %edx,0x54(%eax)
777811f3:	74 0b                	je     77781200 <_LocateProviderById+0x20>
      //LeaveCriticalSection(&CatalogLock);
		  WS_DbgPrint(MID_TRACE, ("Returning provider at (0x%X)  Name (%wZ).\n",
        Provider, &Provider->LibraryName));
      return Provider;
    }

    CurrentEntry = CurrentEntry->Flink;
777811f5:	8b 00                	mov    (%eax),%eax
777811f7:	3d 30 70 78 77       	cmp    $0x77787030,%eax
777811fc:	75 f2                	jne    777811f0 <_LocateProviderById+0x10>
  }
  //LeaveCriticalSection(&CatalogLock);

	WS_DbgPrint(MID_TRACE, ("Provider was not found.\n"));

  return NULL;
777811fe:	31 c0                	xor    %eax,%eax
}
77781200:	5d                   	pop    %ebp
77781201:	c3                   	ret    
77781202:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77781209:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781210 <_LoadProvider>:


INT LoadProvider(
    PCATALOG_ENTRY Provider,
    LPWSAPROTOCOL_INFOW lpProtocolInfo)
{
77781210:	55                   	push   %ebp
  INT Status;

  WS_DbgPrint(MID_TRACE, ("Loading provider at (0x%X)  Name (%wZ).\n",
    Provider, &Provider->LibraryName));

  if (NULL == Provider->hModule)
  {
    /* DLL is not loaded so load it now
     * UNICODE_STRING objects are not null-terminated, but LoadLibraryW
     * expects a null-terminated string
     */
    Provider->LibraryName.Buffer[Provider->LibraryName.Length / sizeof(WCHAR)] = L'\0';
    Provider->hModule = LoadLibraryW(Provider->LibraryName.Buffer);
    if (NULL != Provider->hModule) {
      Provider->WSPStartup = (LPWSPSTARTUP)GetProcAddress(
        Provider->hModule,
        "WSPStartup");
      if (Provider->WSPStartup) {
			  WS_DbgPrint(MAX_TRACE, ("Calling WSPStartup at (0x%X).\n",
          Provider->WSPStartup));
        Status = Provider->WSPStartup(
          MAKEWORD(2, 2),
          &Provider->WSPData,
          lpProtocolInfo,
          UpcallTable,
          &Provider->ProcTable);

        /* FIXME: Validate the procedure table */
      } else
        Status = ERROR_BAD_PROVIDER;
    } else
      Status = ERROR_DLL_NOT_FOUND;
  } else
    Status = NO_ERROR;
77781211:	31 d2                	xor    %edx,%edx
77781213:	89 e5                	mov    %esp,%ebp
77781215:	57                   	push   %edi
77781216:	56                   	push   %esi
77781217:	53                   	push   %ebx
77781218:	83 ec 0c             	sub    $0xc,%esp
7778121b:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778121e:	8b 7b 2c             	mov    0x2c(%ebx),%edi
77781221:	85 ff                	test   %edi,%edi
77781223:	74 0b                	je     77781230 <_LoadProvider+0x20>

  WS_DbgPrint(MID_TRACE, ("Status (%d).\n", Status));

  return Status;
}
77781225:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781228:	89 d0                	mov    %edx,%eax
7778122a:	5b                   	pop    %ebx
7778122b:	5e                   	pop    %esi
7778122c:	5f                   	pop    %edi
7778122d:	5d                   	pop    %ebp
7778122e:	c3                   	ret    
7778122f:	90                   	nop    
77781230:	66 8b 43 24          	mov    0x24(%ebx),%ax
77781234:	8b 53 28             	mov    0x28(%ebx),%edx
77781237:	66 d1 e8             	shr    %ax
7778123a:	83 ec 0c             	sub    $0xc,%esp
7778123d:	25 ff ff 00 00       	and    $0xffff,%eax
77781242:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
77781248:	52                   	push   %edx
77781249:	e8 c2 2f 00 00       	call   77784210 <_LoadLibraryW@4>
7778124e:	ba 85 04 00 00       	mov    $0x485,%edx
77781253:	83 c4 0c             	add    $0xc,%esp
77781256:	85 c0                	test   %eax,%eax
77781258:	89 43 2c             	mov    %eax,0x2c(%ebx)
7778125b:	74 c8                	je     77781225 <_LoadProvider+0x15>
7778125d:	56                   	push   %esi
7778125e:	56                   	push   %esi
7778125f:	68 00 60 78 77       	push   $0x77786000
77781264:	50                   	push   %eax
77781265:	e8 b6 2f 00 00       	call   77784220 <_GetProcAddress@8>
7778126a:	85 c0                	test   %eax,%eax
7778126c:	89 83 a8 02 00 00    	mov    %eax,0x2a8(%ebx)
77781272:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77781275:	5a                   	pop    %edx
77781276:	ba b4 04 00 00       	mov    $0x4b4,%edx
7778127b:	59                   	pop    %ecx
7778127c:	74 a7                	je     77781225 <_LoadProvider+0x15>
7778127e:	50                   	push   %eax
7778127f:	8d 83 b0 04 00 00    	lea    0x4b0(%ebx),%eax
77781285:	b9 0f 00 00 00       	mov    $0xf,%ecx
7778128a:	50                   	push   %eax
7778128b:	b8 70 70 78 77       	mov    $0x77787070,%eax
77781290:	83 ec 3c             	sub    $0x3c,%esp
77781293:	89 c6                	mov    %eax,%esi
77781295:	fc                   	cld    
77781296:	89 e7                	mov    %esp,%edi
77781298:	8d 83 ac 02 00 00    	lea    0x2ac(%ebx),%eax
7778129e:	f3 a5                	repz movsl %ds:(%esi),%es:(%edi)
777812a0:	8b 7d 0c             	mov    0xc(%ebp),%edi
777812a3:	57                   	push   %edi
777812a4:	50                   	push   %eax
777812a5:	68 02 02 00 00       	push   $0x202
777812aa:	ff 55 f0             	call   *0xfffffff0(%ebp)
777812ad:	89 c2                	mov    %eax,%edx
777812af:	5e                   	pop    %esi
777812b0:	e9 70 ff ff ff       	jmp    77781225 <_LoadProvider+0x15>
777812b5:	8d 74 26 00          	lea    0x0(%esi),%esi
777812b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777812c0 <_UnloadProvider>:


INT UnloadProvider(
    PCATALOG_ENTRY Provider)
{
777812c0:	55                   	push   %ebp
777812c1:	89 e5                	mov    %esp,%ebp
777812c3:	53                   	push   %ebx
777812c4:	50                   	push   %eax
777812c5:	8b 5d 08             	mov    0x8(%ebp),%ebx
  INT Status = NO_ERROR;
777812c8:	c7 45 f8 00 00 00 00 	movl   $0x0,0xfffffff8(%ebp)

  WS_DbgPrint(MAX_TRACE, ("Unloading provider at (0x%X)\n", Provider));

  if (NULL != Provider->hModule) {
777812cf:	8b 43 2c             	mov    0x2c(%ebx),%eax
777812d2:	85 c0                	test   %eax,%eax
777812d4:	75 0a                	jne    777812e0 <_UnloadProvider+0x20>
    WS_DbgPrint(MAX_TRACE, ("Calling WSPCleanup at (0x%X).\n",
      Provider->ProcTable.lpWSPCleanup));
      Provider->ProcTable.lpWSPCleanup(&Status);

    WS_DbgPrint(MAX_TRACE, ("Calling FreeLibrary(0x%X).\n", Provider->hModule));
    if (!FreeLibrary(Provider->hModule)) {
      WS_DbgPrint(MIN_TRACE, ("Could not free library at (0x%X).\n", Provider->hModule));
      Status = GetLastError();
    }

    Provider->hModule = NULL;
  }

  WS_DbgPrint(MAX_TRACE, ("Status (%d).\n", Status));

  return Status;
777812d6:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
}
777812d9:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777812dc:	c9                   	leave  
777812dd:	c3                   	ret    
777812de:	89 f6                	mov    %esi,%esi
777812e0:	83 ec 0c             	sub    $0xc,%esp
777812e3:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777812e6:	50                   	push   %eax
777812e7:	ff 93 c4 04 00 00    	call   *0x4c4(%ebx)
777812ed:	8b 43 2c             	mov    0x2c(%ebx),%eax
777812f0:	50                   	push   %eax
777812f1:	e8 3a 2f 00 00       	call   77784230 <_FreeLibrary@4>
777812f6:	83 c4 0c             	add    $0xc,%esp
777812f9:	85 c0                	test   %eax,%eax
777812fb:	74 0f                	je     7778130c <_UnloadProvider+0x4c>
777812fd:	c7 43 2c 00 00 00 00 	movl   $0x0,0x2c(%ebx)
77781304:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781307:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778130a:	c9                   	leave  
7778130b:	c3                   	ret    
7778130c:	e8 2f 2f 00 00       	call   77784240 <_GetLastError@0>
77781311:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
77781314:	eb e7                	jmp    777812fd <_UnloadProvider+0x3d>
77781316:	8d 76 00             	lea    0x0(%esi),%esi
77781319:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781320 <_DestroyCatalogEntry>:
77781320:	55                   	push   %ebp
77781321:	89 e5                	mov    %esp,%ebp
77781323:	56                   	push   %esi
77781324:	53                   	push   %ebx
77781325:	8b 5d 08             	mov    0x8(%ebp),%ebx
{
  PLIST_ENTRY OldFlink;
  PLIST_ENTRY OldBlink;

  OldFlink = Entry->Flink;
77781328:	8b 13                	mov    (%ebx),%edx
  OldBlink = Entry->Blink;
7778132a:	8b 43 04             	mov    0x4(%ebx),%eax
  OldFlink->Blink = OldBlink;
7778132d:	89 42 04             	mov    %eax,0x4(%edx)
  OldBlink->Flink = OldFlink;
77781330:	89 10                	mov    %edx,(%eax)
77781332:	50                   	push   %eax
77781333:	8b b3 a4 02 00 00    	mov    0x2a4(%ebx),%esi
77781339:	56                   	push   %esi
7778133a:	6a 00                	push   $0x0
7778133c:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
77781342:	31 f6                	xor    %esi,%esi
77781344:	51                   	push   %ecx
77781345:	e8 06 2f 00 00       	call   77784250 <_HeapFree@12>
7778134a:	8b 43 2c             	mov    0x2c(%ebx),%eax
7778134d:	5a                   	pop    %edx
7778134e:	85 c0                	test   %eax,%eax
77781350:	75 1e                	jne    77781370 <_DestroyCatalogEntry+0x50>
77781352:	50                   	push   %eax
77781353:	53                   	push   %ebx
77781354:	6a 00                	push   $0x0
77781356:	a1 60 70 78 77       	mov    0x77787060,%eax
7778135b:	50                   	push   %eax
7778135c:	e8 ef 2e 00 00       	call   77784250 <_HeapFree@12>
77781361:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77781364:	89 f0                	mov    %esi,%eax
77781366:	5b                   	pop    %ebx
77781367:	5e                   	pop    %esi
77781368:	5d                   	pop    %ebp
77781369:	c3                   	ret    
7778136a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781370:	83 ec 0c             	sub    $0xc,%esp
77781373:	53                   	push   %ebx
77781374:	e8 47 ff ff ff       	call   777812c0 <_UnloadProvider>
77781379:	83 c4 10             	add    $0x10,%esp
7778137c:	89 c6                	mov    %eax,%esi
7778137e:	50                   	push   %eax
7778137f:	53                   	push   %ebx
77781380:	6a 00                	push   $0x0
77781382:	a1 60 70 78 77       	mov    0x77787060,%eax
77781387:	50                   	push   %eax
77781388:	e8 c3 2e 00 00       	call   77784250 <_HeapFree@12>
7778138d:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77781390:	89 f0                	mov    %esi,%eax
77781392:	5b                   	pop    %ebx
77781393:	5e                   	pop    %esi
77781394:	5d                   	pop    %ebp
77781395:	c3                   	ret    
77781396:	8d 76 00             	lea    0x0(%esi),%esi
77781399:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777813a0 <_DereferenceProviderByPointer>:
777813a0:	55                   	push   %ebp
777813a1:	89 e5                	mov    %esp,%ebp
777813a3:	8b 55 08             	mov    0x8(%ebp),%edx
777813a6:	8b 42 08             	mov    0x8(%edx),%eax
777813a9:	48                   	dec    %eax
777813aa:	89 42 08             	mov    %eax,0x8(%edx)
777813ad:	85 c0                	test   %eax,%eax
777813af:	74 02                	je     777813b3 <_DereferenceProviderByPointer+0x13>
777813b1:	5d                   	pop    %ebp
777813b2:	c3                   	ret    
777813b3:	5d                   	pop    %ebp
777813b4:	e9 67 ff ff ff       	jmp    77781320 <_DestroyCatalogEntry>
777813b9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777813c0 <_CreateCatalog>:


VOID CreateCatalog(VOID)
{
777813c0:	55                   	push   %ebp
777813c1:	89 e5                	mov    %esp,%ebp
777813c3:	53                   	push   %ebx
777813c4:	83 ec 10             	sub    $0x10,%esp
  PCATALOG_ENTRY Provider;

  InitializeCriticalSection(&CatalogLock);
777813c7:	68 40 70 78 77       	push   $0x77787040
777813cc:	e8 2f 2e 00 00       	call   77784200 <_InitializeCriticalSection@4>
static __inline VOID
InitializeListHead(
  IN PLIST_ENTRY  ListHead)
{
  ListHead->Flink = ListHead->Blink = ListHead;
777813d1:	c7 05 34 70 78 77 30 	movl   $0x77787030,0x77787034
777813d8:	70 78 77 
777813db:	c7 05 30 70 78 77 30 	movl   $0x77787030,0x77787030
777813e2:	70 78 77 

	InitializeListHead(&CatalogListHead);

  /* FIXME: Read service provider catalog from registry 
  
  Catalog info is saved somewhere under
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2
  */
  
#if 1
    Provider = CreateCatalogEntry(L"msafd.dll");
777813e5:	68 0c 60 78 77       	push   $0x7778600c
777813ea:	e8 c1 fc ff ff       	call   777810b0 <_CreateCatalogEntry>
    if (!Provider) {
777813ef:	83 c4 10             	add    $0x10,%esp
777813f2:	89 c3                	mov    %eax,%ebx
777813f4:	85 c0                	test   %eax,%eax
777813f6:	0f 84 b5 00 00 00    	je     777814b1 <_CreateCatalog+0xf1>
		  WS_DbgPrint(MIN_TRACE, ("Could not create catalog entry.\n"));
      return;
  }
	
  /* Assume one Service Provider with id 1 */
  Provider->ProtocolInfo.dwCatalogEntryId = 1;
777813fc:	c7 40 54 01 00 00 00 	movl   $0x1,0x54(%eax)

  Provider->Mapping = HeapAlloc(GlobalHeap,
77781403:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
77781409:	50                   	push   %eax
7778140a:	68 84 00 00 00       	push   $0x84
7778140f:	6a 00                	push   $0x0
77781411:	51                   	push   %ecx
77781412:	e8 d9 2d 00 00       	call   777841f0 <_HeapAlloc@12>
    0,
    6 * sizeof(WINSOCK_MAPPING) + 3 * sizeof(DWORD));
  if (!Provider->Mapping)
77781417:	85 c0                	test   %eax,%eax
77781419:	89 83 a4 02 00 00    	mov    %eax,0x2a4(%ebx)
7778141f:	5a                   	pop    %edx
77781420:	0f 84 8b 00 00 00    	je     777814b1 <_CreateCatalog+0xf1>
    return;

  Provider->Mapping->Rows    = 6;
77781426:	c7 00 06 00 00 00    	movl   $0x6,(%eax)
  Provider->Mapping->Columns = 3;
7778142c:	c7 40 04 03 00 00 00 	movl   $0x3,0x4(%eax)

  Provider->Mapping->Mapping[0].AddressFamily = AF_INET;
77781433:	c7 40 08 02 00 00 00 	movl   $0x2,0x8(%eax)
  Provider->Mapping->Mapping[0].SocketType    = SOCK_STREAM;
7778143a:	c7 40 0c 01 00 00 00 	movl   $0x1,0xc(%eax)
  Provider->Mapping->Mapping[0].Protocol      = 0;
77781441:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)

  Provider->Mapping->Mapping[1].AddressFamily = AF_INET;
77781448:	c7 40 14 02 00 00 00 	movl   $0x2,0x14(%eax)
  Provider->Mapping->Mapping[1].SocketType    = SOCK_STREAM;
7778144f:	c7 40 18 01 00 00 00 	movl   $0x1,0x18(%eax)
  Provider->Mapping->Mapping[1].Protocol      = IPPROTO_TCP;
77781456:	c7 40 1c 06 00 00 00 	movl   $0x6,0x1c(%eax)

  Provider->Mapping->Mapping[2].AddressFamily = AF_INET;
7778145d:	c7 40 20 02 00 00 00 	movl   $0x2,0x20(%eax)
  Provider->Mapping->Mapping[2].SocketType    = SOCK_DGRAM;
77781464:	c7 40 24 02 00 00 00 	movl   $0x2,0x24(%eax)
  Provider->Mapping->Mapping[2].Protocol      = 0;
7778146b:	c7 40 28 00 00 00 00 	movl   $0x0,0x28(%eax)

  Provider->Mapping->Mapping[3].AddressFamily = AF_INET;
77781472:	c7 40 2c 02 00 00 00 	movl   $0x2,0x2c(%eax)
  Provider->Mapping->Mapping[3].SocketType    = SOCK_DGRAM;
77781479:	c7 40 30 02 00 00 00 	movl   $0x2,0x30(%eax)
  Provider->Mapping->Mapping[3].Protocol      = IPPROTO_UDP;
77781480:	c7 40 34 11 00 00 00 	movl   $0x11,0x34(%eax)

  Provider->Mapping->Mapping[4].AddressFamily = AF_INET;
77781487:	c7 40 38 02 00 00 00 	movl   $0x2,0x38(%eax)
  Provider->Mapping->Mapping[4].SocketType    = SOCK_RAW;
7778148e:	c7 40 3c 03 00 00 00 	movl   $0x3,0x3c(%eax)
  Provider->Mapping->Mapping[4].Protocol      = IPPROTO_ICMP;
77781495:	c7 40 40 01 00 00 00 	movl   $0x1,0x40(%eax)

  Provider->Mapping->Mapping[5].AddressFamily = AF_INET;
7778149c:	c7 40 44 02 00 00 00 	movl   $0x2,0x44(%eax)
  Provider->Mapping->Mapping[5].SocketType    = SOCK_RAW;
777814a3:	c7 40 48 03 00 00 00 	movl   $0x3,0x48(%eax)
  Provider->Mapping->Mapping[5].Protocol      = 0;
777814aa:	c7 40 4c 00 00 00 00 	movl   $0x0,0x4c(%eax)
#endif
}
777814b1:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777814b4:	c9                   	leave  
777814b5:	c3                   	ret    
777814b6:	8d 76 00             	lea    0x0(%esi),%esi
777814b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777814c0 <_DestroyCatalog>:


VOID DestroyCatalog(VOID)
{
777814c0:	55                   	push   %ebp
777814c1:	89 e5                	mov    %esp,%ebp
777814c3:	53                   	push   %ebx
777814c4:	50                   	push   %eax
  PLIST_ENTRY CurrentEntry;
	PLIST_ENTRY NextEntry;
  PCATALOG_ENTRY Provider;

  CurrentEntry = CatalogListHead.Flink;
777814c5:	a1 30 70 78 77       	mov    0x77787030,%eax
777814ca:	eb 14                	jmp    777814e0 <_DestroyCatalog+0x20>
777814cc:	8d 74 26 00          	lea    0x0(%esi),%esi
  while (CurrentEntry != &CatalogListHead) {
	NextEntry = CurrentEntry->Flink;
  Provider = CONTAINING_RECORD(CurrentEntry,
                               CATALOG_ENTRY,
                               ListEntry);
    DestroyCatalogEntry(Provider);
777814d0:	83 ec 0c             	sub    $0xc,%esp
777814d3:	8b 18                	mov    (%eax),%ebx
777814d5:	50                   	push   %eax
777814d6:	e8 45 fe ff ff       	call   77781320 <_DestroyCatalogEntry>
    CurrentEntry = NextEntry;
777814db:	89 d8                	mov    %ebx,%eax
777814dd:	83 c4 10             	add    $0x10,%esp
777814e0:	3d 30 70 78 77       	cmp    $0x77787030,%eax
777814e5:	75 e9                	jne    777814d0 <_DestroyCatalog+0x10>
777814e7:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777814ea:	c9                   	leave  
777814eb:	c3                   	ret    
777814ec:	90                   	nop    
777814ed:	90                   	nop    
777814ee:	90                   	nop    
777814ef:	90                   	nop    

777814f0 <_KeBugCheck@4>:
777814f0:	55                   	push   %ebp
777814f1:	89 e5                	mov    %esp,%ebp
777814f3:	5d                   	pop    %ebp
777814f4:	c2 04 00             	ret    $0x4
777814f7:	89 f6                	mov    %esi,%esi
777814f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781500 <_WSAGetLastError@0>:
77781500:	55                   	push   %ebp
77781501:	89 e5                	mov    %esp,%ebp
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77781503:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77781509:	8b 90 6c 0f 00 00    	mov    0xf6c(%eax),%edx
7778150f:	b8 0a 00 00 00       	mov    $0xa,%eax
77781514:	85 d2                	test   %edx,%edx
77781516:	74 02                	je     7778151a <_WSAGetLastError@0+0x1a>
77781518:	8b 02                	mov    (%edx),%eax
7778151a:	5d                   	pop    %ebp
7778151b:	c3                   	ret    
7778151c:	8d 74 26 00          	lea    0x0(%esi),%esi

77781520 <_WSASetLastError@4>:
77781520:	55                   	push   %ebp
77781521:	89 e5                	mov    %esp,%ebp
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77781523:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77781529:	8b 90 6c 0f 00 00    	mov    0xf6c(%eax),%edx
7778152f:	85 d2                	test   %edx,%edx
77781531:	74 05                	je     77781538 <_WSASetLastError@4+0x18>
77781533:	8b 45 08             	mov    0x8(%ebp),%eax
77781536:	89 02                	mov    %eax,(%edx)
77781538:	5d                   	pop    %ebp
77781539:	c2 04 00             	ret    $0x4
7778153c:	8d 74 26 00          	lea    0x0(%esi),%esi

77781540 <_WSAStartup@8>:
77781540:	55                   	push   %ebp
77781541:	89 e5                	mov    %esp,%ebp
77781543:	53                   	push   %ebx
77781544:	83 ec 0c             	sub    $0xc,%esp
77781547:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778154a:	8b 45 08             	mov    0x8(%ebp),%eax
7778154d:	66 89 03             	mov    %ax,(%ebx)
77781550:	66 c7 43 02 02 00    	movw   $0x2,0x2(%ebx)
77781556:	8d 43 04             	lea    0x4(%ebx),%eax
77781559:	68 20 60 78 77       	push   $0x77786020
7778155e:	50                   	push   %eax
7778155f:	e8 fc 2c 00 00       	call   77784260 <_lstrcpyA@8>
77781564:	8d 83 05 01 00 00    	lea    0x105(%ebx),%eax
7778156a:	68 2c 60 78 77       	push   $0x7778602c
7778156f:	50                   	push   %eax
77781570:	e8 eb 2c 00 00       	call   77784260 <_lstrcpyA@8>
77781575:	66 c7 83 86 01 00 00 	movw   $0x0,0x186(%ebx)
7778157c:	00 00 
7778157e:	66 c7 83 88 01 00 00 	movw   $0x0,0x188(%ebx)
77781585:	00 00 
77781587:	c7 83 8c 01 00 00 00 	movl   $0x0,0x18c(%ebx)
7778158e:	00 00 00 
77781591:	31 c0                	xor    %eax,%eax
77781593:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781596:	c7 05 00 70 78 77 01 	movl   $0x1,0x77787000
7778159d:	00 00 00 
777815a0:	c9                   	leave  
777815a1:	c2 08 00             	ret    $0x8
777815a4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777815aa:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

777815b0 <_WSACleanup@0>:
777815b0:	55                   	push   %ebp
777815b1:	31 c0                	xor    %eax,%eax
777815b3:	8b 15 00 70 78 77    	mov    0x77787000,%edx
777815b9:	89 e5                	mov    %esp,%ebp
777815bb:	85 d2                	test   %edx,%edx
777815bd:	74 02                	je     777815c1 <_WSACleanup@0+0x11>
777815bf:	c9                   	leave  
777815c0:	c3                   	ret    
777815c1:	68 6d 27 00 00       	push   $0x276d
777815c6:	e8 55 ff ff ff       	call   77781520 <_WSASetLastError@4>
777815cb:	b8 6d 27 00 00       	mov    $0x276d,%eax
777815d0:	c9                   	leave  
777815d1:	c3                   	ret    
777815d2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777815d9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777815e0 <_WSASocketW@24>:
777815e0:	55                   	push   %ebp
777815e1:	89 e5                	mov    %esp,%ebp
777815e3:	57                   	push   %edi
777815e4:	56                   	push   %esi
777815e5:	53                   	push   %ebx
777815e6:	81 ec 9c 02 00 00    	sub    $0x29c,%esp
777815ec:	a1 00 70 78 77       	mov    0x77787000,%eax
777815f1:	8b 7d 10             	mov    0x10(%ebp),%edi
777815f4:	8b 75 14             	mov    0x14(%ebp),%esi
777815f7:	85 c0                	test   %eax,%eax
777815f9:	0f 84 a4 00 00 00    	je     777816a3 <_WSASocketW@24+0xc3>
777815ff:	85 f6                	test   %esi,%esi
77781601:	74 61                	je     77781664 <_WSASocketW@24+0x84>
77781603:	83 ec 0c             	sub    $0xc,%esp
77781606:	56                   	push   %esi
77781607:	e8 44 fb ff ff       	call   77781150 <_LocateProvider>
7778160c:	83 c4 10             	add    $0x10,%esp
7778160f:	89 c3                	mov    %eax,%ebx
77781611:	85 c0                	test   %eax,%eax
77781613:	0f 84 94 00 00 00    	je     777816ad <_WSASocketW@24+0xcd>
77781619:	50                   	push   %eax
7778161a:	50                   	push   %eax
7778161b:	56                   	push   %esi
7778161c:	53                   	push   %ebx
7778161d:	e8 ee fb ff ff       	call   77781210 <_LoadProvider>
77781622:	83 c4 10             	add    $0x10,%esp
77781625:	85 c0                	test   %eax,%eax
77781627:	89 85 64 fd ff ff    	mov    %eax,0xfffffd64(%ebp)
7778162d:	75 69                	jne    77781698 <_WSASocketW@24+0xb8>
7778162f:	50                   	push   %eax
77781630:	8d 85 64 fd ff ff    	lea    0xfffffd64(%ebp),%eax
77781636:	50                   	push   %eax
77781637:	8b 45 1c             	mov    0x1c(%ebp),%eax
7778163a:	50                   	push   %eax
7778163b:	8b 45 18             	mov    0x18(%ebp),%eax
7778163e:	50                   	push   %eax
7778163f:	56                   	push   %esi
77781640:	8b 75 08             	mov    0x8(%ebp),%esi
77781643:	57                   	push   %edi
77781644:	8b 7d 0c             	mov    0xc(%ebp),%edi
77781647:	57                   	push   %edi
77781648:	56                   	push   %esi
77781649:	ff 93 20 05 00 00    	call   *0x520(%ebx)
7778164f:	8b 95 64 fd ff ff    	mov    0xfffffd64(%ebp),%edx
77781655:	59                   	pop    %ecx
77781656:	85 d2                	test   %edx,%edx
77781658:	75 50                	jne    777816aa <_WSASocketW@24+0xca>
7778165a:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778165d:	5b                   	pop    %ebx
7778165e:	5e                   	pop    %esi
7778165f:	5f                   	pop    %edi
77781660:	5d                   	pop    %ebp
77781661:	c2 18 00             	ret    $0x18
77781664:	8d b5 68 fd ff ff    	lea    0xfffffd68(%ebp),%esi
7778166a:	50                   	push   %eax
7778166b:	68 74 02 00 00       	push   $0x274
77781670:	6a 00                	push   $0x0
77781672:	56                   	push   %esi
77781673:	e8 38 2a 00 00       	call   777840b0 <_memset>
77781678:	8b 45 08             	mov    0x8(%ebp),%eax
7778167b:	89 85 b4 fd ff ff    	mov    %eax,0xfffffdb4(%ebp)
77781681:	83 c4 10             	add    $0x10,%esp
77781684:	8b 45 0c             	mov    0xc(%ebp),%eax
77781687:	89 bd c4 fd ff ff    	mov    %edi,0xfffffdc4(%ebp)
7778168d:	89 85 c0 fd ff ff    	mov    %eax,0xfffffdc0(%ebp)
77781693:	e9 6b ff ff ff       	jmp    77781603 <_WSASocketW@24+0x23>
77781698:	50                   	push   %eax
77781699:	e8 82 fe ff ff       	call   77781520 <_WSASetLastError@4>
7778169e:	83 c8 ff             	or     $0xffffffff,%eax
777816a1:	eb b7                	jmp    7778165a <_WSASocketW@24+0x7a>
777816a3:	68 6d 27 00 00       	push   $0x276d
777816a8:	eb ef                	jmp    77781699 <_WSASocketW@24+0xb9>
777816aa:	52                   	push   %edx
777816ab:	eb ec                	jmp    77781699 <_WSASocketW@24+0xb9>
777816ad:	68 3f 27 00 00       	push   $0x273f
777816b2:	eb e5                	jmp    77781699 <_WSASocketW@24+0xb9>
777816b4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777816ba:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

777816c0 <_WSASocketA@24>:
777816c0:	55                   	push   %ebp
777816c1:	31 c0                	xor    %eax,%eax
777816c3:	89 e5                	mov    %esp,%ebp
777816c5:	57                   	push   %edi
777816c6:	56                   	push   %esi
777816c7:	53                   	push   %ebx
777816c8:	81 ec 9c 02 00 00    	sub    $0x29c,%esp
777816ce:	8b 5d 14             	mov    0x14(%ebp),%ebx
777816d1:	85 db                	test   %ebx,%ebx
777816d3:	74 46                	je     7778171b <_WSASocketA@24+0x5b>
777816d5:	8d bd 68 fd ff ff    	lea    0xfffffd68(%ebp),%edi
777816db:	50                   	push   %eax
777816dc:	6a 74                	push   $0x74
777816de:	53                   	push   %ebx
777816df:	57                   	push   %edi
777816e0:	e8 0b 2a 00 00       	call   777840f0 <_memcpy>
777816e5:	5e                   	pop    %esi
777816e6:	8d b5 60 fd ff ff    	lea    0xfffffd60(%ebp),%esi
777816ec:	58                   	pop    %eax
777816ed:	8d 43 74             	lea    0x74(%ebx),%eax
777816f0:	8d 9d 58 fd ff ff    	lea    0xfffffd58(%ebp),%ebx
777816f6:	50                   	push   %eax
777816f7:	56                   	push   %esi
777816f8:	e8 c3 29 00 00       	call   777840c0 <_RtlInitAnsiString@8>
777816fd:	8d 85 dc fd ff ff    	lea    0xfffffddc(%ebp),%eax
77781703:	50                   	push   %eax
77781704:	53                   	push   %ebx
77781705:	e8 c6 29 00 00       	call   777840d0 <_RtlInitUnicodeString@8>
7778170a:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
77781711:	56                   	push   %esi
77781712:	53                   	push   %ebx
77781713:	e8 c8 29 00 00       	call   777840e0 <_RtlAnsiStringToUnicodeString@12>
77781718:	89 f8                	mov    %edi,%eax
7778171a:	59                   	pop    %ecx
7778171b:	8b 7d 1c             	mov    0x1c(%ebp),%edi
7778171e:	8b 75 18             	mov    0x18(%ebp),%esi
77781721:	8b 5d 10             	mov    0x10(%ebp),%ebx
77781724:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77781727:	52                   	push   %edx
77781728:	52                   	push   %edx
77781729:	8b 55 08             	mov    0x8(%ebp),%edx
7778172c:	57                   	push   %edi
7778172d:	56                   	push   %esi
7778172e:	50                   	push   %eax
7778172f:	53                   	push   %ebx
77781730:	51                   	push   %ecx
77781731:	52                   	push   %edx
77781732:	e8 a9 fe ff ff       	call   777815e0 <_WSASocketW@24>
77781737:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778173a:	5b                   	pop    %ebx
7778173b:	5e                   	pop    %esi
7778173c:	5f                   	pop    %edi
7778173d:	5d                   	pop    %ebp
7778173e:	c2 18 00             	ret    $0x18
77781741:	eb 0d                	jmp    77781750 <_socket@12>
77781743:	90                   	nop    
77781744:	90                   	nop    
77781745:	90                   	nop    
77781746:	90                   	nop    
77781747:	90                   	nop    
77781748:	90                   	nop    
77781749:	90                   	nop    
7778174a:	90                   	nop    
7778174b:	90                   	nop    
7778174c:	90                   	nop    
7778174d:	90                   	nop    
7778174e:	90                   	nop    
7778174f:	90                   	nop    

77781750 <_socket@12>:
77781750:	55                   	push   %ebp
77781751:	89 e5                	mov    %esp,%ebp
77781753:	83 ec 10             	sub    $0x10,%esp
77781756:	8b 45 10             	mov    0x10(%ebp),%eax
77781759:	6a 00                	push   $0x0
7778175b:	6a 00                	push   $0x0
7778175d:	6a 00                	push   $0x0
7778175f:	50                   	push   %eax
77781760:	8b 45 0c             	mov    0xc(%ebp),%eax
77781763:	50                   	push   %eax
77781764:	8b 45 08             	mov    0x8(%ebp),%eax
77781767:	50                   	push   %eax
77781768:	e8 53 ff ff ff       	call   777816c0 <_WSASocketA@24>
7778176d:	c9                   	leave  
7778176e:	c2 0c 00             	ret    $0xc
77781771:	eb 0d                	jmp    77781780 <_closesocket@4>
77781773:	90                   	nop    
77781774:	90                   	nop    
77781775:	90                   	nop    
77781776:	90                   	nop    
77781777:	90                   	nop    
77781778:	90                   	nop    
77781779:	90                   	nop    
7778177a:	90                   	nop    
7778177b:	90                   	nop    
7778177c:	90                   	nop    
7778177d:	90                   	nop    
7778177e:	90                   	nop    
7778177f:	90                   	nop    

77781780 <_closesocket@4>:
77781780:	55                   	push   %ebp
77781781:	89 e5                	mov    %esp,%ebp
77781783:	53                   	push   %ebx
77781784:	83 ec 14             	sub    $0x14,%esp
77781787:	a1 00 70 78 77       	mov    0x77787000,%eax
7778178c:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778178f:	85 c0                	test   %eax,%eax
77781791:	74 4f                	je     777817e2 <_closesocket@4+0x62>
77781793:	50                   	push   %eax
77781794:	50                   	push   %eax
77781795:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77781798:	50                   	push   %eax
77781799:	53                   	push   %ebx
7778179a:	e8 c1 0b 00 00       	call   77782360 <_ReferenceProviderByHandle>
7778179f:	83 c4 10             	add    $0x10,%esp
777817a2:	85 c0                	test   %eax,%eax
777817a4:	74 4b                	je     777817f1 <_closesocket@4+0x71>
777817a6:	83 ec 0c             	sub    $0xc,%esp
777817a9:	53                   	push   %ebx
777817aa:	e8 11 0c 00 00       	call   777823c0 <_CloseProviderHandle>
777817af:	8b 4d f8             	mov    0xfffffff8(%ebp),%ecx
777817b2:	58                   	pop    %eax
777817b3:	51                   	push   %ecx
777817b4:	e8 e7 fb ff ff       	call   777813a0 <_DereferenceProviderByPointer>
777817b9:	58                   	pop    %eax
777817ba:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777817bd:	5a                   	pop    %edx
777817be:	50                   	push   %eax
777817bf:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
777817c2:	53                   	push   %ebx
777817c3:	ff 90 c8 04 00 00    	call   *0x4c8(%eax)
777817c9:	5a                   	pop    %edx
777817ca:	40                   	inc    %eax
777817cb:	59                   	pop    %ecx
777817cc:	74 09                	je     777817d7 <_closesocket@4+0x57>
777817ce:	31 c0                	xor    %eax,%eax
777817d0:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777817d3:	c9                   	leave  
777817d4:	c2 04 00             	ret    $0x4
777817d7:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777817da:	50                   	push   %eax
777817db:	e8 40 fd ff ff       	call   77781520 <_WSASetLastError@4>
777817e0:	eb ec                	jmp    777817ce <_closesocket@4+0x4e>
777817e2:	68 6d 27 00 00       	push   $0x276d
777817e7:	e8 34 fd ff ff       	call   77781520 <_WSASetLastError@4>
777817ec:	83 c8 ff             	or     $0xffffffff,%eax
777817ef:	eb df                	jmp    777817d0 <_closesocket@4+0x50>
777817f1:	68 36 27 00 00       	push   $0x2736
777817f6:	eb ef                	jmp    777817e7 <_closesocket@4+0x67>
777817f8:	90                   	nop    
777817f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77781800 <_select@20>:
 *     readfds   = Pointer to socket set to be checked for readability (optional)
 *     writefds  = Pointer to socket set to be checked for writability (optional)
 *     exceptfds = Pointer to socket set to be checked for errors (optional)
 *     timeout   = Pointer to a TIMEVAL structure indicating maximum wait time
 *                 (NULL means wait forever)
 * RETURNS:
 *     Number of ready socket descriptors, or SOCKET_ERROR if an error ocurred
 */
{
77781800:	55                   	push   %ebp
77781801:	89 e5                	mov    %esp,%ebp
77781803:	57                   	push   %edi
77781804:	56                   	push   %esi
77781805:	53                   	push   %ebx
77781806:	83 ec 0c             	sub    $0xc,%esp
  PCATALOG_ENTRY Provider;
  INT Count;
  INT Errno;

  WS_DbgPrint(MAX_TRACE, ("readfds (0x%X)  writefds (0x%X)  exceptfds (0x%X).\n",
    readfds, writefds, exceptfds));

  if (!WSAINITIALIZED) {
77781809:	a1 00 70 78 77       	mov    0x77787000,%eax
7778180e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77781811:	8b 75 10             	mov    0x10(%ebp),%esi
77781814:	8b 7d 18             	mov    0x18(%ebp),%edi
77781817:	85 c0                	test   %eax,%eax
77781819:	0f 84 ef 00 00 00    	je     7778190e <_select@20+0x10e>
    WSASetLastError(WSANOTINITIALISED);
    WS_DbgPrint(MID_TRACE,("Not initialized\n"));
    return SOCKET_ERROR;
  }

  /* FIXME: Sockets in FD_SETs should be sorted by their provider */

  /* FIXME: For now, assume only one service provider */
  if ((readfds != NULL) && (readfds->fd_count > 0)) {
7778181f:	85 db                	test   %ebx,%ebx
77781821:	74 0a                	je     7778182d <_select@20+0x2d>
77781823:	8b 03                	mov    (%ebx),%eax
77781825:	85 c0                	test   %eax,%eax
77781827:	0f 85 9a 00 00 00    	jne    777818c7 <_select@20+0xc7>
    if (!ReferenceProviderByHandle((HANDLE)readfds->fd_array[0], &Provider)) {
      WSASetLastError(WSAENOTSOCK);
      WS_DbgPrint(MID_TRACE,("No provider (read)\n"));
      return SOCKET_ERROR;
    }
  } else if ((writefds != NULL) && (writefds->fd_count > 0)) {
7778182d:	85 f6                	test   %esi,%esi
7778182f:	74 0a                	je     7778183b <_select@20+0x3b>
77781831:	8b 0e                	mov    (%esi),%ecx
77781833:	85 c9                	test   %ecx,%ecx
77781835:	0f 85 b5 00 00 00    	jne    777818f0 <_select@20+0xf0>
    if (!ReferenceProviderByHandle((HANDLE)writefds->fd_array[0], &Provider)) {
      WSASetLastError(WSAENOTSOCK);
      WS_DbgPrint(MID_TRACE,("No provider (write)\n"));
      return SOCKET_ERROR;
    }
  } else if ((exceptfds != NULL) && (exceptfds->fd_count > 0)) {
7778183b:	8b 45 14             	mov    0x14(%ebp),%eax
7778183e:	85 c0                	test   %eax,%eax
77781840:	74 0e                	je     77781850 <_select@20+0x50>
77781842:	8b 45 14             	mov    0x14(%ebp),%eax
77781845:	8b 00                	mov    (%eax),%eax
77781847:	85 c0                	test   %eax,%eax
77781849:	0f 85 b1 00 00 00    	jne    77781900 <_select@20+0x100>
7778184f:	90                   	nop    
    if (!ReferenceProviderByHandle((HANDLE)exceptfds->fd_array[0], &Provider)) {
      WSASetLastError(WSAENOTSOCK);
      WS_DbgPrint(MID_TRACE,("No provider (err)\n"));
      return SOCKET_ERROR;
    }
#if 0 /* XXX empty select is not an error */
  } else {
    WSASetLastError(WSAEINVAL);
    return SOCKET_ERROR;
#endif
  }

  if( !Provider ) {
77781850:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77781853:	85 d2                	test   %edx,%edx
77781855:	75 3e                	jne    77781895 <_select@20+0x95>
      if( timeout ) {
77781857:	85 ff                	test   %edi,%edi
77781859:	74 2e                	je     77781889 <_select@20+0x89>
	  WS_DbgPrint(MID_TRACE,("Select: used as timer\n"));
	  Sleep( timeout->tv_sec * 1000 + (timeout->tv_usec / 1000) );
7778185b:	8b 07                	mov    (%edi),%eax
7778185d:	8b 4f 04             	mov    0x4(%edi),%ecx
77781860:	ba d3 4d 62 10       	mov    $0x10624dd3,%edx
77781865:	83 ec 0c             	sub    $0xc,%esp
77781868:	8d 04 80             	lea    (%eax,%eax,4),%eax
7778186b:	8d 04 80             	lea    (%eax,%eax,4),%eax
7778186e:	8d 1c 80             	lea    (%eax,%eax,4),%ebx
77781871:	89 c8                	mov    %ecx,%eax
77781873:	f7 ea                	imul   %edx
77781875:	c1 f9 1f             	sar    $0x1f,%ecx
77781878:	c1 fa 06             	sar    $0x6,%edx
7778187b:	29 ca                	sub    %ecx,%edx
7778187d:	8d 04 da             	lea    (%edx,%ebx,8),%eax
77781880:	50                   	push   %eax
77781881:	e8 ea 29 00 00       	call   77784270 <_Sleep@4>
77781886:	83 c4 0c             	add    $0xc,%esp
      }
      return 0;
77781889:	31 c0                	xor    %eax,%eax
  } else {
      WS_DbgPrint(MID_TRACE,("Calling WSPSelect\n"));
      Count = Provider->ProcTable.lpWSPSelect(
	  nfds, readfds, writefds, exceptfds, (LPTIMEVAL)timeout, &Errno);
      
      WS_DbgPrint(MAX_TRACE, ("[%x] Select: Count %d Errno %x\n", 
			      Provider, Count, Errno));
      
      DereferenceProviderByPointer(Provider);
      
      if (Errno != NO_ERROR) {
	  WSASetLastError(Errno);
	  return SOCKET_ERROR;
      }
  }

  return Count;
}
7778188b:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778188e:	5b                   	pop    %ebx
7778188f:	5e                   	pop    %esi
77781890:	5f                   	pop    %edi
77781891:	5d                   	pop    %ebp
77781892:	c2 14 00             	ret    $0x14
77781895:	50                   	push   %eax
77781896:	50                   	push   %eax
77781897:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
7778189a:	50                   	push   %eax
7778189b:	8b 4d 14             	mov    0x14(%ebp),%ecx
7778189e:	8b 45 08             	mov    0x8(%ebp),%eax
777818a1:	57                   	push   %edi
777818a2:	51                   	push   %ecx
777818a3:	56                   	push   %esi
777818a4:	53                   	push   %ebx
777818a5:	50                   	push   %eax
777818a6:	ff 92 08 05 00 00    	call   *0x508(%edx)
777818ac:	89 c3                	mov    %eax,%ebx
777818ae:	50                   	push   %eax
777818af:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777818b2:	50                   	push   %eax
777818b3:	e8 e8 fa ff ff       	call   777813a0 <_DereferenceProviderByPointer>
777818b8:	8b 55 ec             	mov    0xffffffec(%ebp),%edx
777818bb:	83 c4 10             	add    $0x10,%esp
777818be:	89 d8                	mov    %ebx,%eax
777818c0:	85 d2                	test   %edx,%edx
777818c2:	74 c7                	je     7778188b <_select@20+0x8b>
777818c4:	52                   	push   %edx
777818c5:	eb 1f                	jmp    777818e6 <_select@20+0xe6>
777818c7:	50                   	push   %eax
777818c8:	50                   	push   %eax
777818c9:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777818cc:	50                   	push   %eax
777818cd:	8b 43 04             	mov    0x4(%ebx),%eax
777818d0:	50                   	push   %eax
777818d1:	e8 8a 0a 00 00       	call   77782360 <_ReferenceProviderByHandle>
777818d6:	83 c4 10             	add    $0x10,%esp
777818d9:	85 c0                	test   %eax,%eax
777818db:	0f 85 6f ff ff ff    	jne    77781850 <_select@20+0x50>
777818e1:	68 36 27 00 00       	push   $0x2736
777818e6:	e8 35 fc ff ff       	call   77781520 <_WSASetLastError@4>
777818eb:	83 c8 ff             	or     $0xffffffff,%eax
777818ee:	eb 9b                	jmp    7778188b <_select@20+0x8b>
777818f0:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777818f3:	52                   	push   %edx
777818f4:	52                   	push   %edx
777818f5:	50                   	push   %eax
777818f6:	8b 46 04             	mov    0x4(%esi),%eax
777818f9:	eb d5                	jmp    777818d0 <_select@20+0xd0>
777818fb:	90                   	nop    
777818fc:	8d 74 26 00          	lea    0x0(%esi),%esi
77781900:	50                   	push   %eax
77781901:	50                   	push   %eax
77781902:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
77781905:	50                   	push   %eax
77781906:	8b 45 14             	mov    0x14(%ebp),%eax
77781909:	8b 40 04             	mov    0x4(%eax),%eax
7778190c:	eb c2                	jmp    777818d0 <_select@20+0xd0>
7778190e:	68 6d 27 00 00       	push   $0x276d
77781913:	eb d1                	jmp    777818e6 <_select@20+0xe6>
77781915:	8d 74 26 00          	lea    0x0(%esi),%esi
77781919:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781920 <_bind@12>:


/*
 * @implemented
 */
INT
EXPORT
bind(
  IN  SOCKET s,
  IN  CONST struct sockaddr *name,
  IN  INT namelen)
{
77781920:	55                   	push   %ebp
77781921:	89 e5                	mov    %esp,%ebp
77781923:	53                   	push   %ebx
77781924:	83 ec 14             	sub    $0x14,%esp
  PCATALOG_ENTRY Provider;
  INT Status;
  INT Errno;

  if (!WSAINITIALIZED) {
77781927:	a1 00 70 78 77       	mov    0x77787000,%eax
7778192c:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778192f:	85 c0                	test   %eax,%eax
77781931:	74 58                	je     7778198b <_bind@12+0x6b>
    WSASetLastError(WSANOTINITIALISED);
    return SOCKET_ERROR;
  }

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
77781933:	50                   	push   %eax
77781934:	50                   	push   %eax
77781935:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77781938:	50                   	push   %eax
77781939:	53                   	push   %ebx
7778193a:	e8 21 0a 00 00       	call   77782360 <_ReferenceProviderByHandle>
7778193f:	83 c4 10             	add    $0x10,%esp
77781942:	85 c0                	test   %eax,%eax
77781944:	74 54                	je     7778199a <_bind@12+0x7a>
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

#if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
  Status = Provider->ProcTable.lpWSPBind(
    s, (CONST LPSOCKADDR) name, namelen, &Errno);
#else
  Status = Provider->ProcTable.lpWSPBind(
77781946:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77781949:	8b 4d 10             	mov    0x10(%ebp),%ecx
7778194c:	50                   	push   %eax
7778194d:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781950:	8b 55 0c             	mov    0xc(%ebp),%edx
77781953:	51                   	push   %ecx
77781954:	52                   	push   %edx
77781955:	53                   	push   %ebx
77781956:	ff 90 bc 04 00 00    	call   *0x4bc(%eax)
    s, name, namelen, &Errno);
#endif /* __W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5 */

  DereferenceProviderByPointer(Provider);
7778195c:	83 ec 0c             	sub    $0xc,%esp
7778195f:	89 c3                	mov    %eax,%ebx
77781961:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781964:	50                   	push   %eax
77781965:	e8 36 fa ff ff       	call   777813a0 <_DereferenceProviderByPointer>

  if (Status == SOCKET_ERROR) {
7778196a:	83 c4 10             	add    $0x10,%esp
7778196d:	83 fb ff             	cmp    $0xffffffff,%ebx
77781970:	74 0e                	je     77781980 <_bind@12+0x60>
    WSASetLastError(Errno);
  }

  return Status;
77781972:	89 d8                	mov    %ebx,%eax
}
77781974:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781977:	c9                   	leave  
77781978:	c2 0c 00             	ret    $0xc
7778197b:	90                   	nop    
7778197c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781980:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77781983:	50                   	push   %eax
77781984:	e8 97 fb ff ff       	call   77781520 <_WSASetLastError@4>
77781989:	eb e7                	jmp    77781972 <_bind@12+0x52>
7778198b:	68 6d 27 00 00       	push   $0x276d
77781990:	e8 8b fb ff ff       	call   77781520 <_WSASetLastError@4>
77781995:	83 c8 ff             	or     $0xffffffff,%eax
77781998:	eb da                	jmp    77781974 <_bind@12+0x54>
7778199a:	68 36 27 00 00       	push   $0x2736
7778199f:	eb ef                	jmp    77781990 <_bind@12+0x70>
777819a1:	eb 0d                	jmp    777819b0 <_listen@8>
777819a3:	90                   	nop    
777819a4:	90                   	nop    
777819a5:	90                   	nop    
777819a6:	90                   	nop    
777819a7:	90                   	nop    
777819a8:	90                   	nop    
777819a9:	90                   	nop    
777819aa:	90                   	nop    
777819ab:	90                   	nop    
777819ac:	90                   	nop    
777819ad:	90                   	nop    
777819ae:	90                   	nop    
777819af:	90                   	nop    

777819b0 <_listen@8>:


/*
 * @implemented
 */
INT
EXPORT
listen(
    IN  SOCKET s,
    IN  INT backlog)
{
777819b0:	55                   	push   %ebp
777819b1:	89 e5                	mov    %esp,%ebp
777819b3:	53                   	push   %ebx
777819b4:	83 ec 14             	sub    $0x14,%esp
  PCATALOG_ENTRY Provider;
  INT Status;
  INT Errno;

  if (!WSAINITIALIZED) {
777819b7:	a1 00 70 78 77       	mov    0x77787000,%eax
777819bc:	8b 5d 08             	mov    0x8(%ebp),%ebx
777819bf:	85 c0                	test   %eax,%eax
777819c1:	74 4f                	je     77781a12 <_listen@8+0x62>
    WSASetLastError(WSANOTINITIALISED);
    return SOCKET_ERROR;
  }

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
777819c3:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777819c6:	51                   	push   %ecx
777819c7:	51                   	push   %ecx
777819c8:	50                   	push   %eax
777819c9:	53                   	push   %ebx
777819ca:	e8 91 09 00 00       	call   77782360 <_ReferenceProviderByHandle>
777819cf:	83 c4 10             	add    $0x10,%esp
777819d2:	85 c0                	test   %eax,%eax
777819d4:	74 4b                	je     77781a21 <_listen@8+0x71>
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

  Status = Provider->ProcTable.lpWSPListen(
777819d6:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777819d9:	52                   	push   %edx
777819da:	50                   	push   %eax
777819db:	8b 45 0c             	mov    0xc(%ebp),%eax
777819de:	50                   	push   %eax
777819df:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
777819e2:	53                   	push   %ebx
777819e3:	ff 90 f8 04 00 00    	call   *0x4f8(%eax)
777819e9:	89 c3                	mov    %eax,%ebx
    s, backlog, &Errno);

  DereferenceProviderByPointer(Provider);
777819eb:	50                   	push   %eax
777819ec:	50                   	push   %eax
777819ed:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
777819f0:	50                   	push   %eax
777819f1:	e8 aa f9 ff ff       	call   777813a0 <_DereferenceProviderByPointer>

  if (Status == SOCKET_ERROR) {
777819f6:	83 c4 10             	add    $0x10,%esp
777819f9:	83 fb ff             	cmp    $0xffffffff,%ebx
777819fc:	74 09                	je     77781a07 <_listen@8+0x57>
    WSASetLastError(Errno);
  }

  return Status;
777819fe:	89 d8                	mov    %ebx,%eax
}
77781a00:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781a03:	c9                   	leave  
77781a04:	c2 08 00             	ret    $0x8
77781a07:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77781a0a:	50                   	push   %eax
77781a0b:	e8 10 fb ff ff       	call   77781520 <_WSASetLastError@4>
77781a10:	eb ec                	jmp    777819fe <_listen@8+0x4e>
77781a12:	68 6d 27 00 00       	push   $0x276d
77781a17:	e8 04 fb ff ff       	call   77781520 <_WSASetLastError@4>
77781a1c:	83 c8 ff             	or     $0xffffffff,%eax
77781a1f:	eb df                	jmp    77781a00 <_listen@8+0x50>
77781a21:	68 36 27 00 00       	push   $0x2736
77781a26:	eb ef                	jmp    77781a17 <_listen@8+0x67>
77781a28:	90                   	nop    
77781a29:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77781a30 <_WSAAccept@20>:


/*
 * @implemented
 */
SOCKET
EXPORT
accept(
  IN  SOCKET s,
  OUT LPSOCKADDR addr,
  OUT INT FAR* addrlen)
{
  return WSAAccept(s, addr, addrlen, NULL, 0);
}


/*
 * @implemented
 */
INT
EXPORT
ioctlsocket(
    IN      SOCKET s,
    IN      LONG cmd,
    IN OUT  ULONG FAR* argp)
{
  return WSAIoctl(s, cmd, argp, sizeof(ULONG), argp, sizeof(ULONG), argp, 0, 0);
}


/*
 * @implemented
 */
SOCKET
EXPORT
WSAAccept(
  IN      SOCKET s,
  OUT     LPSOCKADDR addr,
  IN OUT  LPINT addrlen,
  IN      LPCONDITIONPROC lpfnCondition,
  IN      DWORD dwCallbackData)
{
77781a30:	55                   	push   %ebp
77781a31:	89 e5                	mov    %esp,%ebp
77781a33:	53                   	push   %ebx
77781a34:	83 ec 14             	sub    $0x14,%esp
  PCATALOG_ENTRY Provider;
  SOCKET Socket;
  INT Errno;

  if (!WSAINITIALIZED) {
77781a37:	a1 00 70 78 77       	mov    0x77787000,%eax
77781a3c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781a3f:	85 c0                	test   %eax,%eax
77781a41:	74 5b                	je     77781a9e <_WSAAccept@20+0x6e>
    WSASetLastError(WSANOTINITIALISED);
    return SOCKET_ERROR;
  }

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
77781a43:	50                   	push   %eax
77781a44:	50                   	push   %eax
77781a45:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77781a48:	50                   	push   %eax
77781a49:	53                   	push   %ebx
77781a4a:	e8 11 09 00 00       	call   77782360 <_ReferenceProviderByHandle>
77781a4f:	83 c4 10             	add    $0x10,%esp
77781a52:	85 c0                	test   %eax,%eax
77781a54:	74 57                	je     77781aad <_WSAAccept@20+0x7d>
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

  WS_DbgPrint(MAX_TRACE,("Calling provider accept\n"));

  Socket = Provider->ProcTable.lpWSPAccept(
77781a56:	50                   	push   %eax
77781a57:	50                   	push   %eax
77781a58:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77781a5b:	50                   	push   %eax
77781a5c:	8b 4d 18             	mov    0x18(%ebp),%ecx
77781a5f:	8b 55 14             	mov    0x14(%ebp),%edx
77781a62:	8b 45 10             	mov    0x10(%ebp),%eax
77781a65:	51                   	push   %ecx
77781a66:	52                   	push   %edx
77781a67:	50                   	push   %eax
77781a68:	8b 45 0c             	mov    0xc(%ebp),%eax
77781a6b:	50                   	push   %eax
77781a6c:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781a6f:	53                   	push   %ebx
77781a70:	ff 90 b0 04 00 00    	call   *0x4b0(%eax)
77781a76:	89 c3                	mov    %eax,%ebx
    s, addr, addrlen, lpfnCondition, dwCallbackData, &Errno);

  WS_DbgPrint(MAX_TRACE,("Calling provider accept -> Socket %x, Errno %x\n",
			 Socket, Errno));

  DereferenceProviderByPointer(Provider);
77781a78:	50                   	push   %eax
77781a79:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781a7c:	50                   	push   %eax
77781a7d:	e8 1e f9 ff ff       	call   777813a0 <_DereferenceProviderByPointer>

  if (Socket == INVALID_SOCKET) {
77781a82:	83 c4 10             	add    $0x10,%esp
77781a85:	83 fb ff             	cmp    $0xffffffff,%ebx
77781a88:	74 09                	je     77781a93 <_WSAAccept@20+0x63>
    WSASetLastError(Errno);
  }

  if( addr ) {
#ifdef DBG
      LPSOCKADDR_IN sa = (LPSOCKADDR_IN)addr;
      WS_DbgPrint(MAX_TRACE,("Returned address: %d %s:%d (len %d)\n", 
                             sa->sin_family,
                             inet_ntoa(sa->sin_addr), 
                             ntohs(sa->sin_port),
                             *addrlen));
#endif
  }

  return Socket;
77781a8a:	89 d8                	mov    %ebx,%eax
}
77781a8c:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781a8f:	c9                   	leave  
77781a90:	c2 14 00             	ret    $0x14
77781a93:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77781a96:	50                   	push   %eax
77781a97:	e8 84 fa ff ff       	call   77781520 <_WSASetLastError@4>
77781a9c:	eb ec                	jmp    77781a8a <_WSAAccept@20+0x5a>
77781a9e:	68 6d 27 00 00       	push   $0x276d
77781aa3:	e8 78 fa ff ff       	call   77781520 <_WSASetLastError@4>
77781aa8:	83 c8 ff             	or     $0xffffffff,%eax
77781aab:	eb df                	jmp    77781a8c <_WSAAccept@20+0x5c>
77781aad:	68 36 27 00 00       	push   $0x2736
77781ab2:	eb ef                	jmp    77781aa3 <_WSAAccept@20+0x73>
77781ab4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781aba:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77781ac0 <_accept@12>:
77781ac0:	55                   	push   %ebp
77781ac1:	89 e5                	mov    %esp,%ebp
77781ac3:	83 ec 14             	sub    $0x14,%esp
77781ac6:	8b 45 10             	mov    0x10(%ebp),%eax
77781ac9:	6a 00                	push   $0x0
77781acb:	6a 00                	push   $0x0
77781acd:	50                   	push   %eax
77781ace:	8b 45 0c             	mov    0xc(%ebp),%eax
77781ad1:	50                   	push   %eax
77781ad2:	8b 45 08             	mov    0x8(%ebp),%eax
77781ad5:	50                   	push   %eax
77781ad6:	e8 55 ff ff ff       	call   77781a30 <_WSAAccept@20>
77781adb:	c9                   	leave  
77781adc:	c2 0c 00             	ret    $0xc
77781adf:	90                   	nop    

77781ae0 <_WSAIoctl@36>:


/*
 * @implemented
 */
INT
EXPORT
connect(
  IN  SOCKET s,
  IN  CONST struct sockaddr *name,
  IN  INT namelen)
{
  return WSAConnect(s, name, namelen, NULL, NULL, NULL, NULL);
}


/*
 * @implemented
 */
INT
EXPORT
WSAConnect(
  IN  SOCKET s,
  IN  CONST struct sockaddr *name,
  IN  INT namelen,
  IN  LPWSABUF lpCallerData,
  OUT LPWSABUF lpCalleeData,
  IN  LPQOS lpSQOS,
  IN  LPQOS lpGQOS)
{
  PCATALOG_ENTRY Provider;
  INT Status;
  INT Errno;

  if (!WSAINITIALIZED) {
    WSASetLastError(WSANOTINITIALISED);
    return SOCKET_ERROR;
  }

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

#if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
  Status = Provider->ProcTable.lpWSPConnect(
    s, (CONST LPSOCKADDR) name, namelen, lpCallerData, lpCalleeData, lpSQOS, lpGQOS, &Errno);
#else
  Status = Provider->ProcTable.lpWSPConnect(
    s, name, namelen, lpCallerData, lpCalleeData, lpSQOS, lpGQOS, &Errno);
#endif

  DereferenceProviderByPointer(Provider);

  if (Status == SOCKET_ERROR) {
    WSASetLastError(Errno);
  }

  return Status;
}


/*
 * @implemented
 */
INT
EXPORT
WSAIoctl(
    IN  SOCKET s,
    IN  DWORD dwIoControlCode,
    IN  LPVOID lpvInBuffer,
    IN  DWORD cbInBuffer,
    OUT LPVOID lpvOutBuffer,
    IN  DWORD cbOutBuffer,
    OUT LPDWORD lpcbBytesReturned,
    IN  LPWSAOVERLAPPED lpOverlapped,
    IN  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
77781ae0:	55                   	push   %ebp
77781ae1:	89 e5                	mov    %esp,%ebp
77781ae3:	53                   	push   %ebx
77781ae4:	83 ec 14             	sub    $0x14,%esp
  PCATALOG_ENTRY Provider;
  INT Status;
  INT Errno;

  if (!WSAINITIALIZED) {
77781ae7:	a1 00 70 78 77       	mov    0x77787000,%eax
77781aec:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781aef:	85 c0                	test   %eax,%eax
77781af1:	74 6d                	je     77781b60 <_WSAIoctl@36+0x80>
    WSASetLastError(WSANOTINITIALISED);
    return SOCKET_ERROR;
  }

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
77781af3:	50                   	push   %eax
77781af4:	50                   	push   %eax
77781af5:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77781af8:	50                   	push   %eax
77781af9:	53                   	push   %ebx
77781afa:	e8 61 08 00 00       	call   77782360 <_ReferenceProviderByHandle>
77781aff:	83 c4 10             	add    $0x10,%esp
77781b02:	85 c0                	test   %eax,%eax
77781b04:	74 69                	je     77781b6f <_WSAIoctl@36+0x8f>
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

  Status = Provider->ProcTable.lpWSPIoctl(
77781b06:	50                   	push   %eax
77781b07:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77781b0a:	8b 4d 24             	mov    0x24(%ebp),%ecx
77781b0d:	50                   	push   %eax
77781b0e:	8b 45 28             	mov    0x28(%ebp),%eax
77781b11:	6a 00                	push   $0x0
77781b13:	8b 55 20             	mov    0x20(%ebp),%edx
77781b16:	50                   	push   %eax
77781b17:	8b 45 1c             	mov    0x1c(%ebp),%eax
77781b1a:	51                   	push   %ecx
77781b1b:	52                   	push   %edx
77781b1c:	50                   	push   %eax
77781b1d:	8b 45 18             	mov    0x18(%ebp),%eax
77781b20:	50                   	push   %eax
77781b21:	8b 45 14             	mov    0x14(%ebp),%eax
77781b24:	50                   	push   %eax
77781b25:	8b 45 10             	mov    0x10(%ebp),%eax
77781b28:	50                   	push   %eax
77781b29:	8b 45 0c             	mov    0xc(%ebp),%eax
77781b2c:	50                   	push   %eax
77781b2d:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781b30:	53                   	push   %ebx
77781b31:	ff 90 f0 04 00 00    	call   *0x4f0(%eax)
    s, dwIoControlCode, lpvInBuffer, cbInBuffer, lpvOutBuffer,
    cbOutBuffer, lpcbBytesReturned, lpOverlapped, lpCompletionRoutine,
    NULL /* lpThreadId */, &Errno);

  DereferenceProviderByPointer(Provider);
77781b37:	8b 4d f8             	mov    0xfffffff8(%ebp),%ecx
77781b3a:	89 c3                	mov    %eax,%ebx
77781b3c:	50                   	push   %eax
77781b3d:	50                   	push   %eax
77781b3e:	51                   	push   %ecx
77781b3f:	e8 5c f8 ff ff       	call   777813a0 <_DereferenceProviderByPointer>

  if (Status == SOCKET_ERROR) {
77781b44:	83 c4 10             	add    $0x10,%esp
77781b47:	83 fb ff             	cmp    $0xffffffff,%ebx
77781b4a:	74 09                	je     77781b55 <_WSAIoctl@36+0x75>
    WSASetLastError(Errno);
  }

  return Status;
77781b4c:	89 d8                	mov    %ebx,%eax
}
77781b4e:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781b51:	c9                   	leave  
77781b52:	c2 24 00             	ret    $0x24
77781b55:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
77781b58:	52                   	push   %edx
77781b59:	e8 c2 f9 ff ff       	call   77781520 <_WSASetLastError@4>
77781b5e:	eb ec                	jmp    77781b4c <_WSAIoctl@36+0x6c>
77781b60:	68 6d 27 00 00       	push   $0x276d
77781b65:	e8 b6 f9 ff ff       	call   77781520 <_WSASetLastError@4>
77781b6a:	83 c8 ff             	or     $0xffffffff,%eax
77781b6d:	eb df                	jmp    77781b4e <_WSAIoctl@36+0x6e>
77781b6f:	68 36 27 00 00       	push   $0x2736
77781b74:	eb ef                	jmp    77781b65 <_WSAIoctl@36+0x85>
77781b76:	8d 76 00             	lea    0x0(%esi),%esi
77781b79:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781b80 <_ioctlsocket@12>:
77781b80:	55                   	push   %ebp
77781b81:	89 e5                	mov    %esp,%ebp
77781b83:	83 ec 14             	sub    $0x14,%esp
77781b86:	8b 45 10             	mov    0x10(%ebp),%eax
77781b89:	6a 00                	push   $0x0
77781b8b:	6a 00                	push   $0x0
77781b8d:	50                   	push   %eax
77781b8e:	6a 04                	push   $0x4
77781b90:	50                   	push   %eax
77781b91:	6a 04                	push   $0x4
77781b93:	50                   	push   %eax
77781b94:	8b 45 0c             	mov    0xc(%ebp),%eax
77781b97:	50                   	push   %eax
77781b98:	8b 45 08             	mov    0x8(%ebp),%eax
77781b9b:	50                   	push   %eax
77781b9c:	e8 3f ff ff ff       	call   77781ae0 <_WSAIoctl@36>
77781ba1:	c9                   	leave  
77781ba2:	c2 0c 00             	ret    $0xc
77781ba5:	8d 74 26 00          	lea    0x0(%esi),%esi
77781ba9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781bb0 <_WSAConnect@28>:
77781bb0:	55                   	push   %ebp
77781bb1:	89 e5                	mov    %esp,%ebp
77781bb3:	53                   	push   %ebx
77781bb4:	83 ec 14             	sub    $0x14,%esp
77781bb7:	8b 0d 00 70 78 77    	mov    0x77787000,%ecx
77781bbd:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781bc0:	85 c9                	test   %ecx,%ecx
77781bc2:	74 67                	je     77781c2b <_WSAConnect@28+0x7b>
77781bc4:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77781bc7:	52                   	push   %edx
77781bc8:	52                   	push   %edx
77781bc9:	50                   	push   %eax
77781bca:	53                   	push   %ebx
77781bcb:	e8 90 07 00 00       	call   77782360 <_ReferenceProviderByHandle>
77781bd0:	83 c4 10             	add    $0x10,%esp
77781bd3:	85 c0                	test   %eax,%eax
77781bd5:	74 63                	je     77781c3a <_WSAConnect@28+0x8a>
77781bd7:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77781bda:	50                   	push   %eax
77781bdb:	8b 45 20             	mov    0x20(%ebp),%eax
77781bde:	50                   	push   %eax
77781bdf:	8b 45 1c             	mov    0x1c(%ebp),%eax
77781be2:	50                   	push   %eax
77781be3:	8b 45 18             	mov    0x18(%ebp),%eax
77781be6:	50                   	push   %eax
77781be7:	8b 45 14             	mov    0x14(%ebp),%eax
77781bea:	50                   	push   %eax
77781beb:	8b 45 10             	mov    0x10(%ebp),%eax
77781bee:	50                   	push   %eax
77781bef:	8b 45 0c             	mov    0xc(%ebp),%eax
77781bf2:	50                   	push   %eax
77781bf3:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77781bf6:	53                   	push   %ebx
77781bf7:	ff 90 cc 04 00 00    	call   *0x4cc(%eax)
77781bfd:	8b 4d f8             	mov    0xfffffff8(%ebp),%ecx
77781c00:	83 ec 0c             	sub    $0xc,%esp
77781c03:	89 c3                	mov    %eax,%ebx
77781c05:	51                   	push   %ecx
77781c06:	e8 95 f7 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77781c0b:	83 c4 10             	add    $0x10,%esp
77781c0e:	83 fb ff             	cmp    $0xffffffff,%ebx
77781c11:	74 0d                	je     77781c20 <_WSAConnect@28+0x70>
77781c13:	89 d8                	mov    %ebx,%eax
77781c15:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781c18:	c9                   	leave  
77781c19:	c2 1c 00             	ret    $0x1c
77781c1c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781c20:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
77781c23:	52                   	push   %edx
77781c24:	e8 f7 f8 ff ff       	call   77781520 <_WSASetLastError@4>
77781c29:	eb e8                	jmp    77781c13 <_WSAConnect@28+0x63>
77781c2b:	68 6d 27 00 00       	push   $0x276d
77781c30:	e8 eb f8 ff ff       	call   77781520 <_WSASetLastError@4>
77781c35:	83 c8 ff             	or     $0xffffffff,%eax
77781c38:	eb db                	jmp    77781c15 <_WSAConnect@28+0x65>
77781c3a:	68 36 27 00 00       	push   $0x2736
77781c3f:	eb ef                	jmp    77781c30 <_WSAConnect@28+0x80>
77781c41:	eb 0d                	jmp    77781c50 <_connect@12>
77781c43:	90                   	nop    
77781c44:	90                   	nop    
77781c45:	90                   	nop    
77781c46:	90                   	nop    
77781c47:	90                   	nop    
77781c48:	90                   	nop    
77781c49:	90                   	nop    
77781c4a:	90                   	nop    
77781c4b:	90                   	nop    
77781c4c:	90                   	nop    
77781c4d:	90                   	nop    
77781c4e:	90                   	nop    
77781c4f:	90                   	nop    

77781c50 <_connect@12>:
77781c50:	55                   	push   %ebp
77781c51:	89 e5                	mov    %esp,%ebp
77781c53:	83 ec 0c             	sub    $0xc,%esp
77781c56:	8b 45 10             	mov    0x10(%ebp),%eax
77781c59:	6a 00                	push   $0x0
77781c5b:	6a 00                	push   $0x0
77781c5d:	6a 00                	push   $0x0
77781c5f:	6a 00                	push   $0x0
77781c61:	50                   	push   %eax
77781c62:	8b 45 0c             	mov    0xc(%ebp),%eax
77781c65:	50                   	push   %eax
77781c66:	8b 45 08             	mov    0x8(%ebp),%eax
77781c69:	50                   	push   %eax
77781c6a:	e8 41 ff ff ff       	call   77781bb0 <_WSAConnect@28>
77781c6f:	c9                   	leave  
77781c70:	c2 0c 00             	ret    $0xc
77781c73:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781c79:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781c80 <___WSAFDIsSet@8>:

/*
 * @implemented
 */
INT
EXPORT
__WSAFDIsSet(SOCKET s, LPFD_SET set)
{
77781c80:	55                   	push   %ebp
    int i;

    for( i = 0; i < set->fd_count; i++ )
77781c81:	31 c0                	xor    %eax,%eax
77781c83:	89 e5                	mov    %esp,%ebp
77781c85:	53                   	push   %ebx
77781c86:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77781c89:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781c8c:	8b 11                	mov    (%ecx),%edx
77781c8e:	39 d0                	cmp    %edx,%eax
77781c90:	73 0b                	jae    77781c9d <___WSAFDIsSet@8+0x1d>
	if( set->fd_array[i] == s ) return TRUE;
77781c92:	39 5c 81 04          	cmp    %ebx,0x4(%ecx,%eax,4)
77781c96:	74 0c                	je     77781ca4 <___WSAFDIsSet@8+0x24>
77781c98:	40                   	inc    %eax
77781c99:	39 d0                	cmp    %edx,%eax
77781c9b:	72 f5                	jb     77781c92 <___WSAFDIsSet@8+0x12>

    return FALSE;
77781c9d:	31 c0                	xor    %eax,%eax
}
77781c9f:	5b                   	pop    %ebx
77781ca0:	5d                   	pop    %ebp
77781ca1:	c2 08 00             	ret    $0x8
77781ca4:	b8 01 00 00 00       	mov    $0x1,%eax
77781ca9:	5b                   	pop    %ebx
77781caa:	5d                   	pop    %ebp
77781cab:	c2 08 00             	ret    $0x8
77781cae:	89 f6                	mov    %esi,%esi

77781cb0 <_free_winsock_thread_block>:

void free_winsock_thread_block(PWINSOCK_THREAD_BLOCK p) {
77781cb0:	55                   	push   %ebp
77781cb1:	89 e5                	mov    %esp,%ebp
77781cb3:	53                   	push   %ebx
77781cb4:	50                   	push   %eax
77781cb5:	8b 5d 08             	mov    0x8(%ebp),%ebx
  if(p) {
77781cb8:	85 db                	test   %ebx,%ebx
77781cba:	74 07                	je     77781cc3 <_free_winsock_thread_block+0x13>
    if(p->Hostent) { free_hostent(p->Hostent); p->Hostent = 0; }
77781cbc:	8b 43 1c             	mov    0x1c(%ebx),%eax
77781cbf:	85 c0                	test   %eax,%eax
77781cc1:	75 05                	jne    77781cc8 <_free_winsock_thread_block+0x18>
    if(p->Getservbyname){}
    if(p->Getservbyport) {}


  }
}
77781cc3:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781cc6:	c9                   	leave  
77781cc7:	c3                   	ret    
77781cc8:	83 ec 0c             	sub    $0xc,%esp
77781ccb:	50                   	push   %eax
77781ccc:	e8 ff 09 00 00       	call   777826d0 <_free_hostent>
77781cd1:	c7 43 1c 00 00 00 00 	movl   $0x0,0x1c(%ebx)
77781cd8:	83 c4 10             	add    $0x10,%esp
77781cdb:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781cde:	c9                   	leave  
77781cdf:	c3                   	ret    

77781ce0 <_DllMain@12>:

BOOL
STDCALL
DllMain(HANDLE hInstDll,
        ULONG dwReason,
        LPVOID lpReserved)
{
77781ce0:	55                   	push   %ebp
77781ce1:	89 e5                	mov    %esp,%ebp
77781ce3:	52                   	push   %edx
77781ce4:	52                   	push   %edx
77781ce5:	8b 45 0c             	mov    0xc(%ebp),%eax
  PWINSOCK_THREAD_BLOCK p;

  WS_DbgPrint(MAX_TRACE, ("DllMain of ws2_32.dll.\n"));

  switch (dwReason) {
77781ce8:	83 f8 01             	cmp    $0x1,%eax
77781ceb:	74 6a                	je     77781d57 <_DllMain@12+0x77>
77781ced:	73 33                	jae    77781d22 <_DllMain@12+0x42>
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77781cef:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77781cf5:	8b 90 6c 0f 00 00    	mov    0xf6c(%eax),%edx
  case DLL_PROCESS_ATTACH:
    GlobalHeap = GetProcessHeap();

    CreateCatalog();

    InitProviderHandleTable();

    UpcallTable.lpWPUCloseEvent         = WPUCloseEvent;
    UpcallTable.lpWPUCloseSocketHandle  = WPUCloseSocketHandle;
    UpcallTable.lpWPUCreateEvent        = WPUCreateEvent;
    UpcallTable.lpWPUCreateSocketHandle = WPUCreateSocketHandle;
    UpcallTable.lpWPUFDIsSet            = WPUFDIsSet;
    UpcallTable.lpWPUGetProviderPath    = WPUGetProviderPath;
    UpcallTable.lpWPUModifyIFSHandle    = WPUModifyIFSHandle;
    UpcallTable.lpWPUPostMessage        = PostMessageW;
    UpcallTable.lpWPUQueryBlockingCallback    = WPUQueryBlockingCallback;
    UpcallTable.lpWPUQuerySocketHandleContext = WPUQuerySocketHandleContext;
    UpcallTable.lpWPUQueueApc           = WPUQueueApc;
    UpcallTable.lpWPUResetEvent         = WPUResetEvent;
    UpcallTable.lpWPUSetEvent           = WPUSetEvent;
    UpcallTable.lpWPUOpenCurrentThread  = WPUOpenCurrentThread;
    UpcallTable.lpWPUCloseThread        = WPUCloseThread;

    /* Fall through to thread attachment handler */

  case DLL_THREAD_ATTACH:
    p = HeapAlloc(GlobalHeap, 0, sizeof(WINSOCK_THREAD_BLOCK));

    WS_DbgPrint(MAX_TRACE, ("Thread block at 0x%X.\n", p));
        
    if (!p) {
      return FALSE;
    }

    p->Hostent = NULL;
    p->LastErrorValue = NO_ERROR;
    p->Getservbyname  = NULL;
    p->Getservbyport  = NULL;

    NtCurrentTeb()->WinSockData = p;
    break;

  case DLL_PROCESS_DETACH:
    p = NtCurrentTeb()->WinSockData;

    if (p)
77781cfb:	85 d2                	test   %edx,%edx
77781cfd:	74 10                	je     77781d0f <_DllMain@12+0x2f>
      HeapFree(GlobalHeap, 0, p);
77781cff:	50                   	push   %eax
77781d00:	a1 60 70 78 77       	mov    0x77787060,%eax
77781d05:	52                   	push   %edx
77781d06:	6a 00                	push   $0x0
77781d08:	50                   	push   %eax
77781d09:	e8 42 25 00 00       	call   77784250 <_HeapFree@12>
77781d0e:	58                   	pop    %eax

    DestroyCatalog();
77781d0f:	e8 ac f7 ff ff       	call   777814c0 <_DestroyCatalog>

    FreeProviderHandleTable();
77781d14:	e8 57 07 00 00       	call   77782470 <_FreeProviderHandleTable>
    break;

  case DLL_THREAD_DETACH:
    p = NtCurrentTeb()->WinSockData;

    if (p)
      HeapFree(GlobalHeap, 0, p);
    break;
  }

  WS_DbgPrint(MAX_TRACE, ("DllMain of ws2_32.dll. Leaving.\n"));

  return TRUE;
77781d19:	b8 01 00 00 00       	mov    $0x1,%eax
}
77781d1e:	c9                   	leave  
77781d1f:	c2 0c 00             	ret    $0xc
77781d22:	83 f8 02             	cmp    $0x2,%eax
77781d25:	0f 84 d6 00 00 00    	je     77781e01 <_DllMain@12+0x121>
77781d2b:	83 f8 03             	cmp    $0x3,%eax
77781d2e:	75 e9                	jne    77781d19 <_DllMain@12+0x39>
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77781d30:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77781d36:	8b 90 6c 0f 00 00    	mov    0xf6c(%eax),%edx
77781d3c:	85 d2                	test   %edx,%edx
77781d3e:	74 d9                	je     77781d19 <_DllMain@12+0x39>
77781d40:	a1 60 70 78 77       	mov    0x77787060,%eax
77781d45:	51                   	push   %ecx
77781d46:	52                   	push   %edx
77781d47:	6a 00                	push   $0x0
77781d49:	50                   	push   %eax
77781d4a:	e8 01 25 00 00       	call   77784250 <_HeapFree@12>
77781d4f:	58                   	pop    %eax
77781d50:	b8 01 00 00 00       	mov    $0x1,%eax
77781d55:	eb c7                	jmp    77781d1e <_DllMain@12+0x3e>
77781d57:	e8 24 25 00 00       	call   77784280 <_GetProcessHeap@0>
77781d5c:	a3 60 70 78 77       	mov    %eax,0x77787060
77781d61:	e8 5a f6 ff ff       	call   777813c0 <_CreateCatalog>
77781d66:	e8 a5 06 00 00       	call   77782410 <_InitProviderHandleTable>
77781d6b:	c7 05 70 70 78 77 70 	movl   $0x77783f70,0x77787070
77781d72:	3f 78 77 
77781d75:	c7 05 74 70 78 77 80 	movl   $0x77783f80,0x77787074
77781d7c:	3f 78 77 
77781d7f:	c7 05 78 70 78 77 a0 	movl   $0x77783fa0,0x77787078
77781d86:	3f 78 77 
77781d89:	c7 05 7c 70 78 77 b0 	movl   $0x77783fb0,0x7778707c
77781d90:	3f 78 77 
77781d93:	c7 05 80 70 78 77 c0 	movl   $0x77783fc0,0x77787080
77781d9a:	3f 78 77 
77781d9d:	c7 05 84 70 78 77 d0 	movl   $0x77783fd0,0x77787084
77781da4:	3f 78 77 
77781da7:	c7 05 88 70 78 77 e0 	movl   $0x77783fe0,0x77787088
77781dae:	3f 78 77 
77781db1:	c7 05 8c 70 78 77 50 	movl   $0x77784350,0x7778708c
77781db8:	43 78 77 
77781dbb:	c7 05 90 70 78 77 40 	movl   $0x77784040,0x77787090
77781dc2:	40 78 77 
77781dc5:	c7 05 94 70 78 77 50 	movl   $0x77784050,0x77787094
77781dcc:	40 78 77 
77781dcf:	c7 05 98 70 78 77 60 	movl   $0x77784060,0x77787098
77781dd6:	40 78 77 
77781dd9:	c7 05 9c 70 78 77 70 	movl   $0x77784070,0x7778709c
77781de0:	40 78 77 
77781de3:	c7 05 a0 70 78 77 80 	movl   $0x77784080,0x777870a0
77781dea:	40 78 77 
77781ded:	c7 05 a4 70 78 77 30 	movl   $0x77784030,0x777870a4
77781df4:	40 78 77 
77781df7:	c7 05 a8 70 78 77 90 	movl   $0x77783f90,0x777870a8
77781dfe:	3f 78 77 
77781e01:	50                   	push   %eax
77781e02:	a1 60 70 78 77       	mov    0x77787060,%eax
77781e07:	6a 20                	push   $0x20
77781e09:	6a 00                	push   $0x0
77781e0b:	50                   	push   %eax
77781e0c:	e8 df 23 00 00       	call   777841f0 <_HeapAlloc@12>
77781e11:	89 c2                	mov    %eax,%edx
77781e13:	58                   	pop    %eax
77781e14:	31 c0                	xor    %eax,%eax
77781e16:	85 d2                	test   %edx,%edx
77781e18:	0f 84 00 ff ff ff    	je     77781d1e <_DllMain@12+0x3e>
77781e1e:	c7 42 1c 00 00 00 00 	movl   $0x0,0x1c(%edx)
77781e25:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
77781e2b:	c7 42 14 00 00 00 00 	movl   $0x0,0x14(%edx)
77781e32:	c7 42 18 00 00 00 00 	movl   $0x0,0x18(%edx)
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77781e39:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77781e3f:	89 90 6c 0f 00 00    	mov    %edx,0xf6c(%eax)
77781e45:	b8 01 00 00 00       	mov    $0x1,%eax
77781e4a:	e9 cf fe ff ff       	jmp    77781d1e <_DllMain@12+0x3e>
77781e4f:	90                   	nop    

77781e50 <_WSACloseEvent@4>:
77781e50:	55                   	push   %ebp
77781e51:	89 e5                	mov    %esp,%ebp
77781e53:	53                   	push   %ebx
77781e54:	51                   	push   %ecx
77781e55:	8b 15 00 70 78 77    	mov    0x77787000,%edx
77781e5b:	85 d2                	test   %edx,%edx
77781e5d:	75 16                	jne    77781e75 <_WSACloseEvent@4+0x25>
77781e5f:	83 ec 0c             	sub    $0xc,%esp
77781e62:	68 6d 27 00 00       	push   $0x276d
77781e67:	e8 b4 f6 ff ff       	call   77781520 <_WSASetLastError@4>
77781e6c:	31 c0                	xor    %eax,%eax
77781e6e:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781e71:	c9                   	leave  
77781e72:	c2 04 00             	ret    $0x4
77781e75:	83 ec 0c             	sub    $0xc,%esp
77781e78:	8b 45 08             	mov    0x8(%ebp),%eax
77781e7b:	50                   	push   %eax
77781e7c:	e8 0f 24 00 00       	call   77784290 <_CloseHandle@4>
77781e81:	83 c4 0c             	add    $0xc,%esp
77781e84:	89 c3                	mov    %eax,%ebx
77781e86:	85 c0                	test   %eax,%eax
77781e88:	74 09                	je     77781e93 <_WSACloseEvent@4+0x43>
77781e8a:	89 d8                	mov    %ebx,%eax
77781e8c:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781e8f:	c9                   	leave  
77781e90:	c2 04 00             	ret    $0x4
77781e93:	83 ec 0c             	sub    $0xc,%esp
77781e96:	6a 06                	push   $0x6
77781e98:	e8 83 f6 ff ff       	call   77781520 <_WSASetLastError@4>
77781e9d:	89 d8                	mov    %ebx,%eax
77781e9f:	83 c4 0c             	add    $0xc,%esp
77781ea2:	eb e8                	jmp    77781e8c <_WSACloseEvent@4+0x3c>
77781ea4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781eaa:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77781eb0 <_WSACreateEvent@0>:
77781eb0:	55                   	push   %ebp
77781eb1:	89 e5                	mov    %esp,%ebp
77781eb3:	53                   	push   %ebx
77781eb4:	50                   	push   %eax
77781eb5:	8b 1d 00 70 78 77    	mov    0x77787000,%ebx
77781ebb:	85 db                	test   %ebx,%ebx
77781ebd:	74 2c                	je     77781eeb <_WSACreateEvent@0+0x3b>
77781ebf:	6a 00                	push   $0x0
77781ec1:	6a 00                	push   $0x0
77781ec3:	6a 01                	push   $0x1
77781ec5:	6a 00                	push   $0x0
77781ec7:	e8 d4 23 00 00       	call   777842a0 <_CreateEventW@16>
77781ecc:	89 c3                	mov    %eax,%ebx
77781ece:	83 f8 ff             	cmp    $0xffffffff,%eax
77781ed1:	74 07                	je     77781eda <_WSACreateEvent@0+0x2a>
77781ed3:	89 d8                	mov    %ebx,%eax
77781ed5:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781ed8:	c9                   	leave  
77781ed9:	c3                   	ret    
77781eda:	83 ec 0c             	sub    $0xc,%esp
77781edd:	6a 06                	push   $0x6
77781edf:	e8 3c f6 ff ff       	call   77781520 <_WSASetLastError@4>
77781ee4:	89 d8                	mov    %ebx,%eax
77781ee6:	83 c4 0c             	add    $0xc,%esp
77781ee9:	eb ea                	jmp    77781ed5 <_WSACreateEvent@0+0x25>
77781eeb:	83 ec 0c             	sub    $0xc,%esp
77781eee:	68 6d 27 00 00       	push   $0x276d
77781ef3:	e8 28 f6 ff ff       	call   77781520 <_WSASetLastError@4>
77781ef8:	31 c0                	xor    %eax,%eax
77781efa:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781efd:	c9                   	leave  
77781efe:	c3                   	ret    
77781eff:	90                   	nop    

77781f00 <_WSAResetEvent@4>:
77781f00:	55                   	push   %ebp
77781f01:	89 e5                	mov    %esp,%ebp
77781f03:	53                   	push   %ebx
77781f04:	50                   	push   %eax
77781f05:	a1 00 70 78 77       	mov    0x77787000,%eax
77781f0a:	85 c0                	test   %eax,%eax
77781f0c:	75 16                	jne    77781f24 <_WSAResetEvent@4+0x24>
77781f0e:	83 ec 0c             	sub    $0xc,%esp
77781f11:	68 6d 27 00 00       	push   $0x276d
77781f16:	e8 05 f6 ff ff       	call   77781520 <_WSASetLastError@4>
77781f1b:	31 c0                	xor    %eax,%eax
77781f1d:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781f20:	c9                   	leave  
77781f21:	c2 04 00             	ret    $0x4
77781f24:	83 ec 0c             	sub    $0xc,%esp
77781f27:	8b 45 08             	mov    0x8(%ebp),%eax
77781f2a:	50                   	push   %eax
77781f2b:	e8 80 23 00 00       	call   777842b0 <_ResetEvent@4>
77781f30:	83 c4 0c             	add    $0xc,%esp
77781f33:	89 c3                	mov    %eax,%ebx
77781f35:	85 c0                	test   %eax,%eax
77781f37:	74 09                	je     77781f42 <_WSAResetEvent@4+0x42>
77781f39:	89 d8                	mov    %ebx,%eax
77781f3b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781f3e:	c9                   	leave  
77781f3f:	c2 04 00             	ret    $0x4
77781f42:	83 ec 0c             	sub    $0xc,%esp
77781f45:	6a 06                	push   $0x6
77781f47:	e8 d4 f5 ff ff       	call   77781520 <_WSASetLastError@4>
77781f4c:	89 d8                	mov    %ebx,%eax
77781f4e:	83 c4 0c             	add    $0xc,%esp
77781f51:	eb e8                	jmp    77781f3b <_WSAResetEvent@4+0x3b>
77781f53:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781f59:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781f60 <_WSASetEvent@4>:
77781f60:	55                   	push   %ebp
77781f61:	89 e5                	mov    %esp,%ebp
77781f63:	53                   	push   %ebx
77781f64:	52                   	push   %edx
77781f65:	a1 00 70 78 77       	mov    0x77787000,%eax
77781f6a:	85 c0                	test   %eax,%eax
77781f6c:	75 16                	jne    77781f84 <_WSASetEvent@4+0x24>
77781f6e:	83 ec 0c             	sub    $0xc,%esp
77781f71:	68 6d 27 00 00       	push   $0x276d
77781f76:	e8 a5 f5 ff ff       	call   77781520 <_WSASetLastError@4>
77781f7b:	31 c0                	xor    %eax,%eax
77781f7d:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781f80:	c9                   	leave  
77781f81:	c2 04 00             	ret    $0x4
77781f84:	83 ec 0c             	sub    $0xc,%esp
77781f87:	8b 45 08             	mov    0x8(%ebp),%eax
77781f8a:	50                   	push   %eax
77781f8b:	e8 30 23 00 00       	call   777842c0 <_SetEvent@4>
77781f90:	83 c4 0c             	add    $0xc,%esp
77781f93:	89 c3                	mov    %eax,%ebx
77781f95:	85 c0                	test   %eax,%eax
77781f97:	74 09                	je     77781fa2 <_WSASetEvent@4+0x42>
77781f99:	89 d8                	mov    %ebx,%eax
77781f9b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781f9e:	c9                   	leave  
77781f9f:	c2 04 00             	ret    $0x4
77781fa2:	83 ec 0c             	sub    $0xc,%esp
77781fa5:	6a 06                	push   $0x6
77781fa7:	e8 74 f5 ff ff       	call   77781520 <_WSASetLastError@4>
77781fac:	89 d8                	mov    %ebx,%eax
77781fae:	83 c4 0c             	add    $0xc,%esp
77781fb1:	eb e8                	jmp    77781f9b <_WSASetEvent@4+0x3b>
77781fb3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781fb9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781fc0 <_WSAWaitForMultipleEvents@20>:
77781fc0:	55                   	push   %ebp
77781fc1:	89 e5                	mov    %esp,%ebp
77781fc3:	50                   	push   %eax
77781fc4:	50                   	push   %eax
77781fc5:	a1 00 70 78 77       	mov    0x77787000,%eax
77781fca:	85 c0                	test   %eax,%eax
77781fcc:	75 13                	jne    77781fe1 <_WSAWaitForMultipleEvents@20+0x21>
77781fce:	83 ec 0c             	sub    $0xc,%esp
77781fd1:	68 6d 27 00 00       	push   $0x276d
77781fd6:	e8 45 f5 ff ff       	call   77781520 <_WSASetLastError@4>
77781fdb:	31 c0                	xor    %eax,%eax
77781fdd:	c9                   	leave  
77781fde:	c2 14 00             	ret    $0x14
77781fe1:	83 ec 0c             	sub    $0xc,%esp
77781fe4:	8b 45 18             	mov    0x18(%ebp),%eax
77781fe7:	50                   	push   %eax
77781fe8:	8b 45 14             	mov    0x14(%ebp),%eax
77781feb:	50                   	push   %eax
77781fec:	8b 45 10             	mov    0x10(%ebp),%eax
77781fef:	50                   	push   %eax
77781ff0:	8b 45 0c             	mov    0xc(%ebp),%eax
77781ff3:	50                   	push   %eax
77781ff4:	8b 4d 08             	mov    0x8(%ebp),%ecx
77781ff7:	51                   	push   %ecx
77781ff8:	e8 d3 22 00 00       	call   777842d0 <_WaitForMultipleObjectsEx@20>
77781ffd:	83 c4 0c             	add    $0xc,%esp
77782000:	83 f8 ff             	cmp    $0xffffffff,%eax
77782003:	75 d8                	jne    77781fdd <_WSAWaitForMultipleEvents@20+0x1d>
77782005:	e8 36 22 00 00       	call   77784240 <_GetLastError@0>
7778200a:	83 f8 08             	cmp    $0x8,%eax
7778200d:	74 20                	je     7778202f <_WSAWaitForMultipleEvents@20+0x6f>
7778200f:	83 f8 06             	cmp    $0x6,%eax
77782012:	74 14                	je     77782028 <_WSAWaitForMultipleEvents@20+0x68>
77782014:	83 ec 0c             	sub    $0xc,%esp
77782017:	6a 57                	push   $0x57
77782019:	e8 02 f5 ff ff       	call   77781520 <_WSASetLastError@4>
7778201e:	83 c8 ff             	or     $0xffffffff,%eax
77782021:	83 c4 0c             	add    $0xc,%esp
77782024:	c9                   	leave  
77782025:	c2 14 00             	ret    $0x14
77782028:	83 ec 0c             	sub    $0xc,%esp
7778202b:	6a 06                	push   $0x6
7778202d:	eb ea                	jmp    77782019 <_WSAWaitForMultipleEvents@20+0x59>
7778202f:	83 ec 0c             	sub    $0xc,%esp
77782032:	6a 08                	push   $0x8
77782034:	eb e3                	jmp    77782019 <_WSAWaitForMultipleEvents@20+0x59>
77782036:	8d 76 00             	lea    0x0(%esi),%esi
77782039:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782040 <_WSAEnumNetworkEvents@12>:
77782040:	55                   	push   %ebp
77782041:	89 e5                	mov    %esp,%ebp
77782043:	56                   	push   %esi
77782044:	53                   	push   %ebx
77782045:	83 ec 10             	sub    $0x10,%esp
77782048:	8b 5d 10             	mov    0x10(%ebp),%ebx
7778204b:	8b 75 08             	mov    0x8(%ebp),%esi
7778204e:	85 db                	test   %ebx,%ebx
77782050:	74 7d                	je     777820cf <_WSAEnumNetworkEvents@12+0x8f>
77782052:	a1 00 70 78 77       	mov    0x77787000,%eax
77782057:	85 c0                	test   %eax,%eax
77782059:	74 58                	je     777820b3 <_WSAEnumNetworkEvents@12+0x73>
7778205b:	50                   	push   %eax
7778205c:	50                   	push   %eax
7778205d:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77782060:	50                   	push   %eax
77782061:	56                   	push   %esi
77782062:	e8 f9 02 00 00       	call   77782360 <_ReferenceProviderByHandle>
77782067:	83 c4 10             	add    $0x10,%esp
7778206a:	85 c0                	test   %eax,%eax
7778206c:	74 57                	je     777820c5 <_WSAEnumNetworkEvents@12+0x85>
7778206e:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
77782071:	50                   	push   %eax
77782072:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77782075:	53                   	push   %ebx
77782076:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77782079:	53                   	push   %ebx
7778207a:	56                   	push   %esi
7778207b:	ff 90 d4 04 00 00    	call   *0x4d4(%eax)
77782081:	8b 4d f4             	mov    0xfffffff4(%ebp),%ecx
77782084:	83 ec 0c             	sub    $0xc,%esp
77782087:	89 c3                	mov    %eax,%ebx
77782089:	51                   	push   %ecx
7778208a:	e8 11 f3 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
7778208f:	83 c4 10             	add    $0x10,%esp
77782092:	83 fb ff             	cmp    $0xffffffff,%ebx
77782095:	74 0b                	je     777820a2 <_WSAEnumNetworkEvents@12+0x62>
77782097:	89 d8                	mov    %ebx,%eax
77782099:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778209c:	5b                   	pop    %ebx
7778209d:	5e                   	pop    %esi
7778209e:	5d                   	pop    %ebp
7778209f:	c2 0c 00             	ret    $0xc
777820a2:	83 ec 0c             	sub    $0xc,%esp
777820a5:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
777820a8:	52                   	push   %edx
777820a9:	e8 72 f4 ff ff       	call   77781520 <_WSASetLastError@4>
777820ae:	83 c4 0c             	add    $0xc,%esp
777820b1:	eb e4                	jmp    77782097 <_WSAEnumNetworkEvents@12+0x57>
777820b3:	83 ec 0c             	sub    $0xc,%esp
777820b6:	68 6d 27 00 00       	push   $0x276d
777820bb:	e8 60 f4 ff ff       	call   77781520 <_WSASetLastError@4>
777820c0:	83 c8 ff             	or     $0xffffffff,%eax
777820c3:	eb d4                	jmp    77782099 <_WSAEnumNetworkEvents@12+0x59>
777820c5:	83 ec 0c             	sub    $0xc,%esp
777820c8:	68 36 27 00 00       	push   $0x2736
777820cd:	eb ec                	jmp    777820bb <_WSAEnumNetworkEvents@12+0x7b>
777820cf:	83 ec 0c             	sub    $0xc,%esp
777820d2:	68 26 27 00 00       	push   $0x2726
777820d7:	eb e2                	jmp    777820bb <_WSAEnumNetworkEvents@12+0x7b>
777820d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777820e0 <_WSAEventSelect@12>:
777820e0:	55                   	push   %ebp
777820e1:	89 e5                	mov    %esp,%ebp
777820e3:	53                   	push   %ebx
777820e4:	83 ec 14             	sub    $0x14,%esp
777820e7:	8b 0d 00 70 78 77    	mov    0x77787000,%ecx
777820ed:	8b 5d 08             	mov    0x8(%ebp),%ebx
777820f0:	85 c9                	test   %ecx,%ecx
777820f2:	74 5d                	je     77782151 <_WSAEventSelect@12+0x71>
777820f4:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777820f7:	52                   	push   %edx
777820f8:	52                   	push   %edx
777820f9:	50                   	push   %eax
777820fa:	53                   	push   %ebx
777820fb:	e8 60 02 00 00       	call   77782360 <_ReferenceProviderByHandle>
77782100:	83 c4 10             	add    $0x10,%esp
77782103:	85 c0                	test   %eax,%eax
77782105:	74 5c                	je     77782163 <_WSAEventSelect@12+0x83>
77782107:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
7778210a:	50                   	push   %eax
7778210b:	8b 45 10             	mov    0x10(%ebp),%eax
7778210e:	50                   	push   %eax
7778210f:	8b 45 0c             	mov    0xc(%ebp),%eax
77782112:	50                   	push   %eax
77782113:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77782116:	53                   	push   %ebx
77782117:	ff 90 d8 04 00 00    	call   *0x4d8(%eax)
7778211d:	83 ec 0c             	sub    $0xc,%esp
77782120:	89 c3                	mov    %eax,%ebx
77782122:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77782125:	50                   	push   %eax
77782126:	e8 75 f2 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
7778212b:	83 c4 10             	add    $0x10,%esp
7778212e:	83 fb ff             	cmp    $0xffffffff,%ebx
77782131:	74 0d                	je     77782140 <_WSAEventSelect@12+0x60>
77782133:	89 d8                	mov    %ebx,%eax
77782135:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77782138:	c9                   	leave  
77782139:	c2 0c 00             	ret    $0xc
7778213c:	8d 74 26 00          	lea    0x0(%esi),%esi
77782140:	83 ec 0c             	sub    $0xc,%esp
77782143:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77782146:	50                   	push   %eax
77782147:	e8 d4 f3 ff ff       	call   77781520 <_WSASetLastError@4>
7778214c:	83 c4 0c             	add    $0xc,%esp
7778214f:	eb e2                	jmp    77782133 <_WSAEventSelect@12+0x53>
77782151:	83 ec 0c             	sub    $0xc,%esp
77782154:	68 6d 27 00 00       	push   $0x276d
77782159:	e8 c2 f3 ff ff       	call   77781520 <_WSASetLastError@4>
7778215e:	83 c8 ff             	or     $0xffffffff,%eax
77782161:	eb d2                	jmp    77782135 <_WSAEventSelect@12+0x55>
77782163:	83 ec 0c             	sub    $0xc,%esp
77782166:	68 36 27 00 00       	push   $0x2736
7778216b:	eb ec                	jmp    77782159 <_WSAEventSelect@12+0x79>
7778216d:	90                   	nop    
7778216e:	90                   	nop    
7778216f:	90                   	nop    

77782170 <_GetProviderByHandle>:
77782170:	55                   	push   %ebp
77782171:	89 e5                	mov    %esp,%ebp
77782173:	56                   	push   %esi
77782174:	53                   	push   %ebx
77782175:	8b 75 08             	mov    0x8(%ebp),%esi
77782178:	8b 4d 0c             	mov    0xc(%ebp),%ecx
7778217b:	8b 1e                	mov    (%esi),%ebx
7778217d:	39 f3                	cmp    %esi,%ebx
7778217f:	74 22                	je     777821a3 <_GetProviderByHandle+0x33>
77782181:	31 d2                	xor    %edx,%edx
77782183:	8d 43 08             	lea    0x8(%ebx),%eax
77782186:	eb 09                	jmp    77782191 <_GetProviderByHandle+0x21>
77782188:	42                   	inc    %edx
77782189:	83 c0 08             	add    $0x8,%eax
7778218c:	83 fa 7e             	cmp    $0x7e,%edx
7778218f:	77 0e                	ja     7778219f <_GetProviderByHandle+0x2f>
77782191:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
77782195:	74 f1                	je     77782188 <_GetProviderByHandle+0x18>
77782197:	39 08                	cmp    %ecx,(%eax)
77782199:	75 ed                	jne    77782188 <_GetProviderByHandle+0x18>
7778219b:	5b                   	pop    %ebx
7778219c:	5e                   	pop    %esi
7778219d:	5d                   	pop    %ebp
7778219e:	c3                   	ret    
7778219f:	8b 1b                	mov    (%ebx),%ebx
777821a1:	eb da                	jmp    7778217d <_GetProviderByHandle+0xd>
777821a3:	31 c0                	xor    %eax,%eax
777821a5:	5b                   	pop    %ebx
777821a6:	5e                   	pop    %esi
777821a7:	5d                   	pop    %ebp
777821a8:	c3                   	ret    
777821a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777821b0 <_CloseAllHandles>:
777821b0:	55                   	push   %ebp
777821b1:	89 e5                	mov    %esp,%ebp
777821b3:	57                   	push   %edi
777821b4:	56                   	push   %esi
777821b5:	53                   	push   %ebx
777821b6:	83 ec 0c             	sub    $0xc,%esp
777821b9:	8b 7d 08             	mov    0x8(%ebp),%edi
777821bc:	8b 37                	mov    (%edi),%esi
777821be:	39 fe                	cmp    %edi,%esi
777821c0:	74 32                	je     777821f4 <_CloseAllHandles+0x44>
777821c2:	31 db                	xor    %ebx,%ebx
777821c4:	8b 44 de 0c          	mov    0xc(%esi,%ebx,8),%eax
777821c8:	85 c0                	test   %eax,%eax
777821ca:	74 1c                	je     777821e8 <_CloseAllHandles+0x38>
777821cc:	83 ec 0c             	sub    $0xc,%esp
777821cf:	50                   	push   %eax
777821d0:	e8 cb f1 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
777821d5:	c7 44 de 08 00 00 00 	movl   $0x0,0x8(%esi,%ebx,8)
777821dc:	00 
777821dd:	c7 44 de 0c 00 00 00 	movl   $0x0,0xc(%esi,%ebx,8)
777821e4:	00 
777821e5:	83 c4 10             	add    $0x10,%esp
777821e8:	43                   	inc    %ebx
777821e9:	83 fb 7e             	cmp    $0x7e,%ebx
777821ec:	76 d6                	jbe    777821c4 <_CloseAllHandles+0x14>
777821ee:	8b 36                	mov    (%esi),%esi
777821f0:	39 fe                	cmp    %edi,%esi
777821f2:	75 ce                	jne    777821c2 <_CloseAllHandles+0x12>
777821f4:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777821f7:	5b                   	pop    %ebx
777821f8:	5e                   	pop    %esi
777821f9:	5f                   	pop    %edi
777821fa:	5d                   	pop    %ebp
777821fb:	c3                   	ret    
777821fc:	8d 74 26 00          	lea    0x0(%esi),%esi

77782200 <_DeleteHandleTable>:
77782200:	55                   	push   %ebp
77782201:	89 e5                	mov    %esp,%ebp
77782203:	53                   	push   %ebx
77782204:	83 ec 10             	sub    $0x10,%esp
77782207:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778220a:	53                   	push   %ebx
7778220b:	e8 a0 ff ff ff       	call   777821b0 <_CloseAllHandles>

static __inline PLIST_ENTRY 
RemoveHeadList(
  IN PLIST_ENTRY  ListHead)
{
77782210:	83 c4 10             	add    $0x10,%esp
77782213:	eb 11                	jmp    77782226 <_DeleteHandleTable+0x26>
77782215:	51                   	push   %ecx
77782216:	52                   	push   %edx
77782217:	8b 15 60 70 78 77    	mov    0x77787060,%edx
7778221d:	6a 00                	push   $0x0
7778221f:	52                   	push   %edx
77782220:	e8 2b 20 00 00       	call   77784250 <_HeapFree@12>

static __inline PLIST_ENTRY 
RemoveHeadList(
  IN PLIST_ENTRY  ListHead)
{
77782225:	58                   	pop    %eax
  PLIST_ENTRY Flink;
  PLIST_ENTRY Entry;

  Entry = ListHead->Flink;
77782226:	8b 13                	mov    (%ebx),%edx
77782228:	39 da                	cmp    %ebx,%edx
  Flink = Entry->Flink;
7778222a:	8b 02                	mov    (%edx),%eax
  ListHead->Flink = Flink;
7778222c:	89 03                	mov    %eax,(%ebx)
  Flink->Blink = ListHead;
7778222e:	89 58 04             	mov    %ebx,0x4(%eax)
77782231:	75 e2                	jne    77782215 <_DeleteHandleTable+0x15>
77782233:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77782236:	c9                   	leave  
77782237:	c3                   	ret    
77782238:	90                   	nop    
77782239:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782240 <_DeleteProviderHandle>:
77782240:	55                   	push   %ebp
77782241:	89 e5                	mov    %esp,%ebp
77782243:	8b 45 0c             	mov    0xc(%ebp),%eax
77782246:	50                   	push   %eax
77782247:	8b 45 08             	mov    0x8(%ebp),%eax
7778224a:	50                   	push   %eax
7778224b:	e8 20 ff ff ff       	call   77782170 <_GetProviderByHandle>
77782250:	89 c2                	mov    %eax,%edx
77782252:	58                   	pop    %eax
77782253:	31 c0                	xor    %eax,%eax
77782255:	59                   	pop    %ecx
77782256:	85 d2                	test   %edx,%edx
77782258:	74 10                	je     7778226a <_DeleteProviderHandle+0x2a>
7778225a:	8b 42 04             	mov    0x4(%edx),%eax
7778225d:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
77782263:	c7 42 04 00 00 00 00 	movl   $0x0,0x4(%edx)
7778226a:	c9                   	leave  
7778226b:	c3                   	ret    
7778226c:	8d 74 26 00          	lea    0x0(%esi),%esi

77782270 <_CreateProviderHandleTable>:
77782270:	55                   	push   %ebp
77782271:	89 e5                	mov    %esp,%ebp
77782273:	57                   	push   %edi
77782274:	56                   	push   %esi
77782275:	53                   	push   %ebx
77782276:	83 ec 0c             	sub    $0xc,%esp
77782279:	8b 75 08             	mov    0x8(%ebp),%esi
7778227c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778227f:	8b 16                	mov    (%esi),%edx
77782281:	39 f2                	cmp    %esi,%edx
77782283:	74 32                	je     777822b7 <_CreateProviderHandleTable+0x47>
77782285:	31 c0                	xor    %eax,%eax
77782287:	eb 0d                	jmp    77782296 <_CreateProviderHandleTable+0x26>
77782289:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77782290:	40                   	inc    %eax
77782291:	83 f8 7e             	cmp    $0x7e,%eax
77782294:	77 1d                	ja     777822b3 <_CreateProviderHandleTable+0x43>
77782296:	8b 4c c2 0c          	mov    0xc(%edx,%eax,8),%ecx
7778229a:	85 c9                	test   %ecx,%ecx
7778229c:	75 f2                	jne    77782290 <_CreateProviderHandleTable+0x20>
7778229e:	8b 4d 10             	mov    0x10(%ebp),%ecx
777822a1:	89 5c c2 08          	mov    %ebx,0x8(%edx,%eax,8)
777822a5:	89 4c c2 0c          	mov    %ecx,0xc(%edx,%eax,8)
777822a9:	89 d8                	mov    %ebx,%eax
777822ab:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777822ae:	5b                   	pop    %ebx
777822af:	5e                   	pop    %esi
777822b0:	5f                   	pop    %edi
777822b1:	5d                   	pop    %ebp
777822b2:	c3                   	ret    
777822b3:	8b 12                	mov    (%edx),%edx
777822b5:	eb ca                	jmp    77782281 <_CreateProviderHandleTable+0x11>
777822b7:	50                   	push   %eax
777822b8:	a1 60 70 78 77       	mov    0x77787060,%eax
777822bd:	68 00 04 00 00       	push   $0x400
777822c2:	6a 00                	push   $0x0
777822c4:	50                   	push   %eax
777822c5:	e8 26 1f 00 00       	call   777841f0 <_HeapAlloc@12>
777822ca:	89 c7                	mov    %eax,%edi
777822cc:	58                   	pop    %eax
777822cd:	31 c0                	xor    %eax,%eax
777822cf:	85 ff                	test   %edi,%edi
777822d1:	74 d8                	je     777822ab <_CreateProviderHandleTable+0x3b>
777822d3:	50                   	push   %eax
777822d4:	68 00 04 00 00       	push   $0x400
777822d9:	6a 00                	push   $0x0
777822db:	57                   	push   %edi
777822dc:	e8 cf 1d 00 00       	call   777840b0 <_memset>
  IN PLIST_ENTRY  ListHead,
  IN PLIST_ENTRY  Entry)
{ 
  PLIST_ENTRY OldBlink;
  OldBlink = ListHead->Blink;
777822e1:	8b 46 04             	mov    0x4(%esi),%eax
  Entry->Flink = ListHead;
777822e4:	89 37                	mov    %esi,(%edi)
  Entry->Blink = OldBlink;
777822e6:	89 47 04             	mov    %eax,0x4(%edi)
777822e9:	83 c4 10             	add    $0x10,%esp
  OldBlink->Flink = Entry;
777822ec:	89 38                	mov    %edi,(%eax)
777822ee:	8b 45 10             	mov    0x10(%ebp),%eax
  OldBlink = ListHead->Blink;
  Entry->Flink = ListHead;
  Entry->Blink = OldBlink;
  OldBlink->Flink = Entry;
  ListHead->Blink = Entry;
777822f1:	89 7e 04             	mov    %edi,0x4(%esi)
777822f4:	89 5f 08             	mov    %ebx,0x8(%edi)
777822f7:	89 47 0c             	mov    %eax,0xc(%edi)
777822fa:	eb ad                	jmp    777822a9 <_CreateProviderHandleTable+0x39>
777822fc:	8d 74 26 00          	lea    0x0(%esi),%esi

77782300 <_CreateProviderHandle>:
77782300:	55                   	push   %ebp
77782301:	89 e5                	mov    %esp,%ebp
77782303:	56                   	push   %esi
77782304:	53                   	push   %ebx
77782305:	83 ec 0c             	sub    $0xc,%esp
77782308:	8b 75 0c             	mov    0xc(%ebp),%esi
7778230b:	68 b0 70 78 77       	push   $0x777870b0
77782310:	e8 cb 1f 00 00       	call   777842e0 <_EnterCriticalSection@4>
77782315:	8b 1d d0 70 78 77    	mov    0x777870d0,%ebx
7778231b:	58                   	pop    %eax
7778231c:	8b 45 08             	mov    0x8(%ebp),%eax
7778231f:	5a                   	pop    %edx
77782320:	56                   	push   %esi
77782321:	50                   	push   %eax
77782322:	53                   	push   %ebx
77782323:	e8 48 ff ff ff       	call   77782270 <_CreateProviderHandleTable>
77782328:	c7 04 24 b0 70 78 77 	movl   $0x777870b0,(%esp)
7778232f:	89 c3                	mov    %eax,%ebx
77782331:	e8 ba 1f 00 00       	call   777842f0 <_LeaveCriticalSection@4>
77782336:	83 c4 0c             	add    $0xc,%esp
77782339:	85 db                	test   %ebx,%ebx
7778233b:	74 0c                	je     77782349 <_CreateProviderHandle+0x49>
7778233d:	83 ec 0c             	sub    $0xc,%esp
77782340:	56                   	push   %esi
77782341:	e8 5a ed ff ff       	call   777810a0 <_ReferenceProviderByPointer>
77782346:	83 c4 10             	add    $0x10,%esp
77782349:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778234c:	89 d8                	mov    %ebx,%eax
7778234e:	5b                   	pop    %ebx
7778234f:	5e                   	pop    %esi
77782350:	5d                   	pop    %ebp
77782351:	c3                   	ret    
77782352:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77782359:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782360 <_ReferenceProviderByHandle>:
77782360:	55                   	push   %ebp
77782361:	89 e5                	mov    %esp,%ebp
77782363:	53                   	push   %ebx
77782364:	83 ec 10             	sub    $0x10,%esp
77782367:	68 b0 70 78 77       	push   $0x777870b0
7778236c:	e8 6f 1f 00 00       	call   777842e0 <_EnterCriticalSection@4>
77782371:	8b 5d 08             	mov    0x8(%ebp),%ebx
77782374:	8b 0d d0 70 78 77    	mov    0x777870d0,%ecx
7778237a:	53                   	push   %ebx
7778237b:	51                   	push   %ecx
7778237c:	e8 ef fd ff ff       	call   77782170 <_GetProviderByHandle>
77782381:	89 c3                	mov    %eax,%ebx
77782383:	58                   	pop    %eax
77782384:	5a                   	pop    %edx
77782385:	68 b0 70 78 77       	push   $0x777870b0
7778238a:	e8 61 1f 00 00       	call   777842f0 <_LeaveCriticalSection@4>
7778238f:	83 c4 0c             	add    $0xc,%esp
77782392:	85 db                	test   %ebx,%ebx
77782394:	74 17                	je     777823ad <_ReferenceProviderByHandle+0x4d>
77782396:	83 ec 0c             	sub    $0xc,%esp
77782399:	8b 4b 04             	mov    0x4(%ebx),%ecx
7778239c:	51                   	push   %ecx
7778239d:	e8 fe ec ff ff       	call   777810a0 <_ReferenceProviderByPointer>
777823a2:	8b 45 0c             	mov    0xc(%ebp),%eax
777823a5:	8b 53 04             	mov    0x4(%ebx),%edx
777823a8:	83 c4 10             	add    $0x10,%esp
777823ab:	89 10                	mov    %edx,(%eax)
777823ad:	85 db                	test   %ebx,%ebx
777823af:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777823b2:	0f 95 c0             	setne  %al
777823b5:	25 ff 00 00 00       	and    $0xff,%eax
777823ba:	c9                   	leave  
777823bb:	c3                   	ret    
777823bc:	8d 74 26 00          	lea    0x0(%esi),%esi

777823c0 <_CloseProviderHandle>:
777823c0:	55                   	push   %ebp
777823c1:	89 e5                	mov    %esp,%ebp
777823c3:	53                   	push   %ebx
777823c4:	83 ec 10             	sub    $0x10,%esp
777823c7:	68 b0 70 78 77       	push   $0x777870b0
777823cc:	e8 0f 1f 00 00       	call   777842e0 <_EnterCriticalSection@4>
777823d1:	8b 45 08             	mov    0x8(%ebp),%eax
777823d4:	50                   	push   %eax
777823d5:	a1 d0 70 78 77       	mov    0x777870d0,%eax
777823da:	50                   	push   %eax
777823db:	e8 60 fe ff ff       	call   77782240 <_DeleteProviderHandle>
777823e0:	89 c3                	mov    %eax,%ebx
777823e2:	83 c4 14             	add    $0x14,%esp
777823e5:	31 c0                	xor    %eax,%eax
777823e7:	85 db                	test   %ebx,%ebx
777823e9:	74 18                	je     77782403 <_CloseProviderHandle+0x43>
777823eb:	83 ec 0c             	sub    $0xc,%esp
777823ee:	68 b0 70 78 77       	push   $0x777870b0
777823f3:	e8 f8 1e 00 00       	call   777842f0 <_LeaveCriticalSection@4>
777823f8:	53                   	push   %ebx
777823f9:	e8 a2 ef ff ff       	call   777813a0 <_DereferenceProviderByPointer>
777823fe:	b8 01 00 00 00       	mov    $0x1,%eax
77782403:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77782406:	c9                   	leave  
77782407:	c3                   	ret    
77782408:	90                   	nop    
77782409:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782410 <_InitProviderHandleTable>:
77782410:	55                   	push   %ebp
77782411:	89 e5                	mov    %esp,%ebp
77782413:	83 ec 0c             	sub    $0xc,%esp
77782416:	68 00 04 00 00       	push   $0x400
7778241b:	6a 00                	push   $0x0
7778241d:	a1 60 70 78 77       	mov    0x77787060,%eax
77782422:	50                   	push   %eax
77782423:	e8 c8 1d 00 00       	call   777841f0 <_HeapAlloc@12>
77782428:	a3 d0 70 78 77       	mov    %eax,0x777870d0
7778242d:	31 d2                	xor    %edx,%edx
7778242f:	59                   	pop    %ecx
77782430:	85 c0                	test   %eax,%eax
77782432:	75 04                	jne    77782438 <_InitProviderHandleTable+0x28>
77782434:	89 d0                	mov    %edx,%eax
77782436:	c9                   	leave  
77782437:	c3                   	ret    
77782438:	52                   	push   %edx
77782439:	68 00 04 00 00       	push   $0x400
7778243e:	6a 00                	push   $0x0
77782440:	50                   	push   %eax
77782441:	e8 6a 1c 00 00       	call   777840b0 <_memset>

static __inline VOID
InitializeListHead(
  IN PLIST_ENTRY  ListHead)
{
77782446:	a1 d0 70 78 77       	mov    0x777870d0,%eax
  ListHead->Flink = ListHead->Blink = ListHead;
7778244b:	89 40 04             	mov    %eax,0x4(%eax)
7778244e:	89 00                	mov    %eax,(%eax)
77782450:	c7 04 24 b0 70 78 77 	movl   $0x777870b0,(%esp)
77782457:	e8 a4 1d 00 00       	call   77784200 <_InitializeCriticalSection@4>
7778245c:	ba 01 00 00 00       	mov    $0x1,%edx
77782461:	89 d0                	mov    %edx,%eax
77782463:	c9                   	leave  
77782464:	c3                   	ret    
77782465:	8d 74 26 00          	lea    0x0(%esi),%esi
77782469:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782470 <_FreeProviderHandleTable>:
77782470:	55                   	push   %ebp
77782471:	89 e5                	mov    %esp,%ebp
77782473:	83 ec 14             	sub    $0x14,%esp
77782476:	a1 d0 70 78 77       	mov    0x777870d0,%eax
7778247b:	50                   	push   %eax
7778247c:	e8 7f fd ff ff       	call   77782200 <_DeleteHandleTable>
77782481:	c7 04 24 b0 70 78 77 	movl   $0x777870b0,(%esp)
77782488:	e8 73 1e 00 00       	call   77784300 <_DeleteCriticalSection@4>
7778248d:	c9                   	leave  
7778248e:	c3                   	ret    
7778248f:	90                   	nop    

77782490 <_WSAAddressToStringA@20>:
    IN      DWORD dwAddressLength,
    IN      LPWSAPROTOCOL_INFOA lpProtocolInfo,
    OUT     LPSTR lpszAddressString,
    IN OUT  LPDWORD lpdwAddressStringLength)
{
77782490:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782491:	31 c0                	xor    %eax,%eax
77782493:	89 e5                	mov    %esp,%ebp
77782495:	5d                   	pop    %ebp
77782496:	c2 14 00             	ret    $0x14
77782499:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824a0 <_WSAAddressToStringW@20>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAAddressToStringW(
    IN      LPSOCKADDR lpsaAddress,
    IN      DWORD dwAddressLength,
    IN      LPWSAPROTOCOL_INFOW lpProtocolInfo,
    OUT     LPWSTR lpszAddressString,
    IN OUT  LPDWORD lpdwAddressStringLength)
{
777824a0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824a1:	31 c0                	xor    %eax,%eax
777824a3:	89 e5                	mov    %esp,%ebp
777824a5:	5d                   	pop    %ebp
777824a6:	c2 14 00             	ret    $0x14
777824a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824b0 <_WSAEnumNameSpaceProvidersA@8>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAEnumNameSpaceProvidersA(
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSANAMESPACE_INFOA lpnspBuffer)
{
777824b0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824b1:	31 c0                	xor    %eax,%eax
777824b3:	89 e5                	mov    %esp,%ebp
777824b5:	5d                   	pop    %ebp
777824b6:	c2 08 00             	ret    $0x8
777824b9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824c0 <_WSAEnumNameSpaceProvidersW@8>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAEnumNameSpaceProvidersW(
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSANAMESPACE_INFOW lpnspBuffer)
{
777824c0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824c1:	31 c0                	xor    %eax,%eax
777824c3:	89 e5                	mov    %esp,%ebp
777824c5:	5d                   	pop    %ebp
777824c6:	c2 08 00             	ret    $0x8
777824c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824d0 <_WSAGetServiceClassInfoA@16>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAGetServiceClassInfoA(
    IN      LPGUID lpProviderId,
    IN      LPGUID lpServiceClassId,
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSASERVICECLASSINFOA lpServiceClassInfo)
{
777824d0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824d1:	31 c0                	xor    %eax,%eax
777824d3:	89 e5                	mov    %esp,%ebp
777824d5:	5d                   	pop    %ebp
777824d6:	c2 10 00             	ret    $0x10
777824d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824e0 <_WSAGetServiceClassInfoW@16>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAGetServiceClassInfoW(
    IN      LPGUID lpProviderId,
    IN      LPGUID lpServiceClassId,
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSASERVICECLASSINFOW lpServiceClassInfo)
{
777824e0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824e1:	31 c0                	xor    %eax,%eax
777824e3:	89 e5                	mov    %esp,%ebp
777824e5:	5d                   	pop    %ebp
777824e6:	c2 10 00             	ret    $0x10
777824e9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777824f0 <_WSAGetServiceClassNameByClassIdA@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAGetServiceClassNameByClassIdA(
    IN      LPGUID lpServiceClassId,
    OUT     LPSTR lpszServiceClassName,
    IN OUT  LPDWORD lpdwBufferLength)
{
777824f0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777824f1:	31 c0                	xor    %eax,%eax
777824f3:	89 e5                	mov    %esp,%ebp
777824f5:	5d                   	pop    %ebp
777824f6:	c2 0c 00             	ret    $0xc
777824f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782500 <_WSAGetServiceClassNameByClassIdW@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAGetServiceClassNameByClassIdW(
    IN      LPGUID lpServiceClassId,
    OUT     LPWSTR lpszServiceClassName,
    IN OUT  LPDWORD lpdwBufferLength)
{
77782500:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782501:	31 c0                	xor    %eax,%eax
77782503:	89 e5                	mov    %esp,%ebp
77782505:	5d                   	pop    %ebp
77782506:	c2 0c 00             	ret    $0xc
77782509:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782510 <_WSAInstallServiceClassA@4>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAInstallServiceClassA(
    IN  LPWSASERVICECLASSINFOA lpServiceClassInfo)
{
77782510:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782511:	31 c0                	xor    %eax,%eax
77782513:	89 e5                	mov    %esp,%ebp
77782515:	5d                   	pop    %ebp
77782516:	c2 04 00             	ret    $0x4
77782519:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782520 <_WSAInstallServiceClassW@4>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAInstallServiceClassW(
    IN  LPWSASERVICECLASSINFOW lpServiceClassInfo)
{
77782520:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782521:	31 c0                	xor    %eax,%eax
77782523:	89 e5                	mov    %esp,%ebp
77782525:	5d                   	pop    %ebp
77782526:	c2 04 00             	ret    $0x4
77782529:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782530 <_WSALookupServiceBeginA@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSALookupServiceBeginA(
    IN  LPWSAQUERYSETA lpqsRestrictions,
    IN  DWORD dwControlFlags,
    OUT LPHANDLE lphLookup)
{
77782530:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782531:	31 c0                	xor    %eax,%eax
77782533:	89 e5                	mov    %esp,%ebp
77782535:	5d                   	pop    %ebp
77782536:	c2 0c 00             	ret    $0xc
77782539:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782540 <_WSALookupServiceBeginW@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSALookupServiceBeginW(
    IN  LPWSAQUERYSETW lpqsRestrictions,
    IN  DWORD dwControlFlags,
    OUT LPHANDLE lphLookup)
{
77782540:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782541:	31 c0                	xor    %eax,%eax
77782543:	89 e5                	mov    %esp,%ebp
77782545:	5d                   	pop    %ebp
77782546:	c2 0c 00             	ret    $0xc
77782549:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782550 <_WSALookupServiceEnd@4>:


/*
 * @unimplemented
 */
INT
EXPORT
WSALookupServiceEnd(
    IN  HANDLE hLookup)
{
77782550:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782551:	31 c0                	xor    %eax,%eax
77782553:	89 e5                	mov    %esp,%ebp
77782555:	5d                   	pop    %ebp
77782556:	c2 04 00             	ret    $0x4
77782559:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782560 <_WSALookupServiceNextA@16>:


/*
 * @unimplemented
 */
INT
EXPORT
WSALookupServiceNextA(
    IN      HANDLE hLookup,
    IN      DWORD dwControlFlags,
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSAQUERYSETA lpqsResults)
{
77782560:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782561:	31 c0                	xor    %eax,%eax
77782563:	89 e5                	mov    %esp,%ebp
77782565:	5d                   	pop    %ebp
77782566:	c2 10 00             	ret    $0x10
77782569:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782570 <_WSALookupServiceNextW@16>:


/*
 * @unimplemented
 */
INT
EXPORT
WSALookupServiceNextW(
    IN      HANDLE hLookup,
    IN      DWORD dwControlFlags,
    IN OUT  LPDWORD lpdwBufferLength,
    OUT     LPWSAQUERYSETW lpqsResults)
{
77782570:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782571:	31 c0                	xor    %eax,%eax
77782573:	89 e5                	mov    %esp,%ebp
77782575:	5d                   	pop    %ebp
77782576:	c2 10 00             	ret    $0x10
77782579:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782580 <_WSARemoveServiceClass@4>:


/*
 * @unimplemented
 */
INT
EXPORT
WSARemoveServiceClass(
    IN  LPGUID lpServiceClassId)
{
77782580:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782581:	31 c0                	xor    %eax,%eax
77782583:	89 e5                	mov    %esp,%ebp
77782585:	5d                   	pop    %ebp
77782586:	c2 04 00             	ret    $0x4
77782589:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782590 <_WSASetServiceA@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSASetServiceA(
    IN  LPWSAQUERYSETA lpqsRegInfo,
    IN  WSAESETSERVICEOP essOperation,
    IN  DWORD dwControlFlags)
{
77782590:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
77782591:	31 c0                	xor    %eax,%eax
77782593:	89 e5                	mov    %esp,%ebp
77782595:	5d                   	pop    %ebp
77782596:	c2 0c 00             	ret    $0xc
77782599:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777825a0 <_WSASetServiceW@12>:


/*
 * @unimplemented
 */
INT
EXPORT
WSASetServiceW(
    IN  LPWSAQUERYSETW lpqsRegInfo,
    IN  WSAESETSERVICEOP essOperation,
    IN  DWORD dwControlFlags)
{
777825a0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777825a1:	31 c0                	xor    %eax,%eax
777825a3:	89 e5                	mov    %esp,%ebp
777825a5:	5d                   	pop    %ebp
777825a6:	c2 0c 00             	ret    $0xc
777825a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777825b0 <_WSAStringToAddressA@20>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAStringToAddressA(
    IN      LPSTR AddressString,
    IN      INT AddressFamily,
    IN      LPWSAPROTOCOL_INFOA lpProtocolInfo,
    OUT     LPSOCKADDR lpAddress,
    IN OUT  LPINT lpAddressLength)
{
777825b0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777825b1:	31 c0                	xor    %eax,%eax
777825b3:	89 e5                	mov    %esp,%ebp
777825b5:	5d                   	pop    %ebp
777825b6:	c2 14 00             	ret    $0x14
777825b9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777825c0 <_WSAStringToAddressW@20>:


/*
 * @unimplemented
 */
INT
EXPORT
WSAStringToAddressW(
    IN      LPWSTR AddressString,
    IN      INT AddressFamily,
    IN      LPWSAPROTOCOL_INFOW lpProtocolInfo,
    OUT     LPSOCKADDR lpAddress,
    IN OUT  LPINT lpAddressLength)
{
777825c0:	55                   	push   %ebp
    UNIMPLEMENTED

    return 0;
}
777825c1:	31 c0                	xor    %eax,%eax
777825c3:	89 e5                	mov    %esp,%ebp
777825c5:	5d                   	pop    %ebp
777825c6:	c2 14 00             	ret    $0x14
777825c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777825d0 <_check_hostent>:

void check_hostent(struct hostent **he) {
777825d0:	55                   	push   %ebp
777825d1:	89 e5                	mov    %esp,%ebp
777825d3:	56                   	push   %esi
777825d4:	53                   	push   %ebx
777825d5:	8b 75 08             	mov    0x8(%ebp),%esi
  struct hostent *new_he;
  WS_DbgPrint(MID_TRACE,("*he: %x\n",*he));
  if(!*he) {
777825d8:	8b 06                	mov    (%esi),%eax
777825da:	85 c0                	test   %eax,%eax
777825dc:	74 07                	je     777825e5 <_check_hostent+0x15>
    new_he = HeapAlloc(GlobalHeap, 0, sizeof(struct hostent) + MAX_HOSTNAME_LEN + 1);
    new_he->h_name = (PCHAR)(new_he + 1);
    new_he->h_aliases = 0;
    new_he->h_addrtype = 0; // AF_INET
    new_he->h_length = 0;   // sizeof(in_addr)
    new_he->h_addr_list = HeapAlloc(GlobalHeap, 0, sizeof(char *) * 2);
    RtlZeroMemory(new_he->h_addr_list, sizeof(char *) * 2);
    *he = new_he;
  }
}
777825de:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777825e1:	5b                   	pop    %ebx
777825e2:	5e                   	pop    %esi
777825e3:	5d                   	pop    %ebp
777825e4:	c3                   	ret    
777825e5:	53                   	push   %ebx
777825e6:	68 11 01 00 00       	push   $0x111
777825eb:	6a 00                	push   $0x0
777825ed:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
777825f3:	51                   	push   %ecx
777825f4:	e8 f7 1b 00 00       	call   777841f0 <_HeapAlloc@12>
777825f9:	89 c3                	mov    %eax,%ebx
777825fb:	8d 40 10             	lea    0x10(%eax),%eax
777825fe:	89 03                	mov    %eax,(%ebx)
77782600:	c7 43 04 00 00 00 00 	movl   $0x0,0x4(%ebx)
77782607:	66 c7 43 08 00 00    	movw   $0x0,0x8(%ebx)
7778260d:	66 c7 43 0a 00 00    	movw   $0x0,0xa(%ebx)
77782613:	6a 08                	push   $0x8
77782615:	6a 00                	push   $0x0
77782617:	8b 15 60 70 78 77    	mov    0x77787060,%edx
7778261d:	52                   	push   %edx
7778261e:	e8 cd 1b 00 00       	call   777841f0 <_HeapAlloc@12>
77782623:	89 43 0c             	mov    %eax,0xc(%ebx)
77782626:	6a 08                	push   $0x8
77782628:	6a 00                	push   $0x0
7778262a:	8b 43 0c             	mov    0xc(%ebx),%eax
7778262d:	50                   	push   %eax
7778262e:	e8 7d 1a 00 00       	call   777840b0 <_memset>
77782633:	89 1e                	mov    %ebx,(%esi)
77782635:	83 c4 10             	add    $0x10,%esp
77782638:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778263b:	5b                   	pop    %ebx
7778263c:	5e                   	pop    %esi
7778263d:	5d                   	pop    %ebp
7778263e:	c3                   	ret    
7778263f:	90                   	nop    

77782640 <_populate_hostent>:

void populate_hostent(struct hostent *he, char* name, DNS_A_DATA addr) {
77782640:	55                   	push   %ebp
77782641:	89 e5                	mov    %esp,%ebp
77782643:	56                   	push   %esi
77782644:	53                   	push   %ebx
  ASSERT(he);
  //he = HeapAlloc(GlobalHeap, 0, sizeof(struct hostent));
  //he->h_name = HeapAlloc(GlobalHeap, 0, MAX_HOSTNAME_LEN+1);
  strncpy(he->h_name, name, MAX_HOSTNAME_LEN);
77782645:	50                   	push   %eax
77782646:	8b 75 08             	mov    0x8(%ebp),%esi
77782649:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778264c:	68 00 01 00 00       	push   $0x100
77782651:	53                   	push   %ebx
77782652:	8b 0e                	mov    (%esi),%ecx
77782654:	51                   	push   %ecx
77782655:	e8 76 1b 00 00       	call   777841d0 <_strncpy>
  he->h_aliases = 0;
  he->h_addrtype = AF_INET;
  he->h_length = sizeof(IN_ADDR); //sizeof(struct in_addr);
  if( he->h_addr_list[0] ) HeapFree( GlobalHeap, 0, he->h_addr_list[0] );
7778265a:	8b 5e 0c             	mov    0xc(%esi),%ebx
7778265d:	83 c4 10             	add    $0x10,%esp
77782660:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
77782667:	66 c7 46 08 02 00    	movw   $0x2,0x8(%esi)
7778266d:	8b 03                	mov    (%ebx),%eax
7778266f:	66 c7 46 0a 04 00    	movw   $0x4,0xa(%esi)
77782675:	85 c0                	test   %eax,%eax
77782677:	75 37                	jne    777826b0 <_populate_hostent+0x70>
  he->h_addr_list[0] = HeapAlloc(GlobalHeap, 0, MAX_HOSTNAME_LEN+1);
77782679:	50                   	push   %eax
7778267a:	a1 60 70 78 77       	mov    0x77787060,%eax
7778267f:	68 01 01 00 00       	push   $0x101
77782684:	6a 00                	push   $0x0
77782686:	50                   	push   %eax
77782687:	e8 64 1b 00 00       	call   777841f0 <_HeapAlloc@12>
7778268c:	89 03                	mov    %eax,(%ebx)
  WS_DbgPrint(MID_TRACE,("he->h_addr_list[0] %x\n", he->h_addr_list[0]));
  RtlCopyMemory(he->h_addr_list[0], (char*)&addr.IpAddress, 
7778268e:	8d 45 10             	lea    0x10(%ebp),%eax
77782691:	6a 04                	push   $0x4
77782693:	50                   	push   %eax
77782694:	8b 46 0c             	mov    0xc(%esi),%eax
77782697:	8b 00                	mov    (%eax),%eax
77782699:	50                   	push   %eax
7778269a:	e8 51 1a 00 00       	call   777840f0 <_memcpy>
		sizeof(addr.IpAddress));
  he->h_addr_list[1] = 0;
7778269f:	8b 46 0c             	mov    0xc(%esi),%eax
777826a2:	c7 40 04 00 00 00 00 	movl   $0x0,0x4(%eax)
777826a9:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777826ac:	5b                   	pop    %ebx
777826ad:	5e                   	pop    %esi
777826ae:	5d                   	pop    %ebp
777826af:	c3                   	ret    
777826b0:	52                   	push   %edx
777826b1:	50                   	push   %eax
777826b2:	a1 60 70 78 77       	mov    0x77787060,%eax
777826b7:	6a 00                	push   $0x0
777826b9:	50                   	push   %eax
777826ba:	e8 91 1b 00 00       	call   77784250 <_HeapFree@12>
777826bf:	8b 5e 0c             	mov    0xc(%esi),%ebx
777826c2:	58                   	pop    %eax
777826c3:	eb b4                	jmp    77782679 <_populate_hostent+0x39>
777826c5:	8d 74 26 00          	lea    0x0(%esi),%esi
777826c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777826d0 <_free_hostent>:
}


#define HFREE(x) if(x) { HeapFree(GlobalHeap, 0, (x)); x=0; }
void free_hostent(struct hostent *he) {
777826d0:	55                   	push   %ebp
777826d1:	89 e5                	mov    %esp,%ebp
777826d3:	53                   	push   %ebx
777826d4:	51                   	push   %ecx
777826d5:	8b 5d 08             	mov    0x8(%ebp),%ebx
  if(he) {
777826d8:	85 db                	test   %ebx,%ebx
777826da:	74 57                	je     77782733 <_free_hostent+0x63>
    HFREE(he->h_name);
777826dc:	8b 03                	mov    (%ebx),%eax
777826de:	85 c0                	test   %eax,%eax
777826e0:	75 76                	jne    77782758 <_free_hostent+0x88>
    char *next = he->h_aliases[0];
777826e2:	8b 43 04             	mov    0x4(%ebx),%eax
777826e5:	8b 00                	mov    (%eax),%eax
    while(next) { HFREE(next); next++; }
777826e7:	85 c0                	test   %eax,%eax
777826e9:	74 4d                	je     77782738 <_free_hostent+0x68>
777826eb:	90                   	nop    
777826ec:	8d 74 26 00          	lea    0x0(%esi),%esi
777826f0:	8b 1d 60 70 78 77    	mov    0x77787060,%ebx
777826f6:	52                   	push   %edx
777826f7:	50                   	push   %eax
777826f8:	6a 00                	push   $0x0
777826fa:	53                   	push   %ebx
777826fb:	e8 50 1b 00 00       	call   77784250 <_HeapFree@12>
77782700:	b8 01 00 00 00       	mov    $0x1,%eax
77782705:	59                   	pop    %ecx
77782706:	eb e8                	jmp    777826f0 <_free_hostent+0x20>
    next = he->h_addr_list[0];
    while(next) { HFREE(next); next++; }
    HFREE(he->h_addr_list);
77782708:	85 d2                	test   %edx,%edx
7778270a:	74 17                	je     77782723 <_free_hostent+0x53>
7778270c:	a1 60 70 78 77       	mov    0x77787060,%eax
77782711:	51                   	push   %ecx
77782712:	52                   	push   %edx
77782713:	6a 00                	push   $0x0
77782715:	50                   	push   %eax
77782716:	e8 35 1b 00 00       	call   77784250 <_HeapFree@12>
7778271b:	c7 43 0c 00 00 00 00 	movl   $0x0,0xc(%ebx)
77782722:	58                   	pop    %eax
    HFREE(he);
77782723:	50                   	push   %eax
77782724:	a1 60 70 78 77       	mov    0x77787060,%eax
77782729:	53                   	push   %ebx
7778272a:	6a 00                	push   $0x0
7778272c:	50                   	push   %eax
7778272d:	e8 1e 1b 00 00       	call   77784250 <_HeapFree@12>
77782732:	58                   	pop    %eax
  }
}
77782733:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77782736:	c9                   	leave  
77782737:	c3                   	ret    
77782738:	8b 53 0c             	mov    0xc(%ebx),%edx
7778273b:	8b 02                	mov    (%edx),%eax
7778273d:	85 c0                	test   %eax,%eax
7778273f:	74 c7                	je     77782708 <_free_hostent+0x38>
77782741:	52                   	push   %edx
77782742:	50                   	push   %eax
77782743:	a1 60 70 78 77       	mov    0x77787060,%eax
77782748:	6a 00                	push   $0x0
7778274a:	50                   	push   %eax
7778274b:	e8 00 1b 00 00       	call   77784250 <_HeapFree@12>
77782750:	b8 01 00 00 00       	mov    $0x1,%eax
77782755:	5b                   	pop    %ebx
77782756:	eb e9                	jmp    77782741 <_free_hostent+0x71>
77782758:	52                   	push   %edx
77782759:	50                   	push   %eax
7778275a:	a1 60 70 78 77       	mov    0x77787060,%eax
7778275f:	6a 00                	push   $0x0
77782761:	50                   	push   %eax
77782762:	e8 e9 1a 00 00       	call   77784250 <_HeapFree@12>
77782767:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
7778276d:	59                   	pop    %ecx
7778276e:	e9 6f ff ff ff       	jmp    777826e2 <_free_hostent+0x12>
77782773:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782779:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782780 <_gethostbyaddr@12>:

/* WinSock 1.1 compatible name resolution APIs */

/*
 * @unimplemented
 */
LPHOSTENT
EXPORT
gethostbyaddr(
    IN  CONST CHAR FAR* addr,
    IN  INT len,
    IN  INT type)
{
77782780:	55                   	push   %ebp
    UNIMPLEMENTED

    return (LPHOSTENT)NULL;
}
77782781:	31 c0                	xor    %eax,%eax
77782783:	89 e5                	mov    %esp,%ebp
77782785:	5d                   	pop    %ebp
77782786:	c2 0c 00             	ret    $0xc
77782789:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782790 <_free_servent>:

/*
  Assumes rfc 1123 - adam * 
   addr[1] = 0;
    addr[0] = inet_addr(name);
    strcpy( hostname, name );
    if(addr[0] == 0xffffffff) return NULL;
    he.h_addr_list = (void *)addr;
    he.h_name = hostname;
    he.h_aliases = NULL;
    he.h_addrtype = AF_INET;
    he.h_length = sizeof(addr);
    return &he;

<RANT>
From the MSDN Platform SDK: Windows Sockets 2
"The gethostbyname function cannot resolve IP address strings passed to it.
Such a request is treated exactly as if an unknown host name were passed."
</RANT>

Defferring to the the documented behaviour, rather than the unix behaviour
What if the hostname is in the HOSTS file? see getservbyname

 * @implemented
 */

/* DnsQuery -- lib/dnsapi/dnsapi/query.c */
   /* see ws2_32.h, winsock2.h*/
    /*getnetworkparameters - iphlp api */
/*
REFERENCES

servent -- w32api/include/winsock2.h
PWINSOCK_THREAD_BLOCK -- ws2_32.h
dllmain.c -- threadlocal memory allocation / deallocation
lib/dnsapi
      

*/
      /* lib/adns/src/adns.h XXX */


/*
struct  hostent {
        char    *h_name;
        char    **h_aliases;
        short   h_addrtype;
        short   h_length;
        char    **h_addr_list;
#define h_addr h_addr_list[0]
};
struct  servent {
        char    *s_name;
        char    **s_aliases;
        short   s_port;
        char    *s_proto;
};


struct hostent defined in w32api/include/winsock2.h
*/

void free_servent(struct servent* s) {
77782790:	55                   	push   %ebp
77782791:	89 e5                	mov    %esp,%ebp
77782793:	53                   	push   %ebx
77782794:	51                   	push   %ecx
77782795:	8b 5d 08             	mov    0x8(%ebp),%ebx
  HFREE(s->s_name);
77782798:	8b 03                	mov    (%ebx),%eax
7778279a:	85 c0                	test   %eax,%eax
7778279c:	75 21                	jne    777827bf <_free_servent+0x2f>
  char* next = s->s_aliases[0];
7778279e:	8b 43 04             	mov    0x4(%ebx),%eax
777827a1:	8b 00                	mov    (%eax),%eax
  while(next) { HFREE(next); next++; }
777827a3:	85 c0                	test   %eax,%eax
777827a5:	74 30                	je     777827d7 <_free_servent+0x47>
777827a7:	8b 1d 60 70 78 77    	mov    0x77787060,%ebx
777827ad:	52                   	push   %edx
777827ae:	50                   	push   %eax
777827af:	6a 00                	push   $0x0
777827b1:	53                   	push   %ebx
777827b2:	e8 99 1a 00 00       	call   77784250 <_HeapFree@12>
777827b7:	b8 01 00 00 00       	mov    $0x1,%eax
777827bc:	59                   	pop    %ecx
777827bd:	eb e8                	jmp    777827a7 <_free_servent+0x17>
777827bf:	52                   	push   %edx
777827c0:	50                   	push   %eax
777827c1:	a1 60 70 78 77       	mov    0x77787060,%eax
777827c6:	6a 00                	push   $0x0
777827c8:	50                   	push   %eax
777827c9:	e8 82 1a 00 00       	call   77784250 <_HeapFree@12>
777827ce:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
777827d4:	59                   	pop    %ecx
777827d5:	eb c7                	jmp    7778279e <_free_servent+0xe>
  s->s_port = 0;
  HFREE(s->s_proto);
777827d7:	8b 43 0c             	mov    0xc(%ebx),%eax
777827da:	66 c7 43 08 00 00    	movw   $0x0,0x8(%ebx)
777827e0:	85 c0                	test   %eax,%eax
777827e2:	74 17                	je     777827fb <_free_servent+0x6b>
777827e4:	52                   	push   %edx
777827e5:	50                   	push   %eax
777827e6:	a1 60 70 78 77       	mov    0x77787060,%eax
777827eb:	6a 00                	push   $0x0
777827ed:	50                   	push   %eax
777827ee:	e8 5d 1a 00 00       	call   77784250 <_HeapFree@12>
777827f3:	c7 43 0c 00 00 00 00 	movl   $0x0,0xc(%ebx)
777827fa:	58                   	pop    %eax
  HFREE(s);
777827fb:	50                   	push   %eax
777827fc:	a1 60 70 78 77       	mov    0x77787060,%eax
77782801:	53                   	push   %ebx
77782802:	6a 00                	push   $0x0
77782804:	50                   	push   %eax
77782805:	e8 46 1a 00 00       	call   77784250 <_HeapFree@12>
7778280a:	5b                   	pop    %ebx
}
7778280b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778280e:	c9                   	leave  
7778280f:	c3                   	ret    

77782810 <_gethostname@8>:


 
LPHOSTENT
EXPORT
gethostbyname(
    IN  CONST CHAR FAR* name)
{
  enum addr_type{ GH_INVALID, GH_IPV6, GH_IPV4, GH_RFC1123_DNS };
  typedef enum addr_type addr_type;
  addr_type addr;
  int ret = 0;
  char* found = 0;
  DNS_STATUS dns_status = {0};
  /* include/WinDNS.h -- look up DNS_RECORD on MSDN */
  PDNS_RECORD dp = 0;

  addr = GH_INVALID;

  PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;

  if( !p ) {
    WSASetLastError( WSANOTINITIALISED );
    return NULL;
  }

  check_hostent(&p->Hostent);   /*XXX alloc_hostent*/

  /* Hostname NULL - behave like gethostname */
  if(name == NULL) {
    ret = gethostname(p->Hostent->h_name, MAX_HOSTNAME_LEN);
    return p->Hostent;
  }

  if(ret) {
    WSASetLastError( WSAHOST_NOT_FOUND ); //WSANO_DATA  ??
    return NULL;
  }

  /* Is it an IPv6 address? */
  found = strstr(name, ":");
  if( found != NULL ) {
    addr = GH_IPV6;
    goto act;
  }

  /* Is it an IPv4 address? */
  if (!isalpha(name[0])) {
    addr = GH_IPV4;
    goto act;
  }

 addr = GH_RFC1123_DNS;

 /* Broken out in case we want to get fancy later */
 act:
    switch(addr){
      case GH_IPV6:
	WSASetLastError(STATUS_NOT_IMPLEMENTED);
	return NULL;
	break;

    case GH_INVALID:
      WSASetLastError(WSAEFAULT);
      return NULL;
      break;

    /* Note: If passed an IP address, MSDN says that gethostbyname()
             treats it as an unknown host.
       This is different from the unix implementation. Use inet_addr()
    */
    case GH_IPV4:
    case GH_RFC1123_DNS:
      /* DNS_TYPE_A: include/WinDNS.h */
      /* DnsQuery -- lib/dnsapi/dnsapi/query.c */
      dns_status = DnsQuery_A ( name, DNS_TYPE_A, DNS_QUERY_STANDARD,
				0, /* extra dns servers */ &dp, 0 );

      if(dns_status == 0) {
	//ASSERT(dp->wType == DNS_TYPE_A);
	//ASSERT(dp->wDataLength == sizeof(DNS_A_DATA));
	PDNS_RECORD curr;
	for(curr=dp;
	    curr != NULL && curr->wType != DNS_TYPE_A;
	    curr = curr->pNext ) { 
	  WS_DbgPrint(MID_TRACE,("wType: %i\n", curr->wType));
	  /*empty */ 
	}

	if(curr) {
	  WS_DbgPrint(MID_TRACE,("populating hostent\n"));
	  WS_DbgPrint(MID_TRACE,("pName is (%s)\n", curr->pName));
	  populate_hostent(p->Hostent, (PCHAR)curr->pName, curr->Data.A);
	  DnsRecordListFree(dp, DnsFreeRecordList);
	  return p->Hostent;
	} else {
	  DnsRecordListFree(dp, DnsFreeRecordList);
	}
      }

      WS_DbgPrint(MID_TRACE,("Called DnsQuery, but host not found. Err: %i\n",
			     dns_status));
      WSASetLastError(WSAHOST_NOT_FOUND);
      return NULL;
      
      break;

    default:
      WSASetLastError(WSANO_RECOVERY);
      return NULL;
      break;
    }

    WSASetLastError(WSANO_RECOVERY);
    return NULL;
}

/*
 * @implemented
 */
INT
EXPORT
gethostname(
    OUT CHAR FAR* name,
    IN  INT namelen)
{
77782810:	55                   	push   %ebp
77782811:	89 e5                	mov    %esp,%ebp
77782813:	56                   	push   %esi
77782814:	53                   	push   %ebx
77782815:	83 ec 14             	sub    $0x14,%esp
  DWORD size = namelen;
  
  int ret = GetComputerNameExA(ComputerNameDnsHostname, name, &size);
77782818:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
7778281b:	8b 75 08             	mov    0x8(%ebp),%esi
7778281e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77782821:	50                   	push   %eax
77782822:	89 5d f4             	mov    %ebx,0xfffffff4(%ebp)
77782825:	56                   	push   %esi
77782826:	6a 01                	push   $0x1
77782828:	e8 e3 1a 00 00       	call   77784310 <_GetComputerNameExA@12>
  if(ret == 0) {
7778282d:	5a                   	pop    %edx
7778282e:	85 c0                	test   %eax,%eax
77782830:	74 10                	je     77782842 <_gethostname@8+0x32>
    WSASetLastError(WSAEFAULT);
    return SOCKET_ERROR;
  } else {
    name[namelen-1] = '\0';
77782832:	c6 44 1e ff 00       	movb   $0x0,0xffffffff(%esi,%ebx,1)
    return 0;
77782837:	31 c0                	xor    %eax,%eax
  }
}
77782839:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778283c:	5b                   	pop    %ebx
7778283d:	5e                   	pop    %esi
7778283e:	5d                   	pop    %ebp
7778283f:	c2 08 00             	ret    $0x8
77782842:	83 ec 0c             	sub    $0xc,%esp
77782845:	68 1e 27 00 00       	push   $0x271e
7778284a:	e8 d1 ec ff ff       	call   77781520 <_WSASetLastError@4>
7778284f:	83 c8 ff             	or     $0xffffffff,%eax
77782852:	eb e5                	jmp    77782839 <_gethostname@8+0x29>
77782854:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
7778285a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77782860 <_gethostbyname@4>:
77782860:	55                   	push   %ebp
77782861:	89 e5                	mov    %esp,%ebp
77782863:	56                   	push   %esi
77782864:	53                   	push   %ebx
77782865:	83 ec 10             	sub    $0x10,%esp
77782868:	c7 45 f4 00 00 00 00 	movl   $0x0,0xfffffff4(%ebp)
7778286f:	8b 75 08             	mov    0x8(%ebp),%esi
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
77782872:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77782878:	8b 98 6c 0f 00 00    	mov    0xf6c(%eax),%ebx
7778287e:	85 db                	test   %ebx,%ebx
77782880:	0f 84 ed 00 00 00    	je     77782973 <_gethostbyname@4+0x113>
77782886:	83 ec 0c             	sub    $0xc,%esp
77782889:	8d 43 1c             	lea    0x1c(%ebx),%eax
7778288c:	50                   	push   %eax
7778288d:	e8 3e fd ff ff       	call   777825d0 <_check_hostent>
77782892:	83 c4 10             	add    $0x10,%esp
77782895:	85 f6                	test   %esi,%esi
77782897:	0f 84 bf 00 00 00    	je     7778295c <_gethostbyname@4+0xfc>
7778289d:	50                   	push   %eax
7778289e:	50                   	push   %eax
7778289f:	68 40 60 78 77       	push   $0x77786040
777828a4:	56                   	push   %esi
777828a5:	e8 16 19 00 00       	call   777841c0 <_strstr>
777828aa:	83 c4 10             	add    $0x10,%esp
777828ad:	85 c0                	test   %eax,%eax
777828af:	74 1f                	je     777828d0 <_gethostbyname@4+0x70>
777828b1:	83 ec 0c             	sub    $0xc,%esp
777828b4:	68 02 00 00 c0       	push   $0xc0000002
777828b9:	e8 62 ec ff ff       	call   77781520 <_WSASetLastError@4>
777828be:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777828c1:	31 c0                	xor    %eax,%eax
777828c3:	5b                   	pop    %ebx
777828c4:	5e                   	pop    %esi
777828c5:	5d                   	pop    %ebp
777828c6:	c2 04 00             	ret    $0x4
777828c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777828d0:	83 ec 0c             	sub    $0xc,%esp
777828d3:	0f be 06             	movsbl (%esi),%eax
777828d6:	50                   	push   %eax
777828d7:	e8 d4 18 00 00       	call   777841b0 <_isalpha>
777828dc:	59                   	pop    %ecx
777828dd:	58                   	pop    %eax
777828de:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777828e1:	6a 00                	push   $0x0
777828e3:	50                   	push   %eax
777828e4:	6a 00                	push   $0x0
777828e6:	6a 00                	push   $0x0
777828e8:	6a 01                	push   $0x1
777828ea:	56                   	push   %esi
777828eb:	e8 70 1a 00 00       	call   77784360 <_DnsQuery_A@24>
777828f0:	5e                   	pop    %esi
777828f1:	85 c0                	test   %eax,%eax
777828f3:	5a                   	pop    %edx
777828f4:	75 59                	jne    7778294f <_gethostbyname@4+0xef>
777828f6:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777828f9:	eb 07                	jmp    77782902 <_gethostbyname@4+0xa2>
777828fb:	90                   	nop    
777828fc:	8d 74 26 00          	lea    0x0(%esi),%esi
77782900:	8b 00                	mov    (%eax),%eax
77782902:	85 c0                	test   %eax,%eax
77782904:	74 3a                	je     77782940 <_gethostbyname@4+0xe0>
77782906:	66 83 78 08 01       	cmpw   $0x1,0x8(%eax)
7778290b:	75 f3                	jne    77782900 <_gethostbyname@4+0xa0>
7778290d:	85 c0                	test   %eax,%eax
7778290f:	74 2f                	je     77782940 <_gethostbyname@4+0xe0>
77782911:	51                   	push   %ecx
77782912:	8b 50 18             	mov    0x18(%eax),%edx
77782915:	52                   	push   %edx
77782916:	8b 70 04             	mov    0x4(%eax),%esi
77782919:	56                   	push   %esi
7778291a:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
7778291d:	51                   	push   %ecx
7778291e:	e8 1d fd ff ff       	call   77782640 <_populate_hostent>
77782923:	58                   	pop    %eax
77782924:	5a                   	pop    %edx
77782925:	6a 01                	push   $0x1
77782927:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
7778292a:	50                   	push   %eax
7778292b:	e8 40 1a 00 00       	call   77784370 <_DnsRecordListFree@8>
77782930:	8b 43 1c             	mov    0x1c(%ebx),%eax
77782933:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77782936:	5b                   	pop    %ebx
77782937:	5e                   	pop    %esi
77782938:	5d                   	pop    %ebp
77782939:	c2 04 00             	ret    $0x4
7778293c:	8d 74 26 00          	lea    0x0(%esi),%esi
77782940:	50                   	push   %eax
77782941:	50                   	push   %eax
77782942:	6a 01                	push   $0x1
77782944:	8b 75 f4             	mov    0xfffffff4(%ebp),%esi
77782947:	56                   	push   %esi
77782948:	e8 23 1a 00 00       	call   77784370 <_DnsRecordListFree@8>
7778294d:	59                   	pop    %ecx
7778294e:	5b                   	pop    %ebx
7778294f:	83 ec 0c             	sub    $0xc,%esp
77782952:	68 f9 2a 00 00       	push   $0x2af9
77782957:	e9 5d ff ff ff       	jmp    777828b9 <_gethostbyname@4+0x59>
7778295c:	50                   	push   %eax
7778295d:	50                   	push   %eax
7778295e:	68 00 01 00 00       	push   $0x100
77782963:	8b 43 1c             	mov    0x1c(%ebx),%eax
77782966:	8b 00                	mov    (%eax),%eax
77782968:	50                   	push   %eax
77782969:	e8 a2 fe ff ff       	call   77782810 <_gethostname@8>
7778296e:	8b 43 1c             	mov    0x1c(%ebx),%eax
77782971:	eb c0                	jmp    77782933 <_gethostbyname@4+0xd3>
77782973:	83 ec 0c             	sub    $0xc,%esp
77782976:	68 6d 27 00 00       	push   $0x276d
7778297b:	e9 39 ff ff ff       	jmp    777828b9 <_gethostbyname@4+0x59>

77782980 <_getprotobyname@4>:


/*
 * XXX arty -- Partial implementation pending a better one.  This one will
 * do for normal purposes.#include <ws2_32.h>
 *
 * Return the address of a static LPPROTOENT corresponding to the named
 * protocol.  These structs aren't very interesting, so I'm not too ashamed
 * to have this function work on builtins for now.
 *
 * @unimplemented
 */
LPPROTOENT
EXPORT
getprotobyname(
    IN  CONST CHAR FAR* name)
{
77782980:	55                   	push   %ebp
77782981:	89 e5                	mov    %esp,%ebp
77782983:	53                   	push   %ebx
77782984:	83 ec 0c             	sub    $0xc,%esp
77782987:	8b 5d 08             	mov    0x8(%ebp),%ebx
    static CHAR *udp_aliases = 0;
    static PROTOENT udp = { "udp", &udp_aliases, 17 };
    static CHAR *tcp_aliases = 0;
    static PROTOENT tcp = { "tcp", &tcp_aliases, 6 };
    if( !_stricmp( name, "udp" ) ) {
7778298a:	68 42 60 78 77       	push   $0x77786042
7778298f:	53                   	push   %ebx
77782990:	e8 4b 18 00 00       	call   777841e0 <__stricmp>
77782995:	83 c4 10             	add    $0x10,%esp
	return &udp;
77782998:	ba 00 50 78 77       	mov    $0x77785000,%edx
7778299d:	85 c0                	test   %eax,%eax
7778299f:	75 0f                	jne    777829b0 <_getprotobyname@4+0x30>
    } else if( !_stricmp( name, "tcp" ) ) {
	return &tcp;
    }
    
    return 0;
}
777829a1:	89 d0                	mov    %edx,%eax
777829a3:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777829a6:	c9                   	leave  
777829a7:	c2 04 00             	ret    $0x4
777829aa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777829b0:	50                   	push   %eax
777829b1:	50                   	push   %eax
777829b2:	68 46 60 78 77       	push   $0x77786046
777829b7:	53                   	push   %ebx
777829b8:	e8 23 18 00 00       	call   777841e0 <__stricmp>
777829bd:	83 c4 10             	add    $0x10,%esp
777829c0:	ba 0c 50 78 77       	mov    $0x7778500c,%edx
777829c5:	85 c0                	test   %eax,%eax
777829c7:	74 d8                	je     777829a1 <_getprotobyname@4+0x21>
777829c9:	31 d2                	xor    %edx,%edx
777829cb:	eb d4                	jmp    777829a1 <_getprotobyname@4+0x21>
777829cd:	8d 76 00             	lea    0x0(%esi),%esi

777829d0 <_getprotobynumber@4>:

/*
 * @unimplemented
 */
LPPROTOENT
EXPORT
getprotobynumber(
    IN  INT number)
{
777829d0:	55                   	push   %ebp
    UNIMPLEMENTED

    return (LPPROTOENT)NULL;
}
777829d1:	31 c0                	xor    %eax,%eax
777829d3:	89 e5                	mov    %esp,%ebp
777829d5:	5d                   	pop    %ebp
777829d6:	c2 04 00             	ret    $0x4
777829d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777829e0 <_DecodeServEntFromString>:

#define SKIPWS(ptr,act) \
{while(*ptr && isspace(*ptr)) ptr++; if(!*ptr) act;}
#define SKIPANDMARKSTR(ptr,act) \
{while(*ptr && !isspace(*ptr)) ptr++; \
 if(!*ptr) {act;} else { *ptr = 0; ptr++; }}
 

static BOOL DecodeServEntFromString( IN  PCHAR ServiceString,
				     OUT PCHAR *ServiceName,
				     OUT PCHAR *PortNumberStr,
				     OUT PCHAR *ProtocolStr,
				     IN  PCHAR *Aliases,
				     IN  DWORD MaxAlias ) {
777829e0:	55                   	push   %ebp
777829e1:	89 e5                	mov    %esp,%ebp
777829e3:	57                   	push   %edi
777829e4:	56                   	push   %esi
777829e5:	53                   	push   %ebx
777829e6:	83 ec 0c             	sub    $0xc,%esp
777829e9:	89 c3                	mov    %eax,%ebx
777829eb:	89 d6                	mov    %edx,%esi
777829ed:	8b 7d 10             	mov    0x10(%ebp),%edi
    UINT NAliases = 0;
777829f0:	c7 45 f0 00 00 00 00 	movl   $0x0,0xfffffff0(%ebp)
777829f7:	eb 1b                	jmp    77782a14 <_DecodeServEntFromString+0x34>
777829f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

    WS_DbgPrint(MAX_TRACE, ("Parsing service ent [%s]\n", ServiceString));

    SKIPWS(ServiceString, return FALSE);
77782a00:	83 ec 0c             	sub    $0xc,%esp
77782a03:	0f be c0             	movsbl %al,%eax
77782a06:	50                   	push   %eax
77782a07:	e8 94 17 00 00       	call   777841a0 <_isspace>
77782a0c:	83 c4 10             	add    $0x10,%esp
77782a0f:	85 c0                	test   %eax,%eax
77782a11:	74 11                	je     77782a24 <_DecodeServEntFromString+0x44>
77782a13:	43                   	inc    %ebx
77782a14:	8a 03                	mov    (%ebx),%al
77782a16:	84 c0                	test   %al,%al
77782a18:	75 e6                	jne    77782a00 <_DecodeServEntFromString+0x20>
    *ServiceName = ServiceString;
    SKIPANDMARKSTR(ServiceString, return FALSE);
    SKIPWS(ServiceString, return FALSE);
77782a1a:	31 c0                	xor    %eax,%eax
    *PortNumberStr = ServiceString;
    SKIPANDMARKSTR(ServiceString, ;);

    while( *ServiceString && NAliases < MaxAlias - 1 ) {
	SKIPWS(ServiceString, break);
	if( *ServiceString ) {
	    SKIPANDMARKSTR(ServiceString, ;);
	    if( strlen(ServiceString) ) {
		WS_DbgPrint(MAX_TRACE, ("Alias: %s\n", ServiceString));
		*Aliases++ = ServiceString;
		NAliases++;
	    }
	}
    }
    *Aliases = NULL;

    *ProtocolStr = strchr(*PortNumberStr,'/');
    if( !*ProtocolStr ) return FALSE;
    **ProtocolStr = 0; (*ProtocolStr)++;

    WS_DbgPrint(MAX_TRACE, ("Parsing done: %s %s %s %d\n",
			    *ServiceName, *ProtocolStr, *PortNumberStr,
			    NAliases));

    return TRUE;
}
77782a1c:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77782a1f:	5b                   	pop    %ebx
77782a20:	5e                   	pop    %esi
77782a21:	5f                   	pop    %edi
77782a22:	5d                   	pop    %ebp
77782a23:	c3                   	ret    
77782a24:	80 3b 00             	cmpb   $0x0,(%ebx)
77782a27:	74 f1                	je     77782a1a <_DecodeServEntFromString+0x3a>
77782a29:	89 1e                	mov    %ebx,(%esi)
77782a2b:	eb 17                	jmp    77782a44 <_DecodeServEntFromString+0x64>
77782a2d:	8d 76 00             	lea    0x0(%esi),%esi
77782a30:	83 ec 0c             	sub    $0xc,%esp
77782a33:	0f be c0             	movsbl %al,%eax
77782a36:	50                   	push   %eax
77782a37:	e8 64 17 00 00       	call   777841a0 <_isspace>
77782a3c:	83 c4 10             	add    $0x10,%esp
77782a3f:	85 c0                	test   %eax,%eax
77782a41:	75 09                	jne    77782a4c <_DecodeServEntFromString+0x6c>
77782a43:	43                   	inc    %ebx
77782a44:	8a 03                	mov    (%ebx),%al
77782a46:	84 c0                	test   %al,%al
77782a48:	75 e6                	jne    77782a30 <_DecodeServEntFromString+0x50>
77782a4a:	eb ce                	jmp    77782a1a <_DecodeServEntFromString+0x3a>
77782a4c:	80 3b 00             	cmpb   $0x0,(%ebx)
77782a4f:	74 c9                	je     77782a1a <_DecodeServEntFromString+0x3a>
77782a51:	c6 03 00             	movb   $0x0,(%ebx)
77782a54:	eb 13                	jmp    77782a69 <_DecodeServEntFromString+0x89>
77782a56:	83 ec 0c             	sub    $0xc,%esp
77782a59:	0f be c0             	movsbl %al,%eax
77782a5c:	50                   	push   %eax
77782a5d:	e8 3e 17 00 00       	call   777841a0 <_isspace>
77782a62:	83 c4 10             	add    $0x10,%esp
77782a65:	85 c0                	test   %eax,%eax
77782a67:	74 09                	je     77782a72 <_DecodeServEntFromString+0x92>
77782a69:	43                   	inc    %ebx
77782a6a:	8a 03                	mov    (%ebx),%al
77782a6c:	84 c0                	test   %al,%al
77782a6e:	75 e6                	jne    77782a56 <_DecodeServEntFromString+0x76>
77782a70:	eb a8                	jmp    77782a1a <_DecodeServEntFromString+0x3a>
77782a72:	80 3b 00             	cmpb   $0x0,(%ebx)
77782a75:	74 a3                	je     77782a1a <_DecodeServEntFromString+0x3a>
77782a77:	8b 45 08             	mov    0x8(%ebp),%eax
77782a7a:	89 18                	mov    %ebx,(%eax)
77782a7c:	eb 14                	jmp    77782a92 <_DecodeServEntFromString+0xb2>
77782a7e:	83 ec 0c             	sub    $0xc,%esp
77782a81:	0f be c0             	movsbl %al,%eax
77782a84:	50                   	push   %eax
77782a85:	e8 16 17 00 00       	call   777841a0 <_isspace>
77782a8a:	83 c4 10             	add    $0x10,%esp
77782a8d:	85 c0                	test   %eax,%eax
77782a8f:	75 45                	jne    77782ad6 <_DecodeServEntFromString+0xf6>
77782a91:	43                   	inc    %ebx
77782a92:	8a 03                	mov    (%ebx),%al
77782a94:	84 c0                	test   %al,%al
77782a96:	75 e6                	jne    77782a7e <_DecodeServEntFromString+0x9e>
77782a98:	8b 45 08             	mov    0x8(%ebp),%eax
77782a9b:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
77782aa1:	53                   	push   %ebx
77782aa2:	53                   	push   %ebx
77782aa3:	6a 2f                	push   $0x2f
77782aa5:	8b 08                	mov    (%eax),%ecx
77782aa7:	51                   	push   %ecx
77782aa8:	e8 d3 16 00 00       	call   77784180 <_strchr>
77782aad:	89 c2                	mov    %eax,%edx
77782aaf:	8b 45 0c             	mov    0xc(%ebp),%eax
77782ab2:	83 c4 10             	add    $0x10,%esp
77782ab5:	89 10                	mov    %edx,(%eax)
77782ab7:	31 c0                	xor    %eax,%eax
77782ab9:	85 d2                	test   %edx,%edx
77782abb:	0f 84 5b ff ff ff    	je     77782a1c <_DecodeServEntFromString+0x3c>
77782ac1:	c6 02 00             	movb   $0x0,(%edx)
77782ac4:	8b 45 0c             	mov    0xc(%ebp),%eax
77782ac7:	8b 10                	mov    (%eax),%edx
77782ac9:	42                   	inc    %edx
77782aca:	89 10                	mov    %edx,(%eax)
77782acc:	b8 01 00 00 00       	mov    $0x1,%eax
77782ad1:	e9 46 ff ff ff       	jmp    77782a1c <_DecodeServEntFromString+0x3c>
77782ad6:	80 3b 00             	cmpb   $0x0,(%ebx)
77782ad9:	74 bd                	je     77782a98 <_DecodeServEntFromString+0xb8>
77782adb:	c6 03 00             	movb   $0x0,(%ebx)
77782ade:	43                   	inc    %ebx
77782adf:	8a 03                	mov    (%ebx),%al
77782ae1:	84 c0                	test   %al,%al
77782ae3:	74 b3                	je     77782a98 <_DecodeServEntFromString+0xb8>
77782ae5:	8b 75 14             	mov    0x14(%ebp),%esi
77782ae8:	4e                   	dec    %esi
77782ae9:	83 fe 00             	cmp    $0x0,%esi
77782aec:	76 aa                	jbe    77782a98 <_DecodeServEntFromString+0xb8>
77782aee:	84 c0                	test   %al,%al
77782af0:	74 a6                	je     77782a98 <_DecodeServEntFromString+0xb8>
77782af2:	83 ec 0c             	sub    $0xc,%esp
77782af5:	0f be c0             	movsbl %al,%eax
77782af8:	50                   	push   %eax
77782af9:	e8 a2 16 00 00       	call   777841a0 <_isspace>
77782afe:	83 c4 10             	add    $0x10,%esp
77782b01:	85 c0                	test   %eax,%eax
77782b03:	75 4b                	jne    77782b50 <_DecodeServEntFromString+0x170>
77782b05:	8a 03                	mov    (%ebx),%al
77782b07:	84 c0                	test   %al,%al
77782b09:	74 8d                	je     77782a98 <_DecodeServEntFromString+0xb8>
77782b0b:	83 ec 0c             	sub    $0xc,%esp
77782b0e:	0f be c0             	movsbl %al,%eax
77782b11:	50                   	push   %eax
77782b12:	e8 89 16 00 00       	call   777841a0 <_isspace>
77782b17:	83 c4 10             	add    $0x10,%esp
77782b1a:	85 c0                	test   %eax,%eax
77782b1c:	75 37                	jne    77782b55 <_DecodeServEntFromString+0x175>
77782b1e:	43                   	inc    %ebx
77782b1f:	8a 03                	mov    (%ebx),%al
77782b21:	84 c0                	test   %al,%al
77782b23:	75 e6                	jne    77782b0b <_DecodeServEntFromString+0x12b>
77782b25:	83 ec 0c             	sub    $0xc,%esp
77782b28:	53                   	push   %ebx
77782b29:	e8 62 16 00 00       	call   77784190 <_strlen>
77782b2e:	83 c4 10             	add    $0x10,%esp
77782b31:	85 c0                	test   %eax,%eax
77782b33:	74 0c                	je     77782b41 <_DecodeServEntFromString+0x161>
77782b35:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77782b38:	89 1f                	mov    %ebx,(%edi)
77782b3a:	40                   	inc    %eax
77782b3b:	83 c7 04             	add    $0x4,%edi
77782b3e:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77782b41:	8a 03                	mov    (%ebx),%al
77782b43:	84 c0                	test   %al,%al
77782b45:	0f 84 4d ff ff ff    	je     77782a98 <_DecodeServEntFromString+0xb8>
77782b4b:	3b 75 f0             	cmp    0xfffffff0(%ebp),%esi
77782b4e:	eb 9c                	jmp    77782aec <_DecodeServEntFromString+0x10c>
77782b50:	43                   	inc    %ebx
77782b51:	8a 03                	mov    (%ebx),%al
77782b53:	eb 99                	jmp    77782aee <_DecodeServEntFromString+0x10e>
77782b55:	80 3b 00             	cmpb   $0x0,(%ebx)
77782b58:	74 cb                	je     77782b25 <_DecodeServEntFromString+0x145>
77782b5a:	c6 03 00             	movb   $0x0,(%ebx)
77782b5d:	43                   	inc    %ebx
77782b5e:	eb c5                	jmp    77782b25 <_DecodeServEntFromString+0x145>

77782b60 <_getservbyname@8>:

#define ADJ_PTR(p,b1,b2) p = (p - b1) + b2

/*
 * @implemented
 */
LPSERVENT
EXPORT
getservbyname(

    IN  CONST CHAR FAR* name, 
    IN  CONST CHAR FAR* proto)
{
77782b60:	55                   	push   %ebp
77782b61:	89 e5                	mov    %esp,%ebp
77782b63:	57                   	push   %edi
77782b64:	56                   	push   %esi
77782b65:	53                   	push   %ebx
77782b66:	81 ec 80 04 00 00    	sub    $0x480,%esp
    BOOL  Found = FALSE;
    HANDLE ServicesFile;
    CHAR ServiceDBData[BUFSIZ] = { 0 };
77782b6c:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782b72:	c7 85 94 fb ff ff 00 	movl   $0x0,0xfffffb94(%ebp)
77782b79:	00 00 00 
    PCHAR SystemDirectory = ServiceDBData; /* Reuse this stack space */
    PCHAR ServicesFileLocation = "\\drivers\\etc\\services";
    PCHAR ThisLine = 0, NextLine = 0, ServiceName = 0, PortNumberStr = 0, 
	ProtocolStr = 0, Comment = 0;
    PCHAR Aliases[WS2_INTERNAL_MAX_ALIAS] = { 0 };
77782b7c:	8d bd a8 fb ff ff    	lea    0xfffffba8(%ebp),%edi
77782b82:	68 00 04 00 00       	push   $0x400
77782b87:	6a 00                	push   $0x0
77782b89:	50                   	push   %eax
77782b8a:	e8 21 15 00 00       	call   777840b0 <_memset>
77782b8f:	fc                   	cld    
77782b90:	31 c0                	xor    %eax,%eax
77782b92:	b9 10 00 00 00       	mov    $0x10,%ecx
77782b97:	c7 85 9c fb ff ff 00 	movl   $0x0,0xfffffb9c(%ebp)
77782b9e:	00 00 00 
77782ba1:	c7 85 a0 fb ff ff 00 	movl   $0x0,0xfffffba0(%ebp)
77782ba8:	00 00 00 
77782bab:	c7 85 a4 fb ff ff 00 	movl   $0x0,0xfffffba4(%ebp)
77782bb2:	00 00 00 
77782bb5:	c7 85 8c fb ff ff 00 	movl   $0x0,0xfffffb8c(%ebp)
77782bbc:	00 00 00 
77782bbf:	f3 ab                	repz stos %eax,%es:(%edi)
77782bc1:	31 f6                	xor    %esi,%esi
    UINT i,SizeNeeded = 0, 
77782bc3:	c7 85 88 fb ff ff 00 	movl   $0x0,0xfffffb88(%ebp)
77782bca:	00 00 00 
	SystemDirSize = sizeof(ServiceDBData) - 1;
    DWORD ReadSize = 0, ValidData = 0;
77782bcd:	c7 85 98 fb ff ff 00 	movl   $0x0,0xfffffb98(%ebp)
77782bd4:	00 00 00 
77782bd7:	31 ff                	xor    %edi,%edi
    return ret;
}

static __inline__ struct _TEB * NtCurrentTeb(void)
{
77782bd9:	83 c4 10             	add    $0x10,%esp
    struct _TEB *ret;

    __asm__ __volatile__ (
77782bdc:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77782be2:	8b 80 6c 0f 00 00    	mov    0xf6c(%eax),%eax
77782be8:	89 85 84 fb ff ff    	mov    %eax,0xfffffb84(%ebp)
    PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
    
    if( !p ) {
77782bee:	85 c0                	test   %eax,%eax
77782bf0:	0f 84 77 03 00 00    	je     77782f6d <_getservbyname@8+0x40d>
	WSASetLastError( WSANOTINITIALISED );
	return NULL;
    }

    if( !name ) {
77782bf6:	8b 45 08             	mov    0x8(%ebp),%eax
77782bf9:	85 c0                	test   %eax,%eax
77782bfb:	0f 84 3f 03 00 00    	je     77782f40 <_getservbyname@8+0x3e0>
	WSASetLastError( WSANO_RECOVERY );
	return NULL;
    }
    
    if( !GetSystemDirectoryA( SystemDirectory, SystemDirSize ) ) {
77782c01:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77782c07:	53                   	push   %ebx
77782c08:	53                   	push   %ebx
77782c09:	68 ff 03 00 00       	push   $0x3ff
77782c0e:	52                   	push   %edx
77782c0f:	e8 0c 17 00 00       	call   77784320 <_GetSystemDirectoryA@8>
77782c14:	5a                   	pop    %edx
77782c15:	85 c0                	test   %eax,%eax
77782c17:	59                   	pop    %ecx
77782c18:	0f 84 22 03 00 00    	je     77782f40 <_getservbyname@8+0x3e0>
	WSASetLastError( WSANO_RECOVERY );
	WS_DbgPrint(MIN_TRACE, ("Could not get windows system directory.\n"));
	return NULL; /* Can't get system directory */
    }
    
    strncat( SystemDirectory, ServicesFileLocation, SystemDirSize );
77782c1e:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782c24:	53                   	push   %ebx
77782c25:	68 ff 03 00 00       	push   $0x3ff
77782c2a:	68 4a 60 78 77       	push   $0x7778604a
77782c2f:	50                   	push   %eax
77782c30:	e8 3b 15 00 00       	call   77784170 <_strncat>

    ServicesFile = CreateFileA( SystemDirectory,
77782c35:	83 c4 0c             	add    $0xc,%esp
77782c38:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77782c3e:	6a 00                	push   $0x0
77782c40:	68 80 00 00 08       	push   $0x8000080
77782c45:	6a 03                	push   $0x3
77782c47:	6a 00                	push   $0x0
77782c49:	6a 01                	push   $0x1
77782c4b:	68 00 00 00 80       	push   $0x80000000
77782c50:	52                   	push   %edx
77782c51:	e8 da 16 00 00       	call   77784330 <_CreateFileA@28>
77782c56:	89 85 90 fb ff ff    	mov    %eax,0xfffffb90(%ebp)
				GENERIC_READ,
				FILE_SHARE_READ,
				NULL,
				OPEN_EXISTING,
				FILE_ATTRIBUTE_NORMAL | 
				FILE_FLAG_SEQUENTIAL_SCAN,
				NULL );

    if( ServicesFile == INVALID_HANDLE_VALUE ) {
77782c5c:	40                   	inc    %eax
77782c5d:	59                   	pop    %ecx
77782c5e:	0f 84 dc 02 00 00    	je     77782f40 <_getservbyname@8+0x3e0>
	WSASetLastError( WSANO_RECOVERY );
	return NULL;
    }

    /* Scan the services file ... 
     *
     * We will read up to BUFSIZ bytes per pass, until the buffer does not
     * contain a full line, then we will try to read more.
     *
     * We fall from the loop if the buffer does not have a line terminator.
     */

    /* Initial Read */
    while( !Found &&
	   ReadFile( ServicesFile, ServiceDBData + ValidData,
		     sizeof( ServiceDBData ) - ValidData,
		     &ReadSize, NULL ) ) {
	ValidData += ReadSize;
	ReadSize = 0;
	NextLine = ThisLine = ServiceDBData;

	/* Find the beginning of the next line */
	while( NextLine < ServiceDBData + ValidData &&
	       *NextLine != '\r' && *NextLine != '\n' ) NextLine++;
	
	/* Zero and skip, so we can treat what we have as a string */
	if( NextLine >= ServiceDBData + ValidData ) 
	    break;

	*NextLine = 0; NextLine++;

	Comment = strchr( ThisLine, '#' );
	if( Comment ) *Comment = 0; /* Terminate at comment start */

	if( DecodeServEntFromString( ThisLine, 
				     &ServiceName, 
				     &PortNumberStr,
				     &ProtocolStr,
				     Aliases,
				     WS2_INTERNAL_MAX_ALIAS ) &&
	    !strcmp( ServiceName, name ) &&
	    (proto ? !strcmp( ProtocolStr, proto ) : TRUE) ) {

	    WS_DbgPrint(MAX_TRACE,("Found the service entry.\n"));
	    Found = TRUE;
	    SizeNeeded = sizeof(WINSOCK_GETSERVBYNAME_CACHE) + 
		(NextLine - ThisLine);
	    break;
	}

	/* Get rid of everything we read so far */
	while( NextLine <= ServiceDBData + ValidData &&
	       isspace( *NextLine ) ) NextLine++;

	WS_DbgPrint(MAX_TRACE,("About to move %d chars\n", 
			       ServiceDBData + ValidData - NextLine));

	memmove( ServiceDBData, NextLine, 
		 ServiceDBData + ValidData - NextLine );
	ValidData -= NextLine - ServiceDBData;
77782c64:	83 ec 0c             	sub    $0xc,%esp
77782c67:	8d 85 98 fb ff ff    	lea    0xfffffb98(%ebp),%eax
77782c6d:	6a 00                	push   $0x0
77782c6f:	50                   	push   %eax
77782c70:	b8 00 04 00 00       	mov    $0x400,%eax
77782c75:	29 f8                	sub    %edi,%eax
77782c77:	50                   	push   %eax
77782c78:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782c7e:	01 f8                	add    %edi,%eax
77782c80:	50                   	push   %eax
77782c81:	8b 85 90 fb ff ff    	mov    0xfffffb90(%ebp),%eax
77782c87:	50                   	push   %eax
77782c88:	e8 b3 16 00 00       	call   77784340 <_ReadFile@20>
77782c8d:	83 c4 0c             	add    $0xc,%esp
77782c90:	85 c0                	test   %eax,%eax
77782c92:	0f 84 42 01 00 00    	je     77782dda <_getservbyname@8+0x27a>
77782c98:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782c9e:	8b 95 98 fb ff ff    	mov    0xfffffb98(%ebp),%edx
77782ca4:	01 d7                	add    %edx,%edi
77782ca6:	89 c2                	mov    %eax,%edx
77782ca8:	01 fa                	add    %edi,%edx
77782caa:	c7 85 98 fb ff ff 00 	movl   $0x0,0xfffffb98(%ebp)
77782cb1:	00 00 00 
77782cb4:	89 85 8c fb ff ff    	mov    %eax,0xfffffb8c(%ebp)
77782cba:	89 c6                	mov    %eax,%esi
77782cbc:	39 c2                	cmp    %eax,%edx
77782cbe:	76 20                	jbe    77782ce0 <_getservbyname@8+0x180>
77782cc0:	8a 85 e8 fb ff ff    	mov    0xfffffbe8(%ebp),%al
77782cc6:	3c 0d                	cmp    $0xd,%al
77782cc8:	74 16                	je     77782ce0 <_getservbyname@8+0x180>
77782cca:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782cd0:	3c 0a                	cmp    $0xa,%al
77782cd2:	74 0c                	je     77782ce0 <_getservbyname@8+0x180>
77782cd4:	46                   	inc    %esi
77782cd5:	39 f2                	cmp    %esi,%edx
77782cd7:	76 07                	jbe    77782ce0 <_getservbyname@8+0x180>
77782cd9:	8a 06                	mov    (%esi),%al
77782cdb:	3c 0d                	cmp    $0xd,%al
77782cdd:	75 f1                	jne    77782cd0 <_getservbyname@8+0x170>
77782cdf:	90                   	nop    
77782ce0:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782ce6:	01 f8                	add    %edi,%eax
77782ce8:	39 f0                	cmp    %esi,%eax
77782cea:	0f 86 ea 00 00 00    	jbe    77782dda <_getservbyname@8+0x27a>
77782cf0:	c6 06 00             	movb   $0x0,(%esi)
77782cf3:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77782cf9:	50                   	push   %eax
77782cfa:	50                   	push   %eax
77782cfb:	6a 23                	push   $0x23
77782cfd:	52                   	push   %edx
77782cfe:	e8 7d 14 00 00       	call   77784180 <_strchr>
77782d03:	46                   	inc    %esi
77782d04:	83 c4 10             	add    $0x10,%esp
77782d07:	85 c0                	test   %eax,%eax
77782d09:	74 03                	je     77782d0e <_getservbyname@8+0x1ae>
77782d0b:	c6 00 00             	movb   $0x0,(%eax)
77782d0e:	8d 85 a8 fb ff ff    	lea    0xfffffba8(%ebp),%eax
77782d14:	6a 10                	push   $0x10
77782d16:	50                   	push   %eax
77782d17:	8d 85 a4 fb ff ff    	lea    0xfffffba4(%ebp),%eax
77782d1d:	50                   	push   %eax
77782d1e:	8d 85 a0 fb ff ff    	lea    0xfffffba0(%ebp),%eax
77782d24:	50                   	push   %eax
77782d25:	8d 95 9c fb ff ff    	lea    0xfffffb9c(%ebp),%edx
77782d2b:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782d31:	e8 aa fc ff ff       	call   777829e0 <_DecodeServEntFromString>
77782d36:	83 c4 10             	add    $0x10,%esp
77782d39:	85 c0                	test   %eax,%eax
77782d3b:	74 39                	je     77782d76 <_getservbyname@8+0x216>
77782d3d:	50                   	push   %eax
77782d3e:	50                   	push   %eax
77782d3f:	8b 45 08             	mov    0x8(%ebp),%eax
77782d42:	50                   	push   %eax
77782d43:	8b 85 9c fb ff ff    	mov    0xfffffb9c(%ebp),%eax
77782d49:	50                   	push   %eax
77782d4a:	e8 11 14 00 00       	call   77784160 <_strcmp>
77782d4f:	83 c4 10             	add    $0x10,%esp
77782d52:	85 c0                	test   %eax,%eax
77782d54:	75 20                	jne    77782d76 <_getservbyname@8+0x216>
77782d56:	8b 45 0c             	mov    0xc(%ebp),%eax
77782d59:	85 c0                	test   %eax,%eax
77782d5b:	74 60                	je     77782dbd <_getservbyname@8+0x25d>
77782d5d:	50                   	push   %eax
77782d5e:	50                   	push   %eax
77782d5f:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77782d62:	53                   	push   %ebx
77782d63:	8b 8d a4 fb ff ff    	mov    0xfffffba4(%ebp),%ecx
77782d69:	51                   	push   %ecx
77782d6a:	e8 f1 13 00 00       	call   77784160 <_strcmp>
77782d6f:	83 c4 10             	add    $0x10,%esp
77782d72:	85 c0                	test   %eax,%eax
77782d74:	74 47                	je     77782dbd <_getservbyname@8+0x25d>
77782d76:	8d 9d e8 fb ff ff    	lea    0xfffffbe8(%ebp),%ebx
77782d7c:	01 fb                	add    %edi,%ebx
77782d7e:	eb 14                	jmp    77782d94 <_getservbyname@8+0x234>
77782d80:	83 ec 0c             	sub    $0xc,%esp
77782d83:	0f be 06             	movsbl (%esi),%eax
77782d86:	50                   	push   %eax
77782d87:	e8 14 14 00 00       	call   777841a0 <_isspace>
77782d8c:	83 c4 10             	add    $0x10,%esp
77782d8f:	85 c0                	test   %eax,%eax
77782d91:	74 05                	je     77782d98 <_getservbyname@8+0x238>
77782d93:	46                   	inc    %esi
77782d94:	39 f3                	cmp    %esi,%ebx
77782d96:	73 e8                	jae    77782d80 <_getservbyname@8+0x220>
77782d98:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782d9e:	29 f3                	sub    %esi,%ebx
77782da0:	52                   	push   %edx
77782da1:	53                   	push   %ebx
77782da2:	56                   	push   %esi
77782da3:	50                   	push   %eax
77782da4:	e8 a7 13 00 00       	call   77784150 <_memmove>
77782da9:	89 f0                	mov    %esi,%eax
77782dab:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77782db1:	29 d0                	sub    %edx,%eax
77782db3:	83 c4 10             	add    $0x10,%esp
77782db6:	29 c7                	sub    %eax,%edi
77782db8:	e9 a7 fe ff ff       	jmp    77782c64 <_getservbyname@8+0x104>
77782dbd:	89 f0                	mov    %esi,%eax
77782dbf:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77782dc5:	29 d0                	sub    %edx,%eax
77782dc7:	c7 85 94 fb ff ff 01 	movl   $0x1,0xfffffb94(%ebp)
77782dce:	00 00 00 
77782dd1:	83 c0 58             	add    $0x58,%eax
77782dd4:	89 85 88 fb ff ff    	mov    %eax,0xfffffb88(%ebp)
	WS_DbgPrint(MAX_TRACE,("Valid bytes: %d\n", ValidData));
    }

    /* This we'll do no matter what */
    CloseHandle( ServicesFile );
77782dda:	83 ec 0c             	sub    $0xc,%esp
77782ddd:	8b 85 90 fb ff ff    	mov    0xfffffb90(%ebp),%eax
77782de3:	50                   	push   %eax
77782de4:	e8 a7 14 00 00       	call   77784290 <_CloseHandle@4>
    
    if( !Found ) {
77782de9:	8b 85 94 fb ff ff    	mov    0xfffffb94(%ebp),%eax
77782def:	83 c4 0c             	add    $0xc,%esp
77782df2:	85 c0                	test   %eax,%eax
77782df4:	0f 84 5f 01 00 00    	je     77782f59 <_getservbyname@8+0x3f9>
	WS_DbgPrint(MAX_TRACE,("Not found\n"));
	WSASetLastError( WSANO_DATA );
	return NULL;
    }
    
    if( !p->Getservbyname || p->Getservbyname->Size < SizeNeeded ) {
77782dfa:	8b 85 84 fb ff ff    	mov    0xfffffb84(%ebp),%eax
77782e00:	8b 48 14             	mov    0x14(%eax),%ecx
77782e03:	85 c9                	test   %ecx,%ecx
77782e05:	74 1a                	je     77782e21 <_getservbyname@8+0x2c1>
77782e07:	8b 95 88 fb ff ff    	mov    0xfffffb88(%ebp),%edx
77782e0d:	39 11                	cmp    %edx,(%ecx)
77782e0f:	73 42                	jae    77782e53 <_getservbyname@8+0x2f3>
	/* Free previous getservbyname buffer, allocate bigger */
	if( p->Getservbyname ) 
	    HeapFree(GlobalHeap, 0, p->Getservbyname);
77782e11:	50                   	push   %eax
77782e12:	51                   	push   %ecx
77782e13:	6a 00                	push   $0x0
77782e15:	a1 60 70 78 77       	mov    0x77787060,%eax
77782e1a:	50                   	push   %eax
77782e1b:	e8 30 14 00 00       	call   77784250 <_HeapFree@12>
77782e20:	58                   	pop    %eax
	p->Getservbyname = HeapAlloc(GlobalHeap, 0, SizeNeeded);
77782e21:	57                   	push   %edi
77782e22:	8b 9d 88 fb ff ff    	mov    0xfffffb88(%ebp),%ebx
77782e28:	53                   	push   %ebx
77782e29:	6a 00                	push   $0x0
77782e2b:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
77782e31:	51                   	push   %ecx
77782e32:	e8 b9 13 00 00       	call   777841f0 <_HeapAlloc@12>
77782e37:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
	if( !p->Getservbyname ) {
77782e3d:	85 c0                	test   %eax,%eax
77782e3f:	89 42 14             	mov    %eax,0x14(%edx)
77782e42:	5a                   	pop    %edx
77782e43:	0f 84 1a 01 00 00    	je     77782f63 <_getservbyname@8+0x403>
	    WS_DbgPrint(MIN_TRACE,("Couldn't allocate %d bytes\n", 
				   SizeNeeded));
	    WSASetLastError( WSATRY_AGAIN );
	    return NULL;
	}
	p->Getservbyname->Size = SizeNeeded;
77782e49:	8b 95 88 fb ff ff    	mov    0xfffffb88(%ebp),%edx
77782e4f:	89 c1                	mov    %eax,%ecx
77782e51:	89 10                	mov    %edx,(%eax)
    }

    /* Copy the data */
    memmove( p->Getservbyname->Data, 
77782e53:	50                   	push   %eax
77782e54:	8b 85 8c fb ff ff    	mov    0xfffffb8c(%ebp),%eax
77782e5a:	29 c6                	sub    %eax,%esi
77782e5c:	56                   	push   %esi
77782e5d:	8b 85 8c fb ff ff    	mov    0xfffffb8c(%ebp),%eax
77782e63:	50                   	push   %eax
77782e64:	8d 41 54             	lea    0x54(%ecx),%eax
77782e67:	50                   	push   %eax
77782e68:	e8 e3 12 00 00       	call   77784150 <_memmove>
	     ThisLine,
	     NextLine - ThisLine );

    ADJ_PTR(ServiceName,ThisLine,p->Getservbyname->Data);
77782e6d:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
77782e73:	8b 85 9c fb ff ff    	mov    0xfffffb9c(%ebp),%eax
77782e79:	8b bd 8c fb ff ff    	mov    0xfffffb8c(%ebp),%edi
    ADJ_PTR(ProtocolStr,ThisLine,p->Getservbyname->Data);
77782e7f:	8b b5 8c fb ff ff    	mov    0xfffffb8c(%ebp),%esi
77782e85:	8b 4a 14             	mov    0x14(%edx),%ecx
77782e88:	29 f8                	sub    %edi,%eax
    WS_DbgPrint(MAX_TRACE,
		("ServiceName: %s, Protocol: %s\n", ServiceName, ProtocolStr));
		
    for( i = 0; Aliases[i]; i++ ) {
77782e8a:	31 d2                	xor    %edx,%edx
77782e8c:	83 c4 10             	add    $0x10,%esp
77782e8f:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
77782e93:	89 85 9c fb ff ff    	mov    %eax,0xfffffb9c(%ebp)
77782e99:	8b 85 a4 fb ff ff    	mov    0xfffffba4(%ebp),%eax
77782e9f:	29 f0                	sub    %esi,%eax
77782ea1:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
77782ea5:	89 85 a4 fb ff ff    	mov    %eax,0xfffffba4(%ebp)
77782eab:	8b 85 a8 fb ff ff    	mov    0xfffffba8(%ebp),%eax
77782eb1:	eb 1b                	jmp    77782ece <_getservbyname@8+0x36e>
	ADJ_PTR(Aliases[i],ThisLine,p->Getservbyname->Data);
77782eb3:	8b 9d 8c fb ff ff    	mov    0xfffffb8c(%ebp),%ebx
77782eb9:	29 d8                	sub    %ebx,%eax
77782ebb:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
77782ebf:	89 84 95 a8 fb ff ff 	mov    %eax,0xfffffba8(%ebp,%edx,4)
77782ec6:	42                   	inc    %edx
77782ec7:	8b 84 95 a8 fb ff ff 	mov    0xfffffba8(%ebp,%edx,4),%eax
77782ece:	85 c0                	test   %eax,%eax
77782ed0:	75 e1                	jne    77782eb3 <_getservbyname@8+0x353>
	WS_DbgPrint(MAX_TRACE,("Aliase %d: %s\n", i, Aliases[i]));
    }

    memcpy(p->Getservbyname,Aliases,sizeof(Aliases));
77782ed2:	50                   	push   %eax
77782ed3:	8d 85 a8 fb ff ff    	lea    0xfffffba8(%ebp),%eax
77782ed9:	6a 40                	push   $0x40
77782edb:	50                   	push   %eax
77782edc:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
77782ee2:	8b 42 14             	mov    0x14(%edx),%eax
77782ee5:	50                   	push   %eax
77782ee6:	e8 05 12 00 00       	call   777840f0 <_memcpy>

    /* Create the struct proper */
    p->Getservbyname->ServerEntry.s_name = ServiceName;
77782eeb:	8b 85 84 fb ff ff    	mov    0xfffffb84(%ebp),%eax
77782ef1:	8b 58 14             	mov    0x14(%eax),%ebx
77782ef4:	8b 85 9c fb ff ff    	mov    0xfffffb9c(%ebp),%eax
77782efa:	89 43 04             	mov    %eax,0x4(%ebx)
    p->Getservbyname->ServerEntry.s_aliases = p->Getservbyname->Aliases;
77782efd:	8d 43 14             	lea    0x14(%ebx),%eax
77782f00:	89 43 08             	mov    %eax,0x8(%ebx)
    p->Getservbyname->ServerEntry.s_port = htons(atoi(PortNumberStr));
77782f03:	58                   	pop    %eax
77782f04:	8b 85 a0 fb ff ff    	mov    0xfffffba0(%ebp),%eax
77782f0a:	50                   	push   %eax
77782f0b:	e8 30 12 00 00       	call   77784140 <_atoi>
77782f10:	25 ff ff 00 00       	and    $0xffff,%eax
77782f15:	89 04 24             	mov    %eax,(%esp)
77782f18:	e8 13 e1 ff ff       	call   77781030 <_htons@4>
77782f1d:	66 89 43 0c          	mov    %ax,0xc(%ebx)
    p->Getservbyname->ServerEntry.s_proto = ProtocolStr;
77782f21:	8b 85 84 fb ff ff    	mov    0xfffffb84(%ebp),%eax
77782f27:	8b 50 14             	mov    0x14(%eax),%edx
77782f2a:	8b 85 a4 fb ff ff    	mov    0xfffffba4(%ebp),%eax
77782f30:	89 42 10             	mov    %eax,0x10(%edx)

    return &p->Getservbyname->ServerEntry;
}
77782f33:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77782f36:	8d 42 04             	lea    0x4(%edx),%eax
77782f39:	5b                   	pop    %ebx
77782f3a:	5e                   	pop    %esi
77782f3b:	5f                   	pop    %edi
77782f3c:	5d                   	pop    %ebp
77782f3d:	c2 08 00             	ret    $0x8
77782f40:	83 ec 0c             	sub    $0xc,%esp
77782f43:	68 fb 2a 00 00       	push   $0x2afb
77782f48:	e8 d3 e5 ff ff       	call   77781520 <_WSASetLastError@4>
77782f4d:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77782f50:	31 c0                	xor    %eax,%eax
77782f52:	5b                   	pop    %ebx
77782f53:	5e                   	pop    %esi
77782f54:	5f                   	pop    %edi
77782f55:	5d                   	pop    %ebp
77782f56:	c2 08 00             	ret    $0x8
77782f59:	83 ec 0c             	sub    $0xc,%esp
77782f5c:	68 fc 2a 00 00       	push   $0x2afc
77782f61:	eb e5                	jmp    77782f48 <_getservbyname@8+0x3e8>
77782f63:	83 ec 0c             	sub    $0xc,%esp
77782f66:	68 fa 2a 00 00       	push   $0x2afa
77782f6b:	eb db                	jmp    77782f48 <_getservbyname@8+0x3e8>
77782f6d:	83 ec 0c             	sub    $0xc,%esp
77782f70:	68 6d 27 00 00       	push   $0x276d
77782f75:	eb d1                	jmp    77782f48 <_getservbyname@8+0x3e8>
77782f77:	89 f6                	mov    %esi,%esi
77782f79:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782f80 <_getservbyport@8>:


/*
 * @implemented
 */
LPSERVENT
EXPORT
getservbyport(
    IN  INT port, 
    IN  CONST CHAR FAR* proto)
{
77782f80:	55                   	push   %ebp
77782f81:	89 e5                	mov    %esp,%ebp
77782f83:	57                   	push   %edi
77782f84:	56                   	push   %esi
77782f85:	53                   	push   %ebx
77782f86:	81 ec 80 04 00 00    	sub    $0x480,%esp
    BOOL  Found = FALSE;
    HANDLE ServicesFile;
    CHAR ServiceDBData[BUFSIZ] = { 0 };
77782f8c:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77782f92:	c7 85 94 fb ff ff 00 	movl   $0x0,0xfffffb94(%ebp)
77782f99:	00 00 00 
    PCHAR SystemDirectory = ServiceDBData; /* Reuse this stack space */
    PCHAR ServicesFileLocation = "\\drivers\\etc\\services";
    PCHAR ThisLine = 0, NextLine = 0, ServiceName = 0, PortNumberStr = 0, 
	ProtocolStr = 0, Comment = 0;
    PCHAR Aliases[WS2_INTERNAL_MAX_ALIAS] = { 0 };
77782f9c:	8d bd a8 fb ff ff    	lea    0xfffffba8(%ebp),%edi
77782fa2:	68 00 04 00 00       	push   $0x400
77782fa7:	6a 00                	push   $0x0
77782fa9:	50                   	push   %eax
77782faa:	e8 01 11 00 00       	call   777840b0 <_memset>
77782faf:	fc                   	cld    
77782fb0:	31 c0                	xor    %eax,%eax
77782fb2:	b9 10 00 00 00       	mov    $0x10,%ecx
77782fb7:	c7 85 9c fb ff ff 00 	movl   $0x0,0xfffffb9c(%ebp)
77782fbe:	00 00 00 
77782fc1:	c7 85 a0 fb ff ff 00 	movl   $0x0,0xfffffba0(%ebp)
77782fc8:	00 00 00 
77782fcb:	c7 85 a4 fb ff ff 00 	movl   $0x0,0xfffffba4(%ebp)
77782fd2:	00 00 00 
77782fd5:	c7 85 8c fb ff ff 00 	movl   $0x0,0xfffffb8c(%ebp)
77782fdc:	00 00 00 
77782fdf:	31 db                	xor    %ebx,%ebx
    UINT i,SizeNeeded = 0, 
77782fe1:	c7 85 88 fb ff ff 00 	movl   $0x0,0xfffffb88(%ebp)
77782fe8:	00 00 00 
77782feb:	f3 ab                	repz stos %eax,%es:(%edi)
	SystemDirSize = sizeof(ServiceDBData) - 1;
    DWORD ReadSize = 0, ValidData = 0;
77782fed:	c7 85 98 fb ff ff 00 	movl   $0x0,0xfffffb98(%ebp)
77782ff4:	00 00 00 
77782ff7:	31 f6                	xor    %esi,%esi
    return ret;
}

static __inline__ struct _TEB * NtCurrentTeb(void)
{
77782ff9:	83 c4 10             	add    $0x10,%esp
    struct _TEB *ret;

    __asm__ __volatile__ (
77782ffc:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
77783002:	8b 80 6c 0f 00 00    	mov    0xf6c(%eax),%eax
77783008:	89 85 84 fb ff ff    	mov    %eax,0xfffffb84(%ebp)
    PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
    
    if( !p ) {
7778300e:	85 c0                	test   %eax,%eax
77783010:	0f 84 6b 03 00 00    	je     77783381 <_getservbyport@8+0x401>
	WSASetLastError( WSANOTINITIALISED );
	return NULL;
    }

    if ( !port ) {
77783016:	8b 7d 08             	mov    0x8(%ebp),%edi
77783019:	85 ff                	test   %edi,%edi
7778301b:	0f 84 33 03 00 00    	je     77783354 <_getservbyport@8+0x3d4>
        WSASetLastError( WSANO_RECOVERY );
        return NULL;
    }
 
    if( !GetSystemDirectoryA( SystemDirectory, SystemDirSize ) ) {
77783021:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77783027:	51                   	push   %ecx
77783028:	51                   	push   %ecx
77783029:	68 ff 03 00 00       	push   $0x3ff
7778302e:	52                   	push   %edx
7778302f:	e8 ec 12 00 00       	call   77784320 <_GetSystemDirectoryA@8>
77783034:	5f                   	pop    %edi
77783035:	85 c0                	test   %eax,%eax
77783037:	5a                   	pop    %edx
77783038:	0f 84 16 03 00 00    	je     77783354 <_getservbyport@8+0x3d4>
	WSASetLastError( WSANO_RECOVERY );
	WS_DbgPrint(MIN_TRACE, ("Could not get windows system directory.\n"));
	return NULL; /* Can't get system directory */
    }
    
    strncat( SystemDirectory, ServicesFileLocation, SystemDirSize );
7778303e:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77783044:	51                   	push   %ecx
77783045:	68 ff 03 00 00       	push   $0x3ff
7778304a:	68 4a 60 78 77       	push   $0x7778604a
7778304f:	50                   	push   %eax
77783050:	e8 1b 11 00 00       	call   77784170 <_strncat>

    ServicesFile = CreateFileA( SystemDirectory,
77783055:	83 c4 0c             	add    $0xc,%esp
77783058:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
7778305e:	6a 00                	push   $0x0
77783060:	68 80 00 00 08       	push   $0x8000080
77783065:	6a 03                	push   $0x3
77783067:	6a 00                	push   $0x0
77783069:	6a 01                	push   $0x1
7778306b:	68 00 00 00 80       	push   $0x80000000
77783070:	52                   	push   %edx
77783071:	e8 ba 12 00 00       	call   77784330 <_CreateFileA@28>
77783076:	89 85 90 fb ff ff    	mov    %eax,0xfffffb90(%ebp)
				GENERIC_READ,
				FILE_SHARE_READ,
				NULL,
				OPEN_EXISTING,
				FILE_ATTRIBUTE_NORMAL | 
				FILE_FLAG_SEQUENTIAL_SCAN,
				NULL );

    if( ServicesFile == INVALID_HANDLE_VALUE ) {
7778307c:	40                   	inc    %eax
7778307d:	5a                   	pop    %edx
7778307e:	0f 84 d0 02 00 00    	je     77783354 <_getservbyport@8+0x3d4>
	WSASetLastError( WSANO_RECOVERY );
	return NULL;
    }

    /* Scan the services file ... 
     *
     * We will read up to BUFSIZ bytes per pass, until the buffer does not
     * contain a full line, then we will try to read more.
     *
     * We fall from the loop if the buffer does not have a line terminator.
     */

    /* Initial Read */
    while( !Found &&
	   ReadFile( ServicesFile, ServiceDBData + ValidData,
		     sizeof( ServiceDBData ) - ValidData,
		     &ReadSize, NULL ) ) {
	ValidData += ReadSize;
	ReadSize = 0;
	NextLine = ThisLine = ServiceDBData;

	/* Find the beginning of the next line */
	while( NextLine < ServiceDBData + ValidData &&
	       *NextLine != '\r' && *NextLine != '\n' ) NextLine++;
	
	/* Zero and skip, so we can treat what we have as a string */
	if( NextLine >= ServiceDBData + ValidData ) 
	    break;

	*NextLine = 0; NextLine++;

	Comment = strchr( ThisLine, '#' );
	if( Comment ) *Comment = 0; /* Terminate at comment start */

	if( DecodeServEntFromString( ThisLine, 
				     &ServiceName, 
				     &PortNumberStr,
				     &ProtocolStr,
				     Aliases,
				     WS2_INTERNAL_MAX_ALIAS ) &&
	    (htons(atoi( PortNumberStr )) == port ) &&
	    (proto ? !strcmp( ProtocolStr, proto ) : TRUE) ) {

            WS_DbgPrint(MAX_TRACE,("Found the port entry.\n"));

	    Found = TRUE;
	    SizeNeeded = sizeof(WINSOCK_GETSERVBYPORT_CACHE) + 
		(NextLine - ThisLine);
	    break;
	}

	/* Get rid of everything we read so far */
	while( NextLine <= ServiceDBData + ValidData &&
	       isspace( *NextLine ) ) NextLine++;

	WS_DbgPrint(MAX_TRACE,("About to move %d chars\n", 
			       ServiceDBData + ValidData - NextLine));

	memmove( ServiceDBData, NextLine, 
		 ServiceDBData + ValidData - NextLine );
	ValidData -= NextLine - ServiceDBData;
77783084:	83 ec 0c             	sub    $0xc,%esp
77783087:	8d 85 98 fb ff ff    	lea    0xfffffb98(%ebp),%eax
7778308d:	6a 00                	push   $0x0
7778308f:	50                   	push   %eax
77783090:	b8 00 04 00 00       	mov    $0x400,%eax
77783095:	29 f0                	sub    %esi,%eax
77783097:	50                   	push   %eax
77783098:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
7778309e:	01 f0                	add    %esi,%eax
777830a0:	50                   	push   %eax
777830a1:	8b 85 90 fb ff ff    	mov    0xfffffb90(%ebp),%eax
777830a7:	50                   	push   %eax
777830a8:	e8 93 12 00 00       	call   77784340 <_ReadFile@20>
777830ad:	83 c4 0c             	add    $0xc,%esp
777830b0:	85 c0                	test   %eax,%eax
777830b2:	0f 84 56 01 00 00    	je     7778320e <_getservbyport@8+0x28e>
777830b8:	8b 85 98 fb ff ff    	mov    0xfffffb98(%ebp),%eax
777830be:	c7 85 98 fb ff ff 00 	movl   $0x0,0xfffffb98(%ebp)
777830c5:	00 00 00 
777830c8:	01 c6                	add    %eax,%esi
777830ca:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
777830d0:	89 c2                	mov    %eax,%edx
777830d2:	89 85 8c fb ff ff    	mov    %eax,0xfffffb8c(%ebp)
777830d8:	01 f2                	add    %esi,%edx
777830da:	89 c3                	mov    %eax,%ebx
777830dc:	39 c2                	cmp    %eax,%edx
777830de:	76 20                	jbe    77783100 <_getservbyport@8+0x180>
777830e0:	8a 85 e8 fb ff ff    	mov    0xfffffbe8(%ebp),%al
777830e6:	3c 0d                	cmp    $0xd,%al
777830e8:	74 16                	je     77783100 <_getservbyport@8+0x180>
777830ea:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777830f0:	3c 0a                	cmp    $0xa,%al
777830f2:	74 0c                	je     77783100 <_getservbyport@8+0x180>
777830f4:	43                   	inc    %ebx
777830f5:	39 da                	cmp    %ebx,%edx
777830f7:	76 07                	jbe    77783100 <_getservbyport@8+0x180>
777830f9:	8a 03                	mov    (%ebx),%al
777830fb:	3c 0d                	cmp    $0xd,%al
777830fd:	75 f1                	jne    777830f0 <_getservbyport@8+0x170>
777830ff:	90                   	nop    
77783100:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77783106:	01 f0                	add    %esi,%eax
77783108:	39 d8                	cmp    %ebx,%eax
7778310a:	0f 86 fe 00 00 00    	jbe    7778320e <_getservbyport@8+0x28e>
77783110:	c6 03 00             	movb   $0x0,(%ebx)
77783113:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77783119:	50                   	push   %eax
7778311a:	50                   	push   %eax
7778311b:	6a 23                	push   $0x23
7778311d:	52                   	push   %edx
7778311e:	e8 5d 10 00 00       	call   77784180 <_strchr>
77783123:	43                   	inc    %ebx
77783124:	83 c4 10             	add    $0x10,%esp
77783127:	85 c0                	test   %eax,%eax
77783129:	74 03                	je     7778312e <_getservbyport@8+0x1ae>
7778312b:	c6 00 00             	movb   $0x0,(%eax)
7778312e:	8d 85 a8 fb ff ff    	lea    0xfffffba8(%ebp),%eax
77783134:	6a 10                	push   $0x10
77783136:	50                   	push   %eax
77783137:	8d 85 a4 fb ff ff    	lea    0xfffffba4(%ebp),%eax
7778313d:	50                   	push   %eax
7778313e:	8d 85 a0 fb ff ff    	lea    0xfffffba0(%ebp),%eax
77783144:	50                   	push   %eax
77783145:	8d 95 9c fb ff ff    	lea    0xfffffb9c(%ebp),%edx
7778314b:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77783151:	e8 8a f8 ff ff       	call   777829e0 <_DecodeServEntFromString>
77783156:	83 c4 10             	add    $0x10,%esp
77783159:	85 c0                	test   %eax,%eax
7778315b:	75 47                	jne    777831a4 <_getservbyport@8+0x224>
7778315d:	8d bd e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edi
77783163:	01 f7                	add    %esi,%edi
77783165:	eb 14                	jmp    7778317b <_getservbyport@8+0x1fb>
77783167:	83 ec 0c             	sub    $0xc,%esp
7778316a:	0f be 03             	movsbl (%ebx),%eax
7778316d:	50                   	push   %eax
7778316e:	e8 2d 10 00 00       	call   777841a0 <_isspace>
77783173:	83 c4 10             	add    $0x10,%esp
77783176:	85 c0                	test   %eax,%eax
77783178:	74 05                	je     7778317f <_getservbyport@8+0x1ff>
7778317a:	43                   	inc    %ebx
7778317b:	39 df                	cmp    %ebx,%edi
7778317d:	73 e8                	jae    77783167 <_getservbyport@8+0x1e7>
7778317f:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
77783185:	29 df                	sub    %ebx,%edi
77783187:	52                   	push   %edx
77783188:	57                   	push   %edi
77783189:	53                   	push   %ebx
7778318a:	50                   	push   %eax
7778318b:	e8 c0 0f 00 00       	call   77784150 <_memmove>
77783190:	89 d8                	mov    %ebx,%eax
77783192:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
77783198:	29 d0                	sub    %edx,%eax
7778319a:	83 c4 10             	add    $0x10,%esp
7778319d:	29 c6                	sub    %eax,%esi
7778319f:	e9 e0 fe ff ff       	jmp    77783084 <_getservbyport@8+0x104>
777831a4:	83 ec 0c             	sub    $0xc,%esp
777831a7:	8b 85 a0 fb ff ff    	mov    0xfffffba0(%ebp),%eax
777831ad:	50                   	push   %eax
777831ae:	e8 8d 0f 00 00       	call   77784140 <_atoi>
777831b3:	25 ff ff 00 00       	and    $0xffff,%eax
777831b8:	89 04 24             	mov    %eax,(%esp)
777831bb:	e8 70 de ff ff       	call   77781030 <_htons@4>
777831c0:	25 ff ff 00 00       	and    $0xffff,%eax
777831c5:	83 c4 0c             	add    $0xc,%esp
777831c8:	3b 45 08             	cmp    0x8(%ebp),%eax
777831cb:	75 90                	jne    7778315d <_getservbyport@8+0x1dd>
777831cd:	8b 45 0c             	mov    0xc(%ebp),%eax
777831d0:	85 c0                	test   %eax,%eax
777831d2:	74 1d                	je     777831f1 <_getservbyport@8+0x271>
777831d4:	50                   	push   %eax
777831d5:	50                   	push   %eax
777831d6:	8b 7d 0c             	mov    0xc(%ebp),%edi
777831d9:	57                   	push   %edi
777831da:	8b 8d a4 fb ff ff    	mov    0xfffffba4(%ebp),%ecx
777831e0:	51                   	push   %ecx
777831e1:	e8 7a 0f 00 00       	call   77784160 <_strcmp>
777831e6:	83 c4 10             	add    $0x10,%esp
777831e9:	85 c0                	test   %eax,%eax
777831eb:	0f 85 6c ff ff ff    	jne    7778315d <_getservbyport@8+0x1dd>
777831f1:	89 d8                	mov    %ebx,%eax
777831f3:	8d 95 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%edx
777831f9:	29 d0                	sub    %edx,%eax
777831fb:	c7 85 94 fb ff ff 01 	movl   $0x1,0xfffffb94(%ebp)
77783202:	00 00 00 
77783205:	83 c0 58             	add    $0x58,%eax
77783208:	89 85 88 fb ff ff    	mov    %eax,0xfffffb88(%ebp)
	WS_DbgPrint(MAX_TRACE,("Valid bytes: %d\n", ValidData));
    }

    /* This we'll do no matter what */
    CloseHandle( ServicesFile );
7778320e:	83 ec 0c             	sub    $0xc,%esp
77783211:	8b 85 90 fb ff ff    	mov    0xfffffb90(%ebp),%eax
77783217:	50                   	push   %eax
77783218:	e8 73 10 00 00       	call   77784290 <_CloseHandle@4>
    
    if( !Found ) {
7778321d:	8b 85 94 fb ff ff    	mov    0xfffffb94(%ebp),%eax
77783223:	83 c4 0c             	add    $0xc,%esp
77783226:	85 c0                	test   %eax,%eax
77783228:	0f 84 3f 01 00 00    	je     7778336d <_getservbyport@8+0x3ed>
	WS_DbgPrint(MAX_TRACE,("Not found\n"));
	WSASetLastError( WSANO_DATA );
	return NULL;
    }
    
    if( !p->Getservbyport || p->Getservbyport->Size < SizeNeeded ) {
7778322e:	8b 85 84 fb ff ff    	mov    0xfffffb84(%ebp),%eax
77783234:	8b 48 18             	mov    0x18(%eax),%ecx
77783237:	85 c9                	test   %ecx,%ecx
77783239:	74 1a                	je     77783255 <_getservbyport@8+0x2d5>
7778323b:	8b 95 88 fb ff ff    	mov    0xfffffb88(%ebp),%edx
77783241:	39 11                	cmp    %edx,(%ecx)
77783243:	73 42                	jae    77783287 <_getservbyport@8+0x307>
	/* Free previous getservbyport buffer, allocate bigger */
	if( p->Getservbyport ) 
	    HeapFree(GlobalHeap, 0, p->Getservbyport);
77783245:	50                   	push   %eax
77783246:	51                   	push   %ecx
77783247:	6a 00                	push   $0x0
77783249:	a1 60 70 78 77       	mov    0x77787060,%eax
7778324e:	50                   	push   %eax
7778324f:	e8 fc 0f 00 00       	call   77784250 <_HeapFree@12>
77783254:	58                   	pop    %eax
	p->Getservbyport = HeapAlloc(GlobalHeap, 0, SizeNeeded);
77783255:	57                   	push   %edi
77783256:	8b b5 88 fb ff ff    	mov    0xfffffb88(%ebp),%esi
7778325c:	56                   	push   %esi
7778325d:	6a 00                	push   $0x0
7778325f:	8b 0d 60 70 78 77    	mov    0x77787060,%ecx
77783265:	51                   	push   %ecx
77783266:	e8 85 0f 00 00       	call   777841f0 <_HeapAlloc@12>
7778326b:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
	if( !p->Getservbyport ) {
77783271:	85 c0                	test   %eax,%eax
77783273:	89 42 18             	mov    %eax,0x18(%edx)
77783276:	5a                   	pop    %edx
77783277:	0f 84 fa 00 00 00    	je     77783377 <_getservbyport@8+0x3f7>
	    WS_DbgPrint(MIN_TRACE,("Couldn't allocate %d bytes\n", 
				   SizeNeeded));
	    WSASetLastError( WSATRY_AGAIN );
	    return NULL;
	}
        p->Getservbyport->Size = SizeNeeded;
7778327d:	8b 95 88 fb ff ff    	mov    0xfffffb88(%ebp),%edx
77783283:	89 c1                	mov    %eax,%ecx
77783285:	89 10                	mov    %edx,(%eax)
    }
    /* Copy the data */
    memmove( p->Getservbyport->Data, 
77783287:	50                   	push   %eax
77783288:	8b 85 8c fb ff ff    	mov    0xfffffb8c(%ebp),%eax
7778328e:	29 c3                	sub    %eax,%ebx
77783290:	53                   	push   %ebx
77783291:	8b 85 8c fb ff ff    	mov    0xfffffb8c(%ebp),%eax
77783297:	50                   	push   %eax
77783298:	8d 41 54             	lea    0x54(%ecx),%eax
7778329b:	50                   	push   %eax
7778329c:	e8 af 0e 00 00       	call   77784150 <_memmove>
	     ThisLine,
	     NextLine - ThisLine );

    ADJ_PTR(PortNumberStr,ThisLine,p->Getservbyport->Data);
777832a1:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
777832a7:	8b 85 a0 fb ff ff    	mov    0xfffffba0(%ebp),%eax
777832ad:	8b bd 8c fb ff ff    	mov    0xfffffb8c(%ebp),%edi
    ADJ_PTR(ProtocolStr,ThisLine,p->Getservbyport->Data);
777832b3:	8b b5 8c fb ff ff    	mov    0xfffffb8c(%ebp),%esi
777832b9:	8b 4a 18             	mov    0x18(%edx),%ecx
777832bc:	29 f8                	sub    %edi,%eax
    WS_DbgPrint(MAX_TRACE,
		("Port Number: %s, Protocol: %s\n", PortNumberStr, ProtocolStr));
		
    for( i = 0; Aliases[i]; i++ ) {
777832be:	31 d2                	xor    %edx,%edx
777832c0:	83 c4 10             	add    $0x10,%esp
777832c3:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
777832c7:	89 85 a0 fb ff ff    	mov    %eax,0xfffffba0(%ebp)
777832cd:	8b 85 a4 fb ff ff    	mov    0xfffffba4(%ebp),%eax
777832d3:	29 f0                	sub    %esi,%eax
777832d5:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
777832d9:	89 85 a4 fb ff ff    	mov    %eax,0xfffffba4(%ebp)
777832df:	8b 85 a8 fb ff ff    	mov    0xfffffba8(%ebp),%eax
777832e5:	eb 1b                	jmp    77783302 <_getservbyport@8+0x382>
	ADJ_PTR(Aliases[i],ThisLine,p->Getservbyport->Data);
777832e7:	8b 9d 8c fb ff ff    	mov    0xfffffb8c(%ebp),%ebx
777832ed:	29 d8                	sub    %ebx,%eax
777832ef:	8d 44 01 54          	lea    0x54(%ecx,%eax,1),%eax
777832f3:	89 84 95 a8 fb ff ff 	mov    %eax,0xfffffba8(%ebp,%edx,4)
777832fa:	42                   	inc    %edx
777832fb:	8b 84 95 a8 fb ff ff 	mov    0xfffffba8(%ebp,%edx,4),%eax
77783302:	85 c0                	test   %eax,%eax
77783304:	75 e1                	jne    777832e7 <_getservbyport@8+0x367>
	WS_DbgPrint(MAX_TRACE,("Aliases %d: %s\n", i, Aliases[i]));
    }

    memcpy(p->Getservbyport,Aliases,sizeof(Aliases));
77783306:	50                   	push   %eax
77783307:	8d 85 a8 fb ff ff    	lea    0xfffffba8(%ebp),%eax
7778330d:	6a 40                	push   $0x40
7778330f:	50                   	push   %eax
77783310:	8b 95 84 fb ff ff    	mov    0xfffffb84(%ebp),%edx
77783316:	8b 42 18             	mov    0x18(%edx),%eax
77783319:	50                   	push   %eax
7778331a:	e8 d1 0d 00 00       	call   777840f0 <_memcpy>

    /* Create the struct proper */
    p->Getservbyport->ServerEntry.s_name = ServiceName;
7778331f:	8b 85 84 fb ff ff    	mov    0xfffffb84(%ebp),%eax
77783325:	8b 50 18             	mov    0x18(%eax),%edx
77783328:	8b 85 9c fb ff ff    	mov    0xfffffb9c(%ebp),%eax
7778332e:	89 42 04             	mov    %eax,0x4(%edx)
    p->Getservbyport->ServerEntry.s_aliases = p->Getservbyport->Aliases;
77783331:	8d 42 14             	lea    0x14(%edx),%eax
77783334:	89 42 08             	mov    %eax,0x8(%edx)
    p->Getservbyport->ServerEntry.s_port = port;
77783337:	8b 45 08             	mov    0x8(%ebp),%eax
7778333a:	66 89 42 0c          	mov    %ax,0xc(%edx)
    p->Getservbyport->ServerEntry.s_proto = ProtocolStr;
7778333e:	8b 85 a4 fb ff ff    	mov    0xfffffba4(%ebp),%eax
77783344:	89 42 10             	mov    %eax,0x10(%edx)

    WS_DbgPrint(MID_TRACE,("s_name: %s\n", ServiceName));

    return &p->Getservbyport->ServerEntry;

}
77783347:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778334a:	8d 42 04             	lea    0x4(%edx),%eax
7778334d:	5b                   	pop    %ebx
7778334e:	5e                   	pop    %esi
7778334f:	5f                   	pop    %edi
77783350:	5d                   	pop    %ebp
77783351:	c2 08 00             	ret    $0x8
77783354:	83 ec 0c             	sub    $0xc,%esp
77783357:	68 fb 2a 00 00       	push   $0x2afb
7778335c:	e8 bf e1 ff ff       	call   77781520 <_WSASetLastError@4>
77783361:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77783364:	31 c0                	xor    %eax,%eax
77783366:	5b                   	pop    %ebx
77783367:	5e                   	pop    %esi
77783368:	5f                   	pop    %edi
77783369:	5d                   	pop    %ebp
7778336a:	c2 08 00             	ret    $0x8
7778336d:	83 ec 0c             	sub    $0xc,%esp
77783370:	68 fc 2a 00 00       	push   $0x2afc
77783375:	eb e5                	jmp    7778335c <_getservbyport@8+0x3dc>
77783377:	83 ec 0c             	sub    $0xc,%esp
7778337a:	68 fa 2a 00 00       	push   $0x2afa
7778337f:	eb db                	jmp    7778335c <_getservbyport@8+0x3dc>
77783381:	83 ec 0c             	sub    $0xc,%esp
77783384:	68 6d 27 00 00       	push   $0x276d
77783389:	eb d1                	jmp    7778335c <_getservbyport@8+0x3dc>
7778338b:	90                   	nop    
7778338c:	8d 74 26 00          	lea    0x0(%esi),%esi

77783390 <_inet_addr@4>:


/*
 * @implemented
 */
ULONG
EXPORT
inet_addr(
    IN  CONST CHAR FAR* cp)
/*
 * FUNCTION: Converts a string containing an IPv4 address to an unsigned long
 * ARGUMENTS:
 *     cp = Pointer to string with address to convert
 * RETURNS:
 *     Binary representation of IPv4 address, or INADDR_NONE
 */
{
77783390:	55                   	push   %ebp
77783391:	89 e5                	mov    %esp,%ebp
77783393:	57                   	push   %edi
77783394:	56                   	push   %esi
77783395:	53                   	push   %ebx
77783396:	83 ec 18             	sub    $0x18,%esp
    UINT i;
    PCHAR p;
    ULONG u = 0;
77783399:	31 f6                	xor    %esi,%esi
7778339b:	8b 5d 08             	mov    0x8(%ebp),%ebx

    p = (PCHAR)cp;
7778339e:	89 5d f0             	mov    %ebx,0xfffffff0(%ebp)

    if (strlen(p) == 0)
777833a1:	53                   	push   %ebx
777833a2:	e8 e9 0d 00 00       	call   77784190 <_strlen>
777833a7:	83 c4 10             	add    $0x10,%esp
        return INADDR_NONE;
777833aa:	83 ca ff             	or     $0xffffffff,%edx
777833ad:	85 c0                	test   %eax,%eax
777833af:	74 5e                	je     7778340f <_inet_addr@4+0x7f>

    if (strcmp(p, " ") == 0)
777833b1:	50                   	push   %eax
777833b2:	50                   	push   %eax
777833b3:	68 60 60 78 77       	push   $0x77786060
777833b8:	53                   	push   %ebx
777833b9:	e8 a2 0d 00 00       	call   77784160 <_strcmp>
777833be:	83 c4 10             	add    $0x10,%esp
        return 0;
777833c1:	31 d2                	xor    %edx,%edx
777833c3:	85 c0                	test   %eax,%eax
777833c5:	74 48                	je     7778340f <_inet_addr@4+0x7f>

    for (i = 0; i <= 3; i++) {
777833c7:	31 db                	xor    %ebx,%ebx
777833c9:	8d 7d f0             	lea    0xfffffff0(%ebp),%edi
777833cc:	8d 74 26 00          	lea    0x0(%esi),%esi
        u += (strtoul(p, &p, 0) << (i * 8));
777833d0:	50                   	push   %eax
777833d1:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777833d4:	6a 00                	push   $0x0
777833d6:	57                   	push   %edi
777833d7:	50                   	push   %eax
777833d8:	e8 53 0d 00 00       	call   77784130 <_strtoul>
777833dd:	8d 0c dd 00 00 00 00 	lea    0x0(,%ebx,8),%ecx
777833e4:	d3 e0                	shl    %cl,%eax

        if (strlen(p) == 0)
777833e6:	83 ec 0c             	sub    $0xc,%esp
777833e9:	01 c6                	add    %eax,%esi
777833eb:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777833ee:	50                   	push   %eax
777833ef:	e8 9c 0d 00 00       	call   77784190 <_strlen>
777833f4:	83 c4 20             	add    $0x20,%esp
777833f7:	85 c0                	test   %eax,%eax
777833f9:	74 12                	je     7778340d <_inet_addr@4+0x7d>
            return u;

        if (p[0] != '.')
777833fb:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777833fe:	80 38 2e             	cmpb   $0x2e,(%eax)
77783401:	75 18                	jne    7778341b <_inet_addr@4+0x8b>
            return INADDR_NONE;

        p++;
77783403:	40                   	inc    %eax
77783404:	43                   	inc    %ebx
77783405:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77783408:	83 fb 03             	cmp    $0x3,%ebx
7778340b:	76 c3                	jbe    777833d0 <_inet_addr@4+0x40>
    }

    return u;
7778340d:	89 f2                	mov    %esi,%edx
}
7778340f:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77783412:	89 d0                	mov    %edx,%eax
77783414:	5b                   	pop    %ebx
77783415:	5e                   	pop    %esi
77783416:	5f                   	pop    %edi
77783417:	5d                   	pop    %ebp
77783418:	c2 04 00             	ret    $0x4
7778341b:	83 ca ff             	or     $0xffffffff,%edx
7778341e:	eb ef                	jmp    7778340f <_inet_addr@4+0x7f>

77783420 <_inet_ntoa@4>:


/*
 * @implemented
 */
CHAR FAR*
EXPORT
inet_ntoa(
    IN  IN_ADDR in)
{
77783420:	55                   	push   %ebp
77783421:	89 e5                	mov    %esp,%ebp
77783423:	57                   	push   %edi
77783424:	56                   	push   %esi
77783425:	53                   	push   %ebx
77783426:	83 ec 20             	sub    $0x20,%esp
77783429:	8b 5d 08             	mov    0x8(%ebp),%ebx
static __inline__ struct _TEB * NtCurrentTeb(void)
{
    struct _TEB *ret;

    __asm__ __volatile__ (
7778342c:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
    CHAR b[10];
    PCHAR p;

    p = ((PWINSOCK_THREAD_BLOCK)NtCurrentTeb()->WinSockData)->Intoa;
    _itoa(in.S_un.S_addr & 0xFF, b, 10);
77783432:	8d 75 d8             	lea    0xffffffd8(%ebp),%esi
    return ret;
}

static __inline__ struct _TEB * NtCurrentTeb(void)
{
77783435:	8b b8 6c 0f 00 00    	mov    0xf6c(%eax),%edi
7778343b:	0f b6 c3             	movzbl %bl,%eax
    return ret;
}

static __inline__ struct _TEB * NtCurrentTeb(void)
{
7778343e:	83 c7 04             	add    $0x4,%edi
77783441:	6a 0a                	push   $0xa
77783443:	56                   	push   %esi
77783444:	50                   	push   %eax
77783445:	e8 d6 0c 00 00       	call   77784120 <__itoa>
    strcpy(p, b);
7778344a:	58                   	pop    %eax
7778344b:	5a                   	pop    %edx
7778344c:	56                   	push   %esi
7778344d:	57                   	push   %edi
7778344e:	e8 bd 0c 00 00       	call   77784110 <_strcpy>
    _itoa((in.S_un.S_addr >> 8) & 0xFF, b, 10);
77783453:	83 c4 0c             	add    $0xc,%esp
77783456:	0f b6 c7             	movzbl %bh,%eax
    strcat(p, ".");
    strcat(p, b);
    _itoa((in.S_un.S_addr >> 16) & 0xFF, b, 10);
77783459:	c1 eb 10             	shr    $0x10,%ebx
7778345c:	6a 0a                	push   $0xa
7778345e:	56                   	push   %esi
7778345f:	50                   	push   %eax
77783460:	e8 bb 0c 00 00       	call   77784120 <__itoa>
77783465:	59                   	pop    %ecx
77783466:	58                   	pop    %eax
77783467:	68 62 60 78 77       	push   $0x77786062
7778346c:	57                   	push   %edi
7778346d:	e8 8e 0c 00 00       	call   77784100 <_strcat>
77783472:	58                   	pop    %eax
77783473:	5a                   	pop    %edx
77783474:	56                   	push   %esi
77783475:	57                   	push   %edi
77783476:	e8 85 0c 00 00       	call   77784100 <_strcat>
7778347b:	83 c4 0c             	add    $0xc,%esp
7778347e:	0f b6 c3             	movzbl %bl,%eax
    strcat(p, ".");
    strcat(p, b);
    _itoa((in.S_un.S_addr >> 24) & 0xFF, b, 10);
77783481:	c1 eb 08             	shr    $0x8,%ebx
77783484:	6a 0a                	push   $0xa
77783486:	56                   	push   %esi
77783487:	50                   	push   %eax
77783488:	e8 93 0c 00 00       	call   77784120 <__itoa>
7778348d:	59                   	pop    %ecx
7778348e:	58                   	pop    %eax
7778348f:	68 62 60 78 77       	push   $0x77786062
77783494:	57                   	push   %edi
77783495:	e8 66 0c 00 00       	call   77784100 <_strcat>
7778349a:	58                   	pop    %eax
7778349b:	5a                   	pop    %edx
7778349c:	56                   	push   %esi
7778349d:	57                   	push   %edi
7778349e:	e8 5d 0c 00 00       	call   77784100 <_strcat>
777834a3:	83 c4 0c             	add    $0xc,%esp
777834a6:	6a 0a                	push   $0xa
777834a8:	56                   	push   %esi
777834a9:	53                   	push   %ebx
777834aa:	e8 71 0c 00 00       	call   77784120 <__itoa>
    strcat(p, ".");
777834af:	59                   	pop    %ecx
777834b0:	5b                   	pop    %ebx
777834b1:	68 62 60 78 77       	push   $0x77786062
777834b6:	57                   	push   %edi
777834b7:	e8 44 0c 00 00       	call   77784100 <_strcat>
    strcat(p, b);
777834bc:	58                   	pop    %eax
777834bd:	5a                   	pop    %edx
777834be:	56                   	push   %esi
777834bf:	57                   	push   %edi
777834c0:	e8 3b 0c 00 00       	call   77784100 <_strcat>
    return (CHAR FAR*)p;
}
777834c5:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777834c8:	89 f8                	mov    %edi,%eax
777834ca:	5b                   	pop    %ebx
777834cb:	5e                   	pop    %esi
777834cc:	5f                   	pop    %edi
777834cd:	5d                   	pop    %ebp
777834ce:	c2 04 00             	ret    $0x4
777834d1:	eb 0d                	jmp    777834e0 <_WSAAsyncGetHostByAddr@28>
777834d3:	90                   	nop    
777834d4:	90                   	nop    
777834d5:	90                   	nop    
777834d6:	90                   	nop    
777834d7:	90                   	nop    
777834d8:	90                   	nop    
777834d9:	90                   	nop    
777834da:	90                   	nop    
777834db:	90                   	nop    
777834dc:	90                   	nop    
777834dd:	90                   	nop    
777834de:	90                   	nop    
777834df:	90                   	nop    

777834e0 <_WSAAsyncGetHostByAddr@28>:


/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetHostByAddr(
    IN  HWND hWnd,
    IN  UINT wMsg,
    IN  CONST CHAR FAR* addr, 
    IN  INT len,
    IN  INT type, 
    OUT CHAR FAR* buf, 
    IN  INT buflen)
{
777834e0:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
777834e1:	31 c0                	xor    %eax,%eax
777834e3:	89 e5                	mov    %esp,%ebp
777834e5:	5d                   	pop    %ebp
777834e6:	c2 1c 00             	ret    $0x1c
777834e9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777834f0 <_WSAAsyncGetHostByName@20>:


/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetHostByName(
    IN  HWND hWnd, 
    IN  UINT wMsg,  
    IN  CONST CHAR FAR* name, 
    OUT CHAR FAR* buf, 
    IN  INT buflen)
{
777834f0:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
777834f1:	31 c0                	xor    %eax,%eax
777834f3:	89 e5                	mov    %esp,%ebp
777834f5:	5d                   	pop    %ebp
777834f6:	c2 14 00             	ret    $0x14
777834f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783500 <_WSAAsyncGetProtoByName@20>:


/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetProtoByName(
    IN  HWND hWnd,
    IN  UINT wMsg,
    IN  CONST CHAR FAR* name,
    OUT CHAR FAR* buf,
    IN  INT buflen)
{
77783500:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
77783501:	31 c0                	xor    %eax,%eax
77783503:	89 e5                	mov    %esp,%ebp
77783505:	5d                   	pop    %ebp
77783506:	c2 14 00             	ret    $0x14
77783509:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783510 <_WSAAsyncGetProtoByNumber@20>:


/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetProtoByNumber(
    IN  HWND hWnd,
    IN  UINT wMsg,
    IN  INT number,
    OUT CHAR FAR* buf,
    IN  INT buflen)
{
77783510:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
77783511:	31 c0                	xor    %eax,%eax
77783513:	89 e5                	mov    %esp,%ebp
77783515:	5d                   	pop    %ebp
77783516:	c2 14 00             	ret    $0x14
77783519:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783520 <_WSAAsyncGetServByName@24>:

/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetServByName(
    IN  HWND hWnd,
    IN  UINT wMsg,
    IN  CONST CHAR FAR* name,
    IN  CONST CHAR FAR* proto,
    OUT CHAR FAR* buf,
    IN  INT buflen)
{
77783520:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
77783521:	31 c0                	xor    %eax,%eax
77783523:	89 e5                	mov    %esp,%ebp
77783525:	5d                   	pop    %ebp
77783526:	c2 18 00             	ret    $0x18
77783529:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783530 <_WSAAsyncGetServByPort@24>:


/*
 * @unimplemented
 */
HANDLE
EXPORT
WSAAsyncGetServByPort(
    IN  HWND hWnd,
    IN  UINT wMsg,
    IN  INT port,
    IN  CONST CHAR FAR* proto,
    OUT CHAR FAR* buf,
    IN  INT buflen)
{
77783530:	55                   	push   %ebp
    UNIMPLEMENTED

    return (HANDLE)0;
}
77783531:	31 c0                	xor    %eax,%eax
77783533:	89 e5                	mov    %esp,%ebp
77783535:	5d                   	pop    %ebp
77783536:	c2 18 00             	ret    $0x18
77783539:	90                   	nop    
7778353a:	90                   	nop    
7778353b:	90                   	nop    
7778353c:	90                   	nop    
7778353d:	90                   	nop    
7778353e:	90                   	nop    
7778353f:	90                   	nop    

77783540 <_WSASendTo@36>:
  return 0;
}


/*
 * @implemented
 */
INT
EXPORT
WSASendTo(
  IN  SOCKET s,
  IN  LPWSABUF lpBuffers,
  IN  DWORD dwBufferCount,
  OUT LPDWORD lpNumberOfBytesSent,
  IN  DWORD dwFlags,
  IN  CONST struct sockaddr *lpTo,
  IN  INT iToLen,
  IN  LPWSAOVERLAPPED lpOverlapped,
  IN  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
77783540:	55                   	push   %ebp
77783541:	89 e5                	mov    %esp,%ebp
77783543:	53                   	push   %ebx
77783544:	83 ec 1c             	sub    $0x1c,%esp
77783547:	8b 5d 08             	mov    0x8(%ebp),%ebx
  PCATALOG_ENTRY Provider;
  INT Errno;
  INT Code;

  WS_DbgPrint(MAX_TRACE, ("Called.\n"));

  if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
7778354a:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
7778354d:	50                   	push   %eax
7778354e:	53                   	push   %ebx
7778354f:	e8 0c ee ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783554:	83 c4 10             	add    $0x10,%esp
77783557:	85 c0                	test   %eax,%eax
77783559:	74 66                	je     777835c1 <_WSASendTo@36+0x81>
    WSASetLastError(WSAENOTSOCK);
    return SOCKET_ERROR;
  }

  assert(Provider->ProcTable.lpWSPSendTo);

#if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
  Code = Provider->ProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount,
    lpNumberOfBytesSent, dwFlags, (CONST LPSOCKADDR) lpTo, iToLen, lpOverlapped,
    lpCompletionRoutine, NULL /* lpThreadId */, &Errno);
#else
  Code = Provider->ProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount,
7778355b:	50                   	push   %eax
7778355c:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
7778355f:	8b 4d 28             	mov    0x28(%ebp),%ecx
77783562:	50                   	push   %eax
77783563:	8b 55 24             	mov    0x24(%ebp),%edx
77783566:	8b 45 20             	mov    0x20(%ebp),%eax
77783569:	6a 00                	push   $0x0
7778356b:	51                   	push   %ecx
7778356c:	52                   	push   %edx
7778356d:	50                   	push   %eax
7778356e:	8b 45 1c             	mov    0x1c(%ebp),%eax
77783571:	50                   	push   %eax
77783572:	8b 45 18             	mov    0x18(%ebp),%eax
77783575:	50                   	push   %eax
77783576:	8b 45 14             	mov    0x14(%ebp),%eax
77783579:	50                   	push   %eax
7778357a:	8b 45 10             	mov    0x10(%ebp),%eax
7778357d:	50                   	push   %eax
7778357e:	8b 45 0c             	mov    0xc(%ebp),%eax
77783581:	50                   	push   %eax
77783582:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783585:	53                   	push   %ebx
77783586:	ff 90 14 05 00 00    	call   *0x514(%eax)
    lpNumberOfBytesSent, dwFlags, lpTo, iToLen, lpOverlapped,
    lpCompletionRoutine, NULL /* lpThreadId */, &Errno);
#endif /* __W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5 */

  DereferenceProviderByPointer(Provider);
7778358c:	8b 55 f8             	mov    0xfffffff8(%ebp),%edx
7778358f:	89 c3                	mov    %eax,%ebx
77783591:	51                   	push   %ecx
77783592:	51                   	push   %ecx
77783593:	52                   	push   %edx
77783594:	e8 07 de ff ff       	call   777813a0 <_DereferenceProviderByPointer>

  if (Code == SOCKET_ERROR)
77783599:	83 c4 10             	add    $0x10,%esp
7778359c:	83 fb ff             	cmp    $0xffffffff,%ebx
7778359f:	74 0f                	je     777835b0 <_WSASendTo@36+0x70>
    WSASetLastError(Errno);

  return Code;
777835a1:	89 d8                	mov    %ebx,%eax
}
777835a3:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777835a6:	c9                   	leave  
777835a7:	c2 24 00             	ret    $0x24
777835aa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777835b0:	83 ec 0c             	sub    $0xc,%esp
777835b3:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777835b6:	50                   	push   %eax
777835b7:	e8 64 df ff ff       	call   77781520 <_WSASetLastError@4>
777835bc:	83 c4 0c             	add    $0xc,%esp
777835bf:	eb e0                	jmp    777835a1 <_WSASendTo@36+0x61>
777835c1:	83 ec 0c             	sub    $0xc,%esp
777835c4:	68 36 27 00 00       	push   $0x2736
777835c9:	e8 52 df ff ff       	call   77781520 <_WSASetLastError@4>
777835ce:	83 c8 ff             	or     $0xffffffff,%eax
777835d1:	eb d0                	jmp    777835a3 <_WSASendTo@36+0x63>
777835d3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777835d9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777835e0 <_sendto@24>:
777835e0:	55                   	push   %ebp
777835e1:	89 e5                	mov    %esp,%ebp
777835e3:	83 ec 24             	sub    $0x24,%esp
777835e6:	8b 45 10             	mov    0x10(%ebp),%eax
777835e9:	6a 00                	push   $0x0
777835eb:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
777835ee:	8b 45 0c             	mov    0xc(%ebp),%eax
777835f1:	89 45 fc             	mov    %eax,0xfffffffc(%ebp)
777835f4:	8b 45 1c             	mov    0x1c(%ebp),%eax
777835f7:	6a 00                	push   $0x0
777835f9:	50                   	push   %eax
777835fa:	8b 45 18             	mov    0x18(%ebp),%eax
777835fd:	50                   	push   %eax
777835fe:	8b 45 14             	mov    0x14(%ebp),%eax
77783601:	50                   	push   %eax
77783602:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783605:	50                   	push   %eax
77783606:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783609:	6a 01                	push   $0x1
7778360b:	50                   	push   %eax
7778360c:	8b 45 08             	mov    0x8(%ebp),%eax
7778360f:	50                   	push   %eax
77783610:	e8 2b ff ff ff       	call   77783540 <_WSASendTo@36>
77783615:	83 ca ff             	or     $0xffffffff,%edx
77783618:	83 c4 0c             	add    $0xc,%esp
7778361b:	85 c0                	test   %eax,%eax
7778361d:	75 03                	jne    77783622 <_sendto@24+0x42>
7778361f:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
77783622:	89 d0                	mov    %edx,%eax
77783624:	c9                   	leave  
77783625:	c2 18 00             	ret    $0x18
77783628:	90                   	nop    
77783629:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783630 <_WSASend@28>:
77783630:	55                   	push   %ebp
77783631:	89 e5                	mov    %esp,%ebp
77783633:	53                   	push   %ebx
77783634:	83 ec 1c             	sub    $0x1c,%esp
77783637:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778363a:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
7778363d:	50                   	push   %eax
7778363e:	53                   	push   %ebx
7778363f:	e8 1c ed ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783644:	83 c4 10             	add    $0x10,%esp
77783647:	85 c0                	test   %eax,%eax
77783649:	74 58                	je     777836a3 <_WSASend@28+0x73>
7778364b:	83 ec 0c             	sub    $0xc,%esp
7778364e:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783651:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77783654:	50                   	push   %eax
77783655:	8b 45 20             	mov    0x20(%ebp),%eax
77783658:	6a 00                	push   $0x0
7778365a:	50                   	push   %eax
7778365b:	8b 45 1c             	mov    0x1c(%ebp),%eax
7778365e:	50                   	push   %eax
7778365f:	8b 45 18             	mov    0x18(%ebp),%eax
77783662:	50                   	push   %eax
77783663:	8b 45 14             	mov    0x14(%ebp),%eax
77783666:	50                   	push   %eax
77783667:	8b 45 10             	mov    0x10(%ebp),%eax
7778366a:	50                   	push   %eax
7778366b:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
7778366e:	51                   	push   %ecx
7778366f:	53                   	push   %ebx
77783670:	ff 90 0c 05 00 00    	call   *0x50c(%eax)
77783676:	8b 55 f8             	mov    0xfffffff8(%ebp),%edx
77783679:	89 c3                	mov    %eax,%ebx
7778367b:	52                   	push   %edx
7778367c:	e8 1f dd ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783681:	83 c4 10             	add    $0x10,%esp
77783684:	83 fb ff             	cmp    $0xffffffff,%ebx
77783687:	74 09                	je     77783692 <_WSASend@28+0x62>
77783689:	89 d8                	mov    %ebx,%eax
7778368b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778368e:	c9                   	leave  
7778368f:	c2 1c 00             	ret    $0x1c
77783692:	83 ec 0c             	sub    $0xc,%esp
77783695:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783698:	50                   	push   %eax
77783699:	e8 82 de ff ff       	call   77781520 <_WSASetLastError@4>
7778369e:	83 c4 0c             	add    $0xc,%esp
777836a1:	eb e6                	jmp    77783689 <_WSASend@28+0x59>
777836a3:	83 ec 0c             	sub    $0xc,%esp
777836a6:	68 36 27 00 00       	push   $0x2736
777836ab:	e8 70 de ff ff       	call   77781520 <_WSASetLastError@4>
777836b0:	83 c8 ff             	or     $0xffffffff,%eax
777836b3:	eb d6                	jmp    7778368b <_WSASend@28+0x5b>
777836b5:	8d 74 26 00          	lea    0x0(%esi),%esi
777836b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777836c0 <_send@16>:
777836c0:	55                   	push   %ebp
777836c1:	89 e5                	mov    %esp,%ebp
777836c3:	83 ec 1c             	sub    $0x1c,%esp
777836c6:	8b 45 10             	mov    0x10(%ebp),%eax
777836c9:	6a 00                	push   $0x0
777836cb:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
777836ce:	8b 45 0c             	mov    0xc(%ebp),%eax
777836d1:	89 45 fc             	mov    %eax,0xfffffffc(%ebp)
777836d4:	8b 45 14             	mov    0x14(%ebp),%eax
777836d7:	6a 00                	push   $0x0
777836d9:	50                   	push   %eax
777836da:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777836dd:	8b 4d 08             	mov    0x8(%ebp),%ecx
777836e0:	50                   	push   %eax
777836e1:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777836e4:	6a 01                	push   $0x1
777836e6:	50                   	push   %eax
777836e7:	51                   	push   %ecx
777836e8:	e8 43 ff ff ff       	call   77783630 <_WSASend@28>
777836ed:	5a                   	pop    %edx
777836ee:	83 ca ff             	or     $0xffffffff,%edx
777836f1:	85 c0                	test   %eax,%eax
777836f3:	75 03                	jne    777836f8 <_send@16+0x38>
777836f5:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
777836f8:	89 d0                	mov    %edx,%eax
777836fa:	c9                   	leave  
777836fb:	c2 10 00             	ret    $0x10
777836fe:	89 f6                	mov    %esi,%esi

77783700 <_WSARecvFrom@36>:
77783700:	55                   	push   %ebp
77783701:	89 e5                	mov    %esp,%ebp
77783703:	53                   	push   %ebx
77783704:	83 ec 1c             	sub    $0x1c,%esp
77783707:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778370a:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
7778370d:	50                   	push   %eax
7778370e:	53                   	push   %ebx
7778370f:	e8 4c ec ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783714:	83 c4 10             	add    $0x10,%esp
77783717:	85 c0                	test   %eax,%eax
77783719:	74 66                	je     77783781 <_WSARecvFrom@36+0x81>
7778371b:	50                   	push   %eax
7778371c:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
7778371f:	8b 4d 18             	mov    0x18(%ebp),%ecx
77783722:	50                   	push   %eax
77783723:	8b 45 28             	mov    0x28(%ebp),%eax
77783726:	6a 00                	push   $0x0
77783728:	50                   	push   %eax
77783729:	8b 45 24             	mov    0x24(%ebp),%eax
7778372c:	8b 55 14             	mov    0x14(%ebp),%edx
7778372f:	50                   	push   %eax
77783730:	8b 45 20             	mov    0x20(%ebp),%eax
77783733:	50                   	push   %eax
77783734:	8b 45 1c             	mov    0x1c(%ebp),%eax
77783737:	50                   	push   %eax
77783738:	8b 45 10             	mov    0x10(%ebp),%eax
7778373b:	51                   	push   %ecx
7778373c:	52                   	push   %edx
7778373d:	50                   	push   %eax
7778373e:	8b 45 0c             	mov    0xc(%ebp),%eax
77783741:	50                   	push   %eax
77783742:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783745:	53                   	push   %ebx
77783746:	ff 90 04 05 00 00    	call   *0x504(%eax)
7778374c:	89 c3                	mov    %eax,%ebx
7778374e:	50                   	push   %eax
7778374f:	50                   	push   %eax
77783750:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783753:	50                   	push   %eax
77783754:	e8 47 dc ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783759:	83 c4 10             	add    $0x10,%esp
7778375c:	83 fb ff             	cmp    $0xffffffff,%ebx
7778375f:	74 0f                	je     77783770 <_WSARecvFrom@36+0x70>
77783761:	89 d8                	mov    %ebx,%eax
77783763:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783766:	c9                   	leave  
77783767:	c2 24 00             	ret    $0x24
7778376a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783770:	83 ec 0c             	sub    $0xc,%esp
77783773:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783776:	50                   	push   %eax
77783777:	e8 a4 dd ff ff       	call   77781520 <_WSASetLastError@4>
7778377c:	83 c4 0c             	add    $0xc,%esp
7778377f:	eb e0                	jmp    77783761 <_WSARecvFrom@36+0x61>
77783781:	83 ec 0c             	sub    $0xc,%esp
77783784:	68 36 27 00 00       	push   $0x2736
77783789:	e8 92 dd ff ff       	call   77781520 <_WSASetLastError@4>
7778378e:	83 c8 ff             	or     $0xffffffff,%eax
77783791:	eb d0                	jmp    77783763 <_WSARecvFrom@36+0x63>
77783793:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783799:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777837a0 <_recvfrom@24>:
777837a0:	55                   	push   %ebp
777837a1:	89 e5                	mov    %esp,%ebp
777837a3:	83 ec 24             	sub    $0x24,%esp
777837a6:	8b 45 10             	mov    0x10(%ebp),%eax
777837a9:	8b 55 18             	mov    0x18(%ebp),%edx
777837ac:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
777837af:	8b 45 0c             	mov    0xc(%ebp),%eax
777837b2:	89 45 fc             	mov    %eax,0xfffffffc(%ebp)
777837b5:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
777837b8:	8d 45 14             	lea    0x14(%ebp),%eax
777837bb:	6a 00                	push   $0x0
777837bd:	6a 00                	push   $0x0
777837bf:	51                   	push   %ecx
777837c0:	52                   	push   %edx
777837c1:	50                   	push   %eax
777837c2:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777837c5:	50                   	push   %eax
777837c6:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777837c9:	6a 01                	push   $0x1
777837cb:	50                   	push   %eax
777837cc:	8b 45 08             	mov    0x8(%ebp),%eax
777837cf:	50                   	push   %eax
777837d0:	e8 2b ff ff ff       	call   77783700 <_WSARecvFrom@36>
777837d5:	83 ca ff             	or     $0xffffffff,%edx
777837d8:	83 c4 0c             	add    $0xc,%esp
777837db:	85 c0                	test   %eax,%eax
777837dd:	75 03                	jne    777837e2 <_recvfrom@24+0x42>
777837df:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
777837e2:	89 d0                	mov    %edx,%eax
777837e4:	c9                   	leave  
777837e5:	c2 18 00             	ret    $0x18
777837e8:	90                   	nop    
777837e9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777837f0 <_WSARecv@28>:
777837f0:	55                   	push   %ebp
777837f1:	89 e5                	mov    %esp,%ebp
777837f3:	53                   	push   %ebx
777837f4:	83 ec 1c             	sub    $0x1c,%esp
777837f7:	8b 5d 08             	mov    0x8(%ebp),%ebx
777837fa:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777837fd:	50                   	push   %eax
777837fe:	53                   	push   %ebx
777837ff:	e8 5c eb ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783804:	83 c4 10             	add    $0x10,%esp
77783807:	85 c0                	test   %eax,%eax
77783809:	74 58                	je     77783863 <_WSARecv@28+0x73>
7778380b:	83 ec 0c             	sub    $0xc,%esp
7778380e:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783811:	8b 4d 20             	mov    0x20(%ebp),%ecx
77783814:	8b 55 1c             	mov    0x1c(%ebp),%edx
77783817:	50                   	push   %eax
77783818:	8b 45 18             	mov    0x18(%ebp),%eax
7778381b:	6a 00                	push   $0x0
7778381d:	51                   	push   %ecx
7778381e:	52                   	push   %edx
7778381f:	50                   	push   %eax
77783820:	8b 45 14             	mov    0x14(%ebp),%eax
77783823:	50                   	push   %eax
77783824:	8b 45 10             	mov    0x10(%ebp),%eax
77783827:	50                   	push   %eax
77783828:	8b 45 0c             	mov    0xc(%ebp),%eax
7778382b:	50                   	push   %eax
7778382c:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
7778382f:	53                   	push   %ebx
77783830:	ff 90 fc 04 00 00    	call   *0x4fc(%eax)
77783836:	89 c3                	mov    %eax,%ebx
77783838:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
7778383b:	50                   	push   %eax
7778383c:	e8 5f db ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783841:	83 c4 10             	add    $0x10,%esp
77783844:	83 fb ff             	cmp    $0xffffffff,%ebx
77783847:	74 09                	je     77783852 <_WSARecv@28+0x62>
77783849:	89 d8                	mov    %ebx,%eax
7778384b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778384e:	c9                   	leave  
7778384f:	c2 1c 00             	ret    $0x1c
77783852:	83 ec 0c             	sub    $0xc,%esp
77783855:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783858:	50                   	push   %eax
77783859:	e8 c2 dc ff ff       	call   77781520 <_WSASetLastError@4>
7778385e:	83 c4 0c             	add    $0xc,%esp
77783861:	eb e6                	jmp    77783849 <_WSARecv@28+0x59>
77783863:	83 ec 0c             	sub    $0xc,%esp
77783866:	68 36 27 00 00       	push   $0x2736
7778386b:	e8 b0 dc ff ff       	call   77781520 <_WSASetLastError@4>
77783870:	83 c8 ff             	or     $0xffffffff,%eax
77783873:	eb d6                	jmp    7778384b <_WSARecv@28+0x5b>
77783875:	8d 74 26 00          	lea    0x0(%esi),%esi
77783879:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783880 <_recv@16>:
77783880:	55                   	push   %ebp
77783881:	89 e5                	mov    %esp,%ebp
77783883:	83 ec 1c             	sub    $0x1c,%esp
77783886:	8b 45 10             	mov    0x10(%ebp),%eax
77783889:	6a 00                	push   $0x0
7778388b:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
7778388e:	8b 45 0c             	mov    0xc(%ebp),%eax
77783891:	89 45 fc             	mov    %eax,0xfffffffc(%ebp)
77783894:	8d 45 14             	lea    0x14(%ebp),%eax
77783897:	6a 00                	push   $0x0
77783899:	50                   	push   %eax
7778389a:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
7778389d:	8b 4d 08             	mov    0x8(%ebp),%ecx
777838a0:	50                   	push   %eax
777838a1:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777838a4:	6a 01                	push   $0x1
777838a6:	50                   	push   %eax
777838a7:	51                   	push   %ecx
777838a8:	e8 43 ff ff ff       	call   777837f0 <_WSARecv@28>
777838ad:	5a                   	pop    %edx
777838ae:	83 ca ff             	or     $0xffffffff,%edx
777838b1:	85 c0                	test   %eax,%eax
777838b3:	75 03                	jne    777838b8 <_recv@16+0x38>
777838b5:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
777838b8:	89 d0                	mov    %edx,%eax
777838ba:	c9                   	leave  
777838bb:	c2 10 00             	ret    $0x10
777838be:	89 f6                	mov    %esi,%esi

777838c0 <_WSARecvDisconnect@8>:
777838c0:	55                   	push   %ebp
777838c1:	31 c0                	xor    %eax,%eax
777838c3:	89 e5                	mov    %esp,%ebp
777838c5:	5d                   	pop    %ebp
777838c6:	c2 08 00             	ret    $0x8
777838c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777838d0 <_WSASendDisconnect@8>:
777838d0:	55                   	push   %ebp
777838d1:	31 c0                	xor    %eax,%eax
777838d3:	89 e5                	mov    %esp,%ebp
777838d5:	5d                   	pop    %ebp
777838d6:	c2 08 00             	ret    $0x8
777838d9:	90                   	nop    
777838da:	90                   	nop    
777838db:	90                   	nop    
777838dc:	90                   	nop    
777838dd:	90                   	nop    
777838de:	90                   	nop    
777838df:	90                   	nop    

777838e0 <_getpeername@12>:
777838e0:	55                   	push   %ebp
777838e1:	89 e5                	mov    %esp,%ebp
777838e3:	53                   	push   %ebx
777838e4:	83 ec 14             	sub    $0x14,%esp
777838e7:	a1 00 70 78 77       	mov    0x77787000,%eax
777838ec:	8b 5d 08             	mov    0x8(%ebp),%ebx
777838ef:	85 c0                	test   %eax,%eax
777838f1:	74 5e                	je     77783951 <_getpeername@12+0x71>
777838f3:	50                   	push   %eax
777838f4:	50                   	push   %eax
777838f5:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777838f8:	50                   	push   %eax
777838f9:	53                   	push   %ebx
777838fa:	e8 61 ea ff ff       	call   77782360 <_ReferenceProviderByHandle>
777838ff:	83 c4 10             	add    $0x10,%esp
77783902:	85 c0                	test   %eax,%eax
77783904:	74 5d                	je     77783963 <_getpeername@12+0x83>
77783906:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783909:	8b 4d 0c             	mov    0xc(%ebp),%ecx
7778390c:	50                   	push   %eax
7778390d:	8b 45 10             	mov    0x10(%ebp),%eax
77783910:	50                   	push   %eax
77783911:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783914:	51                   	push   %ecx
77783915:	53                   	push   %ebx
77783916:	ff 90 e0 04 00 00    	call   *0x4e0(%eax)
7778391c:	8b 55 f8             	mov    0xfffffff8(%ebp),%edx
7778391f:	83 ec 0c             	sub    $0xc,%esp
77783922:	89 c3                	mov    %eax,%ebx
77783924:	52                   	push   %edx
77783925:	e8 76 da ff ff       	call   777813a0 <_DereferenceProviderByPointer>
7778392a:	83 c4 10             	add    $0x10,%esp
7778392d:	83 fb ff             	cmp    $0xffffffff,%ebx
77783930:	74 0e                	je     77783940 <_getpeername@12+0x60>
77783932:	89 d8                	mov    %ebx,%eax
77783934:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783937:	c9                   	leave  
77783938:	c2 0c 00             	ret    $0xc
7778393b:	90                   	nop    
7778393c:	8d 74 26 00          	lea    0x0(%esi),%esi
77783940:	83 ec 0c             	sub    $0xc,%esp
77783943:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783946:	50                   	push   %eax
77783947:	e8 d4 db ff ff       	call   77781520 <_WSASetLastError@4>
7778394c:	83 c4 0c             	add    $0xc,%esp
7778394f:	eb e1                	jmp    77783932 <_getpeername@12+0x52>
77783951:	83 ec 0c             	sub    $0xc,%esp
77783954:	68 6d 27 00 00       	push   $0x276d
77783959:	e8 c2 db ff ff       	call   77781520 <_WSASetLastError@4>
7778395e:	83 c8 ff             	or     $0xffffffff,%eax
77783961:	eb d1                	jmp    77783934 <_getpeername@12+0x54>
77783963:	83 ec 0c             	sub    $0xc,%esp
77783966:	68 36 27 00 00       	push   $0x2736
7778396b:	eb ec                	jmp    77783959 <_getpeername@12+0x79>
7778396d:	8d 76 00             	lea    0x0(%esi),%esi

77783970 <_getsockname@12>:
77783970:	55                   	push   %ebp
77783971:	89 e5                	mov    %esp,%ebp
77783973:	53                   	push   %ebx
77783974:	83 ec 14             	sub    $0x14,%esp
77783977:	a1 00 70 78 77       	mov    0x77787000,%eax
7778397c:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778397f:	85 c0                	test   %eax,%eax
77783981:	74 5e                	je     777839e1 <_getsockname@12+0x71>
77783983:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783986:	51                   	push   %ecx
77783987:	51                   	push   %ecx
77783988:	50                   	push   %eax
77783989:	53                   	push   %ebx
7778398a:	e8 d1 e9 ff ff       	call   77782360 <_ReferenceProviderByHandle>
7778398f:	83 c4 10             	add    $0x10,%esp
77783992:	85 c0                	test   %eax,%eax
77783994:	74 5d                	je     777839f3 <_getsockname@12+0x83>
77783996:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783999:	8b 55 10             	mov    0x10(%ebp),%edx
7778399c:	50                   	push   %eax
7778399d:	8b 45 0c             	mov    0xc(%ebp),%eax
777839a0:	52                   	push   %edx
777839a1:	50                   	push   %eax
777839a2:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
777839a5:	53                   	push   %ebx
777839a6:	ff 90 e4 04 00 00    	call   *0x4e4(%eax)
777839ac:	83 ec 0c             	sub    $0xc,%esp
777839af:	89 c3                	mov    %eax,%ebx
777839b1:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
777839b4:	50                   	push   %eax
777839b5:	e8 e6 d9 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
777839ba:	83 c4 10             	add    $0x10,%esp
777839bd:	83 fb ff             	cmp    $0xffffffff,%ebx
777839c0:	74 0e                	je     777839d0 <_getsockname@12+0x60>
777839c2:	89 d8                	mov    %ebx,%eax
777839c4:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777839c7:	c9                   	leave  
777839c8:	c2 0c 00             	ret    $0xc
777839cb:	90                   	nop    
777839cc:	8d 74 26 00          	lea    0x0(%esi),%esi
777839d0:	83 ec 0c             	sub    $0xc,%esp
777839d3:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777839d6:	50                   	push   %eax
777839d7:	e8 44 db ff ff       	call   77781520 <_WSASetLastError@4>
777839dc:	83 c4 0c             	add    $0xc,%esp
777839df:	eb e1                	jmp    777839c2 <_getsockname@12+0x52>
777839e1:	83 ec 0c             	sub    $0xc,%esp
777839e4:	68 6d 27 00 00       	push   $0x276d
777839e9:	e8 32 db ff ff       	call   77781520 <_WSASetLastError@4>
777839ee:	83 c8 ff             	or     $0xffffffff,%eax
777839f1:	eb d1                	jmp    777839c4 <_getsockname@12+0x54>
777839f3:	83 ec 0c             	sub    $0xc,%esp
777839f6:	68 36 27 00 00       	push   $0x2736
777839fb:	eb ec                	jmp    777839e9 <_getsockname@12+0x79>
777839fd:	8d 76 00             	lea    0x0(%esi),%esi

77783a00 <_getsockopt@20>:
77783a00:	55                   	push   %ebp
77783a01:	89 e5                	mov    %esp,%ebp
77783a03:	53                   	push   %ebx
77783a04:	83 ec 14             	sub    $0x14,%esp
77783a07:	a1 00 70 78 77       	mov    0x77787000,%eax
77783a0c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783a0f:	85 c0                	test   %eax,%eax
77783a11:	74 61                	je     77783a74 <_getsockopt@20+0x74>
77783a13:	50                   	push   %eax
77783a14:	50                   	push   %eax
77783a15:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783a18:	50                   	push   %eax
77783a19:	53                   	push   %ebx
77783a1a:	e8 41 e9 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783a1f:	83 c4 10             	add    $0x10,%esp
77783a22:	85 c0                	test   %eax,%eax
77783a24:	74 60                	je     77783a86 <_getsockopt@20+0x86>
77783a26:	50                   	push   %eax
77783a27:	50                   	push   %eax
77783a28:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783a2b:	50                   	push   %eax
77783a2c:	8b 4d 18             	mov    0x18(%ebp),%ecx
77783a2f:	8b 55 14             	mov    0x14(%ebp),%edx
77783a32:	8b 45 10             	mov    0x10(%ebp),%eax
77783a35:	51                   	push   %ecx
77783a36:	52                   	push   %edx
77783a37:	50                   	push   %eax
77783a38:	8b 45 0c             	mov    0xc(%ebp),%eax
77783a3b:	50                   	push   %eax
77783a3c:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783a3f:	53                   	push   %ebx
77783a40:	ff 90 e8 04 00 00    	call   *0x4e8(%eax)
77783a46:	89 c3                	mov    %eax,%ebx
77783a48:	50                   	push   %eax
77783a49:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783a4c:	50                   	push   %eax
77783a4d:	e8 4e d9 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783a52:	83 c4 10             	add    $0x10,%esp
77783a55:	83 fb ff             	cmp    $0xffffffff,%ebx
77783a58:	74 09                	je     77783a63 <_getsockopt@20+0x63>
77783a5a:	89 d8                	mov    %ebx,%eax
77783a5c:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783a5f:	c9                   	leave  
77783a60:	c2 14 00             	ret    $0x14
77783a63:	83 ec 0c             	sub    $0xc,%esp
77783a66:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783a69:	50                   	push   %eax
77783a6a:	e8 b1 da ff ff       	call   77781520 <_WSASetLastError@4>
77783a6f:	83 c4 0c             	add    $0xc,%esp
77783a72:	eb e6                	jmp    77783a5a <_getsockopt@20+0x5a>
77783a74:	83 ec 0c             	sub    $0xc,%esp
77783a77:	68 6d 27 00 00       	push   $0x276d
77783a7c:	e8 9f da ff ff       	call   77781520 <_WSASetLastError@4>
77783a81:	83 c8 ff             	or     $0xffffffff,%eax
77783a84:	eb d6                	jmp    77783a5c <_getsockopt@20+0x5c>
77783a86:	83 ec 0c             	sub    $0xc,%esp
77783a89:	68 36 27 00 00       	push   $0x2736
77783a8e:	eb ec                	jmp    77783a7c <_getsockopt@20+0x7c>

77783a90 <_setsockopt@20>:
77783a90:	55                   	push   %ebp
77783a91:	89 e5                	mov    %esp,%ebp
77783a93:	53                   	push   %ebx
77783a94:	83 ec 14             	sub    $0x14,%esp
77783a97:	a1 00 70 78 77       	mov    0x77787000,%eax
77783a9c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783a9f:	85 c0                	test   %eax,%eax
77783aa1:	74 61                	je     77783b04 <_setsockopt@20+0x74>
77783aa3:	50                   	push   %eax
77783aa4:	50                   	push   %eax
77783aa5:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783aa8:	50                   	push   %eax
77783aa9:	53                   	push   %ebx
77783aaa:	e8 b1 e8 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783aaf:	83 c4 10             	add    $0x10,%esp
77783ab2:	85 c0                	test   %eax,%eax
77783ab4:	74 60                	je     77783b16 <_setsockopt@20+0x86>
77783ab6:	50                   	push   %eax
77783ab7:	50                   	push   %eax
77783ab8:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783abb:	50                   	push   %eax
77783abc:	8b 45 18             	mov    0x18(%ebp),%eax
77783abf:	50                   	push   %eax
77783ac0:	8b 45 14             	mov    0x14(%ebp),%eax
77783ac3:	50                   	push   %eax
77783ac4:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783ac7:	8b 4d 10             	mov    0x10(%ebp),%ecx
77783aca:	8b 55 0c             	mov    0xc(%ebp),%edx
77783acd:	51                   	push   %ecx
77783ace:	52                   	push   %edx
77783acf:	53                   	push   %ebx
77783ad0:	ff 90 18 05 00 00    	call   *0x518(%eax)
77783ad6:	89 c3                	mov    %eax,%ebx
77783ad8:	50                   	push   %eax
77783ad9:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783adc:	50                   	push   %eax
77783add:	e8 be d8 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783ae2:	83 c4 10             	add    $0x10,%esp
77783ae5:	83 fb ff             	cmp    $0xffffffff,%ebx
77783ae8:	74 09                	je     77783af3 <_setsockopt@20+0x63>
77783aea:	89 d8                	mov    %ebx,%eax
77783aec:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783aef:	c9                   	leave  
77783af0:	c2 14 00             	ret    $0x14
77783af3:	83 ec 0c             	sub    $0xc,%esp
77783af6:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783af9:	50                   	push   %eax
77783afa:	e8 21 da ff ff       	call   77781520 <_WSASetLastError@4>
77783aff:	83 c4 0c             	add    $0xc,%esp
77783b02:	eb e6                	jmp    77783aea <_setsockopt@20+0x5a>
77783b04:	83 ec 0c             	sub    $0xc,%esp
77783b07:	68 6d 27 00 00       	push   $0x276d
77783b0c:	e8 0f da ff ff       	call   77781520 <_WSASetLastError@4>
77783b11:	83 c8 ff             	or     $0xffffffff,%eax
77783b14:	eb d6                	jmp    77783aec <_setsockopt@20+0x5c>
77783b16:	83 ec 0c             	sub    $0xc,%esp
77783b19:	68 36 27 00 00       	push   $0x2736
77783b1e:	eb ec                	jmp    77783b0c <_setsockopt@20+0x7c>

77783b20 <_shutdown@8>:
77783b20:	55                   	push   %ebp
77783b21:	89 e5                	mov    %esp,%ebp
77783b23:	53                   	push   %ebx
77783b24:	83 ec 14             	sub    $0x14,%esp
77783b27:	a1 00 70 78 77       	mov    0x77787000,%eax
77783b2c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783b2f:	85 c0                	test   %eax,%eax
77783b31:	74 55                	je     77783b88 <_shutdown@8+0x68>
77783b33:	50                   	push   %eax
77783b34:	50                   	push   %eax
77783b35:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783b38:	50                   	push   %eax
77783b39:	53                   	push   %ebx
77783b3a:	e8 21 e8 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783b3f:	83 c4 10             	add    $0x10,%esp
77783b42:	85 c0                	test   %eax,%eax
77783b44:	74 54                	je     77783b9a <_shutdown@8+0x7a>
77783b46:	50                   	push   %eax
77783b47:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783b4a:	50                   	push   %eax
77783b4b:	8b 45 0c             	mov    0xc(%ebp),%eax
77783b4e:	50                   	push   %eax
77783b4f:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783b52:	53                   	push   %ebx
77783b53:	ff 90 1c 05 00 00    	call   *0x51c(%eax)
77783b59:	8b 55 f8             	mov    0xfffffff8(%ebp),%edx
77783b5c:	89 c3                	mov    %eax,%ebx
77783b5e:	51                   	push   %ecx
77783b5f:	51                   	push   %ecx
77783b60:	52                   	push   %edx
77783b61:	e8 3a d8 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783b66:	83 c4 10             	add    $0x10,%esp
77783b69:	83 fb ff             	cmp    $0xffffffff,%ebx
77783b6c:	74 09                	je     77783b77 <_shutdown@8+0x57>
77783b6e:	89 d8                	mov    %ebx,%eax
77783b70:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783b73:	c9                   	leave  
77783b74:	c2 08 00             	ret    $0x8
77783b77:	83 ec 0c             	sub    $0xc,%esp
77783b7a:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783b7d:	50                   	push   %eax
77783b7e:	e8 9d d9 ff ff       	call   77781520 <_WSASetLastError@4>
77783b83:	83 c4 0c             	add    $0xc,%esp
77783b86:	eb e6                	jmp    77783b6e <_shutdown@8+0x4e>
77783b88:	83 ec 0c             	sub    $0xc,%esp
77783b8b:	68 6d 27 00 00       	push   $0x276d
77783b90:	e8 8b d9 ff ff       	call   77781520 <_WSASetLastError@4>
77783b95:	83 c8 ff             	or     $0xffffffff,%eax
77783b98:	eb d6                	jmp    77783b70 <_shutdown@8+0x50>
77783b9a:	83 ec 0c             	sub    $0xc,%esp
77783b9d:	68 36 27 00 00       	push   $0x2736
77783ba2:	eb ec                	jmp    77783b90 <_shutdown@8+0x70>
77783ba4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783baa:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77783bb0 <_WSAAsyncSelect@16>:
77783bb0:	55                   	push   %ebp
77783bb1:	89 e5                	mov    %esp,%ebp
77783bb3:	53                   	push   %ebx
77783bb4:	83 ec 14             	sub    $0x14,%esp
77783bb7:	a1 00 70 78 77       	mov    0x77787000,%eax
77783bbc:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783bbf:	85 c0                	test   %eax,%eax
77783bc1:	74 5e                	je     77783c21 <_WSAAsyncSelect@16+0x71>
77783bc3:	50                   	push   %eax
77783bc4:	50                   	push   %eax
77783bc5:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783bc8:	50                   	push   %eax
77783bc9:	53                   	push   %ebx
77783bca:	e8 91 e7 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783bcf:	83 c4 10             	add    $0x10,%esp
77783bd2:	85 c0                	test   %eax,%eax
77783bd4:	74 5d                	je     77783c33 <_WSAAsyncSelect@16+0x83>
77783bd6:	83 ec 0c             	sub    $0xc,%esp
77783bd9:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783bdc:	8b 4d 10             	mov    0x10(%ebp),%ecx
77783bdf:	8b 55 0c             	mov    0xc(%ebp),%edx
77783be2:	50                   	push   %eax
77783be3:	8b 45 14             	mov    0x14(%ebp),%eax
77783be6:	50                   	push   %eax
77783be7:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783bea:	51                   	push   %ecx
77783beb:	52                   	push   %edx
77783bec:	53                   	push   %ebx
77783bed:	ff 90 b8 04 00 00    	call   *0x4b8(%eax)
77783bf3:	89 c3                	mov    %eax,%ebx
77783bf5:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783bf8:	50                   	push   %eax
77783bf9:	e8 a2 d7 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783bfe:	83 c4 10             	add    $0x10,%esp
77783c01:	83 fb ff             	cmp    $0xffffffff,%ebx
77783c04:	74 0a                	je     77783c10 <_WSAAsyncSelect@16+0x60>
77783c06:	89 d8                	mov    %ebx,%eax
77783c08:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783c0b:	c9                   	leave  
77783c0c:	c2 10 00             	ret    $0x10
77783c0f:	90                   	nop    
77783c10:	83 ec 0c             	sub    $0xc,%esp
77783c13:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783c16:	50                   	push   %eax
77783c17:	e8 04 d9 ff ff       	call   77781520 <_WSASetLastError@4>
77783c1c:	83 c4 0c             	add    $0xc,%esp
77783c1f:	eb e5                	jmp    77783c06 <_WSAAsyncSelect@16+0x56>
77783c21:	83 ec 0c             	sub    $0xc,%esp
77783c24:	68 6d 27 00 00       	push   $0x276d
77783c29:	e8 f2 d8 ff ff       	call   77781520 <_WSASetLastError@4>
77783c2e:	83 c8 ff             	or     $0xffffffff,%eax
77783c31:	eb d5                	jmp    77783c08 <_WSAAsyncSelect@16+0x58>
77783c33:	83 ec 0c             	sub    $0xc,%esp
77783c36:	68 36 27 00 00       	push   $0x2736
77783c3b:	eb ec                	jmp    77783c29 <_WSAAsyncSelect@16+0x79>
77783c3d:	8d 76 00             	lea    0x0(%esi),%esi

77783c40 <_WSACancelBlockingCall@0>:
77783c40:	55                   	push   %ebp
77783c41:	31 c0                	xor    %eax,%eax
77783c43:	89 e5                	mov    %esp,%ebp
77783c45:	5d                   	pop    %ebp
77783c46:	c3                   	ret    
77783c47:	89 f6                	mov    %esi,%esi
77783c49:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783c50 <_WSADuplicateSocketA@12>:
77783c50:	55                   	push   %ebp

/* EOF */
77783c51:	31 c0                	xor    %eax,%eax
77783c53:	89 e5                	mov    %esp,%ebp
77783c55:	5d                   	pop    %ebp
77783c56:	c2 0c 00             	ret    $0xc
77783c59:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783c60 <_WSADuplicateSocketW@12>:
77783c60:	55                   	push   %ebp
77783c61:	89 e5                	mov    %esp,%ebp
77783c63:	53                   	push   %ebx
77783c64:	83 ec 14             	sub    $0x14,%esp
77783c67:	a1 00 70 78 77       	mov    0x77787000,%eax
77783c6c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783c6f:	85 c0                	test   %eax,%eax
77783c71:	74 5e                	je     77783cd1 <_WSADuplicateSocketW@12+0x71>
77783c73:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783c76:	51                   	push   %ecx
77783c77:	51                   	push   %ecx
77783c78:	50                   	push   %eax
77783c79:	53                   	push   %ebx
77783c7a:	e8 e1 e6 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783c7f:	83 c4 10             	add    $0x10,%esp
77783c82:	85 c0                	test   %eax,%eax
77783c84:	74 5d                	je     77783ce3 <_WSADuplicateSocketW@12+0x83>
77783c86:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783c89:	8b 55 10             	mov    0x10(%ebp),%edx
77783c8c:	50                   	push   %eax
77783c8d:	8b 45 0c             	mov    0xc(%ebp),%eax
77783c90:	52                   	push   %edx
77783c91:	50                   	push   %eax
77783c92:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783c95:	53                   	push   %ebx
77783c96:	ff 90 d0 04 00 00    	call   *0x4d0(%eax)
77783c9c:	83 ec 0c             	sub    $0xc,%esp
77783c9f:	89 c3                	mov    %eax,%ebx
77783ca1:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783ca4:	50                   	push   %eax
77783ca5:	e8 f6 d6 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783caa:	83 c4 10             	add    $0x10,%esp
77783cad:	83 fb ff             	cmp    $0xffffffff,%ebx
77783cb0:	74 0e                	je     77783cc0 <_WSADuplicateSocketW@12+0x60>
77783cb2:	89 d8                	mov    %ebx,%eax
77783cb4:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783cb7:	c9                   	leave  
77783cb8:	c2 0c 00             	ret    $0xc
77783cbb:	90                   	nop    
77783cbc:	8d 74 26 00          	lea    0x0(%esi),%esi
77783cc0:	83 ec 0c             	sub    $0xc,%esp
77783cc3:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783cc6:	50                   	push   %eax
77783cc7:	e8 54 d8 ff ff       	call   77781520 <_WSASetLastError@4>
77783ccc:	83 c4 0c             	add    $0xc,%esp
77783ccf:	eb e1                	jmp    77783cb2 <_WSADuplicateSocketW@12+0x52>
77783cd1:	83 ec 0c             	sub    $0xc,%esp
77783cd4:	68 6d 27 00 00       	push   $0x276d
77783cd9:	e8 42 d8 ff ff       	call   77781520 <_WSASetLastError@4>
77783cde:	83 c8 ff             	or     $0xffffffff,%eax
77783ce1:	eb d1                	jmp    77783cb4 <_WSADuplicateSocketW@12+0x54>
77783ce3:	83 ec 0c             	sub    $0xc,%esp
77783ce6:	68 36 27 00 00       	push   $0x2736
77783ceb:	eb ec                	jmp    77783cd9 <_WSADuplicateSocketW@12+0x79>
77783ced:	8d 76 00             	lea    0x0(%esi),%esi

77783cf0 <_WSAEnumProtocolsA@12>:
77783cf0:	55                   	push   %ebp
77783cf1:	31 c0                	xor    %eax,%eax
77783cf3:	89 e5                	mov    %esp,%ebp
77783cf5:	5d                   	pop    %ebp
77783cf6:	c2 0c 00             	ret    $0xc
77783cf9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783d00 <_WSAEnumProtocolsW@12>:
77783d00:	55                   	push   %ebp
77783d01:	31 c0                	xor    %eax,%eax
77783d03:	89 e5                	mov    %esp,%ebp
77783d05:	5d                   	pop    %ebp
77783d06:	c2 0c 00             	ret    $0xc
77783d09:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783d10 <_WSAGetOverlappedResult@20>:
77783d10:	55                   	push   %ebp
77783d11:	89 e5                	mov    %esp,%ebp
77783d13:	53                   	push   %ebx
77783d14:	83 ec 14             	sub    $0x14,%esp
77783d17:	a1 00 70 78 77       	mov    0x77787000,%eax
77783d1c:	8b 5d 08             	mov    0x8(%ebp),%ebx
77783d1f:	85 c0                	test   %eax,%eax
77783d21:	74 60                	je     77783d83 <_WSAGetOverlappedResult@20+0x73>
77783d23:	50                   	push   %eax
77783d24:	50                   	push   %eax
77783d25:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
77783d28:	50                   	push   %eax
77783d29:	53                   	push   %ebx
77783d2a:	e8 31 e6 ff ff       	call   77782360 <_ReferenceProviderByHandle>
77783d2f:	83 c4 10             	add    $0x10,%esp
77783d32:	85 c0                	test   %eax,%eax
77783d34:	74 5f                	je     77783d95 <_WSAGetOverlappedResult@20+0x85>
77783d36:	50                   	push   %eax
77783d37:	50                   	push   %eax
77783d38:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77783d3b:	50                   	push   %eax
77783d3c:	8b 4d 18             	mov    0x18(%ebp),%ecx
77783d3f:	8b 55 14             	mov    0x14(%ebp),%edx
77783d42:	8b 45 10             	mov    0x10(%ebp),%eax
77783d45:	51                   	push   %ecx
77783d46:	52                   	push   %edx
77783d47:	50                   	push   %eax
77783d48:	8b 45 0c             	mov    0xc(%ebp),%eax
77783d4b:	50                   	push   %eax
77783d4c:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783d4f:	53                   	push   %ebx
77783d50:	ff 90 dc 04 00 00    	call   *0x4dc(%eax)
77783d56:	89 c3                	mov    %eax,%ebx
77783d58:	50                   	push   %eax
77783d59:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
77783d5c:	50                   	push   %eax
77783d5d:	e8 3e d6 ff ff       	call   777813a0 <_DereferenceProviderByPointer>
77783d62:	83 c4 10             	add    $0x10,%esp
77783d65:	85 db                	test   %ebx,%ebx
77783d67:	74 09                	je     77783d72 <_WSAGetOverlappedResult@20+0x62>
77783d69:	89 d8                	mov    %ebx,%eax
77783d6b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783d6e:	c9                   	leave  
77783d6f:	c2 14 00             	ret    $0x14
77783d72:	83 ec 0c             	sub    $0xc,%esp
77783d75:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77783d78:	50                   	push   %eax
77783d79:	e8 a2 d7 ff ff       	call   77781520 <_WSASetLastError@4>
77783d7e:	83 c4 0c             	add    $0xc,%esp
77783d81:	eb e6                	jmp    77783d69 <_WSAGetOverlappedResult@20+0x59>
77783d83:	83 ec 0c             	sub    $0xc,%esp
77783d86:	68 6d 27 00 00       	push   $0x276d
77783d8b:	e8 90 d7 ff ff       	call   77781520 <_WSASetLastError@4>
77783d90:	83 c8 ff             	or     $0xffffffff,%eax
77783d93:	eb d6                	jmp    77783d6b <_WSAGetOverlappedResult@20+0x5b>
77783d95:	83 ec 0c             	sub    $0xc,%esp
77783d98:	68 36 27 00 00       	push   $0x2736
77783d9d:	eb ec                	jmp    77783d8b <_WSAGetOverlappedResult@20+0x7b>
77783d9f:	90                   	nop    

77783da0 <_WSAGetQOSByName@12>:
77783da0:	55                   	push   %ebp
77783da1:	31 c0                	xor    %eax,%eax
77783da3:	89 e5                	mov    %esp,%ebp
77783da5:	5d                   	pop    %ebp
77783da6:	c2 0c 00             	ret    $0xc
77783da9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783db0 <_WSAHtonl@12>:
77783db0:	55                   	push   %ebp
77783db1:	31 c0                	xor    %eax,%eax
77783db3:	89 e5                	mov    %esp,%ebp
77783db5:	5d                   	pop    %ebp
77783db6:	c2 0c 00             	ret    $0xc
77783db9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783dc0 <_WSAHtons@12>:
77783dc0:	55                   	push   %ebp
77783dc1:	31 c0                	xor    %eax,%eax
77783dc3:	89 e5                	mov    %esp,%ebp
77783dc5:	5d                   	pop    %ebp
77783dc6:	c2 0c 00             	ret    $0xc
77783dc9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783dd0 <_WSAIsBlocking@0>:
77783dd0:	55                   	push   %ebp
77783dd1:	31 c0                	xor    %eax,%eax
77783dd3:	89 e5                	mov    %esp,%ebp
77783dd5:	5d                   	pop    %ebp
77783dd6:	c3                   	ret    
77783dd7:	89 f6                	mov    %esi,%esi
77783dd9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783de0 <_WSAJoinLeaf@32>:
77783de0:	55                   	push   %ebp
77783de1:	83 c8 ff             	or     $0xffffffff,%eax
77783de4:	89 e5                	mov    %esp,%ebp
77783de6:	5d                   	pop    %ebp
77783de7:	c2 20 00             	ret    $0x20
77783dea:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77783df0 <_WSANtohl@12>:
77783df0:	55                   	push   %ebp
77783df1:	31 c0                	xor    %eax,%eax
77783df3:	89 e5                	mov    %esp,%ebp
77783df5:	5d                   	pop    %ebp
77783df6:	c2 0c 00             	ret    $0xc
77783df9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e00 <_WSANtohs@12>:
77783e00:	55                   	push   %ebp
77783e01:	31 c0                	xor    %eax,%eax
77783e03:	89 e5                	mov    %esp,%ebp
77783e05:	5d                   	pop    %ebp
77783e06:	c2 0c 00             	ret    $0xc
77783e09:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e10 <_WSASetBlockingHook@4>:
77783e10:	55                   	push   %ebp
77783e11:	31 c0                	xor    %eax,%eax
77783e13:	89 e5                	mov    %esp,%ebp
77783e15:	5d                   	pop    %ebp
77783e16:	c2 04 00             	ret    $0x4
77783e19:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e20 <_WSAUnhookBlockingHook@0>:
77783e20:	55                   	push   %ebp
77783e21:	31 c0                	xor    %eax,%eax
77783e23:	89 e5                	mov    %esp,%ebp
77783e25:	5d                   	pop    %ebp
77783e26:	c3                   	ret    
77783e27:	89 f6                	mov    %esi,%esi
77783e29:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783e30 <_WSAProviderConfigChange@12>:
77783e30:	55                   	push   %ebp
77783e31:	31 c0                	xor    %eax,%eax
77783e33:	89 e5                	mov    %esp,%ebp
77783e35:	5d                   	pop    %ebp
77783e36:	c2 0c 00             	ret    $0xc
77783e39:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e40 <_WSACancelAsyncRequest@4>:
77783e40:	55                   	push   %ebp
77783e41:	31 c0                	xor    %eax,%eax
77783e43:	89 e5                	mov    %esp,%ebp
77783e45:	5d                   	pop    %ebp
77783e46:	c2 04 00             	ret    $0x4
77783e49:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e50 <_WPUCompleteOverlappedRequest@20>:
77783e50:	55                   	push   %ebp
77783e51:	31 c0                	xor    %eax,%eax
77783e53:	89 e5                	mov    %esp,%ebp
77783e55:	5d                   	pop    %ebp
77783e56:	c2 14 00             	ret    $0x14
77783e59:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e60 <_WSPStartup@76>:
77783e60:	55                   	push   %ebp
77783e61:	31 c0                	xor    %eax,%eax
77783e63:	89 e5                	mov    %esp,%ebp
77783e65:	5d                   	pop    %ebp
77783e66:	c2 4c 00             	ret    $0x4c
77783e69:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e70 <_WSCDeinstallProvider@8>:
77783e70:	55                   	push   %ebp
77783e71:	31 c0                	xor    %eax,%eax
77783e73:	89 e5                	mov    %esp,%ebp
77783e75:	5d                   	pop    %ebp
77783e76:	c2 08 00             	ret    $0x8
77783e79:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e80 <_WSCEnumProtocols@16>:
77783e80:	55                   	push   %ebp
77783e81:	31 c0                	xor    %eax,%eax
77783e83:	89 e5                	mov    %esp,%ebp
77783e85:	5d                   	pop    %ebp
77783e86:	c2 10 00             	ret    $0x10
77783e89:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783e90 <_WSCGetProviderPath@16>:
77783e90:	55                   	push   %ebp
77783e91:	31 c0                	xor    %eax,%eax
77783e93:	89 e5                	mov    %esp,%ebp
77783e95:	5d                   	pop    %ebp
77783e96:	c2 10 00             	ret    $0x10
77783e99:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783ea0 <_WSCInstallProvider@20>:
77783ea0:	55                   	push   %ebp
77783ea1:	31 c0                	xor    %eax,%eax
77783ea3:	89 e5                	mov    %esp,%ebp
77783ea5:	5d                   	pop    %ebp
77783ea6:	c2 14 00             	ret    $0x14
77783ea9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783eb0 <_WSCEnableNSProvider@8>:
77783eb0:	55                   	push   %ebp
77783eb1:	31 c0                	xor    %eax,%eax
77783eb3:	89 e5                	mov    %esp,%ebp
77783eb5:	5d                   	pop    %ebp
77783eb6:	c2 08 00             	ret    $0x8
77783eb9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783ec0 <_WSCInstallNameSpace@20>:
77783ec0:	55                   	push   %ebp
77783ec1:	31 c0                	xor    %eax,%eax
77783ec3:	89 e5                	mov    %esp,%ebp
77783ec5:	5d                   	pop    %ebp
77783ec6:	c2 14 00             	ret    $0x14
77783ec9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783ed0 <_WSCUnInstallNameSpace@4>:
77783ed0:	55                   	push   %ebp
77783ed1:	31 c0                	xor    %eax,%eax
77783ed3:	89 e5                	mov    %esp,%ebp
77783ed5:	5d                   	pop    %ebp
77783ed6:	c2 04 00             	ret    $0x4
77783ed9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783ee0 <_WSCWriteProviderOrder@8>:
77783ee0:	55                   	push   %ebp
77783ee1:	31 c0                	xor    %eax,%eax
77783ee3:	89 e5                	mov    %esp,%ebp
77783ee5:	5d                   	pop    %ebp
77783ee6:	c2 08 00             	ret    $0x8
77783ee9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783ef0 <_WSANSPIoctl@32>:
77783ef0:	55                   	push   %ebp
77783ef1:	31 c0                	xor    %eax,%eax
77783ef3:	89 e5                	mov    %esp,%ebp
77783ef5:	5d                   	pop    %ebp
77783ef6:	c2 20 00             	ret    $0x20
77783ef9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f00 <_WSCUpdateProvider@20>:
77783f00:	55                   	push   %ebp
77783f01:	31 c0                	xor    %eax,%eax
77783f03:	89 e5                	mov    %esp,%ebp
77783f05:	5d                   	pop    %ebp
77783f06:	c2 14 00             	ret    $0x14
77783f09:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f10 <_WSCWriteNameSpaceOrder@8>:
77783f10:	55                   	push   %ebp
77783f11:	31 c0                	xor    %eax,%eax
77783f13:	89 e5                	mov    %esp,%ebp
77783f15:	5d                   	pop    %ebp
77783f16:	c2 08 00             	ret    $0x8
77783f19:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f20 <_freeaddrinfo@4>:
77783f20:	55                   	push   %ebp
77783f21:	89 e5                	mov    %esp,%ebp
77783f23:	5d                   	pop    %ebp
77783f24:	c2 04 00             	ret    $0x4
77783f27:	89 f6                	mov    %esi,%esi
77783f29:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783f30 <_getaddrinfo@16>:
77783f30:	55                   	push   %ebp
77783f31:	31 c0                	xor    %eax,%eax
77783f33:	89 e5                	mov    %esp,%ebp
77783f35:	5d                   	pop    %ebp
77783f36:	c2 10 00             	ret    $0x10
77783f39:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f40 <_getnameinfo@28>:
77783f40:	55                   	push   %ebp
77783f41:	31 c0                	xor    %eax,%eax
77783f43:	89 e5                	mov    %esp,%ebp
77783f45:	5d                   	pop    %ebp
77783f46:	c2 1c 00             	ret    $0x1c
77783f49:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f50 <_WEP@0>:
77783f50:	55                   	push   %ebp
77783f51:	89 e5                	mov    %esp,%ebp
77783f53:	5d                   	pop    %ebp
77783f54:	c3                   	ret    
77783f55:	8d 74 26 00          	lea    0x0(%esi),%esi
77783f59:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783f60 <_WSApSetPostRoutine@4>:
77783f60:	55                   	push   %ebp
77783f61:	31 c0                	xor    %eax,%eax
77783f63:	89 e5                	mov    %esp,%ebp
77783f65:	5d                   	pop    %ebp
77783f66:	c2 04 00             	ret    $0x4
77783f69:	90                   	nop    
77783f6a:	90                   	nop    
77783f6b:	90                   	nop    
77783f6c:	90                   	nop    
77783f6d:	90                   	nop    
77783f6e:	90                   	nop    
77783f6f:	90                   	nop    

77783f70 <_WPUCloseEvent@8>:
77783f70:	55                   	push   %ebp
77783f71:	31 c0                	xor    %eax,%eax
77783f73:	89 e5                	mov    %esp,%ebp
77783f75:	5d                   	pop    %ebp
77783f76:	c2 08 00             	ret    $0x8
77783f79:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f80 <_WPUCloseSocketHandle@8>:
77783f80:	55                   	push   %ebp
77783f81:	31 c0                	xor    %eax,%eax
77783f83:	89 e5                	mov    %esp,%ebp
77783f85:	5d                   	pop    %ebp
77783f86:	c2 08 00             	ret    $0x8
77783f89:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783f90 <_WPUCloseThread@8>:
77783f90:	55                   	push   %ebp
77783f91:	31 c0                	xor    %eax,%eax
77783f93:	89 e5                	mov    %esp,%ebp
77783f95:	5d                   	pop    %ebp
77783f96:	c2 08 00             	ret    $0x8
77783f99:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783fa0 <_WPUCreateEvent@4>:
77783fa0:	55                   	push   %ebp
77783fa1:	31 c0                	xor    %eax,%eax
77783fa3:	89 e5                	mov    %esp,%ebp
77783fa5:	5d                   	pop    %ebp
77783fa6:	c2 04 00             	ret    $0x4
77783fa9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783fb0 <_WPUCreateSocketHandle@12>:
77783fb0:	55                   	push   %ebp
77783fb1:	31 c0                	xor    %eax,%eax
77783fb3:	89 e5                	mov    %esp,%ebp
77783fb5:	5d                   	pop    %ebp
77783fb6:	c2 0c 00             	ret    $0xc
77783fb9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783fc0 <_WPUFDIsSet@8>:
77783fc0:	55                   	push   %ebp
77783fc1:	31 c0                	xor    %eax,%eax
77783fc3:	89 e5                	mov    %esp,%ebp
77783fc5:	5d                   	pop    %ebp
77783fc6:	c2 08 00             	ret    $0x8
77783fc9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783fd0 <_WPUGetProviderPath@16>:
77783fd0:	55                   	push   %ebp
77783fd1:	31 c0                	xor    %eax,%eax
77783fd3:	89 e5                	mov    %esp,%ebp
77783fd5:	5d                   	pop    %ebp
77783fd6:	c2 10 00             	ret    $0x10
77783fd9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783fe0 <_WPUModifyIFSHandle@12>:
77783fe0:	55                   	push   %ebp
77783fe1:	89 e5                	mov    %esp,%ebp
77783fe3:	53                   	push   %ebx
77783fe4:	83 ec 10             	sub    $0x10,%esp
77783fe7:	8b 4d 08             	mov    0x8(%ebp),%ecx
77783fea:	8b 5d 10             	mov    0x10(%ebp),%ebx
77783fed:	51                   	push   %ecx
77783fee:	e8 ed d1 ff ff       	call   777811e0 <_LocateProviderById>
77783ff3:	83 c4 10             	add    $0x10,%esp
77783ff6:	85 c0                	test   %eax,%eax
77783ff8:	74 20                	je     7778401a <_WPUModifyIFSHandle@12+0x3a>
77783ffa:	52                   	push   %edx
77783ffb:	52                   	push   %edx
77783ffc:	50                   	push   %eax
77783ffd:	8b 45 0c             	mov    0xc(%ebp),%eax
77784000:	50                   	push   %eax
77784001:	e8 fa e2 ff ff       	call   77782300 <_CreateProviderHandle>
77784006:	83 c4 10             	add    $0x10,%esp
77784009:	85 db                	test   %ebx,%ebx
7778400b:	74 06                	je     77784013 <_WPUModifyIFSHandle@12+0x33>
7778400d:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
77784013:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77784016:	c9                   	leave  
77784017:	c2 0c 00             	ret    $0xc
7778401a:	85 db                	test   %ebx,%ebx
7778401c:	74 06                	je     77784024 <_WPUModifyIFSHandle@12+0x44>
7778401e:	c7 03 26 27 00 00    	movl   $0x2726,(%ebx)
77784024:	83 c8 ff             	or     $0xffffffff,%eax
77784027:	eb ea                	jmp    77784013 <_WPUModifyIFSHandle@12+0x33>
77784029:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784030 <_WPUOpenCurrentThread@8>:
77784030:	55                   	push   %ebp
77784031:	31 c0                	xor    %eax,%eax
77784033:	89 e5                	mov    %esp,%ebp
77784035:	5d                   	pop    %ebp
77784036:	c2 08 00             	ret    $0x8
77784039:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784040 <_WPUQueryBlockingCallback@16>:
77784040:	55                   	push   %ebp
77784041:	31 c0                	xor    %eax,%eax
77784043:	89 e5                	mov    %esp,%ebp
77784045:	5d                   	pop    %ebp
77784046:	c2 10 00             	ret    $0x10
77784049:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784050 <_WPUQuerySocketHandleContext@12>:
77784050:	55                   	push   %ebp
77784051:	31 c0                	xor    %eax,%eax
77784053:	89 e5                	mov    %esp,%ebp
77784055:	5d                   	pop    %ebp
77784056:	c2 0c 00             	ret    $0xc
77784059:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784060 <_WPUQueueApc@16>:
77784060:	55                   	push   %ebp
77784061:	31 c0                	xor    %eax,%eax
77784063:	89 e5                	mov    %esp,%ebp
77784065:	5d                   	pop    %ebp
77784066:	c2 10 00             	ret    $0x10
77784069:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784070 <_WPUResetEvent@8>:
77784070:	55                   	push   %ebp
77784071:	31 c0                	xor    %eax,%eax
77784073:	89 e5                	mov    %esp,%ebp
77784075:	5d                   	pop    %ebp
77784076:	c2 08 00             	ret    $0x8
77784079:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77784080 <_WPUSetEvent@8>:
77784080:	55                   	push   %ebp
77784081:	31 c0                	xor    %eax,%eax
77784083:	89 e5                	mov    %esp,%ebp
77784085:	5d                   	pop    %ebp
77784086:	c2 08 00             	ret    $0x8
77784089:	90                   	nop    
7778408a:	90                   	nop    
7778408b:	90                   	nop    
7778408c:	90                   	nop    
7778408d:	90                   	nop    
7778408e:	90                   	nop    
7778408f:	90                   	nop    

77784090 <_RtlCreateUnicodeString@8>:
77784090:	ff 25 b8 a1 78 77    	jmp    *0x7778a1b8
77784096:	90                   	nop    
77784097:	90                   	nop    
	...

777840a0 <_RtlFreeHeap@12>:
777840a0:	ff 25 bc a1 78 77    	jmp    *0x7778a1bc
777840a6:	90                   	nop    
777840a7:	90                   	nop    
	...

777840b0 <_memset>:
777840b0:	ff 25 e4 a1 78 77    	jmp    *0x7778a1e4
777840b6:	90                   	nop    
777840b7:	90                   	nop    
	...

777840c0 <_RtlInitAnsiString@8>:
777840c0:	ff 25 c0 a1 78 77    	jmp    *0x7778a1c0
777840c6:	90                   	nop    
777840c7:	90                   	nop    
	...

777840d0 <_RtlInitUnicodeString@8>:
777840d0:	ff 25 c4 a1 78 77    	jmp    *0x7778a1c4
777840d6:	90                   	nop    
777840d7:	90                   	nop    
	...

777840e0 <_RtlAnsiStringToUnicodeString@12>:
777840e0:	ff 25 b4 a1 78 77    	jmp    *0x7778a1b4
777840e6:	90                   	nop    
777840e7:	90                   	nop    
	...

777840f0 <_memcpy>:
777840f0:	ff 25 dc a1 78 77    	jmp    *0x7778a1dc
777840f6:	90                   	nop    
777840f7:	90                   	nop    
	...

77784100 <_strcat>:
77784100:	ff 25 e8 a1 78 77    	jmp    *0x7778a1e8
77784106:	90                   	nop    
77784107:	90                   	nop    
	...

77784110 <_strcpy>:
77784110:	ff 25 f4 a1 78 77    	jmp    *0x7778a1f4
77784116:	90                   	nop    
77784117:	90                   	nop    
	...

77784120 <__itoa>:
77784120:	ff 25 c8 a1 78 77    	jmp    *0x7778a1c8
77784126:	90                   	nop    
77784127:	90                   	nop    
	...

77784130 <_strtoul>:
77784130:	ff 25 08 a2 78 77    	jmp    *0x7778a208
77784136:	90                   	nop    
77784137:	90                   	nop    
	...

77784140 <_atoi>:
77784140:	ff 25 d0 a1 78 77    	jmp    *0x7778a1d0
77784146:	90                   	nop    
77784147:	90                   	nop    
	...

77784150 <_memmove>:
77784150:	ff 25 e0 a1 78 77    	jmp    *0x7778a1e0
77784156:	90                   	nop    
77784157:	90                   	nop    
	...

77784160 <_strcmp>:
77784160:	ff 25 f0 a1 78 77    	jmp    *0x7778a1f0
77784166:	90                   	nop    
77784167:	90                   	nop    
	...

77784170 <_strncat>:
77784170:	ff 25 fc a1 78 77    	jmp    *0x7778a1fc
77784176:	90                   	nop    
77784177:	90                   	nop    
	...

77784180 <_strchr>:
77784180:	ff 25 ec a1 78 77    	jmp    *0x7778a1ec
77784186:	90                   	nop    
77784187:	90                   	nop    
	...

77784190 <_strlen>:
77784190:	ff 25 f8 a1 78 77    	jmp    *0x7778a1f8
77784196:	90                   	nop    
77784197:	90                   	nop    
	...

777841a0 <_isspace>:
777841a0:	ff 25 d8 a1 78 77    	jmp    *0x7778a1d8
777841a6:	90                   	nop    
777841a7:	90                   	nop    
	...

777841b0 <_isalpha>:
777841b0:	ff 25 d4 a1 78 77    	jmp    *0x7778a1d4
777841b6:	90                   	nop    
777841b7:	90                   	nop    
	...

777841c0 <_strstr>:
777841c0:	ff 25 04 a2 78 77    	jmp    *0x7778a204
777841c6:	90                   	nop    
777841c7:	90                   	nop    
	...

777841d0 <_strncpy>:
777841d0:	ff 25 00 a2 78 77    	jmp    *0x7778a200
777841d6:	90                   	nop    
777841d7:	90                   	nop    
	...

777841e0 <__stricmp>:
777841e0:	ff 25 cc a1 78 77    	jmp    *0x7778a1cc
777841e6:	90                   	nop    
777841e7:	90                   	nop    
	...

777841f0 <_HeapAlloc@12>:
777841f0:	ff 25 80 a1 78 77    	jmp    *0x7778a180
777841f6:	90                   	nop    
777841f7:	90                   	nop    
	...

77784200 <_InitializeCriticalSection@4>:
77784200:	ff 25 88 a1 78 77    	jmp    *0x7778a188
77784206:	90                   	nop    
77784207:	90                   	nop    
	...

77784210 <_LoadLibraryW@4>:
77784210:	ff 25 90 a1 78 77    	jmp    *0x7778a190
77784216:	90                   	nop    
77784217:	90                   	nop    
	...

77784220 <_GetProcAddress@8>:
77784220:	ff 25 74 a1 78 77    	jmp    *0x7778a174
77784226:	90                   	nop    
77784227:	90                   	nop    
	...

77784230 <_FreeLibrary@4>:
77784230:	ff 25 68 a1 78 77    	jmp    *0x7778a168
77784236:	90                   	nop    
77784237:	90                   	nop    
	...

77784240 <_GetLastError@0>:
77784240:	ff 25 70 a1 78 77    	jmp    *0x7778a170
77784246:	90                   	nop    
77784247:	90                   	nop    
	...

77784250 <_HeapFree@12>:
77784250:	ff 25 84 a1 78 77    	jmp    *0x7778a184
77784256:	90                   	nop    
77784257:	90                   	nop    
	...

77784260 <_lstrcpyA@8>:
77784260:	ff 25 a8 a1 78 77    	jmp    *0x7778a1a8
77784266:	90                   	nop    
77784267:	90                   	nop    
	...

77784270 <_Sleep@4>:
77784270:	ff 25 a0 a1 78 77    	jmp    *0x7778a1a0
77784276:	90                   	nop    
77784277:	90                   	nop    
	...

77784280 <_GetProcessHeap@0>:
77784280:	ff 25 78 a1 78 77    	jmp    *0x7778a178
77784286:	90                   	nop    
77784287:	90                   	nop    
	...

77784290 <_CloseHandle@4>:
77784290:	ff 25 54 a1 78 77    	jmp    *0x7778a154
77784296:	90                   	nop    
77784297:	90                   	nop    
	...

777842a0 <_CreateEventW@16>:
777842a0:	ff 25 58 a1 78 77    	jmp    *0x7778a158
777842a6:	90                   	nop    
777842a7:	90                   	nop    
	...

777842b0 <_ResetEvent@4>:
777842b0:	ff 25 98 a1 78 77    	jmp    *0x7778a198
777842b6:	90                   	nop    
777842b7:	90                   	nop    
	...

777842c0 <_SetEvent@4>:
777842c0:	ff 25 9c a1 78 77    	jmp    *0x7778a19c
777842c6:	90                   	nop    
777842c7:	90                   	nop    
	...

777842d0 <_WaitForMultipleObjectsEx@20>:
777842d0:	ff 25 a4 a1 78 77    	jmp    *0x7778a1a4
777842d6:	90                   	nop    
777842d7:	90                   	nop    
	...

777842e0 <_EnterCriticalSection@4>:
777842e0:	ff 25 64 a1 78 77    	jmp    *0x7778a164
777842e6:	90                   	nop    
777842e7:	90                   	nop    
	...

777842f0 <_LeaveCriticalSection@4>:
777842f0:	ff 25 8c a1 78 77    	jmp    *0x7778a18c
777842f6:	90                   	nop    
777842f7:	90                   	nop    
	...

77784300 <_DeleteCriticalSection@4>:
77784300:	ff 25 60 a1 78 77    	jmp    *0x7778a160
77784306:	90                   	nop    
77784307:	90                   	nop    
	...

77784310 <_GetComputerNameExA@12>:
77784310:	ff 25 6c a1 78 77    	jmp    *0x7778a16c
77784316:	90                   	nop    
77784317:	90                   	nop    
	...

77784320 <_GetSystemDirectoryA@8>:
77784320:	ff 25 7c a1 78 77    	jmp    *0x7778a17c
77784326:	90                   	nop    
77784327:	90                   	nop    
	...

77784330 <_CreateFileA@28>:
77784330:	ff 25 5c a1 78 77    	jmp    *0x7778a15c
77784336:	90                   	nop    
77784337:	90                   	nop    
	...

77784340 <_ReadFile@20>:
77784340:	ff 25 94 a1 78 77    	jmp    *0x7778a194
77784346:	90                   	nop    
77784347:	90                   	nop    
	...

77784350 <_PostMessageW@16>:
77784350:	ff 25 14 a2 78 77    	jmp    *0x7778a214
77784356:	90                   	nop    
77784357:	90                   	nop    
	...

77784360 <_DnsQuery_A@24>:
77784360:	ff 25 44 a1 78 77    	jmp    *0x7778a144
77784366:	90                   	nop    
77784367:	90                   	nop    
	...

77784370 <_DnsRecordListFree@8>:
77784370:	ff 25 48 a1 78 77    	jmp    *0x7778a148
77784376:	90                   	nop    
77784377:	90                   	nop    
	...

77784380 <__CTOR_LIST__>:
77784380:	ff                   	(bad)  
77784381:	ff                   	(bad)  
77784382:	ff                   	(bad)  
77784383:	ff 00                	incl   (%eax)
77784385:	00 00                	add    %al,(%eax)
	...

77784388 <__DTOR_LIST__>:
77784388:	ff                   	(bad)  
77784389:	ff                   	(bad)  
7778438a:	ff                   	(bad)  
7778438b:	ff 00                	incl   (%eax)
7778438d:	00 00                	add    %al,(%eax)
	...
