
msafd.nostrip.dll:     file format pei-i386

Disassembly of section .text:

777a1000 <_MsafdReturnWithErrno>:
}


DWORD MsafdReturnWithErrno( NTSTATUS Status, LPINT Errno, DWORD Received,
			    LPDWORD ReturnedBytes ) {
777a1000:	55                   	push   %ebp
777a1001:	89 e5                	mov    %esp,%ebp
777a1003:	56                   	push   %esi
777a1004:	53                   	push   %ebx
777a1005:	8b 55 14             	mov    0x14(%ebp),%edx
777a1008:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a100b:	8b 75 0c             	mov    0xc(%ebp),%esi
    if( ReturnedBytes ) *ReturnedBytes = 0; 
777a100e:	85 d2                	test   %edx,%edx
777a1010:	74 06                	je     777a1018 <_MsafdReturnWithErrno+0x18>
777a1012:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
    if( Errno ) { 
777a1018:	85 f6                	test   %esi,%esi
777a101a:	74 35                	je     777a1051 <_MsafdReturnWithErrno+0x51>
        switch (Status) {
777a101c:	81 fb d8 00 00 c0    	cmp    $0xc00000d8,%ebx
777a1022:	74 62                	je     777a1086 <_MsafdReturnWithErrno+0x86>
777a1024:	7f 41                	jg     777a1067 <_MsafdReturnWithErrno+0x67>
777a1026:	81 fb 05 00 00 80    	cmp    $0x80000005,%ebx
777a102c:	0f 84 83 00 00 00    	je     777a10b5 <_MsafdReturnWithErrno+0xb5>
777a1032:	81 fb 11 00 00 c0    	cmp    $0xc0000011,%ebx
777a1038:	74 6a                	je     777a10a4 <_MsafdReturnWithErrno+0xa4>
        case STATUS_CANT_WAIT: *Errno = WSAEWOULDBLOCK; break;
        case STATUS_TIMEOUT:
        case STATUS_SUCCESS: 
            /* Return Number of bytes Read */
            if( ReturnedBytes ) *ReturnedBytes = Received; break;
        case STATUS_END_OF_FILE: *Errno = WSAESHUTDOWN; *ReturnedBytes = 0; break;
        case STATUS_PENDING: *Errno = WSA_IO_PENDING; break;
        case STATUS_BUFFER_OVERFLOW: *Errno = WSAEMSGSIZE; break;
        default: {
            DbgPrint("MSAFD: Error %x is unknown\n", Status);
777a103a:	50                   	push   %eax
777a103b:	50                   	push   %eax
777a103c:	53                   	push   %ebx
777a103d:	68 00 50 7a 77       	push   $0x777a5000
777a1042:	ff 15 40 81 7a 77    	call   *0x777a8140
            *Errno = WSAEINVAL; break;
777a1048:	c7 06 26 27 00 00    	movl   $0x2726,(%esi)
777a104e:	83 c4 10             	add    $0x10,%esp
        } break;
        }
    }

    /* Success */
    return Status == STATUS_SUCCESS ? 0 : SOCKET_ERROR;
777a1051:	31 c0                	xor    %eax,%eax
777a1053:	85 db                	test   %ebx,%ebx
777a1055:	74 09                	je     777a1060 <_MsafdReturnWithErrno+0x60>
777a1057:	83 c8 ff             	or     $0xffffffff,%eax
777a105a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
}
777a1060:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a1063:	5b                   	pop    %ebx
777a1064:	5e                   	pop    %esi
777a1065:	5d                   	pop    %ebp
777a1066:	c3                   	ret    
777a1067:	81 fb 02 01 00 00    	cmp    $0x102,%ebx
777a106d:	74 06                	je     777a1075 <_MsafdReturnWithErrno+0x75>
777a106f:	7f 20                	jg     777a1091 <_MsafdReturnWithErrno+0x91>
777a1071:	85 db                	test   %ebx,%ebx
777a1073:	75 c5                	jne    777a103a <_MsafdReturnWithErrno+0x3a>
777a1075:	85 d2                	test   %edx,%edx
777a1077:	74 d8                	je     777a1051 <_MsafdReturnWithErrno+0x51>
777a1079:	8b 45 10             	mov    0x10(%ebp),%eax
777a107c:	89 02                	mov    %eax,(%edx)
777a107e:	31 c0                	xor    %eax,%eax
777a1080:	85 db                	test   %ebx,%ebx
777a1082:	74 dc                	je     777a1060 <_MsafdReturnWithErrno+0x60>
777a1084:	eb d1                	jmp    777a1057 <_MsafdReturnWithErrno+0x57>
777a1086:	83 c8 ff             	or     $0xffffffff,%eax
777a1089:	c7 06 33 27 00 00    	movl   $0x2733,(%esi)
777a108f:	eb cf                	jmp    777a1060 <_MsafdReturnWithErrno+0x60>
777a1091:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a1097:	75 a1                	jne    777a103a <_MsafdReturnWithErrno+0x3a>
777a1099:	83 c8 ff             	or     $0xffffffff,%eax
777a109c:	c7 06 e5 03 00 00    	movl   $0x3e5,(%esi)
777a10a2:	eb bc                	jmp    777a1060 <_MsafdReturnWithErrno+0x60>
777a10a4:	83 c8 ff             	or     $0xffffffff,%eax
777a10a7:	c7 06 4a 27 00 00    	movl   $0x274a,(%esi)
777a10ad:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
777a10b3:	eb ab                	jmp    777a1060 <_MsafdReturnWithErrno+0x60>
777a10b5:	83 c8 ff             	or     $0xffffffff,%eax
777a10b8:	c7 06 38 27 00 00    	movl   $0x2738,(%esi)
777a10be:	eb a0                	jmp    777a1060 <_MsafdReturnWithErrno+0x60>

777a10c0 <_GetSocketStructure>:


INT
WSPAPI
WSPCloseSocket(
  IN  SOCKET Handle,
  OUT	LPINT lpErrno)
/*
 * FUNCTION: Closes an open socket
 * ARGUMENTS:
 *     s       = Socket descriptor
 *     lpErrno = Address of buffer for error information
 * RETURNS:
 *     NO_ERROR, or SOCKET_ERROR if the socket could not be closed
 */
{
    IO_STATUS_BLOCK IoStatusBlock;
    PSOCKET_INFORMATION Socket = NULL;
    NTSTATUS Status;
    HANDLE SockEvent;
    AFD_DISCONNECT_INFO DisconnectInfo;
    SOCKET_STATE OldState;

    /* Create the Wait Event */
    Status = NtCreateEvent(&SockEvent,
                           GENERIC_READ | GENERIC_WRITE,
                           NULL,
                           1,
                           FALSE);    

    if(!NT_SUCCESS(Status)) return SOCKET_ERROR;

    /* Get the Socket Structure associate to this Socket*/
    Socket = GetSocketStructure(Handle);

    /* If a Close is already in Process, give up */
    if (Socket->SharedData.State == SocketClosed) {
        *lpErrno = WSAENOTSOCK;
        return SOCKET_ERROR;
    }

    /* Set the state to close */
    OldState = Socket->SharedData.State;
    Socket->SharedData.State = SocketClosed;
    
    /* If SO_LINGER is ON and the Socket is connected, we need to disconnect */
    /* FIXME: Should we do this on Datagram Sockets too? */
    if ((OldState == SocketConnected) && (Socket->SharedData.LingerData.l_onoff)) {
        ULONG LingerWait;
        ULONG SendsInProgress;
        ULONG SleepWait;
        
        /* We need to respect the timeout */
        SleepWait = 100;
        LingerWait = Socket->SharedData.LingerData.l_linger * 1000;
        
        /* Loop until no more sends are pending, within the timeout */
        while (LingerWait) {
            
            /* Find out how many Sends are in Progress */
            if (GetSocketInformation(Socket, 
                                     AFD_INFO_SENDS_IN_PROGRESS,
                                     &SendsInProgress,
                                     NULL)) {
                /* Bail out if anything but NO_ERROR */
                LingerWait = 0;
                break;
            }

            /* Bail out if no more sends are pending */
            if (!SendsInProgress) break;
            
            /* 
             * We have to execute a sleep, so it's kind of like
             * a block. If the socket is Nonblock, we cannot
             * go on since asyncronous operation is expected
             * and we cannot offer it
             */
            if (Socket->SharedData.NonBlocking) {
                Socket->SharedData.State = OldState;
                *lpErrno = WSAEWOULDBLOCK;
                return SOCKET_ERROR;
            }
            
            /* Now we can sleep, and decrement the linger wait */
            /* 
             * FIXME: It seems Windows does some funky acceleration
             * since the waiting seems to be longer and longer. I
             * don't think this improves performance so much, so we
             * wait a fixed time instead.
             */
            Sleep(SleepWait);
            LingerWait -= SleepWait;
        }
        
        /*
         * We have reached the timeout or sends are over.
         * Disconnect if the timeout has been reached. 
         */
        if (LingerWait <= 0) {
        
            DisconnectInfo.Timeout = RtlConvertLongToLargeInteger(0);
            DisconnectInfo.DisconnectType = AFD_DISCONNECT_ABORT;
            
            /* Send IOCTL */
            Status = NtDeviceIoControlFile((HANDLE)Handle,
                                           SockEvent,
                                           NULL,
                                           NULL,
                                           &IoStatusBlock,
                                           IOCTL_AFD_DISCONNECT,
                                           &DisconnectInfo,
                                           sizeof(DisconnectInfo),
                                           NULL,
                                           0);
        
            /* Wait for return */
            if (Status == STATUS_PENDING) {
                WaitForSingleObject(SockEvent, INFINITE);
            }         
        }
    }
    
    /* FIXME: We should notify the Helper DLL of WSH_NOTIFY_CLOSE */
    
    /* Cleanup Time! */
    Socket->HelperContext = NULL;
    Socket->SharedData.AsyncDisabledEvents = -1;
    NtClose(Socket->TdiAddressHandle);
    Socket->TdiAddressHandle = NULL;
    NtClose(Socket->TdiConnectionHandle);
    Socket->TdiConnectionHandle = NULL;

    /* Close the handle */
    NtClose((HANDLE)Handle);
    return NO_ERROR;
}

INT
WSPAPI
WSPBind(
	SOCKET Handle, 
	const struct sockaddr *SocketAddress, 
	int SocketAddressLength, 
	LPINT lpErrno)
/*
 * FUNCTION: Associates a local address with a socket
 * ARGUMENTS:
 *     s       = Socket descriptor
 *     name    = Pointer to local address
 *     namelen = Length of name
 *     lpErrno = Address of buffer for error information
 * RETURNS:
 *     0, or SOCKET_ERROR if the socket could not be bound
 */
{
	IO_STATUS_BLOCK				IOSB;
	PAFD_BIND_DATA				BindData;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS					Status;
	UCHAR						BindBuffer[0x1A];
	SOCKADDR_INFO				SocketInfo;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* Dynamic Structure...ugh */
	BindData = (PAFD_BIND_DATA)BindBuffer;

	/* Set up Address in TDI Format */
	BindData->Address.TAAddressCount = 1;
	BindData->Address.Address[0].AddressLength = SocketAddressLength - sizeof(SocketAddress->sa_family);
	BindData->Address.Address[0].AddressType = SocketAddress->sa_family;
	RtlCopyMemory (BindData->Address.Address[0].Address,
					SocketAddress->sa_data,
					SocketAddressLength - sizeof(SocketAddress->sa_family));
	
	/* Get Address Information */
	Socket->HelperData->WSHGetSockaddrType ((PSOCKADDR)SocketAddress, 
											SocketAddressLength, 
											&SocketInfo);

	/* Set the Share Type */
	if (Socket->SharedData.ExclusiveAddressUse) {
		BindData->ShareType = AFD_SHARE_EXCLUSIVE;
	}
	else if (SocketInfo.EndpointInfo == SockaddrEndpointInfoWildcard) {
		BindData->ShareType = AFD_SHARE_WILDCARD;
	}
	else if (Socket->SharedData.ReuseAddresses) {
		BindData->ShareType = AFD_SHARE_REUSE;
	} else {
		BindData->ShareType = AFD_SHARE_UNIQUE;
	}

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_BIND,
					BindData,
					0xA + Socket->SharedData.SizeOfLocalAddress, /* Can't figure out a way to calculate this in C*/
					BindData,
					0xA + Socket->SharedData.SizeOfLocalAddress); /* Can't figure out a way to calculate this C */
	
	/* Set up Socket Data */
	Socket->SharedData.State = SocketBound;
	Socket->TdiAddressHandle = (HANDLE)IOSB.Information;

	NtClose( SockEvent );

	return MsafdReturnWithErrno
	    ( IOSB.Status, lpErrno, IOSB.Information, NULL );
}

int 
WSPAPI
WSPListen(
	SOCKET Handle, 
	int Backlog, 
	LPINT lpErrno)
{
	IO_STATUS_BLOCK				IOSB;
	AFD_LISTEN_DATA				ListenData;
	PSOCKET_INFORMATION			Socket = NULL;
	HANDLE                                  SockEvent;
	NTSTATUS				Status;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* Set Up Listen Structure */
	ListenData.UseSAN = FALSE;
	ListenData.UseDelayedAcceptance = Socket->SharedData.UseDelayedAcceptance;
	ListenData.Backlog = Backlog;

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_START_LISTEN,
					&ListenData,
					sizeof(ListenData),
					NULL,
					0);

	/* Set to Listening */
	Socket->SharedData.Listening = TRUE;

	NtClose( SockEvent );

	return MsafdReturnWithErrno
	    ( IOSB.Status, lpErrno, IOSB.Information, NULL );
}


int
WSPAPI 
WSPSelect(
	int nfds, 
	fd_set *readfds,
	fd_set *writefds, 
	fd_set *exceptfds, 
	struct timeval *timeout, 
	LPINT lpErrno)
{
    IO_STATUS_BLOCK			IOSB;
    PAFD_POLL_INFO			PollInfo;
    NTSTATUS				Status;
    ULONG				HandleCount, OutCount = 0;
    ULONG				PollBufferSize;
    PVOID				PollBuffer;
    ULONG				i, j = 0, x;
    HANDLE                              SockEvent;
    
    Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
			    NULL, 1, FALSE );
    
    if( !NT_SUCCESS(Status) ) return SOCKET_ERROR;
    
    /* Find out how many sockets we have, and how large the buffer needs 
     * to be */
    
    HandleCount = 
	( readfds ? readfds->fd_count : 0 ) + 
	( writefds ? writefds->fd_count : 0 ) + 
	( exceptfds ? exceptfds->fd_count : 0 );
    PollBufferSize = sizeof(*PollInfo) + 
	(HandleCount * sizeof(AFD_HANDLE));
    
    AFD_DbgPrint(MID_TRACE,("HandleCount: %d BufferSize: %d\n", 
                            HandleCount, PollBufferSize));

    /* Allocate */
    PollBuffer = HeapAlloc(GlobalHeap, 0, PollBufferSize);
    PollInfo = (PAFD_POLL_INFO)PollBuffer;
    
    RtlZeroMemory( PollInfo, PollBufferSize );

    /* Convert Timeout to NT Format */
    if (timeout == NULL) {
	PollInfo->Timeout.u.LowPart = -1;
	PollInfo->Timeout.u.HighPart = 0x7FFFFFFF;
    } else {
	PollInfo->Timeout = RtlEnlargedIntegerMultiply
	    ((timeout->tv_sec * 1000) + timeout->tv_usec, -10000);
    }
    
    /* Number of handles for AFD to Check */
    PollInfo->HandleCount = HandleCount;
    PollInfo->Exclusive = FALSE;
    
    if (readfds != NULL) {
	for (i = 0; i < readfds->fd_count; i++, j++) {
	    PollInfo->Handles[j].Handle = readfds->fd_array[i];
	    PollInfo->Handles[j].Events = AFD_EVENT_RECEIVE | 
	                                  AFD_EVENT_DISCONNECT |
	                                  AFD_EVENT_ABORT |
	                                  AFD_EVENT_ACCEPT;
	} 
    }
    if (writefds != NULL) {
	for (i = 0; i < writefds->fd_count; i++, j++) {
	    PollInfo->Handles[j].Handle = writefds->fd_array[i];
	    PollInfo->Handles[j].Events = AFD_EVENT_SEND |
	                                  AFD_EVENT_CONNECT;
	}	
    }
    if (exceptfds != NULL) {
	for (i = 0; i < exceptfds->fd_count; i++, j++) {
	    PollInfo->Handles[j].Handle = exceptfds->fd_array[i];
	    PollInfo->Handles[j].Events = AFD_EVENT_OOB_RECEIVE |
	                                  AFD_EVENT_CONNECT_FAIL;
	}
    }
    
    /* Send IOCTL */
    Status = NtDeviceIoControlFile( (HANDLE)PollInfo->Handles[0].Handle,
				    SockEvent,
				    NULL,
				    NULL,
				    &IOSB,
				    IOCTL_AFD_SELECT,
				    PollInfo,
				    PollBufferSize,
				    PollInfo,
				    PollBufferSize);

    AFD_DbgPrint(MID_TRACE,("DeviceIoControlFile => %x\n", Status));
    
    /* Wait for Completition */
    if (Status == STATUS_PENDING) {
	WaitForSingleObject(SockEvent, INFINITE);
    }
    
    /* Clear the Structures */
    if( readfds ) FD_ZERO(readfds);
    if( writefds ) FD_ZERO(writefds);
    if( exceptfds ) FD_ZERO(exceptfds);
    
    /* Loop through return structure */
    HandleCount = PollInfo->HandleCount;
    
    /* Return in FDSET Format */
    for (i = 0; i < HandleCount; i++) {
	for(x = 1; x; x<<=1) {
	    switch (PollInfo->Handles[i].Events & x) {
	    case AFD_EVENT_RECEIVE: 
	    case AFD_EVENT_DISCONNECT: 
	    case AFD_EVENT_ABORT: 
	    case AFD_EVENT_ACCEPT: 
	    case AFD_EVENT_CLOSE:
		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
					PollInfo->Handles[i].Events,
					PollInfo->Handles[i].Handle));
		OutCount++;
		if( readfds ) FD_SET(PollInfo->Handles[i].Handle, readfds);
		break;

	    case AFD_EVENT_SEND: case AFD_EVENT_CONNECT:
		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
					PollInfo->Handles[i].Events,
					PollInfo->Handles[i].Handle));
		OutCount++;
		if( writefds ) FD_SET(PollInfo->Handles[i].Handle, writefds);
		break;
		
	    case AFD_EVENT_OOB_RECEIVE: case AFD_EVENT_CONNECT_FAIL:
		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
					PollInfo->Handles[i].Events,
					PollInfo->Handles[i].Handle));
		OutCount++;
		if( exceptfds ) FD_SET(PollInfo->Handles[i].Handle, exceptfds);
		break;
	    }
	}
    }

    NtClose( SockEvent );

    AFD_DbgPrint(MID_TRACE,("lpErrno = %x\n", lpErrno));

    if( lpErrno ) {
	switch( IOSB.Status ) {
	case STATUS_SUCCESS: 
	case STATUS_TIMEOUT: *lpErrno = 0; break;
	default: *lpErrno = WSAEINVAL; break;
	}
    }

    AFD_DbgPrint(MID_TRACE,("%d events\n", OutCount));
    
    return OutCount;
}

SOCKET
WSPAPI 
WSPAccept(
	SOCKET Handle, 
	struct sockaddr *SocketAddress, 
	int *SocketAddressLength, 
	LPCONDITIONPROC lpfnCondition, 
	DWORD_PTR dwCallbackData, 
	LPINT lpErrno)
{
	IO_STATUS_BLOCK				IOSB;
	PAFD_RECEIVED_ACCEPT_DATA	ListenReceiveData;
	AFD_ACCEPT_DATA				AcceptData;
	AFD_DEFER_ACCEPT_DATA		DeferData;
	AFD_PENDING_ACCEPT_DATA		PendingAcceptData;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS					Status;
	struct fd_set				ReadSet;
	struct timeval				Timeout;
	PVOID						PendingData = NULL;
	ULONG						PendingDataLength = 0;
	PVOID						CalleeDataBuffer;
	WSABUF						CallerData, CalleeID, CallerID, CalleeData;
	PSOCKADDR					RemoteAddress =  NULL;
	GROUP						GroupID = 0;
	ULONG						CallBack;
	WSAPROTOCOL_INFOW			ProtocolInfo;
	SOCKET						AcceptSocket;
	UCHAR						ReceiveBuffer[0x1A];
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) {
		MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
		return INVALID_SOCKET;
	}

	/* Dynamic Structure...ugh */
	ListenReceiveData = (PAFD_RECEIVED_ACCEPT_DATA)ReceiveBuffer;

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* If this is non-blocking, make sure there's something for us to accept */
	FD_ZERO(&ReadSet);
	FD_SET(Socket->Handle, &ReadSet);
	Timeout.tv_sec=0;
	Timeout.tv_usec=0;

	WSPSelect(0, &ReadSet, NULL, NULL, &Timeout, NULL);

	if (ReadSet.fd_array[0] != Socket->Handle) return 0;

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_WAIT_FOR_LISTEN,
					NULL,
					0,
					ListenReceiveData,
					0xA + sizeof(*ListenReceiveData));
	
	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
		Status = IOSB.Status;
	}

	if (!NT_SUCCESS(Status)) {
		NtClose( SockEvent );
		MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
		return INVALID_SOCKET;
	}

	if (lpfnCondition != NULL) {
		if ((Socket->SharedData.ServiceFlags1 & XP1_CONNECT_DATA) != 0) {
			/* Find out how much data is pending */
			PendingAcceptData.SequenceNumber = ListenReceiveData->SequenceNumber;
			PendingAcceptData.ReturnSize = TRUE;

			/* Send IOCTL */
			Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
							SockEvent,
							NULL,
							NULL,
							&IOSB,
							IOCTL_AFD_GET_PENDING_CONNECT_DATA,
							&PendingAcceptData,
							sizeof(PendingAcceptData),
							&PendingAcceptData,
							sizeof(PendingAcceptData));

			if (!NT_SUCCESS(Status)) {
				NtClose( SockEvent );
				MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
				return INVALID_SOCKET;
			}

			/* How much data to allocate */
			PendingDataLength = IOSB.Information;

			if (PendingDataLength) {
				/* Allocate needed space */
				PendingData = HeapAlloc(GlobalHeap, 0, PendingDataLength);

				/* We want the data now */
				PendingAcceptData.ReturnSize = FALSE;

				/* Send IOCTL */
				Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
								SockEvent,
								NULL,
								NULL,
								&IOSB,
								IOCTL_AFD_GET_PENDING_CONNECT_DATA,
								&PendingAcceptData,
								sizeof(PendingAcceptData),
								PendingData,
								PendingDataLength);

				if (!NT_SUCCESS(Status)) {
					NtClose( SockEvent );
					MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
					return INVALID_SOCKET;
				}
			}
		}

		if ((Socket->SharedData.ServiceFlags1 & XP1_QOS_SUPPORTED) != 0) {
			/* I don't support this yet */
		}
		
		/* Build Callee ID */
		CalleeID.buf = (PVOID)Socket->LocalAddress;
		CalleeID.len = Socket->SharedData.SizeOfLocalAddress;

		/* Set up Address in SOCKADDR Format */
		RtlCopyMemory (RemoteAddress, 
                               &ListenReceiveData->Address.Address[0].AddressType, 
                               sizeof(*RemoteAddress));

		/* Build Caller ID */
		CallerID.buf = (PVOID)RemoteAddress;
		CallerID.len = sizeof(*RemoteAddress);

		/* Build Caller Data */
		CallerData.buf = PendingData;
		CallerData.len = PendingDataLength;

		/* Check if socket supports Conditional Accept */
		if (Socket->SharedData.UseDelayedAcceptance != 0) {
			/* Allocate Buffer for Callee Data */
			CalleeDataBuffer = HeapAlloc(GlobalHeap, 0, 4096);
			CalleeData.buf = CalleeDataBuffer;
			CalleeData.len = 4096;
		} else {
			/* Nothing */
			CalleeData.buf = 0;
			CalleeData.len = 0;
		}
	
		/* Call the Condition Function */
		CallBack = (lpfnCondition)( &CallerID,
						CallerData.buf == NULL
						? NULL
						: & CallerData,
						NULL,
						NULL,
						&CalleeID,
						CalleeData.buf == NULL
						? NULL
						: & CalleeData,
						&GroupID,
						dwCallbackData);

		if (((CallBack == CF_ACCEPT) && GroupID) != 0) {
			/* TBD: Check for Validity */
		}

		if (CallBack == CF_ACCEPT) {

			if ((Socket->SharedData.ServiceFlags1 & XP1_QOS_SUPPORTED) != 0) {
				/* I don't support this yet */
			}

			if (CalleeData.buf) {
				// SockSetConnectData Sockets(SocketID), IOCTL_AFD_SET_CONNECT_DATA, CalleeData.Buffer, CalleeData.BuffSize, 0
			}
		
		} else {
			/* Callback rejected. Build Defer Structure */
			DeferData.SequenceNumber = ListenReceiveData->SequenceNumber;
			DeferData.RejectConnection = (CallBack == CF_REJECT);

			/* Send IOCTL */
			Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
							SockEvent,
							NULL,
							NULL,
							&IOSB,
							IOCTL_AFD_DEFER_ACCEPT,
							&DeferData,
							sizeof(DeferData),
							NULL,
							0);

			NtClose( SockEvent );

			if (!NT_SUCCESS(Status)) {
				MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
				return INVALID_SOCKET;
			}

			if (CallBack == CF_REJECT ) {
				*lpErrno = WSAECONNREFUSED;
				return INVALID_SOCKET;
			} else {
				*lpErrno = WSAECONNREFUSED;
				return INVALID_SOCKET;
			}
		}
	}
	
	/* Create a new Socket */
	ProtocolInfo.dwCatalogEntryId = Socket->SharedData.CatalogEntryId;
	ProtocolInfo.dwServiceFlags1 = Socket->SharedData.ServiceFlags1;
	ProtocolInfo.dwProviderFlags = Socket->SharedData.ProviderFlags;

	AcceptSocket = WSPSocket (Socket->SharedData.AddressFamily,
				  Socket->SharedData.SocketType, 
				  Socket->SharedData.Protocol, 
				  &ProtocolInfo,
				  GroupID, 
				  Socket->SharedData.CreateFlags, 
				  NULL);

	/* Set up the Accept Structure */
   	AcceptData.ListenHandle = AcceptSocket;
	AcceptData.SequenceNumber = ListenReceiveData->SequenceNumber;
    
	/* Send IOCTL to Accept */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_ACCEPT,
					&AcceptData,
					sizeof(AcceptData),
					NULL,
					0);
	
	if (!NT_SUCCESS(Status)) {
		WSPCloseSocket( AcceptSocket, lpErrno );
		MsafdReturnWithErrno( Status, lpErrno, 0, NULL );
		return INVALID_SOCKET;
	}

	/* Return Address in SOCKADDR FORMAT */
        if( SocketAddress ) {
            RtlCopyMemory (SocketAddress, 
                           &ListenReceiveData->Address.Address[0].AddressType, 
                           sizeof(*RemoteAddress));
            if( *SocketAddressLength )
                *SocketAddressLength = 
                    ListenReceiveData->Address.Address[0].AddressLength;
        }

	NtClose( SockEvent );
 
    /* Re-enable Async Event */
    SockReenableAsyncSelectEvent(Socket, FD_ACCEPT);

    AFD_DbgPrint(MID_TRACE,("Socket %x\n", AcceptSocket));
    
    *lpErrno = 0;
    
    /* Return Socket */
    return AcceptSocket;
}

int
WSPAPI 
WSPConnect(
	SOCKET Handle, 
	const struct sockaddr * SocketAddress, 
	int SocketAddressLength, 
	LPWSABUF lpCallerData, 
	LPWSABUF lpCalleeData, 
	LPQOS lpSQOS, 
	LPQOS lpGQOS, 
	LPINT lpErrno)
{
	IO_STATUS_BLOCK				IOSB;
	PAFD_CONNECT_INFO			ConnectInfo;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS					Status;
	UCHAR						ConnectBuffer[0x22];
	ULONG						ConnectDataLength;
	ULONG						InConnectDataLength;
	INT						BindAddressLength;
	PSOCKADDR					BindAddress;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	AFD_DbgPrint(MID_TRACE,("Called\n"));

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* Bind us First */
	if (Socket->SharedData.State == SocketOpen) {
		
		/* Get the Wildcard Address */
		BindAddressLength = Socket->HelperData->MaxWSAddressLength;
		BindAddress = HeapAlloc(GetProcessHeap(), 0, BindAddressLength);
		Socket->HelperData->WSHGetWildcardSockaddr (Socket->HelperContext, 
													BindAddress, 
													&BindAddressLength);

		/* Bind it */
		WSPBind(Handle, BindAddress, BindAddressLength, NULL);
	}

	/* Set the Connect Data */
	if (lpCallerData != NULL) {
		ConnectDataLength = lpCallerData->len;
		Status = NtDeviceIoControlFile((HANDLE)Handle,
										SockEvent,
										NULL,
										NULL,
										&IOSB,
										IOCTL_AFD_SET_CONNECT_DATA,
										lpCallerData->buf,
										ConnectDataLength,
										NULL,
										0);
	}

	/* Dynamic Structure...ugh */
	ConnectInfo = (PAFD_CONNECT_INFO)ConnectBuffer;

	/* Set up Address in TDI Format */
	ConnectInfo->RemoteAddress.TAAddressCount = 1;
	ConnectInfo->RemoteAddress.Address[0].AddressLength = SocketAddressLength - sizeof(SocketAddress->sa_family);
	ConnectInfo->RemoteAddress.Address[0].AddressType = SocketAddress->sa_family;
	RtlCopyMemory (ConnectInfo->RemoteAddress.Address[0].Address, 
					SocketAddress->sa_data, 
					SocketAddressLength - sizeof(SocketAddress->sa_family));

    /* 
     * Disable FD_WRITE and FD_CONNECT 
     * The latter fixes a race condition where the FD_CONNECT is re-enabled
     * at the end of this function right after the Async Thread disables it.
     * This should only happen at the *next* WSPConnect
     */
    if (Socket->SharedData.AsyncEvents & FD_CONNECT) {
        Socket->SharedData.AsyncDisabledEvents |= FD_CONNECT | FD_WRITE;
    }
    
	/* Tell AFD that we want Connection Data back, have it allocate a buffer */
	if (lpCalleeData != NULL) {
		InConnectDataLength = lpCalleeData->len;
		Status = NtDeviceIoControlFile((HANDLE)Handle,
										SockEvent,
										NULL,
										NULL,
										&IOSB,
										IOCTL_AFD_SET_CONNECT_DATA_SIZE,
										&InConnectDataLength,
										sizeof(InConnectDataLength),
										NULL,
										0);
	}

	/* AFD doesn't seem to care if these are invalid, but let's 0 them anyways */
	ConnectInfo->Root = 0;
	ConnectInfo->UseSAN = FALSE;
	ConnectInfo->Unknown = 0;

    /* FIXME: Handle Async Connect */
    if (Socket->SharedData.NonBlocking) {
        AFD_DbgPrint(MIN_TRACE, ("Async Connect UNIMPLEMENTED!\n"));
    }
               
	/* Send IOCTL */
	Status = NtDeviceIoControlFile((HANDLE)Handle,
									SockEvent,
									NULL,
									NULL,
									&IOSB,
									IOCTL_AFD_CONNECT,
									ConnectInfo,
									0x22,
									NULL,
									0);

	/* Get any pending connect data */
	 if (lpCalleeData != NULL) {
		Status = NtDeviceIoControlFile((HANDLE)Handle,
										SockEvent,
										NULL,
										NULL,
										&IOSB,
										IOCTL_AFD_GET_CONNECT_DATA,
										NULL,
										0,
										lpCalleeData->buf,
										lpCalleeData->len);
	 }

    /* Re-enable Async Event */
    SockReenableAsyncSelectEvent(Socket, FD_WRITE);
    
    /* FIXME: THIS IS NOT RIGHT!!! HACK HACK HACK! */
    SockReenableAsyncSelectEvent(Socket, FD_CONNECT);
    
	AFD_DbgPrint(MID_TRACE,("Ending\n"));

	NtClose( SockEvent );
    
    return MsafdReturnWithErrno( IOSB.Status, lpErrno, 0, NULL );
}
int
WSPAPI 
WSPShutdown(
	SOCKET Handle, 
	int HowTo, 
	LPINT lpErrno)

{
	IO_STATUS_BLOCK				IOSB;
	AFD_DISCONNECT_INFO			DisconnectInfo;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS					Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	AFD_DbgPrint(MID_TRACE,("Called\n"));

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* Set AFD Disconnect Type */
    switch (HowTo) {

		case SD_RECEIVE:
			DisconnectInfo.DisconnectType = AFD_DISCONNECT_RECV;
			Socket->SharedData.ReceiveShutdown = TRUE;
			break;
		
		case SD_SEND:
	        DisconnectInfo.DisconnectType= AFD_DISCONNECT_SEND;
			Socket->SharedData.SendShutdown = TRUE;
			break;

		case SD_BOTH:
			DisconnectInfo.DisconnectType = AFD_DISCONNECT_RECV | AFD_DISCONNECT_SEND;
			Socket->SharedData.ReceiveShutdown = TRUE;
			Socket->SharedData.SendShutdown = TRUE;
			break;
    }

    DisconnectInfo.Timeout = RtlConvertLongToLargeInteger(-1);

	/* Send IOCTL */
	Status = NtDeviceIoControlFile((HANDLE)Handle,
									SockEvent,
									NULL,
									NULL,
									&IOSB,
									IOCTL_AFD_DISCONNECT,
									&DisconnectInfo,
									sizeof(DisconnectInfo),
									NULL,
									0);

	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
	}

	AFD_DbgPrint(MID_TRACE,("Ending\n"));

	NtClose( SockEvent );

    return MsafdReturnWithErrno( IOSB.Status, lpErrno, 0, NULL );
}


INT
WSPAPI
WSPGetSockName(
    IN      SOCKET Handle,
    OUT     LPSOCKADDR Name,
    IN OUT  LPINT NameLength,
    OUT     LPINT lpErrno)
{
	IO_STATUS_BLOCK				IOSB;
	ULONG					TdiAddressSize;
	PTDI_ADDRESS_INFO			TdiAddress;
	PTRANSPORT_ADDRESS			SocketAddress;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS				Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return SOCKET_ERROR;

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(Handle);

	/* Allocate a buffer for the address */
	TdiAddressSize = FIELD_OFFSET(TDI_ADDRESS_INFO,
	                              Address.Address[0].Address) +
			 Socket->SharedData.SizeOfLocalAddress;
	TdiAddress = HeapAlloc(GlobalHeap, 0, TdiAddressSize);

	if ( TdiAddress == NULL ) {
		NtClose( SockEvent );
		*lpErrno = WSAENOBUFS;
		return SOCKET_ERROR;
	}

	SocketAddress = &TdiAddress->Address;

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_GET_SOCK_NAME,
					NULL,
					0,
					TdiAddress,
					TdiAddressSize);
	
	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
		Status = IOSB.Status;
	}

	NtClose( SockEvent );

	if (NT_SUCCESS(Status)) {
		if (*NameLength >= SocketAddress->Address[0].AddressLength) {
			Name->sa_family = SocketAddress->Address[0].AddressType;
			RtlCopyMemory (Name->sa_data,
			               SocketAddress->Address[0].Address, 
			               SocketAddress->Address[0].AddressLength);
			*NameLength = 2 + SocketAddress->Address[0].AddressLength;
			HeapFree(GlobalHeap, 0, TdiAddress);
			return 0;
		} else {
			HeapFree(GlobalHeap, 0, TdiAddress);
			*lpErrno = WSAEFAULT;
			return SOCKET_ERROR;
		}
	}

	return MsafdReturnWithErrno
	    ( IOSB.Status, lpErrno, 0, NULL );
}


INT
WSPAPI
WSPGetPeerName(
    IN      SOCKET s, 
    OUT     LPSOCKADDR Name, 
    IN OUT  LPINT NameLength, 
    OUT     LPINT lpErrno)
{
	IO_STATUS_BLOCK				IOSB;
	ULONG					TdiAddressSize;
	PTDI_ADDRESS_INFO			TdiAddress;
	PTRANSPORT_ADDRESS			SocketAddress;
	PSOCKET_INFORMATION			Socket = NULL;
	NTSTATUS				Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return SOCKET_ERROR;

	/* Get the Socket Structure associate to this Socket*/
	Socket = GetSocketStructure(s);

	/* Allocate a buffer for the address */
	TdiAddressSize = FIELD_OFFSET(TDI_ADDRESS_INFO,
	                              Address.Address[0].Address) +
			 Socket->SharedData.SizeOfLocalAddress;
	TdiAddress = HeapAlloc(GlobalHeap, 0, TdiAddressSize);

	if ( TdiAddress == NULL ) {
		NtClose( SockEvent );
		*lpErrno = WSAENOBUFS;
		return SOCKET_ERROR;
	}

	SocketAddress = &TdiAddress->Address;

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_GET_PEER_NAME,
					NULL,
					0,
					TdiAddress,
					TdiAddressSize);
	
	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
		Status = IOSB.Status;
	}

	NtClose( SockEvent );

	if (NT_SUCCESS(Status)) {
		if (*NameLength >= SocketAddress->Address[0].AddressLength) {
			Name->sa_family = SocketAddress->Address[0].AddressType;
			RtlCopyMemory (Name->sa_data,
			               SocketAddress->Address[0].Address, 
			               SocketAddress->Address[0].AddressLength);
			HeapFree(GlobalHeap, 0, TdiAddress);
			return 0;
		} else {
			HeapFree(GlobalHeap, 0, TdiAddress);
			*lpErrno = WSAEFAULT;
			return SOCKET_ERROR;
		}
	}

	return MsafdReturnWithErrno
	    ( IOSB.Status, lpErrno, 0, NULL );    
}

INT
WSPAPI
WSPIoctl(
    IN  SOCKET Handle,
    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,
    IN  LPWSATHREADID lpThreadId,
    OUT LPINT lpErrno)
{
    PSOCKET_INFORMATION			Socket = NULL;

    /* Get the Socket Structure associate to this Socket*/
    Socket = GetSocketStructure(Handle);

    switch( dwIoControlCode ) {
    case FIONBIO:
	if( cbInBuffer < sizeof(INT) ) return SOCKET_ERROR;
	Socket->SharedData.NonBlocking = *((PINT)lpvInBuffer) ? 1 : 0;
	AFD_DbgPrint(MID_TRACE,("[%x] Set nonblocking %d\n",
				Handle, Socket->SharedData.NonBlocking));
	return 0;

    default:
	*lpErrno = WSAEINVAL;
	return SOCKET_ERROR;
    }
}


INT
WSPAPI
WSPGetSockOpt(
    IN      SOCKET Handle,
    IN      INT Level,
    IN      INT OptionName,
    OUT	    CHAR FAR* OptionValue,
    IN OUT  LPINT OptionLength,
    OUT     LPINT lpErrno)
{
    PSOCKET_INFORMATION Socket = NULL;
    PVOID Buffer;
    INT BufferSize;
    BOOLEAN BoolBuffer;

    /* Get the Socket Structure associate to this Socket*/
    Socket = GetSocketStructure(Handle);
    if (Socket == NULL)
    {
        *lpErrno = WSAENOTSOCK;
        return SOCKET_ERROR;
    }

    AFD_DbgPrint(MID_TRACE, ("Called\n"));

    switch (Level)
    {
        case SOL_SOCKET:
            switch (OptionName)
            {
                case SO_TYPE:
                    Buffer = &Socket->SharedData.SocketType;
                    BufferSize = sizeof(INT);
                    break;

                case SO_RCVBUF:
                    Buffer = &Socket->SharedData.SizeOfRecvBuffer;
                    BufferSize = sizeof(INT);
                    break;

                case SO_SNDBUF:
                    Buffer = &Socket->SharedData.SizeOfSendBuffer;
                    BufferSize = sizeof(INT);
                    break;

                case SO_ACCEPTCONN:
                    BoolBuffer = Socket->SharedData.Listening;
                    Buffer = &BoolBuffer;
                    BufferSize = sizeof(BOOLEAN);
                    break;

                case SO_BROADCAST:
                    BoolBuffer = Socket->SharedData.Broadcast;
                    Buffer = &BoolBuffer;
                    BufferSize = sizeof(BOOLEAN);
                    break;

                case SO_DEBUG:
                    BoolBuffer = Socket->SharedData.Debug;
                    Buffer = &BoolBuffer;
                    BufferSize = sizeof(BOOLEAN);
                    break;

                /* case SO_CONDITIONAL_ACCEPT: */
                case SO_DONTLINGER:
                case SO_DONTROUTE:
                case SO_ERROR:
                case SO_GROUP_ID:
                case SO_GROUP_PRIORITY:
                case SO_KEEPALIVE:
                case SO_LINGER:
                case SO_MAX_MSG_SIZE:
                case SO_OOBINLINE:
                case SO_PROTOCOL_INFO:
                case SO_REUSEADDR:
                    AFD_DbgPrint(MID_TRACE, ("Unimplemented option (%x)\n",
                                 OptionName));

                default:
                    *lpErrno = WSAEINVAL;
                    return SOCKET_ERROR;
            }
            
            if (*OptionLength < BufferSize)
            {
                *lpErrno = WSAEFAULT;
                *OptionLength = BufferSize;
                return SOCKET_ERROR;
            }
            RtlCopyMemory(OptionValue, Buffer, BufferSize);

            return 0;

        case IPPROTO_TCP: /* FIXME */
        default:
            *lpErrno = WSAEINVAL;
            return SOCKET_ERROR;
    }
}


INT
WSPAPI
WSPStartup(
  IN  WORD wVersionRequested,
  OUT LPWSPDATA lpWSPData,
  IN  LPWSAPROTOCOL_INFOW lpProtocolInfo,
  IN  WSPUPCALLTABLE UpcallTable,
  OUT LPWSPPROC_TABLE lpProcTable)
/*
 * FUNCTION: Initialize service provider for a client
 * ARGUMENTS:
 *     wVersionRequested = Highest WinSock SPI version that the caller can use
 *     lpWSPData         = Address of WSPDATA structure to initialize
 *     lpProtocolInfo    = Pointer to structure that defines the desired protocol
 *     UpcallTable       = Pointer to upcall table of the WinSock DLL
 *     lpProcTable       = Address of procedure table to initialize
 * RETURNS:
 *     Status of operation
 */
{
  NTSTATUS Status;

  AFD_DbgPrint(MAX_TRACE, ("wVersionRequested (0x%X) \n", wVersionRequested));

  Status = NO_ERROR;

  Upcalls = UpcallTable;

  if (Status == NO_ERROR) {
    lpProcTable->lpWSPAccept = WSPAccept;
    lpProcTable->lpWSPAddressToString = WSPAddressToString;
    lpProcTable->lpWSPAsyncSelect = WSPAsyncSelect;
    lpProcTable->lpWSPBind = WSPBind;
    lpProcTable->lpWSPCancelBlockingCall = WSPCancelBlockingCall;
    lpProcTable->lpWSPCleanup = WSPCleanup;
    lpProcTable->lpWSPCloseSocket = WSPCloseSocket;
    lpProcTable->lpWSPConnect = WSPConnect;
    lpProcTable->lpWSPDuplicateSocket = WSPDuplicateSocket;
    lpProcTable->lpWSPEnumNetworkEvents = WSPEnumNetworkEvents;
    lpProcTable->lpWSPEventSelect = WSPEventSelect;
    lpProcTable->lpWSPGetOverlappedResult = WSPGetOverlappedResult;
    lpProcTable->lpWSPGetPeerName = WSPGetPeerName;
    lpProcTable->lpWSPGetSockName = WSPGetSockName;
    lpProcTable->lpWSPGetSockOpt = WSPGetSockOpt;
    lpProcTable->lpWSPGetQOSByName = WSPGetQOSByName;
    lpProcTable->lpWSPIoctl = WSPIoctl;
    lpProcTable->lpWSPJoinLeaf = WSPJoinLeaf;
    lpProcTable->lpWSPListen = WSPListen;
    lpProcTable->lpWSPRecv = WSPRecv;
    lpProcTable->lpWSPRecvDisconnect = WSPRecvDisconnect;
    lpProcTable->lpWSPRecvFrom = WSPRecvFrom;
    lpProcTable->lpWSPSelect = WSPSelect;
    lpProcTable->lpWSPSend = WSPSend;
    lpProcTable->lpWSPSendDisconnect = WSPSendDisconnect;
    lpProcTable->lpWSPSendTo = WSPSendTo;
    lpProcTable->lpWSPSetSockOpt = WSPSetSockOpt;
    lpProcTable->lpWSPShutdown = WSPShutdown;
    lpProcTable->lpWSPSocket = WSPSocket;
    lpProcTable->lpWSPStringToAddress = WSPStringToAddress;

    lpWSPData->wVersion     = MAKEWORD(2, 2);
    lpWSPData->wHighVersion = MAKEWORD(2, 2);
  }

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

  return Status;
}


INT
WSPAPI
WSPCleanup(
  OUT LPINT lpErrno)
/*
 * FUNCTION: Cleans up service provider for a client
 * ARGUMENTS:
 *     lpErrno = Address of buffer for error information
 * RETURNS:
 *     0 if successful, or SOCKET_ERROR if not
 */
{
  AFD_DbgPrint(MAX_TRACE, ("\n"));

 
  AFD_DbgPrint(MAX_TRACE, ("Leaving.\n"));

  *lpErrno = NO_ERROR;

  return 0;
}



int 
GetSocketInformation(
	PSOCKET_INFORMATION Socket, 
	ULONG AfdInformationClass, 
	PULONG Ulong OPTIONAL, 
	PLARGE_INTEGER LargeInteger OPTIONAL)
{
	IO_STATUS_BLOCK				IOSB;
	AFD_INFO					InfoData;
	NTSTATUS					Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	/* Set Info Class */
	InfoData.InformationClass = AfdInformationClass;

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_GET_INFO,
					&InfoData,
					sizeof(InfoData),
					&InfoData,
					sizeof(InfoData));

	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
	}

	/* Return Information */
	*Ulong = InfoData.Information.Ulong;
	if (LargeInteger != NULL) {
		*LargeInteger = InfoData.Information.LargeInteger;
	}

	NtClose( SockEvent );

	return 0;

}


int 
SetSocketInformation(
	PSOCKET_INFORMATION Socket, 
	ULONG AfdInformationClass, 
	PULONG Ulong OPTIONAL, 
	PLARGE_INTEGER LargeInteger OPTIONAL)
{
	IO_STATUS_BLOCK				IOSB;
	AFD_INFO					InfoData;
	NTSTATUS					Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;

	/* Set Info Class */
	InfoData.InformationClass = AfdInformationClass;

	/* Set Information */
	InfoData.Information.Ulong = *Ulong;
	if (LargeInteger != NULL) {
		InfoData.Information.LargeInteger = *LargeInteger;
	}

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_GET_INFO,
					&InfoData,
					sizeof(InfoData),
					NULL,
					0);

	/* Wait for return */
	if (Status == STATUS_PENDING) {
		WaitForSingleObject(SockEvent, INFINITE);
	}

	NtClose( SockEvent );

	return 0;

}

PSOCKET_INFORMATION 
GetSocketStructure(
	SOCKET Handle)
{
777a10c0:	55                   	push   %ebp
	ULONG	i;

	for (i=0; i<SocketCount; i++) {
777a10c1:	31 d2                	xor    %edx,%edx
777a10c3:	89 e5                	mov    %esp,%ebp
777a10c5:	56                   	push   %esi
777a10c6:	53                   	push   %ebx
777a10c7:	8b 1d 0c 60 7a 77    	mov    0x777a600c,%ebx
777a10cd:	8b 75 08             	mov    0x8(%ebp),%esi
777a10d0:	39 da                	cmp    %ebx,%edx
777a10d2:	73 19                	jae    777a10ed <_GetSocketStructure+0x2d>
777a10d4:	8b 0d 08 60 7a 77    	mov    0x777a6008,%ecx
777a10da:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
		if (Sockets[i]->Handle == Handle) {
777a10e0:	8b 04 91             	mov    (%ecx,%edx,4),%eax
777a10e3:	39 70 04             	cmp    %esi,0x4(%eax)
777a10e6:	74 07                	je     777a10ef <_GetSocketStructure+0x2f>
777a10e8:	42                   	inc    %edx
777a10e9:	39 da                	cmp    %ebx,%edx
777a10eb:	72 f3                	jb     777a10e0 <_GetSocketStructure+0x20>
			return Sockets[i];
		}
	}
	return 0;
777a10ed:	31 c0                	xor    %eax,%eax
}
777a10ef:	5b                   	pop    %ebx
777a10f0:	5e                   	pop    %esi
777a10f1:	5d                   	pop    %ebp
777a10f2:	c3                   	ret    
777a10f3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a10f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a1100 <_CreateContext>:

int CreateContext(PSOCKET_INFORMATION Socket)
{
777a1100:	55                   	push   %ebp
777a1101:	89 e5                	mov    %esp,%ebp
777a1103:	56                   	push   %esi
777a1104:	53                   	push   %ebx
777a1105:	81 ec ac 00 00 00    	sub    $0xac,%esp
	IO_STATUS_BLOCK				IOSB;
	SOCKET_CONTEXT				ContextData;
	NTSTATUS				Status;
	HANDLE                                  SockEvent;

	Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
777a110b:	8d 85 64 ff ff ff    	lea    0xffffff64(%ebp),%eax
777a1111:	8b 75 08             	mov    0x8(%ebp),%esi
777a1114:	6a 00                	push   $0x0
777a1116:	6a 01                	push   $0x1
777a1118:	6a 00                	push   $0x0
777a111a:	68 00 00 00 c0       	push   $0xc0000000
777a111f:	50                   	push   %eax
777a1120:	e8 fb 32 00 00       	call   777a4420 <_NtCreateEvent@20>
				NULL, 1, FALSE );

	if( !NT_SUCCESS(Status) ) return -1;
777a1125:	83 ca ff             	or     $0xffffffff,%edx
777a1128:	83 c4 0c             	add    $0xc,%esp
777a112b:	85 c0                	test   %eax,%eax
777a112d:	0f 88 8b 00 00 00    	js     777a11be <_CreateContext+0xbe>

	/* Create Context */
	ContextData.SharedData = Socket->SharedData;
777a1133:	8d 9d 68 ff ff ff    	lea    0xffffff68(%ebp),%ebx
777a1139:	8d 46 08             	lea    0x8(%esi),%eax
777a113c:	52                   	push   %edx
777a113d:	6a 68                	push   $0x68
777a113f:	50                   	push   %eax
777a1140:	53                   	push   %ebx
777a1141:	e8 aa 33 00 00       	call   777a44f0 <_memcpy>
	ContextData.SizeOfHelperData = 0;
	RtlCopyMemory (&ContextData.LocalAddress, 
777a1146:	83 c4 0c             	add    $0xc,%esp
777a1149:	8b 46 18             	mov    0x18(%esi),%eax
777a114c:	c7 45 d0 00 00 00 00 	movl   $0x0,0xffffffd0(%ebp)
777a1153:	50                   	push   %eax
777a1154:	8b 46 7c             	mov    0x7c(%esi),%eax
777a1157:	50                   	push   %eax
777a1158:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a115b:	50                   	push   %eax
777a115c:	e8 8f 33 00 00       	call   777a44f0 <_memcpy>
					Socket->LocalAddress, 
					Socket->SharedData.SizeOfLocalAddress);
	RtlCopyMemory (&ContextData.RemoteAddress, 
777a1161:	83 c4 0c             	add    $0xc,%esp
777a1164:	8b 46 1c             	mov    0x1c(%esi),%eax
777a1167:	50                   	push   %eax
777a1168:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
777a116b:	8b 8e 80 00 00 00    	mov    0x80(%esi),%ecx
777a1171:	51                   	push   %ecx
777a1172:	50                   	push   %eax
777a1173:	e8 78 33 00 00       	call   777a44f0 <_memcpy>
					Socket->RemoteAddress, 
					Socket->SharedData.SizeOfRemoteAddress);

	/* Send IOCTL */
	Status = NtDeviceIoControlFile( (HANDLE)Socket->Handle,
777a1178:	58                   	pop    %eax
777a1179:	8d 85 58 ff ff ff    	lea    0xffffff58(%ebp),%eax
777a117f:	5a                   	pop    %edx
777a1180:	6a 00                	push   $0x0
777a1182:	6a 00                	push   $0x0
777a1184:	68 90 00 00 00       	push   $0x90
777a1189:	53                   	push   %ebx
777a118a:	68 47 20 01 00       	push   $0x12047
777a118f:	50                   	push   %eax
777a1190:	8b 85 64 ff ff ff    	mov    0xffffff64(%ebp),%eax
777a1196:	6a 00                	push   $0x0
777a1198:	6a 00                	push   $0x0
777a119a:	50                   	push   %eax
777a119b:	8b 5e 04             	mov    0x4(%esi),%ebx
777a119e:	53                   	push   %ebx
777a119f:	e8 8c 32 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
					SockEvent,
					NULL,
					NULL,
					&IOSB,
					IOCTL_AFD_SET_CONTEXT,
					&ContextData,
					sizeof(ContextData),
					NULL,
					0);

	/* Wait for Completition */
	if (Status == STATUS_PENDING) {
777a11a4:	5a                   	pop    %edx
777a11a5:	3d 03 01 00 00       	cmp    $0x103,%eax
777a11aa:	59                   	pop    %ecx
777a11ab:	74 1a                	je     777a11c7 <_CreateContext+0xc7>
		WaitForSingleObject(SockEvent, INFINITE);
	}
	
	NtClose( SockEvent );
777a11ad:	83 ec 0c             	sub    $0xc,%esp
777a11b0:	8b 95 64 ff ff ff    	mov    0xffffff64(%ebp),%edx
777a11b6:	52                   	push   %edx
777a11b7:	e8 84 32 00 00       	call   777a4440 <_NtClose@4>

	return 0;
777a11bc:	31 d2                	xor    %edx,%edx
}
777a11be:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a11c1:	89 d0                	mov    %edx,%eax
777a11c3:	5b                   	pop    %ebx
777a11c4:	5e                   	pop    %esi
777a11c5:	5d                   	pop    %ebp
777a11c6:	c3                   	ret    
777a11c7:	8b b5 64 ff ff ff    	mov    0xffffff64(%ebp),%esi
777a11cd:	50                   	push   %eax
777a11ce:	50                   	push   %eax
777a11cf:	6a ff                	push   $0xffffffff
777a11d1:	56                   	push   %esi
777a11d2:	e8 69 33 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a11d7:	59                   	pop    %ecx
777a11d8:	5b                   	pop    %ebx
777a11d9:	eb d2                	jmp    777a11ad <_CreateContext+0xad>
777a11db:	90                   	nop    
777a11dc:	8d 74 26 00          	lea    0x0(%esi),%esi

777a11e0 <_GetSocketInformation>:
777a11e0:	55                   	push   %ebp
777a11e1:	89 e5                	mov    %esp,%ebp
777a11e3:	53                   	push   %ebx
777a11e4:	83 ec 40             	sub    $0x40,%esp
777a11e7:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a11ea:	8b 5d 14             	mov    0x14(%ebp),%ebx
777a11ed:	6a 00                	push   $0x0
777a11ef:	6a 01                	push   $0x1
777a11f1:	6a 00                	push   $0x0
777a11f3:	68 00 00 00 c0       	push   $0xc0000000
777a11f8:	50                   	push   %eax
777a11f9:	e8 22 32 00 00       	call   777a4420 <_NtCreateEvent@20>
777a11fe:	83 ca ff             	or     $0xffffffff,%edx
777a1201:	83 c4 0c             	add    $0xc,%esp
777a1204:	85 c0                	test   %eax,%eax
777a1206:	78 5c                	js     777a1264 <_GetSocketInformation+0x84>
777a1208:	8b 45 0c             	mov    0xc(%ebp),%eax
777a120b:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a120e:	50                   	push   %eax
777a120f:	50                   	push   %eax
777a1210:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a1213:	6a 18                	push   $0x18
777a1215:	50                   	push   %eax
777a1216:	6a 18                	push   $0x18
777a1218:	50                   	push   %eax
777a1219:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a121c:	68 7b 20 01 00       	push   $0x1207b
777a1221:	50                   	push   %eax
777a1222:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a1225:	6a 00                	push   $0x0
777a1227:	6a 00                	push   $0x0
777a1229:	50                   	push   %eax
777a122a:	8b 45 08             	mov    0x8(%ebp),%eax
777a122d:	8b 40 04             	mov    0x4(%eax),%eax
777a1230:	50                   	push   %eax
777a1231:	e8 fa 31 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a1236:	5a                   	pop    %edx
777a1237:	3d 03 01 00 00       	cmp    $0x103,%eax
777a123c:	59                   	pop    %ecx
777a123d:	74 31                	je     777a1270 <_GetSocketInformation+0x90>
777a123f:	8b 45 10             	mov    0x10(%ebp),%eax
777a1242:	8b 55 e0             	mov    0xffffffe0(%ebp),%edx
777a1245:	85 db                	test   %ebx,%ebx
777a1247:	89 10                	mov    %edx,(%eax)
777a1249:	74 0b                	je     777a1256 <_GetSocketInformation+0x76>
777a124b:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
777a124e:	8b 55 e4             	mov    0xffffffe4(%ebp),%edx
777a1251:	89 53 04             	mov    %edx,0x4(%ebx)
777a1254:	89 03                	mov    %eax,(%ebx)
777a1256:	83 ec 0c             	sub    $0xc,%esp
777a1259:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a125c:	51                   	push   %ecx
777a125d:	e8 de 31 00 00       	call   777a4440 <_NtClose@4>
777a1262:	31 d2                	xor    %edx,%edx
777a1264:	89 d0                	mov    %edx,%eax
777a1266:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777a1269:	c9                   	leave  
777a126a:	c3                   	ret    
777a126b:	90                   	nop    
777a126c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a1270:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a1273:	50                   	push   %eax
777a1274:	50                   	push   %eax
777a1275:	6a ff                	push   $0xffffffff
777a1277:	51                   	push   %ecx
777a1278:	e8 c3 32 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a127d:	58                   	pop    %eax
777a127e:	5a                   	pop    %edx
777a127f:	eb be                	jmp    777a123f <_GetSocketInformation+0x5f>
777a1281:	eb 0d                	jmp    777a1290 <_WSPSocket@28>
777a1283:	90                   	nop    
777a1284:	90                   	nop    
777a1285:	90                   	nop    
777a1286:	90                   	nop    
777a1287:	90                   	nop    
777a1288:	90                   	nop    
777a1289:	90                   	nop    
777a128a:	90                   	nop    
777a128b:	90                   	nop    
777a128c:	90                   	nop    
777a128d:	90                   	nop    
777a128e:	90                   	nop    
777a128f:	90                   	nop    

777a1290 <_WSPSocket@28>:
777a1290:	55                   	push   %ebp
777a1291:	89 e5                	mov    %esp,%ebp
777a1293:	57                   	push   %edi
777a1294:	56                   	push   %esi
777a1295:	53                   	push   %ebx
777a1296:	81 ec 88 00 00 00    	sub    $0x88,%esp
777a129c:	8d 45 c4             	lea    0xffffffc4(%ebp),%eax
777a129f:	8b 7d 14             	mov    0x14(%ebp),%edi
777a12a2:	c7 45 84 00 00 00 00 	movl   $0x0,0xffffff84(%ebp)
777a12a9:	50                   	push   %eax
777a12aa:	8d 45 c0             	lea    0xffffffc0(%ebp),%eax
777a12ad:	50                   	push   %eax
777a12ae:	8d 45 bc             	lea    0xffffffbc(%ebp),%eax
777a12b1:	50                   	push   %eax
777a12b2:	8d 45 b0             	lea    0xffffffb0(%ebp),%eax
777a12b5:	50                   	push   %eax
777a12b6:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a12b9:	50                   	push   %eax
777a12ba:	8d 45 10             	lea    0x10(%ebp),%eax
777a12bd:	8b 75 18             	mov    0x18(%ebp),%esi
777a12c0:	56                   	push   %esi
777a12c1:	50                   	push   %eax
777a12c2:	8d 45 0c             	lea    0xc(%ebp),%eax
777a12c5:	50                   	push   %eax
777a12c6:	8d 45 08             	lea    0x8(%ebp),%eax
777a12c9:	50                   	push   %eax
777a12ca:	e8 71 26 00 00       	call   777a3940 <_SockGetTdiName>
777a12cf:	83 c4 30             	add    $0x30,%esp
777a12d2:	85 c0                	test   %eax,%eax
777a12d4:	89 45 80             	mov    %eax,0xffffff80(%ebp)
777a12d7:	0f 85 08 02 00 00    	jne    777a14e5 <_WSPSocket@28+0x255>
777a12dd:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
777a12e0:	53                   	push   %ebx
777a12e1:	53                   	push   %ebx
777a12e2:	68 1c 50 7a 77       	push   $0x777a501c
777a12e7:	50                   	push   %eax
777a12e8:	ff 15 70 81 7a 77    	call   *0x777a8170
777a12ee:	c7 04 24 d8 00 00 00 	movl   $0xd8,(%esp)
777a12f5:	6a 00                	push   $0x0
777a12f7:	8b 0d 30 60 7a 77    	mov    0x777a6030,%ecx
777a12fd:	51                   	push   %ecx
777a12fe:	e8 4d 32 00 00       	call   777a4550 <_HeapAlloc@12>
777a1303:	89 c6                	mov    %eax,%esi
777a1305:	68 d8 00 00 00       	push   $0xd8
777a130a:	6a 00                	push   $0x0
777a130c:	50                   	push   %eax
777a130d:	e8 ee 31 00 00       	call   777a4500 <_memset>
777a1312:	8b 45 08             	mov    0x8(%ebp),%eax
777a1315:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777a1318:	89 46 0c             	mov    %eax,0xc(%esi)
777a131b:	8b 45 10             	mov    0x10(%ebp),%eax
777a131e:	89 46 14             	mov    %eax,0x14(%esi)
777a1321:	8b 45 bc             	mov    0xffffffbc(%ebp),%eax
777a1324:	8b 55 c0             	mov    0xffffffc0(%ebp),%edx
777a1327:	89 46 78             	mov    %eax,0x78(%esi)
777a132a:	8b 45 c4             	mov    0xffffffc4(%ebp),%eax
777a132d:	89 4e 10             	mov    %ecx,0x10(%esi)
777a1330:	89 46 70             	mov    %eax,0x70(%esi)
777a1333:	c7 46 04 ff ff ff ff 	movl   $0xffffffff,0x4(%esi)
777a133a:	8d 86 b8 00 00 00    	lea    0xb8(%esi),%eax
777a1340:	c7 06 02 00 00 00    	movl   $0x2,(%esi)
777a1346:	89 46 7c             	mov    %eax,0x7c(%esi)
777a1349:	8b 42 14             	mov    0x14(%edx),%eax
777a134c:	89 46 18             	mov    %eax,0x18(%esi)
777a134f:	8d 86 c8 00 00 00    	lea    0xc8(%esi),%eax
777a1355:	89 86 80 00 00 00    	mov    %eax,0x80(%esi)
777a135b:	8b 42 14             	mov    0x14(%edx),%eax
777a135e:	89 56 74             	mov    %edx,0x74(%esi)
777a1361:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
777a1368:	89 46 1c             	mov    %eax,0x1c(%esi)
777a136b:	83 e9 02             	sub    $0x2,%ecx
777a136e:	8a 42 20             	mov    0x20(%edx),%al
777a1371:	8a 56 35             	mov    0x35(%esi),%dl
777a1374:	83 e0 01             	and    $0x1,%eax
777a1377:	83 e2 fb             	and    $0xfffffffb,%edx
777a137a:	c1 e0 02             	shl    $0x2,%eax
777a137d:	83 c4 10             	add    $0x10,%esp
777a1380:	09 c2                	or     %eax,%edx
777a1382:	88 56 35             	mov    %dl,0x35(%esi)
777a1385:	83 e2 f7             	and    $0xfffffff7,%edx
777a1388:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a138b:	89 46 38             	mov    %eax,0x38(%esi)
777a138e:	8b 47 24             	mov    0x24(%edi),%eax
777a1391:	89 46 3c             	mov    %eax,0x3c(%esi)
777a1394:	8b 1f                	mov    (%edi),%ebx
777a1396:	89 5e 40             	mov    %ebx,0x40(%esi)
777a1399:	8b 47 10             	mov    0x10(%edi),%eax
777a139c:	89 46 44             	mov    %eax,0x44(%esi)
777a139f:	8b 45 18             	mov    0x18(%ebp),%eax
777a13a2:	89 46 48             	mov    %eax,0x48(%esi)
777a13a5:	c7 46 4c 00 00 00 00 	movl   $0x0,0x4c(%esi)
777a13ac:	80 66 34 bf          	andb   $0xbf,0x34(%esi)
777a13b0:	88 56 35             	mov    %dl,0x35(%esi)
777a13b3:	c7 86 b0 00 00 00 00 	movl   $0x0,0xb0(%esi)
777a13ba:	00 00 00 
777a13bd:	83 f9 01             	cmp    $0x1,%ecx
777a13c0:	0f 86 3b 01 00 00    	jbe    777a1501 <_WSPSocket@28+0x271>
777a13c6:	8b 5d b0             	mov    0xffffffb0(%ebp),%ebx
777a13c9:	83 c3 12             	add    $0x12,%ebx
777a13cc:	89 d8                	mov    %ebx,%eax
777a13ce:	25 ff ff 00 00       	and    $0xffff,%eax
777a13d3:	83 c0 1b             	add    $0x1b,%eax
777a13d6:	89 45 8c             	mov    %eax,0xffffff8c(%ebp)
777a13d9:	52                   	push   %edx
777a13da:	50                   	push   %eax
777a13db:	6a 00                	push   $0x0
777a13dd:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a13e2:	50                   	push   %eax
777a13e3:	e8 68 31 00 00       	call   777a4550 <_HeapAlloc@12>
777a13e8:	89 c7                	mov    %eax,%edi
777a13ea:	8b 45 8c             	mov    0xffffff8c(%ebp),%eax
777a13ed:	50                   	push   %eax
777a13ee:	6a 00                	push   $0x0
777a13f0:	57                   	push   %edi
777a13f1:	e8 0a 31 00 00       	call   777a4500 <_memset>
777a13f6:	83 c4 0c             	add    $0xc,%esp
777a13f9:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
777a13ff:	c6 47 04 00          	movb   $0x0,0x4(%edi)
777a1403:	c6 47 05 0f          	movb   $0xf,0x5(%edi)
777a1407:	8d 47 08             	lea    0x8(%edi),%eax
777a140a:	6a 10                	push   $0x10
777a140c:	68 46 50 7a 77       	push   $0x777a5046
777a1411:	50                   	push   %eax
777a1412:	e8 d9 30 00 00       	call   777a44f0 <_memcpy>
777a1417:	31 c0                	xor    %eax,%eax
777a1419:	8a 47 05             	mov    0x5(%edi),%al
777a141c:	66 89 5f 06          	mov    %bx,0x6(%edi)
777a1420:	01 f8                	add    %edi,%eax
777a1422:	83 c4 0c             	add    $0xc,%esp
777a1425:	89 85 7c ff ff ff    	mov    %eax,0xffffff7c(%ebp)
777a142b:	83 c0 09             	add    $0x9,%eax
777a142e:	89 45 88             	mov    %eax,0xffffff88(%ebp)
777a1431:	8b 45 b0             	mov    0xffffffb0(%ebp),%eax
777a1434:	8b 55 88             	mov    0xffffff88(%ebp),%edx
777a1437:	25 ff ff 00 00       	and    $0xffff,%eax
777a143c:	89 42 08             	mov    %eax,0x8(%edx)
777a143f:	83 c0 02             	add    $0x2,%eax
777a1442:	50                   	push   %eax
777a1443:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a1446:	50                   	push   %eax
777a1447:	8b 85 7c ff ff ff    	mov    0xffffff7c(%ebp),%eax
777a144d:	83 c0 15             	add    $0x15,%eax
777a1450:	50                   	push   %eax
777a1451:	e8 9a 30 00 00       	call   777a44f0 <_memcpy>
777a1456:	8b 4d 88             	mov    0xffffff88(%ebp),%ecx
777a1459:	8b 45 18             	mov    0x18(%ebp),%eax
777a145c:	83 c4 10             	add    $0x10,%esp
777a145f:	89 41 04             	mov    %eax,0x4(%ecx)
777a1462:	8b 5e 40             	mov    0x40(%esi),%ebx
777a1465:	f6 c3 01             	test   $0x1,%bl
777a1468:	0f 84 72 01 00 00    	je     777a15e0 <_WSPSocket@28+0x350>
777a146e:	8b 55 0c             	mov    0xc(%ebp),%edx
777a1471:	8d 42 fe             	lea    0xfffffffe(%edx),%eax
777a1474:	83 f8 01             	cmp    $0x1,%eax
777a1477:	77 6c                	ja     777a14e5 <_WSPSocket@28+0x255>
777a1479:	8b 8d 7c ff ff ff    	mov    0xffffff7c(%ebp),%ecx
777a147f:	8b 59 09             	mov    0x9(%ecx),%ebx
777a1482:	83 cb 01             	or     $0x1,%ebx
777a1485:	89 59 09             	mov    %ebx,0x9(%ecx)
777a1488:	8b 5e 40             	mov    0x40(%esi),%ebx
777a148b:	f6 c3 08             	test   $0x8,%bl
777a148e:	74 18                	je     777a14a8 <_WSPSocket@28+0x218>
777a1490:	83 fa 01             	cmp    $0x1,%edx
777a1493:	0f 84 a9 01 00 00    	je     777a1642 <_WSPSocket@28+0x3b2>
777a1499:	8b 85 7c ff ff ff    	mov    0xffffff7c(%ebp),%eax
777a149f:	8b 48 09             	mov    0x9(%eax),%ecx
777a14a2:	83 c9 10             	or     $0x10,%ecx
777a14a5:	89 48 09             	mov    %ecx,0x9(%eax)
777a14a8:	83 fa 03             	cmp    $0x3,%edx
777a14ab:	0f 84 37 01 00 00    	je     777a15e8 <_WSPSocket@28+0x358>
777a14b1:	f6 45 1c 1e          	testb  $0x1e,0x1c(%ebp)
777a14b5:	74 5f                	je     777a1516 <_WSPSocket@28+0x286>
777a14b7:	f6 46 41 04          	testb  $0x4,0x41(%esi)
777a14bb:	74 28                	je     777a14e5 <_WSPSocket@28+0x255>
777a14bd:	8b 4d 88             	mov    0xffffff88(%ebp),%ecx
777a14c0:	8b 11                	mov    (%ecx),%edx
777a14c2:	89 d0                	mov    %edx,%eax
777a14c4:	80 cc 10             	or     $0x10,%ah
777a14c7:	f6 45 1c 02          	testb  $0x2,0x1c(%ebp)
777a14cb:	89 01                	mov    %eax,(%ecx)
777a14cd:	0f 85 24 01 00 00    	jne    777a15f7 <_WSPSocket@28+0x367>
777a14d3:	f6 45 1c 08          	testb  $0x8,0x1c(%ebp)
777a14d7:	74 3d                	je     777a1516 <_WSPSocket@28+0x286>
777a14d9:	f6 46 41 10          	testb  $0x10,0x41(%esi)
777a14dd:	74 06                	je     777a14e5 <_WSPSocket@28+0x255>
777a14df:	f6 45 1c 10          	testb  $0x10,0x1c(%ebp)
777a14e3:	74 27                	je     777a150c <_WSPSocket@28+0x27c>
777a14e5:	8b 45 20             	mov    0x20(%ebp),%eax
777a14e8:	85 c0                	test   %eax,%eax
777a14ea:	74 08                	je     777a14f4 <_WSPSocket@28+0x264>
777a14ec:	8b 45 20             	mov    0x20(%ebp),%eax
777a14ef:	8b 55 80             	mov    0xffffff80(%ebp),%edx
777a14f2:	89 10                	mov    %edx,(%eax)
777a14f4:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a14f7:	83 c8 ff             	or     $0xffffffff,%eax
777a14fa:	5b                   	pop    %ebx
777a14fb:	5e                   	pop    %esi
777a14fc:	5f                   	pop    %edi
777a14fd:	5d                   	pop    %ebp
777a14fe:	c2 1c 00             	ret    $0x1c
777a1501:	83 cb 01             	or     $0x1,%ebx
777a1504:	89 5e 40             	mov    %ebx,0x40(%esi)
777a1507:	e9 ba fe ff ff       	jmp    777a13c6 <_WSPSocket@28+0x136>
777a150c:	8b 55 88             	mov    0xffffff88(%ebp),%edx
777a150f:	0d 00 00 10 00       	or     $0x100000,%eax
777a1514:	89 02                	mov    %eax,(%edx)
777a1516:	8d 4d a8             	lea    0xffffffa8(%ebp),%ecx
777a1519:	c7 45 c8 18 00 00 00 	movl   $0x18,0xffffffc8(%ebp)
777a1520:	c7 45 cc 00 00 00 00 	movl   $0x0,0xffffffcc(%ebp)
777a1527:	c7 45 d4 42 00 00 00 	movl   $0x42,0xffffffd4(%ebp)
777a152e:	89 4d d0             	mov    %ecx,0xffffffd0(%ebp)
777a1531:	c7 45 d8 00 00 00 00 	movl   $0x0,0xffffffd8(%ebp)
777a1538:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
777a153f:	f6 45 1c 01          	testb  $0x1,0x1c(%ebp)
777a1543:	75 07                	jne    777a154c <_WSPSocket@28+0x2bc>
777a1545:	c7 45 84 20 00 00 00 	movl   $0x20,0xffffff84(%ebp)
777a154c:	50                   	push   %eax
777a154d:	8b 45 8c             	mov    0xffffff8c(%ebp),%eax
777a1550:	50                   	push   %eax
777a1551:	57                   	push   %edi
777a1552:	8b 5d 84             	mov    0xffffff84(%ebp),%ebx
777a1555:	8d 45 a0             	lea    0xffffffa0(%ebp),%eax
777a1558:	53                   	push   %ebx
777a1559:	6a 03                	push   $0x3
777a155b:	6a 03                	push   $0x3
777a155d:	6a 00                	push   $0x0
777a155f:	6a 00                	push   $0x0
777a1561:	50                   	push   %eax
777a1562:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a1565:	50                   	push   %eax
777a1566:	8d 45 9c             	lea    0xffffff9c(%ebp),%eax
777a1569:	68 00 00 10 c0       	push   $0xc0100000
777a156e:	50                   	push   %eax
777a156f:	e8 ec 2e 00 00       	call   777a4460 <_ZwCreateFile@44>
777a1574:	8b 45 9c             	mov    0xffffff9c(%ebp),%eax
777a1577:	89 46 04             	mov    %eax,0x4(%esi)
777a157a:	8b 55 18             	mov    0x18(%ebp),%edx
777a157d:	59                   	pop    %ecx
777a157e:	85 d2                	test   %edx,%edx
777a1580:	0f 85 9a 00 00 00    	jne    777a1620 <_WSPSocket@28+0x390>
777a1586:	8d 46 30             	lea    0x30(%esi),%eax
777a1589:	6a 00                	push   $0x0
777a158b:	50                   	push   %eax
777a158c:	6a 07                	push   $0x7
777a158e:	56                   	push   %esi
777a158f:	e8 4c fc ff ff       	call   777a11e0 <_GetSocketInformation>
777a1594:	8d 46 2c             	lea    0x2c(%esi),%eax
777a1597:	6a 00                	push   $0x0
777a1599:	50                   	push   %eax
777a159a:	6a 06                	push   $0x6
777a159c:	56                   	push   %esi
777a159d:	e8 3e fc ff ff       	call   777a11e0 <_GetSocketInformation>
777a15a2:	a1 0c 60 7a 77       	mov    0x777a600c,%eax
777a15a7:	8b 15 08 60 7a 77    	mov    0x777a6008,%edx
777a15ad:	83 c4 14             	add    $0x14,%esp
777a15b0:	89 34 82             	mov    %esi,(%edx,%eax,4)
777a15b3:	40                   	inc    %eax
777a15b4:	a3 0c 60 7a 77       	mov    %eax,0x777a600c
777a15b9:	56                   	push   %esi
777a15ba:	e8 41 fb ff ff       	call   777a1100 <_CreateContext>
777a15bf:	83 c4 0c             	add    $0xc,%esp
777a15c2:	8b 45 20             	mov    0x20(%ebp),%eax
777a15c5:	50                   	push   %eax
777a15c6:	8b 45 9c             	mov    0xffffff9c(%ebp),%eax
777a15c9:	50                   	push   %eax
777a15ca:	6a 01                	push   $0x1
777a15cc:	ff 15 58 60 7a 77    	call   *0x777a6058
777a15d2:	8b 45 9c             	mov    0xffffff9c(%ebp),%eax
777a15d5:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a15d8:	5b                   	pop    %ebx
777a15d9:	5e                   	pop    %esi
777a15da:	5f                   	pop    %edi
777a15db:	5d                   	pop    %ebp
777a15dc:	c2 1c 00             	ret    $0x1c
777a15df:	90                   	nop    
777a15e0:	8b 55 0c             	mov    0xc(%ebp),%edx
777a15e3:	e9 a3 fe ff ff       	jmp    777a148b <_WSPSocket@28+0x1fb>
777a15e8:	8b 55 88             	mov    0xffffff88(%ebp),%edx
777a15eb:	8b 02                	mov    (%edx),%eax
777a15ed:	80 cc 01             	or     $0x1,%ah
777a15f0:	89 02                	mov    %eax,(%edx)
777a15f2:	e9 ba fe ff ff       	jmp    777a14b1 <_WSPSocket@28+0x221>
777a15f7:	f6 46 41 08          	testb  $0x8,0x41(%esi)
777a15fb:	0f 84 e4 fe ff ff    	je     777a14e5 <_WSPSocket@28+0x255>
777a1601:	f6 45 1c 04          	testb  $0x4,0x1c(%ebp)
777a1605:	0f 85 da fe ff ff    	jne    777a14e5 <_WSPSocket@28+0x255>
777a160b:	89 d0                	mov    %edx,%eax
777a160d:	0d 00 10 01 00       	or     $0x11000,%eax
777a1612:	89 01                	mov    %eax,(%ecx)
777a1614:	e9 ba fe ff ff       	jmp    777a14d3 <_WSPSocket@28+0x243>
777a1619:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a1620:	8d 45 90             	lea    0xffffff90(%ebp),%eax
777a1623:	50                   	push   %eax
777a1624:	6a 00                	push   $0x0
777a1626:	6a 10                	push   $0x10
777a1628:	56                   	push   %esi
777a1629:	e8 b2 fb ff ff       	call   777a11e0 <_GetSocketInformation>
777a162e:	8b 45 90             	mov    0xffffff90(%ebp),%eax
777a1631:	89 46 48             	mov    %eax,0x48(%esi)
777a1634:	83 c4 10             	add    $0x10,%esp
777a1637:	8b 45 94             	mov    0xffffff94(%ebp),%eax
777a163a:	89 46 4c             	mov    %eax,0x4c(%esi)
777a163d:	e9 44 ff ff ff       	jmp    777a1586 <_WSPSocket@28+0x2f6>
777a1642:	83 e3 10             	and    $0x10,%ebx
777a1645:	0f 85 4e fe ff ff    	jne    777a1499 <_WSPSocket@28+0x209>
777a164b:	e9 95 fe ff ff       	jmp    777a14e5 <_WSPSocket@28+0x255>

777a1650 <_WSPCloseSocket@8>:
777a1650:	55                   	push   %ebp
777a1651:	89 e5                	mov    %esp,%ebp
777a1653:	57                   	push   %edi
777a1654:	56                   	push   %esi
777a1655:	53                   	push   %ebx
777a1656:	83 ec 38             	sub    $0x38,%esp
777a1659:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a165c:	8b 7d 08             	mov    0x8(%ebp),%edi
777a165f:	6a 00                	push   $0x0
777a1661:	6a 01                	push   $0x1
777a1663:	6a 00                	push   $0x0
777a1665:	68 00 00 00 c0       	push   $0xc0000000
777a166a:	50                   	push   %eax
777a166b:	e8 b0 2d 00 00       	call   777a4420 <_NtCreateEvent@20>
777a1670:	83 ca ff             	or     $0xffffffff,%edx
777a1673:	83 c4 0c             	add    $0xc,%esp
777a1676:	85 c0                	test   %eax,%eax
777a1678:	78 66                	js     777a16e0 <_WSPCloseSocket@8+0x90>
777a167a:	57                   	push   %edi
777a167b:	e8 40 fa ff ff       	call   777a10c0 <_GetSocketStructure>
777a1680:	89 c3                	mov    %eax,%ebx
777a1682:	5a                   	pop    %edx
777a1683:	8b 40 08             	mov    0x8(%eax),%eax
777a1686:	83 f8 04             	cmp    $0x4,%eax
777a1689:	0f 84 36 01 00 00    	je     777a17c5 <_WSPCloseSocket@8+0x175>
777a168f:	c7 43 08 04 00 00 00 	movl   $0x4,0x8(%ebx)
777a1696:	83 f8 03             	cmp    $0x3,%eax
777a1699:	74 55                	je     777a16f0 <_WSPCloseSocket@8+0xa0>
777a169b:	83 ec 0c             	sub    $0xc,%esp
777a169e:	c7 43 78 00 00 00 00 	movl   $0x0,0x78(%ebx)
777a16a5:	c7 43 6c ff ff ff ff 	movl   $0xffffffff,0x6c(%ebx)
777a16ac:	8b 83 84 00 00 00    	mov    0x84(%ebx),%eax
777a16b2:	50                   	push   %eax
777a16b3:	e8 88 2d 00 00       	call   777a4440 <_NtClose@4>
777a16b8:	c7 83 84 00 00 00 00 	movl   $0x0,0x84(%ebx)
777a16bf:	00 00 00 
777a16c2:	8b 83 88 00 00 00    	mov    0x88(%ebx),%eax
777a16c8:	50                   	push   %eax
777a16c9:	e8 72 2d 00 00       	call   777a4440 <_NtClose@4>
777a16ce:	c7 83 88 00 00 00 00 	movl   $0x0,0x88(%ebx)
777a16d5:	00 00 00 
777a16d8:	57                   	push   %edi
777a16d9:	e8 62 2d 00 00       	call   777a4440 <_NtClose@4>
777a16de:	31 d2                	xor    %edx,%edx
777a16e0:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a16e3:	89 d0                	mov    %edx,%eax
777a16e5:	5b                   	pop    %ebx
777a16e6:	5e                   	pop    %esi
777a16e7:	5f                   	pop    %edi
777a16e8:	5d                   	pop    %ebp
777a16e9:	c2 08 00             	ret    $0x8
777a16ec:	8d 74 26 00          	lea    0x0(%esi),%esi
777a16f0:	66 83 7b 20 00       	cmpw   $0x0,0x20(%ebx)
777a16f5:	74 a4                	je     777a169b <_WSPCloseSocket@8+0x4b>
777a16f7:	66 8b 43 22          	mov    0x22(%ebx),%ax
777a16fb:	25 ff ff 00 00       	and    $0xffff,%eax
777a1700:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1703:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1706:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1709:	89 c6                	mov    %eax,%esi
777a170b:	c1 e6 03             	shl    $0x3,%esi
777a170e:	eb 32                	jmp    777a1742 <_WSPCloseSocket@8+0xf2>
777a1710:	8d 45 d0             	lea    0xffffffd0(%ebp),%eax
777a1713:	6a 00                	push   $0x0
777a1715:	50                   	push   %eax
777a1716:	6a 04                	push   $0x4
777a1718:	53                   	push   %ebx
777a1719:	e8 c2 fa ff ff       	call   777a11e0 <_GetSocketInformation>
777a171e:	83 c4 10             	add    $0x10,%esp
777a1721:	85 c0                	test   %eax,%eax
777a1723:	75 1f                	jne    777a1744 <_WSPCloseSocket@8+0xf4>
777a1725:	8b 45 d0             	mov    0xffffffd0(%ebp),%eax
777a1728:	85 c0                	test   %eax,%eax
777a172a:	74 77                	je     777a17a3 <_WSPCloseSocket@8+0x153>
777a172c:	f6 43 34 40          	testb  $0x40,0x34(%ebx)
777a1730:	75 7b                	jne    777a17ad <_WSPCloseSocket@8+0x15d>
777a1732:	83 ec 0c             	sub    $0xc,%esp
777a1735:	6a 64                	push   $0x64
777a1737:	e8 24 2e 00 00       	call   777a4560 <_Sleep@4>
777a173c:	83 c4 0c             	add    $0xc,%esp
777a173f:	83 ee 64             	sub    $0x64,%esi
777a1742:	75 cc                	jne    777a1710 <_WSPCloseSocket@8+0xc0>
777a1744:	83 ec 0c             	sub    $0xc,%esp
777a1747:	6a 00                	push   $0x0
777a1749:	ff 15 68 81 7a 77    	call   *0x777a8168
777a174f:	8b 75 d4             	mov    0xffffffd4(%ebp),%esi
777a1752:	c7 45 d8 04 00 00 00 	movl   $0x4,0xffffffd8(%ebp)
777a1759:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a175c:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a175f:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a1766:	6a 00                	push   $0x0
777a1768:	6a 10                	push   $0x10
777a176a:	50                   	push   %eax
777a176b:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a176e:	68 2b 20 01 00       	push   $0x1202b
777a1773:	89 55 e4             	mov    %edx,0xffffffe4(%ebp)
777a1776:	50                   	push   %eax
777a1777:	6a 00                	push   $0x0
777a1779:	6a 00                	push   $0x0
777a177b:	56                   	push   %esi
777a177c:	57                   	push   %edi
777a177d:	e8 ae 2c 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a1782:	5a                   	pop    %edx
777a1783:	3d 03 01 00 00       	cmp    $0x103,%eax
777a1788:	59                   	pop    %ecx
777a1789:	0f 85 0c ff ff ff    	jne    777a169b <_WSPCloseSocket@8+0x4b>
777a178f:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a1792:	56                   	push   %esi
777a1793:	56                   	push   %esi
777a1794:	6a ff                	push   $0xffffffff
777a1796:	51                   	push   %ecx
777a1797:	e8 a4 2d 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a179c:	58                   	pop    %eax
777a179d:	5a                   	pop    %edx
777a179e:	e9 f8 fe ff ff       	jmp    777a169b <_WSPCloseSocket@8+0x4b>
777a17a3:	85 f6                	test   %esi,%esi
777a17a5:	0f 85 f0 fe ff ff    	jne    777a169b <_WSPCloseSocket@8+0x4b>
777a17ab:	eb 97                	jmp    777a1744 <_WSPCloseSocket@8+0xf4>
777a17ad:	8b 45 0c             	mov    0xc(%ebp),%eax
777a17b0:	83 ca ff             	or     $0xffffffff,%edx
777a17b3:	c7 43 08 03 00 00 00 	movl   $0x3,0x8(%ebx)
777a17ba:	c7 00 33 27 00 00    	movl   $0x2733,(%eax)
777a17c0:	e9 1b ff ff ff       	jmp    777a16e0 <_WSPCloseSocket@8+0x90>
777a17c5:	8b 45 0c             	mov    0xc(%ebp),%eax
777a17c8:	83 ca ff             	or     $0xffffffff,%edx
777a17cb:	c7 00 36 27 00 00    	movl   $0x2736,(%eax)
777a17d1:	e9 0a ff ff ff       	jmp    777a16e0 <_WSPCloseSocket@8+0x90>
777a17d6:	8d 76 00             	lea    0x0(%esi),%esi
777a17d9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a17e0 <_WSPBind@16>:
777a17e0:	55                   	push   %ebp
777a17e1:	89 e5                	mov    %esp,%ebp
777a17e3:	57                   	push   %edi
777a17e4:	56                   	push   %esi
777a17e5:	53                   	push   %ebx
777a17e6:	83 ec 58             	sub    $0x58,%esp
777a17e9:	8d 45 c4             	lea    0xffffffc4(%ebp),%eax
777a17ec:	8b 7d 0c             	mov    0xc(%ebp),%edi
777a17ef:	8b 75 10             	mov    0x10(%ebp),%esi
777a17f2:	6a 00                	push   $0x0
777a17f4:	6a 01                	push   $0x1
777a17f6:	6a 00                	push   $0x0
777a17f8:	68 00 00 00 c0       	push   $0xc0000000
777a17fd:	50                   	push   %eax
777a17fe:	e8 1d 2c 00 00       	call   777a4420 <_NtCreateEvent@20>
777a1803:	83 ca ff             	or     $0xffffffff,%edx
777a1806:	83 c4 0c             	add    $0xc,%esp
777a1809:	85 c0                	test   %eax,%eax
777a180b:	0f 88 c7 00 00 00    	js     777a18d8 <_WSPBind@16+0xf8>
777a1811:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a1814:	51                   	push   %ecx
777a1815:	e8 a6 f8 ff ff       	call   777a10c0 <_GetSocketStructure>
777a181a:	89 c3                	mov    %eax,%ebx
777a181c:	8d 46 fe             	lea    0xfffffffe(%esi),%eax
777a181f:	66 89 45 d0          	mov    %ax,0xffffffd0(%ebp)
777a1823:	c7 45 cc 01 00 00 00 	movl   $0x1,0xffffffcc(%ebp)
777a182a:	66 8b 07             	mov    (%edi),%ax
777a182d:	66 89 45 d2          	mov    %ax,0xffffffd2(%ebp)
777a1831:	8d 46 fe             	lea    0xfffffffe(%esi),%eax
777a1834:	50                   	push   %eax
777a1835:	8d 47 02             	lea    0x2(%edi),%eax
777a1838:	50                   	push   %eax
777a1839:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a183c:	50                   	push   %eax
777a183d:	e8 ae 2c 00 00       	call   777a44f0 <_memcpy>
777a1842:	83 c4 0c             	add    $0xc,%esp
777a1845:	8b 53 74             	mov    0x74(%ebx),%edx
777a1848:	8d 45 b8             	lea    0xffffffb8(%ebp),%eax
777a184b:	50                   	push   %eax
777a184c:	56                   	push   %esi
777a184d:	57                   	push   %edi
777a184e:	ff 52 40             	call   *0x40(%edx)
777a1851:	8a 43 34             	mov    0x34(%ebx),%al
777a1854:	5a                   	pop    %edx
777a1855:	a8 20                	test   $0x20,%al
777a1857:	0f 85 87 00 00 00    	jne    777a18e4 <_WSPBind@16+0x104>
777a185d:	83 7d bc 01          	cmpl   $0x1,0xffffffbc(%ebp)
777a1861:	0f 84 89 00 00 00    	je     777a18f0 <_WSPBind@16+0x110>
777a1867:	a8 10                	test   $0x10,%al
777a1869:	0f 95 c0             	setne  %al
777a186c:	25 ff 00 00 00       	and    $0xff,%eax
777a1871:	89 45 c8             	mov    %eax,0xffffffc8(%ebp)
777a1874:	50                   	push   %eax
777a1875:	50                   	push   %eax
777a1876:	8b 43 18             	mov    0x18(%ebx),%eax
777a1879:	83 c0 0a             	add    $0xa,%eax
777a187c:	50                   	push   %eax
777a187d:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a1880:	50                   	push   %eax
777a1881:	8b 43 18             	mov    0x18(%ebx),%eax
777a1884:	83 c0 0a             	add    $0xa,%eax
777a1887:	50                   	push   %eax
777a1888:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a188b:	50                   	push   %eax
777a188c:	8d 45 b0             	lea    0xffffffb0(%ebp),%eax
777a188f:	68 03 20 01 00       	push   $0x12003
777a1894:	50                   	push   %eax
777a1895:	8b 45 c4             	mov    0xffffffc4(%ebp),%eax
777a1898:	6a 00                	push   $0x0
777a189a:	6a 00                	push   $0x0
777a189c:	50                   	push   %eax
777a189d:	8b 43 04             	mov    0x4(%ebx),%eax
777a18a0:	50                   	push   %eax
777a18a1:	e8 8a 2b 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a18a6:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a18a9:	c7 43 08 01 00 00 00 	movl   $0x1,0x8(%ebx)
777a18b0:	89 83 84 00 00 00    	mov    %eax,0x84(%ebx)
777a18b6:	8b 7d c4             	mov    0xffffffc4(%ebp),%edi
777a18b9:	50                   	push   %eax
777a18ba:	57                   	push   %edi
777a18bb:	e8 80 2b 00 00       	call   777a4440 <_NtClose@4>
777a18c0:	83 c4 0c             	add    $0xc,%esp
777a18c3:	8b 75 b4             	mov    0xffffffb4(%ebp),%esi
777a18c6:	8b 5d 14             	mov    0x14(%ebp),%ebx
777a18c9:	8b 4d b0             	mov    0xffffffb0(%ebp),%ecx
777a18cc:	6a 00                	push   $0x0
777a18ce:	56                   	push   %esi
777a18cf:	53                   	push   %ebx
777a18d0:	51                   	push   %ecx
777a18d1:	e8 2a f7 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a18d6:	89 c2                	mov    %eax,%edx
777a18d8:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a18db:	89 d0                	mov    %edx,%eax
777a18dd:	5b                   	pop    %ebx
777a18de:	5e                   	pop    %esi
777a18df:	5f                   	pop    %edi
777a18e0:	5d                   	pop    %ebp
777a18e1:	c2 10 00             	ret    $0x10
777a18e4:	c7 45 c8 03 00 00 00 	movl   $0x3,0xffffffc8(%ebp)
777a18eb:	eb 87                	jmp    777a1874 <_WSPBind@16+0x94>
777a18ed:	8d 76 00             	lea    0x0(%esi),%esi
777a18f0:	c7 45 c8 02 00 00 00 	movl   $0x2,0xffffffc8(%ebp)
777a18f7:	e9 78 ff ff ff       	jmp    777a1874 <_WSPBind@16+0x94>
777a18fc:	8d 74 26 00          	lea    0x0(%esi),%esi

777a1900 <_WSPListen@12>:
777a1900:	55                   	push   %ebp
777a1901:	89 e5                	mov    %esp,%ebp
777a1903:	53                   	push   %ebx
777a1904:	83 ec 30             	sub    $0x30,%esp
777a1907:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
777a190a:	6a 00                	push   $0x0
777a190c:	6a 01                	push   $0x1
777a190e:	6a 00                	push   $0x0
777a1910:	68 00 00 00 c0       	push   $0xc0000000
777a1915:	50                   	push   %eax
777a1916:	e8 05 2b 00 00       	call   777a4420 <_NtCreateEvent@20>
777a191b:	83 ca ff             	or     $0xffffffff,%edx
777a191e:	83 c4 0c             	add    $0xc,%esp
777a1921:	85 c0                	test   %eax,%eax
777a1923:	78 6c                	js     777a1991 <_WSPListen@12+0x91>
777a1925:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a1928:	51                   	push   %ecx
777a1929:	e8 92 f7 ff ff       	call   777a10c0 <_GetSocketStructure>
777a192e:	c6 45 e8 00          	movb   $0x0,0xffffffe8(%ebp)
777a1932:	89 c3                	mov    %eax,%ebx
777a1934:	8a 40 35             	mov    0x35(%eax),%al
777a1937:	52                   	push   %edx
777a1938:	c0 e8 02             	shr    $0x2,%al
777a193b:	6a 00                	push   $0x0
777a193d:	83 e0 01             	and    $0x1,%eax
777a1940:	6a 00                	push   $0x0
777a1942:	88 45 f0             	mov    %al,0xfffffff0(%ebp)
777a1945:	8b 45 0c             	mov    0xc(%ebp),%eax
777a1948:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
777a194b:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
777a194e:	6a 0c                	push   $0xc
777a1950:	50                   	push   %eax
777a1951:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a1954:	68 0b 20 01 00       	push   $0x1200b
777a1959:	50                   	push   %eax
777a195a:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777a195d:	6a 00                	push   $0x0
777a195f:	6a 00                	push   $0x0
777a1961:	50                   	push   %eax
777a1962:	8b 43 04             	mov    0x4(%ebx),%eax
777a1965:	50                   	push   %eax
777a1966:	e8 c5 2a 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a196b:	80 4b 34 01          	orb    $0x1,0x34(%ebx)
777a196f:	50                   	push   %eax
777a1970:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777a1973:	50                   	push   %eax
777a1974:	e8 c7 2a 00 00       	call   777a4440 <_NtClose@4>
777a1979:	83 c4 0c             	add    $0xc,%esp
777a197c:	8b 45 dc             	mov    0xffffffdc(%ebp),%eax
777a197f:	8b 5d d8             	mov    0xffffffd8(%ebp),%ebx
777a1982:	6a 00                	push   $0x0
777a1984:	50                   	push   %eax
777a1985:	8b 45 10             	mov    0x10(%ebp),%eax
777a1988:	50                   	push   %eax
777a1989:	53                   	push   %ebx
777a198a:	e8 71 f6 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a198f:	89 c2                	mov    %eax,%edx
777a1991:	89 d0                	mov    %edx,%eax
777a1993:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777a1996:	c9                   	leave  
777a1997:	c2 0c 00             	ret    $0xc
777a199a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

777a19a0 <_WSPSelect@24>:
777a19a0:	55                   	push   %ebp
777a19a1:	89 e5                	mov    %esp,%ebp
777a19a3:	57                   	push   %edi
777a19a4:	56                   	push   %esi
777a19a5:	53                   	push   %ebx
777a19a6:	83 ec 38             	sub    $0x38,%esp
777a19a9:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
777a19ac:	8b 7d 18             	mov    0x18(%ebp),%edi
777a19af:	c7 45 d8 00 00 00 00 	movl   $0x0,0xffffffd8(%ebp)
777a19b6:	6a 00                	push   $0x0
777a19b8:	6a 01                	push   $0x1
777a19ba:	6a 00                	push   $0x0
777a19bc:	68 00 00 00 c0       	push   $0xc0000000
777a19c1:	50                   	push   %eax
777a19c2:	e8 59 2a 00 00       	call   777a4420 <_NtCreateEvent@20>
777a19c7:	31 db                	xor    %ebx,%ebx
777a19c9:	83 c4 0c             	add    $0xc,%esp
777a19cc:	83 ca ff             	or     $0xffffffff,%edx
777a19cf:	85 c0                	test   %eax,%eax
777a19d1:	0f 88 87 02 00 00    	js     777a1c5e <_WSPSelect@24+0x2be>
777a19d7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777a19da:	31 c0                	xor    %eax,%eax
777a19dc:	85 c9                	test   %ecx,%ecx
777a19de:	74 05                	je     777a19e5 <_WSPSelect@24+0x45>
777a19e0:	8b 55 0c             	mov    0xc(%ebp),%edx
777a19e3:	8b 02                	mov    (%edx),%eax
777a19e5:	8b 55 10             	mov    0x10(%ebp),%edx
777a19e8:	85 d2                	test   %edx,%edx
777a19ea:	74 07                	je     777a19f3 <_WSPSelect@24+0x53>
777a19ec:	8b 4d 10             	mov    0x10(%ebp),%ecx
777a19ef:	8b 31                	mov    (%ecx),%esi
777a19f1:	01 f0                	add    %esi,%eax
777a19f3:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a19f6:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a19f9:	85 c9                	test   %ecx,%ecx
777a19fb:	74 0a                	je     777a1a07 <_WSPSelect@24+0x67>
777a19fd:	8b 75 14             	mov    0x14(%ebp),%esi
777a1a00:	8b 36                	mov    (%esi),%esi
777a1a02:	01 f0                	add    %esi,%eax
777a1a04:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a1a07:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
777a1a0a:	8d 04 52             	lea    (%edx,%edx,2),%eax
777a1a0d:	52                   	push   %edx
777a1a0e:	8d 04 85 20 00 00 00 	lea    0x20(,%eax,4),%eax
777a1a15:	50                   	push   %eax
777a1a16:	89 45 d4             	mov    %eax,0xffffffd4(%ebp)
777a1a19:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a1a1e:	6a 00                	push   $0x0
777a1a20:	50                   	push   %eax
777a1a21:	e8 2a 2b 00 00       	call   777a4550 <_HeapAlloc@12>
777a1a26:	89 c6                	mov    %eax,%esi
777a1a28:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a1a2b:	50                   	push   %eax
777a1a2c:	6a 00                	push   $0x0
777a1a2e:	56                   	push   %esi
777a1a2f:	e8 cc 2a 00 00       	call   777a4500 <_memset>
777a1a34:	83 c4 10             	add    $0x10,%esp
777a1a37:	85 ff                	test   %edi,%edi
777a1a39:	0f 84 2b 02 00 00    	je     777a1c6a <_WSPSelect@24+0x2ca>
777a1a3f:	50                   	push   %eax
777a1a40:	50                   	push   %eax
777a1a41:	68 f0 d8 ff ff       	push   $0xffffd8f0
777a1a46:	8b 07                	mov    (%edi),%eax
777a1a48:	8b 57 04             	mov    0x4(%edi),%edx
777a1a4b:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1a4e:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1a51:	8d 04 80             	lea    (%eax,%eax,4),%eax
777a1a54:	8d 04 c2             	lea    (%edx,%eax,8),%eax
777a1a57:	50                   	push   %eax
777a1a58:	ff 15 6c 81 7a 77    	call   *0x777a816c
777a1a5e:	89 06                	mov    %eax,(%esi)
777a1a60:	89 56 04             	mov    %edx,0x4(%esi)
777a1a63:	5f                   	pop    %edi
777a1a64:	58                   	pop    %eax
777a1a65:	8b 4d dc             	mov    0xffffffdc(%ebp),%ecx
777a1a68:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
777a1a6f:	89 4e 08             	mov    %ecx,0x8(%esi)
777a1a72:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777a1a75:	85 c9                	test   %ecx,%ecx
777a1a77:	74 27                	je     777a1aa0 <_WSPSelect@24+0x100>
777a1a79:	8b 45 0c             	mov    0xc(%ebp),%eax
777a1a7c:	31 ff                	xor    %edi,%edi
777a1a7e:	8b 10                	mov    (%eax),%edx
777a1a80:	85 d2                	test   %edx,%edx
777a1a82:	74 1c                	je     777a1aa0 <_WSPSelect@24+0x100>
777a1a84:	89 f2                	mov    %esi,%edx
777a1a86:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777a1a89:	c7 42 14 99 00 00 00 	movl   $0x99,0x14(%edx)
777a1a90:	43                   	inc    %ebx
777a1a91:	8b 44 b9 04          	mov    0x4(%ecx,%edi,4),%eax
777a1a95:	47                   	inc    %edi
777a1a96:	89 42 10             	mov    %eax,0x10(%edx)
777a1a99:	83 c2 0c             	add    $0xc,%edx
777a1a9c:	39 39                	cmp    %edi,(%ecx)
777a1a9e:	77 e6                	ja     777a1a86 <_WSPSelect@24+0xe6>
777a1aa0:	8b 45 10             	mov    0x10(%ebp),%eax
777a1aa3:	85 c0                	test   %eax,%eax
777a1aa5:	74 2b                	je     777a1ad2 <_WSPSelect@24+0x132>
777a1aa7:	8b 45 10             	mov    0x10(%ebp),%eax
777a1aaa:	31 ff                	xor    %edi,%edi
777a1aac:	8b 00                	mov    (%eax),%eax
777a1aae:	85 c0                	test   %eax,%eax
777a1ab0:	74 20                	je     777a1ad2 <_WSPSelect@24+0x132>
777a1ab2:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
777a1ab5:	8d 14 86             	lea    (%esi,%eax,4),%edx
777a1ab8:	8b 4d 10             	mov    0x10(%ebp),%ecx
777a1abb:	c7 42 14 44 00 00 00 	movl   $0x44,0x14(%edx)
777a1ac2:	43                   	inc    %ebx
777a1ac3:	8b 44 b9 04          	mov    0x4(%ecx,%edi,4),%eax
777a1ac7:	47                   	inc    %edi
777a1ac8:	89 42 10             	mov    %eax,0x10(%edx)
777a1acb:	83 c2 0c             	add    $0xc,%edx
777a1ace:	39 39                	cmp    %edi,(%ecx)
777a1ad0:	77 e6                	ja     777a1ab8 <_WSPSelect@24+0x118>
777a1ad2:	8b 45 14             	mov    0x14(%ebp),%eax
777a1ad5:	85 c0                	test   %eax,%eax
777a1ad7:	74 2a                	je     777a1b03 <_WSPSelect@24+0x163>
777a1ad9:	8b 45 14             	mov    0x14(%ebp),%eax
777a1adc:	31 ff                	xor    %edi,%edi
777a1ade:	8b 00                	mov    (%eax),%eax
777a1ae0:	85 c0                	test   %eax,%eax
777a1ae2:	74 1f                	je     777a1b03 <_WSPSelect@24+0x163>
777a1ae4:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
777a1ae7:	8d 14 86             	lea    (%esi,%eax,4),%edx
777a1aea:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a1aed:	c7 42 14 02 01 00 00 	movl   $0x102,0x14(%edx)
777a1af4:	8b 44 b9 04          	mov    0x4(%ecx,%edi,4),%eax
777a1af8:	47                   	inc    %edi
777a1af9:	89 42 10             	mov    %eax,0x10(%edx)
777a1afc:	83 c2 0c             	add    $0xc,%edx
777a1aff:	39 39                	cmp    %edi,(%ecx)
777a1b01:	77 e7                	ja     777a1aea <_WSPSelect@24+0x14a>
777a1b03:	50                   	push   %eax
777a1b04:	50                   	push   %eax
777a1b05:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a1b08:	50                   	push   %eax
777a1b09:	8b 7d d4             	mov    0xffffffd4(%ebp),%edi
777a1b0c:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
777a1b0f:	8b 5d ec             	mov    0xffffffec(%ebp),%ebx
777a1b12:	56                   	push   %esi
777a1b13:	57                   	push   %edi
777a1b14:	56                   	push   %esi
777a1b15:	68 24 20 01 00       	push   $0x12024
777a1b1a:	50                   	push   %eax
777a1b1b:	6a 00                	push   $0x0
777a1b1d:	6a 00                	push   $0x0
777a1b1f:	53                   	push   %ebx
777a1b20:	8b 4e 10             	mov    0x10(%esi),%ecx
777a1b23:	51                   	push   %ecx
777a1b24:	e8 07 29 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a1b29:	5f                   	pop    %edi
777a1b2a:	3d 03 01 00 00       	cmp    $0x103,%eax
777a1b2f:	5a                   	pop    %edx
777a1b30:	0f 84 29 02 00 00    	je     777a1d5f <_WSPSelect@24+0x3bf>
777a1b36:	8b 7d 0c             	mov    0xc(%ebp),%edi
777a1b39:	85 ff                	test   %edi,%edi
777a1b3b:	74 09                	je     777a1b46 <_WSPSelect@24+0x1a6>
777a1b3d:	8b 45 0c             	mov    0xc(%ebp),%eax
777a1b40:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a1b46:	8b 5d 10             	mov    0x10(%ebp),%ebx
777a1b49:	85 db                	test   %ebx,%ebx
777a1b4b:	74 09                	je     777a1b56 <_WSPSelect@24+0x1b6>
777a1b4d:	8b 55 10             	mov    0x10(%ebp),%edx
777a1b50:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
777a1b56:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a1b59:	85 c9                	test   %ecx,%ecx
777a1b5b:	74 09                	je     777a1b66 <_WSPSelect@24+0x1c6>
777a1b5d:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a1b60:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
777a1b66:	8b 46 08             	mov    0x8(%esi),%eax
777a1b69:	31 ff                	xor    %edi,%edi
777a1b6b:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a1b6e:	39 c7                	cmp    %eax,%edi
777a1b70:	0f 83 b0 00 00 00    	jae    777a1c26 <_WSPSelect@24+0x286>
777a1b76:	89 75 cc             	mov    %esi,0xffffffcc(%ebp)
777a1b79:	8b 55 cc             	mov    0xffffffcc(%ebp),%edx
777a1b7c:	bb 01 00 00 00       	mov    $0x1,%ebx
777a1b81:	8b 52 14             	mov    0x14(%edx),%edx
777a1b84:	89 55 d0             	mov    %edx,0xffffffd0(%ebp)
777a1b87:	eb 1d                	jmp    777a1ba6 <_WSPSelect@24+0x206>
777a1b89:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a1b90:	83 f8 02             	cmp    $0x2,%eax
777a1b93:	0f 84 4e 01 00 00    	je     777a1ce7 <_WSPSelect@24+0x347>
777a1b99:	0f 87 9e 01 00 00    	ja     777a1d3d <_WSPSelect@24+0x39d>
777a1b9f:	48                   	dec    %eax
777a1ba0:	74 24                	je     777a1bc6 <_WSPSelect@24+0x226>
777a1ba2:	01 db                	add    %ebx,%ebx
777a1ba4:	74 6d                	je     777a1c13 <_WSPSelect@24+0x273>
777a1ba6:	8b 45 d0             	mov    0xffffffd0(%ebp),%eax
777a1ba9:	21 d8                	and    %ebx,%eax
777a1bab:	83 f8 10             	cmp    $0x10,%eax
777a1bae:	74 16                	je     777a1bc6 <_WSPSelect@24+0x226>
777a1bb0:	76 de                	jbe    777a1b90 <_WSPSelect@24+0x1f0>
777a1bb2:	83 f8 40             	cmp    $0x40,%eax
777a1bb5:	0f 84 c5 00 00 00    	je     777a1c80 <_WSPSelect@24+0x2e0>
777a1bbb:	0f 87 10 01 00 00    	ja     777a1cd1 <_WSPSelect@24+0x331>
777a1bc1:	83 f8 20             	cmp    $0x20,%eax
777a1bc4:	75 dc                	jne    777a1ba2 <_WSPSelect@24+0x202>
777a1bc6:	8b 55 d8             	mov    0xffffffd8(%ebp),%edx
777a1bc9:	8b 45 0c             	mov    0xc(%ebp),%eax
777a1bcc:	42                   	inc    %edx
777a1bcd:	85 c0                	test   %eax,%eax
777a1bcf:	89 55 d8             	mov    %edx,0xffffffd8(%ebp)
777a1bd2:	74 ce                	je     777a1ba2 <_WSPSelect@24+0x202>
777a1bd4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777a1bd7:	31 d2                	xor    %edx,%edx
777a1bd9:	8b 01                	mov    (%ecx),%eax
777a1bdb:	83 f8 00             	cmp    $0x0,%eax
777a1bde:	76 14                	jbe    777a1bf4 <_WSPSelect@24+0x254>
777a1be0:	8b 75 cc             	mov    0xffffffcc(%ebp),%esi
777a1be3:	8b 4e 10             	mov    0x10(%esi),%ecx
777a1be6:	8b 75 0c             	mov    0xc(%ebp),%esi
777a1be9:	39 4c 96 04          	cmp    %ecx,0x4(%esi,%edx,4)
777a1bed:	74 05                	je     777a1bf4 <_WSPSelect@24+0x254>
777a1bef:	42                   	inc    %edx
777a1bf0:	39 d0                	cmp    %edx,%eax
777a1bf2:	77 f2                	ja     777a1be6 <_WSPSelect@24+0x246>
777a1bf4:	39 d0                	cmp    %edx,%eax
777a1bf6:	75 aa                	jne    777a1ba2 <_WSPSelect@24+0x202>
777a1bf8:	83 fa 3f             	cmp    $0x3f,%edx
777a1bfb:	77 a5                	ja     777a1ba2 <_WSPSelect@24+0x202>
777a1bfd:	8b 4d cc             	mov    0xffffffcc(%ebp),%ecx
777a1c00:	8b 75 0c             	mov    0xc(%ebp),%esi
777a1c03:	8b 41 10             	mov    0x10(%ecx),%eax
777a1c06:	89 44 96 04          	mov    %eax,0x4(%esi,%edx,4)
777a1c0a:	01 db                	add    %ebx,%ebx
777a1c0c:	8d 42 01             	lea    0x1(%edx),%eax
777a1c0f:	89 06                	mov    %eax,(%esi)
777a1c11:	75 93                	jne    777a1ba6 <_WSPSelect@24+0x206>
777a1c13:	8b 45 cc             	mov    0xffffffcc(%ebp),%eax
777a1c16:	47                   	inc    %edi
777a1c17:	83 c0 0c             	add    $0xc,%eax
777a1c1a:	3b 7d dc             	cmp    0xffffffdc(%ebp),%edi
777a1c1d:	89 45 cc             	mov    %eax,0xffffffcc(%ebp)
777a1c20:	0f 82 53 ff ff ff    	jb     777a1b79 <_WSPSelect@24+0x1d9>
777a1c26:	83 ec 0c             	sub    $0xc,%esp
777a1c29:	8b 75 ec             	mov    0xffffffec(%ebp),%esi
777a1c2c:	56                   	push   %esi
777a1c2d:	e8 0e 28 00 00       	call   777a4440 <_NtClose@4>
777a1c32:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
777a1c35:	83 c4 0c             	add    $0xc,%esp
777a1c38:	85 db                	test   %ebx,%ebx
777a1c3a:	74 1f                	je     777a1c5b <_WSPSelect@24+0x2bb>
777a1c3c:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
777a1c3f:	85 c0                	test   %eax,%eax
777a1c41:	0f 84 07 01 00 00    	je     777a1d4e <_WSPSelect@24+0x3ae>
777a1c47:	3d 02 01 00 00       	cmp    $0x102,%eax
777a1c4c:	0f 84 fc 00 00 00    	je     777a1d4e <_WSPSelect@24+0x3ae>
777a1c52:	8b 55 1c             	mov    0x1c(%ebp),%edx
777a1c55:	c7 02 26 27 00 00    	movl   $0x2726,(%edx)
777a1c5b:	8b 55 d8             	mov    0xffffffd8(%ebp),%edx
777a1c5e:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a1c61:	89 d0                	mov    %edx,%eax
777a1c63:	5b                   	pop    %ebx
777a1c64:	5e                   	pop    %esi
777a1c65:	5f                   	pop    %edi
777a1c66:	5d                   	pop    %ebp
777a1c67:	c2 18 00             	ret    $0x18
777a1c6a:	c7 06 ff ff ff ff    	movl   $0xffffffff,(%esi)
777a1c70:	c7 46 04 ff ff ff 7f 	movl   $0x7fffffff,0x4(%esi)
777a1c77:	e9 e9 fd ff ff       	jmp    777a1a65 <_WSPSelect@24+0xc5>
777a1c7c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a1c80:	8b 45 d8             	mov    0xffffffd8(%ebp),%eax
777a1c83:	40                   	inc    %eax
777a1c84:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a1c87:	8b 45 10             	mov    0x10(%ebp),%eax
777a1c8a:	85 c0                	test   %eax,%eax
777a1c8c:	0f 84 10 ff ff ff    	je     777a1ba2 <_WSPSelect@24+0x202>
777a1c92:	8b 4d 10             	mov    0x10(%ebp),%ecx
777a1c95:	31 d2                	xor    %edx,%edx
777a1c97:	8b 01                	mov    (%ecx),%eax
777a1c99:	83 f8 00             	cmp    $0x0,%eax
777a1c9c:	76 14                	jbe    777a1cb2 <_WSPSelect@24+0x312>
777a1c9e:	8b 75 cc             	mov    0xffffffcc(%ebp),%esi
777a1ca1:	8b 4e 10             	mov    0x10(%esi),%ecx
777a1ca4:	8b 75 10             	mov    0x10(%ebp),%esi
777a1ca7:	39 4c 96 04          	cmp    %ecx,0x4(%esi,%edx,4)
777a1cab:	74 05                	je     777a1cb2 <_WSPSelect@24+0x312>
777a1cad:	42                   	inc    %edx
777a1cae:	39 d0                	cmp    %edx,%eax
777a1cb0:	77 f2                	ja     777a1ca4 <_WSPSelect@24+0x304>
777a1cb2:	39 d0                	cmp    %edx,%eax
777a1cb4:	0f 85 e8 fe ff ff    	jne    777a1ba2 <_WSPSelect@24+0x202>
777a1cba:	83 fa 3f             	cmp    $0x3f,%edx
777a1cbd:	0f 87 df fe ff ff    	ja     777a1ba2 <_WSPSelect@24+0x202>
777a1cc3:	8b 4d cc             	mov    0xffffffcc(%ebp),%ecx
777a1cc6:	8b 75 10             	mov    0x10(%ebp),%esi
777a1cc9:	8b 41 10             	mov    0x10(%ecx),%eax
777a1ccc:	e9 35 ff ff ff       	jmp    777a1c06 <_WSPSelect@24+0x266>
777a1cd1:	3d 80 00 00 00       	cmp    $0x80,%eax
777a1cd6:	0f 84 ea fe ff ff    	je     777a1bc6 <_WSPSelect@24+0x226>
777a1cdc:	3d 00 01 00 00       	cmp    $0x100,%eax
777a1ce1:	0f 85 bb fe ff ff    	jne    777a1ba2 <_WSPSelect@24+0x202>
777a1ce7:	8b 45 d8             	mov    0xffffffd8(%ebp),%eax
777a1cea:	40                   	inc    %eax
777a1ceb:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a1cee:	8b 45 14             	mov    0x14(%ebp),%eax
777a1cf1:	85 c0                	test   %eax,%eax
777a1cf3:	0f 84 a9 fe ff ff    	je     777a1ba2 <_WSPSelect@24+0x202>
777a1cf9:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a1cfc:	31 d2                	xor    %edx,%edx
777a1cfe:	8b 01                	mov    (%ecx),%eax
777a1d00:	83 f8 00             	cmp    $0x0,%eax
777a1d03:	76 19                	jbe    777a1d1e <_WSPSelect@24+0x37e>
777a1d05:	8b 75 cc             	mov    0xffffffcc(%ebp),%esi
777a1d08:	8b 4e 10             	mov    0x10(%esi),%ecx
777a1d0b:	90                   	nop    
777a1d0c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a1d10:	8b 75 14             	mov    0x14(%ebp),%esi
777a1d13:	39 4c 96 04          	cmp    %ecx,0x4(%esi,%edx,4)
777a1d17:	74 05                	je     777a1d1e <_WSPSelect@24+0x37e>
777a1d19:	42                   	inc    %edx
777a1d1a:	39 d0                	cmp    %edx,%eax
777a1d1c:	77 f2                	ja     777a1d10 <_WSPSelect@24+0x370>
777a1d1e:	39 d0                	cmp    %edx,%eax
777a1d20:	0f 85 7c fe ff ff    	jne    777a1ba2 <_WSPSelect@24+0x202>
777a1d26:	83 fa 3f             	cmp    $0x3f,%edx
777a1d29:	0f 87 73 fe ff ff    	ja     777a1ba2 <_WSPSelect@24+0x202>
777a1d2f:	8b 4d cc             	mov    0xffffffcc(%ebp),%ecx
777a1d32:	8b 75 14             	mov    0x14(%ebp),%esi
777a1d35:	8b 41 10             	mov    0x10(%ecx),%eax
777a1d38:	e9 c9 fe ff ff       	jmp    777a1c06 <_WSPSelect@24+0x266>
777a1d3d:	83 f8 04             	cmp    $0x4,%eax
777a1d40:	0f 84 3a ff ff ff    	je     777a1c80 <_WSPSelect@24+0x2e0>
777a1d46:	83 f8 08             	cmp    $0x8,%eax
777a1d49:	e9 52 fe ff ff       	jmp    777a1ba0 <_WSPSelect@24+0x200>
777a1d4e:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a1d51:	8b 55 d8             	mov    0xffffffd8(%ebp),%edx
777a1d54:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a1d5a:	e9 ff fe ff ff       	jmp    777a1c5e <_WSPSelect@24+0x2be>
777a1d5f:	8b 4d ec             	mov    0xffffffec(%ebp),%ecx
777a1d62:	53                   	push   %ebx
777a1d63:	53                   	push   %ebx
777a1d64:	6a ff                	push   $0xffffffff
777a1d66:	51                   	push   %ecx
777a1d67:	e8 d4 27 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a1d6c:	58                   	pop    %eax
777a1d6d:	5a                   	pop    %edx
777a1d6e:	e9 c3 fd ff ff       	jmp    777a1b36 <_WSPSelect@24+0x196>
777a1d73:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a1d79:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a1d80 <_WSPShutdown@12>:
777a1d80:	55                   	push   %ebp
777a1d81:	89 e5                	mov    %esp,%ebp
777a1d83:	56                   	push   %esi
777a1d84:	53                   	push   %ebx
777a1d85:	83 ec 2c             	sub    $0x2c,%esp
777a1d88:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
777a1d8b:	8b 75 08             	mov    0x8(%ebp),%esi
777a1d8e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
777a1d91:	6a 00                	push   $0x0
777a1d93:	6a 01                	push   $0x1
777a1d95:	6a 00                	push   $0x0
777a1d97:	68 00 00 00 c0       	push   $0xc0000000
777a1d9c:	50                   	push   %eax
777a1d9d:	e8 7e 26 00 00       	call   777a4420 <_NtCreateEvent@20>
777a1da2:	83 ca ff             	or     $0xffffffff,%edx
777a1da5:	83 c4 0c             	add    $0xc,%esp
777a1da8:	85 c0                	test   %eax,%eax
777a1daa:	78 7d                	js     777a1e29 <_WSPShutdown@12+0xa9>
777a1dac:	56                   	push   %esi
777a1dad:	e8 0e f3 ff ff       	call   777a10c0 <_GetSocketStructure>
777a1db2:	5a                   	pop    %edx
777a1db3:	83 fb 01             	cmp    $0x1,%ebx
777a1db6:	74 7c                	je     777a1e34 <_WSPShutdown@12+0xb4>
777a1db8:	0f 8e 93 00 00 00    	jle    777a1e51 <_WSPShutdown@12+0xd1>
777a1dbe:	83 fb 02             	cmp    $0x2,%ebx
777a1dc1:	0f 84 7a 00 00 00    	je     777a1e41 <_WSPShutdown@12+0xc1>
777a1dc7:	83 ec 0c             	sub    $0xc,%esp
777a1dca:	6a ff                	push   $0xffffffff
777a1dcc:	ff 15 68 81 7a 77    	call   *0x777a8168
777a1dd2:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
777a1dd5:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
777a1dd8:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
777a1ddb:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a1de2:	6a 00                	push   $0x0
777a1de4:	6a 10                	push   $0x10
777a1de6:	50                   	push   %eax
777a1de7:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a1dea:	68 2b 20 01 00       	push   $0x1202b
777a1def:	89 55 f4             	mov    %edx,0xfffffff4(%ebp)
777a1df2:	50                   	push   %eax
777a1df3:	6a 00                	push   $0x0
777a1df5:	6a 00                	push   $0x0
777a1df7:	51                   	push   %ecx
777a1df8:	56                   	push   %esi
777a1df9:	e8 32 26 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a1dfe:	5e                   	pop    %esi
777a1dff:	3d 03 01 00 00       	cmp    $0x103,%eax
777a1e04:	5a                   	pop    %edx
777a1e05:	74 69                	je     777a1e70 <_WSPShutdown@12+0xf0>
777a1e07:	83 ec 0c             	sub    $0xc,%esp
777a1e0a:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777a1e0d:	50                   	push   %eax
777a1e0e:	e8 2d 26 00 00       	call   777a4440 <_NtClose@4>
777a1e13:	83 c4 0c             	add    $0xc,%esp
777a1e16:	8b 75 10             	mov    0x10(%ebp),%esi
777a1e19:	8b 5d d8             	mov    0xffffffd8(%ebp),%ebx
777a1e1c:	6a 00                	push   $0x0
777a1e1e:	6a 00                	push   $0x0
777a1e20:	56                   	push   %esi
777a1e21:	53                   	push   %ebx
777a1e22:	e8 d9 f1 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a1e27:	89 c2                	mov    %eax,%edx
777a1e29:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a1e2c:	89 d0                	mov    %edx,%eax
777a1e2e:	5b                   	pop    %ebx
777a1e2f:	5e                   	pop    %esi
777a1e30:	5d                   	pop    %ebp
777a1e31:	c2 0c 00             	ret    $0xc
777a1e34:	c7 45 e8 01 00 00 00 	movl   $0x1,0xffffffe8(%ebp)
777a1e3b:	80 48 35 02          	orb    $0x2,0x35(%eax)
777a1e3f:	eb 86                	jmp    777a1dc7 <_WSPShutdown@12+0x47>
777a1e41:	c7 45 e8 03 00 00 00 	movl   $0x3,0xffffffe8(%ebp)
777a1e48:	80 48 35 03          	orb    $0x3,0x35(%eax)
777a1e4c:	e9 76 ff ff ff       	jmp    777a1dc7 <_WSPShutdown@12+0x47>
777a1e51:	85 db                	test   %ebx,%ebx
777a1e53:	0f 85 6e ff ff ff    	jne    777a1dc7 <_WSPShutdown@12+0x47>
777a1e59:	c7 45 e8 02 00 00 00 	movl   $0x2,0xffffffe8(%ebp)
777a1e60:	80 48 35 01          	orb    $0x1,0x35(%eax)
777a1e64:	e9 5e ff ff ff       	jmp    777a1dc7 <_WSPShutdown@12+0x47>
777a1e69:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a1e70:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
777a1e73:	53                   	push   %ebx
777a1e74:	53                   	push   %ebx
777a1e75:	6a ff                	push   $0xffffffff
777a1e77:	51                   	push   %ecx
777a1e78:	e8 c3 26 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a1e7d:	58                   	pop    %eax
777a1e7e:	5a                   	pop    %edx
777a1e7f:	eb 86                	jmp    777a1e07 <_WSPShutdown@12+0x87>
777a1e81:	eb 0d                	jmp    777a1e90 <_WSPGetSockName@16>
777a1e83:	90                   	nop    
777a1e84:	90                   	nop    
777a1e85:	90                   	nop    
777a1e86:	90                   	nop    
777a1e87:	90                   	nop    
777a1e88:	90                   	nop    
777a1e89:	90                   	nop    
777a1e8a:	90                   	nop    
777a1e8b:	90                   	nop    
777a1e8c:	90                   	nop    
777a1e8d:	90                   	nop    
777a1e8e:	90                   	nop    
777a1e8f:	90                   	nop    

777a1e90 <_WSPGetSockName@16>:
777a1e90:	55                   	push   %ebp
777a1e91:	89 e5                	mov    %esp,%ebp
777a1e93:	57                   	push   %edi
777a1e94:	56                   	push   %esi
777a1e95:	53                   	push   %ebx
777a1e96:	83 ec 28             	sub    $0x28,%esp
777a1e99:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
777a1e9c:	6a 00                	push   $0x0
777a1e9e:	6a 01                	push   $0x1
777a1ea0:	6a 00                	push   $0x0
777a1ea2:	68 00 00 00 c0       	push   $0xc0000000
777a1ea7:	50                   	push   %eax
777a1ea8:	e8 73 25 00 00       	call   777a4420 <_NtCreateEvent@20>
777a1ead:	89 c3                	mov    %eax,%ebx
777a1eaf:	83 c4 0c             	add    $0xc,%esp
777a1eb2:	83 c8 ff             	or     $0xffffffff,%eax
777a1eb5:	85 db                	test   %ebx,%ebx
777a1eb7:	0f 88 ce 00 00 00    	js     777a1f8b <_WSPGetSockName@16+0xfb>
777a1ebd:	8b 45 08             	mov    0x8(%ebp),%eax
777a1ec0:	50                   	push   %eax
777a1ec1:	e8 fa f1 ff ff       	call   777a10c0 <_GetSocketStructure>
777a1ec6:	8b 58 18             	mov    0x18(%eax),%ebx
777a1ec9:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a1ecc:	83 c3 0c             	add    $0xc,%ebx
777a1ecf:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a1ed4:	53                   	push   %ebx
777a1ed5:	6a 00                	push   $0x0
777a1ed7:	50                   	push   %eax
777a1ed8:	e8 73 26 00 00       	call   777a4550 <_HeapAlloc@12>
777a1edd:	89 c6                	mov    %eax,%esi
777a1edf:	58                   	pop    %eax
777a1ee0:	85 f6                	test   %esi,%esi
777a1ee2:	0f 84 f5 00 00 00    	je     777a1fdd <_WSPGetSockName@16+0x14d>
777a1ee8:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
777a1eeb:	50                   	push   %eax
777a1eec:	50                   	push   %eax
777a1eed:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
777a1ef0:	53                   	push   %ebx
777a1ef1:	8b 5d ec             	mov    0xffffffec(%ebp),%ebx
777a1ef4:	56                   	push   %esi
777a1ef5:	6a 00                	push   $0x0
777a1ef7:	6a 00                	push   $0x0
777a1ef9:	68 2f 20 01 00       	push   $0x1202f
777a1efe:	50                   	push   %eax
777a1eff:	6a 00                	push   $0x0
777a1f01:	6a 00                	push   $0x0
777a1f03:	53                   	push   %ebx
777a1f04:	8d 7e 04             	lea    0x4(%esi),%edi
777a1f07:	8b 4a 04             	mov    0x4(%edx),%ecx
777a1f0a:	51                   	push   %ecx
777a1f0b:	e8 20 25 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a1f10:	89 c3                	mov    %eax,%ebx
777a1f12:	58                   	pop    %eax
777a1f13:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a1f19:	5a                   	pop    %edx
777a1f1a:	74 79                	je     777a1f95 <_WSPGetSockName@16+0x105>
777a1f1c:	83 ec 0c             	sub    $0xc,%esp
777a1f1f:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a1f22:	50                   	push   %eax
777a1f23:	e8 18 25 00 00       	call   777a4440 <_NtClose@4>
777a1f28:	83 c4 0c             	add    $0xc,%esp
777a1f2b:	85 db                	test   %ebx,%ebx
777a1f2d:	78 7d                	js     777a1fac <_WSPGetSockName@16+0x11c>
777a1f2f:	66 8b 47 04          	mov    0x4(%edi),%ax
777a1f33:	8b 55 10             	mov    0x10(%ebp),%edx
777a1f36:	25 ff ff 00 00       	and    $0xffff,%eax
777a1f3b:	39 02                	cmp    %eax,(%edx)
777a1f3d:	0f 8c 7c 00 00 00    	jl     777a1fbf <_WSPGetSockName@16+0x12f>
777a1f43:	8b 55 0c             	mov    0xc(%ebp),%edx
777a1f46:	66 8b 47 06          	mov    0x6(%edi),%ax
777a1f4a:	66 89 02             	mov    %ax,(%edx)
777a1f4d:	50                   	push   %eax
777a1f4e:	66 8b 47 04          	mov    0x4(%edi),%ax
777a1f52:	25 ff ff 00 00       	and    $0xffff,%eax
777a1f57:	50                   	push   %eax
777a1f58:	8d 46 0c             	lea    0xc(%esi),%eax
777a1f5b:	50                   	push   %eax
777a1f5c:	89 d0                	mov    %edx,%eax
777a1f5e:	83 c0 02             	add    $0x2,%eax
777a1f61:	50                   	push   %eax
777a1f62:	e8 89 25 00 00       	call   777a44f0 <_memcpy>
777a1f67:	66 8b 47 04          	mov    0x4(%edi),%ax
777a1f6b:	8b 55 10             	mov    0x10(%ebp),%edx
777a1f6e:	25 ff ff 00 00       	and    $0xffff,%eax
777a1f73:	83 c4 0c             	add    $0xc,%esp
777a1f76:	83 c0 02             	add    $0x2,%eax
777a1f79:	89 02                	mov    %eax,(%edx)
777a1f7b:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a1f80:	56                   	push   %esi
777a1f81:	6a 00                	push   $0x0
777a1f83:	50                   	push   %eax
777a1f84:	e8 e7 25 00 00       	call   777a4570 <_HeapFree@12>
777a1f89:	31 c0                	xor    %eax,%eax
777a1f8b:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a1f8e:	5b                   	pop    %ebx
777a1f8f:	5e                   	pop    %esi
777a1f90:	5f                   	pop    %edi
777a1f91:	5d                   	pop    %ebp
777a1f92:	c2 10 00             	ret    $0x10
777a1f95:	8b 4d ec             	mov    0xffffffec(%ebp),%ecx
777a1f98:	53                   	push   %ebx
777a1f99:	53                   	push   %ebx
777a1f9a:	6a ff                	push   $0xffffffff
777a1f9c:	51                   	push   %ecx
777a1f9d:	e8 9e 25 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a1fa2:	8b 5d e0             	mov    0xffffffe0(%ebp),%ebx
777a1fa5:	58                   	pop    %eax
777a1fa6:	5a                   	pop    %edx
777a1fa7:	e9 70 ff ff ff       	jmp    777a1f1c <_WSPGetSockName@16+0x8c>
777a1fac:	8b 5d 14             	mov    0x14(%ebp),%ebx
777a1faf:	8b 4d e0             	mov    0xffffffe0(%ebp),%ecx
777a1fb2:	6a 00                	push   $0x0
777a1fb4:	6a 00                	push   $0x0
777a1fb6:	53                   	push   %ebx
777a1fb7:	51                   	push   %ecx
777a1fb8:	e8 43 f0 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a1fbd:	eb cc                	jmp    777a1f8b <_WSPGetSockName@16+0xfb>
777a1fbf:	57                   	push   %edi
777a1fc0:	56                   	push   %esi
777a1fc1:	8b 35 30 60 7a 77    	mov    0x777a6030,%esi
777a1fc7:	6a 00                	push   $0x0
777a1fc9:	56                   	push   %esi
777a1fca:	e8 a1 25 00 00       	call   777a4570 <_HeapFree@12>
777a1fcf:	8b 45 14             	mov    0x14(%ebp),%eax
777a1fd2:	c7 00 1e 27 00 00    	movl   $0x271e,(%eax)
777a1fd8:	83 c8 ff             	or     $0xffffffff,%eax
777a1fdb:	eb ae                	jmp    777a1f8b <_WSPGetSockName@16+0xfb>
777a1fdd:	83 ec 0c             	sub    $0xc,%esp
777a1fe0:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a1fe3:	50                   	push   %eax
777a1fe4:	e8 57 24 00 00       	call   777a4440 <_NtClose@4>
777a1fe9:	8b 45 14             	mov    0x14(%ebp),%eax
777a1fec:	c7 00 47 27 00 00    	movl   $0x2747,(%eax)
777a1ff2:	83 c8 ff             	or     $0xffffffff,%eax
777a1ff5:	eb 94                	jmp    777a1f8b <_WSPGetSockName@16+0xfb>
777a1ff7:	89 f6                	mov    %esi,%esi
777a1ff9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a2000 <_WSPGetPeerName@16>:
777a2000:	55                   	push   %ebp
777a2001:	89 e5                	mov    %esp,%ebp
777a2003:	57                   	push   %edi
777a2004:	56                   	push   %esi
777a2005:	53                   	push   %ebx
777a2006:	83 ec 28             	sub    $0x28,%esp
777a2009:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
777a200c:	6a 00                	push   $0x0
777a200e:	6a 01                	push   $0x1
777a2010:	6a 00                	push   $0x0
777a2012:	68 00 00 00 c0       	push   $0xc0000000
777a2017:	50                   	push   %eax
777a2018:	e8 03 24 00 00       	call   777a4420 <_NtCreateEvent@20>
777a201d:	89 c3                	mov    %eax,%ebx
777a201f:	83 c4 0c             	add    $0xc,%esp
777a2022:	83 c8 ff             	or     $0xffffffff,%eax
777a2025:	85 db                	test   %ebx,%ebx
777a2027:	0f 88 ba 00 00 00    	js     777a20e7 <_WSPGetPeerName@16+0xe7>
777a202d:	8b 45 08             	mov    0x8(%ebp),%eax
777a2030:	50                   	push   %eax
777a2031:	e8 8a f0 ff ff       	call   777a10c0 <_GetSocketStructure>
777a2036:	8b 58 18             	mov    0x18(%eax),%ebx
777a2039:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a203c:	83 c3 0c             	add    $0xc,%ebx
777a203f:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a2044:	53                   	push   %ebx
777a2045:	6a 00                	push   $0x0
777a2047:	50                   	push   %eax
777a2048:	e8 03 25 00 00       	call   777a4550 <_HeapAlloc@12>
777a204d:	89 c6                	mov    %eax,%esi
777a204f:	58                   	pop    %eax
777a2050:	85 f6                	test   %esi,%esi
777a2052:	0f 84 de 00 00 00    	je     777a2136 <_WSPGetPeerName@16+0x136>
777a2058:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
777a205b:	50                   	push   %eax
777a205c:	50                   	push   %eax
777a205d:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
777a2060:	53                   	push   %ebx
777a2061:	8b 5d ec             	mov    0xffffffec(%ebp),%ebx
777a2064:	56                   	push   %esi
777a2065:	6a 00                	push   $0x0
777a2067:	6a 00                	push   $0x0
777a2069:	68 33 20 01 00       	push   $0x12033
777a206e:	50                   	push   %eax
777a206f:	6a 00                	push   $0x0
777a2071:	6a 00                	push   $0x0
777a2073:	53                   	push   %ebx
777a2074:	8d 7e 04             	lea    0x4(%esi),%edi
777a2077:	8b 4a 04             	mov    0x4(%edx),%ecx
777a207a:	51                   	push   %ecx
777a207b:	e8 b0 23 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2080:	89 c3                	mov    %eax,%ebx
777a2082:	58                   	pop    %eax
777a2083:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a2089:	5a                   	pop    %edx
777a208a:	74 65                	je     777a20f1 <_WSPGetPeerName@16+0xf1>
777a208c:	83 ec 0c             	sub    $0xc,%esp
777a208f:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a2092:	50                   	push   %eax
777a2093:	e8 a8 23 00 00       	call   777a4440 <_NtClose@4>
777a2098:	83 c4 0c             	add    $0xc,%esp
777a209b:	85 db                	test   %ebx,%ebx
777a209d:	78 66                	js     777a2105 <_WSPGetPeerName@16+0x105>
777a209f:	66 8b 47 04          	mov    0x4(%edi),%ax
777a20a3:	8b 55 10             	mov    0x10(%ebp),%edx
777a20a6:	25 ff ff 00 00       	and    $0xffff,%eax
777a20ab:	39 02                	cmp    %eax,(%edx)
777a20ad:	7c 69                	jl     777a2118 <_WSPGetPeerName@16+0x118>
777a20af:	8b 55 0c             	mov    0xc(%ebp),%edx
777a20b2:	66 8b 47 06          	mov    0x6(%edi),%ax
777a20b6:	66 89 02             	mov    %ax,(%edx)
777a20b9:	50                   	push   %eax
777a20ba:	66 8b 47 04          	mov    0x4(%edi),%ax
777a20be:	25 ff ff 00 00       	and    $0xffff,%eax
777a20c3:	50                   	push   %eax
777a20c4:	8d 46 0c             	lea    0xc(%esi),%eax
777a20c7:	50                   	push   %eax
777a20c8:	89 d0                	mov    %edx,%eax
777a20ca:	83 c0 02             	add    $0x2,%eax
777a20cd:	50                   	push   %eax
777a20ce:	e8 1d 24 00 00       	call   777a44f0 <_memcpy>
777a20d3:	83 c4 0c             	add    $0xc,%esp
777a20d6:	56                   	push   %esi
777a20d7:	8b 35 30 60 7a 77    	mov    0x777a6030,%esi
777a20dd:	6a 00                	push   $0x0
777a20df:	56                   	push   %esi
777a20e0:	e8 8b 24 00 00       	call   777a4570 <_HeapFree@12>
777a20e5:	31 c0                	xor    %eax,%eax
777a20e7:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a20ea:	5b                   	pop    %ebx
777a20eb:	5e                   	pop    %esi
777a20ec:	5f                   	pop    %edi
777a20ed:	5d                   	pop    %ebp
777a20ee:	c2 10 00             	ret    $0x10
777a20f1:	8b 4d ec             	mov    0xffffffec(%ebp),%ecx
777a20f4:	53                   	push   %ebx
777a20f5:	53                   	push   %ebx
777a20f6:	6a ff                	push   $0xffffffff
777a20f8:	51                   	push   %ecx
777a20f9:	e8 42 24 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a20fe:	8b 5d e0             	mov    0xffffffe0(%ebp),%ebx
777a2101:	58                   	pop    %eax
777a2102:	5a                   	pop    %edx
777a2103:	eb 87                	jmp    777a208c <_WSPGetPeerName@16+0x8c>
777a2105:	8b 55 14             	mov    0x14(%ebp),%edx
777a2108:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
777a210b:	6a 00                	push   $0x0
777a210d:	6a 00                	push   $0x0
777a210f:	52                   	push   %edx
777a2110:	50                   	push   %eax
777a2111:	e8 ea ee ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a2116:	eb cf                	jmp    777a20e7 <_WSPGetPeerName@16+0xe7>
777a2118:	8b 0d 30 60 7a 77    	mov    0x777a6030,%ecx
777a211e:	53                   	push   %ebx
777a211f:	56                   	push   %esi
777a2120:	6a 00                	push   $0x0
777a2122:	51                   	push   %ecx
777a2123:	e8 48 24 00 00       	call   777a4570 <_HeapFree@12>
777a2128:	8b 45 14             	mov    0x14(%ebp),%eax
777a212b:	c7 00 1e 27 00 00    	movl   $0x271e,(%eax)
777a2131:	83 c8 ff             	or     $0xffffffff,%eax
777a2134:	eb b1                	jmp    777a20e7 <_WSPGetPeerName@16+0xe7>
777a2136:	83 ec 0c             	sub    $0xc,%esp
777a2139:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a213c:	50                   	push   %eax
777a213d:	e8 fe 22 00 00       	call   777a4440 <_NtClose@4>
777a2142:	8b 45 14             	mov    0x14(%ebp),%eax
777a2145:	c7 00 47 27 00 00    	movl   $0x2747,(%eax)
777a214b:	83 c8 ff             	or     $0xffffffff,%eax
777a214e:	eb 97                	jmp    777a20e7 <_WSPGetPeerName@16+0xe7>

777a2150 <_WSPIoctl@44>:
777a2150:	55                   	push   %ebp
777a2151:	89 e5                	mov    %esp,%ebp
777a2153:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a2156:	51                   	push   %ecx
777a2157:	e8 64 ef ff ff       	call   777a10c0 <_GetSocketStructure>
777a215c:	5a                   	pop    %edx
777a215d:	89 c1                	mov    %eax,%ecx
777a215f:	81 7d 0c 7e 66 04 80 	cmpl   $0x8004667e,0xc(%ebp)
777a2166:	75 27                	jne    777a218f <_WSPIoctl@44+0x3f>
777a2168:	83 c8 ff             	or     $0xffffffff,%eax
777a216b:	83 7d 14 03          	cmpl   $0x3,0x14(%ebp)
777a216f:	76 1a                	jbe    777a218b <_WSPIoctl@44+0x3b>
777a2171:	8b 45 10             	mov    0x10(%ebp),%eax
777a2174:	8b 00                	mov    (%eax),%eax
777a2176:	85 c0                	test   %eax,%eax
777a2178:	8a 41 34             	mov    0x34(%ecx),%al
777a217b:	0f 95 c2             	setne  %dl
777a217e:	c1 e2 06             	shl    $0x6,%edx
777a2181:	83 e0 bf             	and    $0xffffffbf,%eax
777a2184:	09 d0                	or     %edx,%eax
777a2186:	88 41 34             	mov    %al,0x34(%ecx)
777a2189:	31 c0                	xor    %eax,%eax
777a218b:	c9                   	leave  
777a218c:	c2 2c 00             	ret    $0x2c
777a218f:	8b 45 30             	mov    0x30(%ebp),%eax
777a2192:	c7 00 26 27 00 00    	movl   $0x2726,(%eax)
777a2198:	83 c8 ff             	or     $0xffffffff,%eax
777a219b:	c9                   	leave  
777a219c:	c2 2c 00             	ret    $0x2c
777a219f:	90                   	nop    

777a21a0 <_WSPGetSockOpt@24>:
777a21a0:	55                   	push   %ebp
777a21a1:	89 e5                	mov    %esp,%ebp
777a21a3:	57                   	push   %edi
777a21a4:	56                   	push   %esi
777a21a5:	53                   	push   %ebx
777a21a6:	83 ec 0c             	sub    $0xc,%esp
777a21a9:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a21ac:	8b 5d 10             	mov    0x10(%ebp),%ebx
777a21af:	8b 7d 18             	mov    0x18(%ebp),%edi
777a21b2:	8b 75 1c             	mov    0x1c(%ebp),%esi
777a21b5:	51                   	push   %ecx
777a21b6:	e8 05 ef ff ff       	call   777a10c0 <_GetSocketStructure>
777a21bb:	5a                   	pop    %edx
777a21bc:	85 c0                	test   %eax,%eax
777a21be:	0f 84 b2 00 00 00    	je     777a2276 <_WSPGetSockOpt@24+0xd6>
777a21c4:	81 7d 0c ff ff 00 00 	cmpl   $0xffff,0xc(%ebp)
777a21cb:	75 15                	jne    777a21e2 <_WSPGetSockOpt@24+0x42>
777a21cd:	83 fb 20             	cmp    $0x20,%ebx
777a21d0:	74 3f                	je     777a2211 <_WSPGetSockOpt@24+0x71>
777a21d2:	7f 21                	jg     777a21f5 <_WSPGetSockOpt@24+0x55>
777a21d4:	83 fb 01             	cmp    $0x1,%ebx
777a21d7:	0f 84 84 00 00 00    	je     777a2261 <_WSPGetSockOpt@24+0xc1>
777a21dd:	83 fb 02             	cmp    $0x2,%ebx
777a21e0:	74 70                	je     777a2252 <_WSPGetSockOpt@24+0xb2>
777a21e2:	c7 06 26 27 00 00    	movl   $0x2726,(%esi)
777a21e8:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a21eb:	83 c8 ff             	or     $0xffffffff,%eax
777a21ee:	5b                   	pop    %ebx
777a21ef:	5e                   	pop    %esi
777a21f0:	5f                   	pop    %edi
777a21f1:	5d                   	pop    %ebp
777a21f2:	c2 18 00             	ret    $0x18
777a21f5:	81 fb 02 10 00 00    	cmp    $0x1002,%ebx
777a21fb:	74 5a                	je     777a2257 <_WSPGetSockOpt@24+0xb7>
777a21fd:	7f 41                	jg     777a2240 <_WSPGetSockOpt@24+0xa0>
777a21ff:	81 fb 01 10 00 00    	cmp    $0x1001,%ebx
777a2205:	75 db                	jne    777a21e2 <_WSPGetSockOpt@24+0x42>
777a2207:	83 c0 30             	add    $0x30,%eax
777a220a:	ba 04 00 00 00       	mov    $0x4,%edx
777a220f:	eb 13                	jmp    777a2224 <_WSPGetSockOpt@24+0x84>
777a2211:	8a 40 34             	mov    0x34(%eax),%al
777a2214:	d0 e8                	shr    %al
777a2216:	83 e0 01             	and    $0x1,%eax
777a2219:	ba 01 00 00 00       	mov    $0x1,%edx
777a221e:	88 45 f3             	mov    %al,0xfffffff3(%ebp)
777a2221:	8d 45 f3             	lea    0xfffffff3(%ebp),%eax
777a2224:	39 17                	cmp    %edx,(%edi)
777a2226:	7c 41                	jl     777a2269 <_WSPGetSockOpt@24+0xc9>
777a2228:	56                   	push   %esi
777a2229:	52                   	push   %edx
777a222a:	50                   	push   %eax
777a222b:	8b 5d 14             	mov    0x14(%ebp),%ebx
777a222e:	53                   	push   %ebx
777a222f:	e8 bc 22 00 00       	call   777a44f0 <_memcpy>
777a2234:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2237:	31 c0                	xor    %eax,%eax
777a2239:	5b                   	pop    %ebx
777a223a:	5e                   	pop    %esi
777a223b:	5f                   	pop    %edi
777a223c:	5d                   	pop    %ebp
777a223d:	c2 18 00             	ret    $0x18
777a2240:	81 fb 08 10 00 00    	cmp    $0x1008,%ebx
777a2246:	75 9a                	jne    777a21e2 <_WSPGetSockOpt@24+0x42>
777a2248:	83 c0 10             	add    $0x10,%eax
777a224b:	ba 04 00 00 00       	mov    $0x4,%edx
777a2250:	eb d2                	jmp    777a2224 <_WSPGetSockOpt@24+0x84>
777a2252:	8a 40 34             	mov    0x34(%eax),%al
777a2255:	eb bf                	jmp    777a2216 <_WSPGetSockOpt@24+0x76>
777a2257:	83 c0 2c             	add    $0x2c,%eax
777a225a:	ba 04 00 00 00       	mov    $0x4,%edx
777a225f:	eb c3                	jmp    777a2224 <_WSPGetSockOpt@24+0x84>
777a2261:	8a 40 34             	mov    0x34(%eax),%al
777a2264:	c0 e8 02             	shr    $0x2,%al
777a2267:	eb ad                	jmp    777a2216 <_WSPGetSockOpt@24+0x76>
777a2269:	c7 06 1e 27 00 00    	movl   $0x271e,(%esi)
777a226f:	89 17                	mov    %edx,(%edi)
777a2271:	e9 72 ff ff ff       	jmp    777a21e8 <_WSPGetSockOpt@24+0x48>
777a2276:	c7 06 36 27 00 00    	movl   $0x2736,(%esi)
777a227c:	e9 67 ff ff ff       	jmp    777a21e8 <_WSPGetSockOpt@24+0x48>
777a2281:	eb 0d                	jmp    777a2290 <_WSPStartup@76>
777a2283:	90                   	nop    
777a2284:	90                   	nop    
777a2285:	90                   	nop    
777a2286:	90                   	nop    
777a2287:	90                   	nop    
777a2288:	90                   	nop    
777a2289:	90                   	nop    
777a228a:	90                   	nop    
777a228b:	90                   	nop    
777a228c:	90                   	nop    
777a228d:	90                   	nop    
777a228e:	90                   	nop    
777a228f:	90                   	nop    

777a2290 <_WSPStartup@76>:
777a2290:	55                   	push   %ebp
777a2291:	b9 0f 00 00 00       	mov    $0xf,%ecx
777a2296:	89 e5                	mov    %esp,%ebp
777a2298:	57                   	push   %edi
777a2299:	fc                   	cld    
777a229a:	56                   	push   %esi
777a229b:	bf 40 60 7a 77       	mov    $0x777a6040,%edi
777a22a0:	8d 75 14             	lea    0x14(%ebp),%esi
777a22a3:	8b 45 50             	mov    0x50(%ebp),%eax
777a22a6:	f3 a5                	repz movsl %ds:(%esi),%es:(%edi)
777a22a8:	8b 55 0c             	mov    0xc(%ebp),%edx
777a22ab:	c7 00 c0 2b 7a 77    	movl   $0x777a2bc0,(%eax)
777a22b1:	c7 40 04 90 43 7a 77 	movl   $0x777a4390,0x4(%eax)
777a22b8:	c7 40 08 e0 3a 7a 77 	movl   $0x777a3ae0,0x8(%eax)
777a22bf:	c7 40 0c e0 17 7a 77 	movl   $0x777a17e0,0xc(%eax)
777a22c6:	c7 40 10 a0 43 7a 77 	movl   $0x777a43a0,0x10(%eax)
777a22cd:	c7 40 14 90 23 7a 77 	movl   $0x777a2390,0x14(%eax)
777a22d4:	c7 40 18 50 16 7a 77 	movl   $0x777a1650,0x18(%eax)
777a22db:	c7 40 1c d0 29 7a 77 	movl   $0x777a29d0,0x1c(%eax)
777a22e2:	c7 40 20 b0 43 7a 77 	movl   $0x777a43b0,0x20(%eax)
777a22e9:	c7 40 24 60 32 7a 77 	movl   $0x777a3260,0x24(%eax)
777a22f0:	c7 40 28 b0 30 7a 77 	movl   $0x777a30b0,0x28(%eax)
777a22f7:	c7 40 2c c0 43 7a 77 	movl   $0x777a43c0,0x2c(%eax)
777a22fe:	c7 40 30 00 20 7a 77 	movl   $0x777a2000,0x30(%eax)
777a2305:	c7 40 34 90 1e 7a 77 	movl   $0x777a1e90,0x34(%eax)
777a230c:	c7 40 38 a0 21 7a 77 	movl   $0x777a21a0,0x38(%eax)
777a2313:	c7 40 3c d0 43 7a 77 	movl   $0x777a43d0,0x3c(%eax)
777a231a:	c7 40 40 50 21 7a 77 	movl   $0x777a2150,0x40(%eax)
777a2321:	c7 40 44 e0 43 7a 77 	movl   $0x777a43e0,0x44(%eax)
777a2328:	c7 40 48 00 19 7a 77 	movl   $0x777a1900,0x48(%eax)
777a232f:	c7 40 4c d0 3b 7a 77 	movl   $0x777a3bd0,0x4c(%eax)
777a2336:	c7 40 50 70 43 7a 77 	movl   $0x777a4370,0x50(%eax)
777a233d:	c7 40 54 00 3e 7a 77 	movl   $0x777a3e00,0x54(%eax)
777a2344:	c7 40 58 a0 19 7a 77 	movl   $0x777a19a0,0x58(%eax)
777a234b:	c7 40 5c 30 40 7a 77 	movl   $0x777a4030,0x5c(%eax)
777a2352:	c7 40 60 80 43 7a 77 	movl   $0x777a4380,0x60(%eax)
777a2359:	c7 40 64 b0 41 7a 77 	movl   $0x777a41b0,0x64(%eax)
777a2360:	c7 40 68 f0 43 7a 77 	movl   $0x777a43f0,0x68(%eax)
777a2367:	c7 40 6c 80 1d 7a 77 	movl   $0x777a1d80,0x6c(%eax)
777a236e:	c7 40 70 90 12 7a 77 	movl   $0x777a1290,0x70(%eax)
777a2375:	c7 40 74 00 44 7a 77 	movl   $0x777a4400,0x74(%eax)
777a237c:	66 c7 02 02 02       	movw   $0x202,(%edx)
777a2381:	66 c7 42 02 02 02    	movw   $0x202,0x2(%edx)
777a2387:	31 c0                	xor    %eax,%eax
777a2389:	5e                   	pop    %esi
777a238a:	5f                   	pop    %edi
777a238b:	5d                   	pop    %ebp
777a238c:	c2 4c 00             	ret    $0x4c
777a238f:	90                   	nop    

777a2390 <_WSPCleanup@4>:
777a2390:	55                   	push   %ebp
777a2391:	89 e5                	mov    %esp,%ebp
777a2393:	8b 45 08             	mov    0x8(%ebp),%eax
777a2396:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a239c:	31 c0                	xor    %eax,%eax
777a239e:	5d                   	pop    %ebp
777a239f:	c2 04 00             	ret    $0x4
777a23a2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a23a9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a23b0 <_SetSocketInformation>:
777a23b0:	55                   	push   %ebp
777a23b1:	89 e5                	mov    %esp,%ebp
777a23b3:	53                   	push   %ebx
777a23b4:	83 ec 40             	sub    $0x40,%esp
777a23b7:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a23ba:	8b 5d 14             	mov    0x14(%ebp),%ebx
777a23bd:	6a 00                	push   $0x0
777a23bf:	6a 01                	push   $0x1
777a23c1:	6a 00                	push   $0x0
777a23c3:	68 00 00 00 c0       	push   $0xc0000000
777a23c8:	50                   	push   %eax
777a23c9:	e8 52 20 00 00       	call   777a4420 <_NtCreateEvent@20>
777a23ce:	83 ca ff             	or     $0xffffffff,%edx
777a23d1:	83 c4 0c             	add    $0xc,%esp
777a23d4:	85 c0                	test   %eax,%eax
777a23d6:	78 5d                	js     777a2435 <_SetSocketInformation+0x85>
777a23d8:	8b 45 0c             	mov    0xc(%ebp),%eax
777a23db:	85 db                	test   %ebx,%ebx
777a23dd:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a23e0:	8b 45 10             	mov    0x10(%ebp),%eax
777a23e3:	8b 00                	mov    (%eax),%eax
777a23e5:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a23e8:	74 0b                	je     777a23f5 <_SetSocketInformation+0x45>
777a23ea:	8b 03                	mov    (%ebx),%eax
777a23ec:	8b 53 04             	mov    0x4(%ebx),%edx
777a23ef:	89 55 e4             	mov    %edx,0xffffffe4(%ebp)
777a23f2:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a23f5:	50                   	push   %eax
777a23f6:	50                   	push   %eax
777a23f7:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a23fa:	6a 00                	push   $0x0
777a23fc:	6a 00                	push   $0x0
777a23fe:	6a 18                	push   $0x18
777a2400:	50                   	push   %eax
777a2401:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a2404:	68 7b 20 01 00       	push   $0x1207b
777a2409:	50                   	push   %eax
777a240a:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a240d:	6a 00                	push   $0x0
777a240f:	6a 00                	push   $0x0
777a2411:	50                   	push   %eax
777a2412:	8b 45 08             	mov    0x8(%ebp),%eax
777a2415:	8b 58 04             	mov    0x4(%eax),%ebx
777a2418:	53                   	push   %ebx
777a2419:	e8 12 20 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a241e:	5a                   	pop    %edx
777a241f:	3d 03 01 00 00       	cmp    $0x103,%eax
777a2424:	59                   	pop    %ecx
777a2425:	74 19                	je     777a2440 <_SetSocketInformation+0x90>
777a2427:	83 ec 0c             	sub    $0xc,%esp
777a242a:	8b 5d d4             	mov    0xffffffd4(%ebp),%ebx
777a242d:	53                   	push   %ebx
777a242e:	e8 0d 20 00 00       	call   777a4440 <_NtClose@4>
777a2433:	31 d2                	xor    %edx,%edx
777a2435:	89 d0                	mov    %edx,%eax
777a2437:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777a243a:	c9                   	leave  
777a243b:	c3                   	ret    
777a243c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a2440:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a2443:	53                   	push   %ebx
777a2444:	53                   	push   %ebx
777a2445:	6a ff                	push   $0xffffffff
777a2447:	51                   	push   %ecx
777a2448:	e8 f3 20 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a244d:	58                   	pop    %eax
777a244e:	5a                   	pop    %edx
777a244f:	eb d6                	jmp    777a2427 <_SetSocketInformation+0x77>
777a2451:	eb 0d                	jmp    777a2460 <_SockCreateOrReferenceAsyncThread>
777a2453:	90                   	nop    
777a2454:	90                   	nop    
777a2455:	90                   	nop    
777a2456:	90                   	nop    
777a2457:	90                   	nop    
777a2458:	90                   	nop    
777a2459:	90                   	nop    
777a245a:	90                   	nop    
777a245b:	90                   	nop    
777a245c:	90                   	nop    
777a245d:	90                   	nop    
777a245e:	90                   	nop    
777a245f:	90                   	nop    

777a2460 <_SockCreateOrReferenceAsyncThread>:

BOOLEAN SockCreateOrReferenceAsyncThread(VOID)
{
777a2460:	55                   	push   %ebp
777a2461:	89 e5                	mov    %esp,%ebp
777a2463:	83 ec 18             	sub    $0x18,%esp
	HANDLE hAsyncThread;
	DWORD AsyncThreadId;
	HANDLE AsyncEvent;
	OBJECT_HANDLE_ATTRIBUTE_INFORMATION HandleFlags;
	NTSTATUS Status;

	/* Check if the Thread Already Exists */
	if (SockAsyncThreadRefCount) {
777a2466:	a1 10 60 7a 77       	mov    0x777a6010,%eax
777a246b:	85 c0                	test   %eax,%eax
777a246d:	75 4a                	jne    777a24b9 <_SockCreateOrReferenceAsyncThread+0x59>
		return TRUE;
	}
	
	/* Create the Completion Port */
	if (!SockAsyncCompletionPort) {
777a246f:	a1 90 60 7a 77       	mov    0x777a6090,%eax
777a2474:	85 c0                	test   %eax,%eax
777a2476:	74 48                	je     777a24c0 <_SockCreateOrReferenceAsyncThread+0x60>
		Status = NtCreateIoCompletion(&SockAsyncCompletionPort,
					      IO_COMPLETION_ALL_ACCESS,
					      NULL,
					      2); // Allow 2 threads only
	
		/* Protect Handle */	
		HandleFlags.ProtectFromClose = TRUE;
		HandleFlags.Inherit = FALSE;
		Status = NtSetInformationObject(SockAsyncCompletionPort,
						ObjectHandleInformation,
						&HandleFlags,
						sizeof(HandleFlags));
	}
    
	/* Create the Async Event */
	Status = NtCreateEvent(&AsyncEvent,
777a2478:	83 ec 0c             	sub    $0xc,%esp
777a247b:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777a247e:	6a 00                	push   $0x0
777a2480:	6a 00                	push   $0x0
777a2482:	6a 00                	push   $0x0
777a2484:	68 03 00 1f 00       	push   $0x1f0003
777a2489:	50                   	push   %eax
777a248a:	e8 91 1f 00 00       	call   777a4420 <_NtCreateEvent@20>
			       EVENT_ALL_ACCESS,
			       NULL,
			       NotificationEvent,
			       FALSE);
    
	/* Create the Async Thread */
	hAsyncThread = CreateThread(NULL,
777a248f:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777a2492:	89 04 24             	mov    %eax,(%esp)
777a2495:	6a 00                	push   $0x0
777a2497:	6a 00                	push   $0x0
777a2499:	68 00 25 7a 77       	push   $0x777a2500
777a249e:	6a 00                	push   $0x0
777a24a0:	6a 00                	push   $0x0
777a24a2:	e8 d9 20 00 00       	call   777a4580 <_CreateThread@24>
				    0,
				    (LPTHREAD_START_ROUTINE)SockAsyncThread,
				    NULL,
				    0,
				    &AsyncThreadId);

	/* Close the Handle */
	NtClose(hAsyncThread);
777a24a7:	52                   	push   %edx
777a24a8:	50                   	push   %eax
777a24a9:	e8 92 1f 00 00       	call   777a4440 <_NtClose@4>

	/* Increase the Reference Count */
	SockAsyncThreadRefCount++;
777a24ae:	a1 10 60 7a 77       	mov    0x777a6010,%eax
777a24b3:	40                   	inc    %eax
777a24b4:	a3 10 60 7a 77       	mov    %eax,0x777a6010
	return TRUE;
}
777a24b9:	b8 01 00 00 00       	mov    $0x1,%eax
777a24be:	c9                   	leave  
777a24bf:	c3                   	ret    
777a24c0:	6a 02                	push   $0x2
777a24c2:	6a 00                	push   $0x0
777a24c4:	68 03 00 1f 00       	push   $0x1f0003
777a24c9:	68 90 60 7a 77       	push   $0x777a6090
777a24ce:	e8 bd 1f 00 00       	call   777a4490 <_NtCreateIoCompletion@16>
777a24d3:	8d 45 fe             	lea    0xfffffffe(%ebp),%eax
777a24d6:	8b 0d 90 60 7a 77    	mov    0x777a6090,%ecx
777a24dc:	c6 45 ff 01          	movb   $0x1,0xffffffff(%ebp)
777a24e0:	6a 02                	push   $0x2
777a24e2:	c6 45 fe 00          	movb   $0x0,0xfffffffe(%ebp)
777a24e6:	50                   	push   %eax
777a24e7:	6a 04                	push   $0x4
777a24e9:	51                   	push   %ecx
777a24ea:	e8 b1 1f 00 00       	call   777a44a0 <_NtSetInformationObject@16>
777a24ef:	eb 87                	jmp    777a2478 <_SockCreateOrReferenceAsyncThread+0x18>
777a24f1:	eb 0d                	jmp    777a2500 <_SockAsyncThread>
777a24f3:	90                   	nop    
777a24f4:	90                   	nop    
777a24f5:	90                   	nop    
777a24f6:	90                   	nop    
777a24f7:	90                   	nop    
777a24f8:	90                   	nop    
777a24f9:	90                   	nop    
777a24fa:	90                   	nop    
777a24fb:	90                   	nop    
777a24fc:	90                   	nop    
777a24fd:	90                   	nop    
777a24fe:	90                   	nop    
777a24ff:	90                   	nop    

777a2500 <_SockAsyncThread>:

int SockAsyncThread(PVOID ThreadParam)
{
777a2500:	55                   	push   %ebp
777a2501:	89 e5                	mov    %esp,%ebp
777a2503:	57                   	push   %edi
777a2504:	56                   	push   %esi
777a2505:	53                   	push   %ebx
777a2506:	83 ec 24             	sub    $0x24,%esp
777a2509:	8d 75 e8             	lea    0xffffffe8(%ebp),%esi
777a250c:	8d 7d e0             	lea    0xffffffe0(%ebp),%edi
	PVOID AsyncContext;
	PASYNC_COMPLETION_ROUTINE AsyncCompletionRoutine;
	IO_STATUS_BLOCK IOSB;
	NTSTATUS Status;
                          
	/* Make the Thread Higher Priority */
	SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
777a250f:	6a 01                	push   $0x1
777a2511:	51                   	push   %ecx
777a2512:	e8 79 20 00 00       	call   777a4590 <_GetCurrentThread@0>
777a2517:	89 04 24             	mov    %eax,(%esp)
777a251a:	e8 81 20 00 00       	call   777a45a0 <_SetThreadPriority@8>
	
	/* Do a KQUEUE/WorkItem Style Loop, thanks to IoCompletion Ports */
	do {
777a251f:	58                   	pop    %eax
777a2520:	5a                   	pop    %edx
777a2521:	eb 15                	jmp    777a2538 <_SockAsyncThread+0x38>
		Status =  NtRemoveIoCompletion (SockAsyncCompletionPort,
						(PVOID*)&AsyncCompletionRoutine,
						&AsyncContext,
						&IOSB,
						NULL);
						
		/* Call the Async Function */
		if (NT_SUCCESS(Status)) {
			(*AsyncCompletionRoutine)(AsyncContext, &IOSB);
777a2523:	50                   	push   %eax
777a2524:	50                   	push   %eax
777a2525:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777a2528:	56                   	push   %esi
777a2529:	50                   	push   %eax
777a252a:	ff 55 e0             	call   *0xffffffe0(%ebp)
777a252d:	83 c4 10             	add    $0x10,%esp
		} else {
			/* It Failed, sleep for a second */
			Sleep(1000);
		}
	} while ((Status != STATUS_TIMEOUT));
777a2530:	81 fb 02 01 00 00    	cmp    $0x102,%ebx
777a2536:	74 38                	je     777a2570 <_SockAsyncThread+0x70>
777a2538:	83 ec 0c             	sub    $0xc,%esp
777a253b:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
777a253e:	6a 00                	push   $0x0
777a2540:	56                   	push   %esi
777a2541:	50                   	push   %eax
777a2542:	a1 90 60 7a 77       	mov    0x777a6090,%eax
777a2547:	57                   	push   %edi
777a2548:	50                   	push   %eax
777a2549:	e8 62 1f 00 00       	call   777a44b0 <_NtRemoveIoCompletion@20>
777a254e:	83 c4 0c             	add    $0xc,%esp
777a2551:	89 c3                	mov    %eax,%ebx
777a2553:	85 c0                	test   %eax,%eax
777a2555:	79 cc                	jns    777a2523 <_SockAsyncThread+0x23>
777a2557:	83 ec 0c             	sub    $0xc,%esp
777a255a:	68 e8 03 00 00       	push   $0x3e8
777a255f:	e8 fc 1f 00 00       	call   777a4560 <_Sleep@4>
777a2564:	83 c4 0c             	add    $0xc,%esp
777a2567:	81 fb 02 01 00 00    	cmp    $0x102,%ebx
777a256d:	75 c9                	jne    777a2538 <_SockAsyncThread+0x38>
777a256f:	90                   	nop    

    /* The Thread has Ended */
    return 0;
}
777a2570:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2573:	31 c0                	xor    %eax,%eax
777a2575:	5b                   	pop    %ebx
777a2576:	5e                   	pop    %esi
777a2577:	5f                   	pop    %edi
777a2578:	5d                   	pop    %ebp
777a2579:	c3                   	ret    
777a257a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

777a2580 <_SockGetAsyncSelectHelperAfdHandle>:

BOOLEAN SockGetAsyncSelectHelperAfdHandle(VOID)
{
777a2580:	55                   	push   %ebp
777a2581:	89 e5                	mov    %esp,%ebp
777a2583:	53                   	push   %ebx
777a2584:	83 ec 44             	sub    $0x44,%esp
	UNICODE_STRING AfdHelper;
	OBJECT_ATTRIBUTES ObjectAttributes;
	IO_STATUS_BLOCK IoSb;
	NTSTATUS Status;
	FILE_COMPLETION_INFORMATION CompletionInfo;
	OBJECT_HANDLE_ATTRIBUTE_INFORMATION HandleFlags;

	/* First, make sure we're not already intialized */
	if (SockAsyncHelperAfdHandle) {
777a2587:	a1 20 60 7a 77       	mov    0x777a6020,%eax
777a258c:	85 c0                	test   %eax,%eax
777a258e:	74 10                	je     777a25a0 <_SockGetAsyncSelectHelperAfdHandle+0x20>
		return TRUE;
	}

	/* Set up Handle Name and Object */
	RtlInitUnicodeString(&AfdHelper, L"\\Device\\Afd\\AsyncSelectHlp" );
	InitializeObjectAttributes(&ObjectAttributes,
				   &AfdHelper,
				   OBJ_INHERIT | OBJ_CASE_INSENSITIVE,
				   NULL,
				   NULL);

	/* Open the Handle to AFD */
	Status = NtCreateFile(&SockAsyncHelperAfdHandle,
			      GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
			      &ObjectAttributes,
			      &IoSb,
			      NULL,
			      0,
			      FILE_SHARE_READ | FILE_SHARE_WRITE,
			      FILE_OPEN_IF,
			      0,
			      NULL,
			      0);

	/* 
	 * Now Set up the Completion Port Information 
	 * This means that whenever a Poll is finished, the routine will be executed
	 */
	CompletionInfo.Port = SockAsyncCompletionPort;
	CompletionInfo.Key = SockAsyncSelectCompletionRoutine;
	Status = NtSetInformationFile(SockAsyncHelperAfdHandle,
				      &IoSb,
				      &CompletionInfo,
				      sizeof(CompletionInfo),
				      FileCompletionInformation);
				      
				      
	/* Protect the Handle */
	HandleFlags.ProtectFromClose = TRUE;
	HandleFlags.Inherit = FALSE;
	Status = NtSetInformationObject(SockAsyncCompletionPort,
					ObjectHandleInformation,
					&HandleFlags,
					sizeof(HandleFlags));


	/* Set this variable to true so that Send/Recv/Accept will know wether to renable disabled events */
	SockAsyncSelectCalled = TRUE;
	return TRUE;
}
777a2590:	b8 01 00 00 00       	mov    $0x1,%eax
777a2595:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777a2598:	c9                   	leave  
777a2599:	c3                   	ret    
777a259a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a25a0:	8d 5d d0             	lea    0xffffffd0(%ebp),%ebx
777a25a3:	50                   	push   %eax
777a25a4:	50                   	push   %eax
777a25a5:	68 58 50 7a 77       	push   $0x777a5058
777a25aa:	53                   	push   %ebx
777a25ab:	ff 15 70 81 7a 77    	call   *0x777a8170
777a25b1:	89 5d e0             	mov    %ebx,0xffffffe0(%ebp)
777a25b4:	c7 45 d8 18 00 00 00 	movl   $0x18,0xffffffd8(%ebp)
777a25bb:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
777a25c2:	c7 45 e4 42 00 00 00 	movl   $0x42,0xffffffe4(%ebp)
777a25c9:	c7 45 e8 00 00 00 00 	movl   $0x0,0xffffffe8(%ebp)
777a25d0:	c7 45 ec 00 00 00 00 	movl   $0x0,0xffffffec(%ebp)
777a25d7:	8d 5d c8             	lea    0xffffffc8(%ebp),%ebx
777a25da:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a25e1:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a25e4:	6a 00                	push   $0x0
777a25e6:	6a 00                	push   $0x0
777a25e8:	6a 03                	push   $0x3
777a25ea:	6a 03                	push   $0x3
777a25ec:	6a 00                	push   $0x0
777a25ee:	6a 00                	push   $0x0
777a25f0:	53                   	push   %ebx
777a25f1:	50                   	push   %eax
777a25f2:	68 00 00 10 c0       	push   $0xc0100000
777a25f7:	68 20 60 7a 77       	push   $0x777a6020
777a25fc:	e8 bf 1e 00 00       	call   777a44c0 <_NtCreateFile@44>
777a2601:	a1 90 60 7a 77       	mov    0x777a6090,%eax
777a2606:	89 45 c0             	mov    %eax,0xffffffc0(%ebp)
777a2609:	c7 45 c4 60 26 7a 77 	movl   $0x777a2660,0xffffffc4(%ebp)
777a2610:	50                   	push   %eax
777a2611:	50                   	push   %eax
777a2612:	8d 45 c0             	lea    0xffffffc0(%ebp),%eax
777a2615:	6a 1e                	push   $0x1e
777a2617:	6a 08                	push   $0x8
777a2619:	50                   	push   %eax
777a261a:	53                   	push   %ebx
777a261b:	a1 20 60 7a 77       	mov    0x777a6020,%eax
777a2620:	50                   	push   %eax
777a2621:	e8 aa 1e 00 00       	call   777a44d0 <_NtSetInformationFile@20>
777a2626:	83 c4 0c             	add    $0xc,%esp
777a2629:	8d 45 be             	lea    0xffffffbe(%ebp),%eax
777a262c:	c6 45 bf 01          	movb   $0x1,0xffffffbf(%ebp)
777a2630:	c6 45 be 00          	movb   $0x0,0xffffffbe(%ebp)
777a2634:	6a 02                	push   $0x2
777a2636:	50                   	push   %eax
777a2637:	6a 04                	push   $0x4
777a2639:	8b 1d 90 60 7a 77    	mov    0x777a6090,%ebx
777a263f:	53                   	push   %ebx
777a2640:	e8 5b 1e 00 00       	call   777a44a0 <_NtSetInformationObject@16>
777a2645:	c6 05 80 60 7a 77 01 	movb   $0x1,0x777a6080
777a264c:	b8 01 00 00 00       	mov    $0x1,%eax
777a2651:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777a2654:	c9                   	leave  
777a2655:	c3                   	ret    
777a2656:	8d 76 00             	lea    0x0(%esi),%esi
777a2659:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a2660 <_SockAsyncSelectCompletionRoutine>:

VOID SockAsyncSelectCompletionRoutine(PVOID Context, PIO_STATUS_BLOCK IoStatusBlock)
{
777a2660:	55                   	push   %ebp
777a2661:	89 e5                	mov    %esp,%ebp
777a2663:	57                   	push   %edi
777a2664:	56                   	push   %esi
777a2665:	53                   	push   %ebx
777a2666:	83 ec 0c             	sub    $0xc,%esp
777a2669:	8b 75 08             	mov    0x8(%ebp),%esi
777a266c:	8b 55 0c             	mov    0xc(%ebp),%edx

	PASYNC_DATA AsyncData = Context;
	PSOCKET_INFORMATION Socket;
	ULONG x;
    
	/* Get the Socket */
	Socket = AsyncData->ParentSocket;
777a266f:	8b 1e                	mov    (%esi),%ebx
	
	/* Check if the Sequence  Number Changed behind our back */
	if (AsyncData->SequenceNumber != Socket->SharedData.SequenceNumber ){
777a2671:	8b 43 60             	mov    0x60(%ebx),%eax
777a2674:	39 46 04             	cmp    %eax,0x4(%esi)
777a2677:	74 08                	je     777a2681 <_SockAsyncSelectCompletionRoutine+0x21>
		return;
	}

	/* Check we were manually called b/c of a failure */
	if (!NT_SUCCESS(IoStatusBlock->Status)) {
		/* FIXME: Perform Upcall */
		return;
	}

	for (x = 1; x; x<<=1) {
		switch (AsyncData->AsyncSelectInfo.Handles[0].Events & x) {
			case AFD_EVENT_RECEIVE:
				if (0 != (Socket->SharedData.AsyncEvents & FD_READ) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_READ)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_READ, 0));
					/* Disable this event until the next read(); */
					Socket->SharedData.AsyncDisabledEvents |= FD_READ;
				}
				break;
			
			case AFD_EVENT_OOB_RECEIVE:
				if (0 != (Socket->SharedData.AsyncEvents & FD_OOB) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_OOB)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_OOB, 0));
					/* Disable this event until the next read(); */
					Socket->SharedData.AsyncDisabledEvents |= FD_OOB;
				}
				break;
		
			case AFD_EVENT_SEND:
				if (0 != (Socket->SharedData.AsyncEvents & FD_WRITE) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_WRITE)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_WRITE, 0));
					/* Disable this event until the next write(); */
					Socket->SharedData.AsyncDisabledEvents |= FD_WRITE;
				}
				break;

            /* FIXME: THIS IS NOT RIGHT!!! HACK HACK HACK! */
			case AFD_EVENT_CONNECT:
				if (0 != (Socket->SharedData.AsyncEvents & FD_CONNECT) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_CONNECT)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_CONNECT, 0));
					/* Disable this event forever; */
					Socket->SharedData.AsyncDisabledEvents |= FD_CONNECT;
				}
				break;
				
			case AFD_EVENT_ACCEPT:
				if (0 != (Socket->SharedData.AsyncEvents & FD_ACCEPT) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_ACCEPT)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_ACCEPT, 0));
					/* Disable this event until the next accept(); */
					Socket->SharedData.AsyncDisabledEvents |= FD_ACCEPT;
				}
				break;

			case AFD_EVENT_DISCONNECT:
			case AFD_EVENT_ABORT:
			case AFD_EVENT_CLOSE:
				if (0 != (Socket->SharedData.AsyncEvents & FD_CLOSE) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_CLOSE)) {
					/* Make the Notifcation */
					(Upcalls.lpWPUPostMessage)(Socket->SharedData.hWnd,
								   Socket->SharedData.wMsg,
								   Socket->Handle,
								   WSAMAKESELECTREPLY(FD_CLOSE, 0));
					/* Disable this event forever; */
					Socket->SharedData.AsyncDisabledEvents |= FD_CLOSE;
				}
				break;

			/* FIXME: Support QOS */
		}
	}
	
	/* Check if there are any events left for us to check */
	if ((Socket->SharedData.AsyncEvents & (~Socket->SharedData.AsyncDisabledEvents)) == 0 ) {
		return;
	}

	/* Keep Polling */
	SockProcessAsyncSelect(Socket, AsyncData);
	return;
}
777a2679:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a267c:	5b                   	pop    %ebx
777a267d:	5e                   	pop    %esi
777a267e:	5f                   	pop    %edi
777a267f:	5d                   	pop    %ebp
777a2680:	c3                   	ret    
777a2681:	8b 12                	mov    (%edx),%edx
777a2683:	85 d2                	test   %edx,%edx
777a2685:	78 f2                	js     777a2679 <_SockAsyncSelectCompletionRoutine+0x19>
777a2687:	bf 01 00 00 00       	mov    $0x1,%edi
777a268c:	8b 4b 68             	mov    0x68(%ebx),%ecx
777a268f:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a2692:	8b 46 24             	mov    0x24(%esi),%eax
777a2695:	21 f8                	and    %edi,%eax
777a2697:	83 f8 08             	cmp    $0x8,%eax
777a269a:	74 45                	je     777a26e1 <_SockAsyncSelectCompletionRoutine+0x81>
777a269c:	77 37                	ja     777a26d5 <_SockAsyncSelectCompletionRoutine+0x75>
777a269e:	83 f8 02             	cmp    $0x2,%eax
777a26a1:	0f 84 c9 00 00 00    	je     777a2770 <_SockAsyncSelectCompletionRoutine+0x110>
777a26a7:	77 68                	ja     777a2711 <_SockAsyncSelectCompletionRoutine+0xb1>
777a26a9:	48                   	dec    %eax
777a26aa:	75 44                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a26ac:	f6 c1 01             	test   $0x1,%cl
777a26af:	74 3f                	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a26b1:	f6 c2 01             	test   $0x1,%dl
777a26b4:	75 3a                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a26b6:	6a 01                	push   $0x1
777a26b8:	8b 43 04             	mov    0x4(%ebx),%eax
777a26bb:	50                   	push   %eax
777a26bc:	8b 43 64             	mov    0x64(%ebx),%eax
777a26bf:	50                   	push   %eax
777a26c0:	8b 43 58             	mov    0x58(%ebx),%eax
777a26c3:	50                   	push   %eax
777a26c4:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a26ca:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a26cd:	83 ca 01             	or     $0x1,%edx
777a26d0:	e9 15 01 00 00       	jmp    777a27ea <_SockAsyncSelectCompletionRoutine+0x18a>
777a26d5:	83 f8 20             	cmp    $0x20,%eax
777a26d8:	74 07                	je     777a26e1 <_SockAsyncSelectCompletionRoutine+0x81>
777a26da:	77 64                	ja     777a2740 <_SockAsyncSelectCompletionRoutine+0xe0>
777a26dc:	83 f8 10             	cmp    $0x10,%eax
777a26df:	75 0f                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a26e1:	f6 c1 20             	test   $0x20,%cl
777a26e4:	74 0a                	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a26e6:	f6 c2 20             	test   $0x20,%dl
777a26e9:	0f 84 e1 00 00 00    	je     777a27d0 <_SockAsyncSelectCompletionRoutine+0x170>
777a26ef:	90                   	nop    
777a26f0:	01 ff                	add    %edi,%edi
777a26f2:	75 9e                	jne    777a2692 <_SockAsyncSelectCompletionRoutine+0x32>
777a26f4:	83 f2 ff             	xor    $0xffffffff,%edx
777a26f7:	85 ca                	test   %ecx,%edx
777a26f9:	0f 84 7a ff ff ff    	je     777a2679 <_SockAsyncSelectCompletionRoutine+0x19>
777a26ff:	89 75 0c             	mov    %esi,0xc(%ebp)
777a2702:	89 5d 08             	mov    %ebx,0x8(%ebp)
777a2705:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2708:	5b                   	pop    %ebx
777a2709:	5e                   	pop    %esi
777a270a:	5f                   	pop    %edi
777a270b:	5d                   	pop    %ebp
777a270c:	e9 ef 00 00 00       	jmp    777a2800 <_SockProcessAsyncSelect>
777a2711:	83 f8 04             	cmp    $0x4,%eax
777a2714:	75 da                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a2716:	f6 c1 02             	test   $0x2,%cl
777a2719:	74 d5                	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a271b:	f6 c2 02             	test   $0x2,%dl
777a271e:	75 d0                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a2720:	6a 02                	push   $0x2
777a2722:	8b 4b 04             	mov    0x4(%ebx),%ecx
777a2725:	51                   	push   %ecx
777a2726:	8b 53 64             	mov    0x64(%ebx),%edx
777a2729:	52                   	push   %edx
777a272a:	8b 43 58             	mov    0x58(%ebx),%eax
777a272d:	50                   	push   %eax
777a272e:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a2734:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a2737:	83 ca 02             	or     $0x2,%edx
777a273a:	e9 ab 00 00 00       	jmp    777a27ea <_SockAsyncSelectCompletionRoutine+0x18a>
777a273f:	90                   	nop    
777a2740:	83 f8 40             	cmp    $0x40,%eax
777a2743:	74 59                	je     777a279e <_SockAsyncSelectCompletionRoutine+0x13e>
777a2745:	83 c0 80             	add    $0xffffff80,%eax
777a2748:	75 a6                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a274a:	f6 c1 08             	test   $0x8,%cl
777a274d:	74 a1                	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a274f:	f6 c2 08             	test   $0x8,%dl
777a2752:	75 9c                	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a2754:	6a 08                	push   $0x8
777a2756:	8b 43 04             	mov    0x4(%ebx),%eax
777a2759:	50                   	push   %eax
777a275a:	8b 43 64             	mov    0x64(%ebx),%eax
777a275d:	50                   	push   %eax
777a275e:	8b 4b 58             	mov    0x58(%ebx),%ecx
777a2761:	51                   	push   %ecx
777a2762:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a2768:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a276b:	83 ca 08             	or     $0x8,%edx
777a276e:	eb 7a                	jmp    777a27ea <_SockAsyncSelectCompletionRoutine+0x18a>
777a2770:	f6 c1 04             	test   $0x4,%cl
777a2773:	0f 84 77 ff ff ff    	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a2779:	f6 c2 04             	test   $0x4,%dl
777a277c:	0f 85 6e ff ff ff    	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a2782:	6a 04                	push   $0x4
777a2784:	8b 43 04             	mov    0x4(%ebx),%eax
777a2787:	50                   	push   %eax
777a2788:	8b 43 64             	mov    0x64(%ebx),%eax
777a278b:	50                   	push   %eax
777a278c:	8b 43 58             	mov    0x58(%ebx),%eax
777a278f:	50                   	push   %eax
777a2790:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a2796:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a2799:	83 ca 04             	or     $0x4,%edx
777a279c:	eb 4c                	jmp    777a27ea <_SockAsyncSelectCompletionRoutine+0x18a>
777a279e:	f6 c1 10             	test   $0x10,%cl
777a27a1:	0f 84 49 ff ff ff    	je     777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a27a7:	f6 c2 10             	test   $0x10,%dl
777a27aa:	0f 85 40 ff ff ff    	jne    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a27b0:	6a 10                	push   $0x10
777a27b2:	8b 43 04             	mov    0x4(%ebx),%eax
777a27b5:	50                   	push   %eax
777a27b6:	8b 43 64             	mov    0x64(%ebx),%eax
777a27b9:	50                   	push   %eax
777a27ba:	8b 43 58             	mov    0x58(%ebx),%eax
777a27bd:	50                   	push   %eax
777a27be:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a27c4:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a27c7:	83 ca 10             	or     $0x10,%edx
777a27ca:	eb 1e                	jmp    777a27ea <_SockAsyncSelectCompletionRoutine+0x18a>
777a27cc:	8d 74 26 00          	lea    0x0(%esi),%esi
777a27d0:	6a 20                	push   $0x20
777a27d2:	8b 53 04             	mov    0x4(%ebx),%edx
777a27d5:	52                   	push   %edx
777a27d6:	8b 43 64             	mov    0x64(%ebx),%eax
777a27d9:	50                   	push   %eax
777a27da:	8b 43 58             	mov    0x58(%ebx),%eax
777a27dd:	50                   	push   %eax
777a27de:	ff 15 5c 60 7a 77    	call   *0x777a605c
777a27e4:	8b 53 6c             	mov    0x6c(%ebx),%edx
777a27e7:	83 ca 20             	or     $0x20,%edx
777a27ea:	8b 4b 68             	mov    0x68(%ebx),%ecx
777a27ed:	89 53 6c             	mov    %edx,0x6c(%ebx)
777a27f0:	e9 fb fe ff ff       	jmp    777a26f0 <_SockAsyncSelectCompletionRoutine+0x90>
777a27f5:	8d 74 26 00          	lea    0x0(%esi),%esi
777a27f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a2800 <_SockProcessAsyncSelect>:

VOID SockProcessAsyncSelect(PSOCKET_INFORMATION Socket, PASYNC_DATA AsyncData)
{
777a2800:	55                   	push   %ebp
777a2801:	89 e5                	mov    %esp,%ebp
777a2803:	56                   	push   %esi
777a2804:	53                   	push   %ebx
777a2805:	8b 5d 0c             	mov    0xc(%ebp),%ebx
777a2808:	8b 55 08             	mov    0x8(%ebp),%edx

	ULONG lNetworkEvents;
	NTSTATUS Status;

	/* Set up the Async Data Event Info */
	AsyncData->AsyncSelectInfo.Timeout.HighPart = 0x7FFFFFFF;
777a280b:	c7 43 14 ff ff ff 7f 	movl   $0x7fffffff,0x14(%ebx)
	AsyncData->AsyncSelectInfo.Timeout.LowPart = 0xFFFFFFFF;
777a2812:	c7 43 10 ff ff ff ff 	movl   $0xffffffff,0x10(%ebx)
	AsyncData->AsyncSelectInfo.HandleCount = 1;
777a2819:	c7 43 18 01 00 00 00 	movl   $0x1,0x18(%ebx)
	AsyncData->AsyncSelectInfo.Exclusive = TRUE;
777a2820:	c7 43 1c 01 00 00 00 	movl   $0x1,0x1c(%ebx)
	AsyncData->AsyncSelectInfo.Handles[0].Handle = Socket->Handle;
777a2827:	8b 42 04             	mov    0x4(%edx),%eax
	AsyncData->AsyncSelectInfo.Handles[0].Events = 0;
777a282a:	c7 43 24 00 00 00 00 	movl   $0x0,0x24(%ebx)
777a2831:	89 43 20             	mov    %eax,0x20(%ebx)

	/* Remove unwanted events */
	lNetworkEvents = Socket->SharedData.AsyncEvents & (~Socket->SharedData.AsyncDisabledEvents);
777a2834:	8b 42 6c             	mov    0x6c(%edx),%eax
777a2837:	83 f0 ff             	xor    $0xffffffff,%eax
777a283a:	8b 4a 68             	mov    0x68(%edx),%ecx
777a283d:	21 c8                	and    %ecx,%eax

	/* Set Events to wait for */
	if (lNetworkEvents & FD_READ) {
777a283f:	a8 01                	test   $0x1,%al
777a2841:	74 07                	je     777a284a <_SockProcessAsyncSelect+0x4a>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_RECEIVE;
777a2843:	c7 43 24 01 00 00 00 	movl   $0x1,0x24(%ebx)
	}

	if (lNetworkEvents & FD_WRITE) {
777a284a:	a8 02                	test   $0x2,%al
777a284c:	74 09                	je     777a2857 <_SockProcessAsyncSelect+0x57>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_SEND;
777a284e:	8b 73 24             	mov    0x24(%ebx),%esi
777a2851:	83 ce 04             	or     $0x4,%esi
777a2854:	89 73 24             	mov    %esi,0x24(%ebx)
	}

	if (lNetworkEvents & FD_OOB) {
777a2857:	a8 04                	test   $0x4,%al
777a2859:	74 09                	je     777a2864 <_SockProcessAsyncSelect+0x64>
	        AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_OOB_RECEIVE;
777a285b:	8b 4b 24             	mov    0x24(%ebx),%ecx
777a285e:	83 c9 02             	or     $0x2,%ecx
777a2861:	89 4b 24             	mov    %ecx,0x24(%ebx)
	}

	if (lNetworkEvents & FD_ACCEPT) {
777a2864:	a8 08                	test   $0x8,%al
777a2866:	74 09                	je     777a2871 <_SockProcessAsyncSelect+0x71>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_ACCEPT;
777a2868:	8b 53 24             	mov    0x24(%ebx),%edx
777a286b:	80 ca 80             	or     $0x80,%dl
777a286e:	89 53 24             	mov    %edx,0x24(%ebx)
	}

     /* FIXME: THIS IS NOT RIGHT!!! HACK HACK HACK! */
	if (lNetworkEvents & FD_CONNECT) {
777a2871:	a8 10                	test   $0x10,%al
777a2873:	74 0c                	je     777a2881 <_SockProcessAsyncSelect+0x81>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_CONNECT | AFD_EVENT_CONNECT_FAIL;
777a2875:	8b 73 24             	mov    0x24(%ebx),%esi
777a2878:	81 ce 40 01 00 00    	or     $0x140,%esi
777a287e:	89 73 24             	mov    %esi,0x24(%ebx)
	}

	if (lNetworkEvents & FD_CLOSE) {
777a2881:	a8 20                	test   $0x20,%al
777a2883:	74 09                	je     777a288e <_SockProcessAsyncSelect+0x8e>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_DISCONNECT | AFD_EVENT_ABORT;
777a2885:	8b 4b 24             	mov    0x24(%ebx),%ecx
777a2888:	83 c9 18             	or     $0x18,%ecx
777a288b:	89 4b 24             	mov    %ecx,0x24(%ebx)
	}

	if (lNetworkEvents & FD_QOS) {
777a288e:	a8 40                	test   $0x40,%al
777a2890:	74 09                	je     777a289b <_SockProcessAsyncSelect+0x9b>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_QOS;
777a2892:	8b 53 24             	mov    0x24(%ebx),%edx
777a2895:	80 ce 02             	or     $0x2,%dh
777a2898:	89 53 24             	mov    %edx,0x24(%ebx)
	}

	if (lNetworkEvents & FD_GROUP_QOS) {
777a289b:	a9 80 00 00 00       	test   $0x80,%eax
777a28a0:	74 09                	je     777a28ab <_SockProcessAsyncSelect+0xab>
		AsyncData->AsyncSelectInfo.Handles[0].Events |= AFD_EVENT_GROUP_QOS;
777a28a2:	8b 43 24             	mov    0x24(%ebx),%eax
777a28a5:	80 cc 04             	or     $0x4,%ah
777a28a8:	89 43 24             	mov    %eax,0x24(%ebx)
	}
	
	/* Send IOCTL */
	Status = NtDeviceIoControlFile (SockAsyncHelperAfdHandle,
777a28ab:	8d 43 10             	lea    0x10(%ebx),%eax
777a28ae:	56                   	push   %esi
777a28af:	56                   	push   %esi
777a28b0:	8d 73 08             	lea    0x8(%ebx),%esi
777a28b3:	6a 20                	push   $0x20
777a28b5:	50                   	push   %eax
777a28b6:	6a 20                	push   $0x20
777a28b8:	50                   	push   %eax
777a28b9:	68 24 20 01 00       	push   $0x12024
777a28be:	56                   	push   %esi
777a28bf:	53                   	push   %ebx
777a28c0:	6a 00                	push   $0x0
777a28c2:	6a 00                	push   $0x0
777a28c4:	8b 0d 20 60 7a 77    	mov    0x777a6020,%ecx
777a28ca:	51                   	push   %ecx
777a28cb:	e8 60 1b 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
					NULL,
					NULL,
					AsyncData,
					&AsyncData->IoStatusBlock,
					IOCTL_AFD_SELECT,
					&AsyncData->AsyncSelectInfo,
					sizeof(AsyncData->AsyncSelectInfo),
					&AsyncData->AsyncSelectInfo,
					sizeof(AsyncData->AsyncSelectInfo));

	/* I/O Manager Won't call the completion routine, let's do it manually */
	if (NT_SUCCESS(Status)) {
777a28d0:	59                   	pop    %ecx
777a28d1:	85 c0                	test   %eax,%eax
777a28d3:	5a                   	pop    %edx
777a28d4:	78 0a                	js     777a28e0 <_SockProcessAsyncSelect+0xe0>
		return;
	} else {
		AsyncData->IoStatusBlock.Status = Status;
		SockAsyncSelectCompletionRoutine(AsyncData, &AsyncData->IoStatusBlock);
	}
}
777a28d6:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a28d9:	5b                   	pop    %ebx
777a28da:	5e                   	pop    %esi
777a28db:	5d                   	pop    %ebp
777a28dc:	c3                   	ret    
777a28dd:	8d 76 00             	lea    0x0(%esi),%esi
777a28e0:	89 43 08             	mov    %eax,0x8(%ebx)
777a28e3:	89 75 0c             	mov    %esi,0xc(%ebp)
777a28e6:	89 5d 08             	mov    %ebx,0x8(%ebp)
777a28e9:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a28ec:	5b                   	pop    %ebx
777a28ed:	5e                   	pop    %esi
777a28ee:	5d                   	pop    %ebp
777a28ef:	e9 6c fd ff ff       	jmp    777a2660 <_SockAsyncSelectCompletionRoutine>
777a28f4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a28fa:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

777a2900 <_SockProcessQueuedAsyncSelect>:

VOID SockProcessQueuedAsyncSelect(PVOID Context, PIO_STATUS_BLOCK IoStatusBlock)
{
777a2900:	55                   	push   %ebp
777a2901:	89 e5                	mov    %esp,%ebp
777a2903:	50                   	push   %eax
777a2904:	50                   	push   %eax
777a2905:	8b 4d 08             	mov    0x8(%ebp),%ecx
	PASYNC_DATA AsyncData = Context;
	BOOL FreeContext = TRUE;
	PSOCKET_INFORMATION Socket;

	/* Get the Socket */	
	Socket = AsyncData->ParentSocket;
777a2908:	8b 11                	mov    (%ecx),%edx

	/* If someone closed it, stop the function */
	if (Socket->SharedData.State != SocketClosed) {
777a290a:	83 7a 08 04          	cmpl   $0x4,0x8(%edx)
777a290e:	74 08                	je     777a2918 <_SockProcessQueuedAsyncSelect+0x18>
		/* Check if the Sequence Number changed by now, in which case quit */
		if (AsyncData->SequenceNumber == Socket->SharedData.SequenceNumber) {
777a2910:	8b 42 60             	mov    0x60(%edx),%eax
777a2913:	39 41 04             	cmp    %eax,0x4(%ecx)
777a2916:	74 18                	je     777a2930 <_SockProcessQueuedAsyncSelect+0x30>
			/* Do the actuall select, if needed */
			if ((Socket->SharedData.AsyncEvents & (~Socket->SharedData.AsyncDisabledEvents))) {
				SockProcessAsyncSelect(Socket, AsyncData);
				FreeContext = FALSE;
			}
		}
	}
	
	/* Free the Context */
	if (FreeContext) {
		HeapFree(GetProcessHeap(), 0, AsyncData);
777a2918:	50                   	push   %eax
777a2919:	51                   	push   %ecx
777a291a:	6a 00                	push   $0x0
777a291c:	50                   	push   %eax
777a291d:	e8 8e 1c 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a2922:	89 04 24             	mov    %eax,(%esp)
777a2925:	e8 46 1c 00 00       	call   777a4570 <_HeapFree@12>
777a292a:	58                   	pop    %eax
	}

	return;
}
777a292b:	c9                   	leave  
777a292c:	c3                   	ret    
777a292d:	8d 76 00             	lea    0x0(%esi),%esi
777a2930:	8b 42 6c             	mov    0x6c(%edx),%eax
777a2933:	83 f0 ff             	xor    $0xffffffff,%eax
777a2936:	85 42 68             	test   %eax,0x68(%edx)
777a2939:	74 dd                	je     777a2918 <_SockProcessQueuedAsyncSelect+0x18>
777a293b:	50                   	push   %eax
777a293c:	50                   	push   %eax
777a293d:	51                   	push   %ecx
777a293e:	52                   	push   %edx
777a293f:	e8 bc fe ff ff       	call   777a2800 <_SockProcessAsyncSelect>
777a2944:	83 c4 10             	add    $0x10,%esp
777a2947:	c9                   	leave  
777a2948:	c3                   	ret    
777a2949:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a2950 <_SockReenableAsyncSelectEvent>:

VOID
SockReenableAsyncSelectEvent (
    IN PSOCKET_INFORMATION Socket,
    IN ULONG Event
    )
{
777a2950:	55                   	push   %ebp
777a2951:	89 e5                	mov    %esp,%ebp
777a2953:	56                   	push   %esi
777a2954:	53                   	push   %ebx
777a2955:	8b 75 08             	mov    0x8(%ebp),%esi
777a2958:	8b 45 0c             	mov    0xc(%ebp),%eax
    PASYNC_DATA AsyncData;

    /* Make sure the event is actually disabled */
    if (!(Socket->SharedData.AsyncDisabledEvents & Event)) {
777a295b:	8b 56 6c             	mov    0x6c(%esi),%edx
777a295e:	85 d0                	test   %edx,%eax
777a2960:	74 10                	je     777a2972 <_SockReenableAsyncSelectEvent+0x22>
        return;
    }

    /* Re-enable it */
    Socket->SharedData.AsyncDisabledEvents &= ~Event;
777a2962:	83 f0 ff             	xor    $0xffffffff,%eax
777a2965:	21 d0                	and    %edx,%eax
777a2967:	89 46 6c             	mov    %eax,0x6c(%esi)

    /* Return if no more events are being polled */
    if ((Socket->SharedData.AsyncEvents & (~Socket->SharedData.AsyncDisabledEvents)) == 0 ) {
777a296a:	83 f0 ff             	xor    $0xffffffff,%eax
777a296d:	85 46 68             	test   %eax,0x68(%esi)
777a2970:	75 0e                	jne    777a2980 <_SockReenableAsyncSelectEvent+0x30>
        return;
    }

    /* Wait on new events */
    AsyncData = HeapAlloc(GetProcessHeap(), 0, sizeof(ASYNC_DATA));

    /* Create the Asynch Thread if Needed */  
    SockCreateOrReferenceAsyncThread();

    /* Increase the sequence number to stop anything else */
    Socket->SharedData.SequenceNumber++;
    
    /* Set up the Async Data */
    AsyncData->ParentSocket = Socket;
    AsyncData->SequenceNumber = Socket->SharedData.SequenceNumber;

    /* Begin Async Select by using I/O Completion */
    NtSetIoCompletion(SockAsyncCompletionPort,
                      (PVOID)&SockProcessQueuedAsyncSelect,
                      AsyncData,
                      0,
                      0);
    
    /* All done */
    return;
}
777a2972:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a2975:	5b                   	pop    %ebx
777a2976:	5e                   	pop    %esi
777a2977:	5d                   	pop    %ebp
777a2978:	c3                   	ret    
777a2979:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a2980:	53                   	push   %ebx
777a2981:	6a 30                	push   $0x30
777a2983:	6a 00                	push   $0x0
777a2985:	51                   	push   %ecx
777a2986:	e8 25 1c 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a298b:	89 04 24             	mov    %eax,(%esp)
777a298e:	e8 bd 1b 00 00       	call   777a4550 <_HeapAlloc@12>
777a2993:	5a                   	pop    %edx
777a2994:	89 c3                	mov    %eax,%ebx
777a2996:	e8 c5 fa ff ff       	call   777a2460 <_SockCreateOrReferenceAsyncThread>
777a299b:	8b 46 60             	mov    0x60(%esi),%eax
777a299e:	83 ec 0c             	sub    $0xc,%esp
777a29a1:	40                   	inc    %eax
777a29a2:	89 46 60             	mov    %eax,0x60(%esi)
777a29a5:	89 33                	mov    %esi,(%ebx)
777a29a7:	89 43 04             	mov    %eax,0x4(%ebx)
777a29aa:	6a 00                	push   $0x0
777a29ac:	6a 00                	push   $0x0
777a29ae:	53                   	push   %ebx
777a29af:	68 00 29 7a 77       	push   $0x777a2900
777a29b4:	a1 90 60 7a 77       	mov    0x777a6090,%eax
777a29b9:	50                   	push   %eax
777a29ba:	e8 21 1b 00 00       	call   777a44e0 <_NtSetIoCompletion@20>
777a29bf:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a29c2:	5b                   	pop    %ebx
777a29c3:	5e                   	pop    %esi
777a29c4:	5d                   	pop    %ebp
777a29c5:	c3                   	ret    
777a29c6:	8d 76 00             	lea    0x0(%esi),%esi
777a29c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a29d0 <_WSPConnect@32>:
777a29d0:	55                   	push   %ebp
777a29d1:	89 e5                	mov    %esp,%ebp
777a29d3:	57                   	push   %edi
777a29d4:	56                   	push   %esi
777a29d5:	53                   	push   %ebx
777a29d6:	83 ec 68             	sub    $0x68,%esp
777a29d9:	8d 45 b4             	lea    0xffffffb4(%ebp),%eax
777a29dc:	8b 7d 14             	mov    0x14(%ebp),%edi
777a29df:	6a 00                	push   $0x0
777a29e1:	6a 01                	push   $0x1
777a29e3:	6a 00                	push   $0x0
777a29e5:	68 00 00 00 c0       	push   $0xc0000000
777a29ea:	50                   	push   %eax
777a29eb:	e8 30 1a 00 00       	call   777a4420 <_NtCreateEvent@20>
777a29f0:	83 ca ff             	or     $0xffffffff,%edx
777a29f3:	83 c4 0c             	add    $0xc,%esp
777a29f6:	85 c0                	test   %eax,%eax
777a29f8:	0f 88 52 01 00 00    	js     777a2b50 <_WSPConnect@32+0x180>
777a29fe:	8b 45 08             	mov    0x8(%ebp),%eax
777a2a01:	50                   	push   %eax
777a2a02:	e8 b9 e6 ff ff       	call   777a10c0 <_GetSocketStructure>
777a2a07:	89 c6                	mov    %eax,%esi
777a2a09:	58                   	pop    %eax
777a2a0a:	8b 5e 08             	mov    0x8(%esi),%ebx
777a2a0d:	85 db                	test   %ebx,%ebx
777a2a0f:	0f 84 5b 01 00 00    	je     777a2b70 <_WSPConnect@32+0x1a0>
777a2a15:	8d 5d a8             	lea    0xffffffa8(%ebp),%ebx
777a2a18:	85 ff                	test   %edi,%edi
777a2a1a:	74 26                	je     777a2a42 <_WSPConnect@32+0x72>
777a2a1c:	50                   	push   %eax
777a2a1d:	50                   	push   %eax
777a2a1e:	6a 00                	push   $0x0
777a2a20:	6a 00                	push   $0x0
777a2a22:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a2a25:	8b 07                	mov    (%edi),%eax
777a2a27:	50                   	push   %eax
777a2a28:	8b 47 04             	mov    0x4(%edi),%eax
777a2a2b:	8b 7d b4             	mov    0xffffffb4(%ebp),%edi
777a2a2e:	50                   	push   %eax
777a2a2f:	68 4b 20 01 00       	push   $0x1204b
777a2a34:	53                   	push   %ebx
777a2a35:	6a 00                	push   $0x0
777a2a37:	6a 00                	push   $0x0
777a2a39:	57                   	push   %edi
777a2a3a:	51                   	push   %ecx
777a2a3b:	e8 f0 19 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2a40:	58                   	pop    %eax
777a2a41:	5a                   	pop    %edx
777a2a42:	8b 45 10             	mov    0x10(%ebp),%eax
777a2a45:	8b 55 0c             	mov    0xc(%ebp),%edx
777a2a48:	83 e8 02             	sub    $0x2,%eax
777a2a4b:	c7 45 c4 01 00 00 00 	movl   $0x1,0xffffffc4(%ebp)
777a2a52:	66 89 45 c8          	mov    %ax,0xffffffc8(%ebp)
777a2a56:	8d 7d b8             	lea    0xffffffb8(%ebp),%edi
777a2a59:	66 8b 02             	mov    (%edx),%ax
777a2a5c:	66 89 45 ca          	mov    %ax,0xffffffca(%ebp)
777a2a60:	50                   	push   %eax
777a2a61:	8b 45 10             	mov    0x10(%ebp),%eax
777a2a64:	83 e8 02             	sub    $0x2,%eax
777a2a67:	50                   	push   %eax
777a2a68:	89 d0                	mov    %edx,%eax
777a2a6a:	83 c0 02             	add    $0x2,%eax
777a2a6d:	50                   	push   %eax
777a2a6e:	8d 45 cc             	lea    0xffffffcc(%ebp),%eax
777a2a71:	50                   	push   %eax
777a2a72:	e8 79 1a 00 00       	call   777a44f0 <_memcpy>
777a2a77:	83 c4 10             	add    $0x10,%esp
777a2a7a:	f6 46 68 10          	testb  $0x10,0x68(%esi)
777a2a7e:	0f 85 dc 00 00 00    	jne    777a2b60 <_WSPConnect@32+0x190>
777a2a84:	8b 45 18             	mov    0x18(%ebp),%eax
777a2a87:	85 c0                	test   %eax,%eax
777a2a89:	74 2d                	je     777a2ab8 <_WSPConnect@32+0xe8>
777a2a8b:	8b 55 18             	mov    0x18(%ebp),%edx
777a2a8e:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a2a91:	8b 02                	mov    (%edx),%eax
777a2a93:	89 45 a4             	mov    %eax,0xffffffa4(%ebp)
777a2a96:	50                   	push   %eax
777a2a97:	50                   	push   %eax
777a2a98:	8d 45 a4             	lea    0xffffffa4(%ebp),%eax
777a2a9b:	6a 00                	push   $0x0
777a2a9d:	6a 00                	push   $0x0
777a2a9f:	6a 04                	push   $0x4
777a2aa1:	50                   	push   %eax
777a2aa2:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a2aa5:	68 6b 20 01 00       	push   $0x1206b
777a2aaa:	53                   	push   %ebx
777a2aab:	6a 00                	push   $0x0
777a2aad:	6a 00                	push   $0x0
777a2aaf:	50                   	push   %eax
777a2ab0:	51                   	push   %ecx
777a2ab1:	e8 7a 19 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2ab6:	58                   	pop    %eax
777a2ab7:	5a                   	pop    %edx
777a2ab8:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a2abb:	50                   	push   %eax
777a2abc:	50                   	push   %eax
777a2abd:	6a 00                	push   $0x0
777a2abf:	6a 00                	push   $0x0
777a2ac1:	6a 22                	push   $0x22
777a2ac3:	57                   	push   %edi
777a2ac4:	8b 7d b4             	mov    0xffffffb4(%ebp),%edi
777a2ac7:	68 07 20 01 00       	push   $0x12007
777a2acc:	c7 45 bc 00 00 00 00 	movl   $0x0,0xffffffbc(%ebp)
777a2ad3:	53                   	push   %ebx
777a2ad4:	c6 45 b8 00          	movb   $0x0,0xffffffb8(%ebp)
777a2ad8:	6a 00                	push   $0x0
777a2ada:	c7 45 c0 00 00 00 00 	movl   $0x0,0xffffffc0(%ebp)
777a2ae1:	6a 00                	push   $0x0
777a2ae3:	57                   	push   %edi
777a2ae4:	51                   	push   %ecx
777a2ae5:	e8 46 19 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2aea:	8b 7d 18             	mov    0x18(%ebp),%edi
777a2aed:	58                   	pop    %eax
777a2aee:	85 ff                	test   %edi,%edi
777a2af0:	5a                   	pop    %edx
777a2af1:	74 29                	je     777a2b1c <_WSPConnect@32+0x14c>
777a2af3:	8b 45 18             	mov    0x18(%ebp),%eax
777a2af6:	51                   	push   %ecx
777a2af7:	51                   	push   %ecx
777a2af8:	8b 10                	mov    (%eax),%edx
777a2afa:	52                   	push   %edx
777a2afb:	8b 40 04             	mov    0x4(%eax),%eax
777a2afe:	50                   	push   %eax
777a2aff:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a2b02:	6a 00                	push   $0x0
777a2b04:	6a 00                	push   $0x0
777a2b06:	68 5b 20 01 00       	push   $0x1205b
777a2b0b:	53                   	push   %ebx
777a2b0c:	6a 00                	push   $0x0
777a2b0e:	6a 00                	push   $0x0
777a2b10:	50                   	push   %eax
777a2b11:	8b 45 08             	mov    0x8(%ebp),%eax
777a2b14:	50                   	push   %eax
777a2b15:	e8 16 19 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2b1a:	5b                   	pop    %ebx
777a2b1b:	5f                   	pop    %edi
777a2b1c:	51                   	push   %ecx
777a2b1d:	51                   	push   %ecx
777a2b1e:	6a 02                	push   $0x2
777a2b20:	56                   	push   %esi
777a2b21:	e8 2a fe ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a2b26:	58                   	pop    %eax
777a2b27:	5a                   	pop    %edx
777a2b28:	6a 10                	push   $0x10
777a2b2a:	56                   	push   %esi
777a2b2b:	e8 20 fe ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a2b30:	58                   	pop    %eax
777a2b31:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a2b34:	50                   	push   %eax
777a2b35:	e8 06 19 00 00       	call   777a4440 <_NtClose@4>
777a2b3a:	83 c4 0c             	add    $0xc,%esp
777a2b3d:	8b 7d 24             	mov    0x24(%ebp),%edi
777a2b40:	8b 75 a8             	mov    0xffffffa8(%ebp),%esi
777a2b43:	6a 00                	push   $0x0
777a2b45:	6a 00                	push   $0x0
777a2b47:	57                   	push   %edi
777a2b48:	56                   	push   %esi
777a2b49:	e8 b2 e4 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a2b4e:	89 c2                	mov    %eax,%edx
777a2b50:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2b53:	89 d0                	mov    %edx,%eax
777a2b55:	5b                   	pop    %ebx
777a2b56:	5e                   	pop    %esi
777a2b57:	5f                   	pop    %edi
777a2b58:	5d                   	pop    %ebp
777a2b59:	c2 20 00             	ret    $0x20
777a2b5c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a2b60:	8b 46 6c             	mov    0x6c(%esi),%eax
777a2b63:	83 c8 12             	or     $0x12,%eax
777a2b66:	89 46 6c             	mov    %eax,0x6c(%esi)
777a2b69:	e9 16 ff ff ff       	jmp    777a2a84 <_WSPConnect@32+0xb4>
777a2b6e:	89 f6                	mov    %esi,%esi
777a2b70:	8b 46 74             	mov    0x74(%esi),%eax
777a2b73:	8b 40 14             	mov    0x14(%eax),%eax
777a2b76:	51                   	push   %ecx
777a2b77:	89 45 b0             	mov    %eax,0xffffffb0(%ebp)
777a2b7a:	50                   	push   %eax
777a2b7b:	6a 00                	push   $0x0
777a2b7d:	52                   	push   %edx
777a2b7e:	e8 2d 1a 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a2b83:	89 04 24             	mov    %eax,(%esp)
777a2b86:	e8 c5 19 00 00       	call   777a4550 <_HeapAlloc@12>
777a2b8b:	89 c3                	mov    %eax,%ebx
777a2b8d:	8d 45 b0             	lea    0xffffffb0(%ebp),%eax
777a2b90:	8b 56 74             	mov    0x74(%esi),%edx
777a2b93:	50                   	push   %eax
777a2b94:	53                   	push   %ebx
777a2b95:	8b 46 78             	mov    0x78(%esi),%eax
777a2b98:	50                   	push   %eax
777a2b99:	ff 52 44             	call   *0x44(%edx)
777a2b9c:	8b 45 b0             	mov    0xffffffb0(%ebp),%eax
777a2b9f:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a2ba6:	50                   	push   %eax
777a2ba7:	8b 45 08             	mov    0x8(%ebp),%eax
777a2baa:	53                   	push   %ebx
777a2bab:	50                   	push   %eax
777a2bac:	e8 2f ec ff ff       	call   777a17e0 <_WSPBind@16>
777a2bb1:	e9 5f fe ff ff       	jmp    777a2a15 <_WSPConnect@32+0x45>
777a2bb6:	8d 76 00             	lea    0x0(%esi),%esi
777a2bb9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a2bc0 <_WSPAccept@24>:
777a2bc0:	55                   	push   %ebp
777a2bc1:	89 e5                	mov    %esp,%ebp
777a2bc3:	57                   	push   %edi
777a2bc4:	56                   	push   %esi
777a2bc5:	53                   	push   %ebx
777a2bc6:	81 ec 38 04 00 00    	sub    $0x438,%esp
777a2bcc:	8d 85 14 fc ff ff    	lea    0xfffffc14(%ebp),%eax
777a2bd2:	c7 85 cc fb ff ff 00 	movl   $0x0,0xfffffbcc(%ebp)
777a2bd9:	00 00 00 
777a2bdc:	c7 85 dc fb ff ff 00 	movl   $0x0,0xfffffbdc(%ebp)
777a2be3:	00 00 00 
777a2be6:	6a 00                	push   $0x0
777a2be8:	6a 01                	push   $0x1
777a2bea:	6a 00                	push   $0x0
777a2bec:	68 00 00 00 c0       	push   $0xc0000000
777a2bf1:	50                   	push   %eax
777a2bf2:	e8 29 18 00 00       	call   777a4420 <_NtCreateEvent@20>
777a2bf7:	31 ff                	xor    %edi,%edi
777a2bf9:	83 c4 0c             	add    $0xc,%esp
777a2bfc:	89 c3                	mov    %eax,%ebx
777a2bfe:	85 c0                	test   %eax,%eax
777a2c00:	0f 88 36 03 00 00    	js     777a2f3c <_WSPAccept@24+0x37c>
777a2c06:	8b 75 08             	mov    0x8(%ebp),%esi
777a2c09:	56                   	push   %esi
777a2c0a:	e8 b1 e4 ff ff       	call   777a10c0 <_GetSocketStructure>
777a2c0f:	c7 85 b8 fe ff ff 00 	movl   $0x0,0xfffffeb8(%ebp)
777a2c16:	00 00 00 
777a2c19:	53                   	push   %ebx
777a2c1a:	89 c6                	mov    %eax,%esi
777a2c1c:	8b 40 04             	mov    0x4(%eax),%eax
777a2c1f:	89 85 bc fe ff ff    	mov    %eax,0xfffffebc(%ebp)
777a2c25:	8d 85 08 fc ff ff    	lea    0xfffffc08(%ebp),%eax
777a2c2b:	c7 85 b8 fe ff ff 01 	movl   $0x1,0xfffffeb8(%ebp)
777a2c32:	00 00 00 
777a2c35:	c7 85 08 fc ff ff 00 	movl   $0x0,0xfffffc08(%ebp)
777a2c3c:	00 00 00 
777a2c3f:	c7 85 0c fc ff ff 00 	movl   $0x0,0xfffffc0c(%ebp)
777a2c46:	00 00 00 
777a2c49:	6a 00                	push   $0x0
777a2c4b:	50                   	push   %eax
777a2c4c:	8d 85 b8 fe ff ff    	lea    0xfffffeb8(%ebp),%eax
777a2c52:	6a 00                	push   $0x0
777a2c54:	6a 00                	push   $0x0
777a2c56:	50                   	push   %eax
777a2c57:	6a 00                	push   $0x0
777a2c59:	e8 42 ed ff ff       	call   777a19a0 <_WSPSelect@24>
777a2c5e:	8b 46 04             	mov    0x4(%esi),%eax
777a2c61:	5a                   	pop    %edx
777a2c62:	31 d2                	xor    %edx,%edx
777a2c64:	59                   	pop    %ecx
777a2c65:	39 85 bc fe ff ff    	cmp    %eax,0xfffffebc(%ebp)
777a2c6b:	74 13                	je     777a2c80 <_WSPAccept@24+0xc0>
777a2c6d:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2c70:	89 d0                	mov    %edx,%eax
777a2c72:	5b                   	pop    %ebx
777a2c73:	5e                   	pop    %esi
777a2c74:	5f                   	pop    %edi
777a2c75:	5d                   	pop    %ebp
777a2c76:	c2 18 00             	ret    $0x18
777a2c79:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a2c80:	8d 95 00 fc ff ff    	lea    0xfffffc00(%ebp),%edx
777a2c86:	50                   	push   %eax
777a2c87:	50                   	push   %eax
777a2c88:	8d 85 18 fc ff ff    	lea    0xfffffc18(%ebp),%eax
777a2c8e:	6a 1a                	push   $0x1a
777a2c90:	50                   	push   %eax
777a2c91:	6a 00                	push   $0x0
777a2c93:	6a 00                	push   $0x0
777a2c95:	68 0c 20 01 00       	push   $0x1200c
777a2c9a:	52                   	push   %edx
777a2c9b:	6a 00                	push   $0x0
777a2c9d:	6a 00                	push   $0x0
777a2c9f:	8b 9d 14 fc ff ff    	mov    0xfffffc14(%ebp),%ebx
777a2ca5:	53                   	push   %ebx
777a2ca6:	8b 4e 04             	mov    0x4(%esi),%ecx
777a2ca9:	51                   	push   %ecx
777a2caa:	e8 81 17 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2caf:	89 c3                	mov    %eax,%ebx
777a2cb1:	58                   	pop    %eax
777a2cb2:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a2cb8:	5a                   	pop    %edx
777a2cb9:	0f 84 35 03 00 00    	je     777a2ff4 <_WSPAccept@24+0x434>
777a2cbf:	85 db                	test   %ebx,%ebx
777a2cc1:	0f 88 63 02 00 00    	js     777a2f2a <_WSPAccept@24+0x36a>
777a2cc7:	8b 45 14             	mov    0x14(%ebp),%eax
777a2cca:	85 c0                	test   %eax,%eax
777a2ccc:	0f 84 14 01 00 00    	je     777a2de6 <_WSPAccept@24+0x226>
777a2cd2:	f6 46 40 80          	testb  $0x80,0x40(%esi)
777a2cd6:	74 55                	je     777a2d2d <_WSPAccept@24+0x16d>
777a2cd8:	8b 85 18 fc ff ff    	mov    0xfffffc18(%ebp),%eax
777a2cde:	c7 45 d0 01 00 00 00 	movl   $0x1,0xffffffd0(%ebp)
777a2ce5:	89 45 c8             	mov    %eax,0xffffffc8(%ebp)
777a2ce8:	50                   	push   %eax
777a2ce9:	50                   	push   %eax
777a2cea:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a2ced:	6a 0c                	push   $0xc
777a2cef:	50                   	push   %eax
777a2cf0:	6a 0c                	push   $0xc
777a2cf2:	50                   	push   %eax
777a2cf3:	8d 85 00 fc ff ff    	lea    0xfffffc00(%ebp),%eax
777a2cf9:	68 a7 20 01 00       	push   $0x120a7
777a2cfe:	50                   	push   %eax
777a2cff:	6a 00                	push   $0x0
777a2d01:	6a 00                	push   $0x0
777a2d03:	8b 85 14 fc ff ff    	mov    0xfffffc14(%ebp),%eax
777a2d09:	50                   	push   %eax
777a2d0a:	8b 46 04             	mov    0x4(%esi),%eax
777a2d0d:	50                   	push   %eax
777a2d0e:	e8 1d 17 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2d13:	89 c3                	mov    %eax,%ebx
777a2d15:	5f                   	pop    %edi
777a2d16:	85 db                	test   %ebx,%ebx
777a2d18:	58                   	pop    %eax
777a2d19:	0f 88 0b 02 00 00    	js     777a2f2a <_WSPAccept@24+0x36a>
777a2d1f:	8b bd 04 fc ff ff    	mov    0xfffffc04(%ebp),%edi
777a2d25:	85 ff                	test   %edi,%edi
777a2d27:	0f 85 ab 01 00 00    	jne    777a2ed8 <_WSPAccept@24+0x318>
777a2d2d:	8b 46 7c             	mov    0x7c(%esi),%eax
777a2d30:	89 85 fc fb ff ff    	mov    %eax,0xfffffbfc(%ebp)
777a2d36:	8b 46 18             	mov    0x18(%esi),%eax
777a2d39:	89 85 f8 fb ff ff    	mov    %eax,0xfffffbf8(%ebp)
777a2d3f:	50                   	push   %eax
777a2d40:	8d 85 18 fc ff ff    	lea    0xfffffc18(%ebp),%eax
777a2d46:	83 c0 0a             	add    $0xa,%eax
777a2d49:	6a 10                	push   $0x10
777a2d4b:	50                   	push   %eax
777a2d4c:	6a 00                	push   $0x0
777a2d4e:	e8 9d 17 00 00       	call   777a44f0 <_memcpy>
777a2d53:	8b 95 cc fb ff ff    	mov    0xfffffbcc(%ebp),%edx
777a2d59:	c7 85 f4 fb ff ff 00 	movl   $0x0,0xfffffbf4(%ebp)
777a2d60:	00 00 00 
777a2d63:	c7 85 f0 fb ff ff 10 	movl   $0x10,0xfffffbf0(%ebp)
777a2d6a:	00 00 00 
777a2d6d:	89 95 ec fb ff ff    	mov    %edx,0xfffffbec(%ebp)
777a2d73:	89 bd e8 fb ff ff    	mov    %edi,0xfffffbe8(%ebp)
777a2d79:	83 c4 10             	add    $0x10,%esp
777a2d7c:	f6 46 35 04          	testb  $0x4,0x35(%esi)
777a2d80:	0f 85 cc 01 00 00    	jne    777a2f52 <_WSPAccept@24+0x392>
777a2d86:	8d 95 e0 fb ff ff    	lea    0xfffffbe0(%ebp),%edx
777a2d8c:	c7 85 e4 fb ff ff 00 	movl   $0x0,0xfffffbe4(%ebp)
777a2d93:	00 00 00 
777a2d96:	c7 85 e0 fb ff ff 00 	movl   $0x0,0xfffffbe0(%ebp)
777a2d9d:	00 00 00 
777a2da0:	8b 5d 18             	mov    0x18(%ebp),%ebx
777a2da3:	8d 85 dc fb ff ff    	lea    0xfffffbdc(%ebp),%eax
777a2da9:	53                   	push   %ebx
777a2daa:	50                   	push   %eax
777a2dab:	8b 4a 04             	mov    0x4(%edx),%ecx
777a2dae:	89 d0                	mov    %edx,%eax
777a2db0:	85 c9                	test   %ecx,%ecx
777a2db2:	75 02                	jne    777a2db6 <_WSPAccept@24+0x1f6>
777a2db4:	31 c0                	xor    %eax,%eax
777a2db6:	50                   	push   %eax
777a2db7:	8d 85 f8 fb ff ff    	lea    0xfffffbf8(%ebp),%eax
777a2dbd:	50                   	push   %eax
777a2dbe:	8d 85 e8 fb ff ff    	lea    0xfffffbe8(%ebp),%eax
777a2dc4:	6a 00                	push   $0x0
777a2dc6:	6a 00                	push   $0x0
777a2dc8:	8b 50 04             	mov    0x4(%eax),%edx
777a2dcb:	85 d2                	test   %edx,%edx
777a2dcd:	75 02                	jne    777a2dd1 <_WSPAccept@24+0x211>
777a2dcf:	31 c0                	xor    %eax,%eax
777a2dd1:	50                   	push   %eax
777a2dd2:	8d 85 f0 fb ff ff    	lea    0xfffffbf0(%ebp),%eax
777a2dd8:	50                   	push   %eax
777a2dd9:	ff 55 14             	call   *0x14(%ebp)
777a2ddc:	89 c7                	mov    %eax,%edi
777a2dde:	85 c0                	test   %eax,%eax
777a2de0:	0f 85 9b 01 00 00    	jne    777a2f81 <_WSPAccept@24+0x3c1>
777a2de6:	8b 46 3c             	mov    0x3c(%esi),%eax
777a2de9:	89 85 5c fc ff ff    	mov    %eax,0xfffffc5c(%ebp)
777a2def:	8b 46 40             	mov    0x40(%esi),%eax
777a2df2:	89 85 38 fc ff ff    	mov    %eax,0xfffffc38(%ebp)
777a2df8:	8b 46 44             	mov    0x44(%esi),%eax
777a2dfb:	89 85 48 fc ff ff    	mov    %eax,0xfffffc48(%ebp)
777a2e01:	52                   	push   %edx
777a2e02:	6a 00                	push   $0x0
777a2e04:	8b 46 38             	mov    0x38(%esi),%eax
777a2e07:	50                   	push   %eax
777a2e08:	8b 85 dc fb ff ff    	mov    0xfffffbdc(%ebp),%eax
777a2e0e:	50                   	push   %eax
777a2e0f:	8d 85 38 fc ff ff    	lea    0xfffffc38(%ebp),%eax
777a2e15:	50                   	push   %eax
777a2e16:	8b 46 14             	mov    0x14(%esi),%eax
777a2e19:	50                   	push   %eax
777a2e1a:	8b 46 10             	mov    0x10(%esi),%eax
777a2e1d:	50                   	push   %eax
777a2e1e:	8b 46 0c             	mov    0xc(%esi),%eax
777a2e21:	50                   	push   %eax
777a2e22:	e8 69 e4 ff ff       	call   777a1290 <_WSPSocket@28>
777a2e27:	89 c7                	mov    %eax,%edi
777a2e29:	8d 95 00 fc ff ff    	lea    0xfffffc00(%ebp),%edx
777a2e2f:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a2e32:	8b 85 18 fc ff ff    	mov    0xfffffc18(%ebp),%eax
777a2e38:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a2e3b:	50                   	push   %eax
777a2e3c:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a2e3f:	6a 00                	push   $0x0
777a2e41:	6a 00                	push   $0x0
777a2e43:	6a 0c                	push   $0xc
777a2e45:	50                   	push   %eax
777a2e46:	68 10 20 01 00       	push   $0x12010
777a2e4b:	52                   	push   %edx
777a2e4c:	6a 00                	push   $0x0
777a2e4e:	6a 00                	push   $0x0
777a2e50:	8b 9d 14 fc ff ff    	mov    0xfffffc14(%ebp),%ebx
777a2e56:	53                   	push   %ebx
777a2e57:	8b 4e 04             	mov    0x4(%esi),%ecx
777a2e5a:	51                   	push   %ecx
777a2e5b:	e8 d0 15 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2e60:	89 c3                	mov    %eax,%ebx
777a2e62:	58                   	pop    %eax
777a2e63:	85 db                	test   %ebx,%ebx
777a2e65:	5a                   	pop    %edx
777a2e66:	0f 88 b6 01 00 00    	js     777a3022 <_WSPAccept@24+0x462>
777a2e6c:	8b 55 0c             	mov    0xc(%ebp),%edx
777a2e6f:	85 d2                	test   %edx,%edx
777a2e71:	74 32                	je     777a2ea5 <_WSPAccept@24+0x2e5>
777a2e73:	50                   	push   %eax
777a2e74:	8d 85 18 fc ff ff    	lea    0xfffffc18(%ebp),%eax
777a2e7a:	6a 10                	push   $0x10
777a2e7c:	83 c0 0a             	add    $0xa,%eax
777a2e7f:	50                   	push   %eax
777a2e80:	8b 45 0c             	mov    0xc(%ebp),%eax
777a2e83:	50                   	push   %eax
777a2e84:	e8 67 16 00 00       	call   777a44f0 <_memcpy>
777a2e89:	8b 45 10             	mov    0x10(%ebp),%eax
777a2e8c:	83 c4 10             	add    $0x10,%esp
777a2e8f:	8b 00                	mov    (%eax),%eax
777a2e91:	85 c0                	test   %eax,%eax
777a2e93:	74 10                	je     777a2ea5 <_WSPAccept@24+0x2e5>
777a2e95:	8b 85 20 fc ff ff    	mov    0xfffffc20(%ebp),%eax
777a2e9b:	8b 55 10             	mov    0x10(%ebp),%edx
777a2e9e:	25 ff ff 00 00       	and    $0xffff,%eax
777a2ea3:	89 02                	mov    %eax,(%edx)
777a2ea5:	83 ec 0c             	sub    $0xc,%esp
777a2ea8:	8b 85 14 fc ff ff    	mov    0xfffffc14(%ebp),%eax
777a2eae:	50                   	push   %eax
777a2eaf:	e8 8c 15 00 00       	call   777a4440 <_NtClose@4>
777a2eb4:	c7 04 24 08 00 00 00 	movl   $0x8,(%esp)
777a2ebb:	56                   	push   %esi
777a2ebc:	e8 8f fa ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a2ec1:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a2ec4:	89 fa                	mov    %edi,%edx
777a2ec6:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a2ecc:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a2ecf:	89 d0                	mov    %edx,%eax
777a2ed1:	5b                   	pop    %ebx
777a2ed2:	5e                   	pop    %esi
777a2ed3:	5f                   	pop    %edi
777a2ed4:	5d                   	pop    %ebp
777a2ed5:	c2 18 00             	ret    $0x18
777a2ed8:	53                   	push   %ebx
777a2ed9:	57                   	push   %edi
777a2eda:	6a 00                	push   $0x0
777a2edc:	8b 0d 30 60 7a 77    	mov    0x777a6030,%ecx
777a2ee2:	51                   	push   %ecx
777a2ee3:	e8 68 16 00 00       	call   777a4550 <_HeapAlloc@12>
777a2ee8:	c7 45 d0 00 00 00 00 	movl   $0x0,0xffffffd0(%ebp)
777a2eef:	89 85 cc fb ff ff    	mov    %eax,0xfffffbcc(%ebp)
777a2ef5:	52                   	push   %edx
777a2ef6:	8d 55 c8             	lea    0xffffffc8(%ebp),%edx
777a2ef9:	57                   	push   %edi
777a2efa:	50                   	push   %eax
777a2efb:	8d 85 00 fc ff ff    	lea    0xfffffc00(%ebp),%eax
777a2f01:	6a 0c                	push   $0xc
777a2f03:	52                   	push   %edx
777a2f04:	68 a7 20 01 00       	push   $0x120a7
777a2f09:	50                   	push   %eax
777a2f0a:	6a 00                	push   $0x0
777a2f0c:	6a 00                	push   $0x0
777a2f0e:	8b 9d 14 fc ff ff    	mov    0xfffffc14(%ebp),%ebx
777a2f14:	53                   	push   %ebx
777a2f15:	8b 4e 04             	mov    0x4(%esi),%ecx
777a2f18:	51                   	push   %ecx
777a2f19:	e8 12 15 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2f1e:	89 c3                	mov    %eax,%ebx
777a2f20:	58                   	pop    %eax
777a2f21:	85 db                	test   %ebx,%ebx
777a2f23:	5a                   	pop    %edx
777a2f24:	0f 89 03 fe ff ff    	jns    777a2d2d <_WSPAccept@24+0x16d>
777a2f2a:	83 ec 0c             	sub    $0xc,%esp
777a2f2d:	8b 85 14 fc ff ff    	mov    0xfffffc14(%ebp),%eax
777a2f33:	50                   	push   %eax
777a2f34:	e8 07 15 00 00       	call   777a4440 <_NtClose@4>
777a2f39:	83 c4 0c             	add    $0xc,%esp
777a2f3c:	6a 00                	push   $0x0
777a2f3e:	6a 00                	push   $0x0
777a2f40:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
777a2f43:	51                   	push   %ecx
777a2f44:	53                   	push   %ebx
777a2f45:	e8 b6 e0 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a2f4a:	83 ca ff             	or     $0xffffffff,%edx
777a2f4d:	e9 1b fd ff ff       	jmp    777a2c6d <_WSPAccept@24+0xad>
777a2f52:	50                   	push   %eax
777a2f53:	68 00 10 00 00       	push   $0x1000
777a2f58:	6a 00                	push   $0x0
777a2f5a:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a2f5f:	50                   	push   %eax
777a2f60:	e8 eb 15 00 00       	call   777a4550 <_HeapAlloc@12>
777a2f65:	c7 85 e0 fb ff ff 00 	movl   $0x1000,0xfffffbe0(%ebp)
777a2f6c:	10 00 00 
777a2f6f:	8d 95 e0 fb ff ff    	lea    0xfffffbe0(%ebp),%edx
777a2f75:	89 85 e4 fb ff ff    	mov    %eax,0xfffffbe4(%ebp)
777a2f7b:	5f                   	pop    %edi
777a2f7c:	e9 1f fe ff ff       	jmp    777a2da0 <_WSPAccept@24+0x1e0>
777a2f81:	8b 85 18 fc ff ff    	mov    0xfffffc18(%ebp),%eax
777a2f87:	83 ff 01             	cmp    $0x1,%edi
777a2f8a:	89 85 d0 fb ff ff    	mov    %eax,0xfffffbd0(%ebp)
777a2f90:	0f 94 85 d4 fb ff ff 	sete   0xfffffbd4(%ebp)
777a2f97:	50                   	push   %eax
777a2f98:	50                   	push   %eax
777a2f99:	8d 85 d0 fb ff ff    	lea    0xfffffbd0(%ebp),%eax
777a2f9f:	6a 00                	push   $0x0
777a2fa1:	6a 00                	push   $0x0
777a2fa3:	6a 08                	push   $0x8
777a2fa5:	50                   	push   %eax
777a2fa6:	8d 85 00 fc ff ff    	lea    0xfffffc00(%ebp),%eax
777a2fac:	68 8f 20 01 00       	push   $0x1208f
777a2fb1:	50                   	push   %eax
777a2fb2:	6a 00                	push   $0x0
777a2fb4:	6a 00                	push   $0x0
777a2fb6:	8b 85 14 fc ff ff    	mov    0xfffffc14(%ebp),%eax
777a2fbc:	50                   	push   %eax
777a2fbd:	8b 46 04             	mov    0x4(%esi),%eax
777a2fc0:	50                   	push   %eax
777a2fc1:	e8 6a 14 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a2fc6:	89 c3                	mov    %eax,%ebx
777a2fc8:	56                   	push   %esi
777a2fc9:	8b 8d 14 fc ff ff    	mov    0xfffffc14(%ebp),%ecx
777a2fcf:	51                   	push   %ecx
777a2fd0:	e8 6b 14 00 00       	call   777a4440 <_NtClose@4>
777a2fd5:	83 c4 0c             	add    $0xc,%esp
777a2fd8:	85 db                	test   %ebx,%ebx
777a2fda:	0f 88 5c ff ff ff    	js     777a2f3c <_WSPAccept@24+0x37c>
777a2fe0:	4f                   	dec    %edi
777a2fe1:	74 2e                	je     777a3011 <_WSPAccept@24+0x451>
777a2fe3:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a2fe6:	83 ca ff             	or     $0xffffffff,%edx
777a2fe9:	c7 00 4d 27 00 00    	movl   $0x274d,(%eax)
777a2fef:	e9 79 fc ff ff       	jmp    777a2c6d <_WSPAccept@24+0xad>
777a2ff4:	53                   	push   %ebx
777a2ff5:	53                   	push   %ebx
777a2ff6:	6a ff                	push   $0xffffffff
777a2ff8:	8b 8d 14 fc ff ff    	mov    0xfffffc14(%ebp),%ecx
777a2ffe:	51                   	push   %ecx
777a2fff:	e8 3c 15 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a3004:	8b 9d 00 fc ff ff    	mov    0xfffffc00(%ebp),%ebx
777a300a:	58                   	pop    %eax
777a300b:	5a                   	pop    %edx
777a300c:	e9 ae fc ff ff       	jmp    777a2cbf <_WSPAccept@24+0xff>
777a3011:	8b 55 1c             	mov    0x1c(%ebp),%edx
777a3014:	c7 02 4d 27 00 00    	movl   $0x274d,(%edx)
777a301a:	83 ca ff             	or     $0xffffffff,%edx
777a301d:	e9 4b fc ff ff       	jmp    777a2c6d <_WSPAccept@24+0xad>
777a3022:	50                   	push   %eax
777a3023:	50                   	push   %eax
777a3024:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a3027:	50                   	push   %eax
777a3028:	57                   	push   %edi
777a3029:	e8 22 e6 ff ff       	call   777a1650 <_WSPCloseSocket@8>
777a302e:	5e                   	pop    %esi
777a302f:	5f                   	pop    %edi
777a3030:	e9 07 ff ff ff       	jmp    777a2f3c <_WSPAccept@24+0x37c>
777a3035:	8d 74 26 00          	lea    0x0(%esi),%esi
777a3039:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a3040 <_DllMain@12>:

BOOL
STDCALL
DllMain(HANDLE hInstDll,
        ULONG dwReason,
        PVOID Reserved)
{
777a3040:	55                   	push   %ebp
777a3041:	89 e5                	mov    %esp,%ebp
777a3043:	50                   	push   %eax
777a3044:	50                   	push   %eax
  
    switch (dwReason) {
777a3045:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
777a3049:	74 09                	je     777a3054 <_DllMain@12+0x14>
    case DLL_PROCESS_ATTACH:

		AFD_DbgPrint(MAX_TRACE, ("Loading MSAFD.DLL \n"));

        /* Don't need thread attach notifications
           so disable them to improve performance */
        DisableThreadLibraryCalls(hInstDll);

		/* List of DLL Helpers */
        InitializeListHead(&SockHelpersListHead);

		/* Heap to use when allocating */
        GlobalHeap = GetProcessHeap();

		/* Allocate Heap for 1024 Sockets, can be expanded later */
		Sockets = HeapAlloc(GetProcessHeap(), 0, sizeof(PSOCKET_INFORMATION) * 1024);

		AFD_DbgPrint(MAX_TRACE, ("MSAFD.DLL has been loaded\n"));

        break;

    case DLL_THREAD_ATTACH:
        break;

    case DLL_THREAD_DETACH:
        break;

    case DLL_PROCESS_DETACH:
        break;
    }

    AFD_DbgPrint(MAX_TRACE, ("DllMain of msafd.dll (leaving)\n"));

    return TRUE;
}
777a304b:	b8 01 00 00 00       	mov    $0x1,%eax
777a3050:	c9                   	leave  
777a3051:	c2 0c 00             	ret    $0xc
777a3054:	83 ec 0c             	sub    $0xc,%esp
777a3057:	8b 45 08             	mov    0x8(%ebp),%eax
777a305a:	50                   	push   %eax
777a305b:	e8 60 15 00 00       	call   777a45c0 <_DisableThreadLibraryCalls@4>

static __inline VOID
InitializeListHead(
  IN PLIST_ENTRY  ListHead)
{
777a3060:	83 c4 0c             	add    $0xc,%esp
  ListHead->Flink = ListHead->Blink = ListHead;
777a3063:	c7 05 04 60 7a 77 00 	movl   $0x777a6000,0x777a6004
777a306a:	60 7a 77 
777a306d:	c7 05 00 60 7a 77 00 	movl   $0x777a6000,0x777a6000
777a3074:	60 7a 77 
777a3077:	e8 34 15 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a307c:	a3 30 60 7a 77       	mov    %eax,0x777a6030
777a3081:	50                   	push   %eax
777a3082:	68 00 10 00 00       	push   $0x1000
777a3087:	6a 00                	push   $0x0
777a3089:	50                   	push   %eax
777a308a:	e8 21 15 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a308f:	89 04 24             	mov    %eax,(%esp)
777a3092:	e8 b9 14 00 00       	call   777a4550 <_HeapAlloc@12>
777a3097:	a3 08 60 7a 77       	mov    %eax,0x777a6008
777a309c:	58                   	pop    %eax
777a309d:	b8 01 00 00 00       	mov    $0x1,%eax
777a30a2:	c9                   	leave  
777a30a3:	c2 0c 00             	ret    $0xc
777a30a6:	90                   	nop    
777a30a7:	90                   	nop    
777a30a8:	90                   	nop    
777a30a9:	90                   	nop    
777a30aa:	90                   	nop    
777a30ab:	90                   	nop    
777a30ac:	90                   	nop    
777a30ad:	90                   	nop    
777a30ae:	90                   	nop    
777a30af:	90                   	nop    

777a30b0 <_WSPEventSelect@16>:
777a30b0:	55                   	push   %ebp
777a30b1:	89 e5                	mov    %esp,%ebp
777a30b3:	57                   	push   %edi
777a30b4:	56                   	push   %esi
777a30b5:	53                   	push   %ebx
777a30b6:	83 ec 28             	sub    $0x28,%esp
777a30b9:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
777a30bc:	8b 7d 08             	mov    0x8(%ebp),%edi
777a30bf:	8b 75 10             	mov    0x10(%ebp),%esi
777a30c2:	6a 00                	push   $0x0
777a30c4:	6a 01                	push   $0x1
777a30c6:	6a 00                	push   $0x0
777a30c8:	68 00 00 00 c0       	push   $0xc0000000
777a30cd:	50                   	push   %eax
777a30ce:	e8 4d 13 00 00       	call   777a4420 <_NtCreateEvent@20>
777a30d3:	83 ca ff             	or     $0xffffffff,%edx
777a30d6:	83 c4 0c             	add    $0xc,%esp
777a30d9:	85 c0                	test   %eax,%eax
777a30db:	0f 88 11 01 00 00    	js     777a31f2 <_WSPEventSelect@16+0x142>
777a30e1:	83 ec 0c             	sub    $0xc,%esp
777a30e4:	57                   	push   %edi
777a30e5:	e8 d6 df ff ff       	call   777a10c0 <_GetSocketStructure>
777a30ea:	89 c3                	mov    %eax,%ebx
777a30ec:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
777a30ef:	6a 00                	push   $0x0
777a30f1:	c7 45 e8 01 00 00 00 	movl   $0x1,0xffffffe8(%ebp)
777a30f8:	50                   	push   %eax
777a30f9:	6a 02                	push   $0x2
777a30fb:	53                   	push   %ebx
777a30fc:	e8 af f2 ff ff       	call   777a23b0 <_SetSocketInformation>
777a3101:	8b 83 90 00 00 00    	mov    0x90(%ebx),%eax
777a3107:	83 c4 20             	add    $0x20,%esp
777a310a:	80 4b 34 40          	orb    $0x40,0x34(%ebx)
777a310e:	85 c0                	test   %eax,%eax
777a3110:	0f 85 ea 00 00 00    	jne    777a3200 <_WSPEventSelect@16+0x150>
777a3116:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3119:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a311c:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
777a311f:	f7 c6 01 00 00 00    	test   $0x1,%esi
777a3125:	0f 84 06 01 00 00    	je     777a3231 <_WSPEventSelect@16+0x181>
777a312b:	c7 45 e4 01 00 00 00 	movl   $0x1,0xffffffe4(%ebp)
777a3132:	f7 c6 02 00 00 00    	test   $0x2,%esi
777a3138:	74 09                	je     777a3143 <_WSPEventSelect@16+0x93>
777a313a:	8b 48 04             	mov    0x4(%eax),%ecx
777a313d:	83 c9 04             	or     $0x4,%ecx
777a3140:	89 48 04             	mov    %ecx,0x4(%eax)
777a3143:	f7 c6 04 00 00 00    	test   $0x4,%esi
777a3149:	74 09                	je     777a3154 <_WSPEventSelect@16+0xa4>
777a314b:	8b 50 04             	mov    0x4(%eax),%edx
777a314e:	83 ca 02             	or     $0x2,%edx
777a3151:	89 50 04             	mov    %edx,0x4(%eax)
777a3154:	f7 c6 08 00 00 00    	test   $0x8,%esi
777a315a:	74 09                	je     777a3165 <_WSPEventSelect@16+0xb5>
777a315c:	8b 48 04             	mov    0x4(%eax),%ecx
777a315f:	80 c9 80             	or     $0x80,%cl
777a3162:	89 48 04             	mov    %ecx,0x4(%eax)
777a3165:	f7 c6 10 00 00 00    	test   $0x10,%esi
777a316b:	74 0c                	je     777a3179 <_WSPEventSelect@16+0xc9>
777a316d:	8b 50 04             	mov    0x4(%eax),%edx
777a3170:	81 ca 40 01 00 00    	or     $0x140,%edx
777a3176:	89 50 04             	mov    %edx,0x4(%eax)
777a3179:	f7 c6 20 00 00 00    	test   $0x20,%esi
777a317f:	74 09                	je     777a318a <_WSPEventSelect@16+0xda>
777a3181:	8b 48 04             	mov    0x4(%eax),%ecx
777a3184:	83 c9 18             	or     $0x18,%ecx
777a3187:	89 48 04             	mov    %ecx,0x4(%eax)
777a318a:	f7 c6 40 00 00 00    	test   $0x40,%esi
777a3190:	74 09                	je     777a319b <_WSPEventSelect@16+0xeb>
777a3192:	8b 50 04             	mov    0x4(%eax),%edx
777a3195:	80 ce 02             	or     $0x2,%dh
777a3198:	89 50 04             	mov    %edx,0x4(%eax)
777a319b:	f7 c6 80 00 00 00    	test   $0x80,%esi
777a31a1:	74 09                	je     777a31ac <_WSPEventSelect@16+0xfc>
777a31a3:	8b 48 04             	mov    0x4(%eax),%ecx
777a31a6:	80 cd 04             	or     $0x4,%ch
777a31a9:	89 48 04             	mov    %ecx,0x4(%eax)
777a31ac:	52                   	push   %edx
777a31ad:	52                   	push   %edx
777a31ae:	6a 00                	push   $0x0
777a31b0:	6a 00                	push   $0x0
777a31b2:	6a 08                	push   $0x8
777a31b4:	50                   	push   %eax
777a31b5:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a31b8:	68 87 20 01 00       	push   $0x12087
777a31bd:	50                   	push   %eax
777a31be:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a31c1:	6a 00                	push   $0x0
777a31c3:	6a 00                	push   $0x0
777a31c5:	50                   	push   %eax
777a31c6:	57                   	push   %edi
777a31c7:	e8 64 12 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a31cc:	5a                   	pop    %edx
777a31cd:	3d 03 01 00 00       	cmp    $0x103,%eax
777a31d2:	59                   	pop    %ecx
777a31d3:	74 6b                	je     777a3240 <_WSPEventSelect@16+0x190>
777a31d5:	83 ec 0c             	sub    $0xc,%esp
777a31d8:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a31db:	50                   	push   %eax
777a31dc:	e8 5f 12 00 00       	call   777a4440 <_NtClose@4>
777a31e1:	8b 45 0c             	mov    0xc(%ebp),%eax
777a31e4:	89 b3 94 00 00 00    	mov    %esi,0x94(%ebx)
777a31ea:	89 83 90 00 00 00    	mov    %eax,0x90(%ebx)
777a31f0:	31 d2                	xor    %edx,%edx
777a31f2:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a31f5:	89 d0                	mov    %edx,%eax
777a31f7:	5b                   	pop    %ebx
777a31f8:	5e                   	pop    %esi
777a31f9:	5f                   	pop    %edi
777a31fa:	5d                   	pop    %ebp
777a31fb:	c2 10 00             	ret    $0x10
777a31fe:	89 f6                	mov    %esi,%esi
777a3200:	8b 43 60             	mov    0x60(%ebx),%eax
777a3203:	c7 43 58 00 00 00 00 	movl   $0x0,0x58(%ebx)
777a320a:	40                   	inc    %eax
777a320b:	c7 43 64 00 00 00 00 	movl   $0x0,0x64(%ebx)
777a3212:	89 43 60             	mov    %eax,0x60(%ebx)
777a3215:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3218:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a321b:	c7 43 68 00 00 00 00 	movl   $0x0,0x68(%ebx)
777a3222:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
777a3225:	f7 c6 01 00 00 00    	test   $0x1,%esi
777a322b:	0f 85 fa fe ff ff    	jne    777a312b <_WSPEventSelect@16+0x7b>
777a3231:	c7 45 e4 00 00 00 00 	movl   $0x0,0xffffffe4(%ebp)
777a3238:	e9 f5 fe ff ff       	jmp    777a3132 <_WSPEventSelect@16+0x82>
777a323d:	8d 76 00             	lea    0x0(%esi),%esi
777a3240:	8b 7d ec             	mov    0xffffffec(%ebp),%edi
777a3243:	50                   	push   %eax
777a3244:	50                   	push   %eax
777a3245:	6a ff                	push   $0xffffffff
777a3247:	57                   	push   %edi
777a3248:	e8 f3 12 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a324d:	5a                   	pop    %edx
777a324e:	59                   	pop    %ecx
777a324f:	eb 84                	jmp    777a31d5 <_WSPEventSelect@16+0x125>
777a3251:	eb 0d                	jmp    777a3260 <_WSPEnumNetworkEvents@16>
777a3253:	90                   	nop    
777a3254:	90                   	nop    
777a3255:	90                   	nop    
777a3256:	90                   	nop    
777a3257:	90                   	nop    
777a3258:	90                   	nop    
777a3259:	90                   	nop    
777a325a:	90                   	nop    
777a325b:	90                   	nop    
777a325c:	90                   	nop    
777a325d:	90                   	nop    
777a325e:	90                   	nop    
777a325f:	90                   	nop    

777a3260 <_WSPEnumNetworkEvents@16>:
777a3260:	55                   	push   %ebp
777a3261:	89 e5                	mov    %esp,%ebp
777a3263:	57                   	push   %edi
777a3264:	56                   	push   %esi
777a3265:	53                   	push   %ebx
777a3266:	83 ec 58             	sub    $0x58,%esp
777a3269:	8d 45 b4             	lea    0xffffffb4(%ebp),%eax
777a326c:	8b 7d 08             	mov    0x8(%ebp),%edi
777a326f:	8b 75 10             	mov    0x10(%ebp),%esi
777a3272:	6a 00                	push   $0x0
777a3274:	6a 01                	push   $0x1
777a3276:	6a 00                	push   $0x0
777a3278:	68 00 00 00 c0       	push   $0xc0000000
777a327d:	50                   	push   %eax
777a327e:	e8 9d 11 00 00       	call   777a4420 <_NtCreateEvent@20>
777a3283:	89 c3                	mov    %eax,%ebx
777a3285:	83 c4 0c             	add    $0xc,%esp
777a3288:	83 c8 ff             	or     $0xffffffff,%eax
777a328b:	85 db                	test   %ebx,%ebx
777a328d:	0f 88 c4 00 00 00    	js     777a3357 <_WSPEnumNetworkEvents@16+0xf7>
777a3293:	83 ec 0c             	sub    $0xc,%esp
777a3296:	57                   	push   %edi
777a3297:	e8 24 de ff ff       	call   777a10c0 <_GetSocketStructure>
777a329c:	8b 45 0c             	mov    0xc(%ebp),%eax
777a329f:	5b                   	pop    %ebx
777a32a0:	89 45 b8             	mov    %eax,0xffffffb8(%ebp)
777a32a3:	58                   	pop    %eax
777a32a4:	8d 45 b8             	lea    0xffffffb8(%ebp),%eax
777a32a7:	6a 00                	push   $0x0
777a32a9:	8b 4d b4             	mov    0xffffffb4(%ebp),%ecx
777a32ac:	6a 00                	push   $0x0
777a32ae:	6a 30                	push   $0x30
777a32b0:	50                   	push   %eax
777a32b1:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
777a32b4:	68 8b 20 01 00       	push   $0x1208b
777a32b9:	50                   	push   %eax
777a32ba:	6a 00                	push   $0x0
777a32bc:	6a 00                	push   $0x0
777a32be:	51                   	push   %ecx
777a32bf:	57                   	push   %edi
777a32c0:	e8 6b 11 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a32c5:	89 c3                	mov    %eax,%ebx
777a32c7:	58                   	pop    %eax
777a32c8:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a32ce:	5a                   	pop    %edx
777a32cf:	0f 84 93 00 00 00    	je     777a3368 <_WSPEnumNetworkEvents@16+0x108>
777a32d5:	83 ec 0c             	sub    $0xc,%esp
777a32d8:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a32db:	50                   	push   %eax
777a32dc:	e8 5f 11 00 00       	call   777a4440 <_NtClose@4>
777a32e1:	8b 55 bc             	mov    0xffffffbc(%ebp),%edx
777a32e4:	83 c4 0c             	add    $0xc,%esp
777a32e7:	f6 c2 01             	test   $0x1,%dl
777a32ea:	0f 95 c0             	setne  %al
777a32ed:	25 ff 00 00 00       	and    $0xff,%eax
777a32f2:	89 06                	mov    %eax,(%esi)
777a32f4:	f6 c2 04             	test   $0x4,%dl
777a32f7:	75 68                	jne    777a3361 <_WSPEnumNetworkEvents@16+0x101>
777a32f9:	f6 c2 02             	test   $0x2,%dl
777a32fc:	74 07                	je     777a3305 <_WSPEnumNetworkEvents@16+0xa5>
777a32fe:	8b 3e                	mov    (%esi),%edi
777a3300:	83 cf 04             	or     $0x4,%edi
777a3303:	89 3e                	mov    %edi,(%esi)
777a3305:	f7 c2 80 00 00 00    	test   $0x80,%edx
777a330b:	74 07                	je     777a3314 <_WSPEnumNetworkEvents@16+0xb4>
777a330d:	8b 0e                	mov    (%esi),%ecx
777a330f:	83 c9 08             	or     $0x8,%ecx
777a3312:	89 0e                	mov    %ecx,(%esi)
777a3314:	f7 c2 40 01 00 00    	test   $0x140,%edx
777a331a:	74 07                	je     777a3323 <_WSPEnumNetworkEvents@16+0xc3>
777a331c:	8b 06                	mov    (%esi),%eax
777a331e:	83 c8 10             	or     $0x10,%eax
777a3321:	89 06                	mov    %eax,(%esi)
777a3323:	f6 c2 18             	test   $0x18,%dl
777a3326:	74 07                	je     777a332f <_WSPEnumNetworkEvents@16+0xcf>
777a3328:	8b 06                	mov    (%esi),%eax
777a332a:	83 c8 20             	or     $0x20,%eax
777a332d:	89 06                	mov    %eax,(%esi)
777a332f:	f6 c6 02             	test   $0x2,%dh
777a3332:	74 07                	je     777a333b <_WSPEnumNetworkEvents@16+0xdb>
777a3334:	8b 06                	mov    (%esi),%eax
777a3336:	83 c8 40             	or     $0x40,%eax
777a3339:	89 06                	mov    %eax,(%esi)
777a333b:	80 e6 04             	and    $0x4,%dh
777a333e:	74 06                	je     777a3346 <_WSPEnumNetworkEvents@16+0xe6>
777a3340:	8b 06                	mov    (%esi),%eax
777a3342:	0c 80                	or     $0x80,%al
777a3344:	89 06                	mov    %eax,(%esi)
777a3346:	89 d8                	mov    %ebx,%eax
777a3348:	8b 55 14             	mov    0x14(%ebp),%edx
777a334b:	c1 f8 1f             	sar    $0x1f,%eax
777a334e:	25 26 27 00 00       	and    $0x2726,%eax
777a3353:	89 02                	mov    %eax,(%edx)
777a3355:	31 c0                	xor    %eax,%eax
777a3357:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a335a:	5b                   	pop    %ebx
777a335b:	5e                   	pop    %esi
777a335c:	5f                   	pop    %edi
777a335d:	5d                   	pop    %ebp
777a335e:	c2 10 00             	ret    $0x10
777a3361:	83 c8 02             	or     $0x2,%eax
777a3364:	89 06                	mov    %eax,(%esi)
777a3366:	eb 91                	jmp    777a32f9 <_WSPEnumNetworkEvents@16+0x99>
777a3368:	66 31 db             	xor    %bx,%bx
777a336b:	8b 4d b4             	mov    0xffffffb4(%ebp),%ecx
777a336e:	57                   	push   %edi
777a336f:	57                   	push   %edi
777a3370:	6a ff                	push   $0xffffffff
777a3372:	51                   	push   %ecx
777a3373:	e8 c8 11 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a3378:	58                   	pop    %eax
777a3379:	5a                   	pop    %edx
777a337a:	e9 56 ff ff ff       	jmp    777a32d5 <_WSPEnumNetworkEvents@16+0x75>
777a337f:	90                   	nop    

777a3380 <_SockIsTripleInMapping>:
777a3380:	55                   	push   %ebp
777a3381:	31 d2                	xor    %edx,%edx
777a3383:	89 e5                	mov    %esp,%ebp
777a3385:	57                   	push   %edi
777a3386:	56                   	push   %esi
777a3387:	53                   	push   %ebx
777a3388:	8b 45 08             	mov    0x8(%ebp),%eax
777a338b:	8b 5d 0c             	mov    0xc(%ebp),%ebx
777a338e:	8b 75 10             	mov    0x10(%ebp),%esi
777a3391:	8b 7d 14             	mov    0x14(%ebp),%edi
777a3394:	8b 08                	mov    (%eax),%ecx
777a3396:	83 f9 00             	cmp    $0x0,%ecx
777a3399:	eb 0b                	jmp    777a33a6 <_SockIsTripleInMapping+0x26>
777a339b:	90                   	nop    
777a339c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a33a0:	42                   	inc    %edx
777a33a1:	83 c0 0c             	add    $0xc,%eax
777a33a4:	39 d1                	cmp    %edx,%ecx
777a33a6:	76 19                	jbe    777a33c1 <_SockIsTripleInMapping+0x41>
777a33a8:	39 58 08             	cmp    %ebx,0x8(%eax)
777a33ab:	75 f3                	jne    777a33a0 <_SockIsTripleInMapping+0x20>
777a33ad:	39 70 0c             	cmp    %esi,0xc(%eax)
777a33b0:	75 ee                	jne    777a33a0 <_SockIsTripleInMapping+0x20>
777a33b2:	39 78 10             	cmp    %edi,0x10(%eax)
777a33b5:	75 e9                	jne    777a33a0 <_SockIsTripleInMapping+0x20>
777a33b7:	b8 01 00 00 00       	mov    $0x1,%eax
777a33bc:	5b                   	pop    %ebx
777a33bd:	5e                   	pop    %esi
777a33be:	5f                   	pop    %edi
777a33bf:	5d                   	pop    %ebp
777a33c0:	c3                   	ret    
777a33c1:	31 c0                	xor    %eax,%eax
777a33c3:	5b                   	pop    %ebx
777a33c4:	5e                   	pop    %esi
777a33c5:	5f                   	pop    %edi
777a33c6:	5d                   	pop    %ebp
777a33c7:	c3                   	ret    
777a33c8:	90                   	nop    
777a33c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a33d0 <_SockLoadTransportList>:
777a33d0:	55                   	push   %ebp
777a33d1:	89 e5                	mov    %esp,%ebp
777a33d3:	56                   	push   %esi
777a33d4:	53                   	push   %ebx
777a33d5:	83 ec 1c             	sub    $0x1c,%esp
777a33d8:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777a33db:	8b 75 08             	mov    0x8(%ebp),%esi
777a33de:	50                   	push   %eax
777a33df:	68 19 00 02 00       	push   $0x20019
777a33e4:	6a 00                	push   $0x0
777a33e6:	68 90 50 7a 77       	push   $0x777a5090
777a33eb:	68 02 00 00 80       	push   $0x80000002
777a33f0:	e8 0b 12 00 00       	call   777a4600 <_RegOpenKeyExW@20>
777a33f5:	ba 26 27 00 00       	mov    $0x2726,%edx
777a33fa:	83 c4 0c             	add    $0xc,%esp
777a33fd:	85 c0                	test   %eax,%eax
777a33ff:	75 6d                	jne    777a346e <_SockLoadTransportList+0x9e>
777a3401:	8d 5d f0             	lea    0xfffffff0(%ebp),%ebx
777a3404:	50                   	push   %eax
777a3405:	50                   	push   %eax
777a3406:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777a3409:	53                   	push   %ebx
777a340a:	6a 00                	push   $0x0
777a340c:	6a 00                	push   $0x0
777a340e:	6a 00                	push   $0x0
777a3410:	68 fa 50 7a 77       	push   $0x777a50fa
777a3415:	50                   	push   %eax
777a3416:	e8 f5 11 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a341b:	5a                   	pop    %edx
777a341c:	85 c0                	test   %eax,%eax
777a341e:	59                   	pop    %ecx
777a341f:	ba 26 27 00 00       	mov    $0x2726,%edx
777a3424:	75 48                	jne    777a346e <_SockLoadTransportList+0x9e>
777a3426:	50                   	push   %eax
777a3427:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a342a:	50                   	push   %eax
777a342b:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3430:	6a 00                	push   $0x0
777a3432:	50                   	push   %eax
777a3433:	e8 18 11 00 00       	call   777a4550 <_HeapAlloc@12>
777a3438:	ba 26 27 00 00       	mov    $0x2726,%edx
777a343d:	85 c0                	test   %eax,%eax
777a343f:	89 06                	mov    %eax,(%esi)
777a3441:	59                   	pop    %ecx
777a3442:	74 2a                	je     777a346e <_SockLoadTransportList+0x9e>
777a3444:	52                   	push   %edx
777a3445:	52                   	push   %edx
777a3446:	53                   	push   %ebx
777a3447:	8b 5d f4             	mov    0xfffffff4(%ebp),%ebx
777a344a:	50                   	push   %eax
777a344b:	6a 00                	push   $0x0
777a344d:	6a 00                	push   $0x0
777a344f:	68 fa 50 7a 77       	push   $0x777a50fa
777a3454:	53                   	push   %ebx
777a3455:	e8 b6 11 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a345a:	5a                   	pop    %edx
777a345b:	85 c0                	test   %eax,%eax
777a345d:	59                   	pop    %ecx
777a345e:	75 17                	jne    777a3477 <_SockLoadTransportList+0xa7>
777a3460:	83 ec 0c             	sub    $0xc,%esp
777a3463:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
777a3466:	50                   	push   %eax
777a3467:	e8 b4 11 00 00       	call   777a4620 <_RegCloseKey@4>
777a346c:	31 d2                	xor    %edx,%edx
777a346e:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777a3471:	89 d0                	mov    %edx,%eax
777a3473:	5b                   	pop    %ebx
777a3474:	5e                   	pop    %esi
777a3475:	5d                   	pop    %ebp
777a3476:	c3                   	ret    
777a3477:	53                   	push   %ebx
777a3478:	8b 0e                	mov    (%esi),%ecx
777a347a:	8b 15 30 60 7a 77    	mov    0x777a6030,%edx
777a3480:	51                   	push   %ecx
777a3481:	6a 00                	push   $0x0
777a3483:	52                   	push   %edx
777a3484:	e8 e7 10 00 00       	call   777a4570 <_HeapFree@12>
777a3489:	ba 26 27 00 00       	mov    $0x2726,%edx
777a348e:	eb de                	jmp    777a346e <_SockLoadTransportList+0x9e>

777a3490 <_SockLoadTransportMapping>:
777a3490:	55                   	push   %ebp
777a3491:	89 e5                	mov    %esp,%ebp
777a3493:	57                   	push   %edi
777a3494:	56                   	push   %esi
777a3495:	53                   	push   %ebx
777a3496:	83 ec 18             	sub    $0x18,%esp
777a3499:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a349c:	8b 7d 0c             	mov    0xc(%ebp),%edi
777a349f:	53                   	push   %ebx
777a34a0:	e8 8b 10 00 00       	call   777a4530 <_wcslen>
777a34a5:	83 c4 0c             	add    $0xc,%esp
777a34a8:	8d 44 00 6c          	lea    0x6c(%eax,%eax,1),%eax
777a34ac:	50                   	push   %eax
777a34ad:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a34b2:	6a 00                	push   $0x0
777a34b4:	50                   	push   %eax
777a34b5:	e8 96 10 00 00       	call   777a4550 <_HeapAlloc@12>
777a34ba:	ba 26 27 00 00       	mov    $0x2726,%edx
777a34bf:	89 c6                	mov    %eax,%esi
777a34c1:	58                   	pop    %eax
777a34c2:	85 f6                	test   %esi,%esi
777a34c4:	0f 84 c7 00 00 00    	je     777a3591 <_SockLoadTransportMapping+0x101>
777a34ca:	51                   	push   %ecx
777a34cb:	51                   	push   %ecx
777a34cc:	68 10 51 7a 77       	push   $0x777a5110
777a34d1:	56                   	push   %esi
777a34d2:	e8 49 10 00 00       	call   777a4520 <_wcscpy>
777a34d7:	58                   	pop    %eax
777a34d8:	5a                   	pop    %edx
777a34d9:	53                   	push   %ebx
777a34da:	56                   	push   %esi
777a34db:	e8 30 10 00 00       	call   777a4510 <_wcscat>
777a34e0:	59                   	pop    %ecx
777a34e1:	5b                   	pop    %ebx
777a34e2:	68 58 51 7a 77       	push   $0x777a5158
777a34e7:	56                   	push   %esi
777a34e8:	e8 23 10 00 00       	call   777a4510 <_wcscat>
777a34ed:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777a34f0:	89 04 24             	mov    %eax,(%esp)
777a34f3:	68 19 00 02 00       	push   $0x20019
777a34f8:	6a 00                	push   $0x0
777a34fa:	56                   	push   %esi
777a34fb:	68 02 00 00 80       	push   $0x80000002
777a3500:	e8 fb 10 00 00       	call   777a4600 <_RegOpenKeyExW@20>
777a3505:	89 c3                	mov    %eax,%ebx
777a3507:	58                   	pop    %eax
777a3508:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a350d:	5a                   	pop    %edx
777a350e:	56                   	push   %esi
777a350f:	6a 00                	push   $0x0
777a3511:	50                   	push   %eax
777a3512:	e8 59 10 00 00       	call   777a4570 <_HeapFree@12>
777a3517:	ba 26 27 00 00       	mov    $0x2726,%edx
777a351c:	5e                   	pop    %esi
777a351d:	85 db                	test   %ebx,%ebx
777a351f:	75 70                	jne    777a3591 <_SockLoadTransportMapping+0x101>
777a3521:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
777a3524:	8d 75 ec             	lea    0xffffffec(%ebp),%esi
777a3527:	53                   	push   %ebx
777a3528:	53                   	push   %ebx
777a3529:	56                   	push   %esi
777a352a:	6a 00                	push   $0x0
777a352c:	6a 00                	push   $0x0
777a352e:	6a 00                	push   $0x0
777a3530:	68 80 51 7a 77       	push   $0x777a5180
777a3535:	51                   	push   %ecx
777a3536:	e8 d5 10 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a353b:	89 c3                	mov    %eax,%ebx
777a353d:	58                   	pop    %eax
777a353e:	85 db                	test   %ebx,%ebx
777a3540:	5a                   	pop    %edx
777a3541:	ba 26 27 00 00       	mov    $0x2726,%edx
777a3546:	75 49                	jne    777a3591 <_SockLoadTransportMapping+0x101>
777a3548:	8b 1d 30 60 7a 77    	mov    0x777a6030,%ebx
777a354e:	50                   	push   %eax
777a354f:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a3552:	50                   	push   %eax
777a3553:	6a 00                	push   $0x0
777a3555:	53                   	push   %ebx
777a3556:	e8 f5 0f 00 00       	call   777a4550 <_HeapAlloc@12>
777a355b:	ba 26 27 00 00       	mov    $0x2726,%edx
777a3560:	85 c0                	test   %eax,%eax
777a3562:	89 07                	mov    %eax,(%edi)
777a3564:	59                   	pop    %ecx
777a3565:	74 2a                	je     777a3591 <_SockLoadTransportMapping+0x101>
777a3567:	8b 5d f0             	mov    0xfffffff0(%ebp),%ebx
777a356a:	52                   	push   %edx
777a356b:	52                   	push   %edx
777a356c:	56                   	push   %esi
777a356d:	50                   	push   %eax
777a356e:	6a 00                	push   $0x0
777a3570:	6a 00                	push   $0x0
777a3572:	68 80 51 7a 77       	push   $0x777a5180
777a3577:	53                   	push   %ebx
777a3578:	e8 93 10 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a357d:	5a                   	pop    %edx
777a357e:	85 c0                	test   %eax,%eax
777a3580:	59                   	pop    %ecx
777a3581:	75 18                	jne    777a359b <_SockLoadTransportMapping+0x10b>
777a3583:	83 ec 0c             	sub    $0xc,%esp
777a3586:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a3589:	50                   	push   %eax
777a358a:	e8 91 10 00 00       	call   777a4620 <_RegCloseKey@4>
777a358f:	31 d2                	xor    %edx,%edx
777a3591:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3594:	89 d0                	mov    %edx,%eax
777a3596:	5b                   	pop    %ebx
777a3597:	5e                   	pop    %esi
777a3598:	5f                   	pop    %edi
777a3599:	5d                   	pop    %ebp
777a359a:	c3                   	ret    
777a359b:	50                   	push   %eax
777a359c:	8b 07                	mov    (%edi),%eax
777a359e:	50                   	push   %eax
777a359f:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a35a4:	6a 00                	push   $0x0
777a35a6:	50                   	push   %eax
777a35a7:	e8 c4 0f 00 00       	call   777a4570 <_HeapFree@12>
777a35ac:	ba 26 27 00 00       	mov    $0x2726,%edx
777a35b1:	eb de                	jmp    777a3591 <_SockLoadTransportMapping+0x101>
777a35b3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a35b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a35c0 <_SockLoadHelperDll>:
777a35c0:	55                   	push   %ebp
777a35c1:	89 e5                	mov    %esp,%ebp
777a35c3:	57                   	push   %edi
777a35c4:	56                   	push   %esi
777a35c5:	53                   	push   %ebx
777a35c6:	83 ec 18             	sub    $0x18,%esp
777a35c9:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a35cc:	51                   	push   %ecx
777a35cd:	e8 5e 0f 00 00       	call   777a4530 <_wcslen>
777a35d2:	83 c4 0c             	add    $0xc,%esp
777a35d5:	8d 44 00 5e          	lea    0x5e(%eax,%eax,1),%eax
777a35d9:	50                   	push   %eax
777a35da:	6a 00                	push   $0x0
777a35dc:	8b 15 30 60 7a 77    	mov    0x777a6030,%edx
777a35e2:	52                   	push   %edx
777a35e3:	e8 68 0f 00 00       	call   777a4550 <_HeapAlloc@12>
777a35e8:	89 c3                	mov    %eax,%ebx
777a35ea:	58                   	pop    %eax
777a35eb:	85 db                	test   %ebx,%ebx
777a35ed:	b8 26 27 00 00       	mov    $0x2726,%eax
777a35f2:	0f 84 cf 02 00 00    	je     777a38c7 <_SockLoadHelperDll+0x307>
777a35f8:	83 ec 0c             	sub    $0xc,%esp
777a35fb:	8b 45 08             	mov    0x8(%ebp),%eax
777a35fe:	50                   	push   %eax
777a35ff:	e8 2c 0f 00 00       	call   777a4530 <_wcslen>
777a3604:	83 c4 0c             	add    $0xc,%esp
777a3607:	8d 44 00 6c          	lea    0x6c(%eax,%eax,1),%eax
777a360b:	50                   	push   %eax
777a360c:	6a 00                	push   $0x0
777a360e:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3613:	50                   	push   %eax
777a3614:	e8 37 0f 00 00       	call   777a4550 <_HeapAlloc@12>
777a3619:	89 c7                	mov    %eax,%edi
777a361b:	58                   	pop    %eax
777a361c:	85 ff                	test   %edi,%edi
777a361e:	0f 84 ac 02 00 00    	je     777a38d0 <_SockLoadHelperDll+0x310>
777a3624:	50                   	push   %eax
777a3625:	50                   	push   %eax
777a3626:	68 10 51 7a 77       	push   $0x777a5110
777a362b:	57                   	push   %edi
777a362c:	e8 ef 0e 00 00       	call   777a4520 <_wcscpy>
777a3631:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a3634:	5e                   	pop    %esi
777a3635:	58                   	pop    %eax
777a3636:	51                   	push   %ecx
777a3637:	57                   	push   %edi
777a3638:	e8 d3 0e 00 00       	call   777a4510 <_wcscat>
777a363d:	58                   	pop    %eax
777a363e:	5a                   	pop    %edx
777a363f:	68 58 51 7a 77       	push   $0x777a5158
777a3644:	57                   	push   %edi
777a3645:	e8 c6 0e 00 00       	call   777a4510 <_wcscat>
777a364a:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777a364d:	89 04 24             	mov    %eax,(%esp)
777a3650:	68 19 00 02 00       	push   $0x20019
777a3655:	6a 00                	push   $0x0
777a3657:	57                   	push   %edi
777a3658:	68 02 00 00 80       	push   $0x80000002
777a365d:	e8 9e 0f 00 00       	call   777a4600 <_RegOpenKeyExW@20>
777a3662:	89 c6                	mov    %eax,%esi
777a3664:	59                   	pop    %ecx
777a3665:	58                   	pop    %eax
777a3666:	57                   	push   %edi
777a3667:	6a 00                	push   $0x0
777a3669:	8b 15 30 60 7a 77    	mov    0x777a6030,%edx
777a366f:	52                   	push   %edx
777a3670:	e8 fb 0e 00 00       	call   777a4570 <_HeapFree@12>
777a3675:	85 f6                	test   %esi,%esi
777a3677:	58                   	pop    %eax
777a3678:	0f 85 52 02 00 00    	jne    777a38d0 <_SockLoadHelperDll+0x310>
777a367e:	c7 45 ec 04 00 00 00 	movl   $0x4,0xffffffec(%ebp)
777a3685:	c7 43 10 10 00 00 00 	movl   $0x10,0x10(%ebx)
777a368c:	8d 75 ec             	lea    0xffffffec(%ebp),%esi
777a368f:	50                   	push   %eax
777a3690:	50                   	push   %eax
777a3691:	8d 43 10             	lea    0x10(%ebx),%eax
777a3694:	56                   	push   %esi
777a3695:	50                   	push   %eax
777a3696:	6a 00                	push   $0x0
777a3698:	6a 00                	push   $0x0
777a369a:	68 90 51 7a 77       	push   $0x777a5190
777a369f:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a36a2:	50                   	push   %eax
777a36a3:	e8 68 0f 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a36a8:	8d 43 14             	lea    0x14(%ebx),%eax
777a36ab:	c7 45 ec 04 00 00 00 	movl   $0x4,0xffffffec(%ebp)
777a36b2:	c7 43 14 10 00 00 00 	movl   $0x10,0x14(%ebx)
777a36b9:	56                   	push   %esi
777a36ba:	50                   	push   %eax
777a36bb:	6a 00                	push   $0x0
777a36bd:	6a 00                	push   $0x0
777a36bf:	68 b4 51 7a 77       	push   $0x777a51b4
777a36c4:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a36c7:	50                   	push   %eax
777a36c8:	e8 43 0f 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a36cd:	8b 43 10             	mov    0x10(%ebx),%eax
777a36d0:	c7 45 ec 04 00 00 00 	movl   $0x4,0xffffffec(%ebp)
777a36d7:	83 c0 06             	add    $0x6,%eax
777a36da:	c6 43 20 00          	movb   $0x0,0x20(%ebx)
777a36de:	89 43 18             	mov    %eax,0x18(%ebx)
777a36e1:	8b 43 14             	mov    0x14(%ebx),%eax
777a36e4:	83 c0 06             	add    $0x6,%eax
777a36e7:	89 43 1c             	mov    %eax,0x1c(%ebx)
777a36ea:	8d 43 20             	lea    0x20(%ebx),%eax
777a36ed:	56                   	push   %esi
777a36ee:	50                   	push   %eax
777a36ef:	6a 00                	push   $0x0
777a36f1:	6a 00                	push   $0x0
777a36f3:	68 d8 51 7a 77       	push   $0x777a51d8
777a36f8:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a36fb:	50                   	push   %eax
777a36fc:	e8 0f 0f 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a3701:	c7 04 24 00 02 00 00 	movl   $0x200,(%esp)
777a3708:	6a 00                	push   $0x0
777a370a:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a370f:	50                   	push   %eax
777a3710:	e8 3b 0e 00 00       	call   777a4550 <_HeapAlloc@12>
777a3715:	85 c0                	test   %eax,%eax
777a3717:	89 45 e8             	mov    %eax,0xffffffe8(%ebp)
777a371a:	5f                   	pop    %edi
777a371b:	0f 84 af 01 00 00    	je     777a38d0 <_SockLoadHelperDll+0x310>
777a3721:	51                   	push   %ecx
777a3722:	68 00 02 00 00       	push   $0x200
777a3727:	6a 00                	push   $0x0
777a3729:	8b 15 30 60 7a 77    	mov    0x777a6030,%edx
777a372f:	52                   	push   %edx
777a3730:	e8 1b 0e 00 00       	call   777a4550 <_HeapAlloc@12>
777a3735:	89 c7                	mov    %eax,%edi
777a3737:	58                   	pop    %eax
777a3738:	85 ff                	test   %edi,%edi
777a373a:	0f 84 e2 01 00 00    	je     777a3922 <_SockLoadHelperDll+0x362>
777a3740:	c7 45 ec 00 02 00 00 	movl   $0x200,0xffffffec(%ebp)
777a3747:	50                   	push   %eax
777a3748:	50                   	push   %eax
777a3749:	56                   	push   %esi
777a374a:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a374d:	50                   	push   %eax
777a374e:	6a 00                	push   $0x0
777a3750:	6a 00                	push   $0x0
777a3752:	68 02 52 7a 77       	push   $0x777a5202
777a3757:	8b 75 f0             	mov    0xfffffff0(%ebp),%esi
777a375a:	56                   	push   %esi
777a375b:	e8 b0 0e 00 00       	call   777a4610 <_RegQueryValueExW@24>
777a3760:	5a                   	pop    %edx
777a3761:	85 c0                	test   %eax,%eax
777a3763:	59                   	pop    %ecx
777a3764:	0f 85 83 01 00 00    	jne    777a38ed <_SockLoadHelperDll+0x32d>
777a376a:	50                   	push   %eax
777a376b:	68 00 01 00 00       	push   $0x100
777a3770:	57                   	push   %edi
777a3771:	8b 75 e8             	mov    0xffffffe8(%ebp),%esi
777a3774:	56                   	push   %esi
777a3775:	e8 56 0e 00 00       	call   777a45d0 <_ExpandEnvironmentStringsW@12>
777a377a:	51                   	push   %ecx
777a377b:	51                   	push   %ecx
777a377c:	57                   	push   %edi
777a377d:	e8 5e 0e 00 00       	call   777a45e0 <_LoadLibraryW@4>
777a3782:	89 43 0c             	mov    %eax,0xc(%ebx)
777a3785:	58                   	pop    %eax
777a3786:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a3789:	5a                   	pop    %edx
777a378a:	50                   	push   %eax
777a378b:	6a 00                	push   $0x0
777a378d:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3792:	50                   	push   %eax
777a3793:	e8 d8 0d 00 00       	call   777a4570 <_HeapFree@12>
777a3798:	57                   	push   %edi
777a3799:	6a 00                	push   $0x0
777a379b:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a37a0:	50                   	push   %eax
777a37a1:	e8 ca 0d 00 00       	call   777a4570 <_HeapFree@12>
777a37a6:	8b 73 0c             	mov    0xc(%ebx),%esi
777a37a9:	5f                   	pop    %edi
777a37aa:	85 f6                	test   %esi,%esi
777a37ac:	0f 84 1e 01 00 00    	je     777a38d0 <_SockLoadHelperDll+0x310>
777a37b2:	83 ec 0c             	sub    $0xc,%esp
777a37b5:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a37b8:	50                   	push   %eax
777a37b9:	e8 62 0e 00 00       	call   777a4620 <_RegCloseKey@4>
777a37be:	c7 04 24 1e 52 7a 77 	movl   $0x777a521e,(%esp)
777a37c5:	8b 43 0c             	mov    0xc(%ebx),%eax
777a37c8:	50                   	push   %eax
777a37c9:	e8 22 0e 00 00       	call   777a45f0 <_GetProcAddress@8>
777a37ce:	89 43 28             	mov    %eax,0x28(%ebx)
777a37d1:	68 2c 52 7a 77       	push   $0x777a522c
777a37d6:	8b 43 0c             	mov    0xc(%ebx),%eax
777a37d9:	50                   	push   %eax
777a37da:	e8 11 0e 00 00       	call   777a45f0 <_GetProcAddress@8>
777a37df:	89 43 2c             	mov    %eax,0x2c(%ebx)
777a37e2:	68 3b 52 7a 77       	push   $0x777a523b
777a37e7:	8b 43 0c             	mov    0xc(%ebx),%eax
777a37ea:	50                   	push   %eax
777a37eb:	e8 00 0e 00 00       	call   777a45f0 <_GetProcAddress@8>
777a37f0:	89 43 30             	mov    %eax,0x30(%ebx)
777a37f3:	68 47 52 7a 77       	push   $0x777a5247
777a37f8:	8b 43 0c             	mov    0xc(%ebx),%eax
777a37fb:	50                   	push   %eax
777a37fc:	e8 ef 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3801:	89 43 34             	mov    %eax,0x34(%ebx)
777a3804:	68 51 52 7a 77       	push   $0x777a5251
777a3809:	8b 43 0c             	mov    0xc(%ebx),%eax
777a380c:	50                   	push   %eax
777a380d:	e8 de 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3812:	89 43 38             	mov    %eax,0x38(%ebx)
777a3815:	68 69 52 7a 77       	push   $0x777a5269
777a381a:	8b 7b 0c             	mov    0xc(%ebx),%edi
777a381d:	57                   	push   %edi
777a381e:	e8 cd 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3823:	89 43 3c             	mov    %eax,0x3c(%ebx)
777a3826:	68 81 52 7a 77       	push   $0x777a5281
777a382b:	8b 73 0c             	mov    0xc(%ebx),%esi
777a382e:	56                   	push   %esi
777a382f:	e8 bc 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3834:	89 43 40             	mov    %eax,0x40(%ebx)
777a3837:	68 94 52 7a 77       	push   $0x777a5294
777a383c:	8b 4b 0c             	mov    0xc(%ebx),%ecx
777a383f:	51                   	push   %ecx
777a3840:	e8 ab 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3845:	89 43 44             	mov    %eax,0x44(%ebx)
777a3848:	68 ab 52 7a 77       	push   $0x777a52ab
777a384d:	8b 53 0c             	mov    0xc(%ebx),%edx
777a3850:	52                   	push   %edx
777a3851:	e8 9a 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3856:	89 43 48             	mov    %eax,0x48(%ebx)
777a3859:	68 c3 52 7a 77       	push   $0x777a52c3
777a385e:	8b 43 0c             	mov    0xc(%ebx),%eax
777a3861:	50                   	push   %eax
777a3862:	e8 89 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3867:	89 43 4c             	mov    %eax,0x4c(%ebx)
777a386a:	68 d6 52 7a 77       	push   $0x777a52d6
777a386f:	8b 43 0c             	mov    0xc(%ebx),%eax
777a3872:	50                   	push   %eax
777a3873:	e8 78 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3878:	89 43 50             	mov    %eax,0x50(%ebx)
777a387b:	68 e9 52 7a 77       	push   $0x777a52e9
777a3880:	8b 43 0c             	mov    0xc(%ebx),%eax
777a3883:	50                   	push   %eax
777a3884:	e8 67 0d 00 00       	call   777a45f0 <_GetProcAddress@8>
777a3889:	89 43 54             	mov    %eax,0x54(%ebx)
777a388c:	8b 45 0c             	mov    0xc(%ebp),%eax
777a388f:	89 43 24             	mov    %eax,0x24(%ebx)
777a3892:	8b 45 08             	mov    0x8(%ebp),%eax
777a3895:	50                   	push   %eax
777a3896:	8d 43 58             	lea    0x58(%ebx),%eax
777a3899:	50                   	push   %eax
777a389a:	e8 81 0c 00 00       	call   777a4520 <_wcscpy>
  IN PLIST_ENTRY  ListHead,
  IN PLIST_ENTRY  Entry)
{ 
  PLIST_ENTRY OldFlink;
  OldFlink = ListHead->Flink;
777a389f:	a1 00 60 7a 77       	mov    0x777a6000,%eax
  Entry->Flink = OldFlink;
  Entry->Blink = ListHead;
777a38a4:	c7 43 04 00 60 7a 77 	movl   $0x777a6000,0x4(%ebx)
777a38ab:	89 03                	mov    %eax,(%ebx)
777a38ad:	c7 43 08 01 00 00 00 	movl   $0x1,0x8(%ebx)
777a38b4:	89 58 04             	mov    %ebx,0x4(%eax)
777a38b7:	8b 45 10             	mov    0x10(%ebp),%eax
static __inline VOID
InsertHeadList(
  IN PLIST_ENTRY  ListHead,
  IN PLIST_ENTRY  Entry)
{ 
777a38ba:	83 c4 10             	add    $0x10,%esp
  PLIST_ENTRY OldFlink;
  OldFlink = ListHead->Flink;
  Entry->Flink = OldFlink;
  Entry->Blink = ListHead;
  OldFlink->Blink = Entry;
  ListHead->Flink = Entry;
777a38bd:	89 1d 00 60 7a 77    	mov    %ebx,0x777a6000
777a38c3:	89 18                	mov    %ebx,(%eax)
777a38c5:	31 c0                	xor    %eax,%eax
777a38c7:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a38ca:	5b                   	pop    %ebx
777a38cb:	5e                   	pop    %esi
777a38cc:	5f                   	pop    %edi
777a38cd:	5d                   	pop    %ebp
777a38ce:	c3                   	ret    
777a38cf:	90                   	nop    
777a38d0:	51                   	push   %ecx
777a38d1:	53                   	push   %ebx
777a38d2:	6a 00                	push   $0x0
777a38d4:	8b 15 30 60 7a 77    	mov    0x777a6030,%edx
777a38da:	52                   	push   %edx
777a38db:	e8 90 0c 00 00       	call   777a4570 <_HeapFree@12>
777a38e0:	b8 26 27 00 00       	mov    $0x2726,%eax
777a38e5:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a38e8:	5b                   	pop    %ebx
777a38e9:	5e                   	pop    %esi
777a38ea:	5f                   	pop    %edi
777a38eb:	5d                   	pop    %ebp
777a38ec:	c3                   	ret    
777a38ed:	50                   	push   %eax
777a38ee:	57                   	push   %edi
777a38ef:	6a 00                	push   $0x0
777a38f1:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a38f6:	50                   	push   %eax
777a38f7:	e8 74 0c 00 00       	call   777a4570 <_HeapFree@12>
777a38fc:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a38ff:	50                   	push   %eax
777a3900:	6a 00                	push   $0x0
777a3902:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3907:	50                   	push   %eax
777a3908:	e8 63 0c 00 00       	call   777a4570 <_HeapFree@12>
777a390d:	53                   	push   %ebx
777a390e:	6a 00                	push   $0x0
777a3910:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3915:	50                   	push   %eax
777a3916:	e8 55 0c 00 00       	call   777a4570 <_HeapFree@12>
777a391b:	b8 26 27 00 00       	mov    $0x2726,%eax
777a3920:	eb c3                	jmp    777a38e5 <_SockLoadHelperDll+0x325>
777a3922:	50                   	push   %eax
777a3923:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a3926:	50                   	push   %eax
777a3927:	6a 00                	push   $0x0
777a3929:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a392e:	50                   	push   %eax
777a392f:	e8 3c 0c 00 00       	call   777a4570 <_HeapFree@12>
777a3934:	eb d7                	jmp    777a390d <_SockLoadHelperDll+0x34d>
777a3936:	8d 76 00             	lea    0x0(%esi),%esi
777a3939:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

777a3940 <_SockGetTdiName>:
777a3940:	55                   	push   %ebp
777a3941:	89 e5                	mov    %esp,%ebp
777a3943:	57                   	push   %edi
777a3944:	56                   	push   %esi
777a3945:	53                   	push   %ebx
777a3946:	83 ec 0c             	sub    $0xc,%esp
777a3949:	8b 7d 10             	mov    0x10(%ebp),%edi
777a394c:	8b 1d 00 60 7a 77    	mov    0x777a6000,%ebx
777a3952:	eb 28                	jmp    777a397c <_SockGetTdiName+0x3c>
777a3954:	8b 37                	mov    (%edi),%esi
777a3956:	89 5d e8             	mov    %ebx,0xffffffe8(%ebp)
777a3959:	56                   	push   %esi
777a395a:	8b 45 0c             	mov    0xc(%ebp),%eax
777a395d:	8b 08                	mov    (%eax),%ecx
777a395f:	51                   	push   %ecx
777a3960:	8b 55 08             	mov    0x8(%ebp),%edx
777a3963:	8b 12                	mov    (%edx),%edx
777a3965:	52                   	push   %edx
777a3966:	8b 43 24             	mov    0x24(%ebx),%eax
777a3969:	50                   	push   %eax
777a396a:	e8 11 fa ff ff       	call   777a3380 <_SockIsTripleInMapping>
777a396f:	83 c4 10             	add    $0x10,%esp
777a3972:	85 c0                	test   %eax,%eax
777a3974:	0f 85 c6 00 00 00    	jne    777a3a40 <_SockGetTdiName+0x100>
777a397a:	8b 1b                	mov    (%ebx),%ebx
777a397c:	81 fb 00 60 7a 77    	cmp    $0x777a6000,%ebx
777a3982:	75 d0                	jne    777a3954 <_SockGetTdiName+0x14>
777a3984:	83 ec 0c             	sub    $0xc,%esp
777a3987:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777a398a:	50                   	push   %eax
777a398b:	e8 40 fa ff ff       	call   777a33d0 <_SockLoadTransportList>
777a3990:	83 c4 10             	add    $0x10,%esp
777a3993:	85 c0                	test   %eax,%eax
777a3995:	0f 85 85 00 00 00    	jne    777a3a20 <_SockGetTdiName+0xe0>
777a399b:	8b 75 f0             	mov    0xfffffff0(%ebp),%esi
777a399e:	66 83 3e 00          	cmpw   $0x0,(%esi)
777a39a2:	eb 60                	jmp    777a3a04 <_SockGetTdiName+0xc4>
777a39a4:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
777a39a7:	52                   	push   %edx
777a39a8:	52                   	push   %edx
777a39a9:	50                   	push   %eax
777a39aa:	56                   	push   %esi
777a39ab:	e8 e0 fa ff ff       	call   777a3490 <_SockLoadTransportMapping>
777a39b0:	83 c4 10             	add    $0x10,%esp
777a39b3:	89 c3                	mov    %eax,%ebx
777a39b5:	85 c0                	test   %eax,%eax
777a39b7:	0f 85 dc 00 00 00    	jne    777a3a99 <_SockGetTdiName+0x159>
777a39bd:	8b 07                	mov    (%edi),%eax
777a39bf:	50                   	push   %eax
777a39c0:	8b 55 0c             	mov    0xc(%ebp),%edx
777a39c3:	8b 02                	mov    (%edx),%eax
777a39c5:	50                   	push   %eax
777a39c6:	8b 45 08             	mov    0x8(%ebp),%eax
777a39c9:	8b 00                	mov    (%eax),%eax
777a39cb:	50                   	push   %eax
777a39cc:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a39cf:	50                   	push   %eax
777a39d0:	e8 ab f9 ff ff       	call   777a3380 <_SockIsTripleInMapping>
777a39d5:	83 c4 10             	add    $0x10,%esp
777a39d8:	85 c0                	test   %eax,%eax
777a39da:	75 4c                	jne    777a3a28 <_SockGetTdiName+0xe8>
777a39dc:	50                   	push   %eax
777a39dd:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a39e0:	50                   	push   %eax
777a39e1:	6a 00                	push   $0x0
777a39e3:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a39e8:	50                   	push   %eax
777a39e9:	e8 82 0b 00 00       	call   777a4570 <_HeapFree@12>
777a39ee:	50                   	push   %eax
777a39ef:	50                   	push   %eax
777a39f0:	56                   	push   %esi
777a39f1:	e8 3a 0b 00 00       	call   777a4530 <_wcslen>
777a39f6:	83 c4 10             	add    $0x10,%esp
777a39f9:	8d 74 46 02          	lea    0x2(%esi,%eax,2),%esi
777a39fd:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a3a00:	66 83 38 00          	cmpw   $0x0,(%eax)
777a3a04:	75 9e                	jne    777a39a4 <_SockGetTdiName+0x64>
777a3a06:	57                   	push   %edi
777a3a07:	8b 75 f0             	mov    0xfffffff0(%ebp),%esi
777a3a0a:	56                   	push   %esi
777a3a0b:	6a 00                	push   $0x0
777a3a0d:	8b 1d 30 60 7a 77    	mov    0x777a6030,%ebx
777a3a13:	53                   	push   %ebx
777a3a14:	e8 57 0b 00 00       	call   777a4570 <_HeapFree@12>
777a3a19:	b8 26 27 00 00       	mov    $0x2726,%eax
777a3a1e:	89 f6                	mov    %esi,%esi
777a3a20:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3a23:	5b                   	pop    %ebx
777a3a24:	5e                   	pop    %esi
777a3a25:	5f                   	pop    %edi
777a3a26:	5d                   	pop    %ebp
777a3a27:	c3                   	ret    
777a3a28:	50                   	push   %eax
777a3a29:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
777a3a2c:	50                   	push   %eax
777a3a2d:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777a3a30:	50                   	push   %eax
777a3a31:	56                   	push   %esi
777a3a32:	e8 89 fb ff ff       	call   777a35c0 <_SockLoadHelperDll>
777a3a37:	83 c4 10             	add    $0x10,%esp
777a3a3a:	89 c3                	mov    %eax,%ebx
777a3a3c:	85 c0                	test   %eax,%eax
777a3a3e:	75 72                	jne    777a3ab2 <_SockGetTdiName+0x172>
777a3a40:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a3a43:	8b 50 2c             	mov    0x2c(%eax),%edx
777a3a46:	85 d2                	test   %edx,%edx
777a3a48:	74 31                	je     777a3a7b <_SockGetTdiName+0x13b>
777a3a4a:	8b 45 28             	mov    0x28(%ebp),%eax
777a3a4d:	50                   	push   %eax
777a3a4e:	8b 45 20             	mov    0x20(%ebp),%eax
777a3a51:	50                   	push   %eax
777a3a52:	8b 75 1c             	mov    0x1c(%ebp),%esi
777a3a55:	56                   	push   %esi
777a3a56:	8b 5d 18             	mov    0x18(%ebp),%ebx
777a3a59:	53                   	push   %ebx
777a3a5a:	8b 4d 14             	mov    0x14(%ebp),%ecx
777a3a5d:	51                   	push   %ecx
777a3a5e:	57                   	push   %edi
777a3a5f:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3a62:	50                   	push   %eax
777a3a63:	8b 45 08             	mov    0x8(%ebp),%eax
777a3a66:	50                   	push   %eax
777a3a67:	ff d2                	call   *%edx
777a3a69:	8b 55 24             	mov    0x24(%ebp),%edx
777a3a6c:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
777a3a6f:	89 02                	mov    %eax,(%edx)
777a3a71:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3a74:	31 c0                	xor    %eax,%eax
777a3a76:	5b                   	pop    %ebx
777a3a77:	5e                   	pop    %esi
777a3a78:	5f                   	pop    %edi
777a3a79:	5d                   	pop    %ebp
777a3a7a:	c3                   	ret    
777a3a7b:	53                   	push   %ebx
777a3a7c:	53                   	push   %ebx
777a3a7d:	8b 4d 28             	mov    0x28(%ebp),%ecx
777a3a80:	51                   	push   %ecx
777a3a81:	8b 55 20             	mov    0x20(%ebp),%edx
777a3a84:	52                   	push   %edx
777a3a85:	8b 75 1c             	mov    0x1c(%ebp),%esi
777a3a88:	56                   	push   %esi
777a3a89:	57                   	push   %edi
777a3a8a:	8b 5d 0c             	mov    0xc(%ebp),%ebx
777a3a8d:	53                   	push   %ebx
777a3a8e:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a3a91:	51                   	push   %ecx
777a3a92:	ff 50 28             	call   *0x28(%eax)
777a3a95:	58                   	pop    %eax
777a3a96:	5a                   	pop    %edx
777a3a97:	eb d0                	jmp    777a3a69 <_SockGetTdiName+0x129>
777a3a99:	50                   	push   %eax
777a3a9a:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a3a9d:	50                   	push   %eax
777a3a9e:	6a 00                	push   $0x0
777a3aa0:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a3aa5:	50                   	push   %eax
777a3aa6:	e8 c5 0a 00 00       	call   777a4570 <_HeapFree@12>
777a3aab:	89 d8                	mov    %ebx,%eax
777a3aad:	e9 6e ff ff ff       	jmp    777a3a20 <_SockGetTdiName+0xe0>
777a3ab2:	50                   	push   %eax
777a3ab3:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
777a3ab6:	50                   	push   %eax
777a3ab7:	6a 00                	push   $0x0
777a3ab9:	8b 3d 30 60 7a 77    	mov    0x777a6030,%edi
777a3abf:	57                   	push   %edi
777a3ac0:	e8 ab 0a 00 00       	call   777a4570 <_HeapFree@12>
777a3ac5:	8b 75 ec             	mov    0xffffffec(%ebp),%esi
777a3ac8:	56                   	push   %esi
777a3ac9:	6a 00                	push   $0x0
777a3acb:	8b 0d 30 60 7a 77    	mov    0x777a6030,%ecx
777a3ad1:	51                   	push   %ecx
777a3ad2:	e8 99 0a 00 00       	call   777a4570 <_HeapFree@12>
777a3ad7:	89 d8                	mov    %ebx,%eax
777a3ad9:	e9 42 ff ff ff       	jmp    777a3a20 <_SockGetTdiName+0xe0>
777a3ade:	90                   	nop    
777a3adf:	90                   	nop    

777a3ae0 <_WSPAsyncSelect@20>:
777a3ae0:	55                   	push   %ebp
777a3ae1:	89 e5                	mov    %esp,%ebp
777a3ae3:	57                   	push   %edi
777a3ae4:	56                   	push   %esi
777a3ae5:	53                   	push   %ebx
777a3ae6:	83 ec 18             	sub    $0x18,%esp
777a3ae9:	8b 45 08             	mov    0x8(%ebp),%eax
777a3aec:	8b 7d 14             	mov    0x14(%ebp),%edi
777a3aef:	50                   	push   %eax
777a3af0:	e8 cb d5 ff ff       	call   777a10c0 <_GetSocketStructure>
777a3af5:	83 c4 0c             	add    $0xc,%esp
777a3af8:	89 c3                	mov    %eax,%ebx
777a3afa:	6a 30                	push   $0x30
777a3afc:	6a 00                	push   $0x0
777a3afe:	50                   	push   %eax
777a3aff:	e8 ac 0a 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a3b04:	89 04 24             	mov    %eax,(%esp)
777a3b07:	e8 44 0a 00 00       	call   777a4550 <_HeapAlloc@12>
777a3b0c:	c7 45 f0 01 00 00 00 	movl   $0x1,0xfffffff0(%ebp)
777a3b13:	89 c6                	mov    %eax,%esi
777a3b15:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
777a3b18:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a3b1f:	50                   	push   %eax
777a3b20:	6a 02                	push   $0x2
777a3b22:	53                   	push   %ebx
777a3b23:	e8 88 e8 ff ff       	call   777a23b0 <_SetSocketInformation>
777a3b28:	8b 43 68             	mov    0x68(%ebx),%eax
777a3b2b:	80 4b 34 40          	orb    $0x40,0x34(%ebx)
777a3b2f:	83 c4 10             	add    $0x10,%esp
777a3b32:	85 c0                	test   %eax,%eax
777a3b34:	75 7a                	jne    777a3bb0 <_WSPAsyncSelect@20+0xd0>
777a3b36:	e8 25 e9 ff ff       	call   777a2460 <_SockCreateOrReferenceAsyncThread>
777a3b3b:	e8 40 ea ff ff       	call   777a2580 <_SockGetAsyncSelectHelperAfdHandle>
777a3b40:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3b43:	89 43 58             	mov    %eax,0x58(%ebx)
777a3b46:	8b 45 10             	mov    0x10(%ebp),%eax
777a3b49:	89 43 64             	mov    %eax,0x64(%ebx)
777a3b4c:	8b 43 60             	mov    0x60(%ebx),%eax
777a3b4f:	40                   	inc    %eax
777a3b50:	89 7b 68             	mov    %edi,0x68(%ebx)
777a3b53:	c7 43 6c 00 00 00 00 	movl   $0x0,0x6c(%ebx)
777a3b5a:	89 43 60             	mov    %eax,0x60(%ebx)
777a3b5d:	85 ff                	test   %edi,%edi
777a3b5f:	75 1f                	jne    777a3b80 <_WSPAsyncSelect@20+0xa0>
777a3b61:	51                   	push   %ecx
777a3b62:	56                   	push   %esi
777a3b63:	6a 00                	push   $0x0
777a3b65:	52                   	push   %edx
777a3b66:	e8 45 0a 00 00       	call   777a45b0 <_GetProcessHeap@0>
777a3b6b:	89 04 24             	mov    %eax,(%esp)
777a3b6e:	e8 fd 09 00 00       	call   777a4570 <_HeapFree@12>
777a3b73:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3b76:	31 c0                	xor    %eax,%eax
777a3b78:	5b                   	pop    %ebx
777a3b79:	5e                   	pop    %esi
777a3b7a:	5f                   	pop    %edi
777a3b7b:	5d                   	pop    %ebp
777a3b7c:	c2 14 00             	ret    $0x14
777a3b7f:	90                   	nop    
777a3b80:	83 ec 0c             	sub    $0xc,%esp
777a3b83:	89 1e                	mov    %ebx,(%esi)
777a3b85:	89 46 04             	mov    %eax,0x4(%esi)
777a3b88:	6a 00                	push   $0x0
777a3b8a:	6a 00                	push   $0x0
777a3b8c:	56                   	push   %esi
777a3b8d:	68 00 29 7a 77       	push   $0x777a2900
777a3b92:	a1 90 60 7a 77       	mov    0x777a6090,%eax
777a3b97:	50                   	push   %eax
777a3b98:	e8 43 09 00 00       	call   777a44e0 <_NtSetIoCompletion@20>
777a3b9d:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3ba0:	31 c0                	xor    %eax,%eax
777a3ba2:	5b                   	pop    %ebx
777a3ba3:	5e                   	pop    %esi
777a3ba4:	5f                   	pop    %edi
777a3ba5:	5d                   	pop    %ebp
777a3ba6:	c2 14 00             	ret    $0x14
777a3ba9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a3bb0:	6a 00                	push   $0x0
777a3bb2:	6a 00                	push   $0x0
777a3bb4:	6a 00                	push   $0x0
777a3bb6:	8b 45 08             	mov    0x8(%ebp),%eax
777a3bb9:	50                   	push   %eax
777a3bba:	e8 f1 f4 ff ff       	call   777a30b0 <_WSPEventSelect@16>
777a3bbf:	e9 72 ff ff ff       	jmp    777a3b36 <_WSPAsyncSelect@20+0x56>
777a3bc4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a3bca:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

777a3bd0 <_WSPRecv@36>:
777a3bd0:	55                   	push   %ebp
777a3bd1:	89 e5                	mov    %esp,%ebp
777a3bd3:	57                   	push   %edi
777a3bd4:	56                   	push   %esi
777a3bd5:	53                   	push   %ebx
777a3bd6:	83 ec 38             	sub    $0x38,%esp
777a3bd9:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a3bdc:	8b 75 20             	mov    0x20(%ebp),%esi
777a3bdf:	53                   	push   %ebx
777a3be0:	e8 db d4 ff ff       	call   777a10c0 <_GetSocketStructure>
777a3be5:	89 c7                	mov    %eax,%edi
777a3be7:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a3bea:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a3bf1:	6a 01                	push   $0x1
777a3bf3:	6a 00                	push   $0x0
777a3bf5:	68 00 00 00 c0       	push   $0xc0000000
777a3bfa:	50                   	push   %eax
777a3bfb:	e8 20 08 00 00       	call   777a4420 <_NtCreateEvent@20>
777a3c00:	89 c3                	mov    %eax,%ebx
777a3c02:	83 c4 0c             	add    $0xc,%esp
777a3c05:	83 c8 ff             	or     $0xffffffff,%eax
777a3c08:	85 db                	test   %ebx,%ebx
777a3c0a:	0f 88 27 01 00 00    	js     777a3d37 <_WSPRecv@36+0x167>
777a3c10:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3c13:	c7 45 e4 00 00 00 00 	movl   $0x0,0xffffffe4(%ebp)
777a3c1a:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a3c1d:	8b 45 10             	mov    0x10(%ebp),%eax
777a3c20:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a3c23:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3c26:	8a 47 34             	mov    0x34(%edi),%al
777a3c29:	83 e0 40             	and    $0x40,%eax
777a3c2c:	3c 01                	cmp    $0x1,%al
777a3c2e:	8b 01                	mov    (%ecx),%eax
777a3c30:	19 d2                	sbb    %edx,%edx
777a3c32:	83 f2 ff             	xor    $0xffffffff,%edx
777a3c35:	83 e2 04             	and    $0x4,%edx
777a3c38:	85 c0                	test   %eax,%eax
777a3c3a:	0f 84 01 01 00 00    	je     777a3d41 <_WSPRecv@36+0x171>
777a3c40:	a8 01                	test   $0x1,%al
777a3c42:	0f 84 78 01 00 00    	je     777a3dc0 <_WSPRecv@36+0x1f0>
777a3c48:	c7 45 e4 40 00 00 00 	movl   $0x40,0xffffffe4(%ebp)
777a3c4f:	a8 02                	test   $0x2,%al
777a3c51:	74 09                	je     777a3c5c <_WSPRecv@36+0x8c>
777a3c53:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
777a3c56:	80 c9 80             	or     $0x80,%cl
777a3c59:	89 4d e4             	mov    %ecx,0xffffffe4(%ebp)
777a3c5c:	a9 00 80 00 00       	test   $0x8000,%eax
777a3c61:	74 09                	je     777a3c6c <_WSPRecv@36+0x9c>
777a3c63:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777a3c66:	83 c8 20             	or     $0x20,%eax
777a3c69:	89 45 e4             	mov    %eax,0xffffffe4(%ebp)
777a3c6c:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a3c6f:	85 c0                	test   %eax,%eax
777a3c71:	0f 84 dc 00 00 00    	je     777a3d53 <_WSPRecv@36+0x183>
777a3c77:	85 f6                	test   %esi,%esi
777a3c79:	0f 84 51 01 00 00    	je     777a3dd0 <_WSPRecv@36+0x200>
777a3c7f:	89 f2                	mov    %esi,%edx
777a3c81:	c7 45 e0 01 00 00 00 	movl   $0x1,0xffffffe0(%ebp)
777a3c88:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
777a3c8b:	8b 75 1c             	mov    0x1c(%ebp),%esi
777a3c8e:	83 c8 02             	or     $0x2,%eax
777a3c91:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a3c94:	c7 06 03 01 00 00    	movl   $0x103,(%esi)
777a3c9a:	8b 5d d4             	mov    0xffffffd4(%ebp),%ebx
777a3c9d:	50                   	push   %eax
777a3c9e:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a3ca1:	50                   	push   %eax
777a3ca2:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a3ca5:	6a 00                	push   $0x0
777a3ca7:	6a 00                	push   $0x0
777a3ca9:	6a 10                	push   $0x10
777a3cab:	50                   	push   %eax
777a3cac:	68 17 20 01 00       	push   $0x12017
777a3cb1:	56                   	push   %esi
777a3cb2:	52                   	push   %edx
777a3cb3:	6a 00                	push   $0x0
777a3cb5:	53                   	push   %ebx
777a3cb6:	51                   	push   %ecx
777a3cb7:	e8 74 07 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a3cbc:	89 c3                	mov    %eax,%ebx
777a3cbe:	58                   	pop    %eax
777a3cbf:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a3cc2:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a3cc8:	5a                   	pop    %edx
777a3cc9:	0f 94 c2             	sete   %dl
777a3ccc:	85 c0                	test   %eax,%eax
777a3cce:	0f 94 c0             	sete   %al
777a3cd1:	25 ff 00 00 00       	and    $0xff,%eax
777a3cd6:	85 c2                	test   %eax,%edx
777a3cd8:	0f 85 a8 00 00 00    	jne    777a3d86 <_WSPRecv@36+0x1b6>
777a3cde:	83 ec 0c             	sub    $0xc,%esp
777a3ce1:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a3ce4:	50                   	push   %eax
777a3ce5:	e8 56 07 00 00       	call   777a4440 <_NtClose@4>
777a3cea:	83 c4 0c             	add    $0xc,%esp
777a3ced:	81 fb 10 00 00 40    	cmp    $0x40000010,%ebx
777a3cf3:	0f 84 b9 00 00 00    	je     777a3db2 <_WSPRecv@36+0x1e2>
777a3cf9:	7f 65                	jg     777a3d60 <_WSPRecv@36+0x190>
777a3cfb:	81 fb 0f 00 00 40    	cmp    $0x4000000f,%ebx
777a3d01:	0f 84 e9 00 00 00    	je     777a3df0 <_WSPRecv@36+0x220>
777a3d07:	8b 45 18             	mov    0x18(%ebp),%eax
777a3d0a:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a3d10:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3d13:	83 39 01             	cmpl   $0x1,(%ecx)
777a3d16:	74 68                	je     777a3d80 <_WSPRecv@36+0x1b0>
777a3d18:	51                   	push   %ecx
777a3d19:	51                   	push   %ecx
777a3d1a:	6a 01                	push   $0x1
777a3d1c:	57                   	push   %edi
777a3d1d:	e8 2e ec ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a3d22:	83 c4 10             	add    $0x10,%esp
777a3d25:	8b 55 14             	mov    0x14(%ebp),%edx
777a3d28:	52                   	push   %edx
777a3d29:	8b 46 04             	mov    0x4(%esi),%eax
777a3d2c:	50                   	push   %eax
777a3d2d:	8b 45 28             	mov    0x28(%ebp),%eax
777a3d30:	50                   	push   %eax
777a3d31:	53                   	push   %ebx
777a3d32:	e8 c9 d2 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a3d37:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3d3a:	5b                   	pop    %ebx
777a3d3b:	5e                   	pop    %esi
777a3d3c:	5f                   	pop    %edi
777a3d3d:	5d                   	pop    %ebp
777a3d3e:	c2 24 00             	ret    $0x24
777a3d41:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a3d44:	c7 45 e4 20 00 00 00 	movl   $0x20,0xffffffe4(%ebp)
777a3d4b:	85 c0                	test   %eax,%eax
777a3d4d:	0f 85 24 ff ff ff    	jne    777a3c77 <_WSPRecv@36+0xa7>
777a3d53:	89 55 e0             	mov    %edx,0xffffffe0(%ebp)
777a3d56:	8d 75 c8             	lea    0xffffffc8(%ebp),%esi
777a3d59:	31 d2                	xor    %edx,%edx
777a3d5b:	e9 34 ff ff ff       	jmp    777a3c94 <_WSPRecv@36+0xc4>
777a3d60:	81 fb 11 00 00 40    	cmp    $0x40000011,%ebx
777a3d66:	74 78                	je     777a3de0 <_WSPRecv@36+0x210>
777a3d68:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3d6b:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
777a3d71:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3d74:	83 39 01             	cmpl   $0x1,(%ecx)
777a3d77:	75 9f                	jne    777a3d18 <_WSPRecv@36+0x148>
777a3d79:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a3d80:	50                   	push   %eax
777a3d81:	50                   	push   %eax
777a3d82:	6a 04                	push   $0x4
777a3d84:	eb 96                	jmp    777a3d1c <_WSPRecv@36+0x14c>
777a3d86:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a3d89:	53                   	push   %ebx
777a3d8a:	53                   	push   %ebx
777a3d8b:	6a ff                	push   $0xffffffff
777a3d8d:	51                   	push   %ecx
777a3d8e:	e8 ad 07 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a3d93:	8b 1e                	mov    (%esi),%ebx
777a3d95:	58                   	pop    %eax
777a3d96:	5a                   	pop    %edx
777a3d97:	83 ec 0c             	sub    $0xc,%esp
777a3d9a:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a3d9d:	50                   	push   %eax
777a3d9e:	e8 9d 06 00 00       	call   777a4440 <_NtClose@4>
777a3da3:	83 c4 0c             	add    $0xc,%esp
777a3da6:	81 fb 10 00 00 40    	cmp    $0x40000010,%ebx
777a3dac:	0f 85 47 ff ff ff    	jne    777a3cf9 <_WSPRecv@36+0x129>
777a3db2:	8b 45 18             	mov    0x18(%ebp),%eax
777a3db5:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
777a3dbb:	e9 50 ff ff ff       	jmp    777a3d10 <_WSPRecv@36+0x140>
777a3dc0:	c7 45 e4 20 00 00 00 	movl   $0x20,0xffffffe4(%ebp)
777a3dc7:	e9 83 fe ff ff       	jmp    777a3c4f <_WSPRecv@36+0x7f>
777a3dcc:	8d 74 26 00          	lea    0x0(%esi),%esi
777a3dd0:	89 55 e0             	mov    %edx,0xffffffe0(%ebp)
777a3dd3:	8b 55 1c             	mov    0x1c(%ebp),%edx
777a3dd6:	e9 ad fe ff ff       	jmp    777a3c88 <_WSPRecv@36+0xb8>
777a3ddb:	90                   	nop    
777a3ddc:	8d 74 26 00          	lea    0x0(%esi),%esi
777a3de0:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3de3:	c7 01 01 80 00 00    	movl   $0x8001,(%ecx)
777a3de9:	e9 22 ff ff ff       	jmp    777a3d10 <_WSPRecv@36+0x140>
777a3dee:	89 f6                	mov    %esi,%esi
777a3df0:	8b 45 18             	mov    0x18(%ebp),%eax
777a3df3:	c7 00 00 80 00 00    	movl   $0x8000,(%eax)
777a3df9:	e9 12 ff ff ff       	jmp    777a3d10 <_WSPRecv@36+0x140>
777a3dfe:	89 f6                	mov    %esi,%esi

777a3e00 <_WSPRecvFrom@44>:
777a3e00:	55                   	push   %ebp
777a3e01:	89 e5                	mov    %esp,%ebp
777a3e03:	57                   	push   %edi
777a3e04:	56                   	push   %esi
777a3e05:	53                   	push   %ebx
777a3e06:	83 ec 58             	sub    $0x58,%esp
777a3e09:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a3e0c:	8b 7d 24             	mov    0x24(%ebp),%edi
777a3e0f:	53                   	push   %ebx
777a3e10:	8b 75 28             	mov    0x28(%ebp),%esi
777a3e13:	e8 a8 d2 ff ff       	call   777a10c0 <_GetSocketStructure>
777a3e18:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a3e1f:	6a 01                	push   $0x1
777a3e21:	6a 00                	push   $0x0
777a3e23:	89 45 b4             	mov    %eax,0xffffffb4(%ebp)
777a3e26:	8d 45 c4             	lea    0xffffffc4(%ebp),%eax
777a3e29:	68 00 00 00 c0       	push   $0xc0000000
777a3e2e:	50                   	push   %eax
777a3e2f:	e8 ec 05 00 00       	call   777a4420 <_NtCreateEvent@20>
777a3e34:	89 c3                	mov    %eax,%ebx
777a3e36:	83 c4 0c             	add    $0xc,%esp
777a3e39:	83 c8 ff             	or     $0xffffffff,%eax
777a3e3c:	85 db                	test   %ebx,%ebx
777a3e3e:	0f 88 2b 01 00 00    	js     777a3f6f <_WSPRecvFrom@44+0x16f>
777a3e44:	8b 45 0c             	mov    0xc(%ebp),%eax
777a3e47:	8b 55 b4             	mov    0xffffffb4(%ebp),%edx
777a3e4a:	89 45 c8             	mov    %eax,0xffffffc8(%ebp)
777a3e4d:	8b 45 10             	mov    0x10(%ebp),%eax
777a3e50:	89 45 cc             	mov    %eax,0xffffffcc(%ebp)
777a3e53:	c7 45 d4 00 00 00 00 	movl   $0x0,0xffffffd4(%ebp)
777a3e5a:	8a 42 34             	mov    0x34(%edx),%al
777a3e5d:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3e60:	83 e0 40             	and    $0x40,%eax
777a3e63:	3c 01                	cmp    $0x1,%al
777a3e65:	8b 45 20             	mov    0x20(%ebp),%eax
777a3e68:	19 d2                	sbb    %edx,%edx
777a3e6a:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a3e6d:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a3e70:	83 f2 ff             	xor    $0xffffffff,%edx
777a3e73:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a3e76:	8b 01                	mov    (%ecx),%eax
777a3e78:	83 e2 04             	and    $0x4,%edx
777a3e7b:	85 c0                	test   %eax,%eax
777a3e7d:	0f 84 fd 00 00 00    	je     777a3f80 <_WSPRecvFrom@44+0x180>
777a3e83:	a8 01                	test   $0x1,%al
777a3e85:	0f 84 65 01 00 00    	je     777a3ff0 <_WSPRecvFrom@44+0x1f0>
777a3e8b:	c7 45 d4 40 00 00 00 	movl   $0x40,0xffffffd4(%ebp)
777a3e92:	a8 02                	test   $0x2,%al
777a3e94:	74 09                	je     777a3e9f <_WSPRecvFrom@44+0x9f>
777a3e96:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a3e99:	80 c9 80             	or     $0x80,%cl
777a3e9c:	89 4d d4             	mov    %ecx,0xffffffd4(%ebp)
777a3e9f:	a9 00 80 00 00       	test   $0x8000,%eax
777a3ea4:	74 09                	je     777a3eaf <_WSPRecvFrom@44+0xaf>
777a3ea6:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a3ea9:	83 c8 20             	or     $0x20,%eax
777a3eac:	89 45 d4             	mov    %eax,0xffffffd4(%ebp)
777a3eaf:	85 ff                	test   %edi,%edi
777a3eb1:	0f 84 d8 00 00 00    	je     777a3f8f <_WSPRecvFrom@44+0x18f>
777a3eb7:	85 f6                	test   %esi,%esi
777a3eb9:	0f 84 41 01 00 00    	je     777a4000 <_WSPRecvFrom@44+0x200>
777a3ebf:	89 f2                	mov    %esi,%edx
777a3ec1:	c7 45 d0 01 00 00 00 	movl   $0x1,0xffffffd0(%ebp)
777a3ec8:	8b 45 d0             	mov    0xffffffd0(%ebp),%eax
777a3ecb:	89 fe                	mov    %edi,%esi
777a3ecd:	83 c8 02             	or     $0x2,%eax
777a3ed0:	89 45 d0             	mov    %eax,0xffffffd0(%ebp)
777a3ed3:	c7 06 03 01 00 00    	movl   $0x103,(%esi)
777a3ed9:	8b 5d c4             	mov    0xffffffc4(%ebp),%ebx
777a3edc:	50                   	push   %eax
777a3edd:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a3ee0:	50                   	push   %eax
777a3ee1:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
777a3ee4:	6a 00                	push   $0x0
777a3ee6:	6a 00                	push   $0x0
777a3ee8:	6a 18                	push   $0x18
777a3eea:	50                   	push   %eax
777a3eeb:	68 1b 20 01 00       	push   $0x1201b
777a3ef0:	56                   	push   %esi
777a3ef1:	52                   	push   %edx
777a3ef2:	6a 00                	push   $0x0
777a3ef4:	53                   	push   %ebx
777a3ef5:	51                   	push   %ecx
777a3ef6:	e8 35 05 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a3efb:	89 c3                	mov    %eax,%ebx
777a3efd:	58                   	pop    %eax
777a3efe:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a3f04:	5a                   	pop    %edx
777a3f05:	0f 94 c2             	sete   %dl
777a3f08:	85 ff                	test   %edi,%edi
777a3f0a:	0f 94 c0             	sete   %al
777a3f0d:	25 ff 00 00 00       	and    $0xff,%eax
777a3f12:	85 c2                	test   %eax,%edx
777a3f14:	0f 85 99 00 00 00    	jne    777a3fb3 <_WSPRecvFrom@44+0x1b3>
777a3f1a:	83 ec 0c             	sub    $0xc,%esp
777a3f1d:	8b 45 c4             	mov    0xffffffc4(%ebp),%eax
777a3f20:	50                   	push   %eax
777a3f21:	e8 1a 05 00 00       	call   777a4440 <_NtClose@4>
777a3f26:	83 c4 0c             	add    $0xc,%esp
777a3f29:	81 fb 10 00 00 40    	cmp    $0x40000010,%ebx
777a3f2f:	0f 84 ab 00 00 00    	je     777a3fe0 <_WSPRecvFrom@44+0x1e0>
777a3f35:	7f 69                	jg     777a3fa0 <_WSPRecvFrom@44+0x1a0>
777a3f37:	81 fb 0f 00 00 40    	cmp    $0x4000000f,%ebx
777a3f3d:	0f 84 dd 00 00 00    	je     777a4020 <_WSPRecvFrom@44+0x220>
777a3f43:	8b 45 18             	mov    0x18(%ebp),%eax
777a3f46:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777a3f4c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a3f50:	50                   	push   %eax
777a3f51:	50                   	push   %eax
777a3f52:	8b 45 b4             	mov    0xffffffb4(%ebp),%eax
777a3f55:	6a 01                	push   $0x1
777a3f57:	50                   	push   %eax
777a3f58:	e8 f3 e9 ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a3f5d:	8b 45 14             	mov    0x14(%ebp),%eax
777a3f60:	50                   	push   %eax
777a3f61:	8b 7e 04             	mov    0x4(%esi),%edi
777a3f64:	8b 75 30             	mov    0x30(%ebp),%esi
777a3f67:	57                   	push   %edi
777a3f68:	56                   	push   %esi
777a3f69:	53                   	push   %ebx
777a3f6a:	e8 91 d0 ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a3f6f:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a3f72:	5b                   	pop    %ebx
777a3f73:	5e                   	pop    %esi
777a3f74:	5f                   	pop    %edi
777a3f75:	5d                   	pop    %ebp
777a3f76:	c2 2c 00             	ret    $0x2c
777a3f79:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777a3f80:	c7 45 d4 20 00 00 00 	movl   $0x20,0xffffffd4(%ebp)
777a3f87:	85 ff                	test   %edi,%edi
777a3f89:	0f 85 28 ff ff ff    	jne    777a3eb7 <_WSPRecvFrom@44+0xb7>
777a3f8f:	89 55 d0             	mov    %edx,0xffffffd0(%ebp)
777a3f92:	8d 75 b8             	lea    0xffffffb8(%ebp),%esi
777a3f95:	31 d2                	xor    %edx,%edx
777a3f97:	e9 37 ff ff ff       	jmp    777a3ed3 <_WSPRecvFrom@44+0xd3>
777a3f9c:	8d 74 26 00          	lea    0x0(%esi),%esi
777a3fa0:	81 fb 11 00 00 40    	cmp    $0x40000011,%ebx
777a3fa6:	74 68                	je     777a4010 <_WSPRecvFrom@44+0x210>
777a3fa8:	8b 55 18             	mov    0x18(%ebp),%edx
777a3fab:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
777a3fb1:	eb 9d                	jmp    777a3f50 <_WSPRecvFrom@44+0x150>
777a3fb3:	8b 4d c4             	mov    0xffffffc4(%ebp),%ecx
777a3fb6:	53                   	push   %ebx
777a3fb7:	53                   	push   %ebx
777a3fb8:	6a ff                	push   $0xffffffff
777a3fba:	51                   	push   %ecx
777a3fbb:	e8 80 05 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a3fc0:	8b 1e                	mov    (%esi),%ebx
777a3fc2:	58                   	pop    %eax
777a3fc3:	5a                   	pop    %edx
777a3fc4:	83 ec 0c             	sub    $0xc,%esp
777a3fc7:	8b 45 c4             	mov    0xffffffc4(%ebp),%eax
777a3fca:	50                   	push   %eax
777a3fcb:	e8 70 04 00 00       	call   777a4440 <_NtClose@4>
777a3fd0:	83 c4 0c             	add    $0xc,%esp
777a3fd3:	81 fb 10 00 00 40    	cmp    $0x40000010,%ebx
777a3fd9:	0f 85 56 ff ff ff    	jne    777a3f35 <_WSPRecvFrom@44+0x135>
777a3fdf:	90                   	nop    
777a3fe0:	8b 4d 18             	mov    0x18(%ebp),%ecx
777a3fe3:	c7 01 01 00 00 00    	movl   $0x1,(%ecx)
777a3fe9:	e9 62 ff ff ff       	jmp    777a3f50 <_WSPRecvFrom@44+0x150>
777a3fee:	89 f6                	mov    %esi,%esi
777a3ff0:	c7 45 d4 20 00 00 00 	movl   $0x20,0xffffffd4(%ebp)
777a3ff7:	e9 96 fe ff ff       	jmp    777a3e92 <_WSPRecvFrom@44+0x92>
777a3ffc:	8d 74 26 00          	lea    0x0(%esi),%esi
777a4000:	89 55 d0             	mov    %edx,0xffffffd0(%ebp)
777a4003:	89 fa                	mov    %edi,%edx
777a4005:	e9 be fe ff ff       	jmp    777a3ec8 <_WSPRecvFrom@44+0xc8>
777a400a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a4010:	8b 45 18             	mov    0x18(%ebp),%eax
777a4013:	c7 00 01 80 00 00    	movl   $0x8001,(%eax)
777a4019:	e9 32 ff ff ff       	jmp    777a3f50 <_WSPRecvFrom@44+0x150>
777a401e:	89 f6                	mov    %esi,%esi
777a4020:	8b 55 18             	mov    0x18(%ebp),%edx
777a4023:	c7 02 00 80 00 00    	movl   $0x8000,(%edx)
777a4029:	e9 22 ff ff ff       	jmp    777a3f50 <_WSPRecvFrom@44+0x150>
777a402e:	89 f6                	mov    %esi,%esi

777a4030 <_WSPSend@36>:
777a4030:	55                   	push   %ebp
777a4031:	89 e5                	mov    %esp,%ebp
777a4033:	57                   	push   %edi
777a4034:	56                   	push   %esi
777a4035:	53                   	push   %ebx
777a4036:	83 ec 48             	sub    $0x48,%esp
777a4039:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a403c:	8b 75 18             	mov    0x18(%ebp),%esi
777a403f:	53                   	push   %ebx
777a4040:	8b 7d 1c             	mov    0x1c(%ebp),%edi
777a4043:	e8 78 d0 ff ff       	call   777a10c0 <_GetSocketStructure>
777a4048:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a404f:	6a 01                	push   $0x1
777a4051:	6a 00                	push   $0x0
777a4053:	89 45 c4             	mov    %eax,0xffffffc4(%ebp)
777a4056:	8d 45 d4             	lea    0xffffffd4(%ebp),%eax
777a4059:	68 00 00 00 c0       	push   $0xc0000000
777a405e:	50                   	push   %eax
777a405f:	e8 bc 03 00 00       	call   777a4420 <_NtCreateEvent@20>
777a4064:	89 c3                	mov    %eax,%ebx
777a4066:	83 c4 0c             	add    $0xc,%esp
777a4069:	83 c8 ff             	or     $0xffffffff,%eax
777a406c:	85 db                	test   %ebx,%ebx
777a406e:	0f 88 d8 00 00 00    	js     777a414c <_WSPSend@36+0x11c>
777a4074:	8b 45 0c             	mov    0xc(%ebp),%eax
777a4077:	8b 55 c4             	mov    0xffffffc4(%ebp),%edx
777a407a:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a407d:	8b 45 10             	mov    0x10(%ebp),%eax
777a4080:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
777a4083:	c7 45 e4 00 00 00 00 	movl   $0x0,0xffffffe4(%ebp)
777a408a:	8a 42 34             	mov    0x34(%edx),%al
777a408d:	83 e0 40             	and    $0x40,%eax
777a4090:	3c 01                	cmp    $0x1,%al
777a4092:	19 c0                	sbb    %eax,%eax
777a4094:	83 f0 ff             	xor    $0xffffffff,%eax
777a4097:	83 e0 04             	and    $0x4,%eax
777a409a:	85 f6                	test   %esi,%esi
777a409c:	0f 85 b4 00 00 00    	jne    777a4156 <_WSPSend@36+0x126>
777a40a2:	85 ff                	test   %edi,%edi
777a40a4:	0f 84 d8 00 00 00    	je     777a4182 <_WSPSend@36+0x152>
777a40aa:	8b 55 20             	mov    0x20(%ebp),%edx
777a40ad:	85 d2                	test   %edx,%edx
777a40af:	0f 84 f1 00 00 00    	je     777a41a6 <_WSPSend@36+0x176>
777a40b5:	8b 55 20             	mov    0x20(%ebp),%edx
777a40b8:	c7 45 e0 01 00 00 00 	movl   $0x1,0xffffffe0(%ebp)
777a40bf:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
777a40c2:	89 fe                	mov    %edi,%esi
777a40c4:	83 c8 02             	or     $0x2,%eax
777a40c7:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a40ca:	c7 06 03 01 00 00    	movl   $0x103,(%esi)
777a40d0:	8b 5d d4             	mov    0xffffffd4(%ebp),%ebx
777a40d3:	50                   	push   %eax
777a40d4:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a40d7:	50                   	push   %eax
777a40d8:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
777a40db:	6a 00                	push   $0x0
777a40dd:	6a 00                	push   $0x0
777a40df:	6a 10                	push   $0x10
777a40e1:	50                   	push   %eax
777a40e2:	68 1f 20 01 00       	push   $0x1201f
777a40e7:	56                   	push   %esi
777a40e8:	52                   	push   %edx
777a40e9:	6a 00                	push   $0x0
777a40eb:	53                   	push   %ebx
777a40ec:	51                   	push   %ecx
777a40ed:	e8 3e 03 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a40f2:	89 c3                	mov    %eax,%ebx
777a40f4:	58                   	pop    %eax
777a40f5:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a40fb:	5a                   	pop    %edx
777a40fc:	0f 94 c2             	sete   %dl
777a40ff:	85 ff                	test   %edi,%edi
777a4101:	0f 94 c0             	sete   %al
777a4104:	25 ff 00 00 00       	and    $0xff,%eax
777a4109:	85 c2                	test   %eax,%edx
777a410b:	0f 85 7f 00 00 00    	jne    777a4190 <_WSPSend@36+0x160>
777a4111:	83 ec 0c             	sub    $0xc,%esp
777a4114:	8b 45 d4             	mov    0xffffffd4(%ebp),%eax
777a4117:	50                   	push   %eax
777a4118:	e8 23 03 00 00       	call   777a4440 <_NtClose@4>
777a411d:	b8 e5 03 00 00       	mov    $0x3e5,%eax
777a4122:	83 c4 0c             	add    $0xc,%esp
777a4125:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a412b:	74 1f                	je     777a414c <_WSPSend@36+0x11c>
777a412d:	50                   	push   %eax
777a412e:	50                   	push   %eax
777a412f:	8b 45 c4             	mov    0xffffffc4(%ebp),%eax
777a4132:	6a 02                	push   $0x2
777a4134:	50                   	push   %eax
777a4135:	e8 16 e8 ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a413a:	8b 45 14             	mov    0x14(%ebp),%eax
777a413d:	50                   	push   %eax
777a413e:	8b 7e 04             	mov    0x4(%esi),%edi
777a4141:	8b 75 28             	mov    0x28(%ebp),%esi
777a4144:	57                   	push   %edi
777a4145:	56                   	push   %esi
777a4146:	53                   	push   %ebx
777a4147:	e8 b4 ce ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a414c:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a414f:	5b                   	pop    %ebx
777a4150:	5e                   	pop    %esi
777a4151:	5f                   	pop    %edi
777a4152:	5d                   	pop    %ebp
777a4153:	c2 24 00             	ret    $0x24
777a4156:	f7 c6 01 00 00 00    	test   $0x1,%esi
777a415c:	74 07                	je     777a4165 <_WSPSend@36+0x135>
777a415e:	c7 45 e4 20 00 00 00 	movl   $0x20,0xffffffe4(%ebp)
777a4165:	81 e6 00 80 00 00    	and    $0x8000,%esi
777a416b:	0f 84 31 ff ff ff    	je     777a40a2 <_WSPSend@36+0x72>
777a4171:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
777a4174:	83 c9 40             	or     $0x40,%ecx
777a4177:	85 ff                	test   %edi,%edi
777a4179:	89 4d e4             	mov    %ecx,0xffffffe4(%ebp)
777a417c:	0f 85 28 ff ff ff    	jne    777a40aa <_WSPSend@36+0x7a>
777a4182:	31 d2                	xor    %edx,%edx
777a4184:	8d 75 c8             	lea    0xffffffc8(%ebp),%esi
777a4187:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a418a:	e9 3b ff ff ff       	jmp    777a40ca <_WSPSend@36+0x9a>
777a418f:	90                   	nop    
777a4190:	8b 4d d4             	mov    0xffffffd4(%ebp),%ecx
777a4193:	53                   	push   %ebx
777a4194:	53                   	push   %ebx
777a4195:	6a ff                	push   $0xffffffff
777a4197:	51                   	push   %ecx
777a4198:	e8 a3 03 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a419d:	8b 1e                	mov    (%esi),%ebx
777a419f:	58                   	pop    %eax
777a41a0:	5a                   	pop    %edx
777a41a1:	e9 6b ff ff ff       	jmp    777a4111 <_WSPSend@36+0xe1>
777a41a6:	89 fa                	mov    %edi,%edx
777a41a8:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
777a41ab:	e9 0f ff ff ff       	jmp    777a40bf <_WSPSend@36+0x8f>

777a41b0 <_WSPSendTo@44>:
777a41b0:	55                   	push   %ebp
777a41b1:	89 e5                	mov    %esp,%ebp
777a41b3:	57                   	push   %edi
777a41b4:	56                   	push   %esi
777a41b5:	53                   	push   %ebx
777a41b6:	81 ec 88 00 00 00    	sub    $0x88,%esp
777a41bc:	8b 5d 08             	mov    0x8(%ebp),%ebx
777a41bf:	8b 7d 20             	mov    0x20(%ebp),%edi
777a41c2:	53                   	push   %ebx
777a41c3:	e8 f8 ce ff ff       	call   777a10c0 <_GetSocketStructure>
777a41c8:	89 c6                	mov    %eax,%esi
777a41ca:	8d 45 84             	lea    0xffffff84(%ebp),%eax
777a41cd:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a41d4:	6a 01                	push   $0x1
777a41d6:	6a 00                	push   $0x0
777a41d8:	68 00 00 00 c0       	push   $0xc0000000
777a41dd:	50                   	push   %eax
777a41de:	e8 3d 02 00 00       	call   777a4420 <_NtCreateEvent@20>
777a41e3:	89 c3                	mov    %eax,%ebx
777a41e5:	83 c4 0c             	add    $0xc,%esp
777a41e8:	83 c8 ff             	or     $0xffffffff,%eax
777a41eb:	85 db                	test   %ebx,%ebx
777a41ed:	0f 88 fa 00 00 00    	js     777a42ed <_WSPSendTo@44+0x13d>
777a41f3:	8b 4e 08             	mov    0x8(%esi),%ecx
777a41f6:	85 c9                	test   %ecx,%ecx
777a41f8:	0f 84 12 01 00 00    	je     777a4310 <_WSPSendTo@44+0x160>
777a41fe:	8d 47 fe             	lea    0xfffffffe(%edi),%eax
777a4201:	c7 45 88 01 00 00 00 	movl   $0x1,0xffffff88(%ebp)
777a4208:	66 89 45 8c          	mov    %ax,0xffffff8c(%ebp)
777a420c:	50                   	push   %eax
777a420d:	8b 45 1c             	mov    0x1c(%ebp),%eax
777a4210:	57                   	push   %edi
777a4211:	50                   	push   %eax
777a4212:	8d 45 8e             	lea    0xffffff8e(%ebp),%eax
777a4215:	8d 5d 88             	lea    0xffffff88(%ebp),%ebx
777a4218:	50                   	push   %eax
777a4219:	e8 d2 02 00 00       	call   777a44f0 <_memcpy>
777a421e:	8b 45 0c             	mov    0xc(%ebp),%eax
777a4221:	83 c4 10             	add    $0x10,%esp
777a4224:	89 45 a8             	mov    %eax,0xffffffa8(%ebp)
777a4227:	8a 46 34             	mov    0x34(%esi),%al
777a422a:	89 5d dc             	mov    %ebx,0xffffffdc(%ebp)
777a422d:	83 e0 40             	and    $0x40,%eax
777a4230:	3c 01                	cmp    $0x1,%al
777a4232:	8b 45 10             	mov    0x10(%ebp),%eax
777a4235:	19 d2                	sbb    %edx,%edx
777a4237:	89 45 ac             	mov    %eax,0xffffffac(%ebp)
777a423a:	8b 46 74             	mov    0x74(%esi),%eax
777a423d:	83 f2 ff             	xor    $0xffffffff,%edx
777a4240:	83 e2 04             	and    $0x4,%edx
777a4243:	8b 40 1c             	mov    0x1c(%eax),%eax
777a4246:	89 45 d8             	mov    %eax,0xffffffd8(%ebp)
777a4249:	8b 45 24             	mov    0x24(%ebp),%eax
777a424c:	85 c0                	test   %eax,%eax
777a424e:	0f 84 ff 00 00 00    	je     777a4353 <_WSPSendTo@44+0x1a3>
777a4254:	8b 45 28             	mov    0x28(%ebp),%eax
777a4257:	85 c0                	test   %eax,%eax
777a4259:	0f 84 04 01 00 00    	je     777a4363 <_WSPSendTo@44+0x1b3>
777a425f:	8b 55 28             	mov    0x28(%ebp),%edx
777a4262:	c7 45 b0 01 00 00 00 	movl   $0x1,0xffffffb0(%ebp)
777a4269:	8b 45 b0             	mov    0xffffffb0(%ebp),%eax
777a426c:	8b 7d 24             	mov    0x24(%ebp),%edi
777a426f:	83 c8 02             	or     $0x2,%eax
777a4272:	89 45 b0             	mov    %eax,0xffffffb0(%ebp)
777a4275:	8b 5d 84             	mov    0xffffff84(%ebp),%ebx
777a4278:	50                   	push   %eax
777a4279:	8b 4d 08             	mov    0x8(%ebp),%ecx
777a427c:	50                   	push   %eax
777a427d:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
777a4280:	6a 00                	push   $0x0
777a4282:	6a 00                	push   $0x0
777a4284:	6a 38                	push   $0x38
777a4286:	50                   	push   %eax
777a4287:	68 23 20 01 00       	push   $0x12023
777a428c:	57                   	push   %edi
777a428d:	52                   	push   %edx
777a428e:	6a 00                	push   $0x0
777a4290:	53                   	push   %ebx
777a4291:	51                   	push   %ecx
777a4292:	e8 99 01 00 00       	call   777a4430 <_NtDeviceIoControlFile@40>
777a4297:	89 c3                	mov    %eax,%ebx
777a4299:	58                   	pop    %eax
777a429a:	8b 45 24             	mov    0x24(%ebp),%eax
777a429d:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a42a3:	5a                   	pop    %edx
777a42a4:	0f 94 c2             	sete   %dl
777a42a7:	85 c0                	test   %eax,%eax
777a42a9:	0f 94 c0             	sete   %al
777a42ac:	25 ff 00 00 00       	and    $0xff,%eax
777a42b1:	85 c2                	test   %eax,%edx
777a42b3:	75 42                	jne    777a42f7 <_WSPSendTo@44+0x147>
777a42b5:	83 ec 0c             	sub    $0xc,%esp
777a42b8:	8b 45 84             	mov    0xffffff84(%ebp),%eax
777a42bb:	50                   	push   %eax
777a42bc:	e8 7f 01 00 00       	call   777a4440 <_NtClose@4>
777a42c1:	b8 e5 03 00 00       	mov    $0x3e5,%eax
777a42c6:	83 c4 0c             	add    $0xc,%esp
777a42c9:	81 fb 03 01 00 00    	cmp    $0x103,%ebx
777a42cf:	74 1c                	je     777a42ed <_WSPSendTo@44+0x13d>
777a42d1:	50                   	push   %eax
777a42d2:	50                   	push   %eax
777a42d3:	6a 02                	push   $0x2
777a42d5:	56                   	push   %esi
777a42d6:	e8 75 e6 ff ff       	call   777a2950 <_SockReenableAsyncSelectEvent>
777a42db:	8b 45 14             	mov    0x14(%ebp),%eax
777a42de:	8b 75 30             	mov    0x30(%ebp),%esi
777a42e1:	50                   	push   %eax
777a42e2:	8b 7f 04             	mov    0x4(%edi),%edi
777a42e5:	57                   	push   %edi
777a42e6:	56                   	push   %esi
777a42e7:	53                   	push   %ebx
777a42e8:	e8 13 cd ff ff       	call   777a1000 <_MsafdReturnWithErrno>
777a42ed:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777a42f0:	5b                   	pop    %ebx
777a42f1:	5e                   	pop    %esi
777a42f2:	5f                   	pop    %edi
777a42f3:	5d                   	pop    %ebp
777a42f4:	c2 2c 00             	ret    $0x2c
777a42f7:	8b 4d 84             	mov    0xffffff84(%ebp),%ecx
777a42fa:	53                   	push   %ebx
777a42fb:	53                   	push   %ebx
777a42fc:	6a ff                	push   $0xffffffff
777a42fe:	51                   	push   %ecx
777a42ff:	e8 3c 02 00 00       	call   777a4540 <_WaitForSingleObject@8>
777a4304:	8b 1f                	mov    (%edi),%ebx
777a4306:	58                   	pop    %eax
777a4307:	5a                   	pop    %edx
777a4308:	eb ab                	jmp    777a42b5 <_WSPSendTo@44+0x105>
777a430a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777a4310:	8b 46 74             	mov    0x74(%esi),%eax
777a4313:	8b 40 14             	mov    0x14(%eax),%eax
777a4316:	52                   	push   %edx
777a4317:	89 45 80             	mov    %eax,0xffffff80(%ebp)
777a431a:	50                   	push   %eax
777a431b:	a1 30 60 7a 77       	mov    0x777a6030,%eax
777a4320:	6a 00                	push   $0x0
777a4322:	50                   	push   %eax
777a4323:	e8 28 02 00 00       	call   777a4550 <_HeapAlloc@12>
777a4328:	89 c3                	mov    %eax,%ebx
777a432a:	8d 45 80             	lea    0xffffff80(%ebp),%eax
777a432d:	8b 56 74             	mov    0x74(%esi),%edx
777a4330:	50                   	push   %eax
777a4331:	53                   	push   %ebx
777a4332:	8b 46 78             	mov    0x78(%esi),%eax
777a4335:	50                   	push   %eax
777a4336:	ff 52 44             	call   *0x44(%edx)
777a4339:	8b 4d 80             	mov    0xffffff80(%ebp),%ecx
777a433c:	8b 55 08             	mov    0x8(%ebp),%edx
777a433f:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
777a4346:	51                   	push   %ecx
777a4347:	53                   	push   %ebx
777a4348:	52                   	push   %edx
777a4349:	e8 92 d4 ff ff       	call   777a17e0 <_WSPBind@16>
777a434e:	e9 ab fe ff ff       	jmp    777a41fe <_WSPSendTo@44+0x4e>
777a4353:	89 55 b0             	mov    %edx,0xffffffb0(%ebp)
777a4356:	8d bd 78 ff ff ff    	lea    0xffffff78(%ebp),%edi
777a435c:	31 d2                	xor    %edx,%edx
777a435e:	e9 12 ff ff ff       	jmp    777a4275 <_WSPSendTo@44+0xc5>
777a4363:	89 55 b0             	mov    %edx,0xffffffb0(%ebp)
777a4366:	8b 55 24             	mov    0x24(%ebp),%edx
777a4369:	e9 fb fe ff ff       	jmp    777a4269 <_WSPSendTo@44+0xb9>
777a436e:	89 f6                	mov    %esi,%esi

777a4370 <_WSPRecvDisconnect@12>:
777a4370:	55                   	push   %ebp
777a4371:	31 c0                	xor    %eax,%eax
777a4373:	89 e5                	mov    %esp,%ebp
777a4375:	5d                   	pop    %ebp
777a4376:	c2 0c 00             	ret    $0xc
777a4379:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a4380 <_WSPSendDisconnect@12>:
777a4380:	55                   	push   %ebp
777a4381:	31 c0                	xor    %eax,%eax
777a4383:	89 e5                	mov    %esp,%ebp
777a4385:	5d                   	pop    %ebp
777a4386:	c2 0c 00             	ret    $0xc
777a4389:	90                   	nop    
777a438a:	90                   	nop    
777a438b:	90                   	nop    
777a438c:	90                   	nop    
777a438d:	90                   	nop    
777a438e:	90                   	nop    
777a438f:	90                   	nop    

777a4390 <_WSPAddressToString@24>:
777a4390:	55                   	push   %ebp
777a4391:	31 c0                	xor    %eax,%eax
777a4393:	89 e5                	mov    %esp,%ebp
777a4395:	5d                   	pop    %ebp
777a4396:	c2 18 00             	ret    $0x18
777a4399:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43a0 <_WSPCancelBlockingCall@4>:
777a43a0:	55                   	push   %ebp
777a43a1:	31 c0                	xor    %eax,%eax
777a43a3:	89 e5                	mov    %esp,%ebp
777a43a5:	5d                   	pop    %ebp
777a43a6:	c2 04 00             	ret    $0x4
777a43a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43b0 <_WSPDuplicateSocket@16>:
777a43b0:	55                   	push   %ebp
777a43b1:	31 c0                	xor    %eax,%eax
777a43b3:	89 e5                	mov    %esp,%ebp
777a43b5:	5d                   	pop    %ebp
777a43b6:	c2 10 00             	ret    $0x10
777a43b9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43c0 <_WSPGetOverlappedResult@24>:
777a43c0:	55                   	push   %ebp
777a43c1:	31 c0                	xor    %eax,%eax
777a43c3:	89 e5                	mov    %esp,%ebp
777a43c5:	5d                   	pop    %ebp
777a43c6:	c2 18 00             	ret    $0x18
777a43c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43d0 <_WSPGetQOSByName@16>:
777a43d0:	55                   	push   %ebp
777a43d1:	31 c0                	xor    %eax,%eax
777a43d3:	89 e5                	mov    %esp,%ebp
777a43d5:	5d                   	pop    %ebp
777a43d6:	c2 10 00             	ret    $0x10
777a43d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43e0 <_WSPJoinLeaf@36>:
777a43e0:	55                   	push   %ebp
777a43e1:	31 c0                	xor    %eax,%eax
777a43e3:	89 e5                	mov    %esp,%ebp
777a43e5:	5d                   	pop    %ebp
777a43e6:	c2 24 00             	ret    $0x24
777a43e9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a43f0 <_WSPSetSockOpt@24>:
777a43f0:	55                   	push   %ebp
777a43f1:	31 c0                	xor    %eax,%eax
777a43f3:	89 e5                	mov    %esp,%ebp
777a43f5:	5d                   	pop    %ebp
777a43f6:	c2 18 00             	ret    $0x18
777a43f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777a4400 <_WSPStringToAddress@24>:
777a4400:	55                   	push   %ebp
777a4401:	31 c0                	xor    %eax,%eax
777a4403:	89 e5                	mov    %esp,%ebp
777a4405:	5d                   	pop    %ebp
777a4406:	c2 18 00             	ret    $0x18
777a4409:	90                   	nop    
777a440a:	90                   	nop    
777a440b:	90                   	nop    
777a440c:	90                   	nop    
777a440d:	90                   	nop    
777a440e:	90                   	nop    
777a440f:	90                   	nop    

777a4410 <_DbgPrint>:
777a4410:	ff 25 40 81 7a 77    	jmp    *0x777a8140
777a4416:	90                   	nop    
777a4417:	90                   	nop    
	...

777a4420 <_NtCreateEvent@20>:
777a4420:	ff 25 48 81 7a 77    	jmp    *0x777a8148
777a4426:	90                   	nop    
777a4427:	90                   	nop    
	...

777a4430 <_NtDeviceIoControlFile@40>:
777a4430:	ff 25 54 81 7a 77    	jmp    *0x777a8154
777a4436:	90                   	nop    
777a4437:	90                   	nop    
	...

777a4440 <_NtClose@4>:
777a4440:	ff 25 44 81 7a 77    	jmp    *0x777a8144
777a4446:	90                   	nop    
777a4447:	90                   	nop    
	...

777a4450 <_RtlInitUnicodeString@8>:
777a4450:	ff 25 70 81 7a 77    	jmp    *0x777a8170
777a4456:	90                   	nop    
777a4457:	90                   	nop    
	...

777a4460 <_ZwCreateFile@44>:
777a4460:	ff 25 74 81 7a 77    	jmp    *0x777a8174
777a4466:	90                   	nop    
777a4467:	90                   	nop    
	...

777a4470 <_RtlConvertLongToLargeInteger@4>:
777a4470:	ff 25 68 81 7a 77    	jmp    *0x777a8168
777a4476:	90                   	nop    
777a4477:	90                   	nop    
	...

777a4480 <_RtlEnlargedIntegerMultiply@8>:
777a4480:	ff 25 6c 81 7a 77    	jmp    *0x777a816c
777a4486:	90                   	nop    
777a4487:	90                   	nop    
	...

777a4490 <_NtCreateIoCompletion@16>:
777a4490:	ff 25 50 81 7a 77    	jmp    *0x777a8150
777a4496:	90                   	nop    
777a4497:	90                   	nop    
	...

777a44a0 <_NtSetInformationObject@16>:
777a44a0:	ff 25 60 81 7a 77    	jmp    *0x777a8160
777a44a6:	90                   	nop    
777a44a7:	90                   	nop    
	...

777a44b0 <_NtRemoveIoCompletion@20>:
777a44b0:	ff 25 58 81 7a 77    	jmp    *0x777a8158
777a44b6:	90                   	nop    
777a44b7:	90                   	nop    
	...

777a44c0 <_NtCreateFile@44>:
777a44c0:	ff 25 4c 81 7a 77    	jmp    *0x777a814c
777a44c6:	90                   	nop    
777a44c7:	90                   	nop    
	...

777a44d0 <_NtSetInformationFile@20>:
777a44d0:	ff 25 5c 81 7a 77    	jmp    *0x777a815c
777a44d6:	90                   	nop    
777a44d7:	90                   	nop    
	...

777a44e0 <_NtSetIoCompletion@20>:
777a44e0:	ff 25 64 81 7a 77    	jmp    *0x777a8164
777a44e6:	90                   	nop    
777a44e7:	90                   	nop    
	...

777a44f0 <_memcpy>:
777a44f0:	ff 25 78 81 7a 77    	jmp    *0x777a8178
777a44f6:	90                   	nop    
777a44f7:	90                   	nop    
	...

777a4500 <_memset>:
777a4500:	ff 25 7c 81 7a 77    	jmp    *0x777a817c
777a4506:	90                   	nop    
777a4507:	90                   	nop    
	...

777a4510 <_wcscat>:
777a4510:	ff 25 80 81 7a 77    	jmp    *0x777a8180
777a4516:	90                   	nop    
777a4517:	90                   	nop    
	...

777a4520 <_wcscpy>:
777a4520:	ff 25 84 81 7a 77    	jmp    *0x777a8184
777a4526:	90                   	nop    
777a4527:	90                   	nop    
	...

777a4530 <_wcslen>:
777a4530:	ff 25 88 81 7a 77    	jmp    *0x777a8188
777a4536:	90                   	nop    
777a4537:	90                   	nop    
	...

777a4540 <_WaitForSingleObject@8>:
777a4540:	ff 25 34 81 7a 77    	jmp    *0x777a8134
777a4546:	90                   	nop    
777a4547:	90                   	nop    
	...

777a4550 <_HeapAlloc@12>:
777a4550:	ff 25 20 81 7a 77    	jmp    *0x777a8120
777a4556:	90                   	nop    
777a4557:	90                   	nop    
	...

777a4560 <_Sleep@4>:
777a4560:	ff 25 30 81 7a 77    	jmp    *0x777a8130
777a4566:	90                   	nop    
777a4567:	90                   	nop    
	...

777a4570 <_HeapFree@12>:
777a4570:	ff 25 24 81 7a 77    	jmp    *0x777a8124
777a4576:	90                   	nop    
777a4577:	90                   	nop    
	...

777a4580 <_CreateThread@24>:
777a4580:	ff 25 08 81 7a 77    	jmp    *0x777a8108
777a4586:	90                   	nop    
777a4587:	90                   	nop    
	...

777a4590 <_GetCurrentThread@0>:
777a4590:	ff 25 14 81 7a 77    	jmp    *0x777a8114
777a4596:	90                   	nop    
777a4597:	90                   	nop    
	...

777a45a0 <_SetThreadPriority@8>:
777a45a0:	ff 25 2c 81 7a 77    	jmp    *0x777a812c
777a45a6:	90                   	nop    
777a45a7:	90                   	nop    
	...

777a45b0 <_GetProcessHeap@0>:
777a45b0:	ff 25 1c 81 7a 77    	jmp    *0x777a811c
777a45b6:	90                   	nop    
777a45b7:	90                   	nop    
	...

777a45c0 <_DisableThreadLibraryCalls@4>:
777a45c0:	ff 25 0c 81 7a 77    	jmp    *0x777a810c
777a45c6:	90                   	nop    
777a45c7:	90                   	nop    
	...

777a45d0 <_ExpandEnvironmentStringsW@12>:
777a45d0:	ff 25 10 81 7a 77    	jmp    *0x777a8110
777a45d6:	90                   	nop    
777a45d7:	90                   	nop    
	...

777a45e0 <_LoadLibraryW@4>:
777a45e0:	ff 25 28 81 7a 77    	jmp    *0x777a8128
777a45e6:	90                   	nop    
777a45e7:	90                   	nop    
	...

777a45f0 <_GetProcAddress@8>:
777a45f0:	ff 25 18 81 7a 77    	jmp    *0x777a8118
777a45f6:	90                   	nop    
777a45f7:	90                   	nop    
	...

777a4600 <_RegOpenKeyExW@20>:
777a4600:	ff 25 f8 80 7a 77    	jmp    *0x777a80f8
777a4606:	90                   	nop    
777a4607:	90                   	nop    
	...

777a4610 <_RegQueryValueExW@24>:
777a4610:	ff 25 fc 80 7a 77    	jmp    *0x777a80fc
777a4616:	90                   	nop    
777a4617:	90                   	nop    
	...

777a4620 <_RegCloseKey@4>:
777a4620:	ff 25 f4 80 7a 77    	jmp    *0x777a80f4
777a4626:	90                   	nop    
777a4627:	90                   	nop    
	...

777a4630 <__CTOR_LIST__>:
777a4630:	ff                   	(bad)  
777a4631:	ff                   	(bad)  
777a4632:	ff                   	(bad)  
777a4633:	ff 00                	incl   (%eax)
777a4635:	00 00                	add    %al,(%eax)
	...

777a4638 <__DTOR_LIST__>:
777a4638:	ff                   	(bad)  
777a4639:	ff                   	(bad)  
777a463a:	ff                   	(bad)  
777a463b:	ff 00                	incl   (%eax)
777a463d:	00 00                	add    %al,(%eax)
	...
