
packet.nostrip.dll:     file format pei-i386

Disassembly of section .text:

77781000 <_DllMainCRTStartup@12>:
77781000:	55                   	push   %ebp
77781001:	89 e5                	mov    %esp,%ebp
77781003:	57                   	push   %edi
77781004:	56                   	push   %esi
77781005:	53                   	push   %ebx
77781006:	83 ec 0c             	sub    $0xc,%esp
77781009:	8b 7d 0c             	mov    0xc(%ebp),%edi
7778100c:	83 ff 01             	cmp    $0x1,%edi
7778100f:	0f 84 ab 00 00 00    	je     777810c0 <_DllMainCRTStartup@12+0xc0>
77781015:	89 7c 24 04          	mov    %edi,0x4(%esp)
77781019:	8b 5d 10             	mov    0x10(%ebp),%ebx
7778101c:	8b 4d 08             	mov    0x8(%ebp),%ecx
7778101f:	89 5c 24 08          	mov    %ebx,0x8(%esp)
77781023:	89 0c 24             	mov    %ecx,(%esp)
77781026:	e8 a5 01 00 00       	call   777811d0 <_DllMain@12>
7778102b:	89 c6                	mov    %eax,%esi
7778102d:	83 ec 0c             	sub    $0xc,%esp
77781030:	83 ff 01             	cmp    $0x1,%edi
77781033:	0f 94 c2             	sete   %dl
77781036:	31 c0                	xor    %eax,%eax
77781038:	85 f6                	test   %esi,%esi
7778103a:	0f 94 c0             	sete   %al
7778103d:	85 c2                	test   %eax,%edx
7778103f:	74 5b                	je     7778109c <_DllMainCRTStartup@12+0x9c>
77781041:	8b 15 00 80 78 77    	mov    0x77788000,%edx
77781047:	85 d2                	test   %edx,%edx
77781049:	74 45                	je     77781090 <_DllMainCRTStartup@12+0x90>
7778104b:	8b 1d 10 80 78 77    	mov    0x77788010,%ebx
77781051:	eb 0d                	jmp    77781060 <_DllMainCRTStartup@12+0x60>
77781053:	90                   	nop    
77781054:	90                   	nop    
77781055:	90                   	nop    
77781056:	90                   	nop    
77781057:	90                   	nop    
77781058:	90                   	nop    
77781059:	90                   	nop    
7778105a:	90                   	nop    
7778105b:	90                   	nop    
7778105c:	90                   	nop    
7778105d:	90                   	nop    
7778105e:	90                   	nop    
7778105f:	90                   	nop    
77781060:	83 eb 04             	sub    $0x4,%ebx
77781063:	39 d3                	cmp    %edx,%ebx
77781065:	72 19                	jb     77781080 <_DllMainCRTStartup@12+0x80>
77781067:	8b 03                	mov    (%ebx),%eax
77781069:	85 c0                	test   %eax,%eax
7778106b:	74 f3                	je     77781060 <_DllMainCRTStartup@12+0x60>
7778106d:	ff d0                	call   *%eax
7778106f:	8b 15 00 80 78 77    	mov    0x77788000,%edx
77781075:	83 eb 04             	sub    $0x4,%ebx
77781078:	39 d3                	cmp    %edx,%ebx
7778107a:	73 eb                	jae    77781067 <_DllMainCRTStartup@12+0x67>
7778107c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781080:	89 14 24             	mov    %edx,(%esp)
77781083:	e8 58 32 00 00       	call   777842e0 <_free>
77781088:	31 d2                	xor    %edx,%edx
7778108a:	89 15 00 80 78 77    	mov    %edx,0x77788000
77781090:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
77781097:	e8 34 32 00 00       	call   777842d0 <_fflush>
7778109c:	85 ff                	test   %edi,%edi
7778109e:	75 10                	jne    777810b0 <_DllMainCRTStartup@12+0xb0>
777810a0:	8b 15 00 80 78 77    	mov    0x77788000,%edx
777810a6:	85 d2                	test   %edx,%edx
777810a8:	75 46                	jne    777810f0 <_DllMainCRTStartup@12+0xf0>
777810aa:	31 f6                	xor    %esi,%esi
777810ac:	8d 74 26 00          	lea    0x0(%esi),%esi
777810b0:	89 f0                	mov    %esi,%eax
777810b2:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777810b5:	5b                   	pop    %ebx
777810b6:	5e                   	pop    %esi
777810b7:	5f                   	pop    %edi
777810b8:	5d                   	pop    %ebp
777810b9:	c2 0c 00             	ret    $0xc
777810bc:	8d 74 26 00          	lea    0x0(%esi),%esi
777810c0:	c7 04 24 80 00 00 00 	movl   $0x80,(%esp)
777810c7:	e8 34 32 00 00       	call   77784300 <_malloc>
777810cc:	a3 00 80 78 77       	mov    %eax,0x77788000
777810d1:	85 c0                	test   %eax,%eax
777810d3:	74 6c                	je     77781141 <_DllMainCRTStartup@12+0x141>
777810d5:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
777810db:	a3 10 80 78 77       	mov    %eax,0x77788010
777810e0:	e8 0b 2d 00 00       	call   77783df0 <__pei386_runtime_relocator>
777810e5:	e8 96 2c 00 00       	call   77783d80 <___main>
777810ea:	e9 26 ff ff ff       	jmp    77781015 <_DllMainCRTStartup@12+0x15>
777810ef:	90                   	nop    
777810f0:	8b 1d 10 80 78 77    	mov    0x77788010,%ebx
777810f6:	8d 76 00             	lea    0x0(%esi),%esi
777810f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi
77781100:	83 eb 04             	sub    $0x4,%ebx
77781103:	39 d3                	cmp    %edx,%ebx
77781105:	72 19                	jb     77781120 <_DllMainCRTStartup@12+0x120>
77781107:	8b 03                	mov    (%ebx),%eax
77781109:	85 c0                	test   %eax,%eax
7778110b:	74 f3                	je     77781100 <_DllMainCRTStartup@12+0x100>
7778110d:	ff d0                	call   *%eax
7778110f:	8b 15 00 80 78 77    	mov    0x77788000,%edx
77781115:	83 eb 04             	sub    $0x4,%ebx
77781118:	39 d3                	cmp    %edx,%ebx
7778111a:	73 eb                	jae    77781107 <_DllMainCRTStartup@12+0x107>
7778111c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781120:	89 14 24             	mov    %edx,(%esp)
77781123:	31 ff                	xor    %edi,%edi
77781125:	e8 b6 31 00 00       	call   777842e0 <_free>
7778112a:	89 3d 00 80 78 77    	mov    %edi,0x77788000
77781130:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
77781137:	e8 94 31 00 00       	call   777842d0 <_fflush>
7778113c:	e9 6f ff ff ff       	jmp    777810b0 <_DllMainCRTStartup@12+0xb0>
77781141:	e8 aa 31 00 00       	call   777842f0 <__errno>
77781146:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
7778114c:	31 c0                	xor    %eax,%eax
7778114e:	e9 5f ff ff ff       	jmp    777810b2 <_DllMainCRTStartup@12+0xb2>
77781153:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781159:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781160 <_atexit>:
77781160:	55                   	push   %ebp
77781161:	ba 10 80 78 77       	mov    $0x77788010,%edx
77781166:	89 e5                	mov    %esp,%ebp
77781168:	83 ec 18             	sub    $0x18,%esp
7778116b:	b9 00 80 78 77       	mov    $0x77788000,%ecx
77781170:	8b 45 08             	mov    0x8(%ebp),%eax
77781173:	89 54 24 08          	mov    %edx,0x8(%esp)
77781177:	89 4c 24 04          	mov    %ecx,0x4(%esp)
7778117b:	89 04 24             	mov    %eax,(%esp)
7778117e:	e8 3d 31 00 00       	call   777842c0 <___dllonexit>
77781183:	c9                   	leave  
77781184:	83 f8 01             	cmp    $0x1,%eax
77781187:	19 c0                	sbb    %eax,%eax
77781189:	c3                   	ret    
7778118a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77781190 <__onexit>:
77781190:	55                   	push   %ebp
77781191:	b9 10 80 78 77       	mov    $0x77788010,%ecx
77781196:	89 e5                	mov    %esp,%ebp
77781198:	83 ec 18             	sub    $0x18,%esp
7778119b:	ba 00 80 78 77       	mov    $0x77788000,%edx
777811a0:	8b 45 08             	mov    0x8(%ebp),%eax
777811a3:	89 4c 24 08          	mov    %ecx,0x8(%esp)
777811a7:	89 54 24 04          	mov    %edx,0x4(%esp)
777811ab:	89 04 24             	mov    %eax,(%esp)
777811ae:	e8 0d 31 00 00       	call   777842c0 <___dllonexit>
777811b3:	c9                   	leave  
777811b4:	c3                   	ret    
777811b5:	90                   	nop    
777811b6:	90                   	nop    
777811b7:	90                   	nop    
777811b8:	90                   	nop    
777811b9:	90                   	nop    
777811ba:	90                   	nop    
777811bb:	90                   	nop    
777811bc:	90                   	nop    
777811bd:	90                   	nop    
777811be:	90                   	nop    
777811bf:	90                   	nop    

777811c0 <___do_sjlj_init>:
777811c0:	55                   	push   %ebp
777811c1:	89 e5                	mov    %esp,%ebp
777811c3:	5d                   	pop    %ebp
777811c4:	e9 07 2d 00 00       	jmp    77783ed0 <___w32_sharedptr_initialize>
777811c9:	90                   	nop    
777811ca:	90                   	nop    
777811cb:	90                   	nop    
777811cc:	90                   	nop    
777811cd:	90                   	nop    
777811ce:	90                   	nop    
777811cf:	90                   	nop    

777811d0 <_DllMain@12>:
  \brief The main dll function.
*/

BOOL APIENTRY DllMain (HANDLE DllHandle,DWORD Reason,LPVOID lpReserved)
{
777811d0:	55                   	push   %ebp
777811d1:	89 e5                	mov    %esp,%ebp
777811d3:	50                   	push   %eax
777811d4:	50                   	push   %eax
    BOOLEAN Status=TRUE;

    switch ( Reason )
777811d5:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
777811d9:	74 09                	je     777811e4 <_DllMain@12+0x14>
    {
	case DLL_PROCESS_ATTACH:
		
		ODS("\n************Packet32: DllMain************\n");
		
#ifdef _DEBUG_TO_FILE
		// dump a bunch of registry keys useful for debug to file
		PacketDumpRegistryKey("HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}",
			"adapters.reg");
		PacketDumpRegistryKey("HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Tcpip",
			"tcpip.reg");
		PacketDumpRegistryKey("HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\NPF",
			"npf.reg");
		PacketDumpRegistryKey("HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services",
			"services.reg");
#endif
		break;

        case DLL_PROCESS_DETACH:
			break;

		default:
            break;
    }

    return Status;
}
777811db:	b8 01 00 00 00       	mov    $0x1,%eax
777811e0:	c9                   	leave  
777811e1:	c2 0c 00             	ret    $0xc
777811e4:	83 ec 0c             	sub    $0xc,%esp
777811e7:	68 b0 60 78 77       	push   $0x777860b0
777811ec:	e8 9f 28 00 00       	call   77783a90 <_OutputDebugStringW@4>
777811f1:	b8 01 00 00 00       	mov    $0x1,%eax
777811f6:	83 c4 0c             	add    $0xc,%esp
777811f9:	c9                   	leave  
777811fa:	c2 0c 00             	ret    $0xc
777811fd:	8d 76 00             	lea    0x0(%esi),%esi

77781200 <_SChar2WChar>:

/*! 
  \brief Converts an ASCII string to UNICODE. Uses the MultiByteToWideChar() system function.
  \param string The string to convert.
  \return The converted string.
*/

WCHAR* SChar2WChar(char* string)
{
77781200:	55                   	push   %ebp
77781201:	89 e5                	mov    %esp,%ebp
77781203:	56                   	push   %esi
77781204:	53                   	push   %ebx
	WCHAR* TmpStr;
	TmpStr=(WCHAR*) malloc ((strlen(string)+2)*sizeof(WCHAR));
77781205:	83 ec 0c             	sub    $0xc,%esp
77781208:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778120b:	53                   	push   %ebx
7778120c:	e8 4f 28 00 00       	call   77783a60 <_strlen>
77781211:	8d 44 00 04          	lea    0x4(%eax,%eax,1),%eax
77781215:	89 04 24             	mov    %eax,(%esp)
77781218:	e8 e3 30 00 00       	call   77784300 <_malloc>

	MultiByteToWideChar(CP_ACP, 0, string, -1, TmpStr, (strlen(string)+2));
7778121d:	89 1c 24             	mov    %ebx,(%esp)
77781220:	89 c6                	mov    %eax,%esi
77781222:	e8 39 28 00 00       	call   77783a60 <_strlen>
77781227:	5a                   	pop    %edx
77781228:	83 c0 02             	add    $0x2,%eax
7778122b:	59                   	pop    %ecx
7778122c:	50                   	push   %eax
7778122d:	56                   	push   %esi
7778122e:	6a ff                	push   $0xffffffff
77781230:	53                   	push   %ebx
77781231:	6a 00                	push   $0x0
77781233:	6a 00                	push   $0x0
77781235:	e8 66 28 00 00       	call   77783aa0 <_MultiByteToWideChar@24>

	return TmpStr;
}
7778123a:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778123d:	89 f0                	mov    %esi,%eax
7778123f:	5b                   	pop    %ebx
77781240:	5e                   	pop    %esi
77781241:	5d                   	pop    %ebp
77781242:	c3                   	ret    
77781243:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781249:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781250 <_PacketSetReadEvt>:

/*! 
  \brief Sets the maximum possible lookahead buffer for the driver's Packet_tap() function.
  \param AdapterObject Handle to the service control manager.
  \return If the function succeeds, the return value is nonzero.

  The lookahead buffer is the portion of packet that Packet_tap() can access from the NIC driver's memory
  without performing a copy. This function tries to increase the size of that buffer.
*/

BOOLEAN PacketSetMaxLookaheadsize (LPADAPTER AdapterObject)
{
    BOOLEAN    Status;
    ULONG      IoCtlBufferLength=(sizeof(PACKET_OID_DATA)+sizeof(ULONG)-1);
    PPACKET_OID_DATA  OidData;

    OidData=GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,IoCtlBufferLength);
    if (OidData == NULL) {
        ODS("PacketSetMaxLookaheadsize failed\n");
        return FALSE;
    }

	//set the size of the lookahead buffer to the maximum available by the the NIC driver
    OidData->Oid=OID_GEN_MAXIMUM_LOOKAHEAD;
    OidData->Length=sizeof(ULONG);
    Status=PacketRequest(AdapterObject,FALSE,OidData);
    OidData->Oid=OID_GEN_CURRENT_LOOKAHEAD;
    Status=PacketRequest(AdapterObject,TRUE,OidData);
    GlobalFreePtr(OidData);
    return Status;
}

/*! 
  \brief Retrieves the event associated in the driver with a capture instance and stores it in an 
   _ADAPTER structure.
  \param AdapterObject Handle to the service control manager.
  \return If the function succeeds, the return value is nonzero.

  This function is used by PacketOpenAdapter() to retrieve the read event from the driver by means of an ioctl
  call and set it in the _ADAPTER structure pointed by AdapterObject.
*/

BOOLEAN PacketSetReadEvt(LPADAPTER AdapterObject)
{
77781250:	55                   	push   %ebp
77781251:	89 e5                	mov    %esp,%ebp
77781253:	57                   	push   %edi
77781254:	56                   	push   %esi
77781255:	53                   	push   %ebx
77781256:	83 ec 70             	sub    $0x70,%esp
	DWORD BytesReturned;
	WCHAR EventName[39];

	// this tells the terminal service to retrieve the event from the global namespace
	wcsncpy(EventName,L"Global\\",sizeof(L"Global\\"));
77781259:	8d 5d 98             	lea    0xffffff98(%ebp),%ebx
7778125c:	8b 75 08             	mov    0x8(%ebp),%esi

	// retrieve the name of the shared event from the driver
	if(DeviceIoControl(AdapterObject->hFile,pBIOCEVNAME,NULL,0,EventName+7,13*sizeof(TCHAR),&BytesReturned,NULL)==FALSE) return FALSE;
7778125f:	8d 7d a6             	lea    0xffffffa6(%ebp),%edi
77781262:	6a 10                	push   $0x10
77781264:	68 08 61 78 77       	push   $0x77786108
77781269:	53                   	push   %ebx
7778126a:	e8 e1 27 00 00       	call   77783a50 <_wcsncpy>
7778126f:	8d 45 94             	lea    0xffffff94(%ebp),%eax
77781272:	6a 00                	push   $0x0
77781274:	50                   	push   %eax
77781275:	6a 1a                	push   $0x1a
77781277:	57                   	push   %edi
77781278:	6a 00                	push   $0x0
7778127a:	6a 00                	push   $0x0
7778127c:	68 f7 1c 00 00       	push   $0x1cf7
77781281:	8b 06                	mov    (%esi),%eax
77781283:	50                   	push   %eax
77781284:	e8 27 28 00 00       	call   77783ab0 <_DeviceIoControl@32>
77781289:	31 d2                	xor    %edx,%edx
7778128b:	83 c4 10             	add    $0x10,%esp
7778128e:	85 c0                	test   %eax,%eax
77781290:	75 0e                	jne    777812a0 <_PacketSetReadEvt+0x50>

	EventName[20]=0; // terminate the string

	// open the shared event
	AdapterObject->ReadEvent=CreateEventW(NULL,
										 TRUE,
										 FALSE,
										 EventName);

	// in NT4 "Global\" is not automatically ignored: try to use simply the event name
	if(GetLastError()!=ERROR_ALREADY_EXISTS){
		if(AdapterObject->ReadEvent != NULL)
			CloseHandle(AdapterObject->ReadEvent);
		
		// open the shared event
		AdapterObject->ReadEvent=CreateEventW(NULL,
			TRUE,
			FALSE,
			EventName+7);
	}	

	if(AdapterObject->ReadEvent==NULL || GetLastError()!=ERROR_ALREADY_EXISTS){
        ODS("PacketSetReadEvt: error retrieving the event from the kernel\n");
		return FALSE;
	}

	AdapterObject->ReadTimeOut=0;

	return TRUE;

}
77781292:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781295:	89 d0                	mov    %edx,%eax
77781297:	5b                   	pop    %ebx
77781298:	5e                   	pop    %esi
77781299:	5f                   	pop    %edi
7778129a:	5d                   	pop    %ebp
7778129b:	c3                   	ret    
7778129c:	8d 74 26 00          	lea    0x0(%esi),%esi
777812a0:	66 c7 45 c0 00 00    	movw   $0x0,0xffffffc0(%ebp)
777812a6:	53                   	push   %ebx
777812a7:	6a 00                	push   $0x0
777812a9:	6a 01                	push   $0x1
777812ab:	6a 00                	push   $0x0
777812ad:	e8 0e 28 00 00       	call   77783ac0 <_CreateEventW@16>
777812b2:	89 46 48             	mov    %eax,0x48(%esi)
777812b5:	e8 16 28 00 00       	call   77783ad0 <_GetLastError@0>
777812ba:	3d b7 00 00 00       	cmp    $0xb7,%eax
777812bf:	74 4d                	je     7778130e <_PacketSetReadEvt+0xbe>
777812c1:	8b 46 48             	mov    0x48(%esi),%eax
777812c4:	85 c0                	test   %eax,%eax
777812c6:	75 38                	jne    77781300 <_PacketSetReadEvt+0xb0>
777812c8:	57                   	push   %edi
777812c9:	6a 00                	push   $0x0
777812cb:	6a 01                	push   $0x1
777812cd:	6a 00                	push   $0x0
777812cf:	e8 ec 27 00 00       	call   77783ac0 <_CreateEventW@16>
777812d4:	89 46 48             	mov    %eax,0x48(%esi)
777812d7:	85 c0                	test   %eax,%eax
777812d9:	74 0c                	je     777812e7 <_PacketSetReadEvt+0x97>
777812db:	e8 f0 27 00 00       	call   77783ad0 <_GetLastError@0>
777812e0:	3d b7 00 00 00       	cmp    $0xb7,%eax
777812e5:	74 2c                	je     77781313 <_PacketSetReadEvt+0xc3>
777812e7:	83 ec 0c             	sub    $0xc,%esp
777812ea:	68 18 61 78 77       	push   $0x77786118
777812ef:	e8 9c 27 00 00       	call   77783a90 <_OutputDebugStringW@4>
777812f4:	31 d2                	xor    %edx,%edx
777812f6:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777812f9:	89 d0                	mov    %edx,%eax
777812fb:	5b                   	pop    %ebx
777812fc:	5e                   	pop    %esi
777812fd:	5f                   	pop    %edi
777812fe:	5d                   	pop    %ebp
777812ff:	c3                   	ret    
77781300:	83 ec 0c             	sub    $0xc,%esp
77781303:	50                   	push   %eax
77781304:	e8 d7 27 00 00       	call   77783ae0 <_CloseHandle@4>
77781309:	83 c4 0c             	add    $0xc,%esp
7778130c:	eb ba                	jmp    777812c8 <_PacketSetReadEvt+0x78>
7778130e:	8b 46 48             	mov    0x48(%esi),%eax
77781311:	eb c4                	jmp    777812d7 <_PacketSetReadEvt+0x87>
77781313:	ba 01 00 00 00       	mov    $0x1,%edx
77781318:	c7 46 4c 00 00 00 00 	movl   $0x0,0x4c(%esi)
7778131f:	e9 6e ff ff ff       	jmp    77781292 <_PacketSetReadEvt+0x42>
77781324:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
7778132a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77781330 <_PacketRequest>:

/*! 
  \brief Installs the NPF device driver.
  \param ascmHandle Handle to the service control manager.
  \param ascmHandle A pointer to a handle that will receive the pointer to the driver's service.
  \param driverPath The full path of the .sys file to load.
  \return If the function succeeds, the return value is nonzero.

  This function installs the driver's service in the system using the CreateService function.
*/

BOOL PacketInstallDriver(SC_HANDLE ascmHandle, SC_HANDLE* srvHandle, TCHAR* driverPath)
{
	BOOL result = FALSE;
	ULONG err;
	
	ODS("installdriver\n");
	
	if (GetFileAttributes(driverPath) != 0xffffffff) {
		*srvHandle = CreateService(ascmHandle, 
			NPFServiceName,
			NPFServiceDesc,
			SERVICE_ALL_ACCESS,
			SERVICE_KERNEL_DRIVER,
			SERVICE_DEMAND_START,
			SERVICE_ERROR_NORMAL,
			driverPath,
			NULL, NULL, NULL, NULL, NULL);
		if (*srvHandle == NULL) {
			if (GetLastError() == ERROR_SERVICE_EXISTS) {
				//npf.sys already existed
				result = TRUE;
			}
		} else {
			//Created service for npf.sys
			result = TRUE;
		}
	}
	if (result == TRUE) {
		if (*srvHandle != NULL) {
			CloseServiceHandle(*srvHandle);
		}
	}

	if (result == FALSE){
		err = GetLastError();
		if (err != 2) {
			ODSEx("PacketInstallDriver failed, Error=%d\n",err);
		}
	}
	return result;
	
}

/*! 
  \brief Convert a Unicode dotted-quad to a 32-bit IP address.
  \param cp A string containing the address.
  \return the converted 32-bit numeric address.

   Doesn't check to make sure the address is valid.
*/


ULONG inet_addrU(const WCHAR *cp)
{
	ULONG val, part;
	WCHAR c;
	int i;

	val = 0;
	for (i = 0; i < 4; i++) {
		part = 0;
		while ((c = *cp++) != '\0' && c != '.') {
			if (c < '0' || c > '9')
				return -1;
			part = part*10 + (c - '0');
		}
		if (part > 255)
			return -1;	
		val = val | (part << i*8);
		if (i == 3) {
			if (c != '\0')
				return -1;	// extra gunk at end of string 
		} else {
			if (c == '\0')
				return -1;	// string ends early 
		}
	}
	return val;
}

/*! 
  \brief Dumps a registry key to disk in text format. Uses regedit.
  \param KeyName Name of the ket to dump. All its subkeys will be saved recursively.
  \param FileName Name of the file that will contain the dump.
  \return If the function succeeds, the return value is nonzero.

  For debugging purposes, we use this function to obtain some registry keys from the user's machine.
*/

#ifdef _DEBUG_TO_FILE

LONG PacketDumpRegistryKey(PCHAR KeyName, PCHAR FileName)
{
	CHAR Command[256];

	strcpy(Command, "regedit /e ");
	strcat(Command, FileName);
	strcat(Command, " ");
	strcat(Command, KeyName);

	/// Let regedit do the dirt work for us
	system(Command);

	return TRUE;
}
#endif

//---------------------------------------------------------------------------
// PUBLIC API
//---------------------------------------------------------------------------

/** @ingroup packetapi
 *  @{
 */

/** @defgroup packet32 Packet.dll exported functions and variables
 *  @{
 */

/// Current packet.dll Version. It can be retrieved directly or through the PacketGetVersion() function.
char PacketLibraryVersion[] = "2.3"; 

/*! 
  \brief Returns a string with the dll version.
  \return A char pointer to the version of the library.
*/
PCHAR PacketGetVersion(){
	return PacketLibraryVersion;
}

/*! 
  \brief Returns information about the MAC type of an adapter.
  \param AdapterObject The adapter on which information is needed.
  \param type Pointer to a NetType structure that will be filled by the function.
  \return If the function succeeds, the return value is nonzero, otherwise the return value is zero.

  This function return the link layer technology and the speed (in bps) of an opened adapter.
  The LinkType field of the type parameter can have one of the following values:

  - NdisMedium802_3: Ethernet (802.3) 
  - NdisMediumWan: WAN 
  - NdisMedium802_5: Token Ring (802.5) 
  - NdisMediumFddi: FDDI 
  - NdisMediumAtm: ATM 
  - NdisMediumArcnet878_2: ARCNET (878.2) 
*/
BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type)
{
    BOOLEAN    Status;
    ULONG      IoCtlBufferLength=(sizeof(PACKET_OID_DATA)+sizeof(ULONG)-1);
    PPACKET_OID_DATA  OidData;

    OidData=GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,IoCtlBufferLength);
    if (OidData == NULL) {
        ODS("PacketGetNetType failed\n");
        return FALSE;
    }
	//get the link-layer type
    OidData->Oid = OID_GEN_MEDIA_IN_USE;
    OidData->Length = sizeof (ULONG);
    Status = PacketRequest(AdapterObject,FALSE,OidData);
    type->LinkType=*((UINT*)OidData->Data);

	//get the link-layer speed
    OidData->Oid = OID_GEN_LINK_SPEED;
    OidData->Length = sizeof (ULONG);
    Status = PacketRequest(AdapterObject,FALSE,OidData);
	type->LinkSpeed=*((UINT*)OidData->Data)*100;
    GlobalFreePtr (OidData);

	ODSEx("Media:%d ",type->LinkType);
	ODSEx("Speed=%d\n",type->LinkSpeed);

    return Status;
}

/*! 
  \brief Stops and unloads the WinPcap device driver.
  \return If the function succeeds, the return value is nonzero, otherwise it is zero.

  This function can be used to unload the driver from memory when the application no more needs it.
  Note that the driver is physically stopped and unloaded only when all the files on its devices 
  are closed, i.e. when all the applications that use WinPcap close all their adapters.
*/
BOOL PacketStopDriver()
{
	SC_HANDLE		scmHandle;
    SC_HANDLE       schService;
    BOOL            ret;
    SERVICE_STATUS  serviceStatus;

	scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	
	if(scmHandle != NULL){
		
		schService = OpenService (scmHandle,
			NPFServiceName,
			SERVICE_ALL_ACCESS
			);
		
		if (schService != NULL)
		{
			
			ret = ControlService (schService,
				SERVICE_CONTROL_STOP,
				&serviceStatus
				);
			if (!ret)
			{
			}
			
			CloseServiceHandle (schService);
			
			CloseServiceHandle(scmHandle);
			
			return ret;
		}
	}
	
	return FALSE;

}

/*! 
  \brief Opens an adapter.
  \param AdapterName A string containing the name of the device to open. 
   Use the PacketGetAdapterNames() function to retrieve the list of available devices.
  \return If the function succeeds, the return value is the pointer to a properly initialized ADAPTER object,
   otherwise the return value is NULL.

  This function tries to load and start the packet driver at the first invocation. In this way, 
  the management of the driver is transparent to the application, that simply needs to open an adapter to start
  WinPcap.
  
  \note the Windows 95 version of the NPF driver works with the ASCII string format, while the Windows NT 
  version works with UNICODE. Therefore, AdapterName \b should be an ASCII string in Windows 95, and a UNICODE 
  string in Windows NT. This difference is not a problem if the string pointed by AdapterName was obtained 
  through the PacketGetAdapterNames function, because it returns the names of the adapters in the proper format.
  Problems can arise in Windows NT when the string is obtained from ANSI C functions like scanf, because they 
  use the ASCII format. Since this could be a relevant problem during the porting of command-line applications 
  from UNIX, we included in the Windows NT version of PacketOpenAdapter the ability to detect ASCII strings and
  convert them to UNICODE before sending them to the device driver. Therefore PacketOpenAdapter in Windows NT 
  accepts both the ASCII and the UNICODE format. If a ASCII string is received, it is converted to UNICODE 
  by PACKET.DLL before being passed to the driver.
*/
LPADAPTER PacketOpenAdapter(LPTSTR AdapterName)
{
    LPADAPTER lpAdapter;
    BOOLEAN Result;
	char *AdapterNameA;
	WCHAR *AdapterNameU;
	DWORD error;
	SC_HANDLE svcHandle = NULL;
	TCHAR driverPath[512];
	TCHAR WinPath[256];
	LONG KeyRes;
	HKEY PathKey;
	SERVICE_STATUS SStat;
	BOOLEAN QuerySStat;
	WCHAR SymbolicLink[128];

    ODSEx("PacketOpenAdapter: trying to open the adapter=%S\n",AdapterName);

	scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if(scmHandle == NULL){
		error = GetLastError();
		ODSEx("OpenSCManager failed! Error=%d\n", error);
	} else {
		*driverPath = 0;
		GetCurrentDirectory(512, driverPath);
		wsprintf(driverPath + wcslen(driverPath), NPFDriverName);
		
		// check if the NPF registry key is already present
		// this means that the driver is already installed and that we don't need to call PacketInstallDriver
		KeyRes=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
			NPFRegistryLocation,
			0,
			KEY_READ,
			&PathKey);
		
		if(KeyRes != ERROR_SUCCESS){
			Result = PacketInstallDriver(scmHandle,&svcHandle,driverPath);
		} else {
			Result = TRUE;
			RegCloseKey(PathKey);
		}
		
		if (Result) {
			
			srvHandle = OpenService(scmHandle, NPFServiceName, SERVICE_START | SERVICE_QUERY_STATUS );
			if (srvHandle != NULL){
				
				QuerySStat = QueryServiceStatus(srvHandle, &SStat);
				ODSEx("The status of the driver is:%d\n",SStat.dwCurrentState);
				
				if (!QuerySStat || SStat.dwCurrentState != SERVICE_RUNNING){
					ODS("Calling startservice\n");
					if (StartService(srvHandle, 0, NULL)==0){ 
						error = GetLastError();
						if (error!=ERROR_SERVICE_ALREADY_RUNNING && error!=ERROR_ALREADY_EXISTS){
							SetLastError(error);
							if (scmHandle != NULL) CloseServiceHandle(scmHandle);
							error = GetLastError();
							ODSEx("PacketOpenAdapter: StartService failed, Error=%d\n",error);
							return NULL;
						}
					}				
				}
			} else {
				error = GetLastError();
				ODSEx("OpenService failed! Error=%d", error);
			}
		} else {
			if (GetSystemDirectory(WinPath, sizeof(WinPath)/sizeof(TCHAR)) == 0) {
				return FALSE;
			}
			wsprintf(driverPath, TEXT("%s\\drivers%s"), WinPath, NPFDriverName);
			
			if (KeyRes != ERROR_SUCCESS) {
				Result = PacketInstallDriver(scmHandle,&svcHandle,driverPath);
			} else {
				Result = TRUE;
			}
			if (Result) {
				srvHandle = OpenService(scmHandle,NPFServiceName,SERVICE_START);
				if (srvHandle != NULL) {
					QuerySStat = QueryServiceStatus(srvHandle, &SStat);
					ODSEx("The status of the driver is:%d\n",SStat.dwCurrentState);
					if (!QuerySStat || SStat.dwCurrentState != SERVICE_RUNNING) {
						ODS("Calling startservice\n");
						if (StartService(srvHandle, 0, NULL) == 0) { 
							error = GetLastError();
							if (error != ERROR_SERVICE_ALREADY_RUNNING && error!=ERROR_ALREADY_EXISTS) {
								SetLastError(error);
								if (scmHandle != NULL) CloseServiceHandle(scmHandle);
								ODSEx("PacketOpenAdapter: StartService failed, Error=%d\n",error);
								return NULL;
							}
						}
					}
				} else {
					error = GetLastError();
					ODSEx("OpenService failed! Error=%d", error);
				}
			}
		}
	}
    if (scmHandle != NULL) CloseServiceHandle(scmHandle);

	AdapterNameA = (char*)AdapterName;
	if (AdapterNameA[1] != 0) {  // ASCII
		AdapterNameU = SChar2WChar(AdapterNameA);
		AdapterName = AdapterNameU;
	} else {			         // Unicode
		AdapterNameU = NULL;
	}
	
	lpAdapter = (LPADAPTER)GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,sizeof(ADAPTER));
	if (lpAdapter == NULL) {
		ODS("PacketOpenAdapter: GlobalAlloc Failed\n");
		error = GetLastError();
		if (AdapterNameU != NULL) free(AdapterNameU);
		//set the error to the one on which we failed
		SetLastError(error);
	    ODS("PacketOpenAdapter: Failed to allocate the adapter structure\n");
		return NULL;
	}
	lpAdapter->NumWrites = 1;

	wsprintf(SymbolicLink,TEXT("\\\\.\\%s%s"), DOSNAMEPREFIX, &AdapterName[8]);
	
	// Copy  only the bytes that fit in the adapter structure.
	// Note that lpAdapter->SymbolicLink is present for backward compatibility but will
	// never be used by the apps
	memcpy(lpAdapter->SymbolicLink, (PCHAR)SymbolicLink, MAX_LINK_NAME_LENGTH);

	//try if it is possible to open the adapter immediately
	lpAdapter->hFile = CreateFile(SymbolicLink,GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,0,0);
	
	if (lpAdapter->hFile != INVALID_HANDLE_VALUE) {
	    ODSEx("PacketOpenAdapter: CreateFile(%S) successfull\n", SymbolicLink);
		if (PacketSetReadEvt(lpAdapter) == FALSE) {
			error = GetLastError();
			ODS("PacketOpenAdapter: Unable to open the read event\n");
			if (AdapterNameU != NULL)
				free(AdapterNameU);
			GlobalFreePtr(lpAdapter);
			//set the error to the one on which we failed
			SetLastError(error);
		    ODSEx("PacketOpenAdapter: PacketSetReadEvt failed, Error=%d\n",error);
			return NULL;
		}		
		
		PacketSetMaxLookaheadsize(lpAdapter);
		if (AdapterNameU != NULL)
		    free(AdapterNameU);
		return lpAdapter;
	}
	//this is probably the first request on the packet driver. 
	//We must create the dos device and set the access rights on it
	else {
		Result = DefineDosDevice(DDD_RAW_TARGET_PATH,
                                 &SymbolicLink[4],
                                 AdapterName);
		if (Result) {

		    ODSEx("PacketOpenAdapter: calling CreateFile(%S)\n", SymbolicLink);
			
			lpAdapter->hFile = CreateFile(
                                 SymbolicLink,
                                 GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,0,0);
			if (lpAdapter->hFile != INVALID_HANDLE_VALUE) {		
				if (PacketSetReadEvt(lpAdapter) == FALSE) {
					error = GetLastError();
					ODS("PacketOpenAdapter: Unable to open the read event\n");
					if (AdapterNameU != NULL)
						free(AdapterNameU);
					GlobalFreePtr(lpAdapter);
					//set the error to the one on which we failed
					SetLastError(error);
				    ODSEx("PacketOpenAdapter: PacketSetReadEvt failed, Error=1,%d\n",error);
					return NULL;					
				}
				PacketSetMaxLookaheadsize(lpAdapter);
				if (AdapterNameU != NULL)
				    free(AdapterNameU);
				return lpAdapter;
			} else {
        	    ODS("PacketOpenAdapter: CreateFile failed\n");
			}
		} else {
    	    ODSEx("PacketOpenAdapter: DefineDosDevice(%S) failed\n", &SymbolicLink[4]);
		}
	}
	error = GetLastError();
	if (AdapterNameU != NULL)
	    free(AdapterNameU);
	GlobalFreePtr(lpAdapter);
	//set the error to the one on which we failed
	SetLastError(error);
    ODSEx("PacketOpenAdapter: CreateFile failed, Error=2,%d\n",error);
	return NULL;

}

/*! 
  \brief Closes an adapter.
  \param lpAdapter the pointer to the adapter to close. 

  PacketCloseAdapter closes the given adapter and frees the associated ADAPTER structure
*/
VOID PacketCloseAdapter(LPADAPTER lpAdapter)
{
    CloseHandle(lpAdapter->hFile);
	SetEvent(lpAdapter->ReadEvent);
    CloseHandle(lpAdapter->ReadEvent);
    GlobalFreePtr(lpAdapter);
}

/*! 
  \brief Allocates a _PACKET structure.
  \return On succeess, the return value is the pointer to a _PACKET structure otherwise the 
   return value is NULL.

  The structure returned will be passed to the PacketReceivePacket() function to receive the
  packets from the driver.

  \warning The Buffer field of the _PACKET structure is not set by this function. 
  The buffer \b must be allocated by the application, and associated to the PACKET structure 
  with a call to PacketInitPacket.
*/
LPPACKET PacketAllocatePacket(void)
{

    LPPACKET lpPacket;
    lpPacket = (LPPACKET)GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,sizeof(PACKET));
    if (lpPacket == NULL) {
        ODS("PacketAllocatePacket: GlobalAlloc Failed\n");
        return NULL;
    }
    return lpPacket;
}

/*! 
  \brief Frees a _PACKET structure.
  \param lpPacket The structure to free. 

  \warning the user-allocated buffer associated with the _PACKET structure is not deallocated 
  by this function and \b must be explicitly deallocated by the programmer.

*/
VOID PacketFreePacket(LPPACKET lpPacket)
{
    GlobalFreePtr(lpPacket);
}

/*! 
  \brief Initializes a _PACKET structure.
  \param lpPacket The structure to initialize. 
  \param Buffer A pointer to a user-allocated buffer that will contain the captured data.
  \param Length the length of the buffer. This is the maximum buffer size that will be 
   transferred from the driver to the application using a single read.

  \note the size of the buffer associated with the PACKET structure is a parameter that can sensibly 
  influence the performance of the capture process, since this buffer will contain the packets received
  from the the driver. The driver is able to return several packets using a single read call 
  (see the PacketReceivePacket() function for details), and the number of packets transferable to the 
  application in a call is limited only by the size of the buffer associated with the PACKET structure
  passed to PacketReceivePacket(). Therefore setting a big buffer with PacketInitPacket can noticeably 
  decrease the number of system calls, reducing the impcat of the capture process on the processor.
*/

VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length)
{
    lpPacket->Buffer = Buffer;
    lpPacket->Length = Length;
	lpPacket->ulBytesReceived = 0;
	lpPacket->bIoComplete = FALSE;
}

/*! 
  \brief Read data (packets or statistics) from the NPF driver.
  \param AdapterObject Pointer to an _ADAPTER structure identifying the network adapter from which 
   the data is received.
  \param lpPacket Pointer to a PACKET structure that will contain the data.
  \param Sync This parameter is deprecated and will be ignored. It is present for compatibility with 
   older applications.
  \return If the function succeeds, the return value is nonzero.

  The data received with this function can be a group of packets or a static on the network traffic, 
  depending on the working mode of the driver. The working mode can be set with the PacketSetMode() 
  function. Give a look at that function if you are interested in the format used to return statistics 
  values, here only the normal capture mode will be described.

  The number of packets received with this function is variable. It depends on the number of packets 
  currently stored in the driver’s buffer, on the size of these packets and on the size of the buffer 
  associated to the lpPacket parameter. The following figure shows the format used by the driver to pass 
  packets to the application. 

  \image html encoding.gif "method used to encode the packets"

  Packets are stored in the buffer associated with the lpPacket _PACKET structure. The Length field of
  that structure is updated with the amount of data copied in the buffer. Each packet has a header
  consisting in a bpf_hdr structure that defines its length and contains its timestamp. A padding field 
  is used to word-align the data in the buffer (to speed up the access to the packets). The bh_datalen 
  and bh_hdrlen fields of the bpf_hdr structures should be used to extract the packets from the buffer. 
  
  Examples can be seen either in the TestApp sample application (see the \ref packetsamps page) provided
  in the developer's pack, or in the pcap_read() function of wpcap.
*/
BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync)
{
	BOOLEAN res;
	if ((int)AdapterObject->ReadTimeOut != -1)
		WaitForSingleObject(AdapterObject->ReadEvent, (AdapterObject->ReadTimeOut==0)?INFINITE:AdapterObject->ReadTimeOut);
    res = ReadFile(AdapterObject->hFile, lpPacket->Buffer, lpPacket->Length, &lpPacket->ulBytesReceived,NULL);
	return res;
}

/*! 
  \brief Sends one (or more) copies of a packet to the network.
  \param AdapterObject Pointer to an _ADAPTER structure identifying the network adapter that will 
   send the packets.
  \param lpPacket Pointer to a PACKET structure with the packet to send.
  \param Sync This parameter is deprecated and will be ignored. It is present for compatibility with 
   older applications.
  \return If the function succeeds, the return value is nonzero.

  This function is used to send a raw packet to the network. 'Raw packet' means that the programmer 
  will have to include the protocol headers, since the packet is sent to the network 'as is'. 
  The CRC needs not to be calculated and put at the end of the packet, because it will be transparently 
  added by the network interface.

  The behavior of this function is influenced by the PacketSetNumWrites() function. With PacketSetNumWrites(),
  it is possible to change the number of times a single write must be repeated. The default is 1, 
  i.e. every call to PacketSendPacket() will correspond to one packet sent to the network. If this number is
  greater than 1, for example 1000, every raw packet written by the application will be sent 1000 times on 
  the network. This feature mitigates the overhead of the context switches and therefore can be used to generate 
  high speed traffic. It is particularly useful for tools that test networks, routers, and servers and need 
  to obtain high network loads.
  The optimized sending process is still limited to one packet at a time: for the moment it cannot be used 
  to send a buffer with multiple packets.

  \note The ability to write multiple packets is currently present only in the Windows NTx version of the 
  packet driver. In Windows 95/98/ME it is emulated at user level in packet.dll. This means that an application
  that uses the multiple write method will run in Windows 9x as well, but its performance will be very low 
  compared to the one of WindowsNTx.
*/
BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync)
{
    DWORD BytesTransfered;
    return WriteFile(AdapterObject->hFile,lpPacket->Buffer,lpPacket->Length,&BytesTransfered,NULL);
}


/*! 
  \brief Sends a buffer of packets to the network.
  \param AdapterObject Pointer to an _ADAPTER structure identifying the network adapter that will 
   send the packets.
  \param PacketBuff Pointer to buffer with the packets to send.
  \param Size Size of the buffer pointed by the PacketBuff argument.
  \param Sync if TRUE, the packets are sent respecting the timestamps. If FALSE, the packets are sent as
         fast as possible
  \return The amount of bytes actually sent. If the return value is smaller than the Size parameter, an
          error occurred during the send. The error can be caused by a driver/adapter problem or by an
		  inconsistent/bogus packet buffer.

  This function is used to send a buffer of raw packets to the network. The buffer can contain an arbitrary
  number of raw packets, each of which preceded by a dump_bpf_hdr structure. The dump_bpf_hdr is the same used
  by WinPcap and libpcap to store the packets in a file, therefore sending a capture file is straightforward.
  'Raw packets' means that the sending application will have to include the protocol headers, since every packet 
  is sent to the network 'as is'. The CRC of the packets needs not to be calculated, because it will be 
  transparently added by the network interface.

  \note Using this function if more efficient than issuing a series of PacketSendPacket(), because the packets are
  buffered in the kernel driver, so the number of context switches is reduced.

  \note When Sync is set to TRUE, the packets are synchronized in the kerenl with a high precision timestamp.
  This requires a remarkable amount of CPU, but allows to send the packets with a precision of some microseconds
  (depending on the precision of the performance counter of the machine). Such a precision cannot be reached 
  sending the packets separately with PacketSendPacket().
*/
INT PacketSendPackets(LPADAPTER AdapterObject, PVOID PacketBuff, ULONG Size, BOOLEAN Sync)
{
    BOOLEAN			Res;
    DWORD			BytesTransfered, TotBytesTransfered=0;
	struct timeval	BufStartTime;
	LARGE_INTEGER	StartTicks, CurTicks, TargetTicks, TimeFreq;


	ODS("PacketSendPackets");

	// Obtain starting timestamp of the buffer
	BufStartTime.tv_sec = ((struct timeval*)(PacketBuff))->tv_sec;
	BufStartTime.tv_usec = ((struct timeval*)(PacketBuff))->tv_usec;

	// Retrieve the reference time counters
	QueryPerformanceCounter(&StartTicks);
	QueryPerformanceFrequency(&TimeFreq);

	CurTicks.QuadPart = StartTicks.QuadPart;

	do{
		// Send the data to the driver
		Res = DeviceIoControl(AdapterObject->hFile,
			(Sync)?pBIOCSENDPACKETSSYNC:pBIOCSENDPACKETSNOSYNC,
			(PCHAR)PacketBuff + TotBytesTransfered,
			Size - TotBytesTransfered,
			NULL,
			0,
			&BytesTransfered,
			NULL);

		TotBytesTransfered += BytesTransfered;

		// calculate the time interval to wait before sending the next packet
		TargetTicks.QuadPart = StartTicks.QuadPart +
		(LONGLONG)
		((((struct timeval*)((PCHAR)PacketBuff + TotBytesTransfered))->tv_sec - BufStartTime.tv_sec) * 1000000 +
		(((struct timeval*)((PCHAR)PacketBuff + TotBytesTransfered))->tv_usec - BufStartTime.tv_usec)) *
		(TimeFreq.QuadPart) / 1000000;

		// Exit from the loop on termination or error
		if(TotBytesTransfered >= Size || Res != TRUE)
			break;
		
		// Wait until the time interval has elapsed
		while( CurTicks.QuadPart <= TargetTicks.QuadPart )
			QueryPerformanceCounter(&CurTicks);

	}
	while(TRUE);

	return TotBytesTransfered;
}

/*! 
  \brief Defines the minimum amount of data that will be received in a read.
  \param AdapterObject Pointer to an _ADAPTER structure
  \param nbytes the minimum amount of data in the kernel buffer that will cause the driver to
   release a read on this adapter.
  \return If the function succeeds, the return value is nonzero.

  In presence of a large value for nbytes, the kernel waits for the arrival of several packets before 
  copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, 
  i.e. better performance, which is a good setting for applications like sniffers. Vice versa, a small value 
  means that the kernel will copy the packets as soon as the application is ready to receive them. This is 
  suggested for real time applications (like, for example, a bridge) that need the better responsiveness from 
  the kernel.

  \b note: this function has effect only in Windows NTx. The driver for Windows 9x doesn't offer 
  this possibility, therefore PacketSetMinToCopy is implemented under these systems only for compatibility.
*/

BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes)
{
	DWORD BytesReturned;
    return DeviceIoControl(AdapterObject->hFile,pBIOCSMINTOCOPY,&nbytes,4,NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Sets the working mode of an adapter.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param mode The new working mode of the adapter.
  \return If the function succeeds, the return value is nonzero.

  The device driver of WinPcap has 4 working modes:
  - Capture mode (mode = PACKET_MODE_CAPT): normal capture mode. The packets transiting on the wire are copied
   to the application when PacketReceivePacket() is called. This is the default working mode of an adapter.
  - Statistical mode (mode = PACKET_MODE_STAT): programmable statistical mode. PacketReceivePacket() returns, at
   precise intervals, statics values on the network traffic. The interval between the statistic samples is 
   by default 1 second but it can be set to any other value (with a 1 ms precision) with the 
   PacketSetReadTimeout() function. The data returned by PacketReceivePacket() when the adapter is in statistical
   mode is shown in the following figure:<p>
   	 \image html stats.gif "data structure returned by statistical mode"
   Two 64-bit counters are provided: the number of packets and the amount of bytes that satisfy a filter 
   previously set with PacketSetBPF(). If no filter has been set, all the packets are counted. The counters are 
   encapsulated in a bpf_hdr structure, so that they will be parsed correctly by wpcap. Statistical mode has a 
   very low impact on system performance compared to capture mode. 
  - Dump mode (mode = PACKET_MODE_DUMP): the packets are dumped to disk by the driver, in libpcap format. This
   method is much faster than saving the packets after having captured them. No data is returned 
   by PacketReceivePacket(). If the application sets a filter with PacketSetBPF(), only the packets that satisfy
   this filter are dumped to disk.
  - Statitical Dump mode (mode = PACKET_MODE_STAT_DUMP): the packets are dumped to disk by the driver, in libpcap 
   format, like in dump mode. PacketReceivePacket() returns, at precise intervals, statics values on the 
   network traffic and on the amount of data saved to file, in a way similar to statistical mode.
   The data returned by PacketReceivePacket() when the adapter is in statistical dump mode is shown in 
   the following figure:<p>   
	 \image html dump.gif "data structure returned by statistical dump mode"
   Three 64-bit counters are provided: the number of packets accepted, the amount of bytes accepted and the 
   effective amount of data (including headers) dumped to file. If no filter has been set, all the packets are 
   dumped to disk. The counters are encapsulated in a bpf_hdr structure, so that they will be parsed correctly 
   by wpcap.
   Look at the NetMeter example in the 
   WinPcap developer's pack to see how to use statistics mode.
*/
BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode)
{
	DWORD BytesReturned;
    return DeviceIoControl(AdapterObject->hFile,pBIOCSMODE,&mode,4,NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Sets the name of the file that will receive the packet when the adapter is in dump mode.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param name the file name, in ASCII or UNICODE.
  \param len the length of the buffer containing the name, in bytes.
  \return If the function succeeds, the return value is nonzero.

  This function defines the file name that the driver will open to store the packets on disk when 
  it works in dump mode. The adapter must be in dump mode, i.e. PacketSetMode() should have been
  called previously with mode = PACKET_MODE_DUMP. otherwise this function will fail.
  If PacketSetDumpName was already invoked on the adapter pointed by AdapterObject, the driver 
  closes the old file and opens the new one.
*/

BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len)
{
	DWORD		BytesReturned;
	WCHAR	*FileName;
	BOOLEAN	res;
	WCHAR	NameWithPath[1024];
	int		TStrLen;
	WCHAR	*NamePos;

	if(((PUCHAR)name)[1]!=0 && len>1){ //ASCII
		FileName=SChar2WChar(name);
		len*=2;
	} 
	else {	//Unicode
		FileName=name;
	}

	TStrLen=GetFullPathName(FileName,1024,NameWithPath,&NamePos);

	len=TStrLen*2+2;  //add the terminating null character

	// Try to catch malformed strings
	if(len>2048){
		if(((PUCHAR)name)[1]!=0 && len>1) free(FileName);
		return FALSE;
	}

    res = DeviceIoControl(AdapterObject->hFile,pBIOCSETDUMPFILENAME,NameWithPath,len,NULL,0,&BytesReturned,NULL);
	free(FileName);
	return res;
}

/*!
  \brief Set the dump mode limits.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param maxfilesize The maximum dimension of the dump file, in bytes. 0 means no limit.
  \param maxnpacks The maximum number of packets contained in the dump file. 0 means no limit.
  \return If the function succeeds, the return value is nonzero.

  This function sets the limits after which the NPF driver stops to save the packets to file when an adapter
  is in dump mode. This allows to limit the dump file to a precise number of bytes or packets, avoiding that
  very long dumps fill the disk space. If both maxfilesize and maxnpacks are set, the dump is stopped when
  the first of the two is reached.

  \note When a limit is reached, the dump is stopped, but the file remains opened. In order to flush 
  correctly the data and access the file consistently, you need to close the adapter with PacketCloseAdapter().
*/
BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks)
{
	DWORD		BytesReturned;
	UINT valbuff[2];

	valbuff[0] = maxfilesize;
	valbuff[1] = maxnpacks;

    return DeviceIoControl(AdapterObject->hFile,
		pBIOCSETDUMPLIMITS,
		valbuff,
		sizeof valbuff,
		NULL,
		0,
		&BytesReturned,
		NULL);	
}

/*!
  \brief Returns the status of the kernel dump process, i.e. tells if one of the limits defined with PacketSetDumpLimits() was reached.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param sync if TRUE, the function blocks until the dump is finished, otherwise it returns immediately.
  \return TRUE if the dump is ended, FALSE otherwise.

  PacketIsDumpEnded() informs the user about the limits that were set with a previous call to 
  PacketSetDumpLimits().

  \warning If no calls to PacketSetDumpLimits() were performed or if the dump process has no limits 
  (i.e. if the arguments of the last call to PacketSetDumpLimits() were both 0), setting sync to TRUE will
  block the application on this call forever.
*/
BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync)
{
	DWORD		BytesReturned;
	int		IsDumpEnded;
	BOOLEAN	res;

	if(sync)
		WaitForSingleObject(AdapterObject->ReadEvent, INFINITE);

    res = DeviceIoControl(AdapterObject->hFile,
		pBIOCISDUMPENDED,
		NULL,
		0,
		&IsDumpEnded,
		4,
		&BytesReturned,
		NULL);

	if(res == FALSE) return TRUE; // If the IOCTL returns an error we consider the dump finished

	return (BOOLEAN)IsDumpEnded;
}

/*!
  \brief Returns the notification event associated with the read calls on an adapter.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \return The handle of the event that the driver signals when some data is available in the kernel buffer.

  The event returned by this function is signaled by the driver if:
  - The adapter pointed by AdapterObject is in capture mode and an amount of data greater or equal 
  than the one set with the PacketSetMinToCopy() function is received from the network.
  - the adapter pointed by AdapterObject is in capture mode, no data has been received from the network
   but the the timeout set with the PacketSetReadTimeout() function has elapsed.
  - the adapter pointed by AdapterObject is in statics mode and the the timeout set with the 
   PacketSetReadTimeout() function has elapsed. This means that a new statistic sample is available.

  In every case, a call to PacketReceivePacket() will return immediately.
  The event can be passed to standard Win32 functions (like WaitForSingleObject or WaitForMultipleObjects) 
  to wait until the driver's buffer contains some data. It is particularly useful in GUI applications that 
  need to wait concurrently on several events.

*/
HANDLE PacketGetReadEvent(LPADAPTER AdapterObject)
{
    return AdapterObject->ReadEvent;
}

/*!
  \brief Sets the number of times a single packet written with PacketSendPacket() will be repeated on the network.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param nwrites Number of copies of a packet that will be physically sent by the interface.
  \return If the function succeeds, the return value is nonzero.

	See PacketSendPacket() for details.
*/
BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites)
{
	DWORD BytesReturned;
    return DeviceIoControl(AdapterObject->hFile,pBIOCSWRITEREP,&nwrites,4,NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Sets the timeout after which a read on an adapter returns.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param timeout indicates the timeout, in milliseconds, after which a call to PacketReceivePacket() on 
  the adapter pointed by AdapterObject will be released, also if no packets have been captured by the driver. 
  Setting timeout to 0 means no timeout, i.e. PacketReceivePacket() never returns if no packet arrives.  
  A timeout of -1 causes PacketReceivePacket() to always return immediately.
  \return If the function succeeds, the return value is nonzero.

  \note This function works also if the adapter is working in statistics mode, and can be used to set the 
  time interval between two statistic reports.
*/
BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout)
{
	DWORD BytesReturned;
	int DriverTimeOut=-1;

	AdapterObject->ReadTimeOut=timeout;

    return DeviceIoControl(AdapterObject->hFile,pBIOCSRTIMEOUT,&DriverTimeOut,4,NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Sets the size of the kernel-level buffer associated with a capture.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param dim New size of the buffer, in \b kilobytes.
  \return The function returns TRUE if successfully completed, FALSE if there is not enough memory to 
   allocate the new buffer.

  When a new dimension is set, the data in the old buffer is discarded and the packets stored in it are 
  lost. 
  
  Note: the dimension of the kernel buffer affects heavily the performances of the capture process.
  An adequate buffer in the driver is able to keep the packets while the application is busy, compensating 
  the delays of the application and avoiding the loss of packets during bursts or high network activity. 
  The buffer size is set to 0 when an instance of the driver is opened: the programmer should remember to 
  set it to a proper value. As an example, wpcap sets the buffer size to 1MB at the beginning of a capture.
*/
BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim)
{
	DWORD BytesReturned;
    return DeviceIoControl(AdapterObject->hFile,pBIOCSETBUFFERSIZE,&dim,4,NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Sets a kernel-level packet filter.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param fp Pointer to a filtering program that will be associated with this capture or monitoring 
  instance and that will be executed on every incoming packet.
  \return This function returns TRUE if the filter is set successfully, FALSE if an error occurs 
   or if the filter program is not accepted after a safeness check by the driver.  The driver performs 
   the check in order to avoid system crashes due to buggy or malicious filters, and it rejects non
   conformat filters.

  This function associates a new BPF filter to the adapter AdapterObject. The filter, pointed by fp, is a 
  set of bpf_insn instructions.

  A filter can be automatically created by using the pcap_compile() function of wpcap. This function 
  converts a human readable text expression with the syntax of WinDump (see the manual of WinDump at 
  http://netgroup.polito.it/windump for details) into a BPF program. If your program doesn't link wpcap, but 
  you need to know the code of a particular filter, you can launch WinDump with the -d or -dd or -ddd 
  flags to obtain the pseudocode.

*/
BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp)
{
	DWORD BytesReturned;
    return DeviceIoControl(AdapterObject->hFile,pBIOCSETF,(char*)fp->bf_insns,fp->bf_len*sizeof(struct bpf_insn),NULL,0,&BytesReturned,NULL);
}

/*!
  \brief Returns a couple of statistic values about the current capture session.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param s Pointer to a user provided bpf_stat structure that will be filled by the function.
  \return If the function succeeds, the return value is nonzero.

  With this function, the programmer can know the value of two internal variables of the driver:

  - the number of packets that have been received by the adapter AdapterObject, starting at the 
   time in which it was opened with PacketOpenAdapter. 
  - the number of packets that have been dropped by the driver. A packet is dropped when the kernel
   buffer associated with the adapter is full. 
*/
BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s)
{
	BOOLEAN Res;
	DWORD BytesReturned;
	struct bpf_stat tmpstat;	// We use a support structure to avoid kernel-level inconsistencies with old or malicious applications

	Res = DeviceIoControl(AdapterObject->hFile,
		pBIOCGSTATS,
		NULL,
		0,
		&tmpstat,
		sizeof(struct bpf_stat),
		&BytesReturned,
		NULL);

	// Copy only the first two values retrieved from the driver
	s->bs_recv = tmpstat.bs_recv;
	s->bs_drop = tmpstat.bs_drop;

	return Res;
}

/*!
  \brief Returns statistic values about the current capture session. Enhanced version of PacketGetStats().
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param s Pointer to a user provided bpf_stat structure that will be filled by the function.
  \return If the function succeeds, the return value is nonzero.

  With this function, the programmer can retireve the sname values provided by PacketGetStats(), plus:

  - the number of drops by interface (not yet supported, always 0). 
  - the number of packets that reached the application, i.e that were accepted by the kernel filter and
  that fitted in the kernel buffer. 
*/
BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s)
{
	BOOLEAN Res;
	DWORD BytesReturned;
	struct bpf_stat tmpstat;	// We use a support structure to avoid kernel-level inconsistencies with old or malicious applications

	Res = DeviceIoControl(AdapterObject->hFile,
		pBIOCGSTATS,
		NULL,
		0,
		&tmpstat,
		sizeof(struct bpf_stat),
		&BytesReturned,
		NULL);

	s->bs_recv = tmpstat.bs_recv;
	s->bs_drop = tmpstat.bs_drop;
	s->ps_ifdrop = tmpstat.ps_ifdrop;
	s->bs_capt = tmpstat.bs_capt;

	return Res;
}

/*!
  \brief Performs a query/set operation on an internal variable of the network card driver.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param Set Determines if the operation is a set (Set=TRUE) or a query (Set=FALSE).
  \param OidData A pointer to a _PACKET_OID_DATA structure that contains or receives the data.
  \return If the function succeeds, the return value is nonzero.

  \note not all the network adapters implement all the query/set functions. There is a set of mandatory 
  OID functions that is granted to be present on all the adapters, and a set of facultative functions, not 
  provided by all the cards (see the Microsoft DDKs to see which functions are mandatory). If you use a 
  facultative function, be careful to enclose it in an if statement to check the result.
*/
BOOLEAN PacketRequest(LPADAPTER  AdapterObject,BOOLEAN Set,PPACKET_OID_DATA  OidData)
{
77781330:	55                   	push   %ebp
77781331:	89 e5                	mov    %esp,%ebp
77781333:	56                   	push   %esi
77781334:	53                   	push   %ebx
	//DWORD BytesReturned;
    BOOLEAN Result = 0;
	/*commented out since its broken & needs fixing*/
    /*Result=DeviceIoControl(AdapterObject->hFile,(DWORD) Set ? pBIOCSETOID : pBIOCQUERYOID,
                           OidData,sizeof(PACKET_OID_DATA)-1+OidData->Length,OidData,
                           sizeof(PACKET_OID_DATA)-1+OidData->Length,&BytesReturned,NULL);*/
    
	// output some debug info
	ODSEx("PacketRequest, OID=%d ", OidData->Oid);
77781335:	50                   	push   %eax
77781336:	8b 75 10             	mov    0x10(%ebp),%esi
77781339:	50                   	push   %eax
7778133a:	8a 5d 0c             	mov    0xc(%ebp),%bl
7778133d:	8b 0e                	mov    (%esi),%ecx
    ODSEx("Length=%d ", OidData->Length);
    ODSEx("Set=%d ", Set);
7778133f:	81 e3 ff 00 00 00    	and    $0xff,%ebx
77781345:	51                   	push   %ecx
77781346:	68 94 61 78 77       	push   $0x77786194
7778134b:	e8 30 26 00 00       	call   77783980 <_Trace>
77781350:	58                   	pop    %eax
77781351:	8b 46 04             	mov    0x4(%esi),%eax
77781354:	5a                   	pop    %edx
77781355:	50                   	push   %eax
77781356:	68 ab 61 78 77       	push   $0x777861ab
7778135b:	e8 20 26 00 00       	call   77783980 <_Trace>
77781360:	59                   	pop    %ecx
77781361:	5e                   	pop    %esi
77781362:	53                   	push   %ebx
77781363:	68 b6 61 78 77       	push   $0x777861b6
77781368:	e8 13 26 00 00       	call   77783980 <_Trace>
    ODSEx("Res=%d\n", Result);
7778136d:	58                   	pop    %eax
7778136e:	5a                   	pop    %edx
7778136f:	6a 00                	push   $0x0
77781371:	68 be 61 78 77       	push   $0x777861be
77781376:	e8 05 26 00 00       	call   77783980 <_Trace>

	return Result;
}
7778137b:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
7778137e:	31 c0                	xor    %eax,%eax
77781380:	5b                   	pop    %ebx
77781381:	5e                   	pop    %esi
77781382:	5d                   	pop    %ebp
77781383:	c3                   	ret    
77781384:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
7778138a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77781390 <_PacketSetMaxLookaheadsize>:
77781390:	55                   	push   %ebp
77781391:	89 e5                	mov    %esp,%ebp
77781393:	56                   	push   %esi
77781394:	53                   	push   %ebx
77781395:	83 ec 18             	sub    $0x18,%esp
77781398:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778139b:	6a 0f                	push   $0xf
7778139d:	6a 40                	push   $0x40
7778139f:	e8 4c 27 00 00       	call   77783af0 <_GlobalAlloc@8>
777813a4:	83 c4 0c             	add    $0xc,%esp
777813a7:	50                   	push   %eax
777813a8:	e8 53 27 00 00       	call   77783b00 <_GlobalLock@4>
777813ad:	83 c4 0c             	add    $0xc,%esp
777813b0:	89 c6                	mov    %eax,%esi
777813b2:	85 c0                	test   %eax,%eax
777813b4:	74 50                	je     77781406 <_PacketSetMaxLookaheadsize+0x76>
777813b6:	c7 00 05 01 01 00    	movl   $0x10105,(%eax)
777813bc:	c7 40 04 04 00 00 00 	movl   $0x4,0x4(%eax)
777813c3:	50                   	push   %eax
777813c4:	56                   	push   %esi
777813c5:	6a 00                	push   $0x0
777813c7:	53                   	push   %ebx
777813c8:	e8 63 ff ff ff       	call   77781330 <_PacketRequest>
777813cd:	83 c4 0c             	add    $0xc,%esp
777813d0:	c7 06 0f 01 01 00    	movl   $0x1010f,(%esi)
777813d6:	56                   	push   %esi
777813d7:	6a 01                	push   $0x1
777813d9:	53                   	push   %ebx
777813da:	e8 51 ff ff ff       	call   77781330 <_PacketRequest>
777813df:	89 34 24             	mov    %esi,(%esp)
777813e2:	88 c3                	mov    %al,%bl
777813e4:	e8 27 27 00 00       	call   77783b10 <_GlobalHandle@4>
777813e9:	50                   	push   %eax
777813ea:	e8 31 27 00 00       	call   77783b20 <_GlobalUnlock@4>
777813ef:	56                   	push   %esi
777813f0:	e8 1b 27 00 00       	call   77783b10 <_GlobalHandle@4>
777813f5:	50                   	push   %eax
777813f6:	e8 35 27 00 00       	call   77783b30 <_GlobalFree@4>
777813fb:	31 c0                	xor    %eax,%eax
777813fd:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77781400:	88 d8                	mov    %bl,%al
77781402:	5b                   	pop    %ebx
77781403:	5e                   	pop    %esi
77781404:	5d                   	pop    %ebp
77781405:	c3                   	ret    
77781406:	83 ec 0c             	sub    $0xc,%esp
77781409:	68 c8 61 78 77       	push   $0x777861c8
7778140e:	e8 7d 26 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781413:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77781416:	31 c0                	xor    %eax,%eax
77781418:	5b                   	pop    %ebx
77781419:	5e                   	pop    %esi
7778141a:	5d                   	pop    %ebp
7778141b:	c3                   	ret    
7778141c:	8d 74 26 00          	lea    0x0(%esi),%esi

77781420 <_PacketInstallDriver>:
77781420:	55                   	push   %ebp
77781421:	89 e5                	mov    %esp,%ebp
77781423:	57                   	push   %edi
77781424:	56                   	push   %esi
77781425:	53                   	push   %ebx
77781426:	83 ec 18             	sub    $0x18,%esp
77781429:	31 f6                	xor    %esi,%esi
7778142b:	8b 5d 10             	mov    0x10(%ebp),%ebx
7778142e:	8b 7d 0c             	mov    0xc(%ebp),%edi
77781431:	68 0c 62 78 77       	push   $0x7778620c
77781436:	e8 55 26 00 00       	call   77783a90 <_OutputDebugStringW@4>
7778143b:	53                   	push   %ebx
7778143c:	e8 ff 26 00 00       	call   77783b40 <_GetFileAttributesW@4>
77781441:	83 c4 0c             	add    $0xc,%esp
77781444:	40                   	inc    %eax
77781445:	74 59                	je     777814a0 <_PacketInstallDriver+0x80>
77781447:	83 ec 0c             	sub    $0xc,%esp
7778144a:	6a 00                	push   $0x0
7778144c:	6a 00                	push   $0x0
7778144e:	6a 00                	push   $0x0
77781450:	6a 00                	push   $0x0
77781452:	6a 00                	push   $0x0
77781454:	53                   	push   %ebx
77781455:	6a 01                	push   $0x1
77781457:	6a 03                	push   $0x3
77781459:	6a 01                	push   $0x1
7778145b:	68 ff 01 0f 00       	push   $0xf01ff
77781460:	a1 0c 50 78 77       	mov    0x7778500c,%eax
77781465:	50                   	push   %eax
77781466:	8b 1d 10 50 78 77    	mov    0x77785010,%ebx
7778146c:	53                   	push   %ebx
7778146d:	8b 4d 08             	mov    0x8(%ebp),%ecx
77781470:	51                   	push   %ecx
77781471:	e8 ba 27 00 00       	call   77783c30 <_CreateServiceW@52>
77781476:	83 c4 0c             	add    $0xc,%esp
77781479:	85 c0                	test   %eax,%eax
7778147b:	89 07                	mov    %eax,(%edi)
7778147d:	74 15                	je     77781494 <_PacketInstallDriver+0x74>
7778147f:	be 01 00 00 00       	mov    $0x1,%esi
77781484:	8b 07                	mov    (%edi),%eax
77781486:	85 c0                	test   %eax,%eax
77781488:	75 3a                	jne    777814c4 <_PacketInstallDriver+0xa4>
7778148a:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778148d:	89 f0                	mov    %esi,%eax
7778148f:	5b                   	pop    %ebx
77781490:	5e                   	pop    %esi
77781491:	5f                   	pop    %edi
77781492:	5d                   	pop    %ebp
77781493:	c3                   	ret    
77781494:	e8 37 26 00 00       	call   77783ad0 <_GetLastError@0>
77781499:	3d 31 04 00 00       	cmp    $0x431,%eax
7778149e:	74 3a                	je     777814da <_PacketInstallDriver+0xba>
777814a0:	e8 2b 26 00 00       	call   77783ad0 <_GetLastError@0>
777814a5:	83 f8 02             	cmp    $0x2,%eax
777814a8:	74 e0                	je     7778148a <_PacketInstallDriver+0x6a>
777814aa:	52                   	push   %edx
777814ab:	52                   	push   %edx
777814ac:	50                   	push   %eax
777814ad:	68 2c 62 78 77       	push   $0x7778622c
777814b2:	e8 c9 24 00 00       	call   77783980 <_Trace>
777814b7:	89 f0                	mov    %esi,%eax
777814b9:	83 c4 10             	add    $0x10,%esp
777814bc:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777814bf:	5b                   	pop    %ebx
777814c0:	5e                   	pop    %esi
777814c1:	5f                   	pop    %edi
777814c2:	5d                   	pop    %ebp
777814c3:	c3                   	ret    
777814c4:	83 ec 0c             	sub    $0xc,%esp
777814c7:	50                   	push   %eax
777814c8:	e8 73 27 00 00       	call   77783c40 <_CloseServiceHandle@4>
777814cd:	89 f0                	mov    %esi,%eax
777814cf:	83 c4 0c             	add    $0xc,%esp
777814d2:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777814d5:	5b                   	pop    %ebx
777814d6:	5e                   	pop    %esi
777814d7:	5f                   	pop    %edi
777814d8:	5d                   	pop    %ebp
777814d9:	c3                   	ret    
777814da:	66 be 01 00          	mov    $0x1,%si
777814de:	eb a4                	jmp    77781484 <_PacketInstallDriver+0x64>

777814e0 <_inet_addrU>:
777814e0:	55                   	push   %ebp
777814e1:	89 e5                	mov    %esp,%ebp
777814e3:	57                   	push   %edi
777814e4:	56                   	push   %esi
777814e5:	53                   	push   %ebx
777814e6:	53                   	push   %ebx
777814e7:	8b 75 08             	mov    0x8(%ebp),%esi
777814ea:	c7 45 f0 00 00 00 00 	movl   $0x0,0xfffffff0(%ebp)
777814f1:	31 ff                	xor    %edi,%edi
777814f3:	66 8b 06             	mov    (%esi),%ax
777814f6:	31 db                	xor    %ebx,%ebx
777814f8:	83 c6 02             	add    $0x2,%esi
777814fb:	89 c2                	mov    %eax,%edx
777814fd:	66 85 c0             	test   %ax,%ax
77781500:	74 37                	je     77781539 <_inet_addrU+0x59>
77781502:	66 83 f8 2e          	cmp    $0x2e,%ax
77781506:	74 31                	je     77781539 <_inet_addrU+0x59>
77781508:	8d 42 d0             	lea    0xffffffd0(%edx),%eax
7778150b:	66 83 f8 09          	cmp    $0x9,%ax
7778150f:	77 57                	ja     77781568 <_inet_addrU+0x88>
77781511:	81 e2 ff ff 00 00    	and    $0xffff,%edx
77781517:	8d 04 9b             	lea    (%ebx,%ebx,4),%eax
7778151a:	8d 5c 42 d0          	lea    0xffffffd0(%edx,%eax,2),%ebx
7778151e:	66 8b 06             	mov    (%esi),%ax
77781521:	89 c2                	mov    %eax,%edx
77781523:	83 c6 02             	add    $0x2,%esi
77781526:	66 85 c0             	test   %ax,%ax
77781529:	74 06                	je     77781531 <_inet_addrU+0x51>
7778152b:	66 83 f8 2e          	cmp    $0x2e,%ax
7778152f:	75 d7                	jne    77781508 <_inet_addrU+0x28>
77781531:	81 fb ff 00 00 00    	cmp    $0xff,%ebx
77781537:	77 2f                	ja     77781568 <_inet_addrU+0x88>
77781539:	8d 0c fd 00 00 00 00 	lea    0x0(,%edi,8),%ecx
77781540:	d3 e3                	shl    %cl,%ebx
77781542:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
77781545:	09 d9                	or     %ebx,%ecx
77781547:	83 ff 03             	cmp    $0x3,%edi
7778154a:	89 4d f0             	mov    %ecx,0xfffffff0(%ebp)
7778154d:	74 14                	je     77781563 <_inet_addrU+0x83>
7778154f:	66 85 d2             	test   %dx,%dx
77781552:	74 14                	je     77781568 <_inet_addrU+0x88>
77781554:	47                   	inc    %edi
77781555:	83 ff 03             	cmp    $0x3,%edi
77781558:	7e 99                	jle    777814f3 <_inet_addrU+0x13>
7778155a:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
7778155d:	5a                   	pop    %edx
7778155e:	5b                   	pop    %ebx
7778155f:	5e                   	pop    %esi
77781560:	5f                   	pop    %edi
77781561:	5d                   	pop    %ebp
77781562:	c3                   	ret    
77781563:	66 85 d2             	test   %dx,%dx
77781566:	74 ec                	je     77781554 <_inet_addrU+0x74>
77781568:	83 c8 ff             	or     $0xffffffff,%eax
7778156b:	5a                   	pop    %edx
7778156c:	5b                   	pop    %ebx
7778156d:	5e                   	pop    %esi
7778156e:	5f                   	pop    %edi
7778156f:	5d                   	pop    %ebp
77781570:	c3                   	ret    
77781571:	eb 0d                	jmp    77781580 <_PacketGetVersion>
77781573:	90                   	nop    
77781574:	90                   	nop    
77781575:	90                   	nop    
77781576:	90                   	nop    
77781577:	90                   	nop    
77781578:	90                   	nop    
77781579:	90                   	nop    
7778157a:	90                   	nop    
7778157b:	90                   	nop    
7778157c:	90                   	nop    
7778157d:	90                   	nop    
7778157e:	90                   	nop    
7778157f:	90                   	nop    

77781580 <_PacketGetVersion>:
77781580:	55                   	push   %ebp
77781581:	b8 00 50 78 77       	mov    $0x77785000,%eax
77781586:	89 e5                	mov    %esp,%ebp
77781588:	5d                   	pop    %ebp
77781589:	c3                   	ret    
7778158a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77781590 <_PacketGetNetType>:
77781590:	55                   	push   %ebp
77781591:	89 e5                	mov    %esp,%ebp
77781593:	57                   	push   %edi
77781594:	56                   	push   %esi
77781595:	53                   	push   %ebx
77781596:	83 ec 24             	sub    $0x24,%esp
77781599:	8b 5d 08             	mov    0x8(%ebp),%ebx
7778159c:	8b 7d 0c             	mov    0xc(%ebp),%edi
7778159f:	6a 0f                	push   $0xf
777815a1:	6a 40                	push   $0x40
777815a3:	e8 48 25 00 00       	call   77783af0 <_GlobalAlloc@8>
777815a8:	83 c4 0c             	add    $0xc,%esp
777815ab:	50                   	push   %eax
777815ac:	e8 4f 25 00 00       	call   77783b00 <_GlobalLock@4>
777815b1:	83 c4 0c             	add    $0xc,%esp
777815b4:	89 c6                	mov    %eax,%esi
777815b6:	85 c0                	test   %eax,%eax
777815b8:	0f 84 8a 00 00 00    	je     77781648 <_PacketGetNetType+0xb8>
777815be:	c7 00 04 01 01 00    	movl   $0x10104,(%eax)
777815c4:	c7 40 04 04 00 00 00 	movl   $0x4,0x4(%eax)
777815cb:	50                   	push   %eax
777815cc:	56                   	push   %esi
777815cd:	6a 00                	push   $0x0
777815cf:	53                   	push   %ebx
777815d0:	e8 5b fd ff ff       	call   77781330 <_PacketRequest>
777815d5:	8b 46 08             	mov    0x8(%esi),%eax
777815d8:	83 c4 0c             	add    $0xc,%esp
777815db:	89 07                	mov    %eax,(%edi)
777815dd:	c7 06 07 01 01 00    	movl   $0x10107,(%esi)
777815e3:	c7 46 04 04 00 00 00 	movl   $0x4,0x4(%esi)
777815ea:	56                   	push   %esi
777815eb:	6a 00                	push   $0x0
777815ed:	53                   	push   %ebx
777815ee:	e8 3d fd ff ff       	call   77781330 <_PacketRequest>
777815f3:	88 c3                	mov    %al,%bl
777815f5:	8b 46 08             	mov    0x8(%esi),%eax
777815f8:	8d 04 80             	lea    (%eax,%eax,4),%eax
777815fb:	8d 04 80             	lea    (%eax,%eax,4),%eax
777815fe:	c1 e0 02             	shl    $0x2,%eax
77781601:	89 47 04             	mov    %eax,0x4(%edi)
77781604:	89 34 24             	mov    %esi,(%esp)
77781607:	e8 04 25 00 00       	call   77783b10 <_GlobalHandle@4>
7778160c:	50                   	push   %eax
7778160d:	e8 0e 25 00 00       	call   77783b20 <_GlobalUnlock@4>
77781612:	56                   	push   %esi
77781613:	e8 f8 24 00 00       	call   77783b10 <_GlobalHandle@4>
77781618:	50                   	push   %eax
77781619:	e8 12 25 00 00       	call   77783b30 <_GlobalFree@4>
7778161e:	8b 0f                	mov    (%edi),%ecx
77781620:	5e                   	pop    %esi
77781621:	51                   	push   %ecx
77781622:	68 52 62 78 77       	push   $0x77786252
77781627:	e8 54 23 00 00       	call   77783980 <_Trace>
7778162c:	8b 77 04             	mov    0x4(%edi),%esi
7778162f:	58                   	pop    %eax
77781630:	5a                   	pop    %edx
77781631:	56                   	push   %esi
77781632:	68 5c 62 78 77       	push   $0x7778625c
77781637:	e8 44 23 00 00       	call   77783980 <_Trace>
7778163c:	31 c0                	xor    %eax,%eax
7778163e:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781641:	88 d8                	mov    %bl,%al
77781643:	5b                   	pop    %ebx
77781644:	5e                   	pop    %esi
77781645:	5f                   	pop    %edi
77781646:	5d                   	pop    %ebp
77781647:	c3                   	ret    
77781648:	83 ec 0c             	sub    $0xc,%esp
7778164b:	68 68 62 78 77       	push   $0x77786268
77781650:	e8 3b 24 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781655:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781658:	31 c0                	xor    %eax,%eax
7778165a:	5b                   	pop    %ebx
7778165b:	5e                   	pop    %esi
7778165c:	5f                   	pop    %edi
7778165d:	5d                   	pop    %ebp
7778165e:	c3                   	ret    
7778165f:	90                   	nop    

77781660 <_PacketStopDriver>:
77781660:	55                   	push   %ebp
77781661:	89 e5                	mov    %esp,%ebp
77781663:	57                   	push   %edi
77781664:	56                   	push   %esi
77781665:	53                   	push   %ebx
77781666:	83 ec 30             	sub    $0x30,%esp
77781669:	68 3f 00 0f 00       	push   $0xf003f
7778166e:	6a 00                	push   $0x0
77781670:	6a 00                	push   $0x0
77781672:	e8 d9 25 00 00       	call   77783c50 <_OpenSCManagerW@12>
77781677:	89 c7                	mov    %eax,%edi
77781679:	5a                   	pop    %edx
7778167a:	85 c0                	test   %eax,%eax
7778167c:	74 42                	je     777816c0 <_PacketStopDriver+0x60>
7778167e:	50                   	push   %eax
7778167f:	68 ff 01 0f 00       	push   $0xf01ff
77781684:	a1 10 50 78 77       	mov    0x77785010,%eax
77781689:	50                   	push   %eax
7778168a:	57                   	push   %edi
7778168b:	e8 d0 25 00 00       	call   77783c60 <_OpenServiceW@12>
77781690:	89 c6                	mov    %eax,%esi
77781692:	58                   	pop    %eax
77781693:	85 f6                	test   %esi,%esi
77781695:	74 29                	je     777816c0 <_PacketStopDriver+0x60>
77781697:	50                   	push   %eax
77781698:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
7778169b:	50                   	push   %eax
7778169c:	6a 01                	push   $0x1
7778169e:	56                   	push   %esi
7778169f:	e8 cc 25 00 00       	call   77783c70 <_ControlService@12>
777816a4:	89 c3                	mov    %eax,%ebx
777816a6:	50                   	push   %eax
777816a7:	50                   	push   %eax
777816a8:	56                   	push   %esi
777816a9:	e8 92 25 00 00       	call   77783c40 <_CloseServiceHandle@4>
777816ae:	57                   	push   %edi
777816af:	e8 8c 25 00 00       	call   77783c40 <_CloseServiceHandle@4>
777816b4:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777816b7:	89 d8                	mov    %ebx,%eax
777816b9:	5b                   	pop    %ebx
777816ba:	5e                   	pop    %esi
777816bb:	5f                   	pop    %edi
777816bc:	5d                   	pop    %ebp
777816bd:	c3                   	ret    
777816be:	89 f6                	mov    %esi,%esi
777816c0:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777816c3:	31 c0                	xor    %eax,%eax
777816c5:	5b                   	pop    %ebx
777816c6:	5e                   	pop    %esi
777816c7:	5f                   	pop    %edi
777816c8:	5d                   	pop    %ebp
777816c9:	c3                   	ret    
777816ca:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

777816d0 <_PacketOpenAdapter>:
777816d0:	55                   	push   %ebp
777816d1:	89 e5                	mov    %esp,%ebp
777816d3:	57                   	push   %edi
777816d4:	56                   	push   %esi
777816d5:	53                   	push   %ebx
777816d6:	81 ec 44 07 00 00    	sub    $0x744,%esp
777816dc:	c7 85 c0 f8 ff ff 00 	movl   $0x0,0xfffff8c0(%ebp)
777816e3:	00 00 00 
777816e6:	8b 4d 08             	mov    0x8(%ebp),%ecx
777816e9:	51                   	push   %ecx
777816ea:	68 9c 62 78 77       	push   $0x7778629c
777816ef:	e8 8c 22 00 00       	call   77783980 <_Trace>
777816f4:	83 c4 0c             	add    $0xc,%esp
777816f7:	68 3f 00 0f 00       	push   $0xf003f
777816fc:	6a 00                	push   $0x0
777816fe:	6a 00                	push   $0x0
77781700:	e8 4b 25 00 00       	call   77783c50 <_OpenSCManagerW@12>
77781705:	a3 24 80 78 77       	mov    %eax,0x77788024
7778170a:	85 c0                	test   %eax,%eax
7778170c:	5a                   	pop    %edx
7778170d:	0f 85 2d 01 00 00    	jne    77781840 <_PacketOpenAdapter+0x170>
77781713:	e8 b8 23 00 00       	call   77783ad0 <_GetLastError@0>
77781718:	89 c3                	mov    %eax,%ebx
7778171a:	50                   	push   %eax
7778171b:	50                   	push   %eax
7778171c:	53                   	push   %ebx
7778171d:	68 d0 62 78 77       	push   $0x777862d0
77781722:	e8 59 22 00 00       	call   77783980 <_Trace>
77781727:	83 c4 10             	add    $0x10,%esp
7778172a:	a1 24 80 78 77       	mov    0x77788024,%eax
7778172f:	85 c0                	test   %eax,%eax
77781731:	0f 85 99 03 00 00    	jne    77781ad0 <_PacketOpenAdapter+0x400>
77781737:	8b 45 08             	mov    0x8(%ebp),%eax
7778173a:	c7 85 b8 f8 ff ff 00 	movl   $0x0,0xfffff8b8(%ebp)
77781741:	00 00 00 
77781744:	80 78 01 00          	cmpb   $0x0,0x1(%eax)
77781748:	0f 85 a5 03 00 00    	jne    77781af3 <_PacketOpenAdapter+0x423>
7778174e:	83 ec 18             	sub    $0x18,%esp
77781751:	6a 50                	push   $0x50
77781753:	6a 40                	push   $0x40
77781755:	e8 96 23 00 00       	call   77783af0 <_GlobalAlloc@8>
7778175a:	83 c4 0c             	add    $0xc,%esp
7778175d:	50                   	push   %eax
7778175e:	e8 9d 23 00 00       	call   77783b00 <_GlobalLock@4>
77781763:	83 c4 0c             	add    $0xc,%esp
77781766:	85 c0                	test   %eax,%eax
77781768:	89 85 bc f8 ff ff    	mov    %eax,0xfffff8bc(%ebp)
7778176e:	0f 84 7e 05 00 00    	je     77781cf2 <_PacketOpenAdapter+0x622>
77781774:	8b 95 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edx
7778177a:	8b 45 08             	mov    0x8(%ebp),%eax
7778177d:	83 c0 10             	add    $0x10,%eax
77781780:	8d 9d c8 f8 ff ff    	lea    0xfffff8c8(%ebp),%ebx
77781786:	c7 42 44 01 00 00 00 	movl   $0x1,0x44(%edx)
7778178d:	50                   	push   %eax
7778178e:	68 f0 62 78 77       	push   $0x777862f0
77781793:	68 00 63 78 77       	push   $0x77786300
77781798:	53                   	push   %ebx
77781799:	e8 b2 2b 00 00       	call   77784350 <_wsprintfW>
7778179e:	8b bd bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edi
777817a4:	b9 10 00 00 00       	mov    $0x10,%ecx
777817a9:	fc                   	cld    
777817aa:	83 c7 04             	add    $0x4,%edi
777817ad:	89 de                	mov    %ebx,%esi
777817af:	f3 a5                	repz movsl %ds:(%esi),%es:(%edi)
777817b1:	83 c4 0c             	add    $0xc,%esp
777817b4:	6a 00                	push   $0x0
777817b6:	6a 00                	push   $0x0
777817b8:	6a 03                	push   $0x3
777817ba:	6a 00                	push   $0x0
777817bc:	6a 00                	push   $0x0
777817be:	68 00 00 00 c0       	push   $0xc0000000
777817c3:	53                   	push   %ebx
777817c4:	e8 87 23 00 00       	call   77783b50 <_CreateFileW@28>
777817c9:	8b 95 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edx
777817cf:	89 02                	mov    %eax,(%edx)
777817d1:	40                   	inc    %eax
777817d2:	5a                   	pop    %edx
777817d3:	0f 84 37 03 00 00    	je     77781b10 <_PacketOpenAdapter+0x440>
777817d9:	50                   	push   %eax
777817da:	50                   	push   %eax
777817db:	53                   	push   %ebx
777817dc:	68 14 63 78 77       	push   $0x77786314
777817e1:	e8 9a 21 00 00       	call   77783980 <_Trace>
777817e6:	58                   	pop    %eax
777817e7:	8b 85 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%eax
777817ed:	50                   	push   %eax
777817ee:	e8 5d fa ff ff       	call   77781250 <_PacketSetReadEvt>
777817f3:	83 c4 10             	add    $0x10,%esp
777817f6:	84 c0                	test   %al,%al
777817f8:	0f 84 6d 04 00 00    	je     77781c6b <_PacketOpenAdapter+0x59b>
777817fe:	83 ec 0c             	sub    $0xc,%esp
77781801:	8b 85 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%eax
77781807:	50                   	push   %eax
77781808:	e8 83 fb ff ff       	call   77781390 <_PacketSetMaxLookaheadsize>
7778180d:	8b 85 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%eax
77781813:	83 c4 10             	add    $0x10,%esp
77781816:	85 c0                	test   %eax,%eax
77781818:	74 12                	je     7778182c <_PacketOpenAdapter+0x15c>
7778181a:	83 ec 0c             	sub    $0xc,%esp
7778181d:	8b 85 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%eax
77781823:	50                   	push   %eax
77781824:	e8 b7 2a 00 00       	call   777842e0 <_free>
77781829:	83 c4 10             	add    $0x10,%esp
7778182c:	8b 95 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edx
77781832:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781835:	89 d0                	mov    %edx,%eax
77781837:	5b                   	pop    %ebx
77781838:	5e                   	pop    %esi
77781839:	5f                   	pop    %edi
7778183a:	5d                   	pop    %ebp
7778183b:	c3                   	ret    
7778183c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781840:	66 c7 85 e8 fb ff ff 	movw   $0x0,0xfffffbe8(%ebp)
77781847:	00 00 
77781849:	8d 9d e8 fb ff ff    	lea    0xfffffbe8(%ebp),%ebx
7778184f:	50                   	push   %eax
77781850:	50                   	push   %eax
77781851:	53                   	push   %ebx
77781852:	68 00 02 00 00       	push   $0x200
77781857:	e8 04 23 00 00       	call   77783b60 <_GetCurrentDirectoryW@8>
7778185c:	a1 08 50 78 77       	mov    0x77785008,%eax
77781861:	50                   	push   %eax
77781862:	53                   	push   %ebx
77781863:	e8 d8 21 00 00       	call   77783a40 <_wcslen>
77781868:	8d 04 43             	lea    (%ebx,%eax,2),%eax
7778186b:	89 04 24             	mov    %eax,(%esp)
7778186e:	e8 dd 2a 00 00       	call   77784350 <_wsprintfW>
77781873:	8d 85 c4 f8 ff ff    	lea    0xfffff8c4(%ebp),%eax
77781879:	89 04 24             	mov    %eax,(%esp)
7778187c:	68 19 00 02 00       	push   $0x20019
77781881:	6a 00                	push   $0x0
77781883:	a1 04 50 78 77       	mov    0x77785004,%eax
77781888:	50                   	push   %eax
77781889:	68 02 00 00 80       	push   $0x80000002
7778188e:	e8 ed 23 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77781893:	83 c4 0c             	add    $0xc,%esp
77781896:	85 c0                	test   %eax,%eax
77781898:	0f 85 e2 00 00 00    	jne    77781980 <_PacketOpenAdapter+0x2b0>
7778189e:	83 ec 0c             	sub    $0xc,%esp
777818a1:	8b bd c4 f8 ff ff    	mov    0xfffff8c4(%ebp),%edi
777818a7:	57                   	push   %edi
777818a8:	e8 e3 23 00 00       	call   77783c90 <_RegCloseKey@4>
777818ad:	83 c4 0c             	add    $0xc,%esp
777818b0:	52                   	push   %edx
777818b1:	6a 14                	push   $0x14
777818b3:	a1 10 50 78 77       	mov    0x77785010,%eax
777818b8:	50                   	push   %eax
777818b9:	a1 24 80 78 77       	mov    0x77788024,%eax
777818be:	50                   	push   %eax
777818bf:	e8 9c 23 00 00       	call   77783c60 <_OpenServiceW@12>
777818c4:	89 c2                	mov    %eax,%edx
777818c6:	a3 20 80 78 77       	mov    %eax,0x77788020
777818cb:	58                   	pop    %eax
777818cc:	85 d2                	test   %edx,%edx
777818ce:	0f 84 13 03 00 00    	je     77781be7 <_PacketOpenAdapter+0x517>
777818d4:	50                   	push   %eax
777818d5:	50                   	push   %eax
777818d6:	8d 85 c8 f9 ff ff    	lea    0xfffff9c8(%ebp),%eax
777818dc:	50                   	push   %eax
777818dd:	52                   	push   %edx
777818de:	e8 bd 23 00 00       	call   77783ca0 <_QueryServiceStatus@8>
777818e3:	88 c3                	mov    %al,%bl
777818e5:	8b 85 cc f9 ff ff    	mov    0xfffff9cc(%ebp),%eax
777818eb:	50                   	push   %eax
777818ec:	68 44 63 78 77       	push   $0x77786344
777818f1:	e8 8a 20 00 00       	call   77783980 <_Trace>
777818f6:	83 c4 10             	add    $0x10,%esp
777818f9:	84 db                	test   %bl,%bl
777818fb:	74 0d                	je     7778190a <_PacketOpenAdapter+0x23a>
777818fd:	83 bd cc f9 ff ff 04 	cmpl   $0x4,0xfffff9cc(%ebp)
77781904:	0f 84 20 fe ff ff    	je     7778172a <_PacketOpenAdapter+0x5a>
7778190a:	83 ec 0c             	sub    $0xc,%esp
7778190d:	68 64 63 78 77       	push   $0x77786364
77781912:	e8 79 21 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781917:	5f                   	pop    %edi
77781918:	58                   	pop    %eax
77781919:	6a 00                	push   $0x0
7778191b:	6a 00                	push   $0x0
7778191d:	8b 35 20 80 78 77    	mov    0x77788020,%esi
77781923:	56                   	push   %esi
77781924:	e8 87 23 00 00       	call   77783cb0 <_StartServiceW@12>
77781929:	5b                   	pop    %ebx
7778192a:	85 c0                	test   %eax,%eax
7778192c:	0f 85 f8 fd ff ff    	jne    7778172a <_PacketOpenAdapter+0x5a>
77781932:	e8 99 21 00 00       	call   77783ad0 <_GetLastError@0>
77781937:	3d 20 04 00 00       	cmp    $0x420,%eax
7778193c:	89 c3                	mov    %eax,%ebx
7778193e:	0f 95 c2             	setne  %dl
77781941:	3d b7 00 00 00       	cmp    $0xb7,%eax
77781946:	0f 95 c0             	setne  %al
77781949:	25 ff 00 00 00       	and    $0xff,%eax
7778194e:	85 c2                	test   %eax,%edx
77781950:	0f 84 d4 fd ff ff    	je     7778172a <_PacketOpenAdapter+0x5a>
77781956:	83 ec 0c             	sub    $0xc,%esp
77781959:	53                   	push   %ebx
7778195a:	e8 11 22 00 00       	call   77783b70 <_SetLastError@4>
7778195f:	a1 24 80 78 77       	mov    0x77788024,%eax
77781964:	83 c4 0c             	add    $0xc,%esp
77781967:	85 c0                	test   %eax,%eax
77781969:	0f 85 d0 03 00 00    	jne    77781d3f <_PacketOpenAdapter+0x66f>
7778196f:	e8 5c 21 00 00       	call   77783ad0 <_GetLastError@0>
77781974:	89 c3                	mov    %eax,%ebx
77781976:	e9 39 01 00 00       	jmp    77781ab4 <_PacketOpenAdapter+0x3e4>
7778197b:	90                   	nop    
7778197c:	8d 74 26 00          	lea    0x0(%esi),%esi
77781980:	8d bd c0 f8 ff ff    	lea    0xfffff8c0(%ebp),%edi
77781986:	56                   	push   %esi
77781987:	53                   	push   %ebx
77781988:	57                   	push   %edi
77781989:	8b 0d 24 80 78 77    	mov    0x77788024,%ecx
7778198f:	51                   	push   %ecx
77781990:	e8 8b fa ff ff       	call   77781420 <_PacketInstallDriver>
77781995:	83 c4 10             	add    $0x10,%esp
77781998:	84 c0                	test   %al,%al
7778199a:	0f 85 10 ff ff ff    	jne    777818b0 <_PacketOpenAdapter+0x1e0>
777819a0:	8d b5 e8 f9 ff ff    	lea    0xfffff9e8(%ebp),%esi
777819a6:	51                   	push   %ecx
777819a7:	51                   	push   %ecx
777819a8:	68 00 01 00 00       	push   $0x100
777819ad:	56                   	push   %esi
777819ae:	e8 cd 21 00 00       	call   77783b80 <_GetSystemDirectoryW@8>
777819b3:	59                   	pop    %ecx
777819b4:	5a                   	pop    %edx
777819b5:	31 d2                	xor    %edx,%edx
777819b7:	85 c0                	test   %eax,%eax
777819b9:	0f 84 73 fe ff ff    	je     77781832 <_PacketOpenAdapter+0x162>
777819bf:	8b 15 08 50 78 77    	mov    0x77785008,%edx
777819c5:	52                   	push   %edx
777819c6:	56                   	push   %esi
777819c7:	68 90 63 78 77       	push   $0x77786390
777819cc:	53                   	push   %ebx
777819cd:	e8 7e 29 00 00       	call   77784350 <_wsprintfW>
777819d2:	83 c4 0c             	add    $0xc,%esp
777819d5:	53                   	push   %ebx
777819d6:	57                   	push   %edi
777819d7:	a1 24 80 78 77       	mov    0x77788024,%eax
777819dc:	50                   	push   %eax
777819dd:	e8 3e fa ff ff       	call   77781420 <_PacketInstallDriver>
777819e2:	83 c4 10             	add    $0x10,%esp
777819e5:	84 c0                	test   %al,%al
777819e7:	0f 84 3d fd ff ff    	je     7778172a <_PacketOpenAdapter+0x5a>
777819ed:	50                   	push   %eax
777819ee:	6a 10                	push   $0x10
777819f0:	a1 10 50 78 77       	mov    0x77785010,%eax
777819f5:	50                   	push   %eax
777819f6:	a1 24 80 78 77       	mov    0x77788024,%eax
777819fb:	50                   	push   %eax
777819fc:	e8 5f 22 00 00       	call   77783c60 <_OpenServiceW@12>
77781a01:	89 c2                	mov    %eax,%edx
77781a03:	a3 20 80 78 77       	mov    %eax,0x77788020
77781a08:	58                   	pop    %eax
77781a09:	85 d2                	test   %edx,%edx
77781a0b:	0f 84 d6 01 00 00    	je     77781be7 <_PacketOpenAdapter+0x517>
77781a11:	50                   	push   %eax
77781a12:	50                   	push   %eax
77781a13:	8d 85 c8 f9 ff ff    	lea    0xfffff9c8(%ebp),%eax
77781a19:	50                   	push   %eax
77781a1a:	52                   	push   %edx
77781a1b:	e8 80 22 00 00       	call   77783ca0 <_QueryServiceStatus@8>
77781a20:	8b bd cc f9 ff ff    	mov    0xfffff9cc(%ebp),%edi
77781a26:	88 c3                	mov    %al,%bl
77781a28:	57                   	push   %edi
77781a29:	68 44 63 78 77       	push   $0x77786344
77781a2e:	e8 4d 1f 00 00       	call   77783980 <_Trace>
77781a33:	83 c4 10             	add    $0x10,%esp
77781a36:	84 db                	test   %bl,%bl
77781a38:	74 0d                	je     77781a47 <_PacketOpenAdapter+0x377>
77781a3a:	83 bd cc f9 ff ff 04 	cmpl   $0x4,0xfffff9cc(%ebp)
77781a41:	0f 84 e3 fc ff ff    	je     7778172a <_PacketOpenAdapter+0x5a>
77781a47:	83 ec 0c             	sub    $0xc,%esp
77781a4a:	68 64 63 78 77       	push   $0x77786364
77781a4f:	e8 3c 20 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781a54:	5b                   	pop    %ebx
77781a55:	5e                   	pop    %esi
77781a56:	6a 00                	push   $0x0
77781a58:	6a 00                	push   $0x0
77781a5a:	8b 0d 20 80 78 77    	mov    0x77788020,%ecx
77781a60:	51                   	push   %ecx
77781a61:	e8 4a 22 00 00       	call   77783cb0 <_StartServiceW@12>
77781a66:	5a                   	pop    %edx
77781a67:	85 c0                	test   %eax,%eax
77781a69:	0f 85 bb fc ff ff    	jne    7778172a <_PacketOpenAdapter+0x5a>
77781a6f:	e8 5c 20 00 00       	call   77783ad0 <_GetLastError@0>
77781a74:	3d 20 04 00 00       	cmp    $0x420,%eax
77781a79:	89 c3                	mov    %eax,%ebx
77781a7b:	0f 95 c2             	setne  %dl
77781a7e:	3d b7 00 00 00       	cmp    $0xb7,%eax
77781a83:	0f 95 c0             	setne  %al
77781a86:	25 ff 00 00 00       	and    $0xff,%eax
77781a8b:	85 c2                	test   %eax,%edx
77781a8d:	0f 84 97 fc ff ff    	je     7778172a <_PacketOpenAdapter+0x5a>
77781a93:	83 ec 0c             	sub    $0xc,%esp
77781a96:	53                   	push   %ebx
77781a97:	e8 d4 20 00 00       	call   77783b70 <_SetLastError@4>
77781a9c:	a1 24 80 78 77       	mov    0x77788024,%eax
77781aa1:	83 c4 0c             	add    $0xc,%esp
77781aa4:	85 c0                	test   %eax,%eax
77781aa6:	74 0c                	je     77781ab4 <_PacketOpenAdapter+0x3e4>
77781aa8:	83 ec 0c             	sub    $0xc,%esp
77781aab:	50                   	push   %eax
77781aac:	e8 8f 21 00 00       	call   77783c40 <_CloseServiceHandle@4>
77781ab1:	83 c4 0c             	add    $0xc,%esp
77781ab4:	50                   	push   %eax
77781ab5:	50                   	push   %eax
77781ab6:	53                   	push   %ebx
77781ab7:	68 ac 63 78 77       	push   $0x777863ac
77781abc:	e8 bf 1e 00 00       	call   77783980 <_Trace>
77781ac1:	31 d2                	xor    %edx,%edx
77781ac3:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77781ac6:	89 d0                	mov    %edx,%eax
77781ac8:	5b                   	pop    %ebx
77781ac9:	5e                   	pop    %esi
77781aca:	5f                   	pop    %edi
77781acb:	5d                   	pop    %ebp
77781acc:	c3                   	ret    
77781acd:	8d 76 00             	lea    0x0(%esi),%esi
77781ad0:	83 ec 0c             	sub    $0xc,%esp
77781ad3:	50                   	push   %eax
77781ad4:	e8 67 21 00 00       	call   77783c40 <_CloseServiceHandle@4>
77781ad9:	8b 45 08             	mov    0x8(%ebp),%eax
77781adc:	c7 85 b8 f8 ff ff 00 	movl   $0x0,0xfffff8b8(%ebp)
77781ae3:	00 00 00 
77781ae6:	83 c4 0c             	add    $0xc,%esp
77781ae9:	80 78 01 00          	cmpb   $0x0,0x1(%eax)
77781aed:	0f 84 5b fc ff ff    	je     7778174e <_PacketOpenAdapter+0x7e>
77781af3:	83 ec 0c             	sub    $0xc,%esp
77781af6:	50                   	push   %eax
77781af7:	e8 04 f7 ff ff       	call   77781200 <_SChar2WChar>
77781afc:	83 c4 10             	add    $0x10,%esp
77781aff:	89 85 b8 f8 ff ff    	mov    %eax,0xfffff8b8(%ebp)
77781b05:	89 45 08             	mov    %eax,0x8(%ebp)
77781b08:	e9 41 fc ff ff       	jmp    7778174e <_PacketOpenAdapter+0x7e>
77781b0d:	8d 76 00             	lea    0x0(%esi),%esi
77781b10:	56                   	push   %esi
77781b11:	8b 4d 08             	mov    0x8(%ebp),%ecx
77781b14:	8d b5 d0 f8 ff ff    	lea    0xfffff8d0(%ebp),%esi
77781b1a:	51                   	push   %ecx
77781b1b:	56                   	push   %esi
77781b1c:	6a 01                	push   $0x1
77781b1e:	e8 6d 20 00 00       	call   77783b90 <_DefineDosDeviceW@12>
77781b23:	5a                   	pop    %edx
77781b24:	84 c0                	test   %al,%al
77781b26:	0f 84 b1 01 00 00    	je     77781cdd <_PacketOpenAdapter+0x60d>
77781b2c:	50                   	push   %eax
77781b2d:	50                   	push   %eax
77781b2e:	53                   	push   %ebx
77781b2f:	68 e0 63 78 77       	push   $0x777863e0
77781b34:	e8 47 1e 00 00       	call   77783980 <_Trace>
77781b39:	83 c4 0c             	add    $0xc,%esp
77781b3c:	6a 00                	push   $0x0
77781b3e:	6a 00                	push   $0x0
77781b40:	6a 03                	push   $0x3
77781b42:	6a 00                	push   $0x0
77781b44:	6a 00                	push   $0x0
77781b46:	68 00 00 00 c0       	push   $0xc0000000
77781b4b:	53                   	push   %ebx
77781b4c:	e8 ff 1f 00 00       	call   77783b50 <_CreateFileW@28>
77781b51:	8b 95 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edx
77781b57:	89 02                	mov    %eax,(%edx)
77781b59:	40                   	inc    %eax
77781b5a:	5f                   	pop    %edi
77781b5b:	0f 84 98 00 00 00    	je     77781bf9 <_PacketOpenAdapter+0x529>
77781b61:	83 ec 0c             	sub    $0xc,%esp
77781b64:	52                   	push   %edx
77781b65:	e8 e6 f6 ff ff       	call   77781250 <_PacketSetReadEvt>
77781b6a:	83 c4 10             	add    $0x10,%esp
77781b6d:	84 c0                	test   %al,%al
77781b6f:	0f 85 89 fc ff ff    	jne    777817fe <_PacketOpenAdapter+0x12e>
77781b75:	e8 56 1f 00 00       	call   77783ad0 <_GetLastError@0>
77781b7a:	83 ec 0c             	sub    $0xc,%esp
77781b7d:	89 c3                	mov    %eax,%ebx
77781b7f:	68 0c 64 78 77       	push   $0x7778640c
77781b84:	e8 07 1f 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781b89:	8b b5 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%esi
77781b8f:	83 c4 0c             	add    $0xc,%esp
77781b92:	85 f6                	test   %esi,%esi
77781b94:	74 12                	je     77781ba8 <_PacketOpenAdapter+0x4d8>
77781b96:	83 ec 0c             	sub    $0xc,%esp
77781b99:	8b 8d b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%ecx
77781b9f:	51                   	push   %ecx
77781ba0:	e8 3b 27 00 00       	call   777842e0 <_free>
77781ba5:	83 c4 10             	add    $0x10,%esp
77781ba8:	83 ec 0c             	sub    $0xc,%esp
77781bab:	8b 95 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edx
77781bb1:	52                   	push   %edx
77781bb2:	e8 59 1f 00 00       	call   77783b10 <_GlobalHandle@4>
77781bb7:	50                   	push   %eax
77781bb8:	e8 63 1f 00 00       	call   77783b20 <_GlobalUnlock@4>
77781bbd:	8b 85 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%eax
77781bc3:	50                   	push   %eax
77781bc4:	e8 47 1f 00 00       	call   77783b10 <_GlobalHandle@4>
77781bc9:	50                   	push   %eax
77781bca:	e8 61 1f 00 00       	call   77783b30 <_GlobalFree@4>
77781bcf:	53                   	push   %ebx
77781bd0:	e8 9b 1f 00 00       	call   77783b70 <_SetLastError@4>
77781bd5:	89 1c 24             	mov    %ebx,(%esp)
77781bd8:	68 70 64 78 77       	push   $0x77786470
77781bdd:	e8 9e 1d 00 00       	call   77783980 <_Trace>
77781be2:	e9 da fe ff ff       	jmp    77781ac1 <_PacketOpenAdapter+0x3f1>
77781be7:	e8 e4 1e 00 00       	call   77783ad0 <_GetLastError@0>
77781bec:	57                   	push   %edi
77781bed:	57                   	push   %edi
77781bee:	50                   	push   %eax
77781bef:	68 a8 64 78 77       	push   $0x777864a8
77781bf4:	e9 29 fb ff ff       	jmp    77781722 <_PacketOpenAdapter+0x52>
77781bf9:	83 ec 0c             	sub    $0xc,%esp
77781bfc:	68 c8 64 78 77       	push   $0x777864c8
77781c01:	e8 8a 1e 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781c06:	83 c4 0c             	add    $0xc,%esp
77781c09:	e8 c2 1e 00 00       	call   77783ad0 <_GetLastError@0>
77781c0e:	89 c3                	mov    %eax,%ebx
77781c10:	8b 85 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%eax
77781c16:	85 c0                	test   %eax,%eax
77781c18:	74 12                	je     77781c2c <_PacketOpenAdapter+0x55c>
77781c1a:	83 ec 0c             	sub    $0xc,%esp
77781c1d:	8b bd b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%edi
77781c23:	57                   	push   %edi
77781c24:	e8 b7 26 00 00       	call   777842e0 <_free>
77781c29:	83 c4 10             	add    $0x10,%esp
77781c2c:	83 ec 0c             	sub    $0xc,%esp
77781c2f:	8b b5 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%esi
77781c35:	56                   	push   %esi
77781c36:	e8 d5 1e 00 00       	call   77783b10 <_GlobalHandle@4>
77781c3b:	50                   	push   %eax
77781c3c:	e8 df 1e 00 00       	call   77783b20 <_GlobalUnlock@4>
77781c41:	8b 8d bc f8 ff ff    	mov    0xfffff8bc(%ebp),%ecx
77781c47:	51                   	push   %ecx
77781c48:	e8 c3 1e 00 00       	call   77783b10 <_GlobalHandle@4>
77781c4d:	50                   	push   %eax
77781c4e:	e8 dd 1e 00 00       	call   77783b30 <_GlobalFree@4>
77781c53:	53                   	push   %ebx
77781c54:	e8 17 1f 00 00       	call   77783b70 <_SetLastError@4>
77781c59:	89 1c 24             	mov    %ebx,(%esp)
77781c5c:	68 14 65 78 77       	push   $0x77786514
77781c61:	e8 1a 1d 00 00       	call   77783980 <_Trace>
77781c66:	e9 56 fe ff ff       	jmp    77781ac1 <_PacketOpenAdapter+0x3f1>
77781c6b:	e8 60 1e 00 00       	call   77783ad0 <_GetLastError@0>
77781c70:	83 ec 0c             	sub    $0xc,%esp
77781c73:	89 c3                	mov    %eax,%ebx
77781c75:	68 0c 64 78 77       	push   $0x7778640c
77781c7a:	e8 11 1e 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781c7f:	8b 85 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%eax
77781c85:	83 c4 0c             	add    $0xc,%esp
77781c88:	85 c0                	test   %eax,%eax
77781c8a:	74 12                	je     77781c9e <_PacketOpenAdapter+0x5ce>
77781c8c:	83 ec 0c             	sub    $0xc,%esp
77781c8f:	8b 85 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%eax
77781c95:	50                   	push   %eax
77781c96:	e8 45 26 00 00       	call   777842e0 <_free>
77781c9b:	83 c4 10             	add    $0x10,%esp
77781c9e:	83 ec 0c             	sub    $0xc,%esp
77781ca1:	8b 85 bc f8 ff ff    	mov    0xfffff8bc(%ebp),%eax
77781ca7:	50                   	push   %eax
77781ca8:	e8 63 1e 00 00       	call   77783b10 <_GlobalHandle@4>
77781cad:	50                   	push   %eax
77781cae:	e8 6d 1e 00 00       	call   77783b20 <_GlobalUnlock@4>
77781cb3:	8b bd bc f8 ff ff    	mov    0xfffff8bc(%ebp),%edi
77781cb9:	57                   	push   %edi
77781cba:	e8 51 1e 00 00       	call   77783b10 <_GlobalHandle@4>
77781cbf:	50                   	push   %eax
77781cc0:	e8 6b 1e 00 00       	call   77783b30 <_GlobalFree@4>
77781cc5:	53                   	push   %ebx
77781cc6:	e8 a5 1e 00 00       	call   77783b70 <_SetLastError@4>
77781ccb:	89 1c 24             	mov    %ebx,(%esp)
77781cce:	68 48 65 78 77       	push   $0x77786548
77781cd3:	e8 a8 1c 00 00       	call   77783980 <_Trace>
77781cd8:	e9 e4 fd ff ff       	jmp    77781ac1 <_PacketOpenAdapter+0x3f1>
77781cdd:	50                   	push   %eax
77781cde:	50                   	push   %eax
77781cdf:	56                   	push   %esi
77781ce0:	68 80 65 78 77       	push   $0x77786580
77781ce5:	e8 96 1c 00 00       	call   77783980 <_Trace>
77781cea:	83 c4 10             	add    $0x10,%esp
77781ced:	e9 17 ff ff ff       	jmp    77781c09 <_PacketOpenAdapter+0x539>
77781cf2:	83 ec 0c             	sub    $0xc,%esp
77781cf5:	68 b0 65 78 77       	push   $0x777865b0
77781cfa:	e8 91 1d 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781cff:	83 c4 0c             	add    $0xc,%esp
77781d02:	e8 c9 1d 00 00       	call   77783ad0 <_GetLastError@0>
77781d07:	8b b5 b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%esi
77781d0d:	89 c3                	mov    %eax,%ebx
77781d0f:	85 f6                	test   %esi,%esi
77781d11:	74 12                	je     77781d25 <_PacketOpenAdapter+0x655>
77781d13:	83 ec 0c             	sub    $0xc,%esp
77781d16:	8b 8d b8 f8 ff ff    	mov    0xfffff8b8(%ebp),%ecx
77781d1c:	51                   	push   %ecx
77781d1d:	e8 be 25 00 00       	call   777842e0 <_free>
77781d22:	83 c4 10             	add    $0x10,%esp
77781d25:	83 ec 0c             	sub    $0xc,%esp
77781d28:	53                   	push   %ebx
77781d29:	e8 42 1e 00 00       	call   77783b70 <_SetLastError@4>
77781d2e:	68 00 66 78 77       	push   $0x77786600
77781d33:	e8 58 1d 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781d38:	31 d2                	xor    %edx,%edx
77781d3a:	e9 84 fd ff ff       	jmp    77781ac3 <_PacketOpenAdapter+0x3f3>
77781d3f:	83 ec 0c             	sub    $0xc,%esp
77781d42:	50                   	push   %eax
77781d43:	e8 f8 1e 00 00       	call   77783c40 <_CloseServiceHandle@4>
77781d48:	83 c4 0c             	add    $0xc,%esp
77781d4b:	e9 1f fc ff ff       	jmp    7778196f <_PacketOpenAdapter+0x29f>

77781d50 <_PacketCloseAdapter>:
77781d50:	55                   	push   %ebp
77781d51:	89 e5                	mov    %esp,%ebp
77781d53:	53                   	push   %ebx
77781d54:	83 ec 10             	sub    $0x10,%esp
77781d57:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781d5a:	8b 03                	mov    (%ebx),%eax
77781d5c:	50                   	push   %eax
77781d5d:	e8 7e 1d 00 00       	call   77783ae0 <_CloseHandle@4>
77781d62:	8b 43 48             	mov    0x48(%ebx),%eax
77781d65:	50                   	push   %eax
77781d66:	e8 35 1e 00 00       	call   77783ba0 <_SetEvent@4>
77781d6b:	8b 43 48             	mov    0x48(%ebx),%eax
77781d6e:	50                   	push   %eax
77781d6f:	e8 6c 1d 00 00       	call   77783ae0 <_CloseHandle@4>
77781d74:	53                   	push   %ebx
77781d75:	e8 96 1d 00 00       	call   77783b10 <_GlobalHandle@4>
77781d7a:	50                   	push   %eax
77781d7b:	e8 a0 1d 00 00       	call   77783b20 <_GlobalUnlock@4>
77781d80:	53                   	push   %ebx
77781d81:	e8 8a 1d 00 00       	call   77783b10 <_GlobalHandle@4>
77781d86:	50                   	push   %eax
77781d87:	e8 a4 1d 00 00       	call   77783b30 <_GlobalFree@4>
77781d8c:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781d8f:	c9                   	leave  
77781d90:	c3                   	ret    
77781d91:	eb 0d                	jmp    77781da0 <_PacketAllocatePacket>
77781d93:	90                   	nop    
77781d94:	90                   	nop    
77781d95:	90                   	nop    
77781d96:	90                   	nop    
77781d97:	90                   	nop    
77781d98:	90                   	nop    
77781d99:	90                   	nop    
77781d9a:	90                   	nop    
77781d9b:	90                   	nop    
77781d9c:	90                   	nop    
77781d9d:	90                   	nop    
77781d9e:	90                   	nop    
77781d9f:	90                   	nop    

77781da0 <_PacketAllocatePacket>:
77781da0:	55                   	push   %ebp
77781da1:	89 e5                	mov    %esp,%ebp
77781da3:	83 ec 20             	sub    $0x20,%esp
77781da6:	6a 28                	push   $0x28
77781da8:	6a 40                	push   $0x40
77781daa:	e8 41 1d 00 00       	call   77783af0 <_GlobalAlloc@8>
77781daf:	83 c4 0c             	add    $0xc,%esp
77781db2:	50                   	push   %eax
77781db3:	e8 48 1d 00 00       	call   77783b00 <_GlobalLock@4>
77781db8:	83 c4 0c             	add    $0xc,%esp
77781dbb:	85 c0                	test   %eax,%eax
77781dbd:	74 02                	je     77781dc1 <_PacketAllocatePacket+0x21>
77781dbf:	c9                   	leave  
77781dc0:	c3                   	ret    
77781dc1:	83 ec 0c             	sub    $0xc,%esp
77781dc4:	68 7c 66 78 77       	push   $0x7778667c
77781dc9:	e8 c2 1c 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781dce:	31 c0                	xor    %eax,%eax
77781dd0:	c9                   	leave  
77781dd1:	c3                   	ret    
77781dd2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77781dd9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781de0 <_PacketFreePacket>:
77781de0:	55                   	push   %ebp
77781de1:	89 e5                	mov    %esp,%ebp
77781de3:	53                   	push   %ebx
77781de4:	83 ec 10             	sub    $0x10,%esp
77781de7:	8b 5d 08             	mov    0x8(%ebp),%ebx
77781dea:	53                   	push   %ebx
77781deb:	e8 20 1d 00 00       	call   77783b10 <_GlobalHandle@4>
77781df0:	50                   	push   %eax
77781df1:	e8 2a 1d 00 00       	call   77783b20 <_GlobalUnlock@4>
77781df6:	53                   	push   %ebx
77781df7:	e8 14 1d 00 00       	call   77783b10 <_GlobalHandle@4>
77781dfc:	50                   	push   %eax
77781dfd:	e8 2e 1d 00 00       	call   77783b30 <_GlobalFree@4>
77781e02:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77781e05:	c9                   	leave  
77781e06:	c3                   	ret    
77781e07:	89 f6                	mov    %esi,%esi
77781e09:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781e10 <_PacketInitPacket>:
77781e10:	55                   	push   %ebp
77781e11:	89 e5                	mov    %esp,%ebp
77781e13:	8b 45 08             	mov    0x8(%ebp),%eax
77781e16:	8b 55 0c             	mov    0xc(%ebp),%edx
77781e19:	89 50 18             	mov    %edx,0x18(%eax)
77781e1c:	8b 55 10             	mov    0x10(%ebp),%edx
77781e1f:	89 50 1c             	mov    %edx,0x1c(%eax)
77781e22:	c7 40 20 00 00 00 00 	movl   $0x0,0x20(%eax)
77781e29:	c6 40 24 00          	movb   $0x0,0x24(%eax)
77781e2d:	5d                   	pop    %ebp
77781e2e:	c3                   	ret    
77781e2f:	90                   	nop    

77781e30 <_PacketReceivePacket>:
77781e30:	55                   	push   %ebp
77781e31:	89 e5                	mov    %esp,%ebp
77781e33:	56                   	push   %esi
77781e34:	53                   	push   %ebx
77781e35:	8b 75 08             	mov    0x8(%ebp),%esi
77781e38:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77781e3b:	8b 46 4c             	mov    0x4c(%esi),%eax
77781e3e:	83 f8 ff             	cmp    $0xffffffff,%eax
77781e41:	74 12                	je     77781e55 <_PacketReceivePacket+0x25>
77781e43:	85 c0                	test   %eax,%eax
77781e45:	52                   	push   %edx
77781e46:	52                   	push   %edx
77781e47:	74 37                	je     77781e80 <_PacketReceivePacket+0x50>
77781e49:	50                   	push   %eax
77781e4a:	8b 46 48             	mov    0x48(%esi),%eax
77781e4d:	50                   	push   %eax
77781e4e:	e8 5d 1d 00 00       	call   77783bb0 <_WaitForSingleObject@8>
77781e53:	5a                   	pop    %edx
77781e54:	59                   	pop    %ecx
77781e55:	83 ec 0c             	sub    $0xc,%esp
77781e58:	8d 43 20             	lea    0x20(%ebx),%eax
77781e5b:	6a 00                	push   $0x0
77781e5d:	50                   	push   %eax
77781e5e:	8b 43 1c             	mov    0x1c(%ebx),%eax
77781e61:	50                   	push   %eax
77781e62:	8b 43 18             	mov    0x18(%ebx),%eax
77781e65:	50                   	push   %eax
77781e66:	8b 06                	mov    (%esi),%eax
77781e68:	50                   	push   %eax
77781e69:	e8 52 1d 00 00       	call   77783bc0 <_ReadFile@20>
77781e6e:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77781e71:	25 ff 00 00 00       	and    $0xff,%eax
77781e76:	5b                   	pop    %ebx
77781e77:	5e                   	pop    %esi
77781e78:	5d                   	pop    %ebp
77781e79:	c3                   	ret    
77781e7a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77781e80:	83 c8 ff             	or     $0xffffffff,%eax
77781e83:	eb c4                	jmp    77781e49 <_PacketReceivePacket+0x19>
77781e85:	8d 74 26 00          	lea    0x0(%esi),%esi
77781e89:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77781e90 <_PacketSendPacket>:
77781e90:	55                   	push   %ebp
77781e91:	89 e5                	mov    %esp,%ebp
77781e93:	83 ec 14             	sub    $0x14,%esp
77781e96:	8b 55 0c             	mov    0xc(%ebp),%edx
77781e99:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
77781e9c:	6a 00                	push   $0x0
77781e9e:	50                   	push   %eax
77781e9f:	8b 42 1c             	mov    0x1c(%edx),%eax
77781ea2:	50                   	push   %eax
77781ea3:	8b 42 18             	mov    0x18(%edx),%eax
77781ea6:	50                   	push   %eax
77781ea7:	8b 45 08             	mov    0x8(%ebp),%eax
77781eaa:	8b 08                	mov    (%eax),%ecx
77781eac:	51                   	push   %ecx
77781ead:	e8 1e 1d 00 00       	call   77783bd0 <_WriteFile@20>
77781eb2:	25 ff 00 00 00       	and    $0xff,%eax
77781eb7:	c9                   	leave  
77781eb8:	c3                   	ret    
77781eb9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77781ec0 <_PacketSendPackets>:
77781ec0:	55                   	push   %ebp
77781ec1:	89 e5                	mov    %esp,%ebp
77781ec3:	57                   	push   %edi
77781ec4:	56                   	push   %esi
77781ec5:	53                   	push   %ebx
77781ec6:	83 ec 58             	sub    $0x58,%esp
77781ec9:	c7 45 c0 00 00 00 00 	movl   $0x0,0xffffffc0(%ebp)
77781ed0:	8a 45 14             	mov    0x14(%ebp),%al
77781ed3:	c7 45 c4 00 00 00 00 	movl   $0x0,0xffffffc4(%ebp)
77781eda:	88 45 cf             	mov    %al,0xffffffcf(%ebp)
77781edd:	c7 45 c8 00 00 00 00 	movl   $0x0,0xffffffc8(%ebp)
77781ee4:	68 d0 66 78 77       	push   $0x777866d0
77781ee9:	e8 a2 1b 00 00       	call   77783a90 <_OutputDebugStringW@4>
77781eee:	8b 55 0c             	mov    0xc(%ebp),%edx
77781ef1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77781ef4:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
77781ef7:	8b 12                	mov    (%edx),%edx
77781ef9:	8b 49 04             	mov    0x4(%ecx),%ecx
77781efc:	89 55 c0             	mov    %edx,0xffffffc0(%ebp)
77781eff:	89 4d c4             	mov    %ecx,0xffffffc4(%ebp)
77781f02:	50                   	push   %eax
77781f03:	e8 d8 1c 00 00       	call   77783be0 <_QueryPerformanceCounter@4>
77781f08:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
77781f0b:	50                   	push   %eax
77781f0c:	e8 df 1c 00 00       	call   77783bf0 <_QueryPerformanceFrequency@4>
77781f11:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
77781f14:	8b 55 ec             	mov    0xffffffec(%ebp),%edx
77781f17:	89 45 d0             	mov    %eax,0xffffffd0(%ebp)
77781f1a:	89 55 d4             	mov    %edx,0xffffffd4(%ebp)
77781f1d:	83 c4 0c             	add    $0xc,%esp
77781f20:	8b 4d c8             	mov    0xffffffc8(%ebp),%ecx
77781f23:	8b 45 10             	mov    0x10(%ebp),%eax
77781f26:	29 c8                	sub    %ecx,%eax
77781f28:	8d 5d dc             	lea    0xffffffdc(%ebp),%ebx
77781f2b:	6a 00                	push   $0x0
77781f2d:	8b 55 c8             	mov    0xffffffc8(%ebp),%edx
77781f30:	53                   	push   %ebx
77781f31:	6a 00                	push   $0x0
77781f33:	6a 00                	push   $0x0
77781f35:	50                   	push   %eax
77781f36:	8b 45 0c             	mov    0xc(%ebp),%eax
77781f39:	01 d0                	add    %edx,%eax
77781f3b:	80 7d cf 01          	cmpb   $0x1,0xffffffcf(%ebp)
77781f3f:	50                   	push   %eax
77781f40:	19 c0                	sbb    %eax,%eax
77781f42:	05 49 23 00 00       	add    $0x2349,%eax
77781f47:	50                   	push   %eax
77781f48:	8b 45 08             	mov    0x8(%ebp),%eax
77781f4b:	8b 00                	mov    (%eax),%eax
77781f4d:	50                   	push   %eax
77781f4e:	e8 5d 1b 00 00       	call   77783ab0 <_DeviceIoControl@32>
77781f53:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
77781f56:	8b 7d c8             	mov    0xffffffc8(%ebp),%edi
77781f59:	01 d7                	add    %edx,%edi
77781f5b:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77781f5e:	89 7d c8             	mov    %edi,0xffffffc8(%ebp)
77781f61:	88 45 ce             	mov    %al,0xffffffce(%ebp)
77781f64:	8b 4d c8             	mov    0xffffffc8(%ebp),%ecx
77781f67:	8b 75 c4             	mov    0xffffffc4(%ebp),%esi
77781f6a:	8b 0c 19             	mov    (%ecx,%ebx,1),%ecx
77781f6d:	8b 5d c0             	mov    0xffffffc0(%ebp),%ebx
77781f70:	29 d9                	sub    %ebx,%ecx
77781f72:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77781f75:	89 ca                	mov    %ecx,%edx
77781f77:	c1 e2 05             	shl    $0x5,%edx
77781f7a:	29 ca                	sub    %ecx,%edx
77781f7c:	89 d0                	mov    %edx,%eax
77781f7e:	c1 e0 06             	shl    $0x6,%eax
77781f81:	29 d0                	sub    %edx,%eax
77781f83:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
77781f86:	8b 4d c8             	mov    0xffffffc8(%ebp),%ecx
77781f89:	c1 e0 06             	shl    $0x6,%eax
77781f8c:	8b 54 19 04          	mov    0x4(%ecx,%ebx,1),%edx
77781f90:	8b 5d e4             	mov    0xffffffe4(%ebp),%ebx
77781f93:	29 f2                	sub    %esi,%edx
77781f95:	6a 00                	push   $0x0
77781f97:	01 d0                	add    %edx,%eax
77781f99:	68 40 42 0f 00       	push   $0xf4240
77781f9e:	89 45 b0             	mov    %eax,0xffffffb0(%ebp)
77781fa1:	89 c2                	mov    %eax,%edx
77781fa3:	c1 fa 1f             	sar    $0x1f,%edx
77781fa6:	8b 45 b0             	mov    0xffffffb0(%ebp),%eax
77781fa9:	89 55 b4             	mov    %edx,0xffffffb4(%ebp)
77781fac:	8b 4d b0             	mov    0xffffffb0(%ebp),%ecx
77781faf:	f7 65 e0             	mull   0xffffffe0(%ebp)
77781fb2:	0f af cb             	imul   %ebx,%ecx
77781fb5:	89 45 a8             	mov    %eax,0xffffffa8(%ebp)
77781fb8:	89 d7                	mov    %edx,%edi
77781fba:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
77781fbd:	8b 55 b4             	mov    0xffffffb4(%ebp),%edx
77781fc0:	0f af c2             	imul   %edx,%eax
77781fc3:	01 cf                	add    %ecx,%edi
77781fc5:	01 c7                	add    %eax,%edi
77781fc7:	89 7d ac             	mov    %edi,0xffffffac(%ebp)
77781fca:	8b 45 ac             	mov    0xffffffac(%ebp),%eax
77781fcd:	50                   	push   %eax
77781fce:	8b 45 a8             	mov    0xffffffa8(%ebp),%eax
77781fd1:	50                   	push   %eax
77781fd2:	e8 39 21 00 00       	call   77784110 <___divdi3>
77781fd7:	89 c3                	mov    %eax,%ebx
77781fd9:	83 c4 10             	add    $0x10,%esp
77781fdc:	03 5d e8             	add    0xffffffe8(%ebp),%ebx
77781fdf:	89 d6                	mov    %edx,%esi
77781fe1:	13 75 ec             	adc    0xffffffec(%ebp),%esi
77781fe4:	8b 55 10             	mov    0x10(%ebp),%edx
77781fe7:	39 55 c8             	cmp    %edx,0xffffffc8(%ebp)
77781fea:	0f 93 c2             	setae  %dl
77781fed:	80 7d ce 01          	cmpb   $0x1,0xffffffce(%ebp)
77781ff1:	0f 95 c0             	setne  %al
77781ff4:	09 d0                	or     %edx,%eax
77781ff6:	a8 01                	test   $0x1,%al
77781ff8:	75 2f                	jne    77782029 <_PacketSendPackets+0x169>
77781ffa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782000:	8b 55 d4             	mov    0xffffffd4(%ebp),%edx
77782003:	8b 45 d0             	mov    0xffffffd0(%ebp),%eax
77782006:	39 f2                	cmp    %esi,%edx
77782008:	0f 8f 12 ff ff ff    	jg     77781f20 <_PacketSendPackets+0x60>
7778200e:	7c 08                	jl     77782018 <_PacketSendPackets+0x158>
77782010:	39 d8                	cmp    %ebx,%eax
77782012:	0f 87 08 ff ff ff    	ja     77781f20 <_PacketSendPackets+0x60>
77782018:	83 ec 0c             	sub    $0xc,%esp
7778201b:	8d 4d d0             	lea    0xffffffd0(%ebp),%ecx
7778201e:	51                   	push   %ecx
7778201f:	e8 bc 1b 00 00       	call   77783be0 <_QueryPerformanceCounter@4>
77782024:	83 c4 0c             	add    $0xc,%esp
77782027:	eb d7                	jmp    77782000 <_PacketSendPackets+0x140>
77782029:	8b 45 c8             	mov    0xffffffc8(%ebp),%eax
7778202c:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778202f:	5b                   	pop    %ebx
77782030:	5e                   	pop    %esi
77782031:	5f                   	pop    %edi
77782032:	5d                   	pop    %ebp
77782033:	c3                   	ret    
77782034:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
7778203a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77782040 <_PacketSetMinToCopy>:
77782040:	55                   	push   %ebp
77782041:	89 e5                	mov    %esp,%ebp
77782043:	50                   	push   %eax
77782044:	50                   	push   %eax
77782045:	6a 00                	push   $0x0
77782047:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
7778204a:	50                   	push   %eax
7778204b:	8d 45 0c             	lea    0xc(%ebp),%eax
7778204e:	6a 00                	push   $0x0
77782050:	6a 00                	push   $0x0
77782052:	6a 04                	push   $0x4
77782054:	50                   	push   %eax
77782055:	8b 45 08             	mov    0x8(%ebp),%eax
77782058:	68 f6 1c 00 00       	push   $0x1cf6
7778205d:	8b 00                	mov    (%eax),%eax
7778205f:	50                   	push   %eax
77782060:	e8 4b 1a 00 00       	call   77783ab0 <_DeviceIoControl@32>
77782065:	25 ff 00 00 00       	and    $0xff,%eax
7778206a:	c9                   	leave  
7778206b:	c3                   	ret    
7778206c:	8d 74 26 00          	lea    0x0(%esi),%esi

77782070 <_PacketSetMode>:
77782070:	55                   	push   %ebp
77782071:	89 e5                	mov    %esp,%ebp
77782073:	50                   	push   %eax
77782074:	50                   	push   %eax
77782075:	6a 00                	push   $0x0
77782077:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
7778207a:	50                   	push   %eax
7778207b:	8d 45 0c             	lea    0xc(%ebp),%eax
7778207e:	6a 00                	push   $0x0
77782080:	6a 00                	push   $0x0
77782082:	6a 04                	push   $0x4
77782084:	50                   	push   %eax
77782085:	8b 45 08             	mov    0x8(%ebp),%eax
77782088:	68 f4 1c 00 00       	push   $0x1cf4
7778208d:	8b 00                	mov    (%eax),%eax
7778208f:	50                   	push   %eax
77782090:	e8 1b 1a 00 00       	call   77783ab0 <_DeviceIoControl@32>
77782095:	25 ff 00 00 00       	and    $0xff,%eax
7778209a:	c9                   	leave  
7778209b:	c3                   	ret    
7778209c:	8d 74 26 00          	lea    0x0(%esi),%esi

777820a0 <_PacketSetDumpName>:
777820a0:	55                   	push   %ebp
777820a1:	89 e5                	mov    %esp,%ebp
777820a3:	57                   	push   %edi
777820a4:	56                   	push   %esi
777820a5:	53                   	push   %ebx
777820a6:	81 ec 1c 08 00 00    	sub    $0x81c,%esp
777820ac:	8b 5d 0c             	mov    0xc(%ebp),%ebx
777820af:	89 de                	mov    %ebx,%esi
777820b1:	80 7b 01 00          	cmpb   $0x0,0x1(%ebx)
777820b5:	0f 95 c2             	setne  %dl
777820b8:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
777820bc:	0f 9f c0             	setg   %al
777820bf:	25 ff 00 00 00       	and    $0xff,%eax
777820c4:	85 c2                	test   %eax,%edx
777820c6:	0f 85 8a 00 00 00    	jne    77782156 <_PacketSetDumpName+0xb6>
777820cc:	8d 85 e4 f7 ff ff    	lea    0xfffff7e4(%ebp),%eax
777820d2:	8d bd e8 f7 ff ff    	lea    0xfffff7e8(%ebp),%edi
777820d8:	50                   	push   %eax
777820d9:	57                   	push   %edi
777820da:	68 00 04 00 00       	push   $0x400
777820df:	56                   	push   %esi
777820e0:	e8 1b 1b 00 00       	call   77783c00 <_GetFullPathNameW@16>
777820e5:	8d 4c 00 02          	lea    0x2(%eax,%eax,1),%ecx
777820e9:	81 f9 00 08 00 00    	cmp    $0x800,%ecx
777820ef:	7e 2f                	jle    77782120 <_PacketSetDumpName+0x80>
777820f1:	80 7b 01 00          	cmpb   $0x0,0x1(%ebx)
777820f5:	0f 95 c2             	setne  %dl
777820f8:	49                   	dec    %ecx
777820f9:	0f 9f c0             	setg   %al
777820fc:	25 ff 00 00 00       	and    $0xff,%eax
77782101:	85 c2                	test   %eax,%edx
77782103:	75 0b                	jne    77782110 <_PacketSetDumpName+0x70>
77782105:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77782108:	31 c0                	xor    %eax,%eax
7778210a:	5b                   	pop    %ebx
7778210b:	5e                   	pop    %esi
7778210c:	5f                   	pop    %edi
7778210d:	5d                   	pop    %ebp
7778210e:	c3                   	ret    
7778210f:	90                   	nop    
77782110:	83 ec 0c             	sub    $0xc,%esp
77782113:	56                   	push   %esi
77782114:	e8 c7 21 00 00       	call   777842e0 <_free>
77782119:	83 c4 10             	add    $0x10,%esp
7778211c:	eb e7                	jmp    77782105 <_PacketSetDumpName+0x65>
7778211e:	89 f6                	mov    %esi,%esi
77782120:	8d 85 e0 f7 ff ff    	lea    0xfffff7e0(%ebp),%eax
77782126:	6a 00                	push   $0x0
77782128:	50                   	push   %eax
77782129:	6a 00                	push   $0x0
7778212b:	6a 00                	push   $0x0
7778212d:	51                   	push   %ecx
7778212e:	57                   	push   %edi
7778212f:	68 45 23 00 00       	push   $0x2345
77782134:	8b 45 08             	mov    0x8(%ebp),%eax
77782137:	8b 00                	mov    (%eax),%eax
77782139:	50                   	push   %eax
7778213a:	e8 71 19 00 00       	call   77783ab0 <_DeviceIoControl@32>
7778213f:	83 ec 0c             	sub    $0xc,%esp
77782142:	88 c3                	mov    %al,%bl
77782144:	56                   	push   %esi
77782145:	e8 96 21 00 00       	call   777842e0 <_free>
7778214a:	31 c0                	xor    %eax,%eax
7778214c:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778214f:	88 d8                	mov    %bl,%al
77782151:	5b                   	pop    %ebx
77782152:	5e                   	pop    %esi
77782153:	5f                   	pop    %edi
77782154:	5d                   	pop    %ebp
77782155:	c3                   	ret    
77782156:	83 ec 0c             	sub    $0xc,%esp
77782159:	53                   	push   %ebx
7778215a:	e8 a1 f0 ff ff       	call   77781200 <_SChar2WChar>
7778215f:	83 c4 10             	add    $0x10,%esp
77782162:	89 c6                	mov    %eax,%esi
77782164:	e9 63 ff ff ff       	jmp    777820cc <_PacketSetDumpName+0x2c>
77782169:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782170 <_PacketSetDumpLimits>:
77782170:	55                   	push   %ebp
77782171:	89 e5                	mov    %esp,%ebp
77782173:	83 ec 18             	sub    $0x18,%esp
77782176:	8b 45 0c             	mov    0xc(%ebp),%eax
77782179:	6a 00                	push   $0x0
7778217b:	89 45 f8             	mov    %eax,0xfffffff8(%ebp)
7778217e:	8b 45 10             	mov    0x10(%ebp),%eax
77782181:	89 45 fc             	mov    %eax,0xfffffffc(%ebp)
77782184:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
77782187:	50                   	push   %eax
77782188:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
7778218b:	6a 00                	push   $0x0
7778218d:	6a 00                	push   $0x0
7778218f:	6a 08                	push   $0x8
77782191:	50                   	push   %eax
77782192:	8b 45 08             	mov    0x8(%ebp),%eax
77782195:	68 4a 23 00 00       	push   $0x234a
7778219a:	8b 00                	mov    (%eax),%eax
7778219c:	50                   	push   %eax
7778219d:	e8 0e 19 00 00       	call   77783ab0 <_DeviceIoControl@32>
777821a2:	25 ff 00 00 00       	and    $0xff,%eax
777821a7:	c9                   	leave  
777821a8:	c3                   	ret    
777821a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

777821b0 <_PacketIsDumpEnded>:
777821b0:	55                   	push   %ebp
777821b1:	89 e5                	mov    %esp,%ebp
777821b3:	53                   	push   %ebx
777821b4:	83 ec 14             	sub    $0x14,%esp
777821b7:	8b 5d 08             	mov    0x8(%ebp),%ebx
777821ba:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
777821be:	75 32                	jne    777821f2 <_PacketIsDumpEnded+0x42>
777821c0:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
777821c3:	6a 00                	push   $0x0
777821c5:	50                   	push   %eax
777821c6:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
777821c9:	6a 04                	push   $0x4
777821cb:	50                   	push   %eax
777821cc:	6a 00                	push   $0x0
777821ce:	6a 00                	push   $0x0
777821d0:	68 f3 1c 00 00       	push   $0x1cf3
777821d5:	8b 13                	mov    (%ebx),%edx
777821d7:	52                   	push   %edx
777821d8:	e8 d3 18 00 00       	call   77783ab0 <_DeviceIoControl@32>
777821dd:	ba 01 00 00 00       	mov    $0x1,%edx
777821e2:	84 c0                	test   %al,%al
777821e4:	74 05                	je     777821eb <_PacketIsDumpEnded+0x3b>
777821e6:	31 d2                	xor    %edx,%edx
777821e8:	8a 55 f4             	mov    0xfffffff4(%ebp),%dl
777821eb:	89 d0                	mov    %edx,%eax
777821ed:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777821f0:	c9                   	leave  
777821f1:	c3                   	ret    
777821f2:	50                   	push   %eax
777821f3:	50                   	push   %eax
777821f4:	6a ff                	push   $0xffffffff
777821f6:	8b 43 48             	mov    0x48(%ebx),%eax
777821f9:	50                   	push   %eax
777821fa:	e8 b1 19 00 00       	call   77783bb0 <_WaitForSingleObject@8>
777821ff:	59                   	pop    %ecx
77782200:	58                   	pop    %eax
77782201:	eb bd                	jmp    777821c0 <_PacketIsDumpEnded+0x10>
77782203:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782209:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782210 <_PacketGetReadEvent>:
77782210:	55                   	push   %ebp
77782211:	89 e5                	mov    %esp,%ebp
77782213:	8b 45 08             	mov    0x8(%ebp),%eax
77782216:	5d                   	pop    %ebp
77782217:	8b 40 48             	mov    0x48(%eax),%eax
7778221a:	c3                   	ret    
7778221b:	90                   	nop    
7778221c:	8d 74 26 00          	lea    0x0(%esi),%esi

77782220 <_PacketSetNumWrites>:
77782220:	55                   	push   %ebp
77782221:	89 e5                	mov    %esp,%ebp
77782223:	50                   	push   %eax
77782224:	50                   	push   %eax
77782225:	6a 00                	push   $0x0
77782227:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
7778222a:	50                   	push   %eax
7778222b:	8d 45 0c             	lea    0xc(%ebp),%eax
7778222e:	6a 00                	push   $0x0
77782230:	6a 00                	push   $0x0
77782232:	6a 04                	push   $0x4
77782234:	50                   	push   %eax
77782235:	8b 45 08             	mov    0x8(%ebp),%eax
77782238:	68 f5 1c 00 00       	push   $0x1cf5
7778223d:	8b 00                	mov    (%eax),%eax
7778223f:	50                   	push   %eax
77782240:	e8 6b 18 00 00       	call   77783ab0 <_DeviceIoControl@32>
77782245:	25 ff 00 00 00       	and    $0xff,%eax
7778224a:	c9                   	leave  
7778224b:	c3                   	ret    
7778224c:	8d 74 26 00          	lea    0x0(%esi),%esi

77782250 <_PacketSetReadTimeout>:
77782250:	55                   	push   %ebp
77782251:	89 e5                	mov    %esp,%ebp
77782253:	52                   	push   %edx
77782254:	52                   	push   %edx
77782255:	8b 55 08             	mov    0x8(%ebp),%edx
77782258:	8b 45 0c             	mov    0xc(%ebp),%eax
7778225b:	c7 45 f8 ff ff ff ff 	movl   $0xffffffff,0xfffffff8(%ebp)
77782262:	89 42 4c             	mov    %eax,0x4c(%edx)
77782265:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
77782268:	6a 00                	push   $0x0
7778226a:	50                   	push   %eax
7778226b:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
7778226e:	6a 00                	push   $0x0
77782270:	6a 00                	push   $0x0
77782272:	6a 04                	push   $0x4
77782274:	50                   	push   %eax
77782275:	68 f8 1c 00 00       	push   $0x1cf8
7778227a:	8b 02                	mov    (%edx),%eax
7778227c:	50                   	push   %eax
7778227d:	e8 2e 18 00 00       	call   77783ab0 <_DeviceIoControl@32>
77782282:	25 ff 00 00 00       	and    $0xff,%eax
77782287:	c9                   	leave  
77782288:	c3                   	ret    
77782289:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77782290 <_PacketSetBuff>:
77782290:	55                   	push   %ebp
77782291:	89 e5                	mov    %esp,%ebp
77782293:	50                   	push   %eax
77782294:	50                   	push   %eax
77782295:	6a 00                	push   $0x0
77782297:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
7778229a:	50                   	push   %eax
7778229b:	8d 45 0c             	lea    0xc(%ebp),%eax
7778229e:	6a 00                	push   $0x0
777822a0:	6a 00                	push   $0x0
777822a2:	6a 04                	push   $0x4
777822a4:	50                   	push   %eax
777822a5:	8b 45 08             	mov    0x8(%ebp),%eax
777822a8:	68 78 25 00 00       	push   $0x2578
777822ad:	8b 08                	mov    (%eax),%ecx
777822af:	51                   	push   %ecx
777822b0:	e8 fb 17 00 00       	call   77783ab0 <_DeviceIoControl@32>
777822b5:	25 ff 00 00 00       	and    $0xff,%eax
777822ba:	c9                   	leave  
777822bb:	c3                   	ret    
777822bc:	8d 74 26 00          	lea    0x0(%esi),%esi

777822c0 <_PacketSetBpf>:
777822c0:	55                   	push   %ebp
777822c1:	89 e5                	mov    %esp,%ebp
777822c3:	50                   	push   %eax
777822c4:	50                   	push   %eax
777822c5:	6a 00                	push   $0x0
777822c7:	8b 55 0c             	mov    0xc(%ebp),%edx
777822ca:	8d 45 fc             	lea    0xfffffffc(%ebp),%eax
777822cd:	50                   	push   %eax
777822ce:	6a 00                	push   $0x0
777822d0:	6a 00                	push   $0x0
777822d2:	8b 02                	mov    (%edx),%eax
777822d4:	c1 e0 03             	shl    $0x3,%eax
777822d7:	50                   	push   %eax
777822d8:	8b 42 04             	mov    0x4(%edx),%eax
777822db:	50                   	push   %eax
777822dc:	8b 45 08             	mov    0x8(%ebp),%eax
777822df:	68 46 23 00 00       	push   $0x2346
777822e4:	8b 00                	mov    (%eax),%eax
777822e6:	50                   	push   %eax
777822e7:	e8 c4 17 00 00       	call   77783ab0 <_DeviceIoControl@32>
777822ec:	25 ff 00 00 00       	and    $0xff,%eax
777822f1:	c9                   	leave  
777822f2:	c3                   	ret    
777822f3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
777822f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782300 <_PacketGetStats>:
77782300:	55                   	push   %ebp
77782301:	89 e5                	mov    %esp,%ebp
77782303:	53                   	push   %ebx
77782304:	83 ec 24             	sub    $0x24,%esp
77782307:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
7778230a:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778230d:	6a 00                	push   $0x0
7778230f:	50                   	push   %eax
77782310:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
77782313:	6a 10                	push   $0x10
77782315:	50                   	push   %eax
77782316:	8b 45 08             	mov    0x8(%ebp),%eax
77782319:	6a 00                	push   $0x0
7778231b:	6a 00                	push   $0x0
7778231d:	68 47 23 00 00       	push   $0x2347
77782322:	8b 00                	mov    (%eax),%eax
77782324:	50                   	push   %eax
77782325:	e8 86 17 00 00       	call   77783ab0 <_DeviceIoControl@32>
7778232a:	8b 55 e8             	mov    0xffffffe8(%ebp),%edx
7778232d:	25 ff 00 00 00       	and    $0xff,%eax
77782332:	89 13                	mov    %edx,(%ebx)
77782334:	8b 55 ec             	mov    0xffffffec(%ebp),%edx
77782337:	89 53 04             	mov    %edx,0x4(%ebx)
7778233a:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
7778233d:	c9                   	leave  
7778233e:	c3                   	ret    
7778233f:	90                   	nop    

77782340 <_PacketGetStatsEx>:
77782340:	55                   	push   %ebp
77782341:	89 e5                	mov    %esp,%ebp
77782343:	53                   	push   %ebx
77782344:	83 ec 24             	sub    $0x24,%esp
77782347:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
7778234a:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778234d:	6a 00                	push   $0x0
7778234f:	50                   	push   %eax
77782350:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
77782353:	6a 10                	push   $0x10
77782355:	50                   	push   %eax
77782356:	8b 45 08             	mov    0x8(%ebp),%eax
77782359:	6a 00                	push   $0x0
7778235b:	6a 00                	push   $0x0
7778235d:	68 47 23 00 00       	push   $0x2347
77782362:	8b 00                	mov    (%eax),%eax
77782364:	50                   	push   %eax
77782365:	e8 46 17 00 00       	call   77783ab0 <_DeviceIoControl@32>
7778236a:	8b 55 e8             	mov    0xffffffe8(%ebp),%edx
7778236d:	25 ff 00 00 00       	and    $0xff,%eax
77782372:	89 13                	mov    %edx,(%ebx)
77782374:	8b 55 ec             	mov    0xffffffec(%ebp),%edx
77782377:	89 53 04             	mov    %edx,0x4(%ebx)
7778237a:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
7778237d:	89 53 08             	mov    %edx,0x8(%ebx)
77782380:	8b 55 f4             	mov    0xfffffff4(%ebp),%edx
77782383:	89 53 0c             	mov    %edx,0xc(%ebx)
77782386:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77782389:	c9                   	leave  
7778238a:	c3                   	ret    
7778238b:	90                   	nop    
7778238c:	8d 74 26 00          	lea    0x0(%esi),%esi

77782390 <_PacketSetHwFilter>:

/*!
  \brief Sets a hardware filter on the incoming packets.
  \param AdapterObject Pointer to an _ADAPTER structure.
  \param Filter The identifier of the filter.
  \return If the function succeeds, the return value is nonzero.

  The filter defined with this filter is evaluated by the network card, at a level that is under the NPF
  device driver. Here is a list of the most useful hardware filters (A complete list can be found in ntddndis.h):

  - NDIS_PACKET_TYPE_PROMISCUOUS: sets promiscuous mode. Every incoming packet is accepted by the adapter. 
  - NDIS_PACKET_TYPE_DIRECTED: only packets directed to the workstation's adapter are accepted. 
  - NDIS_PACKET_TYPE_BROADCAST: only broadcast packets are accepted. 
  - NDIS_PACKET_TYPE_MULTICAST: only multicast packets belonging to groups of which this adapter is a member are accepted. 
  - NDIS_PACKET_TYPE_ALL_MULTICAST: every multicast packet is accepted. 
  - NDIS_PACKET_TYPE_ALL_LOCAL: all local packets, i.e. NDIS_PACKET_TYPE_DIRECTED + NDIS_PACKET_TYPE_BROADCAST + NDIS_PACKET_TYPE_MULTICAST 
*/
BOOLEAN PacketSetHwFilter(LPADAPTER  AdapterObject,ULONG Filter)
{
77782390:	55                   	push   %ebp
77782391:	89 e5                	mov    %esp,%ebp
77782393:	56                   	push   %esi
77782394:	53                   	push   %ebx
    BOOLEAN    Status;
    ULONG      IoCtlBufferLength=(sizeof(PACKET_OID_DATA)+sizeof(ULONG)-1);
    PPACKET_OID_DATA  OidData;

    OidData=GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,IoCtlBufferLength);
77782395:	83 ec 18             	sub    $0x18,%esp
77782398:	6a 0f                	push   $0xf
7778239a:	6a 40                	push   $0x40
7778239c:	e8 4f 17 00 00       	call   77783af0 <_GlobalAlloc@8>
777823a1:	83 c4 0c             	add    $0xc,%esp
777823a4:	50                   	push   %eax
777823a5:	e8 56 17 00 00       	call   77783b00 <_GlobalLock@4>
    if (OidData == NULL) {
777823aa:	83 c4 0c             	add    $0xc,%esp
777823ad:	89 c6                	mov    %eax,%esi
777823af:	85 c0                	test   %eax,%eax
777823b1:	74 4d                	je     77782400 <_PacketSetHwFilter+0x70>
        ODS("PacketSetHwFilter: GlobalAlloc Failed\n");
        return FALSE;
    }
    OidData->Oid=OID_GEN_CURRENT_PACKET_FILTER;
777823b3:	c7 00 0e 01 01 00    	movl   $0x1010e,(%eax)
    OidData->Length=sizeof(ULONG);
777823b9:	c7 40 04 04 00 00 00 	movl   $0x4,0x4(%eax)
    *((PULONG)OidData->Data)=Filter;
777823c0:	8b 45 0c             	mov    0xc(%ebp),%eax
777823c3:	89 46 08             	mov    %eax,0x8(%esi)
    Status=PacketRequest(AdapterObject,TRUE,OidData);
777823c6:	51                   	push   %ecx
777823c7:	56                   	push   %esi
777823c8:	6a 01                	push   $0x1
777823ca:	8b 55 08             	mov    0x8(%ebp),%edx
777823cd:	52                   	push   %edx
777823ce:	e8 5d ef ff ff       	call   77781330 <_PacketRequest>
    GlobalFreePtr(OidData);
777823d3:	89 34 24             	mov    %esi,(%esp)
777823d6:	88 c3                	mov    %al,%bl
777823d8:	e8 33 17 00 00       	call   77783b10 <_GlobalHandle@4>
777823dd:	50                   	push   %eax
777823de:	e8 3d 17 00 00       	call   77783b20 <_GlobalUnlock@4>
777823e3:	56                   	push   %esi
777823e4:	e8 27 17 00 00       	call   77783b10 <_GlobalHandle@4>
777823e9:	50                   	push   %eax
777823ea:	e8 41 17 00 00       	call   77783b30 <_GlobalFree@4>
    return Status;
777823ef:	31 c0                	xor    %eax,%eax
}
777823f1:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
777823f4:	88 d8                	mov    %bl,%al
777823f6:	5b                   	pop    %ebx
777823f7:	5e                   	pop    %esi
777823f8:	5d                   	pop    %ebp
777823f9:	c3                   	ret    
777823fa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782400:	83 ec 0c             	sub    $0xc,%esp
77782403:	68 f4 66 78 77       	push   $0x777866f4
77782408:	e8 83 16 00 00       	call   77783a90 <_OutputDebugStringW@4>
7778240d:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77782410:	31 c0                	xor    %eax,%eax
77782412:	5b                   	pop    %ebx
77782413:	5e                   	pop    %esi
77782414:	5d                   	pop    %ebp
77782415:	c3                   	ret    
77782416:	8d 76 00             	lea    0x0(%esi),%esi
77782419:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782420 <_PacketGetAdapterNames>:

/*!
  \brief Retrieve the list of available network adapters and their description.
  \param pStr User allocated string that will be filled with the names of the adapters.
  \param BufferSize Length of the buffer pointed by pStr.
  \return If the function succeeds, the return value is nonzero.

  Usually, this is the first function that should be used to communicate with the driver.
  It returns the names of the adapters installed on the system <B>and supported by WinPcap</B>. 
  After the names of the adapters, pStr contains a string that describes each of them.

  \b Warning: 
  the result of this function is obtained querying the registry, therefore the format 
  of the result in Windows NTx is different from the one in Windows 9x. Windows 9x uses the ASCII
  encoding method to store a string, while Windows NTx uses UNICODE. After a call to PacketGetAdapterNames 
  in Windows 95x, pStr contains, in succession:
  - a variable number of ASCII strings, each with the names of an adapter, separated by a "\0"
  - a double "\0"
  - a number of ASCII strings, each with the description of an adapter, separated by a "\0". The number 
   of descriptions is the same of the one of names. The fisrt description corresponds to the first name, and
   so on.
  - a double "\0". 

  In Windows NTx, pStr contains: the names of the adapters, in UNICODE format, separated by a single UNICODE "\0" (i.e. 2 ASCII "\0"), a double UNICODE "\0", followed by the descriptions of the adapters, in ASCII format, separated by a single ASCII "\0" . The string is terminated by a double ASCII "\0".
  - a variable number of UNICODE strings, each with the names of an adapter, separated by a UNICODE "\0"
  - a double UNICODE "\0"
  - a number of ASCII strings, each with the description of an adapter, separated by an ASCII "\0".
  - a double ASCII "\0". 
*/

BOOLEAN PacketGetAdapterNames(PTSTR pStr, PULONG BufferSize)
{
77782420:	55                   	push   %ebp
77782421:	89 e5                	mov    %esp,%ebp
77782423:	57                   	push   %edi
77782424:	56                   	push   %esi
77782425:	53                   	push   %ebx
77782426:	81 ec d4 02 00 00    	sub    $0x2d4,%esp
    HKEY       LinkageKey, AdapKey;
	DWORD	   RegKeySize = 0;
7778242c:	c7 85 58 fd ff ff 00 	movl   $0x0,0xfffffd58(%ebp)
77782433:	00 00 00 
    LONG       Status;
	ULONG	   Result;
	PTSTR      BpStr;
	char       *TTpStr;
	char       *DpStr;
	char       *DescBuf;
	LPADAPTER  adapter;
    PPACKET_OID_DATA OidData;
	int		   i = 0, k, rewind;
    DWORD      dim;
	TCHAR	   AdapName[256];

    ODSEx("PacketGetAdapterNames: BufferSize=%d\n",*BufferSize);
77782436:	8b 45 0c             	mov    0xc(%ebp),%eax
77782439:	31 ff                	xor    %edi,%edi
7778243b:	8b 00                	mov    (%eax),%eax
7778243d:	50                   	push   %eax
7778243e:	68 44 67 78 77       	push   $0x77786744
77782443:	e8 38 15 00 00       	call   77783980 <_Trace>

    OidData = GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, 512);
77782448:	50                   	push   %eax
77782449:	50                   	push   %eax
7778244a:	68 00 02 00 00       	push   $0x200
7778244f:	6a 40                	push   $0x40
77782451:	e8 9a 16 00 00       	call   77783af0 <_GlobalAlloc@8>
77782456:	83 c4 0c             	add    $0xc,%esp
77782459:	50                   	push   %eax
7778245a:	e8 a1 16 00 00       	call   77783b00 <_GlobalLock@4>
    if (OidData == NULL) {
7778245f:	83 c4 0c             	add    $0xc,%esp
77782462:	85 c0                	test   %eax,%eax
77782464:	89 85 40 fd ff ff    	mov    %eax,0xfffffd40(%ebp)
7778246a:	0f 84 ba 05 00 00    	je     77782a2a <_PacketGetAdapterNames+0x60a>
        ODS("PacketGetAdapterNames: GlobalAlloc Failed\n");
        return FALSE;
    }

    Status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
77782470:	83 ec 0c             	sub    $0xc,%esp
77782473:	8d 85 64 fd ff ff    	lea    0xfffffd64(%ebp),%eax
77782479:	8d b5 60 fd ff ff    	lea    0xfffffd60(%ebp),%esi
7778247f:	50                   	push   %eax
77782480:	68 19 00 02 00       	push   $0x20019
77782485:	6a 00                	push   $0x0
77782487:	68 6c 67 78 77       	push   $0x7778676c
7778248c:	68 02 00 00 80       	push   $0x80000002
77782491:	e8 ea 17 00 00       	call   77783c80 <_RegOpenKeyExW@20>
		                  TEXT("SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}"),
						  0, KEY_READ, &AdapKey);

	// Get the size to allocate for the original device names
	while ((Result = RegEnumKey(AdapKey, i, AdapName, sizeof(AdapName)/2)) == ERROR_SUCCESS) {
77782496:	83 c4 0c             	add    $0xc,%esp
77782499:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
		Status = RegOpenKeyEx(AdapKey, AdapName,0, KEY_READ, &LinkageKey);
		Status = RegOpenKeyExW(LinkageKey, L"Linkage",0, KEY_READ, &LinkageKey);
        Status = RegQueryValueExW(LinkageKey, L"Export", NULL, NULL, NULL, &dim);
		i++;
		if (Status!=ERROR_SUCCESS) continue;
		RegKeySize += dim;
777824a0:	8d 8d e8 fd ff ff    	lea    0xfffffde8(%ebp),%ecx
777824a6:	68 00 01 00 00       	push   $0x100
777824ab:	51                   	push   %ecx
777824ac:	8b 8d 64 fd ff ff    	mov    0xfffffd64(%ebp),%ecx
777824b2:	57                   	push   %edi
777824b3:	51                   	push   %ecx
777824b4:	e8 07 18 00 00       	call   77783cc0 <_RegEnumKeyW@16>
777824b9:	85 c0                	test   %eax,%eax
777824bb:	0f 85 99 00 00 00    	jne    7778255a <_PacketGetAdapterNames+0x13a>
777824c1:	83 ec 0c             	sub    $0xc,%esp
777824c4:	8d 95 e8 fd ff ff    	lea    0xfffffde8(%ebp),%edx
777824ca:	8b 85 64 fd ff ff    	mov    0xfffffd64(%ebp),%eax
777824d0:	47                   	inc    %edi
777824d1:	56                   	push   %esi
777824d2:	68 19 00 02 00       	push   $0x20019
777824d7:	6a 00                	push   $0x0
777824d9:	52                   	push   %edx
777824da:	50                   	push   %eax
777824db:	e8 a0 17 00 00       	call   77783c80 <_RegOpenKeyExW@20>
777824e0:	8b 9d 60 fd ff ff    	mov    0xfffffd60(%ebp),%ebx
777824e6:	56                   	push   %esi
777824e7:	68 19 00 02 00       	push   $0x20019
777824ec:	6a 00                	push   $0x0
777824ee:	68 00 68 78 77       	push   $0x77786800
777824f3:	53                   	push   %ebx
777824f4:	e8 87 17 00 00       	call   77783c80 <_RegOpenKeyExW@20>
777824f9:	8d 85 5c fd ff ff    	lea    0xfffffd5c(%ebp),%eax
777824ff:	8b 8d 60 fd ff ff    	mov    0xfffffd60(%ebp),%ecx
77782505:	89 04 24             	mov    %eax,(%esp)
77782508:	6a 00                	push   $0x0
7778250a:	6a 00                	push   $0x0
7778250c:	6a 00                	push   $0x0
7778250e:	68 10 68 78 77       	push   $0x77786810
77782513:	51                   	push   %ecx
77782514:	e8 b7 17 00 00       	call   77783cd0 <_RegQueryValueExW@24>
77782519:	89 c3                	mov    %eax,%ebx
7778251b:	58                   	pop    %eax
7778251c:	85 db                	test   %ebx,%ebx
7778251e:	5a                   	pop    %edx
7778251f:	0f 85 7b ff ff ff    	jne    777824a0 <_PacketGetAdapterNames+0x80>
77782525:	8b 9d 58 fd ff ff    	mov    0xfffffd58(%ebp),%ebx
7778252b:	8b 85 5c fd ff ff    	mov    0xfffffd5c(%ebp),%eax
77782531:	8d 8d e8 fd ff ff    	lea    0xfffffde8(%ebp),%ecx
77782537:	68 00 01 00 00       	push   $0x100
7778253c:	01 c3                	add    %eax,%ebx
7778253e:	51                   	push   %ecx
7778253f:	8b 8d 64 fd ff ff    	mov    0xfffffd64(%ebp),%ecx
77782545:	57                   	push   %edi
77782546:	89 9d 58 fd ff ff    	mov    %ebx,0xfffffd58(%ebp)
7778254c:	51                   	push   %ecx
7778254d:	e8 6e 17 00 00       	call   77783cc0 <_RegEnumKeyW@16>
77782552:	85 c0                	test   %eax,%eax
77782554:	0f 84 67 ff ff ff    	je     777824c1 <_PacketGetAdapterNames+0xa1>
	}
	
	// Allocate the memory for the original device names
	ODSEx("Need %d bytes for the names\n", RegKeySize+2);
7778255a:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
77782560:	83 c0 02             	add    $0x2,%eax
77782563:	52                   	push   %edx
77782564:	52                   	push   %edx
77782565:	50                   	push   %eax
77782566:	68 1e 68 78 77       	push   $0x7778681e
7778256b:	e8 10 14 00 00       	call   77783980 <_Trace>
	BpStr = GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, RegKeySize+2);
77782570:	50                   	push   %eax
77782571:	50                   	push   %eax
77782572:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
77782578:	83 c0 02             	add    $0x2,%eax
7778257b:	50                   	push   %eax
7778257c:	6a 40                	push   $0x40
7778257e:	e8 6d 15 00 00       	call   77783af0 <_GlobalAlloc@8>
77782583:	83 c4 0c             	add    $0xc,%esp
77782586:	50                   	push   %eax
77782587:	e8 74 15 00 00       	call   77783b00 <_GlobalLock@4>
	if (BpStr == NULL || RegKeySize > *BufferSize) {
7778258c:	83 c4 0c             	add    $0xc,%esp
7778258f:	85 c0                	test   %eax,%eax
77782591:	89 85 50 fd ff ff    	mov    %eax,0xfffffd50(%ebp)
77782597:	74 0d                	je     777825a6 <_PacketGetAdapterNames+0x186>
77782599:	8b 55 0c             	mov    0xc(%ebp),%edx
7778259c:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
777825a2:	39 02                	cmp    %eax,(%edx)
777825a4:	73 3b                	jae    777825e1 <_PacketGetAdapterNames+0x1c1>
        ODS("PacketGetAdapterNames: GlobalAlloc Failed\n");
777825a6:	83 ec 0c             	sub    $0xc,%esp
777825a9:	68 3c 68 78 77       	push   $0x7778683c
777825ae:	e8 dd 14 00 00       	call   77783a90 <_OutputDebugStringW@4>
		GlobalFreePtr(OidData);
		return FALSE;
	}
	k = 0;
	i = 0;

    ODS("PacketGetAdapterNames: Cycling through the adapters:\n");

	// Copy the names to the buffer
	while ((Result = RegEnumKey(AdapKey, i, AdapName, sizeof(AdapName)/2)) == ERROR_SUCCESS) {
		WCHAR UpperBindStr[64];

		i++;
		ODSEx(" %d) ", i);

		Status = RegOpenKeyEx(AdapKey,AdapName,0,KEY_READ,&LinkageKey);
		Status = RegOpenKeyExW(LinkageKey,L"Linkage",0,KEY_READ,&LinkageKey);

		dim=sizeof(UpperBindStr);
        Status=RegQueryValueExW(LinkageKey,L"UpperBind",NULL,NULL,(PUCHAR)UpperBindStr,&dim);
		
		ODSEx("UpperBind=%S ", UpperBindStr);

		if( Status!=ERROR_SUCCESS || _wcsicmp(UpperBindStr,L"NdisWan")==0 ){
			ODS("Name = SKIPPED\n");
			continue;
		}

		dim=RegKeySize-k;
        Status=RegQueryValueExW(LinkageKey,L"Export",NULL,NULL,(LPBYTE)BpStr+k,&dim);
		if(Status!=ERROR_SUCCESS){
			ODS("Name = SKIPPED (error reading the key)\n");
			continue;
		}

		ODSEx("Name = %S\n", (LPBYTE)BpStr+k);

		k+=dim-2;
	}

	CloseHandle(AdapKey);

#ifdef _DEBUG_TO_FILE
	//dump BpStr for debug purposes
	ODS("Dumping BpStr:");
	{
		FILE *f;
		f = fopen("winpcap_debug.txt", "a");
		for(i=0;i<k;i++){
			if(!(i%32))fprintf(f, "\n ");
			fprintf(f, "%c " , *((LPBYTE)BpStr+i));
		}
		fclose(f);
	}
	ODS("\n");
#endif

	
	if (k != 0){
		
		DescBuf=GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, 4096);
		if (DescBuf == NULL) {
			GlobalFreePtr (BpStr);
		    GlobalFreePtr(OidData);
777825b3:	8b b5 40 fd ff ff    	mov    0xfffffd40(%ebp),%esi
777825b9:	56                   	push   %esi
777825ba:	e8 51 15 00 00       	call   77783b10 <_GlobalHandle@4>
777825bf:	50                   	push   %eax
777825c0:	e8 5b 15 00 00       	call   77783b20 <_GlobalUnlock@4>
777825c5:	8b 9d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ebx
777825cb:	53                   	push   %ebx
777825cc:	e8 3f 15 00 00       	call   77783b10 <_GlobalHandle@4>
777825d1:	50                   	push   %eax
777825d2:	e8 59 15 00 00       	call   77783b30 <_GlobalFree@4>
			return FALSE;
		}
		DpStr=DescBuf;
				
		for(i=0,k=0;BpStr[i]!=0 || BpStr[i+1]!=0;){
			
			if(k+wcslen(BpStr+i)+30 > *BufferSize){
				// Input buffer too small
			    GlobalFreePtr(OidData);
				GlobalFreePtr (BpStr);
				GlobalFreePtr (DescBuf);
				ODS("PacketGetAdapterNames: Input buffer too small!\n");
				return FALSE;
			}

			// Create the device name
			rewind=k;
			memcpy(pStr+k,BpStr+i,16);
			memcpy(pStr+k+8,TEXT("NPF_"),8);
			i+=8;
			k+=12;
			while(BpStr[i-1]!=0){
				pStr[k++]=BpStr[i++];
			}

			// Open the adapter
			adapter=PacketOpenAdapter(pStr+rewind);
			if(adapter==NULL){
				k=rewind;
				continue;
			}

			// Retrieve the description
			OidData->Oid = OID_GEN_VENDOR_DESCRIPTION;
			OidData->Length = 256;
			ZeroMemory(OidData->Data,256);
			Status = PacketRequest(adapter,FALSE,OidData);
			if(Status==0 || ((char*)OidData->Data)[0]==0){
				k=rewind;
				continue;
			}

			ODSEx("Adapter Description=%s\n\n",OidData->Data);

			// Copy the description
			TTpStr=(char*)(OidData->Data);
			while(*TTpStr!=0){
				*DpStr++=*TTpStr++;
			}
			*DpStr++=*TTpStr++;
			
			// Close the adapter
			PacketCloseAdapter(adapter);
			
		}
		*DpStr = 0;

		pStr[k++] = 0;
		pStr[k] = 0;

		if ((ULONG)(DpStr - DescBuf + k) < *BufferSize) {
			memcpy(pStr + k, DescBuf, DpStr - DescBuf);
		} else {
		    GlobalFreePtr(OidData);
			GlobalFreePtr(BpStr);
			GlobalFreePtr(DescBuf);
			ODS("\nPacketGetAdapterNames: ended with failure\n");
			return FALSE;
		}

	    GlobalFreePtr(OidData);
		GlobalFreePtr(BpStr);
		GlobalFreePtr(DescBuf);
		ODS("\nPacketGetAdapterNames: ended correctly\n");
		return TRUE;
	}
	else{
	    DWORD RegType;

		ODS("Adapters not found under SYSTEM\\ControlSet001\\Control\\Class. Using the TCP/IP bindings.\n");

		GlobalFreePtr(BpStr);
		Status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
						TEXT("SYSTEM\\ControlSet001\\Services\\Tcpip\\Linkage"),
						0, KEY_READ, &LinkageKey);
		if (Status == ERROR_SUCCESS) {
			// Retrieve the length of the key
			Status = RegQueryValueEx(LinkageKey, TEXT("bind"), NULL, &RegType, NULL, &RegKeySize);
			// Allocate the buffer
			BpStr = GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, RegKeySize + 2);
			if (BpStr == NULL || RegKeySize > *BufferSize) {
				GlobalFreePtr(OidData);
				return FALSE;
			}
			Status = RegQueryValueEx(LinkageKey, TEXT("bind"), NULL, &RegType, (LPBYTE)BpStr, &RegKeySize);
			RegCloseKey(LinkageKey);
		} else {
            //ODS("SYSTEM\\ControlSet001\\Control\\Class - RegKey not found.\n");
            ODS("SYSTEM\\ControlSet001\\Services\\Tcpip\\Linkage - RegKey not found.\n");
		}
		if (Status == ERROR_SUCCESS) {
			DescBuf = GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, 4096);
			if (DescBuf == NULL) {
				GlobalFreePtr(BpStr);
				GlobalFreePtr(OidData);
				return FALSE;
			}
			DpStr = DescBuf;
			for (i = 0, k = 0; BpStr[i] != 0 || BpStr[i+1] != 0; ) {
				if (k + wcslen(BpStr + i) + 30 > *BufferSize) {
					// Input buffer too small
					GlobalFreePtr(OidData);
					GlobalFreePtr(BpStr);
					GlobalFreePtr(DescBuf);
					return FALSE;
				}

				ODS("\tCreating a device name - started.\n");

				// Create the device name
				rewind = k;
				memcpy(pStr + k,BpStr + i,16);
				memcpy(pStr + k + 8, TEXT("NPF_"), 8);
				i += 8;
				k += 12;
				while (BpStr[i - 1] != 0) {
					pStr[k++] = BpStr[i++];
				}
				// Open the adapter
				adapter = PacketOpenAdapter(pStr+rewind);
				if (adapter == NULL) {
					k = rewind;
					continue;
				}
				// Retrieve the description
				OidData->Oid = OID_GEN_VENDOR_DESCRIPTION;
				OidData->Length = 256;
				Status = PacketRequest(adapter, FALSE, OidData);
				if (Status == 0 || ((char*)OidData->Data)[0] == 0) {
					k = rewind;
     				ODS("\tCreating a device name - Retrieve the description.\n");
					continue;
				}
				
				// Copy the description
				TTpStr = (char*)(OidData->Data);
				while (*TTpStr != 0){
					*DpStr++ = *TTpStr++;
				}
				*DpStr++ = *TTpStr++;
				// Close the adapter
				PacketCloseAdapter(adapter);

				ODS("\tCreating a device name - completed.\n");
			}
			*DpStr = 0;
			
			pStr[k++] = 0;
			pStr[k] = 0;
			
			if ((ULONG)(DpStr - DescBuf + k) < *BufferSize) {
				memcpy(pStr + k, DescBuf, DpStr-DescBuf);
			} else {
				GlobalFreePtr(OidData);
				GlobalFreePtr(BpStr);
				GlobalFreePtr(DescBuf);
				return FALSE;
			}
			
			GlobalFreePtr(OidData);
			GlobalFreePtr(BpStr);
			GlobalFreePtr(DescBuf);
			ODS("PacketGetAdapterNames() returning TRUE\n");
			return TRUE;
		} else {
			MessageBox(NULL,TEXT("Can not find TCP/IP bindings.\nIn order to run the packet capture driver you must install TCP/IP."),szWindowTitle,MB_OK);
			ODS("Cannot find the TCP/IP bindings\n");
			return FALSE;
777825d7:	31 c0                	xor    %eax,%eax
		}
	}
}
777825d9:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777825dc:	5b                   	pop    %ebx
777825dd:	5e                   	pop    %esi
777825de:	5f                   	pop    %edi
777825df:	5d                   	pop    %ebp
777825e0:	c3                   	ret    
777825e1:	83 ec 0c             	sub    $0xc,%esp
777825e4:	31 f6                	xor    %esi,%esi
777825e6:	31 ff                	xor    %edi,%edi
777825e8:	68 94 68 78 77       	push   $0x77786894
777825ed:	eb 09                	jmp    777825f8 <_PacketGetAdapterNames+0x1d8>
777825ef:	90                   	nop    
777825f0:	83 ec 0c             	sub    $0xc,%esp
777825f3:	68 00 69 78 77       	push   $0x77786900
777825f8:	e8 93 14 00 00       	call   77783a90 <_OutputDebugStringW@4>
777825fd:	8d 8d e8 fd ff ff    	lea    0xfffffde8(%ebp),%ecx
77782603:	83 c4 0c             	add    $0xc,%esp
77782606:	8b 85 64 fd ff ff    	mov    0xfffffd64(%ebp),%eax
7778260c:	68 00 01 00 00       	push   $0x100
77782611:	51                   	push   %ecx
77782612:	57                   	push   %edi
77782613:	50                   	push   %eax
77782614:	e8 a7 16 00 00       	call   77783cc0 <_RegEnumKeyW@16>
77782619:	85 c0                	test   %eax,%eax
7778261b:	0f 85 4d 01 00 00    	jne    7778276e <_PacketGetAdapterNames+0x34e>
77782621:	47                   	inc    %edi
77782622:	50                   	push   %eax
77782623:	50                   	push   %eax
77782624:	57                   	push   %edi
77782625:	68 20 69 78 77       	push   $0x77786920
7778262a:	e8 51 13 00 00       	call   77783980 <_Trace>
7778262f:	8d 8d 60 fd ff ff    	lea    0xfffffd60(%ebp),%ecx
77782635:	8d 85 e8 fd ff ff    	lea    0xfffffde8(%ebp),%eax
7778263b:	89 0c 24             	mov    %ecx,(%esp)
7778263e:	68 19 00 02 00       	push   $0x20019
77782643:	6a 00                	push   $0x0
77782645:	50                   	push   %eax
77782646:	8b 85 64 fd ff ff    	mov    0xfffffd64(%ebp),%eax
7778264c:	50                   	push   %eax
7778264d:	e8 2e 16 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77782652:	8d 95 60 fd ff ff    	lea    0xfffffd60(%ebp),%edx
77782658:	8b 85 60 fd ff ff    	mov    0xfffffd60(%ebp),%eax
7778265e:	52                   	push   %edx
7778265f:	68 19 00 02 00       	push   $0x20019
77782664:	6a 00                	push   $0x0
77782666:	68 00 68 78 77       	push   $0x77786800
7778266b:	50                   	push   %eax
7778266c:	e8 0f 16 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77782671:	8d 8d 5c fd ff ff    	lea    0xfffffd5c(%ebp),%ecx
77782677:	8d 85 68 fd ff ff    	lea    0xfffffd68(%ebp),%eax
7778267d:	89 0c 24             	mov    %ecx,(%esp)
77782680:	50                   	push   %eax
77782681:	8b 85 60 fd ff ff    	mov    0xfffffd60(%ebp),%eax
77782687:	6a 00                	push   $0x0
77782689:	c7 85 5c fd ff ff 80 	movl   $0x80,0xfffffd5c(%ebp)
77782690:	00 00 00 
77782693:	6a 00                	push   $0x0
77782695:	68 26 69 78 77       	push   $0x77786926
7778269a:	50                   	push   %eax
7778269b:	e8 30 16 00 00       	call   77783cd0 <_RegQueryValueExW@24>
777826a0:	8d 95 68 fd ff ff    	lea    0xfffffd68(%ebp),%edx
777826a6:	89 c3                	mov    %eax,%ebx
777826a8:	52                   	push   %edx
777826a9:	68 3a 69 78 77       	push   $0x7778693a
777826ae:	e8 cd 12 00 00       	call   77783980 <_Trace>
777826b3:	83 c4 10             	add    $0x10,%esp
777826b6:	85 db                	test   %ebx,%ebx
777826b8:	0f 85 32 ff ff ff    	jne    777825f0 <_PacketGetAdapterNames+0x1d0>
777826be:	8d 8d 68 fd ff ff    	lea    0xfffffd68(%ebp),%ecx
777826c4:	50                   	push   %eax
777826c5:	50                   	push   %eax
777826c6:	68 48 69 78 77       	push   $0x77786948
777826cb:	51                   	push   %ecx
777826cc:	e8 9f 13 00 00       	call   77783a70 <__wcsicmp>
777826d1:	83 c4 10             	add    $0x10,%esp
777826d4:	85 c0                	test   %eax,%eax
777826d6:	0f 84 14 ff ff ff    	je     777825f0 <_PacketGetAdapterNames+0x1d0>
777826dc:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
777826e2:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
777826e8:	29 f0                	sub    %esi,%eax
777826ea:	01 f2                	add    %esi,%edx
777826ec:	89 85 5c fd ff ff    	mov    %eax,0xfffffd5c(%ebp)
777826f2:	8b 8d 60 fd ff ff    	mov    0xfffffd60(%ebp),%ecx
777826f8:	8d 85 5c fd ff ff    	lea    0xfffffd5c(%ebp),%eax
777826fe:	89 95 38 fd ff ff    	mov    %edx,0xfffffd38(%ebp)
77782704:	53                   	push   %ebx
77782705:	53                   	push   %ebx
77782706:	50                   	push   %eax
77782707:	52                   	push   %edx
77782708:	6a 00                	push   $0x0
7778270a:	6a 00                	push   $0x0
7778270c:	68 10 68 78 77       	push   $0x77786810
77782711:	51                   	push   %ecx
77782712:	e8 b9 15 00 00       	call   77783cd0 <_RegQueryValueExW@24>
77782717:	89 c3                	mov    %eax,%ebx
77782719:	58                   	pop    %eax
7778271a:	85 db                	test   %ebx,%ebx
7778271c:	5a                   	pop    %edx
7778271d:	74 0d                	je     7778272c <_PacketGetAdapterNames+0x30c>
7778271f:	83 ec 0c             	sub    $0xc,%esp
77782722:	68 58 69 78 77       	push   $0x77786958
77782727:	e9 cc fe ff ff       	jmp    777825f8 <_PacketGetAdapterNames+0x1d8>
7778272c:	50                   	push   %eax
7778272d:	50                   	push   %eax
7778272e:	8b 85 38 fd ff ff    	mov    0xfffffd38(%ebp),%eax
77782734:	50                   	push   %eax
77782735:	68 a8 69 78 77       	push   $0x777869a8
7778273a:	e8 41 12 00 00       	call   77783980 <_Trace>
7778273f:	8b 85 5c fd ff ff    	mov    0xfffffd5c(%ebp),%eax
77782745:	01 f0                	add    %esi,%eax
77782747:	83 c4 10             	add    $0x10,%esp
7778274a:	8d 8d e8 fd ff ff    	lea    0xfffffde8(%ebp),%ecx
77782750:	8d 70 fe             	lea    0xfffffffe(%eax),%esi
77782753:	8b 85 64 fd ff ff    	mov    0xfffffd64(%ebp),%eax
77782759:	68 00 01 00 00       	push   $0x100
7778275e:	51                   	push   %ecx
7778275f:	57                   	push   %edi
77782760:	50                   	push   %eax
77782761:	e8 5a 15 00 00       	call   77783cc0 <_RegEnumKeyW@16>
77782766:	85 c0                	test   %eax,%eax
77782768:	0f 84 b3 fe ff ff    	je     77782621 <_PacketGetAdapterNames+0x201>
7778276e:	83 ec 0c             	sub    $0xc,%esp
77782771:	8b 85 64 fd ff ff    	mov    0xfffffd64(%ebp),%eax
77782777:	50                   	push   %eax
77782778:	e8 63 13 00 00       	call   77783ae0 <_CloseHandle@4>
7778277d:	83 c4 0c             	add    $0xc,%esp
77782780:	85 f6                	test   %esi,%esi
77782782:	0f 84 b4 02 00 00    	je     77782a3c <_PacketGetAdapterNames+0x61c>
77782788:	83 ec 18             	sub    $0x18,%esp
7778278b:	68 00 10 00 00       	push   $0x1000
77782790:	6a 40                	push   $0x40
77782792:	e8 59 13 00 00       	call   77783af0 <_GlobalAlloc@8>
77782797:	83 c4 0c             	add    $0xc,%esp
7778279a:	50                   	push   %eax
7778279b:	e8 60 13 00 00       	call   77783b00 <_GlobalLock@4>
777827a0:	83 c4 0c             	add    $0xc,%esp
777827a3:	85 c0                	test   %eax,%eax
777827a5:	89 85 48 fd ff ff    	mov    %eax,0xfffffd48(%ebp)
777827ab:	0f 84 c8 07 00 00    	je     77782f79 <_PacketGetAdapterNames+0xb59>
777827b1:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
777827b7:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
777827bd:	31 ff                	xor    %edi,%edi
777827bf:	31 f6                	xor    %esi,%esi
777827c1:	66 83 3a 00          	cmpw   $0x0,(%edx)
777827c5:	89 85 4c fd ff ff    	mov    %eax,0xfffffd4c(%ebp)
777827cb:	0f 84 a5 06 00 00    	je     77782e76 <_PacketGetAdapterNames+0xa56>
777827d1:	8b 8d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ecx
777827d7:	8b 9d 50 fd ff ff    	mov    0xfffffd50(%ebp),%ebx
777827dd:	83 c1 08             	add    $0x8,%ecx
777827e0:	89 8d 34 fd ff ff    	mov    %ecx,0xfffffd34(%ebp)
777827e6:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
777827ec:	83 ec 0c             	sub    $0xc,%esp
777827ef:	8d 04 7a             	lea    (%edx,%edi,2),%eax
777827f2:	50                   	push   %eax
777827f3:	e8 48 12 00 00       	call   77783a40 <_wcslen>
777827f8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777827fb:	83 c4 10             	add    $0x10,%esp
777827fe:	8d 44 30 1e          	lea    0x1e(%eax,%esi,1),%eax
77782802:	3b 01                	cmp    (%ecx),%eax
77782804:	0f 87 ee 05 00 00    	ja     77782df8 <_PacketGetAdapterNames+0x9d8>
7778280a:	89 b5 3c fd ff ff    	mov    %esi,0xfffffd3c(%ebp)
77782810:	8b 55 08             	mov    0x8(%ebp),%edx
77782813:	8b 03                	mov    (%ebx),%eax
77782815:	83 c7 08             	add    $0x8,%edi
77782818:	89 04 72             	mov    %eax,(%edx,%esi,2)
7778281b:	8b 43 04             	mov    0x4(%ebx),%eax
7778281e:	89 44 72 04          	mov    %eax,0x4(%edx,%esi,2)
77782822:	8b 43 08             	mov    0x8(%ebx),%eax
77782825:	89 44 72 08          	mov    %eax,0x8(%edx,%esi,2)
77782829:	8b 43 0c             	mov    0xc(%ebx),%eax
7778282c:	83 c3 10             	add    $0x10,%ebx
7778282f:	89 44 72 0c          	mov    %eax,0xc(%edx,%esi,2)
77782833:	a1 b4 69 78 77       	mov    0x777869b4,%eax
77782838:	89 44 72 10          	mov    %eax,0x10(%edx,%esi,2)
7778283c:	a1 b8 69 78 77       	mov    0x777869b8,%eax
77782841:	89 44 72 14          	mov    %eax,0x14(%edx,%esi,2)
77782845:	83 c6 0c             	add    $0xc,%esi
77782848:	eb 16                	jmp    77782860 <_PacketGetAdapterNames+0x440>
7778284a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77782850:	83 c3 02             	add    $0x2,%ebx
77782853:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782856:	47                   	inc    %edi
77782857:	66 8b 43 fe          	mov    0xfffffffe(%ebx),%ax
7778285b:	66 89 04 71          	mov    %ax,(%ecx,%esi,2)
7778285f:	46                   	inc    %esi
77782860:	66 83 7b fe 00       	cmpw   $0x0,0xfffffffe(%ebx)
77782865:	75 e9                	jne    77782850 <_PacketGetAdapterNames+0x430>
77782867:	8b 95 3c fd ff ff    	mov    0xfffffd3c(%ebp),%edx
7778286d:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782870:	83 ec 0c             	sub    $0xc,%esp
77782873:	8d 04 51             	lea    (%ecx,%edx,2),%eax
77782876:	50                   	push   %eax
77782877:	e8 54 ee ff ff       	call   777816d0 <_PacketOpenAdapter>
7778287c:	83 c4 10             	add    $0x10,%esp
7778287f:	85 c0                	test   %eax,%eax
77782881:	89 85 44 fd ff ff    	mov    %eax,0xfffffd44(%ebp)
77782887:	74 4a                	je     777828d3 <_PacketGetAdapterNames+0x4b3>
77782889:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
7778288f:	8b 95 34 fd ff ff    	mov    0xfffffd34(%ebp),%edx
77782895:	c7 00 0d 01 01 00    	movl   $0x1010d,(%eax)
7778289b:	c7 40 04 00 01 00 00 	movl   $0x100,0x4(%eax)
777828a2:	51                   	push   %ecx
777828a3:	68 00 01 00 00       	push   $0x100
777828a8:	6a 00                	push   $0x0
777828aa:	52                   	push   %edx
777828ab:	e8 60 11 00 00       	call   77783a10 <_memset>
777828b0:	83 c4 0c             	add    $0xc,%esp
777828b3:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
777828b9:	50                   	push   %eax
777828ba:	8b 85 44 fd ff ff    	mov    0xfffffd44(%ebp),%eax
777828c0:	6a 00                	push   $0x0
777828c2:	50                   	push   %eax
777828c3:	e8 68 ea ff ff       	call   77781330 <_PacketRequest>
777828c8:	83 c4 10             	add    $0x10,%esp
777828cb:	84 c0                	test   %al,%al
777828cd:	0f 85 dd 00 00 00    	jne    777829b0 <_PacketGetAdapterNames+0x590>
777828d3:	8b b5 3c fd ff ff    	mov    0xfffffd3c(%ebp),%esi
777828d9:	66 83 3b 00          	cmpw   $0x0,(%ebx)
777828dd:	0f 85 03 ff ff ff    	jne    777827e6 <_PacketGetAdapterNames+0x3c6>
777828e3:	66 83 7b 02 00       	cmpw   $0x0,0x2(%ebx)
777828e8:	0f 85 f8 fe ff ff    	jne    777827e6 <_PacketGetAdapterNames+0x3c6>
777828ee:	8b 85 4c fd ff ff    	mov    0xfffffd4c(%ebp),%eax
777828f4:	c6 00 00             	movb   $0x0,(%eax)
777828f7:	8b 55 08             	mov    0x8(%ebp),%edx
777828fa:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777828fd:	66 c7 04 72 00 00    	movw   $0x0,(%edx,%esi,2)
77782903:	46                   	inc    %esi
77782904:	66 c7 04 72 00 00    	movw   $0x0,(%edx,%esi,2)
7778290a:	89 c2                	mov    %eax,%edx
7778290c:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
77782912:	29 c2                	sub    %eax,%edx
77782914:	8d 04 32             	lea    (%edx,%esi,1),%eax
77782917:	3b 01                	cmp    (%ecx),%eax
77782919:	0f 83 dc 05 00 00    	jae    77782efb <_PacketGetAdapterNames+0xadb>
7778291f:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782922:	57                   	push   %edi
77782923:	52                   	push   %edx
77782924:	8d 04 71             	lea    (%ecx,%esi,2),%eax
77782927:	8b b5 48 fd ff ff    	mov    0xfffffd48(%ebp),%esi
7778292d:	56                   	push   %esi
7778292e:	50                   	push   %eax
7778292f:	e8 cc 10 00 00       	call   77783a00 <_memcpy>
77782934:	8b 8d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ecx
7778293a:	5b                   	pop    %ebx
7778293b:	51                   	push   %ecx
7778293c:	e8 cf 11 00 00       	call   77783b10 <_GlobalHandle@4>
77782941:	50                   	push   %eax
77782942:	e8 d9 11 00 00       	call   77783b20 <_GlobalUnlock@4>
77782947:	8b 95 40 fd ff ff    	mov    0xfffffd40(%ebp),%edx
7778294d:	52                   	push   %edx
7778294e:	e8 bd 11 00 00       	call   77783b10 <_GlobalHandle@4>
77782953:	50                   	push   %eax
77782954:	e8 d7 11 00 00       	call   77783b30 <_GlobalFree@4>
77782959:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
7778295f:	50                   	push   %eax
77782960:	e8 ab 11 00 00       	call   77783b10 <_GlobalHandle@4>
77782965:	50                   	push   %eax
77782966:	e8 b5 11 00 00       	call   77783b20 <_GlobalUnlock@4>
7778296b:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782971:	50                   	push   %eax
77782972:	e8 99 11 00 00       	call   77783b10 <_GlobalHandle@4>
77782977:	50                   	push   %eax
77782978:	e8 b3 11 00 00       	call   77783b30 <_GlobalFree@4>
7778297d:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
77782983:	50                   	push   %eax
77782984:	e8 87 11 00 00       	call   77783b10 <_GlobalHandle@4>
77782989:	50                   	push   %eax
7778298a:	e8 91 11 00 00       	call   77783b20 <_GlobalUnlock@4>
7778298f:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
77782995:	50                   	push   %eax
77782996:	e8 75 11 00 00       	call   77783b10 <_GlobalHandle@4>
7778299b:	50                   	push   %eax
7778299c:	e8 8f 11 00 00       	call   77783b30 <_GlobalFree@4>
777829a1:	68 c0 69 78 77       	push   $0x777869c0
777829a6:	e9 98 03 00 00       	jmp    77782d43 <_PacketGetAdapterNames+0x923>
777829ab:	90                   	nop    
777829ac:	8d 74 26 00          	lea    0x0(%esi),%esi
777829b0:	8b 95 40 fd ff ff    	mov    0xfffffd40(%ebp),%edx
777829b6:	80 7a 08 00          	cmpb   $0x0,0x8(%edx)
777829ba:	0f 84 13 ff ff ff    	je     777828d3 <_PacketGetAdapterNames+0x4b3>
777829c0:	50                   	push   %eax
777829c1:	50                   	push   %eax
777829c2:	8b 85 34 fd ff ff    	mov    0xfffffd34(%ebp),%eax
777829c8:	50                   	push   %eax
777829c9:	68 12 6a 78 77       	push   $0x77786a12
777829ce:	e8 ad 0f 00 00       	call   77783980 <_Trace>
777829d3:	8b 8d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ecx
777829d9:	83 c4 10             	add    $0x10,%esp
777829dc:	8b 95 34 fd ff ff    	mov    0xfffffd34(%ebp),%edx
777829e2:	80 79 08 00          	cmpb   $0x0,0x8(%ecx)
777829e6:	0f 84 9a 04 00 00    	je     77782e86 <_PacketGetAdapterNames+0xa66>
777829ec:	8a 02                	mov    (%edx),%al
777829ee:	8b 8d 4c fd ff ff    	mov    0xfffffd4c(%ebp),%ecx
777829f4:	42                   	inc    %edx
777829f5:	88 01                	mov    %al,(%ecx)
777829f7:	41                   	inc    %ecx
777829f8:	89 8d 4c fd ff ff    	mov    %ecx,0xfffffd4c(%ebp)
777829fe:	8a 02                	mov    (%edx),%al
77782a00:	84 c0                	test   %al,%al
77782a02:	75 ea                	jne    777829ee <_PacketGetAdapterNames+0x5ce>
77782a04:	8b 8d 4c fd ff ff    	mov    0xfffffd4c(%ebp),%ecx
77782a0a:	83 ec 0c             	sub    $0xc,%esp
77782a0d:	88 01                	mov    %al,(%ecx)
77782a0f:	41                   	inc    %ecx
77782a10:	8b 85 44 fd ff ff    	mov    0xfffffd44(%ebp),%eax
77782a16:	89 8d 4c fd ff ff    	mov    %ecx,0xfffffd4c(%ebp)
77782a1c:	50                   	push   %eax
77782a1d:	e8 2e f3 ff ff       	call   77781d50 <_PacketCloseAdapter>
77782a22:	83 c4 10             	add    $0x10,%esp
77782a25:	e9 af fe ff ff       	jmp    777828d9 <_PacketGetAdapterNames+0x4b9>
77782a2a:	83 ec 0c             	sub    $0xc,%esp
77782a2d:	68 3c 68 78 77       	push   $0x7778683c
77782a32:	e8 59 10 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782a37:	e9 9b fb ff ff       	jmp    777825d7 <_PacketGetAdapterNames+0x1b7>
77782a3c:	83 ec 0c             	sub    $0xc,%esp
77782a3f:	68 2c 6a 78 77       	push   $0x77786a2c
77782a44:	e8 47 10 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782a49:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
77782a4f:	52                   	push   %edx
77782a50:	e8 bb 10 00 00       	call   77783b10 <_GlobalHandle@4>
77782a55:	50                   	push   %eax
77782a56:	e8 c5 10 00 00       	call   77783b20 <_GlobalUnlock@4>
77782a5b:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782a61:	50                   	push   %eax
77782a62:	e8 a9 10 00 00       	call   77783b10 <_GlobalHandle@4>
77782a67:	50                   	push   %eax
77782a68:	e8 c3 10 00 00       	call   77783b30 <_GlobalFree@4>
77782a6d:	8d 85 60 fd ff ff    	lea    0xfffffd60(%ebp),%eax
77782a73:	50                   	push   %eax
77782a74:	68 19 00 02 00       	push   $0x20019
77782a79:	6a 00                	push   $0x0
77782a7b:	68 e0 6a 78 77       	push   $0x77786ae0
77782a80:	68 02 00 00 80       	push   $0x80000002
77782a85:	e8 f6 11 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77782a8a:	83 c4 0c             	add    $0xc,%esp
77782a8d:	89 c3                	mov    %eax,%ebx
77782a8f:	85 c0                	test   %eax,%eax
77782a91:	75 7a                	jne    77782b0d <_PacketGetAdapterNames+0x6ed>
77782a93:	8d b5 58 fd ff ff    	lea    0xfffffd58(%ebp),%esi
77782a99:	50                   	push   %eax
77782a9a:	8d 9d 54 fd ff ff    	lea    0xfffffd54(%ebp),%ebx
77782aa0:	50                   	push   %eax
77782aa1:	8b 85 60 fd ff ff    	mov    0xfffffd60(%ebp),%eax
77782aa7:	56                   	push   %esi
77782aa8:	6a 00                	push   $0x0
77782aaa:	53                   	push   %ebx
77782aab:	6a 00                	push   $0x0
77782aad:	68 38 6b 78 77       	push   $0x77786b38
77782ab2:	50                   	push   %eax
77782ab3:	e8 18 12 00 00       	call   77783cd0 <_RegQueryValueExW@24>
77782ab8:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
77782abe:	83 ec 10             	sub    $0x10,%esp
77782ac1:	83 c0 02             	add    $0x2,%eax
77782ac4:	50                   	push   %eax
77782ac5:	6a 40                	push   $0x40
77782ac7:	e8 24 10 00 00       	call   77783af0 <_GlobalAlloc@8>
77782acc:	83 c4 0c             	add    $0xc,%esp
77782acf:	50                   	push   %eax
77782ad0:	e8 2b 10 00 00       	call   77783b00 <_GlobalLock@4>
77782ad5:	83 c4 0c             	add    $0xc,%esp
77782ad8:	85 c0                	test   %eax,%eax
77782ada:	89 85 50 fd ff ff    	mov    %eax,0xfffffd50(%ebp)
77782ae0:	74 11                	je     77782af3 <_PacketGetAdapterNames+0x6d3>
77782ae2:	8b 55 0c             	mov    0xc(%ebp),%edx
77782ae5:	8b 85 58 fd ff ff    	mov    0xfffffd58(%ebp),%eax
77782aeb:	39 02                	cmp    %eax,(%edx)
77782aed:	0f 83 84 02 00 00    	jae    77782d77 <_PacketGetAdapterNames+0x957>
77782af3:	83 ec 0c             	sub    $0xc,%esp
77782af6:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782afc:	50                   	push   %eax
77782afd:	e8 0e 10 00 00       	call   77783b10 <_GlobalHandle@4>
77782b02:	50                   	push   %eax
77782b03:	e8 18 10 00 00       	call   77783b20 <_GlobalUnlock@4>
77782b08:	e9 b8 fa ff ff       	jmp    777825c5 <_PacketGetAdapterNames+0x1a5>
77782b0d:	83 ec 0c             	sub    $0xc,%esp
77782b10:	68 44 6b 78 77       	push   $0x77786b44
77782b15:	e8 76 0f 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782b1a:	83 c4 0c             	add    $0xc,%esp
77782b1d:	85 db                	test   %ebx,%ebx
77782b1f:	0f 85 2d 02 00 00    	jne    77782d52 <_PacketGetAdapterNames+0x932>
77782b25:	83 ec 18             	sub    $0x18,%esp
77782b28:	68 00 10 00 00       	push   $0x1000
77782b2d:	6a 40                	push   $0x40
77782b2f:	e8 bc 0f 00 00       	call   77783af0 <_GlobalAlloc@8>
77782b34:	83 c4 0c             	add    $0xc,%esp
77782b37:	50                   	push   %eax
77782b38:	e8 c3 0f 00 00       	call   77783b00 <_GlobalLock@4>
77782b3d:	83 c4 0c             	add    $0xc,%esp
77782b40:	85 c0                	test   %eax,%eax
77782b42:	89 85 48 fd ff ff    	mov    %eax,0xfffffd48(%ebp)
77782b48:	0f 84 2b 04 00 00    	je     77782f79 <_PacketGetAdapterNames+0xb59>
77782b4e:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782b54:	8b 8d 48 fd ff ff    	mov    0xfffffd48(%ebp),%ecx
77782b5a:	31 ff                	xor    %edi,%edi
77782b5c:	31 f6                	xor    %esi,%esi
77782b5e:	66 83 38 00          	cmpw   $0x0,(%eax)
77782b62:	89 8d 4c fd ff ff    	mov    %ecx,0xfffffd4c(%ebp)
77782b68:	0f 84 37 04 00 00    	je     77782fa5 <_PacketGetAdapterNames+0xb85>
77782b6e:	8b 9d 50 fd ff ff    	mov    0xfffffd50(%ebp),%ebx
77782b74:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
77782b7a:	83 ec 0c             	sub    $0xc,%esp
77782b7d:	8d 04 7a             	lea    (%edx,%edi,2),%eax
77782b80:	50                   	push   %eax
77782b81:	e8 ba 0e 00 00       	call   77783a40 <_wcslen>
77782b86:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77782b89:	83 c4 10             	add    $0x10,%esp
77782b8c:	8d 44 30 1e          	lea    0x1e(%eax,%esi,1),%eax
77782b90:	3b 01                	cmp    (%ecx),%eax
77782b92:	0f 87 fb 02 00 00    	ja     77782e93 <_PacketGetAdapterNames+0xa73>
77782b98:	83 ec 0c             	sub    $0xc,%esp
77782b9b:	83 c7 08             	add    $0x8,%edi
77782b9e:	68 c8 6b 78 77       	push   $0x77786bc8
77782ba3:	e8 e8 0e 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782ba8:	89 b5 3c fd ff ff    	mov    %esi,0xfffffd3c(%ebp)
77782bae:	8b 55 08             	mov    0x8(%ebp),%edx
77782bb1:	8b 03                	mov    (%ebx),%eax
77782bb3:	83 c4 0c             	add    $0xc,%esp
77782bb6:	89 04 72             	mov    %eax,(%edx,%esi,2)
77782bb9:	8b 43 04             	mov    0x4(%ebx),%eax
77782bbc:	89 44 72 04          	mov    %eax,0x4(%edx,%esi,2)
77782bc0:	8b 43 08             	mov    0x8(%ebx),%eax
77782bc3:	89 44 72 08          	mov    %eax,0x8(%edx,%esi,2)
77782bc7:	8b 43 0c             	mov    0xc(%ebx),%eax
77782bca:	83 c3 10             	add    $0x10,%ebx
77782bcd:	89 44 72 0c          	mov    %eax,0xc(%edx,%esi,2)
77782bd1:	a1 b4 69 78 77       	mov    0x777869b4,%eax
77782bd6:	89 44 72 10          	mov    %eax,0x10(%edx,%esi,2)
77782bda:	a1 b8 69 78 77       	mov    0x777869b8,%eax
77782bdf:	89 44 72 14          	mov    %eax,0x14(%edx,%esi,2)
77782be3:	83 c6 0c             	add    $0xc,%esi
77782be6:	eb 10                	jmp    77782bf8 <_PacketGetAdapterNames+0x7d8>
77782be8:	83 c3 02             	add    $0x2,%ebx
77782beb:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782bee:	47                   	inc    %edi
77782bef:	66 8b 43 fe          	mov    0xfffffffe(%ebx),%ax
77782bf3:	66 89 04 71          	mov    %ax,(%ecx,%esi,2)
77782bf7:	46                   	inc    %esi
77782bf8:	66 83 7b fe 00       	cmpw   $0x0,0xfffffffe(%ebx)
77782bfd:	75 e9                	jne    77782be8 <_PacketGetAdapterNames+0x7c8>
77782bff:	8b 95 3c fd ff ff    	mov    0xfffffd3c(%ebp),%edx
77782c05:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782c08:	83 ec 0c             	sub    $0xc,%esp
77782c0b:	8d 04 51             	lea    (%ecx,%edx,2),%eax
77782c0e:	50                   	push   %eax
77782c0f:	e8 bc ea ff ff       	call   777816d0 <_PacketOpenAdapter>
77782c14:	83 c4 10             	add    $0x10,%esp
77782c17:	85 c0                	test   %eax,%eax
77782c19:	89 85 44 fd ff ff    	mov    %eax,0xfffffd44(%ebp)
77782c1f:	0f 84 84 01 00 00    	je     77782da9 <_PacketGetAdapterNames+0x989>
77782c25:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782c2b:	c7 00 0d 01 01 00    	movl   $0x1010d,(%eax)
77782c31:	c7 40 04 00 01 00 00 	movl   $0x100,0x4(%eax)
77782c38:	52                   	push   %edx
77782c39:	50                   	push   %eax
77782c3a:	8b 85 44 fd ff ff    	mov    0xfffffd44(%ebp),%eax
77782c40:	6a 00                	push   $0x0
77782c42:	50                   	push   %eax
77782c43:	e8 e8 e6 ff ff       	call   77781330 <_PacketRequest>
77782c48:	83 c4 10             	add    $0x10,%esp
77782c4b:	84 c0                	test   %al,%al
77782c4d:	74 11                	je     77782c60 <_PacketGetAdapterNames+0x840>
77782c4f:	8b 95 40 fd ff ff    	mov    0xfffffd40(%ebp),%edx
77782c55:	8a 42 08             	mov    0x8(%edx),%al
77782c58:	84 c0                	test   %al,%al
77782c5a:	0f 85 54 01 00 00    	jne    77782db4 <_PacketGetAdapterNames+0x994>
77782c60:	83 ec 0c             	sub    $0xc,%esp
77782c63:	8b b5 3c fd ff ff    	mov    0xfffffd3c(%ebp),%esi
77782c69:	68 10 6c 78 77       	push   $0x77786c10
77782c6e:	e8 1d 0e 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782c73:	83 c4 0c             	add    $0xc,%esp
77782c76:	66 83 3b 00          	cmpw   $0x0,(%ebx)
77782c7a:	0f 85 f4 fe ff ff    	jne    77782b74 <_PacketGetAdapterNames+0x754>
77782c80:	66 83 7b 02 00       	cmpw   $0x0,0x2(%ebx)
77782c85:	0f 85 e9 fe ff ff    	jne    77782b74 <_PacketGetAdapterNames+0x754>
77782c8b:	8b 85 4c fd ff ff    	mov    0xfffffd4c(%ebp),%eax
77782c91:	c6 00 00             	movb   $0x0,(%eax)
77782c94:	8b 55 08             	mov    0x8(%ebp),%edx
77782c97:	8b 9d 48 fd ff ff    	mov    0xfffffd48(%ebp),%ebx
77782c9d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77782ca0:	66 c7 04 72 00 00    	movw   $0x0,(%edx,%esi,2)
77782ca6:	46                   	inc    %esi
77782ca7:	66 c7 04 72 00 00    	movw   $0x0,(%edx,%esi,2)
77782cad:	89 c2                	mov    %eax,%edx
77782caf:	29 da                	sub    %ebx,%edx
77782cb1:	8d 04 32             	lea    (%edx,%esi,1),%eax
77782cb4:	3b 01                	cmp    (%ecx),%eax
77782cb6:	0f 83 d7 01 00 00    	jae    77782e93 <_PacketGetAdapterNames+0xa73>
77782cbc:	8b 4d 08             	mov    0x8(%ebp),%ecx
77782cbf:	8d 04 71             	lea    (%ecx,%esi,2),%eax
77782cc2:	51                   	push   %ecx
77782cc3:	52                   	push   %edx
77782cc4:	8b 95 48 fd ff ff    	mov    0xfffffd48(%ebp),%edx
77782cca:	52                   	push   %edx
77782ccb:	50                   	push   %eax
77782ccc:	e8 2f 0d 00 00       	call   77783a00 <_memcpy>
77782cd1:	58                   	pop    %eax
77782cd2:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782cd8:	50                   	push   %eax
77782cd9:	e8 32 0e 00 00       	call   77783b10 <_GlobalHandle@4>
77782cde:	50                   	push   %eax
77782cdf:	e8 3c 0e 00 00       	call   77783b20 <_GlobalUnlock@4>
77782ce4:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782cea:	50                   	push   %eax
77782ceb:	e8 20 0e 00 00       	call   77783b10 <_GlobalHandle@4>
77782cf0:	50                   	push   %eax
77782cf1:	e8 3a 0e 00 00       	call   77783b30 <_GlobalFree@4>
77782cf6:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782cfc:	50                   	push   %eax
77782cfd:	e8 0e 0e 00 00       	call   77783b10 <_GlobalHandle@4>
77782d02:	50                   	push   %eax
77782d03:	e8 18 0e 00 00       	call   77783b20 <_GlobalUnlock@4>
77782d08:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782d0e:	50                   	push   %eax
77782d0f:	e8 fc 0d 00 00       	call   77783b10 <_GlobalHandle@4>
77782d14:	50                   	push   %eax
77782d15:	e8 16 0e 00 00       	call   77783b30 <_GlobalFree@4>
77782d1a:	8b bd 48 fd ff ff    	mov    0xfffffd48(%ebp),%edi
77782d20:	57                   	push   %edi
77782d21:	e8 ea 0d 00 00       	call   77783b10 <_GlobalHandle@4>
77782d26:	50                   	push   %eax
77782d27:	e8 f4 0d 00 00       	call   77783b20 <_GlobalUnlock@4>
77782d2c:	8b b5 48 fd ff ff    	mov    0xfffffd48(%ebp),%esi
77782d32:	56                   	push   %esi
77782d33:	e8 d8 0d 00 00       	call   77783b10 <_GlobalHandle@4>
77782d38:	50                   	push   %eax
77782d39:	e8 f2 0d 00 00       	call   77783b30 <_GlobalFree@4>
77782d3e:	68 7c 6c 78 77       	push   $0x77786c7c
77782d43:	e8 48 0d 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782d48:	b8 01 00 00 00       	mov    $0x1,%eax
77782d4d:	e9 87 f8 ff ff       	jmp    777825d9 <_PacketGetAdapterNames+0x1b9>
77782d52:	6a 00                	push   $0x0
77782d54:	68 14 50 78 77       	push   $0x77785014
77782d59:	68 cc 6c 78 77       	push   $0x77786ccc
77782d5e:	6a 00                	push   $0x0
77782d60:	e8 db 15 00 00       	call   77784340 <_MessageBoxW@16>
77782d65:	83 ec 0c             	sub    $0xc,%esp
77782d68:	68 90 6d 78 77       	push   $0x77786d90
77782d6d:	e8 1e 0d 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782d72:	e9 60 f8 ff ff       	jmp    777825d7 <_PacketGetAdapterNames+0x1b7>
77782d77:	8b bd 60 fd ff ff    	mov    0xfffffd60(%ebp),%edi
77782d7d:	50                   	push   %eax
77782d7e:	50                   	push   %eax
77782d7f:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782d85:	56                   	push   %esi
77782d86:	50                   	push   %eax
77782d87:	53                   	push   %ebx
77782d88:	6a 00                	push   $0x0
77782d8a:	68 38 6b 78 77       	push   $0x77786b38
77782d8f:	57                   	push   %edi
77782d90:	e8 3b 0f 00 00       	call   77783cd0 <_RegQueryValueExW@24>
77782d95:	8b 8d 60 fd ff ff    	mov    0xfffffd60(%ebp),%ecx
77782d9b:	89 c3                	mov    %eax,%ebx
77782d9d:	56                   	push   %esi
77782d9e:	51                   	push   %ecx
77782d9f:	e8 ec 0e 00 00       	call   77783c90 <_RegCloseKey@4>
77782da4:	e9 71 fd ff ff       	jmp    77782b1a <_PacketGetAdapterNames+0x6fa>
77782da9:	8b b5 3c fd ff ff    	mov    0xfffffd3c(%ebp),%esi
77782daf:	e9 c2 fe ff ff       	jmp    77782c76 <_PacketGetAdapterNames+0x856>
77782db4:	8b 95 40 fd ff ff    	mov    0xfffffd40(%ebp),%edx
77782dba:	83 c2 08             	add    $0x8,%edx
77782dbd:	8b 8d 4c fd ff ff    	mov    0xfffffd4c(%ebp),%ecx
77782dc3:	42                   	inc    %edx
77782dc4:	88 01                	mov    %al,(%ecx)
77782dc6:	41                   	inc    %ecx
77782dc7:	89 8d 4c fd ff ff    	mov    %ecx,0xfffffd4c(%ebp)
77782dcd:	8a 02                	mov    (%edx),%al
77782dcf:	84 c0                	test   %al,%al
77782dd1:	75 ea                	jne    77782dbd <_PacketGetAdapterNames+0x99d>
77782dd3:	c6 01 00             	movb   $0x0,(%ecx)
77782dd6:	83 ec 0c             	sub    $0xc,%esp
77782dd9:	41                   	inc    %ecx
77782dda:	8b 85 44 fd ff ff    	mov    0xfffffd44(%ebp),%eax
77782de0:	50                   	push   %eax
77782de1:	89 8d 4c fd ff ff    	mov    %ecx,0xfffffd4c(%ebp)
77782de7:	e8 64 ef ff ff       	call   77781d50 <_PacketCloseAdapter>
77782dec:	c7 04 24 d4 6d 78 77 	movl   $0x77786dd4,(%esp)
77782df3:	e9 76 fe ff ff       	jmp    77782c6e <_PacketGetAdapterNames+0x84e>
77782df8:	83 ec 0c             	sub    $0xc,%esp
77782dfb:	8b 9d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ebx
77782e01:	53                   	push   %ebx
77782e02:	e8 09 0d 00 00       	call   77783b10 <_GlobalHandle@4>
77782e07:	50                   	push   %eax
77782e08:	e8 13 0d 00 00       	call   77783b20 <_GlobalUnlock@4>
77782e0d:	8b 8d 40 fd ff ff    	mov    0xfffffd40(%ebp),%ecx
77782e13:	51                   	push   %ecx
77782e14:	e8 f7 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782e19:	50                   	push   %eax
77782e1a:	e8 11 0d 00 00       	call   77783b30 <_GlobalFree@4>
77782e1f:	8b 95 50 fd ff ff    	mov    0xfffffd50(%ebp),%edx
77782e25:	52                   	push   %edx
77782e26:	e8 e5 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782e2b:	50                   	push   %eax
77782e2c:	e8 ef 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782e31:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782e37:	50                   	push   %eax
77782e38:	e8 d3 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782e3d:	50                   	push   %eax
77782e3e:	e8 ed 0c 00 00       	call   77783b30 <_GlobalFree@4>
77782e43:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
77782e49:	50                   	push   %eax
77782e4a:	e8 c1 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782e4f:	50                   	push   %eax
77782e50:	e8 cb 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782e55:	8b 85 48 fd ff ff    	mov    0xfffffd48(%ebp),%eax
77782e5b:	50                   	push   %eax
77782e5c:	e8 af 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782e61:	50                   	push   %eax
77782e62:	e8 c9 0c 00 00       	call   77783b30 <_GlobalFree@4>
77782e67:	68 20 6e 78 77       	push   $0x77786e20
77782e6c:	e8 1f 0c 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782e71:	e9 61 f7 ff ff       	jmp    777825d7 <_PacketGetAdapterNames+0x1b7>
77782e76:	66 83 7a 02 00       	cmpw   $0x0,0x2(%edx)
77782e7b:	0f 85 50 f9 ff ff    	jne    777827d1 <_PacketGetAdapterNames+0x3b1>
77782e81:	e9 68 fa ff ff       	jmp    777828ee <_PacketGetAdapterNames+0x4ce>
77782e86:	8b 95 34 fd ff ff    	mov    0xfffffd34(%ebp),%edx
77782e8c:	8a 02                	mov    (%edx),%al
77782e8e:	e9 71 fb ff ff       	jmp    77782a04 <_PacketGetAdapterNames+0x5e4>
77782e93:	83 ec 0c             	sub    $0xc,%esp
77782e96:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782e9c:	50                   	push   %eax
77782e9d:	e8 6e 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782ea2:	50                   	push   %eax
77782ea3:	e8 78 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782ea8:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782eae:	50                   	push   %eax
77782eaf:	e8 5c 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782eb4:	50                   	push   %eax
77782eb5:	e8 76 0c 00 00       	call   77783b30 <_GlobalFree@4>
77782eba:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782ec0:	50                   	push   %eax
77782ec1:	e8 4a 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782ec6:	50                   	push   %eax
77782ec7:	e8 54 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782ecc:	8b bd 50 fd ff ff    	mov    0xfffffd50(%ebp),%edi
77782ed2:	57                   	push   %edi
77782ed3:	e8 38 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782ed8:	50                   	push   %eax
77782ed9:	e8 52 0c 00 00       	call   77783b30 <_GlobalFree@4>
77782ede:	8b b5 48 fd ff ff    	mov    0xfffffd48(%ebp),%esi
77782ee4:	56                   	push   %esi
77782ee5:	e8 26 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782eea:	50                   	push   %eax
77782eeb:	e8 30 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782ef0:	8b 9d 48 fd ff ff    	mov    0xfffffd48(%ebp),%ebx
77782ef6:	e9 d0 f6 ff ff       	jmp    777825cb <_PacketGetAdapterNames+0x1ab>
77782efb:	83 ec 0c             	sub    $0xc,%esp
77782efe:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782f04:	50                   	push   %eax
77782f05:	e8 06 0c 00 00       	call   77783b10 <_GlobalHandle@4>
77782f0a:	50                   	push   %eax
77782f0b:	e8 10 0c 00 00       	call   77783b20 <_GlobalUnlock@4>
77782f10:	8b 85 40 fd ff ff    	mov    0xfffffd40(%ebp),%eax
77782f16:	50                   	push   %eax
77782f17:	e8 f4 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f1c:	50                   	push   %eax
77782f1d:	e8 0e 0c 00 00       	call   77783b30 <_GlobalFree@4>
77782f22:	8b bd 50 fd ff ff    	mov    0xfffffd50(%ebp),%edi
77782f28:	57                   	push   %edi
77782f29:	e8 e2 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f2e:	50                   	push   %eax
77782f2f:	e8 ec 0b 00 00       	call   77783b20 <_GlobalUnlock@4>
77782f34:	8b b5 50 fd ff ff    	mov    0xfffffd50(%ebp),%esi
77782f3a:	56                   	push   %esi
77782f3b:	e8 d0 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f40:	50                   	push   %eax
77782f41:	e8 ea 0b 00 00       	call   77783b30 <_GlobalFree@4>
77782f46:	8b 9d 48 fd ff ff    	mov    0xfffffd48(%ebp),%ebx
77782f4c:	53                   	push   %ebx
77782f4d:	e8 be 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f52:	50                   	push   %eax
77782f53:	e8 c8 0b 00 00       	call   77783b20 <_GlobalUnlock@4>
77782f58:	8b 8d 48 fd ff ff    	mov    0xfffffd48(%ebp),%ecx
77782f5e:	51                   	push   %ecx
77782f5f:	e8 ac 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f64:	50                   	push   %eax
77782f65:	e8 c6 0b 00 00       	call   77783b30 <_GlobalFree@4>
77782f6a:	68 80 6e 78 77       	push   $0x77786e80
77782f6f:	e8 1c 0b 00 00       	call   77783a90 <_OutputDebugStringW@4>
77782f74:	e9 5e f6 ff ff       	jmp    777825d7 <_PacketGetAdapterNames+0x1b7>
77782f79:	83 ec 0c             	sub    $0xc,%esp
77782f7c:	8b 85 50 fd ff ff    	mov    0xfffffd50(%ebp),%eax
77782f82:	50                   	push   %eax
77782f83:	e8 88 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f88:	50                   	push   %eax
77782f89:	e8 92 0b 00 00       	call   77783b20 <_GlobalUnlock@4>
77782f8e:	8b bd 50 fd ff ff    	mov    0xfffffd50(%ebp),%edi
77782f94:	57                   	push   %edi
77782f95:	e8 76 0b 00 00       	call   77783b10 <_GlobalHandle@4>
77782f9a:	50                   	push   %eax
77782f9b:	e8 90 0b 00 00       	call   77783b30 <_GlobalFree@4>
77782fa0:	e9 0e f6 ff ff       	jmp    777825b3 <_PacketGetAdapterNames+0x193>
77782fa5:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
77782faa:	0f 85 be fb ff ff    	jne    77782b6e <_PacketGetAdapterNames+0x74e>
77782fb0:	e9 d6 fc ff ff       	jmp    77782c8b <_PacketGetAdapterNames+0x86b>
77782fb5:	8d 74 26 00          	lea    0x0(%esi),%esi
77782fb9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77782fc0 <_PacketGetNetInfoEx>:

/*!
  \brief Returns comprehensive information the addresses of an adapter.
  \param AdapterName String that contain _ADAPTER structure.
  \param buffer A user allocated array of npf_if_addr that will be filled by the function.
  \param NEntries Size of the array (in npf_if_addr).
  \return If the function succeeds, the return value is nonzero.

  This function grabs from the registry information like the IP addresses, the netmasks 
  and the broadcast addresses of an interface. The buffer passed by the user is filled with 
  npf_if_addr structures, each of which contains the data for a single address. If the buffer
  is full, the reaming addresses are dropeed, therefore set its dimension to sizeof(npf_if_addr)
  if you want only the first address.
*/

BOOLEAN PacketGetNetInfoEx(LPTSTR AdapterName, npf_if_addr* buffer, PLONG NEntries)
{
77782fc0:	55                   	push   %ebp
77782fc1:	89 e5                	mov    %esp,%ebp
77782fc3:	57                   	push   %edi
77782fc4:	56                   	push   %esi
77782fc5:	53                   	push   %ebx
77782fc6:	81 ec 4c 08 00 00    	sub    $0x84c,%esp
	char	*AdapterNameA;
	WCHAR	*AdapterNameU;
	WCHAR	*ifname;
	HKEY	SystemKey;
	HKEY	InterfaceKey;
	HKEY	ParametersKey;
	HKEY	TcpIpKey;
	HKEY	UnderTcpKey;
	LONG	status;
	WCHAR	String[1024+1];
	DWORD	RegType;
	ULONG	BufLen;
	DWORD	DHCPEnabled;
	struct	sockaddr_in *TmpAddr, *TmpBroad;
	LONG	naddrs,nmasks,StringPos;
	DWORD	ZeroBroadcast;

	AdapterNameA = (char*)AdapterName;
	if(AdapterNameA[1] != 0) {	//ASCII
		AdapterNameU = SChar2WChar(AdapterNameA);
		AdapterName = AdapterNameU;
	} else {				//Unicode
		AdapterNameU = NULL;
77782fcc:	c7 85 b0 f7 ff ff 00 	movl   $0x0,0xfffff7b0(%ebp)
77782fd3:	00 00 00 
77782fd6:	8b 5d 08             	mov    0x8(%ebp),%ebx
77782fd9:	80 7b 01 00          	cmpb   $0x0,0x1(%ebx)
77782fdd:	0f 85 87 03 00 00    	jne    7778336a <_PacketGetNetInfoEx+0x3aa>
	}
    ifname = wcsrchr(AdapterName, '\\');
77782fe3:	50                   	push   %eax
77782fe4:	50                   	push   %eax
77782fe5:	6a 5c                	push   $0x5c
77782fe7:	53                   	push   %ebx
77782fe8:	e8 43 0a 00 00       	call   77783a30 <_wcsrchr>
	if (ifname == NULL)
77782fed:	83 c4 10             	add    $0x10,%esp
77782ff0:	89 c6                	mov    %eax,%esi
77782ff2:	85 c0                	test   %eax,%eax
77782ff4:	0f 84 9b 03 00 00    	je     77783395 <_PacketGetNetInfoEx+0x3d5>
		ifname = AdapterName;
	else
		ifname++;
77782ffa:	83 c6 02             	add    $0x2,%esi
	if (wcsncmp(ifname, L"NPF_", 4) == 0)
77782ffd:	57                   	push   %edi
77782ffe:	6a 04                	push   $0x4
77783000:	68 b4 69 78 77       	push   $0x777869b4
77783005:	56                   	push   %esi
77783006:	e8 15 0a 00 00       	call   77783a20 <_wcsncmp>
7778300b:	83 c4 10             	add    $0x10,%esp
7778300e:	85 c0                	test   %eax,%eax
77783010:	75 03                	jne    77783015 <_PacketGetNetInfoEx+0x55>
		ifname += 4;
77783012:	83 c6 08             	add    $0x8,%esi

	if(	RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
77783015:	83 ec 0c             	sub    $0xc,%esp
77783018:	8d 85 d4 f7 ff ff    	lea    0xfffff7d4(%ebp),%eax
7778301e:	50                   	push   %eax
7778301f:	68 19 00 02 00       	push   $0x20019
77783024:	6a 00                	push   $0x0
77783026:	68 d8 6e 78 77       	push   $0x77786ed8
7778302b:	68 02 00 00 80       	push   $0x80000002
77783030:	e8 4b 0c 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77783035:	83 c4 0c             	add    $0xc,%esp
77783038:	85 c0                	test   %eax,%eax
7778303a:	0f 85 2b 02 00 00    	jne    7778326b <_PacketGetNetInfoEx+0x2ab>
						TEXT("SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters\\Interfaces"),
						0, KEY_READ, &UnderTcpKey) == ERROR_SUCCESS)
	{
		status = RegOpenKeyExW(UnderTcpKey,ifname,0,KEY_READ,&TcpIpKey);
77783040:	83 ec 0c             	sub    $0xc,%esp
77783043:	8d 85 d0 f7 ff ff    	lea    0xfffff7d0(%ebp),%eax
77783049:	50                   	push   %eax
7778304a:	68 19 00 02 00       	push   $0x20019
7778304f:	6a 00                	push   $0x0
77783051:	56                   	push   %esi
77783052:	8b b5 d4 f7 ff ff    	mov    0xfffff7d4(%ebp),%esi
77783058:	56                   	push   %esi
77783059:	e8 22 0c 00 00       	call   77783c80 <_RegOpenKeyExW@20>
		if (status != ERROR_SUCCESS) {
7778305e:	83 c4 0c             	add    $0xc,%esp
77783061:	85 c0                	test   %eax,%eax
77783063:	0f 85 d8 04 00 00    	jne    77783541 <_PacketGetNetInfoEx+0x581>
			RegCloseKey(UnderTcpKey);
			goto fail;
		}
	}
	else
	{
		
		// Query the registry key with the interface's adresses
		status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
						TEXT("SYSTEM\\ControlSet001\\Services"),
						0,KEY_READ,&SystemKey);
		if (status != ERROR_SUCCESS)
			goto fail;
		status = RegOpenKeyExW(SystemKey,ifname,0,KEY_READ,&InterfaceKey);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(SystemKey);
			goto fail;
		}
		RegCloseKey(SystemKey);
		status = RegOpenKeyEx(InterfaceKey,TEXT("Parameters"),0,KEY_READ,&ParametersKey);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(InterfaceKey);
			goto fail;
		}
		RegCloseKey(InterfaceKey);
		status = RegOpenKeyEx(ParametersKey,TEXT("TcpIp"),0,KEY_READ,&TcpIpKey);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(ParametersKey);
			goto fail;
		}
		RegCloseKey(ParametersKey);
		BufLen = sizeof String;
	}

	BufLen = 4;
	/* Try to detect if the interface has a zero broadcast addr */
	status=RegQueryValueEx(TcpIpKey,TEXT("UseZeroBroadcast"),NULL,&RegType,(LPBYTE)&ZeroBroadcast,&BufLen);
77783069:	8d 85 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%eax
7778306f:	c7 85 c0 f7 ff ff 04 	movl   $0x4,0xfffff7c0(%ebp)
77783076:	00 00 00 
77783079:	8d bd b8 f7 ff ff    	lea    0xfffff7b8(%ebp),%edi
7778307f:	56                   	push   %esi
77783080:	56                   	push   %esi
77783081:	50                   	push   %eax
77783082:	8d 85 bc f7 ff ff    	lea    0xfffff7bc(%ebp),%eax
77783088:	50                   	push   %eax
77783089:	57                   	push   %edi
7778308a:	6a 00                	push   $0x0
7778308c:	68 4c 6f 78 77       	push   $0x77786f4c
77783091:	8b 9d d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%ebx
77783097:	53                   	push   %ebx
77783098:	e8 33 0c 00 00       	call   77783cd0 <_RegQueryValueExW@24>
	if (status != ERROR_SUCCESS)
7778309d:	5a                   	pop    %edx
7778309e:	85 c0                	test   %eax,%eax
777830a0:	59                   	pop    %ecx
777830a1:	74 0a                	je     777830ad <_PacketGetNetInfoEx+0xed>
		ZeroBroadcast=0;
777830a3:	c7 85 bc f7 ff ff 00 	movl   $0x0,0xfffff7bc(%ebp)
777830aa:	00 00 00 
	
	BufLen = 4;
	/* See if DHCP is used by this system */
	status=RegQueryValueEx(TcpIpKey,TEXT("EnableDHCP"),NULL,&RegType,(LPBYTE)&DHCPEnabled,&BufLen);
777830ad:	8d 95 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%edx
777830b3:	8d 85 b4 f7 ff ff    	lea    0xfffff7b4(%ebp),%eax
777830b9:	c7 85 c0 f7 ff ff 04 	movl   $0x4,0xfffff7c0(%ebp)
777830c0:	00 00 00 
777830c3:	56                   	push   %esi
777830c4:	56                   	push   %esi
777830c5:	52                   	push   %edx
777830c6:	50                   	push   %eax
777830c7:	57                   	push   %edi
777830c8:	6a 00                	push   $0x0
777830ca:	68 6e 6f 78 77       	push   $0x77786f6e
777830cf:	8b 9d d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%ebx
777830d5:	53                   	push   %ebx
777830d6:	e8 f5 0b 00 00       	call   77783cd0 <_RegQueryValueExW@24>
	if (status != ERROR_SUCCESS)
777830db:	5a                   	pop    %edx
777830dc:	85 c0                	test   %eax,%eax
777830de:	59                   	pop    %ecx
777830df:	74 0a                	je     777830eb <_PacketGetNetInfoEx+0x12b>
		DHCPEnabled=0;
777830e1:	c7 85 b4 f7 ff ff 00 	movl   $0x0,0xfffff7b4(%ebp)
777830e8:	00 00 00 
	
	
	/* Retrieve the adrresses */
	if(DHCPEnabled){
777830eb:	8b 85 b4 f7 ff ff    	mov    0xfffff7b4(%ebp),%eax
777830f1:	85 c0                	test   %eax,%eax
777830f3:	0f 84 a3 02 00 00    	je     7778339c <_PacketGetNetInfoEx+0x3dc>
		
		BufLen = sizeof String;
777830f9:	c7 85 c0 f7 ff ff 02 	movl   $0x802,0xfffff7c0(%ebp)
77783100:	08 00 00 
		// Open the key with the addresses
		status = RegQueryValueEx(TcpIpKey,TEXT("DhcpIPAddress"),NULL,&RegType,(LPBYTE)String,&BufLen);
77783103:	8d 95 d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%edx
77783109:	50                   	push   %eax
7778310a:	50                   	push   %eax
7778310b:	8d 85 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%eax
77783111:	50                   	push   %eax
77783112:	52                   	push   %edx
77783113:	57                   	push   %edi
77783114:	6a 00                	push   $0x0
77783116:	68 84 6f 78 77       	push   $0x77786f84
7778311b:	8b 85 d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%eax
77783121:	50                   	push   %eax
77783122:	e8 a9 0b 00 00       	call   77783cd0 <_RegQueryValueExW@24>
		if (status != ERROR_SUCCESS) {
77783127:	5b                   	pop    %ebx
77783128:	85 c0                	test   %eax,%eax
7778312a:	5e                   	pop    %esi
7778312b:	0f 85 33 04 00 00    	jne    77783564 <_PacketGetNetInfoEx+0x5a4>
			RegCloseKey(TcpIpKey);
			goto fail;
		}

		// scan the key to obtain the addresses
		StringPos = 0;
		for(naddrs = 0;naddrs <* NEntries;naddrs++){
77783131:	8b 45 10             	mov    0x10(%ebp),%eax
77783134:	31 db                	xor    %ebx,%ebx
77783136:	c7 85 ac f7 ff ff 00 	movl   $0x0,0xfffff7ac(%ebp)
7778313d:	00 00 00 
77783140:	8b 08                	mov    (%eax),%ecx
77783142:	85 c9                	test   %ecx,%ecx
77783144:	7e 7a                	jle    777831c0 <_PacketGetNetInfoEx+0x200>
77783146:	8b 75 0c             	mov    0xc(%ebp),%esi
77783149:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
			TmpAddr = (struct sockaddr_in *) &(buffer[naddrs].IPAddress);
			
			if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
77783150:	8d 84 5d d8 f7 ff ff 	lea    0xfffff7d8(%ebp,%ebx,2),%eax
77783157:	50                   	push   %eax
77783158:	e8 83 e3 ff ff       	call   777814e0 <_inet_addrU>
7778315d:	89 46 04             	mov    %eax,0x4(%esi)
77783160:	40                   	inc    %eax
77783161:	5a                   	pop    %edx
77783162:	74 5c                	je     777831c0 <_PacketGetNetInfoEx+0x200>
				TmpAddr->sin_family = AF_INET;
				
				TmpBroad = (struct sockaddr_in *) &(buffer[naddrs].Broadcast);
				TmpBroad->sin_family = AF_INET;
				if(ZeroBroadcast==0)
					TmpBroad->sin_addr.S_un.S_addr = 0xffffffff; // 255.255.255.255
77783164:	83 bd bc f7 ff ff 01 	cmpl   $0x1,0xfffff7bc(%ebp)
7778316b:	19 c0                	sbb    %eax,%eax
7778316d:	66 c7 06 02 00       	movw   $0x2,(%esi)
77783172:	66 c7 46 20 02 00    	movw   $0x2,0x20(%esi)
77783178:	89 46 24             	mov    %eax,0x24(%esi)
7778317b:	eb 04                	jmp    77783181 <_PacketGetNetInfoEx+0x1c1>
7778317d:	8d 76 00             	lea    0x0(%esi),%esi
				else
					TmpBroad->sin_addr.S_un.S_addr = 0; // 0.0.0.0

				while(*(String + StringPos) != 0)StringPos++;
77783180:	43                   	inc    %ebx
77783181:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783188:	ff 00 
7778318a:	75 f4                	jne    77783180 <_PacketGetNetInfoEx+0x1c0>
				StringPos++;
7778318c:	43                   	inc    %ebx
				
				if(*(String + StringPos) == 0 || (StringPos * sizeof (WCHAR)) >= BufLen)
7778318d:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783194:	ff 00 
77783196:	74 28                	je     777831c0 <_PacketGetNetInfoEx+0x200>
77783198:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
7778319b:	3b 85 c0 f7 ff ff    	cmp    0xfffff7c0(%ebp),%eax
777831a1:	73 1d                	jae    777831c0 <_PacketGetNetInfoEx+0x200>
777831a3:	8b 85 ac f7 ff ff    	mov    0xfffff7ac(%ebp),%eax
777831a9:	8b 55 10             	mov    0x10(%ebp),%edx
777831ac:	40                   	inc    %eax
777831ad:	83 c6 30             	add    $0x30,%esi
777831b0:	89 85 ac f7 ff ff    	mov    %eax,0xfffff7ac(%ebp)
777831b6:	8b 85 ac f7 ff ff    	mov    0xfffff7ac(%ebp),%eax
777831bc:	39 02                	cmp    %eax,(%edx)
777831be:	7f 90                	jg     77783150 <_PacketGetNetInfoEx+0x190>
					break;				
			}
			else break;
		}		
		
		BufLen = sizeof String;
777831c0:	c7 85 c0 f7 ff ff 02 	movl   $0x802,0xfffff7c0(%ebp)
777831c7:	08 00 00 
		// Open the key with the netmasks
		status = RegQueryValueEx(TcpIpKey,TEXT("DhcpSubnetMask"),NULL,&RegType,(LPBYTE)String,&BufLen);
777831ca:	8d 95 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%edx
777831d0:	50                   	push   %eax
777831d1:	50                   	push   %eax
777831d2:	8d 85 d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%eax
777831d8:	52                   	push   %edx
777831d9:	50                   	push   %eax
777831da:	57                   	push   %edi
777831db:	6a 00                	push   $0x0
777831dd:	68 a0 6f 78 77       	push   $0x77786fa0
777831e2:	8b bd d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%edi
777831e8:	57                   	push   %edi
777831e9:	e8 e2 0a 00 00       	call   77783cd0 <_RegQueryValueExW@24>
		if (status != ERROR_SUCCESS) {
777831ee:	5b                   	pop    %ebx
777831ef:	85 c0                	test   %eax,%eax
777831f1:	5e                   	pop    %esi
777831f2:	0f 85 6c 03 00 00    	jne    77783564 <_PacketGetNetInfoEx+0x5a4>
			RegCloseKey(TcpIpKey);
			goto fail;
		}
		
		// scan the key to obtain the masks
		StringPos = 0;
		for(nmasks = 0;nmasks < *NEntries;nmasks++){
777831f8:	8b 55 10             	mov    0x10(%ebp),%edx
777831fb:	31 db                	xor    %ebx,%ebx
777831fd:	31 ff                	xor    %edi,%edi
777831ff:	8b 0a                	mov    (%edx),%ecx
77783201:	85 c9                	test   %ecx,%ecx
77783203:	0f 8e e9 02 00 00    	jle    777834f2 <_PacketGetNetInfoEx+0x532>
77783209:	8b 75 0c             	mov    0xc(%ebp),%esi
7778320c:	8d 74 26 00          	lea    0x0(%esi),%esi
			TmpAddr = (struct sockaddr_in *) &(buffer[nmasks].SubnetMask);
			
			if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
77783210:	8d 84 5d d8 f7 ff ff 	lea    0xfffff7d8(%ebp,%ebx,2),%eax
77783217:	50                   	push   %eax
77783218:	e8 c3 e2 ff ff       	call   777814e0 <_inet_addrU>
7778321d:	89 46 14             	mov    %eax,0x14(%esi)
77783220:	40                   	inc    %eax
77783221:	5a                   	pop    %edx
77783222:	0f 84 ca 02 00 00    	je     777834f2 <_PacketGetNetInfoEx+0x532>
				TmpAddr->sin_family = AF_INET;
77783228:	66 c7 46 10 02 00    	movw   $0x2,0x10(%esi)
7778322e:	eb 01                	jmp    77783231 <_PacketGetNetInfoEx+0x271>
				
				while(*(String + StringPos) != 0)StringPos++;
77783230:	43                   	inc    %ebx
77783231:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783238:	ff 00 
7778323a:	75 f4                	jne    77783230 <_PacketGetNetInfoEx+0x270>
				StringPos++;
7778323c:	43                   	inc    %ebx
								
				if(*(String + StringPos) == 0 || (StringPos * sizeof (WCHAR)) >= BufLen)
7778323d:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783244:	ff 00 
77783246:	0f 84 a6 02 00 00    	je     777834f2 <_PacketGetNetInfoEx+0x532>
7778324c:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
7778324f:	3b 85 c0 f7 ff ff    	cmp    0xfffff7c0(%ebp),%eax
77783255:	0f 83 97 02 00 00    	jae    777834f2 <_PacketGetNetInfoEx+0x532>
7778325b:	8b 45 10             	mov    0x10(%ebp),%eax
7778325e:	47                   	inc    %edi
7778325f:	83 c6 30             	add    $0x30,%esi
77783262:	39 38                	cmp    %edi,(%eax)
77783264:	7f aa                	jg     77783210 <_PacketGetNetInfoEx+0x250>
77783266:	e9 87 02 00 00       	jmp    777834f2 <_PacketGetNetInfoEx+0x532>
7778326b:	83 ec 0c             	sub    $0xc,%esp
7778326e:	8d 85 cc f7 ff ff    	lea    0xfffff7cc(%ebp),%eax
77783274:	50                   	push   %eax
77783275:	68 19 00 02 00       	push   $0x20019
7778327a:	6a 00                	push   $0x0
7778327c:	68 c0 6f 78 77       	push   $0x77786fc0
77783281:	68 02 00 00 80       	push   $0x80000002
77783286:	e8 f5 09 00 00       	call   77783c80 <_RegOpenKeyExW@20>
7778328b:	83 c4 0c             	add    $0xc,%esp
7778328e:	85 c0                	test   %eax,%eax
77783290:	74 26                	je     777832b8 <_PacketGetNetInfoEx+0x2f8>
					break;
			}
			else break;
		}		
		
		// The number of masks MUST be equal to the number of adresses
		if(nmasks != naddrs){
			RegCloseKey(TcpIpKey);
			goto fail;
		}
				
	}
	else{
		
		BufLen = sizeof String;
		// Open the key with the addresses
		status = RegQueryValueEx(TcpIpKey,TEXT("IPAddress"),NULL,&RegType,(LPBYTE)String,&BufLen);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(TcpIpKey);
			goto fail;
		}
		
		// scan the key to obtain the addresses
		StringPos = 0;
		for(naddrs = 0;naddrs < *NEntries;naddrs++){
			TmpAddr = (struct sockaddr_in *) &(buffer[naddrs].IPAddress);
			
			if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
				TmpAddr->sin_family = AF_INET;

				TmpBroad = (struct sockaddr_in *) &(buffer[naddrs].Broadcast);
				TmpBroad->sin_family = AF_INET;
				if(ZeroBroadcast==0)
					TmpBroad->sin_addr.S_un.S_addr = 0xffffffff; // 255.255.255.255
				else
					TmpBroad->sin_addr.S_un.S_addr = 0; // 0.0.0.0
				
				while(*(String + StringPos) != 0)StringPos++;
				StringPos++;
				
				if(*(String + StringPos) == 0 || (StringPos * sizeof (WCHAR)) >= BufLen)
					break;
			}
			else break;
		}		
		
		BufLen = sizeof String;
		// Open the key with the netmasks
		status = RegQueryValueEx(TcpIpKey,TEXT("SubnetMask"),NULL,&RegType,(LPBYTE)String,&BufLen);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(TcpIpKey);
			goto fail;
		}
		
		// scan the key to obtain the masks
		StringPos = 0;
		for(nmasks = 0;nmasks <* NEntries;nmasks++){
			TmpAddr = (struct sockaddr_in *) &(buffer[nmasks].SubnetMask);
			
			if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
				TmpAddr->sin_family = AF_INET;
				
				while(*(String + StringPos) != 0)StringPos++;
				StringPos++;
				
				if(*(String + StringPos) == 0 || (StringPos * sizeof (WCHAR)) >= BufLen)
					break;
			}
			else break;
		}		
		
		// The number of masks MUST be equal to the number of adresses
		if(nmasks != naddrs){
			RegCloseKey(TcpIpKey);
			goto fail;
		}
				
	}
	
	*NEntries = naddrs + 1;

	RegCloseKey(TcpIpKey);
	
	if (status != ERROR_SUCCESS) {
		goto fail;
	}
	
	
	if (AdapterNameU != NULL)
		free(AdapterNameU);
	return TRUE;
	
fail:
	if (AdapterNameU != NULL)
77783292:	8b 85 b0 f7 ff ff    	mov    0xfffff7b0(%ebp),%eax
77783298:	85 c0                	test   %eax,%eax
7778329a:	74 12                	je     777832ae <_PacketGetNetInfoEx+0x2ee>
		free(AdapterNameU);
7778329c:	83 ec 0c             	sub    $0xc,%esp
7778329f:	8b 85 b0 f7 ff ff    	mov    0xfffff7b0(%ebp),%eax
777832a5:	50                   	push   %eax
777832a6:	e8 35 10 00 00       	call   777842e0 <_free>
777832ab:	83 c4 10             	add    $0x10,%esp
    return FALSE;
}
777832ae:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777832b1:	31 c0                	xor    %eax,%eax
777832b3:	5b                   	pop    %ebx
777832b4:	5e                   	pop    %esi
777832b5:	5f                   	pop    %edi
777832b6:	5d                   	pop    %ebp
777832b7:	c3                   	ret    
777832b8:	83 ec 0c             	sub    $0xc,%esp
777832bb:	8d 85 c8 f7 ff ff    	lea    0xfffff7c8(%ebp),%eax
777832c1:	50                   	push   %eax
777832c2:	68 19 00 02 00       	push   $0x20019
777832c7:	6a 00                	push   $0x0
777832c9:	56                   	push   %esi
777832ca:	8b 8d cc f7 ff ff    	mov    0xfffff7cc(%ebp),%ecx
777832d0:	51                   	push   %ecx
777832d1:	e8 aa 09 00 00       	call   77783c80 <_RegOpenKeyExW@20>
777832d6:	83 c4 0c             	add    $0xc,%esp
777832d9:	85 c0                	test   %eax,%eax
777832db:	0f 85 77 02 00 00    	jne    77783558 <_PacketGetNetInfoEx+0x598>
777832e1:	83 ec 0c             	sub    $0xc,%esp
777832e4:	8b 85 cc f7 ff ff    	mov    0xfffff7cc(%ebp),%eax
777832ea:	50                   	push   %eax
777832eb:	e8 a0 09 00 00       	call   77783c90 <_RegCloseKey@4>
777832f0:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
777832f6:	50                   	push   %eax
777832f7:	68 19 00 02 00       	push   $0x20019
777832fc:	6a 00                	push   $0x0
777832fe:	68 fc 6f 78 77       	push   $0x77786ffc
77783303:	8b 85 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%eax
77783309:	50                   	push   %eax
7778330a:	e8 71 09 00 00       	call   77783c80 <_RegOpenKeyExW@20>
7778330f:	83 c4 0c             	add    $0xc,%esp
77783312:	85 c0                	test   %eax,%eax
77783314:	0f 85 55 02 00 00    	jne    7778356f <_PacketGetNetInfoEx+0x5af>
7778331a:	83 ec 0c             	sub    $0xc,%esp
7778331d:	8b 85 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%eax
77783323:	50                   	push   %eax
77783324:	e8 67 09 00 00       	call   77783c90 <_RegCloseKey@4>
77783329:	8d 85 d0 f7 ff ff    	lea    0xfffff7d0(%ebp),%eax
7778332f:	50                   	push   %eax
77783330:	68 19 00 02 00       	push   $0x20019
77783335:	6a 00                	push   $0x0
77783337:	68 12 70 78 77       	push   $0x77787012
7778333c:	8b 85 c4 f7 ff ff    	mov    0xfffff7c4(%ebp),%eax
77783342:	50                   	push   %eax
77783343:	e8 38 09 00 00       	call   77783c80 <_RegOpenKeyExW@20>
77783348:	83 c4 0c             	add    $0xc,%esp
7778334b:	85 c0                	test   %eax,%eax
7778334d:	0f 85 28 02 00 00    	jne    7778357b <_PacketGetNetInfoEx+0x5bb>
77783353:	83 ec 0c             	sub    $0xc,%esp
77783356:	8b bd c4 f7 ff ff    	mov    0xfffff7c4(%ebp),%edi
7778335c:	57                   	push   %edi
7778335d:	e8 2e 09 00 00       	call   77783c90 <_RegCloseKey@4>
77783362:	83 c4 0c             	add    $0xc,%esp
77783365:	e9 ff fc ff ff       	jmp    77783069 <_PacketGetNetInfoEx+0xa9>
7778336a:	83 ec 0c             	sub    $0xc,%esp
7778336d:	53                   	push   %ebx
7778336e:	e8 8d de ff ff       	call   77781200 <_SChar2WChar>
77783373:	83 c4 10             	add    $0x10,%esp
77783376:	89 c3                	mov    %eax,%ebx
77783378:	89 85 b0 f7 ff ff    	mov    %eax,0xfffff7b0(%ebp)
7778337e:	50                   	push   %eax
7778337f:	50                   	push   %eax
77783380:	6a 5c                	push   $0x5c
77783382:	53                   	push   %ebx
77783383:	e8 a8 06 00 00       	call   77783a30 <_wcsrchr>
77783388:	83 c4 10             	add    $0x10,%esp
7778338b:	89 c6                	mov    %eax,%esi
7778338d:	85 c0                	test   %eax,%eax
7778338f:	0f 85 65 fc ff ff    	jne    77782ffa <_PacketGetNetInfoEx+0x3a>
77783395:	89 de                	mov    %ebx,%esi
77783397:	e9 61 fc ff ff       	jmp    77782ffd <_PacketGetNetInfoEx+0x3d>
7778339c:	c7 85 c0 f7 ff ff 02 	movl   $0x802,0xfffff7c0(%ebp)
777833a3:	08 00 00 
777833a6:	8d 95 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%edx
777833ac:	50                   	push   %eax
777833ad:	50                   	push   %eax
777833ae:	8d 85 d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%eax
777833b4:	52                   	push   %edx
777833b5:	50                   	push   %eax
777833b6:	57                   	push   %edi
777833b7:	6a 00                	push   $0x0
777833b9:	68 1e 70 78 77       	push   $0x7778701e
777833be:	8b 85 d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%eax
777833c4:	50                   	push   %eax
777833c5:	e8 06 09 00 00       	call   77783cd0 <_RegQueryValueExW@24>
777833ca:	5b                   	pop    %ebx
777833cb:	85 c0                	test   %eax,%eax
777833cd:	5e                   	pop    %esi
777833ce:	0f 85 90 01 00 00    	jne    77783564 <_PacketGetNetInfoEx+0x5a4>
777833d4:	8b 55 10             	mov    0x10(%ebp),%edx
777833d7:	31 db                	xor    %ebx,%ebx
777833d9:	c7 85 ac f7 ff ff 00 	movl   $0x0,0xfffff7ac(%ebp)
777833e0:	00 00 00 
777833e3:	8b 0a                	mov    (%edx),%ecx
777833e5:	85 c9                	test   %ecx,%ecx
777833e7:	7e 77                	jle    77783460 <_PacketGetNetInfoEx+0x4a0>
777833e9:	8b 75 0c             	mov    0xc(%ebp),%esi
777833ec:	8d 74 26 00          	lea    0x0(%esi),%esi
777833f0:	8d 84 5d d8 f7 ff ff 	lea    0xfffff7d8(%ebp,%ebx,2),%eax
777833f7:	50                   	push   %eax
777833f8:	e8 e3 e0 ff ff       	call   777814e0 <_inet_addrU>
777833fd:	89 46 04             	mov    %eax,0x4(%esi)
77783400:	40                   	inc    %eax
77783401:	5a                   	pop    %edx
77783402:	74 5c                	je     77783460 <_PacketGetNetInfoEx+0x4a0>
77783404:	83 bd bc f7 ff ff 01 	cmpl   $0x1,0xfffff7bc(%ebp)
7778340b:	19 c0                	sbb    %eax,%eax
7778340d:	66 c7 06 02 00       	movw   $0x2,(%esi)
77783412:	66 c7 46 20 02 00    	movw   $0x2,0x20(%esi)
77783418:	89 46 24             	mov    %eax,0x24(%esi)
7778341b:	eb 04                	jmp    77783421 <_PacketGetNetInfoEx+0x461>
7778341d:	8d 76 00             	lea    0x0(%esi),%esi
77783420:	43                   	inc    %ebx
77783421:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783428:	ff 00 
7778342a:	75 f4                	jne    77783420 <_PacketGetNetInfoEx+0x460>
7778342c:	43                   	inc    %ebx
7778342d:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
77783434:	ff 00 
77783436:	74 28                	je     77783460 <_PacketGetNetInfoEx+0x4a0>
77783438:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
7778343b:	3b 85 c0 f7 ff ff    	cmp    0xfffff7c0(%ebp),%eax
77783441:	73 1d                	jae    77783460 <_PacketGetNetInfoEx+0x4a0>
77783443:	8b 85 ac f7 ff ff    	mov    0xfffff7ac(%ebp),%eax
77783449:	83 c6 30             	add    $0x30,%esi
7778344c:	40                   	inc    %eax
7778344d:	89 85 ac f7 ff ff    	mov    %eax,0xfffff7ac(%ebp)
77783453:	8b 45 10             	mov    0x10(%ebp),%eax
77783456:	8b 95 ac f7 ff ff    	mov    0xfffff7ac(%ebp),%edx
7778345c:	39 10                	cmp    %edx,(%eax)
7778345e:	7f 90                	jg     777833f0 <_PacketGetNetInfoEx+0x430>
77783460:	c7 85 c0 f7 ff ff 02 	movl   $0x802,0xfffff7c0(%ebp)
77783467:	08 00 00 
7778346a:	8d 95 d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%edx
77783470:	50                   	push   %eax
77783471:	50                   	push   %eax
77783472:	8d 85 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%eax
77783478:	50                   	push   %eax
77783479:	52                   	push   %edx
7778347a:	57                   	push   %edi
7778347b:	6a 00                	push   $0x0
7778347d:	68 32 70 78 77       	push   $0x77787032
77783482:	8b bd d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%edi
77783488:	57                   	push   %edi
77783489:	e8 42 08 00 00       	call   77783cd0 <_RegQueryValueExW@24>
7778348e:	5b                   	pop    %ebx
7778348f:	85 c0                	test   %eax,%eax
77783491:	5e                   	pop    %esi
77783492:	0f 85 cc 00 00 00    	jne    77783564 <_PacketGetNetInfoEx+0x5a4>
77783498:	8b 45 10             	mov    0x10(%ebp),%eax
7778349b:	31 db                	xor    %ebx,%ebx
7778349d:	31 ff                	xor    %edi,%edi
7778349f:	8b 08                	mov    (%eax),%ecx
777834a1:	85 c9                	test   %ecx,%ecx
777834a3:	7e 4d                	jle    777834f2 <_PacketGetNetInfoEx+0x532>
777834a5:	8b 75 0c             	mov    0xc(%ebp),%esi
777834a8:	8d 84 5d d8 f7 ff ff 	lea    0xfffff7d8(%ebp,%ebx,2),%eax
777834af:	50                   	push   %eax
777834b0:	e8 2b e0 ff ff       	call   777814e0 <_inet_addrU>
777834b5:	89 46 14             	mov    %eax,0x14(%esi)
777834b8:	40                   	inc    %eax
777834b9:	5a                   	pop    %edx
777834ba:	74 36                	je     777834f2 <_PacketGetNetInfoEx+0x532>
777834bc:	66 c7 46 10 02 00    	movw   $0x2,0x10(%esi)
777834c2:	eb 01                	jmp    777834c5 <_PacketGetNetInfoEx+0x505>
777834c4:	43                   	inc    %ebx
777834c5:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
777834cc:	ff 00 
777834ce:	75 f4                	jne    777834c4 <_PacketGetNetInfoEx+0x504>
777834d0:	43                   	inc    %ebx
777834d1:	66 83 bc 5d d8 f7 ff 	cmpw   $0x0,0xfffff7d8(%ebp,%ebx,2)
777834d8:	ff 00 
777834da:	74 16                	je     777834f2 <_PacketGetNetInfoEx+0x532>
777834dc:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
777834df:	3b 85 c0 f7 ff ff    	cmp    0xfffff7c0(%ebp),%eax
777834e5:	73 0b                	jae    777834f2 <_PacketGetNetInfoEx+0x532>
777834e7:	8b 55 10             	mov    0x10(%ebp),%edx
777834ea:	47                   	inc    %edi
777834eb:	83 c6 30             	add    $0x30,%esi
777834ee:	39 3a                	cmp    %edi,(%edx)
777834f0:	7f b6                	jg     777834a8 <_PacketGetNetInfoEx+0x4e8>
777834f2:	3b bd ac f7 ff ff    	cmp    0xfffff7ac(%ebp),%edi
777834f8:	75 6a                	jne    77783564 <_PacketGetNetInfoEx+0x5a4>
777834fa:	8b 55 10             	mov    0x10(%ebp),%edx
777834fd:	8b 85 ac f7 ff ff    	mov    0xfffff7ac(%ebp),%eax
77783503:	40                   	inc    %eax
77783504:	83 ec 0c             	sub    $0xc,%esp
77783507:	89 02                	mov    %eax,(%edx)
77783509:	8b 8d d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%ecx
7778350f:	51                   	push   %ecx
77783510:	e8 7b 07 00 00       	call   77783c90 <_RegCloseKey@4>
77783515:	8b 95 b0 f7 ff ff    	mov    0xfffff7b0(%ebp),%edx
7778351b:	83 c4 0c             	add    $0xc,%esp
7778351e:	85 d2                	test   %edx,%edx
77783520:	74 12                	je     77783534 <_PacketGetNetInfoEx+0x574>
77783522:	83 ec 0c             	sub    $0xc,%esp
77783525:	8b 85 b0 f7 ff ff    	mov    0xfffff7b0(%ebp),%eax
7778352b:	50                   	push   %eax
7778352c:	e8 af 0d 00 00       	call   777842e0 <_free>
77783531:	83 c4 10             	add    $0x10,%esp
77783534:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77783537:	b8 01 00 00 00       	mov    $0x1,%eax
7778353c:	5b                   	pop    %ebx
7778353d:	5e                   	pop    %esi
7778353e:	5f                   	pop    %edi
7778353f:	5d                   	pop    %ebp
77783540:	c3                   	ret    
77783541:	83 ec 0c             	sub    $0xc,%esp
77783544:	8b 9d d4 f7 ff ff    	mov    0xfffff7d4(%ebp),%ebx
7778354a:	53                   	push   %ebx
7778354b:	e8 40 07 00 00       	call   77783c90 <_RegCloseKey@4>
77783550:	83 c4 0c             	add    $0xc,%esp
77783553:	e9 3a fd ff ff       	jmp    77783292 <_PacketGetNetInfoEx+0x2d2>
77783558:	83 ec 0c             	sub    $0xc,%esp
7778355b:	8b 95 cc f7 ff ff    	mov    0xfffff7cc(%ebp),%edx
77783561:	52                   	push   %edx
77783562:	eb e7                	jmp    7778354b <_PacketGetNetInfoEx+0x58b>
77783564:	83 ec 0c             	sub    $0xc,%esp
77783567:	8b 9d d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%ebx
7778356d:	eb db                	jmp    7778354a <_PacketGetNetInfoEx+0x58a>
7778356f:	83 ec 0c             	sub    $0xc,%esp
77783572:	8b 85 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%eax
77783578:	50                   	push   %eax
77783579:	eb d0                	jmp    7778354b <_PacketGetNetInfoEx+0x58b>
7778357b:	83 ec 0c             	sub    $0xc,%esp
7778357e:	8b 85 c4 f7 ff ff    	mov    0xfffff7c4(%ebp),%eax
77783584:	50                   	push   %eax
77783585:	eb c4                	jmp    7778354b <_PacketGetNetInfoEx+0x58b>
77783587:	89 f6                	mov    %esi,%esi
77783589:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783590 <_PacketGetNetInfo>:

/*!
  \brief Returns the IP address and the netmask of an adapter.
  \param AdapterName String that contain _ADAPTER structure.
  \param netp Pointer to a variable that will receive the IP address of the adapter.
  \param maskp Pointer to a variable that will receive the netmask of the adapter.
  \return If the function succeeds, the return value is nonzero.

  \note this function is obsolete and is maintained for backward compatibility. Use PacketGetNetInfoEx() instead. 
*/

BOOLEAN PacketGetNetInfo(LPTSTR AdapterName, PULONG netp, PULONG maskp)
{
77783590:	55                   	push   %ebp
77783591:	89 e5                	mov    %esp,%ebp
77783593:	57                   	push   %edi
77783594:	56                   	push   %esi
77783595:	53                   	push   %ebx
77783596:	81 ec 3c 08 00 00    	sub    $0x83c,%esp
	char	*AdapterNameA;
	WCHAR	*AdapterNameU;
	WCHAR	*ifname;
	HKEY	SystemKey;
	HKEY	InterfaceKey;
	HKEY	ParametersKey;
	HKEY	TcpIpKey;
	LONG	status;
	WCHAR	String[1024+1];
	DWORD	RegType;
	ULONG	BufLen;
	DWORD	DHCPEnabled;
	ULONG	TAddr,i;

	AdapterNameA = (char*)AdapterName;
	if(AdapterNameA[1] != 0) {	//ASCII
		AdapterNameU = SChar2WChar(AdapterNameA);
		AdapterName = AdapterNameU;
	} else {				//Unicode
		AdapterNameU = NULL;
7778359c:	31 ff                	xor    %edi,%edi
7778359e:	8b 75 08             	mov    0x8(%ebp),%esi
777835a1:	80 7e 01 00          	cmpb   $0x0,0x1(%esi)
777835a5:	0f 85 88 02 00 00    	jne    77783833 <_PacketGetNetInfo+0x2a3>
	}
	ifname = wcsrchr(AdapterName, '\\');
777835ab:	53                   	push   %ebx
777835ac:	53                   	push   %ebx
777835ad:	6a 5c                	push   $0x5c
777835af:	56                   	push   %esi
777835b0:	e8 7b 04 00 00       	call   77783a30 <_wcsrchr>
	if (ifname == NULL)
777835b5:	83 c4 10             	add    $0x10,%esp
777835b8:	89 c3                	mov    %eax,%ebx
777835ba:	85 c0                	test   %eax,%eax
777835bc:	0f 84 9e 02 00 00    	je     77783860 <_PacketGetNetInfo+0x2d0>
		ifname = AdapterName;
	else
		ifname++;
777835c2:	83 c3 02             	add    $0x2,%ebx
	if (wcsncmp(ifname, L"NPF_", 4) == 0)
777835c5:	51                   	push   %ecx
777835c6:	6a 04                	push   $0x4
777835c8:	68 b4 69 78 77       	push   $0x777869b4
777835cd:	53                   	push   %ebx
777835ce:	e8 4d 04 00 00       	call   77783a20 <_wcsncmp>
777835d3:	83 c4 10             	add    $0x10,%esp
777835d6:	85 c0                	test   %eax,%eax
777835d8:	75 03                	jne    777835dd <_PacketGetNetInfo+0x4d>
		ifname += 4;
777835da:	83 c3 08             	add    $0x8,%ebx
	status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
777835dd:	83 ec 0c             	sub    $0xc,%esp
777835e0:	8d 85 d4 f7 ff ff    	lea    0xfffff7d4(%ebp),%eax
777835e6:	50                   	push   %eax
777835e7:	68 19 00 02 00       	push   $0x20019
777835ec:	6a 00                	push   $0x0
777835ee:	68 c0 6f 78 77       	push   $0x77786fc0
777835f3:	68 02 00 00 80       	push   $0x80000002
777835f8:	e8 83 06 00 00       	call   77783c80 <_RegOpenKeyExW@20>
						TEXT("SYSTEM\\ControlSet001\\Services"),
						0,KEY_READ,&SystemKey);
	if (status != ERROR_SUCCESS)
777835fd:	83 c4 0c             	add    $0xc,%esp
77783600:	85 c0                	test   %eax,%eax
77783602:	0f 85 11 02 00 00    	jne    77783819 <_PacketGetNetInfo+0x289>
		goto fail;
	status = RegOpenKeyExW(SystemKey,ifname,0,KEY_READ,&InterfaceKey);
77783608:	83 ec 0c             	sub    $0xc,%esp
7778360b:	8d 85 d0 f7 ff ff    	lea    0xfffff7d0(%ebp),%eax
77783611:	50                   	push   %eax
77783612:	68 19 00 02 00       	push   $0x20019
77783617:	6a 00                	push   $0x0
77783619:	53                   	push   %ebx
7778361a:	8b 95 d4 f7 ff ff    	mov    0xfffff7d4(%ebp),%edx
77783620:	52                   	push   %edx
77783621:	e8 5a 06 00 00       	call   77783c80 <_RegOpenKeyExW@20>
	if (status != ERROR_SUCCESS) {
77783626:	83 c4 0c             	add    $0xc,%esp
77783629:	85 c0                	test   %eax,%eax
7778362b:	0f 85 36 02 00 00    	jne    77783867 <_PacketGetNetInfo+0x2d7>
		RegCloseKey(SystemKey);
		goto fail;
	}
	RegCloseKey(SystemKey);
77783631:	83 ec 0c             	sub    $0xc,%esp
77783634:	8b 85 d4 f7 ff ff    	mov    0xfffff7d4(%ebp),%eax
7778363a:	50                   	push   %eax
7778363b:	e8 50 06 00 00       	call   77783c90 <_RegCloseKey@4>
	status = RegOpenKeyEx(InterfaceKey,TEXT("Parameters"),0,KEY_READ,&ParametersKey);
77783640:	8d 85 cc f7 ff ff    	lea    0xfffff7cc(%ebp),%eax
77783646:	50                   	push   %eax
77783647:	68 19 00 02 00       	push   $0x20019
7778364c:	6a 00                	push   $0x0
7778364e:	68 fc 6f 78 77       	push   $0x77786ffc
77783653:	8b 85 d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%eax
77783659:	50                   	push   %eax
7778365a:	e8 21 06 00 00       	call   77783c80 <_RegOpenKeyExW@20>
	if (status != ERROR_SUCCESS) {
7778365f:	83 c4 0c             	add    $0xc,%esp
77783662:	85 c0                	test   %eax,%eax
77783664:	0f 85 96 01 00 00    	jne    77783800 <_PacketGetNetInfo+0x270>
		RegCloseKey(InterfaceKey);
		goto fail;
	}
	RegCloseKey(InterfaceKey);
7778366a:	83 ec 0c             	sub    $0xc,%esp
7778366d:	8b 85 d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%eax
77783673:	50                   	push   %eax
77783674:	e8 17 06 00 00       	call   77783c90 <_RegCloseKey@4>
	status = RegOpenKeyEx(ParametersKey,TEXT("TcpIp"),0,KEY_READ,&TcpIpKey);
77783679:	8d 85 c8 f7 ff ff    	lea    0xfffff7c8(%ebp),%eax
7778367f:	50                   	push   %eax
77783680:	68 19 00 02 00       	push   $0x20019
77783685:	6a 00                	push   $0x0
77783687:	68 12 70 78 77       	push   $0x77787012
7778368c:	8b 85 cc f7 ff ff    	mov    0xfffff7cc(%ebp),%eax
77783692:	50                   	push   %eax
77783693:	e8 e8 05 00 00       	call   77783c80 <_RegOpenKeyExW@20>
	if (status != ERROR_SUCCESS) {
77783698:	83 c4 0c             	add    $0xc,%esp
7778369b:	85 c0                	test   %eax,%eax
7778369d:	0f 85 cf 01 00 00    	jne    77783872 <_PacketGetNetInfo+0x2e2>
		RegCloseKey(ParametersKey);
		goto fail;
	}
	RegCloseKey(ParametersKey);
777836a3:	83 ec 0c             	sub    $0xc,%esp
777836a6:	8b 9d cc f7 ff ff    	mov    0xfffff7cc(%ebp),%ebx
777836ac:	53                   	push   %ebx
777836ad:	e8 de 05 00 00       	call   77783c90 <_RegCloseKey@4>
		
	BufLen = 4;
	/* See if DHCP is used by this system */
	status=RegQueryValueEx(TcpIpKey,TEXT("EnableDHCP"),NULL,&RegType,(LPBYTE)&DHCPEnabled,&BufLen);
777836b2:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
777836b8:	c7 85 c4 f7 ff ff 04 	movl   $0x4,0xfffff7c4(%ebp)
777836bf:	00 00 00 
777836c2:	8d 8d bc f7 ff ff    	lea    0xfffff7bc(%ebp),%ecx
777836c8:	89 04 24             	mov    %eax,(%esp)
777836cb:	8d 85 c0 f7 ff ff    	lea    0xfffff7c0(%ebp),%eax
777836d1:	50                   	push   %eax
777836d2:	51                   	push   %ecx
777836d3:	6a 00                	push   $0x0
777836d5:	68 6e 6f 78 77       	push   $0x77786f6e
777836da:	8b 8d c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%ecx
777836e0:	51                   	push   %ecx
777836e1:	e8 ea 05 00 00       	call   77783cd0 <_RegQueryValueExW@24>
777836e6:	89 c6                	mov    %eax,%esi
	if (status != ERROR_SUCCESS)
777836e8:	58                   	pop    %eax
777836e9:	85 f6                	test   %esi,%esi
777836eb:	5a                   	pop    %edx
777836ec:	74 0a                	je     777836f8 <_PacketGetNetInfo+0x168>
		DHCPEnabled=0;
777836ee:	c7 85 c0 f7 ff ff 00 	movl   $0x0,0xfffff7c0(%ebp)
777836f5:	00 00 00 

	
	/* Retrieve the netmask */
	if(DHCPEnabled){
777836f8:	8b b5 c0 f7 ff ff    	mov    0xfffff7c0(%ebp),%esi
777836fe:	85 f6                	test   %esi,%esi
77783700:	0f 84 78 01 00 00    	je     7778387e <_PacketGetNetInfo+0x2ee>
		
		BufLen = sizeof String;
		status = RegQueryValueEx(TcpIpKey,TEXT("DhcpIPAddress"),NULL,&RegType,(LPBYTE)String,&BufLen);
77783706:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
7778370c:	c7 85 c4 f7 ff ff 02 	movl   $0x802,0xfffff7c4(%ebp)
77783713:	08 00 00 
77783716:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
7778371c:	53                   	push   %ebx
7778371d:	53                   	push   %ebx
7778371e:	50                   	push   %eax
7778371f:	8d 85 bc f7 ff ff    	lea    0xfffff7bc(%ebp),%eax
77783725:	51                   	push   %ecx
77783726:	50                   	push   %eax
77783727:	6a 00                	push   $0x0
77783729:	68 84 6f 78 77       	push   $0x77786f84
7778372e:	8b 8d c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%ecx
77783734:	51                   	push   %ecx
77783735:	e8 96 05 00 00       	call   77783cd0 <_RegQueryValueExW@24>
7778373a:	89 c6                	mov    %eax,%esi
		if (status != ERROR_SUCCESS) {
7778373c:	58                   	pop    %eax
7778373d:	85 f6                	test   %esi,%esi
7778373f:	5a                   	pop    %edx
77783740:	0f 85 12 02 00 00    	jne    77783958 <_PacketGetNetInfo+0x3c8>
			RegCloseKey(TcpIpKey);
			goto fail;
		}

		TAddr = inet_addrU(String);
77783746:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
7778374c:	8d 9d b8 f7 ff ff    	lea    0xfffff7b8(%ebp),%ebx
77783752:	51                   	push   %ecx
77783753:	e8 88 dd ff ff       	call   777814e0 <_inet_addrU>
		// swap bytes for backward compatibility
		for(i=0;i<4;i++){
77783758:	31 d2                	xor    %edx,%edx
7778375a:	89 85 b8 f7 ff ff    	mov    %eax,0xfffff7b8(%ebp)
77783760:	58                   	pop    %eax
			*((char*)netp+i) = *((char*)&TAddr+3-i);
77783761:	89 d8                	mov    %ebx,%eax
77783763:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77783766:	29 d0                	sub    %edx,%eax
77783768:	8a 40 03             	mov    0x3(%eax),%al
7778376b:	88 04 0a             	mov    %al,(%edx,%ecx,1)
7778376e:	42                   	inc    %edx
7778376f:	83 fa 03             	cmp    $0x3,%edx
77783772:	76 ed                	jbe    77783761 <_PacketGetNetInfo+0x1d1>
		}
		
		BufLen = sizeof String;
77783774:	c7 85 c4 f7 ff ff 02 	movl   $0x802,0xfffff7c4(%ebp)
7778377b:	08 00 00 
		status=RegQueryValueEx(TcpIpKey,TEXT("DHCPSubnetMask"),NULL,&RegType,
7778377e:	50                   	push   %eax
7778377f:	50                   	push   %eax
77783780:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
77783786:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
7778378c:	50                   	push   %eax
7778378d:	8d 85 bc f7 ff ff    	lea    0xfffff7bc(%ebp),%eax
77783793:	51                   	push   %ecx
77783794:	50                   	push   %eax
77783795:	6a 00                	push   $0x0
77783797:	68 48 70 78 77       	push   $0x77787048
7778379c:	8b b5 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%esi
777837a2:	56                   	push   %esi
777837a3:	e8 28 05 00 00       	call   77783cd0 <_RegQueryValueExW@24>
			(LPBYTE)String,&BufLen);
		
		TAddr = inet_addrU(String);
777837a8:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
777837ae:	89 c6                	mov    %eax,%esi
777837b0:	51                   	push   %ecx
777837b1:	e8 2a dd ff ff       	call   777814e0 <_inet_addrU>
		// swap bytes for backward compatibility
		for(i=0;i<4;i++){
777837b6:	31 d2                	xor    %edx,%edx
777837b8:	83 c4 0c             	add    $0xc,%esp
777837bb:	89 85 b8 f7 ff ff    	mov    %eax,0xfffff7b8(%ebp)
			*((char*)maskp+i) = *((char*)&TAddr+3-i);
777837c1:	89 d8                	mov    %ebx,%eax
777837c3:	8b 4d 10             	mov    0x10(%ebp),%ecx
777837c6:	29 d0                	sub    %edx,%eax
777837c8:	8a 40 03             	mov    0x3(%eax),%al
777837cb:	88 04 0a             	mov    %al,(%edx,%ecx,1)
777837ce:	42                   	inc    %edx
777837cf:	83 fa 03             	cmp    $0x3,%edx
777837d2:	76 ed                	jbe    777837c1 <_PacketGetNetInfo+0x231>
		}
		
		
	}
	else{

		BufLen = sizeof String;
		status = RegQueryValueEx(TcpIpKey,TEXT("IPAddress"),NULL,&RegType,(LPBYTE)String,&BufLen);
		if (status != ERROR_SUCCESS) {
			RegCloseKey(TcpIpKey);
			goto fail;
		}

		TAddr = inet_addrU(String);
		// swap bytes for backward compatibility
		for(i=0;i<4;i++){
			*((char*)netp+i) = *((char*)&TAddr+3-i);
		}
		
		BufLen = sizeof String;
		status=RegQueryValueEx(TcpIpKey,TEXT("SubnetMask"),NULL,&RegType,
			(LPBYTE)String,&BufLen);
		
		TAddr = inet_addrU(String);
		// swap bytes for backward compatibility
		for(i=0;i<4;i++){
			*((char*)maskp+i) = *((char*)&TAddr+3-i);
		}


	}
	
	if (status != ERROR_SUCCESS) {
777837d4:	85 f6                	test   %esi,%esi
777837d6:	0f 85 7c 01 00 00    	jne    77783958 <_PacketGetNetInfo+0x3c8>
		RegCloseKey(TcpIpKey);
		goto fail;
	}
	
		
	if (AdapterNameU != NULL)
777837dc:	85 ff                	test   %edi,%edi
777837de:	74 0c                	je     777837ec <_PacketGetNetInfo+0x25c>
		free(AdapterNameU);
777837e0:	83 ec 0c             	sub    $0xc,%esp
777837e3:	57                   	push   %edi
777837e4:	e8 f7 0a 00 00       	call   777842e0 <_free>
777837e9:	83 c4 10             	add    $0x10,%esp
	return TRUE;
	
fail:
	if (AdapterNameU != NULL)
		free(AdapterNameU);
    return FALSE;
}
777837ec:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777837ef:	b8 01 00 00 00       	mov    $0x1,%eax
777837f4:	5b                   	pop    %ebx
777837f5:	5e                   	pop    %esi
777837f6:	5f                   	pop    %edi
777837f7:	5d                   	pop    %ebp
777837f8:	c3                   	ret    
777837f9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77783800:	83 ec 0c             	sub    $0xc,%esp
77783803:	8b 85 d0 f7 ff ff    	mov    0xfffff7d0(%ebp),%eax
77783809:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77783810:	50                   	push   %eax
77783811:	e8 7a 04 00 00       	call   77783c90 <_RegCloseKey@4>
77783816:	83 c4 0c             	add    $0xc,%esp
77783819:	85 ff                	test   %edi,%edi
7778381b:	74 0c                	je     77783829 <_PacketGetNetInfo+0x299>
7778381d:	83 ec 0c             	sub    $0xc,%esp
77783820:	57                   	push   %edi
77783821:	e8 ba 0a 00 00       	call   777842e0 <_free>
77783826:	83 c4 10             	add    $0x10,%esp
77783829:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
7778382c:	31 c0                	xor    %eax,%eax
7778382e:	5b                   	pop    %ebx
7778382f:	5e                   	pop    %esi
77783830:	5f                   	pop    %edi
77783831:	5d                   	pop    %ebp
77783832:	c3                   	ret    
77783833:	83 ec 0c             	sub    $0xc,%esp
77783836:	56                   	push   %esi
77783837:	e8 c4 d9 ff ff       	call   77781200 <_SChar2WChar>
7778383c:	83 c4 10             	add    $0x10,%esp
7778383f:	89 c6                	mov    %eax,%esi
77783841:	89 c7                	mov    %eax,%edi
77783843:	53                   	push   %ebx
77783844:	53                   	push   %ebx
77783845:	6a 5c                	push   $0x5c
77783847:	56                   	push   %esi
77783848:	e8 e3 01 00 00       	call   77783a30 <_wcsrchr>
7778384d:	83 c4 10             	add    $0x10,%esp
77783850:	89 c3                	mov    %eax,%ebx
77783852:	85 c0                	test   %eax,%eax
77783854:	0f 85 68 fd ff ff    	jne    777835c2 <_PacketGetNetInfo+0x32>
7778385a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783860:	89 f3                	mov    %esi,%ebx
77783862:	e9 5e fd ff ff       	jmp    777835c5 <_PacketGetNetInfo+0x35>
77783867:	83 ec 0c             	sub    $0xc,%esp
7778386a:	8b 85 d4 f7 ff ff    	mov    0xfffff7d4(%ebp),%eax
77783870:	eb 9e                	jmp    77783810 <_PacketGetNetInfo+0x280>
77783872:	83 ec 0c             	sub    $0xc,%esp
77783875:	8b b5 cc f7 ff ff    	mov    0xfffff7cc(%ebp),%esi
7778387b:	56                   	push   %esi
7778387c:	eb 93                	jmp    77783811 <_PacketGetNetInfo+0x281>
7778387e:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
77783884:	c7 85 c4 f7 ff ff 02 	movl   $0x802,0xfffff7c4(%ebp)
7778388b:	08 00 00 
7778388e:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
77783894:	53                   	push   %ebx
77783895:	53                   	push   %ebx
77783896:	50                   	push   %eax
77783897:	8d 85 bc f7 ff ff    	lea    0xfffff7bc(%ebp),%eax
7778389d:	51                   	push   %ecx
7778389e:	50                   	push   %eax
7778389f:	6a 00                	push   $0x0
777838a1:	68 1e 70 78 77       	push   $0x7778701e
777838a6:	8b 8d c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%ecx
777838ac:	51                   	push   %ecx
777838ad:	e8 1e 04 00 00       	call   77783cd0 <_RegQueryValueExW@24>
777838b2:	89 c6                	mov    %eax,%esi
777838b4:	58                   	pop    %eax
777838b5:	85 f6                	test   %esi,%esi
777838b7:	5a                   	pop    %edx
777838b8:	0f 85 9a 00 00 00    	jne    77783958 <_PacketGetNetInfo+0x3c8>
777838be:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
777838c4:	8d 9d b8 f7 ff ff    	lea    0xfffff7b8(%ebp),%ebx
777838ca:	51                   	push   %ecx
777838cb:	e8 10 dc ff ff       	call   777814e0 <_inet_addrU>
777838d0:	31 d2                	xor    %edx,%edx
777838d2:	89 85 b8 f7 ff ff    	mov    %eax,0xfffff7b8(%ebp)
777838d8:	58                   	pop    %eax
777838d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
777838e0:	89 d8                	mov    %ebx,%eax
777838e2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
777838e5:	29 d0                	sub    %edx,%eax
777838e7:	8a 40 03             	mov    0x3(%eax),%al
777838ea:	88 04 0a             	mov    %al,(%edx,%ecx,1)
777838ed:	42                   	inc    %edx
777838ee:	83 fa 03             	cmp    $0x3,%edx
777838f1:	76 ed                	jbe    777838e0 <_PacketGetNetInfo+0x350>
777838f3:	c7 85 c4 f7 ff ff 02 	movl   $0x802,0xfffff7c4(%ebp)
777838fa:	08 00 00 
777838fd:	50                   	push   %eax
777838fe:	50                   	push   %eax
777838ff:	8d 85 c4 f7 ff ff    	lea    0xfffff7c4(%ebp),%eax
77783905:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
7778390b:	50                   	push   %eax
7778390c:	8d 85 bc f7 ff ff    	lea    0xfffff7bc(%ebp),%eax
77783912:	51                   	push   %ecx
77783913:	50                   	push   %eax
77783914:	6a 00                	push   $0x0
77783916:	68 32 70 78 77       	push   $0x77787032
7778391b:	8b 85 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%eax
77783921:	50                   	push   %eax
77783922:	e8 a9 03 00 00       	call   77783cd0 <_RegQueryValueExW@24>
77783927:	8d 8d d8 f7 ff ff    	lea    0xfffff7d8(%ebp),%ecx
7778392d:	89 c6                	mov    %eax,%esi
7778392f:	51                   	push   %ecx
77783930:	e8 ab db ff ff       	call   777814e0 <_inet_addrU>
77783935:	31 d2                	xor    %edx,%edx
77783937:	83 c4 0c             	add    $0xc,%esp
7778393a:	89 85 b8 f7 ff ff    	mov    %eax,0xfffff7b8(%ebp)
77783940:	89 d8                	mov    %ebx,%eax
77783942:	8b 4d 10             	mov    0x10(%ebp),%ecx
77783945:	29 d0                	sub    %edx,%eax
77783947:	8a 40 03             	mov    0x3(%eax),%al
7778394a:	88 04 0a             	mov    %al,(%edx,%ecx,1)
7778394d:	42                   	inc    %edx
7778394e:	83 fa 03             	cmp    $0x3,%edx
77783951:	76 ed                	jbe    77783940 <_PacketGetNetInfo+0x3b0>
77783953:	e9 7c fe ff ff       	jmp    777837d4 <_PacketGetNetInfo+0x244>
77783958:	83 ec 0c             	sub    $0xc,%esp
7778395b:	8b 85 c8 f7 ff ff    	mov    0xfffff7c8(%ebp),%eax
77783961:	e9 aa fe ff ff       	jmp    77783810 <_PacketGetNetInfo+0x280>
77783966:	90                   	nop    
77783967:	90                   	nop    
77783968:	90                   	nop    
77783969:	90                   	nop    
7778396a:	90                   	nop    
7778396b:	90                   	nop    
7778396c:	90                   	nop    
7778396d:	90                   	nop    
7778396e:	90                   	nop    
7778396f:	90                   	nop    

77783970 <__DebugBreak>:
#undef THIS_FILE
//static char THIS_FILE[] = __FILE__;

void _DebugBreak(void)
{
77783970:	55                   	push   %ebp
77783971:	89 e5                	mov    %esp,%ebp
    DebugBreak();
77783973:	5d                   	pop    %ebp
77783974:	e9 97 02 00 00       	jmp    77783c10 <_DebugBreak@0>
77783979:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783980 <_Trace>:
}

//void Trace(TCHAR* lpszFormat, ...)
void Trace(char* lpszFormat, ...)
{
77783980:	55                   	push   %ebp
77783981:	89 e5                	mov    %esp,%ebp
77783983:	53                   	push   %ebx
77783984:	81 ec 04 02 00 00    	sub    $0x204,%esp
    va_list args;
    int nBuf;
    char szBuffer[512];

    va_start(args, lpszFormat);
7778398a:	8d 45 0c             	lea    0xc(%ebp),%eax
    nBuf = _vsnprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), lpszFormat, args);
7778398d:	8d 9d f8 fd ff ff    	lea    0xfffffdf8(%ebp),%ebx
77783993:	50                   	push   %eax
77783994:	8b 45 08             	mov    0x8(%ebp),%eax
77783997:	50                   	push   %eax
77783998:	68 00 01 00 00       	push   $0x100
7778399d:	53                   	push   %ebx
7778399e:	e8 dd 00 00 00       	call   77783a80 <__vsnprintf>
    OutputDebugStringA(szBuffer);
777839a3:	89 1c 24             	mov    %ebx,(%esp)
777839a6:	e8 75 02 00 00       	call   77783c20 <_OutputDebugStringA@4>
    // was there an error? was the expanded string too long?
    //ASSERT(nBuf >= 0);
    va_end(args);
777839ab:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777839ae:	c9                   	leave  
777839af:	c3                   	ret    

777839b0 <_Assert>:
}

void Assert(void* assert, const char* file, int line, void* msg)
{
777839b0:	55                   	push   %ebp
777839b1:	89 e5                	mov    %esp,%ebp
777839b3:	53                   	push   %ebx
777839b4:	52                   	push   %edx
777839b5:	8b 45 14             	mov    0x14(%ebp),%eax
777839b8:	8b 5d 08             	mov    0x8(%ebp),%ebx
777839bb:	8b 55 0c             	mov    0xc(%ebp),%edx
777839be:	8b 4d 10             	mov    0x10(%ebp),%ecx
    if (msg == NULL) {
777839c1:	85 c0                	test   %eax,%eax
777839c3:	74 1b                	je     777839e0 <_Assert+0x30>
        printf("ASSERT -- %s occured on line %u of file %s.\n",
               (CHAR *)assert, line, file);
    } else {
        printf("ASSERT -- %s occured on line %u of file %s: Message = %s.\n",
777839c5:	83 ec 0c             	sub    $0xc,%esp
777839c8:	50                   	push   %eax
777839c9:	52                   	push   %edx
777839ca:	51                   	push   %ecx
777839cb:	53                   	push   %ebx
777839cc:	68 70 70 78 77       	push   $0x77787070
777839d1:	e8 3a 09 00 00       	call   77784310 <_printf>
777839d6:	83 c4 20             	add    $0x20,%esp
               (CHAR *)assert, line, file, (CHAR *)msg);
    }
}
777839d9:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777839dc:	c9                   	leave  
777839dd:	c3                   	ret    
777839de:	89 f6                	mov    %esi,%esi
777839e0:	89 5d 0c             	mov    %ebx,0xc(%ebp)
777839e3:	89 55 14             	mov    %edx,0x14(%ebp)
777839e6:	c7 45 08 ac 70 78 77 	movl   $0x777870ac,0x8(%ebp)
777839ed:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
777839f0:	c9                   	leave  
777839f1:	e9 1a 09 00 00       	jmp    77784310 <_printf>
777839f6:	90                   	nop    
777839f7:	90                   	nop    
777839f8:	90                   	nop    
777839f9:	90                   	nop    
777839fa:	90                   	nop    
777839fb:	90                   	nop    
777839fc:	90                   	nop    
777839fd:	90                   	nop    
777839fe:	90                   	nop    
777839ff:	90                   	nop    

77783a00 <_memcpy>:
77783a00:	ff 25 5c a2 78 77    	jmp    *0x7778a25c
77783a06:	90                   	nop    
77783a07:	90                   	nop    
	...

77783a10 <_memset>:
77783a10:	ff 25 60 a2 78 77    	jmp    *0x7778a260
77783a16:	90                   	nop    
77783a17:	90                   	nop    
	...

77783a20 <_wcsncmp>:
77783a20:	ff 25 6c a2 78 77    	jmp    *0x7778a26c
77783a26:	90                   	nop    
77783a27:	90                   	nop    
	...

77783a30 <_wcsrchr>:
77783a30:	ff 25 74 a2 78 77    	jmp    *0x7778a274
77783a36:	90                   	nop    
77783a37:	90                   	nop    
	...

77783a40 <_wcslen>:
77783a40:	ff 25 68 a2 78 77    	jmp    *0x7778a268
77783a46:	90                   	nop    
77783a47:	90                   	nop    
	...

77783a50 <_wcsncpy>:
77783a50:	ff 25 70 a2 78 77    	jmp    *0x7778a270
77783a56:	90                   	nop    
77783a57:	90                   	nop    
	...

77783a60 <_strlen>:
77783a60:	ff 25 64 a2 78 77    	jmp    *0x7778a264
77783a66:	90                   	nop    
77783a67:	90                   	nop    
	...

77783a70 <__wcsicmp>:
77783a70:	ff 25 58 a2 78 77    	jmp    *0x7778a258
77783a76:	90                   	nop    
77783a77:	90                   	nop    
	...

77783a80 <__vsnprintf>:
77783a80:	ff 25 54 a2 78 77    	jmp    *0x7778a254
77783a86:	90                   	nop    
77783a87:	90                   	nop    
	...

77783a90 <_OutputDebugStringW@4>:
77783a90:	ff 25 2c a2 78 77    	jmp    *0x7778a22c
77783a96:	90                   	nop    
77783a97:	90                   	nop    
	...

77783aa0 <_MultiByteToWideChar@24>:
77783aa0:	ff 25 24 a2 78 77    	jmp    *0x7778a224
77783aa6:	90                   	nop    
77783aa7:	90                   	nop    
	...

77783ab0 <_DeviceIoControl@32>:
77783ab0:	ff 25 f8 a1 78 77    	jmp    *0x7778a1f8
77783ab6:	90                   	nop    
77783ab7:	90                   	nop    
	...

77783ac0 <_CreateEventW@16>:
77783ac0:	ff 25 e8 a1 78 77    	jmp    *0x7778a1e8
77783ac6:	90                   	nop    
77783ac7:	90                   	nop    
	...

77783ad0 <_GetLastError@0>:
77783ad0:	ff 25 08 a2 78 77    	jmp    *0x7778a208
77783ad6:	90                   	nop    
77783ad7:	90                   	nop    
	...

77783ae0 <_CloseHandle@4>:
77783ae0:	ff 25 e4 a1 78 77    	jmp    *0x7778a1e4
77783ae6:	90                   	nop    
77783ae7:	90                   	nop    
	...

77783af0 <_GlobalAlloc@8>:
77783af0:	ff 25 10 a2 78 77    	jmp    *0x7778a210
77783af6:	90                   	nop    
77783af7:	90                   	nop    
	...

77783b00 <_GlobalLock@4>:
77783b00:	ff 25 1c a2 78 77    	jmp    *0x7778a21c
77783b06:	90                   	nop    
77783b07:	90                   	nop    
	...

77783b10 <_GlobalHandle@4>:
77783b10:	ff 25 18 a2 78 77    	jmp    *0x7778a218
77783b16:	90                   	nop    
77783b17:	90                   	nop    
	...

77783b20 <_GlobalUnlock@4>:
77783b20:	ff 25 20 a2 78 77    	jmp    *0x7778a220
77783b26:	90                   	nop    
77783b27:	90                   	nop    
	...

77783b30 <_GlobalFree@4>:
77783b30:	ff 25 14 a2 78 77    	jmp    *0x7778a214
77783b36:	90                   	nop    
77783b37:	90                   	nop    
	...

77783b40 <_GetFileAttributesW@4>:
77783b40:	ff 25 00 a2 78 77    	jmp    *0x7778a200
77783b46:	90                   	nop    
77783b47:	90                   	nop    
	...

77783b50 <_CreateFileW@28>:
77783b50:	ff 25 ec a1 78 77    	jmp    *0x7778a1ec
77783b56:	90                   	nop    
77783b57:	90                   	nop    
	...

77783b60 <_GetCurrentDirectoryW@8>:
77783b60:	ff 25 fc a1 78 77    	jmp    *0x7778a1fc
77783b66:	90                   	nop    
77783b67:	90                   	nop    
	...

77783b70 <_SetLastError@4>:
77783b70:	ff 25 40 a2 78 77    	jmp    *0x7778a240
77783b76:	90                   	nop    
77783b77:	90                   	nop    
	...

77783b80 <_GetSystemDirectoryW@8>:
77783b80:	ff 25 0c a2 78 77    	jmp    *0x7778a20c
77783b86:	90                   	nop    
77783b87:	90                   	nop    
	...

77783b90 <_DefineDosDeviceW@12>:
77783b90:	ff 25 f4 a1 78 77    	jmp    *0x7778a1f4
77783b96:	90                   	nop    
77783b97:	90                   	nop    
	...

77783ba0 <_SetEvent@4>:
77783ba0:	ff 25 3c a2 78 77    	jmp    *0x7778a23c
77783ba6:	90                   	nop    
77783ba7:	90                   	nop    
	...

77783bb0 <_WaitForSingleObject@8>:
77783bb0:	ff 25 44 a2 78 77    	jmp    *0x7778a244
77783bb6:	90                   	nop    
77783bb7:	90                   	nop    
	...

77783bc0 <_ReadFile@20>:
77783bc0:	ff 25 38 a2 78 77    	jmp    *0x7778a238
77783bc6:	90                   	nop    
77783bc7:	90                   	nop    
	...

77783bd0 <_WriteFile@20>:
77783bd0:	ff 25 48 a2 78 77    	jmp    *0x7778a248
77783bd6:	90                   	nop    
77783bd7:	90                   	nop    
	...

77783be0 <_QueryPerformanceCounter@4>:
77783be0:	ff 25 30 a2 78 77    	jmp    *0x7778a230
77783be6:	90                   	nop    
77783be7:	90                   	nop    
	...

77783bf0 <_QueryPerformanceFrequency@4>:
77783bf0:	ff 25 34 a2 78 77    	jmp    *0x7778a234
77783bf6:	90                   	nop    
77783bf7:	90                   	nop    
	...

77783c00 <_GetFullPathNameW@16>:
77783c00:	ff 25 04 a2 78 77    	jmp    *0x7778a204
77783c06:	90                   	nop    
77783c07:	90                   	nop    
	...

77783c10 <_DebugBreak@0>:
77783c10:	ff 25 f0 a1 78 77    	jmp    *0x7778a1f0
77783c16:	90                   	nop    
77783c17:	90                   	nop    
	...

77783c20 <_OutputDebugStringA@4>:
77783c20:	ff 25 28 a2 78 77    	jmp    *0x7778a228
77783c26:	90                   	nop    
77783c27:	90                   	nop    
	...

77783c30 <_CreateServiceW@52>:
77783c30:	ff 25 b8 a1 78 77    	jmp    *0x7778a1b8
77783c36:	90                   	nop    
77783c37:	90                   	nop    
	...

77783c40 <_CloseServiceHandle@4>:
77783c40:	ff 25 b0 a1 78 77    	jmp    *0x7778a1b0
77783c46:	90                   	nop    
77783c47:	90                   	nop    
	...

77783c50 <_OpenSCManagerW@12>:
77783c50:	ff 25 bc a1 78 77    	jmp    *0x7778a1bc
77783c56:	90                   	nop    
77783c57:	90                   	nop    
	...

77783c60 <_OpenServiceW@12>:
77783c60:	ff 25 c0 a1 78 77    	jmp    *0x7778a1c0
77783c66:	90                   	nop    
77783c67:	90                   	nop    
	...

77783c70 <_ControlService@12>:
77783c70:	ff 25 b4 a1 78 77    	jmp    *0x7778a1b4
77783c76:	90                   	nop    
77783c77:	90                   	nop    
	...

77783c80 <_RegOpenKeyExW@20>:
77783c80:	ff 25 d0 a1 78 77    	jmp    *0x7778a1d0
77783c86:	90                   	nop    
77783c87:	90                   	nop    
	...

77783c90 <_RegCloseKey@4>:
77783c90:	ff 25 c8 a1 78 77    	jmp    *0x7778a1c8
77783c96:	90                   	nop    
77783c97:	90                   	nop    
	...

77783ca0 <_QueryServiceStatus@8>:
77783ca0:	ff 25 c4 a1 78 77    	jmp    *0x7778a1c4
77783ca6:	90                   	nop    
77783ca7:	90                   	nop    
	...

77783cb0 <_StartServiceW@12>:
77783cb0:	ff 25 d8 a1 78 77    	jmp    *0x7778a1d8
77783cb6:	90                   	nop    
77783cb7:	90                   	nop    
	...

77783cc0 <_RegEnumKeyW@16>:
77783cc0:	ff 25 cc a1 78 77    	jmp    *0x7778a1cc
77783cc6:	90                   	nop    
77783cc7:	90                   	nop    
	...

77783cd0 <_RegQueryValueExW@24>:
77783cd0:	ff 25 d4 a1 78 77    	jmp    *0x7778a1d4
77783cd6:	90                   	nop    
77783cd7:	90                   	nop    
	...

77783ce0 <___do_global_dtors>:
77783ce0:	55                   	push   %ebp
77783ce1:	89 e5                	mov    %esp,%ebp
77783ce3:	83 ec 08             	sub    $0x8,%esp
77783ce6:	a1 30 50 78 77       	mov    0x77785030,%eax
77783ceb:	8b 08                	mov    (%eax),%ecx
77783ced:	85 c9                	test   %ecx,%ecx
77783cef:	74 26                	je     77783d17 <___do_global_dtors+0x37>
77783cf1:	eb 0d                	jmp    77783d00 <___do_global_dtors+0x20>
77783cf3:	90                   	nop    
77783cf4:	90                   	nop    
77783cf5:	90                   	nop    
77783cf6:	90                   	nop    
77783cf7:	90                   	nop    
77783cf8:	90                   	nop    
77783cf9:	90                   	nop    
77783cfa:	90                   	nop    
77783cfb:	90                   	nop    
77783cfc:	90                   	nop    
77783cfd:	90                   	nop    
77783cfe:	90                   	nop    
77783cff:	90                   	nop    
77783d00:	ff 10                	call   *(%eax)
77783d02:	8b 0d 30 50 78 77    	mov    0x77785030,%ecx
77783d08:	8b 51 04             	mov    0x4(%ecx),%edx
77783d0b:	8d 41 04             	lea    0x4(%ecx),%eax
77783d0e:	a3 30 50 78 77       	mov    %eax,0x77785030
77783d13:	85 d2                	test   %edx,%edx
77783d15:	75 e9                	jne    77783d00 <___do_global_dtors+0x20>
77783d17:	c9                   	leave  
77783d18:	c3                   	ret    
77783d19:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77783d20 <___do_global_ctors>:
77783d20:	55                   	push   %ebp
77783d21:	89 e5                	mov    %esp,%ebp
77783d23:	53                   	push   %ebx
77783d24:	83 ec 04             	sub    $0x4,%esp
77783d27:	a1 a0 43 78 77       	mov    0x777843a0,%eax
77783d2c:	83 f8 ff             	cmp    $0xffffffff,%eax
77783d2f:	74 29                	je     77783d5a <___do_global_ctors+0x3a>
77783d31:	85 c0                	test   %eax,%eax
77783d33:	89 c3                	mov    %eax,%ebx
77783d35:	74 13                	je     77783d4a <___do_global_ctors+0x2a>
77783d37:	89 f6                	mov    %esi,%esi
77783d39:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi
77783d40:	ff 14 9d a0 43 78 77 	call   *0x777843a0(,%ebx,4)
77783d47:	4b                   	dec    %ebx
77783d48:	75 f6                	jne    77783d40 <___do_global_ctors+0x20>
77783d4a:	c7 04 24 e0 3c 78 77 	movl   $0x77783ce0,(%esp)
77783d51:	e8 0a d4 ff ff       	call   77781160 <_atexit>
77783d56:	5b                   	pop    %ebx
77783d57:	5b                   	pop    %ebx
77783d58:	5d                   	pop    %ebp
77783d59:	c3                   	ret    
77783d5a:	8b 0d a4 43 78 77    	mov    0x777843a4,%ecx
77783d60:	31 c0                	xor    %eax,%eax
77783d62:	85 c9                	test   %ecx,%ecx
77783d64:	eb 0a                	jmp    77783d70 <___do_global_ctors+0x50>
77783d66:	40                   	inc    %eax
77783d67:	8b 14 85 a4 43 78 77 	mov    0x777843a4(,%eax,4),%edx
77783d6e:	85 d2                	test   %edx,%edx
77783d70:	75 f4                	jne    77783d66 <___do_global_ctors+0x46>
77783d72:	eb bd                	jmp    77783d31 <___do_global_ctors+0x11>
77783d74:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783d7a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

77783d80 <___main>:
77783d80:	55                   	push   %ebp
77783d81:	89 e5                	mov    %esp,%ebp
77783d83:	53                   	push   %ebx
77783d84:	83 ec 04             	sub    $0x4,%esp
77783d87:	a1 30 80 78 77       	mov    0x77788030,%eax
77783d8c:	85 c0                	test   %eax,%eax
77783d8e:	75 36                	jne    77783dc6 <___main+0x46>
77783d90:	a1 a0 43 78 77       	mov    0x777843a0,%eax
77783d95:	bb 01 00 00 00       	mov    $0x1,%ebx
77783d9a:	89 1d 30 80 78 77    	mov    %ebx,0x77788030
77783da0:	83 f8 ff             	cmp    $0xffffffff,%eax
77783da3:	74 25                	je     77783dca <___main+0x4a>
77783da5:	85 c0                	test   %eax,%eax
77783da7:	89 c3                	mov    %eax,%ebx
77783da9:	74 0f                	je     77783dba <___main+0x3a>
77783dab:	90                   	nop    
77783dac:	8d 74 26 00          	lea    0x0(%esi),%esi
77783db0:	ff 14 9d a0 43 78 77 	call   *0x777843a0(,%ebx,4)
77783db7:	4b                   	dec    %ebx
77783db8:	75 f6                	jne    77783db0 <___main+0x30>
77783dba:	c7 04 24 e0 3c 78 77 	movl   $0x77783ce0,(%esp)
77783dc1:	e8 9a d3 ff ff       	call   77781160 <_atexit>
77783dc6:	5b                   	pop    %ebx
77783dc7:	5b                   	pop    %ebx
77783dc8:	5d                   	pop    %ebp
77783dc9:	c3                   	ret    
77783dca:	8b 0d a4 43 78 77    	mov    0x777843a4,%ecx
77783dd0:	31 c0                	xor    %eax,%eax
77783dd2:	85 c9                	test   %ecx,%ecx
77783dd4:	eb 0a                	jmp    77783de0 <___main+0x60>
77783dd6:	40                   	inc    %eax
77783dd7:	8b 14 85 a4 43 78 77 	mov    0x777843a4(,%eax,4),%edx
77783dde:	85 d2                	test   %edx,%edx
77783de0:	75 f4                	jne    77783dd6 <___main+0x56>
77783de2:	eb c1                	jmp    77783da5 <___main+0x25>
77783de4:	90                   	nop    
77783de5:	90                   	nop    
77783de6:	90                   	nop    
77783de7:	90                   	nop    
77783de8:	90                   	nop    
77783de9:	90                   	nop    
77783dea:	90                   	nop    
77783deb:	90                   	nop    
77783dec:	90                   	nop    
77783ded:	90                   	nop    
77783dee:	90                   	nop    
77783def:	90                   	nop    

77783df0 <__pei386_runtime_relocator>:
77783df0:	55                   	push   %ebp
77783df1:	b9 c0 71 78 77       	mov    $0x777871c0,%ecx
77783df6:	89 e5                	mov    %esp,%ebp
77783df8:	eb 14                	jmp    77783e0e <__pei386_runtime_relocator+0x1e>
77783dfa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77783e00:	8b 51 04             	mov    0x4(%ecx),%edx
77783e03:	8b 01                	mov    (%ecx),%eax
77783e05:	83 c1 08             	add    $0x8,%ecx
77783e08:	01 82 00 00 78 77    	add    %eax,0x77780000(%edx)
77783e0e:	81 f9 c0 71 78 77    	cmp    $0x777871c0,%ecx
77783e14:	72 ea                	jb     77783e00 <__pei386_runtime_relocator+0x10>
77783e16:	5d                   	pop    %ebp
77783e17:	c3                   	ret    
77783e18:	90                   	nop    
77783e19:	90                   	nop    
77783e1a:	90                   	nop    
77783e1b:	90                   	nop    
77783e1c:	90                   	nop    
77783e1d:	90                   	nop    
77783e1e:	90                   	nop    
77783e1f:	90                   	nop    

77783e20 <___w32_sharedptr_default_unexpected>:
77783e20:	55                   	push   %ebp
77783e21:	a1 80 80 78 77       	mov    0x77788080,%eax
77783e26:	89 e5                	mov    %esp,%ebp
77783e28:	5d                   	pop    %ebp
77783e29:	8b 48 04             	mov    0x4(%eax),%ecx
77783e2c:	ff e1                	jmp    *%ecx
77783e2e:	89 f6                	mov    %esi,%esi

77783e30 <___w32_sharedptr_get>:
77783e30:	55                   	push   %ebp
77783e31:	ba 42 00 00 00       	mov    $0x42,%edx
77783e36:	89 e5                	mov    %esp,%ebp
77783e38:	53                   	push   %ebx
77783e39:	0f b7 c0             	movzwl %ax,%eax
77783e3c:	83 ec 64             	sub    $0x64,%esp
77783e3f:	89 54 24 08          	mov    %edx,0x8(%esp)
77783e43:	8d 55 a8             	lea    0xffffffa8(%ebp),%edx
77783e46:	31 db                	xor    %ebx,%ebx
77783e48:	89 54 24 04          	mov    %edx,0x4(%esp)
77783e4c:	89 04 24             	mov    %eax,(%esp)
77783e4f:	ff 15 88 a2 78 77    	call   *0x7778a288
77783e55:	ba 1f 00 00 00       	mov    $0x1f,%edx
77783e5a:	b9 01 00 00 00       	mov    $0x1,%ecx
77783e5f:	83 ec 0c             	sub    $0xc,%esp
77783e62:	85 c0                	test   %eax,%eax
77783e64:	75 07                	jne    77783e6d <___w32_sharedptr_get+0x3d>
77783e66:	eb 46                	jmp    77783eae <___w32_sharedptr_get+0x7e>
77783e68:	01 c9                	add    %ecx,%ecx
77783e6a:	4a                   	dec    %edx
77783e6b:	78 0e                	js     77783e7b <___w32_sharedptr_get+0x4b>
77783e6d:	80 7c 2a a8 41       	cmpb   $0x41,0xffffffa8(%edx,%ebp,1)
77783e72:	75 f4                	jne    77783e68 <___w32_sharedptr_get+0x38>
77783e74:	09 cb                	or     %ecx,%ebx
77783e76:	01 c9                	add    %ecx,%ecx
77783e78:	4a                   	dec    %edx
77783e79:	79 f2                	jns    77783e6d <___w32_sharedptr_get+0x3d>
77783e7b:	83 3b 3c             	cmpl   $0x3c,(%ebx)
77783e7e:	75 07                	jne    77783e87 <___w32_sharedptr_get+0x57>
77783e80:	89 d8                	mov    %ebx,%eax
77783e82:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77783e85:	c9                   	leave  
77783e86:	c3                   	ret    
77783e87:	b9 04 71 78 77       	mov    $0x77787104,%ecx
77783e8c:	ba ea 00 00 00       	mov    $0xea,%edx
77783e91:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
77783e95:	89 54 24 08          	mov    %edx,0x8(%esp)
77783e99:	c7 04 24 31 71 78 77 	movl   $0x77787131,(%esp)
77783ea0:	b8 50 71 78 77       	mov    $0x77787150,%eax
77783ea5:	89 44 24 04          	mov    %eax,0x4(%esp)
77783ea9:	e8 c2 03 00 00       	call   77784270 <___eprintf>
77783eae:	b8 7c 71 78 77       	mov    $0x7778717c,%eax
77783eb3:	bb e4 00 00 00       	mov    $0xe4,%ebx
77783eb8:	89 44 24 0c          	mov    %eax,0xc(%esp)
77783ebc:	89 5c 24 08          	mov    %ebx,0x8(%esp)
77783ec0:	eb d7                	jmp    77783e99 <___w32_sharedptr_get+0x69>
77783ec2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77783ec9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77783ed0 <___w32_sharedptr_initialize>:
77783ed0:	55                   	push   %ebp
77783ed1:	89 e5                	mov    %esp,%ebp
77783ed3:	57                   	push   %edi
77783ed4:	56                   	push   %esi
77783ed5:	53                   	push   %ebx
77783ed6:	81 ec cc 00 00 00    	sub    $0xcc,%esp
77783edc:	8b 0d 80 80 78 77    	mov    0x77788080,%ecx
77783ee2:	85 c9                	test   %ecx,%ecx
77783ee4:	74 08                	je     77783eee <___w32_sharedptr_initialize+0x1e>
77783ee6:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77783ee9:	5b                   	pop    %ebx
77783eea:	5e                   	pop    %esi
77783eeb:	5f                   	pop    %edi
77783eec:	5d                   	pop    %ebp
77783eed:	c3                   	ret    
77783eee:	c7 45 98 41 41 41 41 	movl   $0x41414141,0xffffff98(%ebp)
77783ef5:	a1 e0 70 78 77       	mov    0x777870e0,%eax
77783efa:	8d 75 98             	lea    0xffffff98(%ebp),%esi
77783efd:	c7 45 9c 41 41 41 41 	movl   $0x41414141,0xffffff9c(%ebp)
77783f04:	c7 45 a0 41 41 41 41 	movl   $0x41414141,0xffffffa0(%ebp)
77783f0b:	89 45 b8             	mov    %eax,0xffffffb8(%ebp)
77783f0e:	a1 e4 70 78 77       	mov    0x777870e4,%eax
77783f13:	c7 45 a4 41 41 41 41 	movl   $0x41414141,0xffffffa4(%ebp)
77783f1a:	c7 45 a8 41 41 41 41 	movl   $0x41414141,0xffffffa8(%ebp)
77783f21:	89 45 bc             	mov    %eax,0xffffffbc(%ebp)
77783f24:	a1 e8 70 78 77       	mov    0x777870e8,%eax
77783f29:	c7 45 ac 41 41 41 41 	movl   $0x41414141,0xffffffac(%ebp)
77783f30:	c7 45 b0 41 41 41 41 	movl   $0x41414141,0xffffffb0(%ebp)
77783f37:	89 45 c0             	mov    %eax,0xffffffc0(%ebp)
77783f3a:	a1 ec 70 78 77       	mov    0x777870ec,%eax
77783f3f:	c7 45 b4 41 41 41 41 	movl   $0x41414141,0xffffffb4(%ebp)
77783f46:	89 45 c4             	mov    %eax,0xffffffc4(%ebp)
77783f49:	a1 f0 70 78 77       	mov    0x777870f0,%eax
77783f4e:	89 45 c8             	mov    %eax,0xffffffc8(%ebp)
77783f51:	a1 f4 70 78 77       	mov    0x777870f4,%eax
77783f56:	89 45 cc             	mov    %eax,0xffffffcc(%ebp)
77783f59:	a1 f8 70 78 77       	mov    0x777870f8,%eax
77783f5e:	89 45 d0             	mov    %eax,0xffffffd0(%ebp)
77783f61:	a1 fc 70 78 77       	mov    0x777870fc,%eax
77783f66:	89 45 d4             	mov    %eax,0xffffffd4(%ebp)
77783f69:	0f b7 05 00 71 78 77 	movzwl 0x77787100,%eax
77783f70:	66 89 45 d8          	mov    %ax,0xffffffd8(%ebp)
77783f74:	89 34 24             	mov    %esi,(%esp)
77783f77:	ff 15 84 a2 78 77    	call   *0x7778a284
77783f7d:	0f b7 c0             	movzwl %ax,%eax
77783f80:	83 ec 04             	sub    $0x4,%esp
77783f83:	85 c0                	test   %eax,%eax
77783f85:	89 85 44 ff ff ff    	mov    %eax,0xffffff44(%ebp)
77783f8b:	0f 85 3b 01 00 00    	jne    777840cc <___w32_sharedptr_initialize+0x1fc>
77783f91:	c7 04 24 3c 00 00 00 	movl   $0x3c,(%esp)
77783f98:	e8 63 03 00 00       	call   77784300 <_malloc>
77783f9d:	85 c0                	test   %eax,%eax
77783f9f:	89 c3                	mov    %eax,%ebx
77783fa1:	0f 84 59 01 00 00    	je     77784100 <___w32_sharedptr_initialize+0x230>
77783fa7:	fc                   	cld    
77783fa8:	89 c7                	mov    %eax,%edi
77783faa:	8b 85 44 ff ff ff    	mov    0xffffff44(%ebp),%eax
77783fb0:	b9 0f 00 00 00       	mov    $0xf,%ecx
77783fb5:	f3 ab                	repz stos %eax,%es:(%edi)
77783fb7:	c7 43 04 20 43 78 77 	movl   $0x77784320,0x4(%ebx)
77783fbe:	b9 01 00 00 00       	mov    $0x1,%ecx
77783fc3:	c7 43 08 20 3e 78 77 	movl   $0x77783e20,0x8(%ebx)
77783fca:	a1 50 80 78 77       	mov    0x77788050,%eax
77783fcf:	c7 03 3c 00 00 00    	movl   $0x3c,(%ebx)
77783fd5:	8b 15 54 80 78 77    	mov    0x77788054,%edx
77783fdb:	c7 43 28 00 00 00 00 	movl   $0x0,0x28(%ebx)
77783fe2:	89 43 14             	mov    %eax,0x14(%ebx)
77783fe5:	a1 40 50 78 77       	mov    0x77785040,%eax
77783fea:	89 53 18             	mov    %edx,0x18(%ebx)
77783fed:	8b 15 44 50 78 77    	mov    0x77785044,%edx
77783ff3:	89 43 1c             	mov    %eax,0x1c(%ebx)
77783ff6:	a1 60 80 78 77       	mov    0x77788060,%eax
77783ffb:	89 53 20             	mov    %edx,0x20(%ebx)
77783ffe:	c7 43 30 ff ff ff ff 	movl   $0xffffffff,0x30(%ebx)
77784005:	89 43 2c             	mov    %eax,0x2c(%ebx)
77784008:	8b 15 4c 50 78 77    	mov    0x7778504c,%edx
7778400e:	a1 48 50 78 77       	mov    0x77785048,%eax
77784013:	89 53 38             	mov    %edx,0x38(%ebx)
77784016:	ba 1f 00 00 00       	mov    $0x1f,%edx
7778401b:	89 43 34             	mov    %eax,0x34(%ebx)
7778401e:	89 f6                	mov    %esi,%esi
77784020:	89 d8                	mov    %ebx,%eax
77784022:	21 c8                	and    %ecx,%eax
77784024:	83 f8 01             	cmp    $0x1,%eax
77784027:	19 c0                	sbb    %eax,%eax
77784029:	24 20                	and    $0x20,%al
7778402b:	01 c9                	add    %ecx,%ecx
7778402d:	04 41                	add    $0x41,%al
7778402f:	88 84 2a 48 ff ff ff 	mov    %al,0xffffff48(%edx,%ebp,1)
77784036:	4a                   	dec    %edx
77784037:	79 e7                	jns    77784020 <___w32_sharedptr_initialize+0x150>
77784039:	a1 e0 70 78 77       	mov    0x777870e0,%eax
7778403e:	89 85 68 ff ff ff    	mov    %eax,0xffffff68(%ebp)
77784044:	a1 e4 70 78 77       	mov    0x777870e4,%eax
77784049:	89 85 6c ff ff ff    	mov    %eax,0xffffff6c(%ebp)
7778404f:	a1 e8 70 78 77       	mov    0x777870e8,%eax
77784054:	89 85 70 ff ff ff    	mov    %eax,0xffffff70(%ebp)
7778405a:	a1 ec 70 78 77       	mov    0x777870ec,%eax
7778405f:	89 85 74 ff ff ff    	mov    %eax,0xffffff74(%ebp)
77784065:	a1 f0 70 78 77       	mov    0x777870f0,%eax
7778406a:	89 85 78 ff ff ff    	mov    %eax,0xffffff78(%ebp)
77784070:	a1 f4 70 78 77       	mov    0x777870f4,%eax
77784075:	89 85 7c ff ff ff    	mov    %eax,0xffffff7c(%ebp)
7778407b:	a1 f8 70 78 77       	mov    0x777870f8,%eax
77784080:	89 45 80             	mov    %eax,0xffffff80(%ebp)
77784083:	a1 fc 70 78 77       	mov    0x777870fc,%eax
77784088:	89 45 84             	mov    %eax,0xffffff84(%ebp)
7778408b:	0f b7 05 00 71 78 77 	movzwl 0x77787100,%eax
77784092:	66 89 45 88          	mov    %ax,0xffffff88(%ebp)
77784096:	8d 85 48 ff ff ff    	lea    0xffffff48(%ebp),%eax
7778409c:	89 04 24             	mov    %eax,(%esp)
7778409f:	ff 15 80 a2 78 77    	call   *0x7778a280
777840a5:	0f b7 f8             	movzwl %ax,%edi
777840a8:	83 ec 04             	sub    $0x4,%esp
777840ab:	85 ff                	test   %edi,%edi
777840ad:	75 42                	jne    777840f1 <___w32_sharedptr_initialize+0x221>
777840af:	31 d2                	xor    %edx,%edx
777840b1:	85 d2                	test   %edx,%edx
777840b3:	75 1e                	jne    777840d3 <___w32_sharedptr_initialize+0x203>
777840b5:	89 1c 24             	mov    %ebx,(%esp)
777840b8:	e8 23 02 00 00       	call   777842e0 <_free>
777840bd:	89 34 24             	mov    %esi,(%esp)
777840c0:	ff 15 84 a2 78 77    	call   *0x7778a284
777840c6:	83 ec 04             	sub    $0x4,%esp
777840c9:	0f b7 c0             	movzwl %ax,%eax
777840cc:	e8 5f fd ff ff       	call   77783e30 <___w32_sharedptr_get>
777840d1:	89 c3                	mov    %eax,%ebx
777840d3:	89 1d 80 80 78 77    	mov    %ebx,0x77788080
777840d9:	8d 43 04             	lea    0x4(%ebx),%eax
777840dc:	a3 70 80 78 77       	mov    %eax,0x77788070
777840e1:	8d 43 08             	lea    0x8(%ebx),%eax
777840e4:	a3 90 80 78 77       	mov    %eax,0x77788090
777840e9:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
777840ec:	5b                   	pop    %ebx
777840ed:	5e                   	pop    %esi
777840ee:	5f                   	pop    %edi
777840ef:	5d                   	pop    %ebp
777840f0:	c3                   	ret    
777840f1:	89 f8                	mov    %edi,%eax
777840f3:	e8 38 fd ff ff       	call   77783e30 <___w32_sharedptr_get>
777840f8:	39 d8                	cmp    %ebx,%eax
777840fa:	89 fa                	mov    %edi,%edx
777840fc:	75 b1                	jne    777840af <___w32_sharedptr_initialize+0x1df>
777840fe:	eb b1                	jmp    777840b1 <___w32_sharedptr_initialize+0x1e1>
77784100:	e8 1b 02 00 00       	call   77784320 <_abort>
77784105:	90                   	nop    
77784106:	90                   	nop    
77784107:	90                   	nop    
77784108:	90                   	nop    
77784109:	90                   	nop    
7778410a:	90                   	nop    
7778410b:	90                   	nop    
7778410c:	90                   	nop    
7778410d:	90                   	nop    
7778410e:	90                   	nop    
7778410f:	90                   	nop    

77784110 <___divdi3>:
77784110:	55                   	push   %ebp
77784111:	89 e5                	mov    %esp,%ebp
77784113:	83 ec 20             	sub    $0x20,%esp
77784116:	89 5d f4             	mov    %ebx,0xfffffff4(%ebp)
77784119:	8b 5d 0c             	mov    0xc(%ebp),%ebx
7778411c:	8b 4d 08             	mov    0x8(%ebp),%ecx
7778411f:	89 75 f8             	mov    %esi,0xfffffff8(%ebp)
77784122:	8b 45 10             	mov    0x10(%ebp),%eax
77784125:	85 db                	test   %ebx,%ebx
77784127:	89 7d fc             	mov    %edi,0xfffffffc(%ebp)
7778412a:	8b 55 14             	mov    0x14(%ebp),%edx
7778412d:	c7 45 f0 00 00 00 00 	movl   $0x0,0xfffffff0(%ebp)
77784134:	0f 88 aa 00 00 00    	js     777841e4 <___divdi3+0xd4>
7778413a:	85 d2                	test   %edx,%edx
7778413c:	0f 88 93 00 00 00    	js     777841d5 <___divdi3+0xc5>
77784142:	89 4d ec             	mov    %ecx,0xffffffec(%ebp)
77784145:	85 d2                	test   %edx,%edx
77784147:	89 c6                	mov    %eax,%esi
77784149:	75 35                	jne    77784180 <___divdi3+0x70>
7778414b:	39 d8                	cmp    %ebx,%eax
7778414d:	76 63                	jbe    777841b2 <___divdi3+0xa2>
7778414f:	89 c8                	mov    %ecx,%eax
77784151:	89 da                	mov    %ebx,%edx
77784153:	f7 f6                	div    %esi
77784155:	89 c1                	mov    %eax,%ecx
77784157:	c7 45 e8 00 00 00 00 	movl   $0x0,0xffffffe8(%ebp)
7778415e:	89 c8                	mov    %ecx,%eax
77784160:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
77784163:	8b 55 e8             	mov    0xffffffe8(%ebp),%edx
77784166:	85 c9                	test   %ecx,%ecx
77784168:	74 07                	je     77784171 <___divdi3+0x61>
7778416a:	f7 d8                	neg    %eax
7778416c:	83 d2 00             	adc    $0x0,%edx
7778416f:	f7 da                	neg    %edx
77784171:	8b 5d f4             	mov    0xfffffff4(%ebp),%ebx
77784174:	8b 75 f8             	mov    0xfffffff8(%ebp),%esi
77784177:	8b 7d fc             	mov    0xfffffffc(%ebp),%edi
7778417a:	89 ec                	mov    %ebp,%esp
7778417c:	5d                   	pop    %ebp
7778417d:	c3                   	ret    
7778417e:	89 f6                	mov    %esi,%esi
77784180:	c7 45 e8 00 00 00 00 	movl   $0x0,0xffffffe8(%ebp)
77784187:	31 c9                	xor    %ecx,%ecx
77784189:	39 da                	cmp    %ebx,%edx
7778418b:	77 d1                	ja     7778415e <___divdi3+0x4e>
7778418d:	0f bd c2             	bsr    %edx,%eax
77784190:	83 f0 1f             	xor    $0x1f,%eax
77784193:	89 45 e4             	mov    %eax,0xffffffe4(%ebp)
77784196:	75 5f                	jne    777841f7 <___divdi3+0xe7>
77784198:	39 d3                	cmp    %edx,%ebx
7778419a:	b9 01 00 00 00       	mov    $0x1,%ecx
7778419f:	0f 97 c0             	seta   %al
777841a2:	39 75 ec             	cmp    %esi,0xffffffec(%ebp)
777841a5:	0f 93 c2             	setae  %dl
777841a8:	09 d0                	or     %edx,%eax
777841aa:	a8 01                	test   $0x1,%al
777841ac:	75 a9                	jne    77784157 <___divdi3+0x47>
777841ae:	31 c9                	xor    %ecx,%ecx
777841b0:	eb a5                	jmp    77784157 <___divdi3+0x47>
777841b2:	85 c0                	test   %eax,%eax
777841b4:	75 0d                	jne    777841c3 <___divdi3+0xb3>
777841b6:	b8 01 00 00 00       	mov    $0x1,%eax
777841bb:	31 c9                	xor    %ecx,%ecx
777841bd:	31 d2                	xor    %edx,%edx
777841bf:	f7 f1                	div    %ecx
777841c1:	89 c6                	mov    %eax,%esi
777841c3:	89 d8                	mov    %ebx,%eax
777841c5:	31 d2                	xor    %edx,%edx
777841c7:	f7 f6                	div    %esi
777841c9:	89 45 e8             	mov    %eax,0xffffffe8(%ebp)
777841cc:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
777841cf:	f7 f6                	div    %esi
777841d1:	89 c1                	mov    %eax,%ecx
777841d3:	eb 89                	jmp    7778415e <___divdi3+0x4e>
777841d5:	f7 55 f0             	notl   0xfffffff0(%ebp)
777841d8:	f7 d8                	neg    %eax
777841da:	83 d2 00             	adc    $0x0,%edx
777841dd:	f7 da                	neg    %edx
777841df:	e9 5e ff ff ff       	jmp    77784142 <___divdi3+0x32>
777841e4:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,0xfffffff0(%ebp)
777841eb:	f7 d9                	neg    %ecx
777841ed:	83 d3 00             	adc    $0x0,%ebx
777841f0:	f7 db                	neg    %ebx
777841f2:	e9 43 ff ff ff       	jmp    7778413a <___divdi3+0x2a>
777841f7:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
777841fa:	b9 20 00 00 00       	mov    $0x20,%ecx
777841ff:	29 c1                	sub    %eax,%ecx
77784201:	89 4d e0             	mov    %ecx,0xffffffe0(%ebp)
77784204:	0f b6 4d e4          	movzbl 0xffffffe4(%ebp),%ecx
77784208:	89 f0                	mov    %esi,%eax
7778420a:	d3 e2                	shl    %cl,%edx
7778420c:	0f b6 4d e0          	movzbl 0xffffffe0(%ebp),%ecx
77784210:	89 d7                	mov    %edx,%edi
77784212:	89 da                	mov    %ebx,%edx
77784214:	d3 e8                	shr    %cl,%eax
77784216:	09 c7                	or     %eax,%edi
77784218:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
7778421b:	0f b6 4d e4          	movzbl 0xffffffe4(%ebp),%ecx
7778421f:	d3 e6                	shl    %cl,%esi
77784221:	0f b6 4d e0          	movzbl 0xffffffe0(%ebp),%ecx
77784225:	d3 ea                	shr    %cl,%edx
77784227:	0f b6 4d e4          	movzbl 0xffffffe4(%ebp),%ecx
7778422b:	d3 e3                	shl    %cl,%ebx
7778422d:	0f b6 4d e0          	movzbl 0xffffffe0(%ebp),%ecx
77784231:	d3 e8                	shr    %cl,%eax
77784233:	09 c3                	or     %eax,%ebx
77784235:	0f b6 4d e4          	movzbl 0xffffffe4(%ebp),%ecx
77784239:	89 d8                	mov    %ebx,%eax
7778423b:	f7 f7                	div    %edi
7778423d:	89 d3                	mov    %edx,%ebx
7778423f:	d3 65 ec             	shll   %cl,0xffffffec(%ebp)
77784242:	89 c1                	mov    %eax,%ecx
77784244:	f7 e6                	mul    %esi
77784246:	39 da                	cmp    %ebx,%edx
77784248:	89 c6                	mov    %eax,%esi
7778424a:	77 13                	ja     7778425f <___divdi3+0x14f>
7778424c:	0f 94 c0             	sete   %al
7778424f:	31 d2                	xor    %edx,%edx
77784251:	3b 75 ec             	cmp    0xffffffec(%ebp),%esi
77784254:	0f 97 c2             	seta   %dl
77784257:	85 d0                	test   %edx,%eax
77784259:	0f 84 f8 fe ff ff    	je     77784157 <___divdi3+0x47>
7778425f:	49                   	dec    %ecx
77784260:	e9 f2 fe ff ff       	jmp    77784157 <___divdi3+0x47>
77784265:	90                   	nop    
77784266:	90                   	nop    
77784267:	90                   	nop    
77784268:	90                   	nop    
77784269:	90                   	nop    
7778426a:	90                   	nop    
7778426b:	90                   	nop    
7778426c:	90                   	nop    
7778426d:	90                   	nop    
7778426e:	90                   	nop    
7778426f:	90                   	nop    

77784270 <___eprintf>:
77784270:	55                   	push   %ebp
77784271:	89 e5                	mov    %esp,%ebp
77784273:	83 ec 18             	sub    $0x18,%esp
77784276:	8b 45 14             	mov    0x14(%ebp),%eax
77784279:	89 44 24 10          	mov    %eax,0x10(%esp)
7778427d:	8b 45 10             	mov    0x10(%ebp),%eax
77784280:	89 44 24 0c          	mov    %eax,0xc(%esp)
77784284:	8b 45 0c             	mov    0xc(%ebp),%eax
77784287:	89 44 24 08          	mov    %eax,0x8(%esp)
7778428b:	8b 45 08             	mov    0x8(%ebp),%eax
7778428e:	89 44 24 04          	mov    %eax,0x4(%esp)
77784292:	a1 9c a2 78 77       	mov    0x7778a29c,%eax
77784297:	83 c0 40             	add    $0x40,%eax
7778429a:	89 04 24             	mov    %eax,(%esp)
7778429d:	e8 8e 00 00 00       	call   77784330 <_fprintf>
777842a2:	a1 9c a2 78 77       	mov    0x7778a29c,%eax
777842a7:	83 c0 40             	add    $0x40,%eax
777842aa:	89 04 24             	mov    %eax,(%esp)
777842ad:	e8 1e 00 00 00       	call   777842d0 <_fflush>
777842b2:	e8 69 00 00 00       	call   77784320 <_abort>
777842b7:	90                   	nop    
777842b8:	90                   	nop    
777842b9:	90                   	nop    
777842ba:	90                   	nop    
777842bb:	90                   	nop    
777842bc:	90                   	nop    
777842bd:	90                   	nop    
777842be:	90                   	nop    
777842bf:	90                   	nop    

777842c0 <___dllonexit>:
777842c0:	ff 25 94 a2 78 77    	jmp    *0x7778a294
777842c6:	90                   	nop    
777842c7:	90                   	nop    
	...

777842d0 <_fflush>:
777842d0:	ff 25 a4 a2 78 77    	jmp    *0x7778a2a4
777842d6:	90                   	nop    
777842d7:	90                   	nop    
	...

777842e0 <_free>:
777842e0:	ff 25 ac a2 78 77    	jmp    *0x7778a2ac
777842e6:	90                   	nop    
777842e7:	90                   	nop    
	...

777842f0 <__errno>:
777842f0:	ff 25 98 a2 78 77    	jmp    *0x7778a298
777842f6:	90                   	nop    
777842f7:	90                   	nop    
	...

77784300 <_malloc>:
77784300:	ff 25 b0 a2 78 77    	jmp    *0x7778a2b0
77784306:	90                   	nop    
77784307:	90                   	nop    
	...

77784310 <_printf>:
77784310:	ff 25 b4 a2 78 77    	jmp    *0x7778a2b4
77784316:	90                   	nop    
77784317:	90                   	nop    
	...

77784320 <_abort>:
77784320:	ff 25 a0 a2 78 77    	jmp    *0x7778a2a0
77784326:	90                   	nop    
77784327:	90                   	nop    
	...

77784330 <_fprintf>:
77784330:	ff 25 a8 a2 78 77    	jmp    *0x7778a2a8
77784336:	90                   	nop    
77784337:	90                   	nop    
	...

77784340 <_MessageBoxW@16>:
77784340:	ff 25 c0 a2 78 77    	jmp    *0x7778a2c0
77784346:	90                   	nop    
77784347:	90                   	nop    
	...

77784350 <_wsprintfW>:
77784350:	ff 25 c4 a2 78 77    	jmp    *0x7778a2c4
77784356:	90                   	nop    
77784357:	90                   	nop    
	...

77784360 <_GetAtomNameA@12>:
77784360:	ff 25 88 a2 78 77    	jmp    *0x7778a288
77784366:	90                   	nop    
77784367:	90                   	nop    
	...

77784370 <_FindAtomA@4>:
77784370:	ff 25 84 a2 78 77    	jmp    *0x7778a284
77784376:	90                   	nop    
77784377:	90                   	nop    
	...

77784380 <_AddAtomA@4>:
77784380:	ff 25 80 a2 78 77    	jmp    *0x7778a280
77784386:	90                   	nop    
77784387:	90                   	nop    
	...

77784390 <___sjlj_init_ctor>:
77784390:	55                   	push   %ebp
77784391:	89 e5                	mov    %esp,%ebp
77784393:	5d                   	pop    %ebp
77784394:	e9 27 ce ff ff       	jmp    777811c0 <___do_sjlj_init>
77784399:	90                   	nop    
7778439a:	90                   	nop    
7778439b:	90                   	nop    
7778439c:	90                   	nop    
7778439d:	90                   	nop    
7778439e:	90                   	nop    
7778439f:	90                   	nop    

777843a0 <__CTOR_LIST__>:
777843a0:	ff                   	(bad)  
777843a1:	ff                   	(bad)  
777843a2:	ff                   	(bad)  
777843a3:	ff 90 43 78 77 00    	call   *0x777843(%eax)

777843a4 <.ctors>:
777843a4:	90                   	nop    
777843a5:	43                   	inc    %ebx
777843a6:	78 77                	js     7778441f <__DTOR_LIST__+0x73>
777843a8:	00 00                	add    %al,(%eax)
	...

777843ac <__DTOR_LIST__>:
777843ac:	ff                   	(bad)  
777843ad:	ff                   	(bad)  
777843ae:	ff                   	(bad)  
777843af:	ff 00                	incl   (%eax)
777843b1:	00 00                	add    %al,(%eax)
	...
