
winlogon.nostrip.exe:     file format pei-i386

Disassembly of section .text:

00401000 <___crt_xc_end__>:
  401000:	55                   	push   %ebp
  401001:	89 e5                	mov    %esp,%ebp
  401003:	83 ec 18             	sub    $0x18,%esp
  401006:	89 5d f8             	mov    %ebx,0xfffffff8(%ebp)
  401009:	8b 55 08             	mov    0x8(%ebp),%edx
  40100c:	31 db                	xor    %ebx,%ebx
  40100e:	89 75 fc             	mov    %esi,0xfffffffc(%ebp)
  401011:	8b 02                	mov    (%edx),%eax
  401013:	31 f6                	xor    %esi,%esi
  401015:	8b 00                	mov    (%eax),%eax
  401017:	3d 91 00 00 c0       	cmp    $0xc0000091,%eax
  40101c:	77 43                	ja     401061 <___crt_xc_end__+0x61>
  40101e:	3d 8d 00 00 c0       	cmp    $0xc000008d,%eax
  401023:	72 5b                	jb     401080 <___crt_xc_end__+0x80>
  401025:	be 01 00 00 00       	mov    $0x1,%esi
  40102a:	c7 04 24 08 00 00 00 	movl   $0x8,(%esp)
  401031:	31 c0                	xor    %eax,%eax
  401033:	89 44 24 04          	mov    %eax,0x4(%esp)
  401037:	e8 94 2b 00 00       	call   403bd0 <_signal>
  40103c:	83 f8 01             	cmp    $0x1,%eax
  40103f:	74 6c                	je     4010ad <___crt_xc_end__+0xad>
  401041:	85 c0                	test   %eax,%eax
  401043:	74 2a                	je     40106f <___crt_xc_end__+0x6f>
  401045:	c7 04 24 08 00 00 00 	movl   $0x8,(%esp)
  40104c:	ff d0                	call   *%eax
  40104e:	bb ff ff ff ff       	mov    $0xffffffff,%ebx
  401053:	89 d8                	mov    %ebx,%eax
  401055:	8b 75 fc             	mov    0xfffffffc(%ebp),%esi
  401058:	8b 5d f8             	mov    0xfffffff8(%ebp),%ebx
  40105b:	89 ec                	mov    %ebp,%esp
  40105d:	5d                   	pop    %ebp
  40105e:	c2 04 00             	ret    $0x4
  401061:	3d 93 00 00 c0       	cmp    $0xc0000093,%eax
  401066:	74 bd                	je     401025 <___crt_xc_end__+0x25>
  401068:	3d 94 00 00 c0       	cmp    $0xc0000094,%eax
  40106d:	74 bb                	je     40102a <___crt_xc_end__+0x2a>
  40106f:	89 d8                	mov    %ebx,%eax
  401071:	8b 75 fc             	mov    0xfffffffc(%ebp),%esi
  401074:	8b 5d f8             	mov    0xfffffff8(%ebp),%ebx
  401077:	89 ec                	mov    %ebp,%esp
  401079:	5d                   	pop    %ebp
  40107a:	c2 04 00             	ret    $0x4
  40107d:	8d 76 00             	lea    0x0(%esi),%esi
  401080:	3d 05 00 00 c0       	cmp    $0xc0000005,%eax
  401085:	75 e8                	jne    40106f <___crt_xc_end__+0x6f>
  401087:	c7 04 24 0b 00 00 00 	movl   $0xb,(%esp)
  40108e:	31 f6                	xor    %esi,%esi
  401090:	89 74 24 04          	mov    %esi,0x4(%esp)
  401094:	e8 37 2b 00 00       	call   403bd0 <_signal>
  401099:	83 f8 01             	cmp    $0x1,%eax
  40109c:	74 34                	je     4010d2 <___crt_xc_end__+0xd2>
  40109e:	85 c0                	test   %eax,%eax
  4010a0:	74 cd                	je     40106f <___crt_xc_end__+0x6f>
  4010a2:	c7 04 24 0b 00 00 00 	movl   $0xb,(%esp)
  4010a9:	ff d0                	call   *%eax
  4010ab:	eb a1                	jmp    40104e <___crt_xc_end__+0x4e>
  4010ad:	c7 04 24 08 00 00 00 	movl   $0x8,(%esp)
  4010b4:	bb 01 00 00 00       	mov    $0x1,%ebx
  4010b9:	89 5c 24 04          	mov    %ebx,0x4(%esp)
  4010bd:	e8 0e 2b 00 00       	call   403bd0 <_signal>
  4010c2:	85 f6                	test   %esi,%esi
  4010c4:	74 88                	je     40104e <___crt_xc_end__+0x4e>
  4010c6:	e8 45 26 00 00       	call   403710 <__fpreset>
  4010cb:	bb ff ff ff ff       	mov    $0xffffffff,%ebx
  4010d0:	eb 81                	jmp    401053 <___crt_xc_end__+0x53>
  4010d2:	c7 04 24 0b 00 00 00 	movl   $0xb,(%esp)
  4010d9:	b9 01 00 00 00       	mov    $0x1,%ecx
  4010de:	bb ff ff ff ff       	mov    $0xffffffff,%ebx
  4010e3:	89 4c 24 04          	mov    %ecx,0x4(%esp)
  4010e7:	e8 e4 2a 00 00       	call   403bd0 <_signal>
  4010ec:	e9 62 ff ff ff       	jmp    401053 <___crt_xc_end__+0x53>
  4010f1:	eb 0d                	jmp    401100 <___mingw_CRTStartup>
  4010f3:	90                   	nop    
  4010f4:	90                   	nop    
  4010f5:	90                   	nop    
  4010f6:	90                   	nop    
  4010f7:	90                   	nop    
  4010f8:	90                   	nop    
  4010f9:	90                   	nop    
  4010fa:	90                   	nop    
  4010fb:	90                   	nop    
  4010fc:	90                   	nop    
  4010fd:	90                   	nop    
  4010fe:	90                   	nop    
  4010ff:	90                   	nop    

00401100 <___mingw_CRTStartup>:
  401100:	55                   	push   %ebp
  401101:	89 e5                	mov    %esp,%ebp
  401103:	53                   	push   %ebx
  401104:	83 ec 24             	sub    $0x24,%esp
  401107:	8d 5d f8             	lea    0xfffffff8(%ebp),%ebx
  40110a:	c7 04 24 00 10 40 00 	movl   $0x401000,(%esp)
  401111:	e8 9a 20 00 00       	call   4031b0 <_SetUnhandledExceptionFilter@4>
  401116:	83 ec 04             	sub    $0x4,%esp
  401119:	e8 f2 25 00 00       	call   403710 <__fpreset>
  40111e:	c7 45 f8 00 00 00 00 	movl   $0x0,0xfffffff8(%ebp)
  401125:	b8 00 60 40 00       	mov    $0x406000,%eax
  40112a:	8d 55 f4             	lea    0xfffffff4(%ebp),%edx
  40112d:	89 5c 24 10          	mov    %ebx,0x10(%esp)
  401131:	8b 0d 10 40 40 00    	mov    0x404010,%ecx
  401137:	89 44 24 04          	mov    %eax,0x4(%esp)
  40113b:	89 54 24 08          	mov    %edx,0x8(%esp)
  40113f:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
  401143:	c7 04 24 04 60 40 00 	movl   $0x406004,(%esp)
  40114a:	e8 b1 2a 00 00       	call   403c00 <___getmainargs>
  40114f:	a1 20 60 40 00       	mov    0x406020,%eax
  401154:	85 c0                	test   %eax,%eax
  401156:	74 58                	je     4011b0 <___mingw_CRTStartup+0xb0>
  401158:	a3 20 40 40 00       	mov    %eax,0x404020
  40115d:	8b 15 c4 73 40 00    	mov    0x4073c4,%edx
  401163:	85 d2                	test   %edx,%edx
  401165:	0f 85 8b 00 00 00    	jne    4011f6 <___mingw_CRTStartup+0xf6>
  40116b:	83 fa e0             	cmp    $0xffffffe0,%edx
  40116e:	74 20                	je     401190 <___mingw_CRTStartup+0x90>
  401170:	a1 20 60 40 00       	mov    0x406020,%eax
  401175:	89 44 24 04          	mov    %eax,0x4(%esp)
  401179:	8b 1d c4 73 40 00    	mov    0x4073c4,%ebx
  40117f:	8b 4b 30             	mov    0x30(%ebx),%ecx
  401182:	89 0c 24             	mov    %ecx,(%esp)
  401185:	e8 66 2a 00 00       	call   403bf0 <__setmode>
  40118a:	8b 15 c4 73 40 00    	mov    0x4073c4,%edx
  401190:	83 fa c0             	cmp    $0xffffffc0,%edx
  401193:	74 1b                	je     4011b0 <___mingw_CRTStartup+0xb0>
  401195:	8b 1d 20 60 40 00    	mov    0x406020,%ebx
  40119b:	89 5c 24 04          	mov    %ebx,0x4(%esp)
  40119f:	8b 0d c4 73 40 00    	mov    0x4073c4,%ecx
  4011a5:	8b 51 50             	mov    0x50(%ecx),%edx
  4011a8:	89 14 24             	mov    %edx,(%esp)
  4011ab:	e8 40 2a 00 00       	call   403bf0 <__setmode>
  4011b0:	e8 2b 2a 00 00       	call   403be0 <___p__fmode>
  4011b5:	8b 1d 20 40 40 00    	mov    0x404020,%ebx
  4011bb:	89 18                	mov    %ebx,(%eax)
  4011bd:	e8 1e 25 00 00       	call   4036e0 <__pei386_runtime_relocator>
  4011c2:	83 e4 f0             	and    $0xfffffff0,%esp
  4011c5:	e8 f6 29 00 00       	call   403bc0 <___p__environ>
  4011ca:	8b 08                	mov    (%eax),%ecx
  4011cc:	89 4c 24 08          	mov    %ecx,0x8(%esp)
  4011d0:	8b 15 00 60 40 00    	mov    0x406000,%edx
  4011d6:	89 54 24 04          	mov    %edx,0x4(%esp)
  4011da:	a1 04 60 40 00       	mov    0x406004,%eax
  4011df:	89 04 24             	mov    %eax,(%esp)
  4011e2:	e8 d9 23 00 00       	call   4035c0 <_main>
  4011e7:	89 c3                	mov    %eax,%ebx
  4011e9:	e8 c2 29 00 00       	call   403bb0 <__cexit>
  4011ee:	89 1c 24             	mov    %ebx,(%esp)
  4011f1:	e8 ca 1f 00 00       	call   4031c0 <_ExitProcess@4>
  4011f6:	89 44 24 04          	mov    %eax,0x4(%esp)
  4011fa:	8b 15 c4 73 40 00    	mov    0x4073c4,%edx
  401200:	8b 42 10             	mov    0x10(%edx),%eax
  401203:	89 04 24             	mov    %eax,(%esp)
  401206:	e8 e5 29 00 00       	call   403bf0 <__setmode>
  40120b:	8b 15 c4 73 40 00    	mov    0x4073c4,%edx
  401211:	e9 55 ff ff ff       	jmp    40116b <___mingw_CRTStartup+0x6b>
  401216:	8d 76 00             	lea    0x0(%esi),%esi
  401219:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00401220 <_mainCRTStartup>:
  401220:	55                   	push   %ebp
  401221:	89 e5                	mov    %esp,%ebp
  401223:	83 ec 08             	sub    $0x8,%esp
  401226:	c7 04 24 01 00 00 00 	movl   $0x1,(%esp)
  40122d:	ff 15 bc 73 40 00    	call   *0x4073bc
  401233:	e8 c8 fe ff ff       	call   401100 <___mingw_CRTStartup>
  401238:	90                   	nop    
  401239:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00401240 <_WinMainCRTStartup>:
  401240:	55                   	push   %ebp
  401241:	89 e5                	mov    %esp,%ebp
  401243:	83 ec 08             	sub    $0x8,%esp
  401246:	c7 04 24 02 00 00 00 	movl   $0x2,(%esp)
  40124d:	ff 15 bc 73 40 00    	call   *0x4073bc
  401253:	e8 a8 fe ff ff       	call   401100 <___mingw_CRTStartup>
  401258:	90                   	nop    
  401259:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00401260 <_atexit>:
  401260:	55                   	push   %ebp
  401261:	8b 0d d4 73 40 00    	mov    0x4073d4,%ecx
  401267:	89 e5                	mov    %esp,%ebp
  401269:	5d                   	pop    %ebp
  40126a:	ff e1                	jmp    *%ecx
  40126c:	8d 74 26 00          	lea    0x0(%esi),%esi

00401270 <__onexit>:
  401270:	55                   	push   %ebp
  401271:	8b 0d c8 73 40 00    	mov    0x4073c8,%ecx
  401277:	89 e5                	mov    %esp,%ebp
  401279:	5d                   	pop    %ebp
  40127a:	ff e1                	jmp    *%ecx
  40127c:	90                   	nop    
  40127d:	90                   	nop    
  40127e:	90                   	nop    
  40127f:	90                   	nop    

00401280 <___do_sjlj_init>:
  401280:	55                   	push   %ebp
  401281:	89 e5                	mov    %esp,%ebp
  401283:	5d                   	pop    %ebp
  401284:	e9 57 26 00 00       	jmp    4038e0 <___w32_sharedptr_initialize>
  401289:	90                   	nop    
  40128a:	90                   	nop    
  40128b:	90                   	nop    
  40128c:	90                   	nop    
  40128d:	90                   	nop    
  40128e:	90                   	nop    
  40128f:	90                   	nop    

00401290 <_GetSetupType>:
/* FUNCTIONS ****************************************************************/

DWORD
GetSetupType(VOID)
{
  401290:	55                   	push   %ebp
  401291:	89 e5                	mov    %esp,%ebp
  401293:	53                   	push   %ebx
  401294:	83 ec 20             	sub    $0x20,%esp
  DWORD dwError;
  HKEY hKey;
  DWORD dwType;
  DWORD dwSize;
  DWORD dwSetupType;

  dwError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
  401297:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
  40129a:	50                   	push   %eax
  40129b:	6a 01                	push   $0x1
  40129d:	6a 00                	push   $0x0
  40129f:	68 00 50 40 00       	push   $0x405000
  4012a4:	68 02 00 00 80       	push   $0x80000002
  4012a9:	e8 22 22 00 00       	call   4034d0 <_RegOpenKeyExW@20>
  4012ae:	89 c3                	mov    %eax,%ebx
			 L"SYSTEM\\Setup", //TEXT("SYSTEM\\Setup"),
			 0,
			 KEY_QUERY_VALUE,
			 &hKey);
  if (dwError != ERROR_SUCCESS)
  4012b0:	83 c4 0c             	add    $0xc,%esp
    {
      return 0;
  4012b3:	31 c0                	xor    %eax,%eax
  4012b5:	85 db                	test   %ebx,%ebx
  4012b7:	74 07                	je     4012c0 <_GetSetupType+0x30>
    }

  dwSize = sizeof(DWORD);
  dwError = RegQueryValueEx (hKey,
			     L"SetupType", //TEXT("SetupType"),
			     NULL,
			     &dwType,
			     (LPBYTE)&dwSetupType,
			     &dwSize);
  RegCloseKey (hKey);
  if (dwError != ERROR_SUCCESS || dwType != REG_DWORD)
    {
      return 0;
    }

  return dwSetupType;
}
  4012b9:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  4012bc:	c9                   	leave  
  4012bd:	c3                   	ret    
  4012be:	89 f6                	mov    %esi,%esi
  4012c0:	8d 45 f4             	lea    0xfffffff4(%ebp),%eax
  4012c3:	c7 45 f4 04 00 00 00 	movl   $0x4,0xfffffff4(%ebp)
  4012ca:	53                   	push   %ebx
  4012cb:	53                   	push   %ebx
  4012cc:	50                   	push   %eax
  4012cd:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
  4012d0:	50                   	push   %eax
  4012d1:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
  4012d4:	50                   	push   %eax
  4012d5:	6a 00                	push   $0x0
  4012d7:	68 1a 50 40 00       	push   $0x40501a
  4012dc:	8b 4d f8             	mov    0xfffffff8(%ebp),%ecx
  4012df:	51                   	push   %ecx
  4012e0:	e8 fb 21 00 00       	call   4034e0 <_RegQueryValueExW@24>
  4012e5:	89 c3                	mov    %eax,%ebx
  4012e7:	52                   	push   %edx
  4012e8:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
  4012eb:	50                   	push   %eax
  4012ec:	e8 ff 21 00 00       	call   4034f0 <_RegCloseKey@4>
  4012f1:	83 c4 0c             	add    $0xc,%esp
  4012f4:	85 db                	test   %ebx,%ebx
  4012f6:	75 06                	jne    4012fe <_GetSetupType+0x6e>
  4012f8:	83 7d ec 04          	cmpl   $0x4,0xffffffec(%ebp)
  4012fc:	74 07                	je     401305 <_GetSetupType+0x75>
  4012fe:	31 c0                	xor    %eax,%eax
  401300:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  401303:	c9                   	leave  
  401304:	c3                   	ret    
  401305:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
  401308:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  40130b:	c9                   	leave  
  40130c:	c3                   	ret    
  40130d:	8d 76 00             	lea    0x0(%esi),%esi

00401310 <_SetSetupType>:


BOOL
SetSetupType (DWORD dwSetupType)
{
  401310:	55                   	push   %ebp
  401311:	89 e5                	mov    %esp,%ebp
  401313:	53                   	push   %ebx
  401314:	83 ec 10             	sub    $0x10,%esp
  DWORD dwError;
  HKEY hKey;

  dwError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
  401317:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
  40131a:	50                   	push   %eax
  40131b:	6a 01                	push   $0x1
  40131d:	6a 00                	push   $0x0
  40131f:	68 00 50 40 00       	push   $0x405000
  401324:	68 02 00 00 80       	push   $0x80000002
  401329:	e8 a2 21 00 00       	call   4034d0 <_RegOpenKeyExW@20>
  40132e:	89 c3                	mov    %eax,%ebx
			 L"SYSTEM\\Setup", //TEXT("SYSTEM\\Setup"),
			 0,
			 KEY_QUERY_VALUE,
			 &hKey);
  if (dwError != ERROR_SUCCESS)
  401330:	83 c4 0c             	add    $0xc,%esp
    {
      return FALSE;
  401333:	31 c0                	xor    %eax,%eax
  401335:	85 db                	test   %ebx,%ebx
  401337:	74 07                	je     401340 <_SetSetupType+0x30>
    }

  dwError = RegSetValueEx (hKey,
			   L"SetupType", //TEXT("SetupType"),
			   0,
			   REG_DWORD,
			   (LPBYTE)&dwSetupType,
			   sizeof(DWORD));
  RegCloseKey (hKey);
  if (dwError != ERROR_SUCCESS)
    {
      return FALSE;
    }

  return TRUE;
}
  401339:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  40133c:	c9                   	leave  
  40133d:	c3                   	ret    
  40133e:	89 f6                	mov    %esi,%esi
  401340:	50                   	push   %eax
  401341:	50                   	push   %eax
  401342:	8d 45 08             	lea    0x8(%ebp),%eax
  401345:	6a 04                	push   $0x4
  401347:	50                   	push   %eax
  401348:	6a 04                	push   $0x4
  40134a:	6a 00                	push   $0x0
  40134c:	68 1a 50 40 00       	push   $0x40501a
  401351:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
  401354:	50                   	push   %eax
  401355:	e8 a6 21 00 00       	call   403500 <_RegSetValueExW@24>
  40135a:	89 c3                	mov    %eax,%ebx
  40135c:	50                   	push   %eax
  40135d:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
  401360:	50                   	push   %eax
  401361:	e8 8a 21 00 00       	call   4034f0 <_RegCloseKey@4>
  401366:	83 c4 0c             	add    $0xc,%esp
  401369:	85 db                	test   %ebx,%ebx
  40136b:	0f 94 c0             	sete   %al
  40136e:	25 ff 00 00 00       	and    $0xff,%eax
  401373:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  401376:	c9                   	leave  
  401377:	c3                   	ret    
  401378:	90                   	nop    
  401379:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00401380 <_RunSetup>:


BOOL
RunSetup (VOID)
{
  401380:	55                   	push   %ebp
  401381:	89 e5                	mov    %esp,%ebp
  401383:	56                   	push   %esi
  401384:	53                   	push   %ebx
  401385:	81 ec 9c 04 00 00    	sub    $0x49c,%esp
  PROCESS_INFORMATION ProcessInformation;
  STARTUPINFO StartupInfo;
  WCHAR Shell[MAX_PATH];
  WCHAR CommandLine[MAX_PATH];
  BOOLEAN Result;
  DWORD dwError;
  HKEY hKey;
  DWORD dwType;
  DWORD dwSize;
  DWORD dwExitCode;

  DPRINT ("RunSetup() called\n");

  dwError = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
  40138b:	8d 85 74 fb ff ff    	lea    0xfffffb74(%ebp),%eax
  401391:	50                   	push   %eax
  401392:	6a 01                	push   $0x1
  401394:	6a 00                	push   $0x0
  401396:	68 00 50 40 00       	push   $0x405000
  40139b:	68 02 00 00 80       	push   $0x80000002
  4013a0:	e8 2b 21 00 00       	call   4034d0 <_RegOpenKeyExW@20>
			   L"SYSTEM\\Setup",
			   0,
			   KEY_QUERY_VALUE,
			   &hKey);
  if (dwError != ERROR_SUCCESS)
    {
      return FALSE;
  4013a5:	31 d2                	xor    %edx,%edx
  4013a7:	83 c4 0c             	add    $0xc,%esp
  4013aa:	85 c0                	test   %eax,%eax
  4013ac:	74 09                	je     4013b7 <_RunSetup+0x37>
    }

  dwSize = MAX_PATH;
  dwError = RegQueryValueExW (hKey,
			      L"CmdLine",
			      NULL,
			      &dwType,
			      (LPBYTE)Shell,
			      &dwSize);
  RegCloseKey (hKey);
  if (dwError != ERROR_SUCCESS)
    {
      return FALSE;
    }

  if (dwType == REG_EXPAND_SZ)
    {
      ExpandEnvironmentStringsW(Shell, CommandLine, MAX_PATH);
    }
  else if (dwType == REG_SZ)
    {
      wcscpy(CommandLine, Shell);
    }
  else
    {
      return FALSE;
    }

  DPRINT ("Winlogon: Should run '%S' now.\n", CommandLine);

  StartupInfo.cb = sizeof(StartupInfo);
  StartupInfo.lpReserved = NULL;
  StartupInfo.lpDesktop = NULL;
  StartupInfo.lpTitle = NULL;
  StartupInfo.dwFlags = 0;
  StartupInfo.cbReserved2 = 0;
  StartupInfo.lpReserved2 = 0;

  DPRINT ("Winlogon: Creating new setup process\n");

  Result = CreateProcessW (NULL,
			   CommandLine,
			   NULL,
			   NULL,
			   FALSE,
			   DETACHED_PROCESS,
			   NULL,
			   NULL,
			   &StartupInfo,
			   &ProcessInformation);
  if (!Result)
    {
      DPRINT ("Winlogon: Failed to run setup process\n");
      return FALSE;
    }

  /* Wait for process termination */
  WaitForSingleObject (ProcessInformation.hProcess, INFINITE);

  GetExitCodeProcess (ProcessInformation.hProcess, &dwExitCode);

  CloseHandle (ProcessInformation.hThread);
  CloseHandle (ProcessInformation.hProcess);

  if (dwExitCode == 0)
    {
      SetSetupType (0);
    }

  DPRINT ("Winlogon: RunSetup() done.\n");

  return TRUE;
}
  4013ae:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
  4013b1:	89 d0                	mov    %edx,%eax
  4013b3:	5b                   	pop    %ebx
  4013b4:	5e                   	pop    %esi
  4013b5:	5d                   	pop    %ebp
  4013b6:	c3                   	ret    
  4013b7:	8d 85 70 fb ff ff    	lea    0xfffffb70(%ebp),%eax
  4013bd:	8d b5 88 fd ff ff    	lea    0xfffffd88(%ebp),%esi
  4013c3:	52                   	push   %edx
  4013c4:	52                   	push   %edx
  4013c5:	50                   	push   %eax
  4013c6:	8d 85 6c fb ff ff    	lea    0xfffffb6c(%ebp),%eax
  4013cc:	56                   	push   %esi
  4013cd:	50                   	push   %eax
  4013ce:	8b 85 74 fb ff ff    	mov    0xfffffb74(%ebp),%eax
  4013d4:	6a 00                	push   $0x0
  4013d6:	c7 85 70 fb ff ff 04 	movl   $0x104,0xfffffb70(%ebp)
  4013dd:	01 00 00 
  4013e0:	68 2e 50 40 00       	push   $0x40502e
  4013e5:	50                   	push   %eax
  4013e6:	e8 f5 20 00 00       	call   4034e0 <_RegQueryValueExW@24>
  4013eb:	89 c3                	mov    %eax,%ebx
  4013ed:	50                   	push   %eax
  4013ee:	8b 85 74 fb ff ff    	mov    0xfffffb74(%ebp),%eax
  4013f4:	50                   	push   %eax
  4013f5:	e8 f6 20 00 00       	call   4034f0 <_RegCloseKey@4>
  4013fa:	31 d2                	xor    %edx,%edx
  4013fc:	83 c4 0c             	add    $0xc,%esp
  4013ff:	85 db                	test   %ebx,%ebx
  401401:	75 ab                	jne    4013ae <_RunSetup+0x2e>
  401403:	8b 85 6c fb ff ff    	mov    0xfffffb6c(%ebp),%eax
  401409:	83 f8 02             	cmp    $0x2,%eax
  40140c:	0f 84 cf 00 00 00    	je     4014e1 <_RunSetup+0x161>
  401412:	31 d2                	xor    %edx,%edx
  401414:	48                   	dec    %eax
  401415:	75 97                	jne    4013ae <_RunSetup+0x2e>
  401417:	8d 9d 78 fb ff ff    	lea    0xfffffb78(%ebp),%ebx
  40141d:	50                   	push   %eax
  40141e:	50                   	push   %eax
  40141f:	56                   	push   %esi
  401420:	53                   	push   %ebx
  401421:	e8 2a 1d 00 00       	call   403150 <_wcscpy>
  401426:	83 c4 10             	add    $0x10,%esp
  401429:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
  40142c:	56                   	push   %esi
  40142d:	56                   	push   %esi
  40142e:	50                   	push   %eax
  40142f:	8d 45 98             	lea    0xffffff98(%ebp),%eax
  401432:	50                   	push   %eax
  401433:	c7 45 98 44 00 00 00 	movl   $0x44,0xffffff98(%ebp)
  40143a:	6a 00                	push   $0x0
  40143c:	c7 45 9c 00 00 00 00 	movl   $0x0,0xffffff9c(%ebp)
  401443:	6a 00                	push   $0x0
  401445:	c7 45 a0 00 00 00 00 	movl   $0x0,0xffffffa0(%ebp)
  40144c:	6a 08                	push   $0x8
  40144e:	c7 45 a4 00 00 00 00 	movl   $0x0,0xffffffa4(%ebp)
  401455:	6a 00                	push   $0x0
  401457:	c7 45 c4 00 00 00 00 	movl   $0x0,0xffffffc4(%ebp)
  40145e:	6a 00                	push   $0x0
  401460:	66 c7 45 ca 00 00    	movw   $0x0,0xffffffca(%ebp)
  401466:	6a 00                	push   $0x0
  401468:	c7 45 cc 00 00 00 00 	movl   $0x0,0xffffffcc(%ebp)
  40146f:	53                   	push   %ebx
  401470:	6a 00                	push   $0x0
  401472:	e8 59 1d 00 00       	call   4031d0 <_CreateProcessW@40>
  401477:	5a                   	pop    %edx
  401478:	31 d2                	xor    %edx,%edx
  40147a:	59                   	pop    %ecx
  40147b:	84 c0                	test   %al,%al
  40147d:	0f 84 2b ff ff ff    	je     4013ae <_RunSetup+0x2e>
  401483:	8b 75 e8             	mov    0xffffffe8(%ebp),%esi
  401486:	50                   	push   %eax
  401487:	50                   	push   %eax
  401488:	6a ff                	push   $0xffffffff
  40148a:	56                   	push   %esi
  40148b:	e8 50 1d 00 00       	call   4031e0 <_WaitForSingleObject@8>
  401490:	8d 85 68 fb ff ff    	lea    0xfffffb68(%ebp),%eax
  401496:	8b 5d e8             	mov    0xffffffe8(%ebp),%ebx
  401499:	50                   	push   %eax
  40149a:	53                   	push   %ebx
  40149b:	e8 50 1d 00 00       	call   4031f0 <_GetExitCodeProcess@8>
  4014a0:	8b 55 ec             	mov    0xffffffec(%ebp),%edx
  4014a3:	51                   	push   %ecx
  4014a4:	52                   	push   %edx
  4014a5:	e8 56 1d 00 00       	call   403200 <_CloseHandle@4>
  4014aa:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
  4014ad:	50                   	push   %eax
  4014ae:	e8 4d 1d 00 00       	call   403200 <_CloseHandle@4>
  4014b3:	8b 85 68 fb ff ff    	mov    0xfffffb68(%ebp),%eax
  4014b9:	83 c4 0c             	add    $0xc,%esp
  4014bc:	85 c0                	test   %eax,%eax
  4014be:	74 0a                	je     4014ca <_RunSetup+0x14a>
  4014c0:	ba 01 00 00 00       	mov    $0x1,%edx
  4014c5:	e9 e4 fe ff ff       	jmp    4013ae <_RunSetup+0x2e>
  4014ca:	83 ec 0c             	sub    $0xc,%esp
  4014cd:	6a 00                	push   $0x0
  4014cf:	e8 3c fe ff ff       	call   401310 <_SetSetupType>
  4014d4:	83 c4 10             	add    $0x10,%esp
  4014d7:	ba 01 00 00 00       	mov    $0x1,%edx
  4014dc:	e9 cd fe ff ff       	jmp    4013ae <_RunSetup+0x2e>
  4014e1:	8d 9d 78 fb ff ff    	lea    0xfffffb78(%ebp),%ebx
  4014e7:	50                   	push   %eax
  4014e8:	68 04 01 00 00       	push   $0x104
  4014ed:	53                   	push   %ebx
  4014ee:	56                   	push   %esi
  4014ef:	e8 1c 1d 00 00       	call   403210 <_ExpandEnvironmentStringsW@12>
  4014f4:	58                   	pop    %eax
  4014f5:	e9 2f ff ff ff       	jmp    401429 <_RunSetup+0xa9>
  4014fa:	90                   	nop    
  4014fb:	90                   	nop    
  4014fc:	90                   	nop    
  4014fd:	90                   	nop    
  4014fe:	90                   	nop    
  4014ff:	90                   	nop    

00401500 <_PrintString>:
/* FUNCTIONS *****************************************************************/

static void
PrintString (WCHAR* fmt,...)
{
  401500:	55                   	push   %ebp
  401501:	89 e5                	mov    %esp,%ebp
  401503:	53                   	push   %ebx
  401504:	81 ec 08 04 00 00    	sub    $0x408,%esp
   WCHAR buffer[512];
   va_list ap;

   va_start(ap, fmt);
  40150a:	8d 45 0c             	lea    0xc(%ebp),%eax
   wsprintf(buffer, fmt, ap);
  40150d:	8d 9d f8 fb ff ff    	lea    0xfffffbf8(%ebp),%ebx
  401513:	50                   	push   %eax
  401514:	8b 45 08             	mov    0x8(%ebp),%eax
  401517:	50                   	push   %eax
  401518:	53                   	push   %ebx
  401519:	e8 e2 1e 00 00       	call   403400 <_wsprintfW>
   va_end(ap);

   OutputDebugString(buffer);
  40151e:	89 1c 24             	mov    %ebx,(%esp)
  401521:	e8 fa 1c 00 00       	call   403220 <_OutputDebugStringW@4>
  401526:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  401529:	c9                   	leave  
  40152a:	c3                   	ret    
  40152b:	90                   	nop    
  40152c:	8d 74 26 00          	lea    0x0(%esi),%esi

00401530 <_ShutdownComputerProc@16>:
}


INT_PTR CALLBACK
ShutdownComputerProc (HWND hwndDlg,
		      UINT uMsg,
		      WPARAM wParam,
		      LPARAM lParam)
{
  401530:	55                   	push   %ebp
  401531:	89 e5                	mov    %esp,%ebp
  401533:	53                   	push   %ebx
  401534:	50                   	push   %eax
  401535:	8b 45 0c             	mov    0xc(%ebp),%eax
  401538:	8b 5d 08             	mov    0x8(%ebp),%ebx
  switch(uMsg)
  40153b:	3d 10 01 00 00       	cmp    $0x110,%eax
  401540:	74 2e                	je     401570 <_ShutdownComputerProc@16+0x40>
  401542:	3d 11 01 00 00       	cmp    $0x111,%eax
  401547:	74 09                	je     401552 <_ShutdownComputerProc@16+0x22>
  {
    case WM_COMMAND:
    {
      switch(LOWORD(wParam))
      {
        case IDC_BTNSHTDOWNCOMPUTER:
          EndDialog(hwndDlg, IDC_BTNSHTDOWNCOMPUTER);
          break;
      }
      break;
    }
    case WM_INITDIALOG:
    {
      RemoveMenu(GetSystemMenu(hwndDlg, FALSE), SC_CLOSE, MF_BYCOMMAND);
      SetFocus(GetDlgItem(hwndDlg, IDC_BTNSHTDOWNCOMPUTER));
      break;
    }
  }
  return FALSE;
}
  401549:	31 c0                	xor    %eax,%eax
  40154b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  40154e:	c9                   	leave  
  40154f:	c2 10 00             	ret    $0x10
  401552:	66 81 7d 10 31 01    	cmpw   $0x131,0x10(%ebp)
  401558:	75 ef                	jne    401549 <_ShutdownComputerProc@16+0x19>
  40155a:	50                   	push   %eax
  40155b:	50                   	push   %eax
  40155c:	68 31 01 00 00       	push   $0x131
  401561:	53                   	push   %ebx
  401562:	e8 89 1d 00 00       	call   4032f0 <_EndDialog@8>
  401567:	59                   	pop    %ecx
  401568:	5b                   	pop    %ebx
  401569:	eb de                	jmp    401549 <_ShutdownComputerProc@16+0x19>
  40156b:	90                   	nop    
  40156c:	8d 74 26 00          	lea    0x0(%esi),%esi
  401570:	52                   	push   %edx
  401571:	6a 00                	push   $0x0
  401573:	68 60 f0 00 00       	push   $0xf060
  401578:	83 ec 0c             	sub    $0xc,%esp
  40157b:	6a 00                	push   $0x0
  40157d:	53                   	push   %ebx
  40157e:	e8 7d 1d 00 00       	call   403300 <_GetSystemMenu@8>
  401583:	83 c4 0c             	add    $0xc,%esp
  401586:	50                   	push   %eax
  401587:	e8 84 1d 00 00       	call   403310 <_RemoveMenu@12>
  40158c:	83 ec 14             	sub    $0x14,%esp
  40158f:	68 31 01 00 00       	push   $0x131
  401594:	53                   	push   %ebx
  401595:	e8 86 1d 00 00       	call   403320 <_GetDlgItem@8>
  40159a:	83 c4 0c             	add    $0xc,%esp
  40159d:	50                   	push   %eax
  40159e:	e8 8d 1d 00 00       	call   403330 <_SetFocus@4>
  4015a3:	31 c0                	xor    %eax,%eax
  4015a5:	83 c4 0c             	add    $0xc,%esp
  4015a8:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  4015ab:	c9                   	leave  
  4015ac:	c2 10 00             	ret    $0x10
  4015af:	90                   	nop    

004015b0 <_OpenRegistryKey>:

static BOOLEAN
StartServices (VOID)
{
   HANDLE ServicesInitEvent;
   BOOLEAN Result;
   STARTUPINFO StartupInfo;
   PROCESS_INFORMATION ProcessInformation;
   DWORD Count;

   /* Start the service control manager (services.exe) */   
      
   StartupInfo.cb = sizeof(StartupInfo);
   StartupInfo.lpReserved = NULL;
   StartupInfo.lpDesktop = NULL;
   StartupInfo.lpTitle = NULL;
   StartupInfo.dwFlags = 0;
   StartupInfo.cbReserved2 = 0;
   StartupInfo.lpReserved2 = 0;

#if 0   
   PrintString(L"WL: Creating new process - \"services.exe\".\n");
#endif

   Result = CreateProcess(L"services.exe",
                          NULL,
                          NULL,
                          NULL,
                          FALSE,
                          DETACHED_PROCESS,
                          NULL,
                          NULL,
                          &StartupInfo,
                          &ProcessInformation);
   if (!Result)
     {
        PrintString(L"WL: Failed to execute services\n");
        return FALSE;
     }
   
   /* wait for event creation (by SCM) for max. 20 seconds */
   for (Count = 0; Count < 20; Count++)
     {
        Sleep(1000);
   
        //DbgPrint("WL: Attempting to open event \"SvcctrlStartEvent_A3725DX\"\n");
        ServicesInitEvent = OpenEvent(EVENT_ALL_ACCESS, //SYNCHRONIZE,
                                      FALSE,
                                      L"SvcctrlStartEvent_A3725DX");
        if (ServicesInitEvent != NULL)
          {
             break;
          }
     }
   
   if (ServicesInitEvent == NULL)
     {
        DbgPrint("WL: Failed to open event \"SvcctrlStartEvent_A3725DX\"\n");
        return FALSE;
     }

   /* wait for event signalization */
   //DbgPrint("WL: Waiting forever on event handle: %x\n", ServicesInitEvent);
   WaitForSingleObject(ServicesInitEvent, INFINITE);
   //DbgPrint("WL: Closing event object \"SvcctrlStartEvent_A3725DX\"\n");
   CloseHandle(ServicesInitEvent);
   //DbgPrint("WL: StartServices() Done.\n");
      
   return TRUE;
}

#if START_LSASS
static BOOLEAN
StartLsass (VOID)
{
   HANDLE LsassInitEvent;
   BOOLEAN Result;
   STARTUPINFO StartupInfo;
   PROCESS_INFORMATION ProcessInformation;
   
   LsassInitEvent = CreateEvent(NULL,
                                TRUE,
                                FALSE,
                                L"\\LsassInitDone");
   
   if (LsassInitEvent == NULL)
     {
        DbgPrint("WL: Failed to create lsass notification event\n");
        return(FALSE);
     }
   
   /* Start the local security authority subsystem (lsass.exe) */
   
   StartupInfo.cb = sizeof(StartupInfo);
   StartupInfo.lpReserved = NULL;
   StartupInfo.lpDesktop = NULL;
   StartupInfo.lpTitle = NULL;
   StartupInfo.dwFlags = 0;
   StartupInfo.cbReserved2 = 0;
   StartupInfo.lpReserved2 = 0;
   
   Result = CreateProcess(L"lsass.exe",
                          NULL,
                          NULL,
                          NULL,
                          FALSE,
                          DETACHED_PROCESS,
                          NULL,
                          NULL,
                          &StartupInfo,
                          &ProcessInformation);
   if (!Result)
     {
        DbgPrint("WL: Failed to execute lsass\n");
        return(FALSE);
     }
   
   DPRINT("WL: Waiting for lsass\n");
   WaitForSingleObject(LsassInitEvent, INFINITE);
   CloseHandle(LsassInitEvent);
   
   return(TRUE);
}
#endif


static BOOLEAN
OpenRegistryKey (HKEY *WinLogonKey)
{
  4015b0:	55                   	push   %ebp
  4015b1:	89 e5                	mov    %esp,%ebp
  4015b3:	83 ec 14             	sub    $0x14,%esp
   return ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
  4015b6:	50                   	push   %eax
  4015b7:	6a 01                	push   $0x1
  4015b9:	6a 00                	push   $0x0
  4015bb:	68 40 50 40 00       	push   $0x405040
  4015c0:	68 02 00 00 80       	push   $0x80000002
  4015c5:	e8 06 1f 00 00       	call   4034d0 <_RegOpenKeyExW@20>
  4015ca:	83 c4 0c             	add    $0xc,%esp
  4015cd:	85 c0                	test   %eax,%eax
  4015cf:	0f 94 c0             	sete   %al
  4015d2:	25 ff 00 00 00       	and    $0xff,%eax
                                        L"SOFTWARE\\ReactOS\\Windows NT\\CurrentVersion\\WinLogon",
                                        0,
                                        KEY_QUERY_VALUE,
                                        WinLogonKey);
}
  4015d7:	c9                   	leave  
  4015d8:	c3                   	ret    
  4015d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

004015e0 <_RegisterHotKeys@0>:


static BOOLEAN StartProcess(PWCHAR ValueName)
{
   BOOL StartIt;
   HKEY WinLogonKey;
   DWORD Type;
   DWORD Size;
   DWORD StartValue;

   StartIt = TRUE;
   if (OpenRegistryKey(&WinLogonKey))
     {
	Size = sizeof(DWORD);
	if (ERROR_SUCCESS == RegQueryValueEx(WinLogonKey,
                                             ValueName,
	                                     NULL,
	                                     &Type,
	                                     (LPBYTE) &StartValue,
                                             &Size))
	   {
	   if (REG_DWORD == Type)
	     {
		StartIt = (0 != StartValue);
	     }
	   }
	RegCloseKey(WinLogonKey);
     }

   return StartIt;
}

/*
static BOOL RestartShell(void)
{
  HKEY WinLogonKey;
  DWORD Type, Size, Value;
  
  if(OpenRegistryKey(&WinLogonKey))
  {
    Size = sizeof(DWORD);
    if(ERROR_SUCCESS == RegQueryValueEx(WinLogonKey,
                                        L"AutoRestartShell",
                                        NULL,
                                        &Type,
                                        (LPBYTE)&Value,
                                        &Size))
    {
      if(Type == REG_DWORD)
      {
        RegCloseKey(WinLogonKey);
        return (Value != 0);
      }
    }
    RegCloseKey(WinLogonKey);
  }  
  return FALSE;
}
*/

VOID STDCALL
RegisterHotKeys(VOID)
{
  4015e0:	55                   	push   %ebp
  4015e1:	89 e5                	mov    %esp,%ebp
  4015e3:	50                   	push   %eax
  4015e4:	50                   	push   %eax
  RegisterHotKey(NULL, 0, MOD_ALT | MOD_CONTROL, VK_DELETE);
  4015e5:	6a 2e                	push   $0x2e
  4015e7:	6a 03                	push   $0x3
  4015e9:	6a 00                	push   $0x0
  4015eb:	6a 00                	push   $0x0
  4015ed:	e8 4e 1d 00 00       	call   403340 <_RegisterHotKey@16>
  4015f2:	c9                   	leave  
  4015f3:	c3                   	ret    
  4015f4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  4015fa:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

00401600 <_UnregisterHotKeys@0>:
}

VOID STDCALL
UnregisterHotKeys(VOID)
{
  401600:	55                   	push   %ebp
  401601:	89 e5                	mov    %esp,%ebp
  401603:	83 ec 10             	sub    $0x10,%esp
  UnregisterHotKey(NULL, 0);
  401606:	6a 00                	push   $0x0
  401608:	6a 00                	push   $0x0
  40160a:	e8 41 1d 00 00       	call   403350 <_UnregisterHotKey@8>
  40160f:	c9                   	leave  
  401610:	c3                   	ret    
  401611:	eb 0d                	jmp    401620 <_HandleHotKey@4>
  401613:	90                   	nop    
  401614:	90                   	nop    
  401615:	90                   	nop    
  401616:	90                   	nop    
  401617:	90                   	nop    
  401618:	90                   	nop    
  401619:	90                   	nop    
  40161a:	90                   	nop    
  40161b:	90                   	nop    
  40161c:	90                   	nop    
  40161d:	90                   	nop    
  40161e:	90                   	nop    
  40161f:	90                   	nop    

00401620 <_HandleHotKey@4>:
}

VOID STDCALL
HandleHotKey(MSG *Msg)
{
  401620:	55                   	push   %ebp
  401621:	89 e5                	mov    %esp,%ebp
  401623:	53                   	push   %ebx
  401624:	83 ec 6c             	sub    $0x6c,%esp
  401627:	8b 5d 08             	mov    0x8(%ebp),%ebx
  DbgPrint("HOTKEY: Got hot key (%d)\n", Msg->wParam);
  40162a:	8b 43 08             	mov    0x8(%ebx),%eax
  40162d:	50                   	push   %eax
  40162e:	68 a8 50 40 00       	push   $0x4050a8
  401633:	ff 15 d8 72 40 00    	call   *0x4072d8

  /* CTRL-ALT-DEL */
  if (Msg->wParam == 0)
  401639:	8b 4b 08             	mov    0x8(%ebx),%ecx
  40163c:	83 c4 10             	add    $0x10,%esp
  40163f:	85 c9                	test   %ecx,%ecx
  401641:	74 0d                	je     401650 <_HandleHotKey@4+0x30>
  {
    STARTUPINFO StartupInfo;
    PROCESS_INFORMATION ProcessInformation;

    StartupInfo.cb = sizeof(StartupInfo);
    StartupInfo.lpReserved = NULL;
    StartupInfo.lpDesktop = NULL;
    StartupInfo.lpTitle = NULL;
    StartupInfo.dwFlags = 0;
    StartupInfo.cbReserved2 = 0;
    StartupInfo.lpReserved2 = 0;

    CreateProcessW(
      L"taskmgr.exe",
      NULL,
      NULL,
      NULL,
      FALSE,
      CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS,
      NULL,
      NULL,
      &StartupInfo,
      &ProcessInformation);

    CloseHandle (ProcessInformation.hProcess);
    CloseHandle (ProcessInformation.hThread);
  }
}
  401643:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  401646:	c9                   	leave  
  401647:	c2 04 00             	ret    $0x4
  40164a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  401650:	8d 45 98             	lea    0xffffff98(%ebp),%eax
  401653:	c7 45 a8 44 00 00 00 	movl   $0x44,0xffffffa8(%ebp)
  40165a:	c7 45 ac 00 00 00 00 	movl   $0x0,0xffffffac(%ebp)
  401661:	c7 45 b0 00 00 00 00 	movl   $0x0,0xffffffb0(%ebp)
  401668:	c7 45 b4 00 00 00 00 	movl   $0x0,0xffffffb4(%ebp)
  40166f:	c7 45 d4 00 00 00 00 	movl   $0x0,0xffffffd4(%ebp)
  401676:	66 c7 45 da 00 00    	movw   $0x0,0xffffffda(%ebp)
  40167c:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
  401683:	52                   	push   %edx
  401684:	52                   	push   %edx
  401685:	50                   	push   %eax
  401686:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
  401689:	50                   	push   %eax
  40168a:	6a 00                	push   $0x0
  40168c:	6a 00                	push   $0x0
  40168e:	68 08 02 00 00       	push   $0x208
  401693:	6a 00                	push   $0x0
  401695:	6a 00                	push   $0x0
  401697:	6a 00                	push   $0x0
  401699:	6a 00                	push   $0x0
  40169b:	68 c2 50 40 00       	push   $0x4050c2
  4016a0:	e8 2b 1b 00 00       	call   4031d0 <_CreateProcessW@40>
  4016a5:	50                   	push   %eax
  4016a6:	8b 45 98             	mov    0xffffff98(%ebp),%eax
  4016a9:	50                   	push   %eax
  4016aa:	e8 51 1b 00 00       	call   403200 <_CloseHandle@4>
  4016af:	8b 45 9c             	mov    0xffffff9c(%ebp),%eax
  4016b2:	50                   	push   %eax
  4016b3:	e8 48 1b 00 00       	call   403200 <_CloseHandle@4>
  4016b8:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  4016bb:	83 c4 0c             	add    $0xc,%esp
  4016be:	c9                   	leave  
  4016bf:	c2 04 00             	ret    $0x4
  4016c2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
  4016c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004016d0 <_DisplayStatusMessage>:

#if SUPPORT_CONSOLESTART
static BOOL StartIntoGUI(VOID)
{
  HKEY WinLogonKey;
  DWORD Type, Size, Value;
  
  if(OpenRegistryKey(&WinLogonKey))
  {
    Size = sizeof(DWORD);
    if(ERROR_SUCCESS == RegQueryValueEx(WinLogonKey,
                                        L"StartGUI",
                                        NULL,
                                        &Type,
                                        (LPBYTE)&Value,
                                        &Size))
    {
      if(Type == REG_DWORD)
      {
        RegCloseKey(WinLogonKey);
        return (Value != 0);
      }
    }
    RegCloseKey(WinLogonKey);
  }  
  return FALSE;
}


static PWCHAR
GetUserInit (WCHAR *CommandLine)
{
   HKEY WinLogonKey;
   BOOL GotCommandLine;
   DWORD Type;
   DWORD Size;
   WCHAR Shell[_MAX_PATH];

   GotCommandLine = FALSE;
   if (OpenRegistryKey(&WinLogonKey))
     {
	Size = MAX_PATH;
	if (ERROR_SUCCESS == RegQueryValueEx(WinLogonKey,
                                         L"UserInit",
	                                     NULL,
	                                     &Type,
	                                     (LPBYTE) Shell,
                                         &Size))
	   {
	   if (REG_EXPAND_SZ == Type)
	     {
		ExpandEnvironmentStrings(Shell, CommandLine, _MAX_PATH);
		GotCommandLine = TRUE;
	     }
	   else if (REG_SZ == Type)
	     {
		wcscpy(CommandLine, Shell);
		GotCommandLine = TRUE;
	     }
	   }
	RegCloseKey(WinLogonKey);
     }

   if (! GotCommandLine)
     {
	GetSystemDirectory(CommandLine, MAX_PATH - 15);
	wcscat(CommandLine, L"\\userinit.exe");
     }

   return CommandLine;
}


static BOOL
DoLogonUser (PWCHAR Name,
	     PWCHAR Password)
{
  PROCESS_INFORMATION ProcessInformation;
  STARTUPINFO StartupInfo;
  WCHAR CommandLine[MAX_PATH];
  WCHAR CurrentDirectory[MAX_PATH];
  HANDLE hToken;
  PROFILEINFOW ProfileInfo;
  BOOL Result;
  LPVOID lpEnvironment = NULL;
  MSG Msg;

  Result = LogonUserW (Name,
		       NULL,
		       Password,
		       LOGON32_LOGON_INTERACTIVE,
		       LOGON32_PROVIDER_DEFAULT,
		       &hToken);
  if (!Result)
    {
      DbgPrint ("WL: LogonUserW() failed\n");
      RtlDestroyEnvironment (lpEnvironment);
      return FALSE;
    }

  /* Load the user profile */
  ProfileInfo.dwSize = sizeof(PROFILEINFOW);
  ProfileInfo.dwFlags = 0;
  ProfileInfo.lpUserName = Name;
  ProfileInfo.lpProfilePath = NULL;
  ProfileInfo.lpDefaultPath = NULL;
  ProfileInfo.lpServerName = NULL;
  ProfileInfo.lpPolicyPath = NULL;
  ProfileInfo.hProfile = NULL;

  if (!LoadUserProfileW (hToken,
			 &ProfileInfo))
    {
      DbgPrint ("WL: LoadUserProfileW() failed\n");
      CloseHandle (hToken);
      RtlDestroyEnvironment (lpEnvironment);
      return FALSE;
    }

  if (!CreateEnvironmentBlock (&lpEnvironment,
			       hToken,
			       TRUE))
    {
      DbgPrint ("WL: CreateEnvironmentBlock() failed\n");
      return FALSE;
    }

  if (ImpersonateLoggedOnUser(hToken))
    {
      UpdatePerUserSystemParameters(0, TRUE);
      RevertToSelf();
    }

  GetWindowsDirectoryW (CurrentDirectory, MAX_PATH);

  StartupInfo.cb = sizeof(StartupInfo);
  StartupInfo.lpReserved = NULL;
  StartupInfo.lpDesktop = NULL;
  StartupInfo.lpTitle = NULL;
  StartupInfo.dwFlags = 0;
  StartupInfo.cbReserved2 = 0;
  StartupInfo.lpReserved2 = 0;

  Result = CreateProcessAsUserW (hToken,
				 NULL,
				 GetUserInit (CommandLine),
				 NULL,
				 NULL,
				 FALSE,
				 CREATE_NEW_CONSOLE,// | CREATE_UNICODE_ENVIRONMENT,
				 lpEnvironment, // NULL,
				 CurrentDirectory,
				 &StartupInfo,
				 &ProcessInformation);
  if (!Result)
    {
      DbgPrint ("WL: Failed to execute user shell %s\n", CommandLine);
      if (ImpersonateLoggedOnUser(hToken))
        {
          UpdatePerUserSystemParameters(0, FALSE);
          RevertToSelf();
        }
      UnloadUserProfile (hToken,
			 ProfileInfo.hProfile);
      CloseHandle (hToken);
      DestroyEnvironmentBlock (lpEnvironment);
      return FALSE;
    }

  RegisterHotKeys();

  while (WaitForSingleObject (ProcessInformation.hProcess, 100) != WAIT_OBJECT_0)
  {
    if (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE))
    {
      if (Msg.message == WM_HOTKEY)
        HandleHotKey(&Msg);
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
    }
  }

  UnregisterHotKeys();

  CloseHandle (ProcessInformation.hProcess);
  CloseHandle (ProcessInformation.hThread);

  if (ImpersonateLoggedOnUser(hToken))
    {
      UpdatePerUserSystemParameters(0, FALSE);
      RevertToSelf();
    }

  /* Unload user profile */
  UnloadUserProfile (hToken,
		     ProfileInfo.hProfile);

  CloseHandle (hToken);

  RtlDestroyEnvironment (lpEnvironment);

  return TRUE;
}
#endif

int STDCALL
WinMain(HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpCmdLine,
        int nShowCmd)
{
#if SUPPORT_CONSOLESTART
//  WCHAR LoginName[255];
//  WCHAR Password[255];
#endif
#if 0
  LSA_STRING ProcessName, PackageName;
  HANDLE LsaHandle;
  LSA_OPERATIONAL_MODE Mode;
  ULONG AuthenticationPackage;
#endif

  hAppInstance = hInstance;
  
  if(!RegisterLogonProcess(GetCurrentProcessId(), TRUE))
  {
    DbgPrint("WL: Could not register logon process\n");
    NtShutdownSystem(ShutdownNoReboot);
    ExitProcess(0);
    return 0;
  }
  
#if START_LSASS
   if (StartProcess(L"StartLsass"))
     {
	if (!StartLsass())
	  {
	     DbgPrint("WL: Failed to start LSASS (0x%X)\n", GetLastError());
	  }
     }
#endif
  
  if(!(WLSession = MsGinaInit()))
  {
    DbgPrint("WL: Failed to initialize msgina.dll\n");
    NtShutdownSystem(ShutdownNoReboot);
    ExitProcess(0);
    return 0;
  }
  
  WLSession->LogonStatus = LOGON_INITIALIZING;
  
  if(!WlxCreateWindowStationAndDesktops(WLSession))
  {
    NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED, 0, 0, 0, 0, 0);
    ExitProcess(1);
    return 1;
  }
  
  /*
   * Switch to winlogon desktop
   */
  /* FIXME: Do start up in the application desktop for now. */
  SetThreadDesktop(WLSession->ApplicationDesktop);
  if(!SwitchDesktop(WLSession->ApplicationDesktop))
  {
    DbgPrint("WL: Cannot switch to Winlogon desktop (0x%X)\n", GetLastError());
  }
  
  /* Check for pending setup */
  if (GetSetupType () != 0)
  {
    DPRINT ("Winlogon: CheckForSetup() in setup mode\n");
    
    /* Run setup and reboot when done */
    RunSetup();
    
    NtShutdownSystem(ShutdownReboot);
    ExitProcess(0);
    return 0;
  }
  
#if SUPPORT_CONSOLESTART
 StartConsole = !StartIntoGUI();
#endif
 if(!InitializeSAS(WLSession))
  {
    DbgPrint("WL: Failed to initialize SAS\n");
    ExitProcess(2);
    return 2;
  }
  
  InitServices();
   
#if 0
   /* real winlogon uses "Winlogon" */
   RtlInitUnicodeString((PUNICODE_STRING)&ProcessName, L"Winlogon");
   Status = LsaRegisterLogonProcess(&ProcessName, &LsaHandle, &Mode);
   if (!NT_SUCCESS(Status))
   {
     switch(Status)
     {
       case STATUS_PORT_CONNECTION_REFUSED:
         /* FIXME - we don't have the 'SeTcbPrivilege' pivilege, so set it or call
                    LsaAddAccountRights() and try again */
         DbgPrint("WL: LsaRegisterLogonProcess() returned STATUS_PORT_CONNECTION_REFUSED\n");
         break;
       case STATUS_NAME_TOO_LONG:
         DbgPrint("WL: LsaRegisterLogonProcess() returned STATUS_NAME_TOO_LONG\n");
         break;
       default:
         DbgPrint("WL: Failed to connect to LSASS\n");
         break;
     }
     return(1);
   }
   
   RtlInitUnicodeString((PUNICODE_STRING)&PackageName, L"Kerberos");
   Status = LsaLookupAuthenticationPackage(LsaHandle, &PackageName, &AuthenticationPackage);
   if (!NT_SUCCESS(Status))
   {
     LsaDeregisterLogonProcess(LsaHandle);
     DbgPrint("WL: Failed to lookup authentication package\n");
     return(1);
   }
#endif
   
   /* FIXME: Create a window class and associate a Winlogon
    *        window procedure with it.
    *        Register SAS with the window.
    *        Register for logoff notification
    */
   
   /* Main loop */
#if 0
   /* Display login prompt */
   WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
                LoginPrompt,
                strlen(LoginPrompt),  // wcslen(LoginPrompt),
                &Result,
                NULL);
   i = 0;
   do
     {
       ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
                   &LoginName[i],
                   1,
                   &Result,
                   NULL);
       i++;
     } while (LoginName[i - 1] != '\n');
   LoginName[i - 1] = 0;
       
   /* Display password prompt */
   WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
                PasswordPrompt,
                strlen(PasswordPrompt),  // wcslen(PasswordPrompt),
                &Result,
                NULL);
   i = 0;
   do
     {
       ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
                   &Password[i],
                   1,
                   &Result,
                   NULL);
       i++;
     } while (Password[i - 1] != '\n');
   Password[i - 1] =0;
#endif

#if SUPPORT_CONSOLESTART
 if(StartConsole)
 {
//   if (! DoLogonUser(LoginName, Password))
   if (! DoLogonUser(L"Administrator", L"Secret"))
     {
     }
   
   NtShutdownSystem(ShutdownNoReboot);
   ExitProcess(0);
 }
 else
 {
#endif

   RegisterHotKeys();
  
   SessionLoop(WLSession);
  
   UnregisterHotKeys();

   /* FIXME - Flush disks and registry, ... */
   
   if(WLSession->LogonStatus == LOGON_SHUTDOWN)
   {
     /* FIXME - only show this dialog if it's a shutdown and the computer doesn't support APM */
     switch(DialogBox(hInstance, MAKEINTRESOURCE(IDD_SHUTDOWNCOMPUTER), 0, ShutdownComputerProc))
     {
       case IDC_BTNSHTDOWNCOMPUTER:
         NtShutdownSystem(ShutdownReboot);
         break;
       default:
         NtShutdownSystem(ShutdownNoReboot);
         break;
     }
     ExitProcess(0);
   }
   else
   {
     DbgPrint("WL: LogonStatus != LOGON_SHUTDOWN!!!\n");
     ExitProcess(0);
   }
#if SUPPORT_CONSOLESTART
 }
#endif
   
   return 0;
}

BOOL
DisplayStatusMessage(PWLSESSION Session, HDESK hDesktop, DWORD dwOptions, PWSTR pTitle, PWSTR pMessage)
{
  4016d0:	55                   	push   %ebp
  4016d1:	89 e5                	mov    %esp,%ebp
  4016d3:	50                   	push   %eax
  4016d4:	50                   	push   %eax
  if(Session->SuppressStatus)
  {
    return TRUE;
  4016d5:	b8 01 00 00 00       	mov    $0x1,%eax
  4016da:	8b 4d 08             	mov    0x8(%ebp),%ecx
  4016dd:	8b 55 18             	mov    0x18(%ebp),%edx
  4016e0:	83 79 5c 00          	cmpl   $0x0,0x5c(%ecx)
  4016e4:	75 23                	jne    401709 <_DisplayStatusMessage+0x39>
  }
  
  #if SUPPORT_CONSOLESTART
  if(StartConsole)
  4016e6:	a1 00 40 40 00       	mov    0x404000,%eax
  4016eb:	85 c0                	test   %eax,%eax
  4016ed:	74 21                	je     401710 <_DisplayStatusMessage+0x40>
  {
    if(pMessage)
  4016ef:	85 d2                	test   %edx,%edx
  4016f1:	74 11                	je     401704 <_DisplayStatusMessage+0x34>
    {
      DbgPrint("WL-Status: %ws\n", pMessage);
  4016f3:	50                   	push   %eax
  4016f4:	50                   	push   %eax
  4016f5:	52                   	push   %edx
  4016f6:	68 da 50 40 00       	push   $0x4050da
  4016fb:	ff 15 d8 72 40 00    	call   *0x4072d8
  401701:	83 c4 10             	add    $0x10,%esp
    }
    return TRUE;
  401704:	b8 01 00 00 00       	mov    $0x1,%eax
  }
  #endif
  
  return Session->MsGina.Functions.WlxDisplayStatusMessage(Session->MsGina.Context, hDesktop, dwOptions, pTitle, pMessage);
}
  401709:	c9                   	leave  
  40170a:	c3                   	ret    
  40170b:	90                   	nop    
  40170c:	8d 74 26 00          	lea    0x0(%esi),%esi
  401710:	83 ec 0c             	sub    $0xc,%esp
  401713:	52                   	push   %edx
  401714:	8b 45 14             	mov    0x14(%ebp),%eax
  401717:	50                   	push   %eax
  401718:	8b 45 10             	mov    0x10(%ebp),%eax
  40171b:	50                   	push   %eax
  40171c:	8b 45 0c             	mov    0xc(%ebp),%eax
  40171f:	50                   	push   %eax
  401720:	8b 41 4c             	mov    0x4c(%ecx),%eax
  401723:	50                   	push   %eax
  401724:	ff 51 40             	call   *0x40(%ecx)
  401727:	c9                   	leave  
  401728:	c3                   	ret    
  401729:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00401730 <_InitServices>:

BOOL
InitServices(void)
{
  401730:	55                   	push   %ebp
  401731:	89 e5                	mov    %esp,%ebp
  401733:	56                   	push   %esi
  401734:	53                   	push   %ebx
  401735:	81 ec 70 02 00 00    	sub    $0x270,%esp
  WCHAR StatusMsg[256];

  LoadString(hAppInstance, IDS_REACTOSISSTARTINGUP, StatusMsg, 256 * sizeof(WCHAR));
  40173b:	8d 9d f8 fd ff ff    	lea    0xfffffdf8(%ebp),%ebx
  401741:	8b 0d 70 60 40 00    	mov    0x406070,%ecx
  401747:	68 00 02 00 00       	push   $0x200
  40174c:	53                   	push   %ebx
  40174d:	68 9a 06 00 00       	push   $0x69a
  401752:	51                   	push   %ecx
  401753:	e8 08 1c 00 00       	call   403360 <_LoadStringW@16>
  DisplayStatusMessage(WLSession, WLSession->ApplicationDesktop, 0, NULL, StatusMsg);
  401758:	a1 10 60 40 00       	mov    0x406010,%eax
  40175d:	83 ec 0c             	sub    $0xc,%esp
  401760:	53                   	push   %ebx
  401761:	6a 00                	push   $0x0
  401763:	6a 00                	push   $0x0
  401765:	bb 01 00 00 00       	mov    $0x1,%ebx
  40176a:	8b 50 70             	mov    0x70(%eax),%edx
  40176d:	52                   	push   %edx
  40176e:	50                   	push   %eax
  40176f:	e8 5c ff ff ff       	call   4016d0 <_DisplayStatusMessage>
  401774:	83 c4 20             	add    $0x20,%esp
  401777:	8d 85 94 fd ff ff    	lea    0xfffffd94(%ebp),%eax
  40177d:	e8 2e fe ff ff       	call   4015b0 <_OpenRegistryKey>
  401782:	84 c0                	test   %al,%al
  401784:	75 10                	jne    401796 <_InitServices+0x66>
  401786:	85 db                	test   %ebx,%ebx
  401788:	75 69                	jne    4017f3 <_InitServices+0xc3>

  /* start system processes (services.exe & lsass.exe) */
  if(StartProcess(L"StartServices"))
  {
	if(!StartServices())
    {
      DbgPrint("WL: Failed to start Services (0x%X)\n", GetLastError());
    }
  }
  
  return TRUE;
}
  40178a:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
  40178d:	b8 01 00 00 00       	mov    $0x1,%eax
  401792:	5b                   	pop    %ebx
  401793:	5e                   	pop    %esi
  401794:	5d                   	pop    %ebp
  401795:	c3                   	ret    
  401796:	50                   	push   %eax
  401797:	50                   	push   %eax
  401798:	8d 85 90 fd ff ff    	lea    0xfffffd90(%ebp),%eax
  40179e:	50                   	push   %eax
  40179f:	8d 85 8c fd ff ff    	lea    0xfffffd8c(%ebp),%eax
  4017a5:	50                   	push   %eax
  4017a6:	8b b5 94 fd ff ff    	mov    0xfffffd94(%ebp),%esi
  4017ac:	8d 85 88 fd ff ff    	lea    0xfffffd88(%ebp),%eax
  4017b2:	c7 85 90 fd ff ff 04 	movl   $0x4,0xfffffd90(%ebp)
  4017b9:	00 00 00 
  4017bc:	50                   	push   %eax
  4017bd:	6a 00                	push   $0x0
  4017bf:	68 ea 50 40 00       	push   $0x4050ea
  4017c4:	56                   	push   %esi
  4017c5:	e8 16 1d 00 00       	call   4034e0 <_RegQueryValueExW@24>
  4017ca:	5a                   	pop    %edx
  4017cb:	85 c0                	test   %eax,%eax
  4017cd:	59                   	pop    %ecx
  4017ce:	75 0d                	jne    4017dd <_InitServices+0xad>
  4017d0:	83 bd 88 fd ff ff 04 	cmpl   $0x4,0xfffffd88(%ebp)
  4017d7:	0f 84 28 01 00 00    	je     401905 <_InitServices+0x1d5>
  4017dd:	83 ec 0c             	sub    $0xc,%esp
  4017e0:	8b b5 94 fd ff ff    	mov    0xfffffd94(%ebp),%esi
  4017e6:	56                   	push   %esi
  4017e7:	e8 04 1d 00 00       	call   4034f0 <_RegCloseKey@4>
  4017ec:	83 c4 0c             	add    $0xc,%esp
  4017ef:	85 db                	test   %ebx,%ebx
  4017f1:	74 97                	je     40178a <_InitServices+0x5a>
  4017f3:	8d 85 98 fd ff ff    	lea    0xfffffd98(%ebp),%eax
  4017f9:	51                   	push   %ecx
  4017fa:	51                   	push   %ecx
  4017fb:	50                   	push   %eax
  4017fc:	8d 85 a8 fd ff ff    	lea    0xfffffda8(%ebp),%eax
  401802:	50                   	push   %eax
  401803:	c7 85 a8 fd ff ff 44 	movl   $0x44,0xfffffda8(%ebp)
  40180a:	00 00 00 
  40180d:	6a 00                	push   $0x0
  40180f:	c7 85 ac fd ff ff 00 	movl   $0x0,0xfffffdac(%ebp)
  401816:	00 00 00 
  401819:	6a 00                	push   $0x0
  40181b:	c7 85 b0 fd ff ff 00 	movl   $0x0,0xfffffdb0(%ebp)
  401822:	00 00 00 
  401825:	6a 08                	push   $0x8
  401827:	c7 85 b4 fd ff ff 00 	movl   $0x0,0xfffffdb4(%ebp)
  40182e:	00 00 00 
  401831:	6a 00                	push   $0x0
  401833:	c7 85 d4 fd ff ff 00 	movl   $0x0,0xfffffdd4(%ebp)
  40183a:	00 00 00 
  40183d:	6a 00                	push   $0x0
  40183f:	66 c7 85 da fd ff ff 	movw   $0x0,0xfffffdda(%ebp)
  401846:	00 00 
  401848:	6a 00                	push   $0x0
  40184a:	c7 85 dc fd ff ff 00 	movl   $0x0,0xfffffddc(%ebp)
  401851:	00 00 00 
  401854:	6a 00                	push   $0x0
  401856:	68 06 51 40 00       	push   $0x405106
  40185b:	e8 70 19 00 00       	call   4031d0 <_CreateProcessW@40>
  401860:	5e                   	pop    %esi
  401861:	31 f6                	xor    %esi,%esi
  401863:	5a                   	pop    %edx
  401864:	84 c0                	test   %al,%al
  401866:	75 0e                	jne    401876 <_InitServices+0x146>
  401868:	e9 84 00 00 00       	jmp    4018f1 <_InitServices+0x1c1>
  40186d:	8d 76 00             	lea    0x0(%esi),%esi
  401870:	46                   	inc    %esi
  401871:	83 fe 13             	cmp    $0x13,%esi
  401874:	77 66                	ja     4018dc <_InitServices+0x1ac>
  401876:	83 ec 0c             	sub    $0xc,%esp
  401879:	68 e8 03 00 00       	push   $0x3e8
  40187e:	e8 ad 19 00 00       	call   403230 <_Sleep@4>
  401883:	59                   	pop    %ecx
  401884:	5b                   	pop    %ebx
  401885:	68 20 51 40 00       	push   $0x405120
  40188a:	6a 00                	push   $0x0
  40188c:	68 03 00 1f 00       	push   $0x1f0003
  401891:	e8 aa 19 00 00       	call   403240 <_OpenEventW@12>
  401896:	5a                   	pop    %edx
  401897:	89 c3                	mov    %eax,%ebx
  401899:	85 c0                	test   %eax,%eax
  40189b:	74 d3                	je     401870 <_InitServices+0x140>
  40189d:	50                   	push   %eax
  40189e:	50                   	push   %eax
  40189f:	6a ff                	push   $0xffffffff
  4018a1:	53                   	push   %ebx
  4018a2:	e8 39 19 00 00       	call   4031e0 <_WaitForSingleObject@8>
  4018a7:	56                   	push   %esi
  4018a8:	53                   	push   %ebx
  4018a9:	e8 52 19 00 00       	call   403200 <_CloseHandle@4>
  4018ae:	b8 01 00 00 00       	mov    $0x1,%eax
  4018b3:	83 c4 0c             	add    $0xc,%esp
  4018b6:	85 c0                	test   %eax,%eax
  4018b8:	0f 85 cc fe ff ff    	jne    40178a <_InitServices+0x5a>
  4018be:	83 ec 10             	sub    $0x10,%esp
  4018c1:	e8 8a 19 00 00       	call   403250 <_GetLastError@0>
  4018c6:	5a                   	pop    %edx
  4018c7:	59                   	pop    %ecx
  4018c8:	50                   	push   %eax
  4018c9:	68 54 51 40 00       	push   $0x405154
  4018ce:	ff 15 d8 72 40 00    	call   *0x4072d8
  4018d4:	83 c4 10             	add    $0x10,%esp
  4018d7:	e9 ae fe ff ff       	jmp    40178a <_InitServices+0x5a>
  4018dc:	83 ec 0c             	sub    $0xc,%esp
  4018df:	68 7c 51 40 00       	push   $0x40517c
  4018e4:	ff 15 d8 72 40 00    	call   *0x4072d8
  4018ea:	83 c4 10             	add    $0x10,%esp
  4018ed:	31 c0                	xor    %eax,%eax
  4018ef:	eb c5                	jmp    4018b6 <_InitServices+0x186>
  4018f1:	83 ec 0c             	sub    $0xc,%esp
  4018f4:	68 b4 51 40 00       	push   $0x4051b4
  4018f9:	e8 02 fc ff ff       	call   401500 <_PrintString>
  4018fe:	83 c4 10             	add    $0x10,%esp
  401901:	31 c0                	xor    %eax,%eax
  401903:	eb b1                	jmp    4018b6 <_InitServices+0x186>
  401905:	8b 85 8c fd ff ff    	mov    0xfffffd8c(%ebp),%eax
  40190b:	85 c0                	test   %eax,%eax
  40190d:	0f 95 c0             	setne  %al
  401910:	31 db                	xor    %ebx,%ebx
  401912:	88 c3                	mov    %al,%bl
  401914:	e9 c4 fe ff ff       	jmp    4017dd <_InitServices+0xad>
  401919:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00401920 <_DoLogin>:

DWORD
DoLogin(PWLSESSION Session)
{
  401920:	55                   	push   %ebp
  401921:	89 e5                	mov    %esp,%ebp
  401923:	83 ec 28             	sub    $0x28,%esp
  DWORD WlxAction, Options;
  WLX_MPR_NOTIFY_INFO MprNotifyInfo;
  PWLX_PROFILE_V2_0 Profile;
  PSID LogonSid = NULL;
  HANDLE Token;
  
  /* FIXME - Create a Logon Sid
  if(!(LogonSid = CreateUserLogonSid(NULL)))
  {
    return WLX_SAS_ACTION_NONE;
  }
  */
  
  Options = 0;
  WlxAction = Session->MsGina.Functions.WlxLoggedOutSAS(Session->MsGina.Context,
  401926:	8d 45 e4             	lea    0xffffffe4(%ebp),%eax
  401929:	8b 55 08             	mov    0x8(%ebp),%edx
  40192c:	50                   	push   %eax
  40192d:	8d 45 e8             	lea    0xffffffe8(%ebp),%eax
  401930:	50                   	push   %eax
  401931:	8d 45 e0             	lea    0xffffffe0(%ebp),%eax
  401934:	50                   	push   %eax
  401935:	8d 45 dc             	lea    0xffffffdc(%ebp),%eax
  401938:	50                   	push   %eax
  401939:	8d 82 80 00 00 00    	lea    0x80(%edx),%eax
  40193f:	6a 00                	push   $0x0
  401941:	50                   	push   %eax
  401942:	8b 42 54             	mov    0x54(%edx),%eax
  401945:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
  40194c:	50                   	push   %eax
  40194d:	8b 42 4c             	mov    0x4c(%edx),%eax
  401950:	50                   	push   %eax
  401951:	ff 52 10             	call   *0x10(%edx)
                                                        Session->SASAction,
                                                        &Session->LogonId,
                                                        LogonSid,
                                                        &Options,
                                                        &Token,
                                                        &MprNotifyInfo,
                                                        (PVOID*)&Profile);
  
  return WlxAction;
}
  401954:	c9                   	leave  
  401955:	c3                   	ret    
  401956:	8d 76 00             	lea    0x0(%esi),%esi
  401959:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00401960 <_SessionLoop>:

void
SessionLoop(PWLSESSION Session)
{
  401960:	55                   	push   %ebp
  401961:	89 e5                	mov    %esp,%ebp
  401963:	57                   	push   %edi
  401964:	56                   	push   %esi
  401965:	53                   	push   %ebx
  401966:	83 ec 2c             	sub    $0x2c,%esp
  401969:	8d 7d c8             	lea    0xffffffc8(%ebp),%edi
  40196c:	8b 75 08             	mov    0x8(%ebp),%esi
  //WCHAR StatusMsg[256];
 // HANDLE hShutdownEvent;
  DWORD WlxAction;
  MSG Msg;
  
  WlxAction = WLX_SAS_ACTION_NONE;
  Session->LogonStatus = LOGON_NONE;
  40196f:	c7 46 58 02 00 00 00 	movl   $0x2,0x58(%esi)
  while(WlxAction == WLX_SAS_ACTION_NONE)
  {
    RemoveStatusMessage(Session);
  401976:	83 ec 0c             	sub    $0xc,%esp
  401979:	8b 46 4c             	mov    0x4c(%esi),%eax
  40197c:	50                   	push   %eax
  40197d:	ff 56 48             	call   *0x48(%esi)
    if(Session->LogonStatus == LOGON_NONE)
  401980:	83 c4 0c             	add    $0xc,%esp
  401983:	83 7e 58 02          	cmpl   $0x2,0x58(%esi)
  401987:	74 49                	je     4019d2 <_SessionLoop+0x72>
  401989:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
    {
      Session->LogonStatus = LOGON_SHOWINGLOGON;
      /* we're ready to display a logon window,
         don't timeout dialogboxes here */
      WlxSetTimeout(Session->MsGina.Context, 0);
      Session->SuppressStatus = TRUE;
      /* tell msgina to show a window telling the user one can logon */
      #if SUPPORT_CONSOLESTART
      if(!StartConsole)
      #endif
      DisplaySASNotice(Session);
      Session->SuppressStatus = FALSE;
      
      if(Session->SASAction == WLX_SAS_ACTION_LOGOFF)
      {
        /* the system wants to log off here */
        Session->LogonStatus = LOGON_SHUTDOWN;
        break;
      }
    }
    
    WlxAction = DoLogin(Session);
  401990:	83 ec 0c             	sub    $0xc,%esp
  401993:	56                   	push   %esi
  401994:	e8 87 ff ff ff       	call   401920 <_DoLogin>
    if(WlxAction == WLX_SAS_ACTION_LOGOFF)
  401999:	83 c4 10             	add    $0x10,%esp
  40199c:	89 c3                	mov    %eax,%ebx
  40199e:	83 f8 04             	cmp    $0x4,%eax
  4019a1:	0f 84 c3 00 00 00    	je     401a6a <_SessionLoop+0x10a>
    {
      /* the user doesn't want to login, instead pressed cancel
         we should display the window again so one can logon again */
      /* FIXME - disconnect any connections in case we did a remote logon */
      DbgPrint("WL: DoLogin failed\n");
      WlxAction = WLX_SAS_ACTION_NONE;
    }
    if(WlxAction == WLX_SAS_ACTION_NONE)
  4019a7:	83 f8 02             	cmp    $0x2,%eax
  4019aa:	0f 84 cb 00 00 00    	je     401a7b <_SessionLoop+0x11b>
    {
      if(Session->SASAction == WLX_SAS_ACTION_LOGOFF)
      {
        /* system is about to shut down, leave the main loop */
        Session->LogonStatus = LOGON_SHUTDOWN;
        break;
      }
      Session->LogonStatus = LOGON_NONE;
      continue;
    }
    
    /* FIXME - don't leave the loop when suspending the computer */
    if(WLX_SUSPENDING(WlxAction))
  4019b0:	8d 40 f4             	lea    0xfffffff4(%eax),%eax
  4019b3:	83 f8 02             	cmp    $0x2,%eax
  4019b6:	77 60                	ja     401a18 <_SessionLoop+0xb8>
  4019b8:	83 ec 0c             	sub    $0xc,%esp
    {
      Session->LogonStatus = LOGON_NONE;
  4019bb:	c7 46 58 02 00 00 00 	movl   $0x2,0x58(%esi)
  4019c2:	8b 46 4c             	mov    0x4c(%esi),%eax
  4019c5:	50                   	push   %eax
  4019c6:	ff 56 48             	call   *0x48(%esi)
  4019c9:	83 c4 0c             	add    $0xc,%esp
  4019cc:	83 7e 58 02          	cmpl   $0x2,0x58(%esi)
  4019d0:	75 be                	jne    401990 <_SessionLoop+0x30>
  4019d2:	c7 46 58 03 00 00 00 	movl   $0x3,0x58(%esi)
  4019d9:	53                   	push   %ebx
  4019da:	53                   	push   %ebx
  4019db:	6a 00                	push   $0x0
  4019dd:	8b 4e 4c             	mov    0x4c(%esi),%ecx
  4019e0:	51                   	push   %ecx
  4019e1:	e8 ea 07 00 00       	call   4021d0 <_WlxSetTimeout@8>
  4019e6:	c7 46 5c 01 00 00 00 	movl   $0x1,0x5c(%esi)
  4019ed:	58                   	pop    %eax
  4019ee:	a1 00 40 40 00       	mov    0x404000,%eax
  4019f3:	5a                   	pop    %edx
  4019f4:	85 c0                	test   %eax,%eax
  4019f6:	0f 84 99 00 00 00    	je     401a95 <_SessionLoop+0x135>
  4019fc:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
  401a03:	83 7e 54 04          	cmpl   $0x4,0x54(%esi)
  401a07:	75 87                	jne    401990 <_SessionLoop+0x30>
      WlxAction = WLX_SAS_ACTION_NONE;
      /* don't leave the loop */
      continue;
    }
    
    if(WLX_SHUTTINGDOWN(WlxAction))
    {
      Session->LogonStatus = LOGON_SHUTDOWN;
  401a09:	c7 46 58 09 00 00 00 	movl   $0x9,0x58(%esi)
      /* leave the loop here */
      break;
    }
    
    /* Message loop for the SAS window */
    while(GetMessage(&Msg, 0, 0, 0))
    {
      if (Msg.message == WM_HOTKEY)
        HandleHotKey(&Msg);
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
  401a10:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  401a13:	5b                   	pop    %ebx
  401a14:	5e                   	pop    %esi
  401a15:	5f                   	pop    %edi
  401a16:	5d                   	pop    %ebp
  401a17:	c3                   	ret    
  401a18:	83 fb 05             	cmp    $0x5,%ebx
  401a1b:	0f 94 c2             	sete   %dl
  401a1e:	83 fb 0a             	cmp    $0xa,%ebx
  401a21:	0f 94 c0             	sete   %al
  401a24:	09 d0                	or     %edx,%eax
  401a26:	a8 01                	test   $0x1,%al
  401a28:	75 df                	jne    401a09 <_SessionLoop+0xa9>
  401a2a:	83 fb 0b             	cmp    $0xb,%ebx
  401a2d:	75 14                	jne    401a43 <_SessionLoop+0xe3>
  401a2f:	eb d8                	jmp    401a09 <_SessionLoop+0xa9>
  401a31:	83 ec 0c             	sub    $0xc,%esp
  401a34:	57                   	push   %edi
  401a35:	e8 36 19 00 00       	call   403370 <_TranslateMessage@4>
  401a3a:	57                   	push   %edi
  401a3b:	e8 40 19 00 00       	call   403380 <_DispatchMessageW@4>
  401a40:	83 c4 0c             	add    $0xc,%esp
  401a43:	6a 00                	push   $0x0
  401a45:	6a 00                	push   $0x0
  401a47:	6a 00                	push   $0x0
  401a49:	57                   	push   %edi
  401a4a:	e8 41 19 00 00       	call   403390 <_GetMessageW@16>
  401a4f:	85 c0                	test   %eax,%eax
  401a51:	74 34                	je     401a87 <_SessionLoop+0x127>
  401a53:	81 7d cc 12 03 00 00 	cmpl   $0x312,0xffffffcc(%ebp)
  401a5a:	75 d5                	jne    401a31 <_SessionLoop+0xd1>
  401a5c:	83 ec 0c             	sub    $0xc,%esp
  401a5f:	57                   	push   %edi
  401a60:	e8 bb fb ff ff       	call   401620 <_HandleHotKey@4>
  401a65:	83 c4 0c             	add    $0xc,%esp
  401a68:	eb c7                	jmp    401a31 <_SessionLoop+0xd1>
  401a6a:	83 ec 0c             	sub    $0xc,%esp
  401a6d:	68 f4 51 40 00       	push   $0x4051f4
  401a72:	ff 15 d8 72 40 00    	call   *0x4072d8
  401a78:	83 c4 10             	add    $0x10,%esp
  401a7b:	83 7e 54 04          	cmpl   $0x4,0x54(%esi)
  401a7f:	0f 85 33 ff ff ff    	jne    4019b8 <_SessionLoop+0x58>
  401a85:	eb 82                	jmp    401a09 <_SessionLoop+0xa9>
  401a87:	83 fb 02             	cmp    $0x2,%ebx
  401a8a:	0f 84 e6 fe ff ff    	je     401976 <_SessionLoop+0x16>
  401a90:	e9 7b ff ff ff       	jmp    401a10 <_SessionLoop+0xb0>
  401a95:	83 ec 0c             	sub    $0xc,%esp
  401a98:	8b 46 4c             	mov    0x4c(%esi),%eax
  401a9b:	50                   	push   %eax
  401a9c:	ff 56 0c             	call   *0xc(%esi)
  401a9f:	83 c4 0c             	add    $0xc,%esp
  401aa2:	e9 55 ff ff ff       	jmp    4019fc <_SessionLoop+0x9c>
  401aa7:	89 f6                	mov    %esi,%esi
  401aa9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00401ab0 <_WinMain@16>:
  401ab0:	55                   	push   %ebp
  401ab1:	89 e5                	mov    %esp,%ebp
  401ab3:	57                   	push   %edi
  401ab4:	56                   	push   %esi
  401ab5:	53                   	push   %ebx
  401ab6:	81 ec 14 07 00 00    	sub    $0x714,%esp
  401abc:	8b 5d 08             	mov    0x8(%ebp),%ebx
  401abf:	6a 01                	push   $0x1
  401ac1:	89 1d 70 60 40 00    	mov    %ebx,0x406070
  401ac7:	56                   	push   %esi
  401ac8:	e8 93 17 00 00       	call   403260 <_GetCurrentProcessId@0>
  401acd:	89 04 24             	mov    %eax,(%esp)
  401ad0:	e8 cb 18 00 00       	call   4033a0 <_RegisterLogonProcess@8>
  401ad5:	5a                   	pop    %edx
  401ad6:	85 c0                	test   %eax,%eax
  401ad8:	59                   	pop    %ecx
  401ad9:	0f 84 c7 01 00 00    	je     401ca6 <_WinMain@16+0x1f6>
  401adf:	e8 2c 0f 00 00       	call   402a10 <_MsGinaInit>
  401ae4:	a3 10 60 40 00       	mov    %eax,0x406010
  401ae9:	85 c0                	test   %eax,%eax
  401aeb:	0f 84 d2 01 00 00    	je     401cc3 <_WinMain@16+0x213>
  401af1:	83 ec 0c             	sub    $0xc,%esp
  401af4:	c7 40 58 01 00 00 00 	movl   $0x1,0x58(%eax)
  401afb:	50                   	push   %eax
  401afc:	e8 9f 0f 00 00       	call   402aa0 <_WlxCreateWindowStationAndDesktops>
  401b01:	83 c4 10             	add    $0x10,%esp
  401b04:	85 c0                	test   %eax,%eax
  401b06:	0f 84 c1 01 00 00    	je     401ccd <_WinMain@16+0x21d>
  401b0c:	a1 10 60 40 00       	mov    0x406010,%eax
  401b11:	83 ec 0c             	sub    $0xc,%esp
  401b14:	8b 78 70             	mov    0x70(%eax),%edi
  401b17:	57                   	push   %edi
  401b18:	e8 93 18 00 00       	call   4033b0 <_SetThreadDesktop@4>
  401b1d:	a1 10 60 40 00       	mov    0x406010,%eax
  401b22:	8b 70 70             	mov    0x70(%eax),%esi
  401b25:	56                   	push   %esi
  401b26:	e8 95 18 00 00       	call   4033c0 <_SwitchDesktop@4>
  401b2b:	83 c4 0c             	add    $0xc,%esp
  401b2e:	85 c0                	test   %eax,%eax
  401b30:	0f 84 1a 01 00 00    	je     401c50 <_WinMain@16+0x1a0>
  401b36:	e8 55 f7 ff ff       	call   401290 <_GetSetupType>
  401b3b:	85 c0                	test   %eax,%eax
  401b3d:	0f 85 a8 01 00 00    	jne    401ceb <_WinMain@16+0x23b>
  401b43:	8d 85 14 f9 ff ff    	lea    0xfffff914(%ebp),%eax
  401b49:	e8 62 fa ff ff       	call   4015b0 <_OpenRegistryKey>
  401b4e:	84 c0                	test   %al,%al
  401b50:	0f 85 9e 00 00 00    	jne    401bf4 <_WinMain@16+0x144>
  401b56:	31 c0                	xor    %eax,%eax
  401b58:	85 c0                	test   %eax,%eax
  401b5a:	8b 3d 10 60 40 00    	mov    0x406010,%edi
  401b60:	0f 94 c0             	sete   %al
  401b63:	83 ec 0c             	sub    $0xc,%esp
  401b66:	25 ff 00 00 00       	and    $0xff,%eax
  401b6b:	a3 00 40 40 00       	mov    %eax,0x404000
  401b70:	57                   	push   %edi
  401b71:	e8 ba 14 00 00       	call   403030 <_InitializeSAS>
  401b76:	83 c4 10             	add    $0x10,%esp
  401b79:	85 c0                	test   %eax,%eax
  401b7b:	0f 84 76 01 00 00    	je     401cf7 <_WinMain@16+0x247>
  401b81:	e8 aa fb ff ff       	call   401730 <_InitServices>
  401b86:	8b 35 00 40 40 00    	mov    0x404000,%esi
  401b8c:	85 f6                	test   %esi,%esi
  401b8e:	0f 85 7d 01 00 00    	jne    401d11 <_WinMain@16+0x261>
  401b94:	e8 47 fa ff ff       	call   4015e0 <_RegisterHotKeys@0>
  401b99:	83 ec 0c             	sub    $0xc,%esp
  401b9c:	a1 10 60 40 00       	mov    0x406010,%eax
  401ba1:	50                   	push   %eax
  401ba2:	e8 b9 fd ff ff       	call   401960 <_SessionLoop>
  401ba7:	e8 54 fa ff ff       	call   401600 <_UnregisterHotKeys@0>
  401bac:	a1 10 60 40 00       	mov    0x406010,%eax
  401bb1:	83 c4 10             	add    $0x10,%esp
  401bb4:	83 78 58 09          	cmpl   $0x9,0x58(%eax)
  401bb8:	0f 85 ac 01 00 00    	jne    401d6a <_WinMain@16+0x2ba>
  401bbe:	83 ec 0c             	sub    $0xc,%esp
  401bc1:	6a 00                	push   $0x0
  401bc3:	68 30 15 40 00       	push   $0x401530
  401bc8:	6a 00                	push   $0x0
  401bca:	68 2c 01 00 00       	push   $0x12c
  401bcf:	53                   	push   %ebx
  401bd0:	e8 fb 17 00 00       	call   4033d0 <_DialogBoxParamW@20>
  401bd5:	83 c4 0c             	add    $0xc,%esp
  401bd8:	3d 31 01 00 00       	cmp    $0x131,%eax
  401bdd:	0f 84 8d 00 00 00    	je     401c70 <_WinMain@16+0x1c0>
  401be3:	83 ec 0c             	sub    $0xc,%esp
  401be6:	6a 00                	push   $0x0
  401be8:	e8 83 15 00 00       	call   403170 <_NtShutdownSystem@4>
  401bed:	6a 00                	push   $0x0
  401bef:	e8 cc 15 00 00       	call   4031c0 <_ExitProcess@4>
  401bf4:	8d 85 10 f9 ff ff    	lea    0xfffff910(%ebp),%eax
  401bfa:	57                   	push   %edi
  401bfb:	57                   	push   %edi
  401bfc:	50                   	push   %eax
  401bfd:	8d 85 0c f9 ff ff    	lea    0xfffff90c(%ebp),%eax
  401c03:	50                   	push   %eax
  401c04:	8b b5 14 f9 ff ff    	mov    0xfffff914(%ebp),%esi
  401c0a:	8d 85 08 f9 ff ff    	lea    0xfffff908(%ebp),%eax
  401c10:	c7 85 10 f9 ff ff 04 	movl   $0x4,0xfffff910(%ebp)
  401c17:	00 00 00 
  401c1a:	50                   	push   %eax
  401c1b:	6a 00                	push   $0x0
  401c1d:	68 08 52 40 00       	push   $0x405208
  401c22:	56                   	push   %esi
  401c23:	e8 b8 18 00 00       	call   4034e0 <_RegQueryValueExW@24>
  401c28:	5a                   	pop    %edx
  401c29:	85 c0                	test   %eax,%eax
  401c2b:	59                   	pop    %ecx
  401c2c:	75 09                	jne    401c37 <_WinMain@16+0x187>
  401c2e:	83 bd 08 f9 ff ff 04 	cmpl   $0x4,0xfffff908(%ebp)
  401c35:	74 48                	je     401c7f <_WinMain@16+0x1cf>
  401c37:	83 ec 0c             	sub    $0xc,%esp
  401c3a:	8b 85 14 f9 ff ff    	mov    0xfffff914(%ebp),%eax
  401c40:	50                   	push   %eax
  401c41:	e8 aa 18 00 00       	call   4034f0 <_RegCloseKey@4>
  401c46:	83 c4 0c             	add    $0xc,%esp
  401c49:	e9 08 ff ff ff       	jmp    401b56 <_WinMain@16+0xa6>
  401c4e:	89 f6                	mov    %esi,%esi
  401c50:	83 ec 10             	sub    $0x10,%esp
  401c53:	e8 f8 15 00 00       	call   403250 <_GetLastError@0>
  401c58:	5a                   	pop    %edx
  401c59:	59                   	pop    %ecx
  401c5a:	50                   	push   %eax
  401c5b:	68 1c 52 40 00       	push   $0x40521c
  401c60:	ff 15 d8 72 40 00    	call   *0x4072d8
  401c66:	83 c4 10             	add    $0x10,%esp
  401c69:	e9 c8 fe ff ff       	jmp    401b36 <_WinMain@16+0x86>
  401c6e:	89 f6                	mov    %esi,%esi
  401c70:	83 ec 0c             	sub    $0xc,%esp
  401c73:	6a 01                	push   $0x1
  401c75:	e8 f6 14 00 00       	call   403170 <_NtShutdownSystem@4>
  401c7a:	e9 6e ff ff ff       	jmp    401bed <_WinMain@16+0x13d>
  401c7f:	83 ec 0c             	sub    $0xc,%esp
  401c82:	8b 85 14 f9 ff ff    	mov    0xfffff914(%ebp),%eax
  401c88:	50                   	push   %eax
  401c89:	e8 62 18 00 00       	call   4034f0 <_RegCloseKey@4>
  401c8e:	8b 85 0c f9 ff ff    	mov    0xfffff90c(%ebp),%eax
  401c94:	83 c4 0c             	add    $0xc,%esp
  401c97:	85 c0                	test   %eax,%eax
  401c99:	0f 95 c0             	setne  %al
  401c9c:	25 ff 00 00 00       	and    $0xff,%eax
  401ca1:	e9 b2 fe ff ff       	jmp    401b58 <_WinMain@16+0xa8>
  401ca6:	83 ec 0c             	sub    $0xc,%esp
  401ca9:	68 4c 52 40 00       	push   $0x40524c
  401cae:	ff 15 d8 72 40 00    	call   *0x4072d8
  401cb4:	58                   	pop    %eax
  401cb5:	6a 00                	push   $0x0
  401cb7:	e8 b4 14 00 00       	call   403170 <_NtShutdownSystem@4>
  401cbc:	6a 00                	push   $0x0
  401cbe:	e8 fd 14 00 00       	call   4031c0 <_ExitProcess@4>
  401cc3:	83 ec 0c             	sub    $0xc,%esp
  401cc6:	68 74 52 40 00       	push   $0x405274
  401ccb:	eb e1                	jmp    401cae <_WinMain@16+0x1fe>
  401ccd:	50                   	push   %eax
  401cce:	50                   	push   %eax
  401ccf:	6a 00                	push   $0x0
  401cd1:	6a 00                	push   $0x0
  401cd3:	6a 00                	push   $0x0
  401cd5:	6a 00                	push   $0x0
  401cd7:	6a 00                	push   $0x0
  401cd9:	68 1a 02 00 c0       	push   $0xc000021a
  401cde:	e8 9d 14 00 00       	call   403180 <_NtRaiseHardError@24>
  401ce3:	50                   	push   %eax
  401ce4:	6a 01                	push   $0x1
  401ce6:	e8 d5 14 00 00       	call   4031c0 <_ExitProcess@4>
  401ceb:	e8 90 f6 ff ff       	call   401380 <_RunSetup>
  401cf0:	83 ec 0c             	sub    $0xc,%esp
  401cf3:	6a 01                	push   $0x1
  401cf5:	eb c0                	jmp    401cb7 <_WinMain@16+0x207>
  401cf7:	83 ec 0c             	sub    $0xc,%esp
  401cfa:	68 99 52 40 00       	push   $0x405299
  401cff:	ff 15 d8 72 40 00    	call   *0x4072d8
  401d05:	c7 04 24 02 00 00 00 	movl   $0x2,(%esp)
  401d0c:	e8 af 14 00 00       	call   4031c0 <_ExitProcess@4>
  401d11:	8d 85 04 f9 ff ff    	lea    0xfffff904(%ebp),%eax
  401d17:	c7 85 00 f9 ff ff 00 	movl   $0x0,0xfffff900(%ebp)
  401d1e:	00 00 00 
  401d21:	53                   	push   %ebx
  401d22:	53                   	push   %ebx
  401d23:	50                   	push   %eax
  401d24:	6a 00                	push   $0x0
  401d26:	6a 02                	push   $0x2
  401d28:	68 b8 52 40 00       	push   $0x4052b8
  401d2d:	6a 00                	push   $0x0
  401d2f:	68 c6 52 40 00       	push   $0x4052c6
  401d34:	e8 d7 17 00 00       	call   403510 <_LogonUserW@24>
  401d39:	5a                   	pop    %edx
  401d3a:	85 c0                	test   %eax,%eax
  401d3c:	59                   	pop    %ecx
  401d3d:	75 41                	jne    401d80 <_WinMain@16+0x2d0>
  401d3f:	83 ec 0c             	sub    $0xc,%esp
  401d42:	68 e2 52 40 00       	push   $0x4052e2
  401d47:	ff 15 d8 72 40 00    	call   *0x4072d8
  401d4d:	83 c4 10             	add    $0x10,%esp
  401d50:	83 ec 0c             	sub    $0xc,%esp
  401d53:	8b 85 00 f9 ff ff    	mov    0xfffff900(%ebp),%eax
  401d59:	50                   	push   %eax
  401d5a:	e8 31 14 00 00       	call   403190 <_RtlDestroyEnvironment@4>
  401d5f:	83 c4 0c             	add    $0xc,%esp
  401d62:	83 ec 0c             	sub    $0xc,%esp
  401d65:	e9 4b ff ff ff       	jmp    401cb5 <_WinMain@16+0x205>
  401d6a:	83 ec 0c             	sub    $0xc,%esp
  401d6d:	68 fc 52 40 00       	push   $0x4052fc
  401d72:	ff 15 d8 72 40 00    	call   *0x4072d8
  401d78:	58                   	pop    %eax
  401d79:	6a 00                	push   $0x0
  401d7b:	e9 6f fe ff ff       	jmp    401bef <_WinMain@16+0x13f>
  401d80:	50                   	push   %eax
  401d81:	50                   	push   %eax
  401d82:	8d 85 48 fb ff ff    	lea    0xfffffb48(%ebp),%eax
  401d88:	50                   	push   %eax
  401d89:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  401d8f:	c7 85 48 fb ff ff 20 	movl   $0x20,0xfffffb48(%ebp)
  401d96:	00 00 00 
  401d99:	c7 85 4c fb ff ff 00 	movl   $0x0,0xfffffb4c(%ebp)
  401da0:	00 00 00 
  401da3:	c7 85 50 fb ff ff c6 	movl   $0x4052c6,0xfffffb50(%ebp)
  401daa:	52 40 00 
  401dad:	c7 85 54 fb ff ff 00 	movl   $0x0,0xfffffb54(%ebp)
  401db4:	00 00 00 
  401db7:	c7 85 58 fb ff ff 00 	movl   $0x0,0xfffffb58(%ebp)
  401dbe:	00 00 00 
  401dc1:	c7 85 5c fb ff ff 00 	movl   $0x0,0xfffffb5c(%ebp)
  401dc8:	00 00 00 
  401dcb:	c7 85 60 fb ff ff 00 	movl   $0x0,0xfffffb60(%ebp)
  401dd2:	00 00 00 
  401dd5:	c7 85 64 fb ff ff 00 	movl   $0x0,0xfffffb64(%ebp)
  401ddc:	00 00 00 
  401ddf:	50                   	push   %eax
  401de0:	e8 9b 17 00 00       	call   403580 <_LoadUserProfileW@8>
  401de5:	5e                   	pop    %esi
  401de6:	85 c0                	test   %eax,%eax
  401de8:	5f                   	pop    %edi
  401de9:	75 28                	jne    401e13 <_WinMain@16+0x363>
  401deb:	83 ec 0c             	sub    $0xc,%esp
  401dee:	68 24 53 40 00       	push   $0x405324
  401df3:	ff 15 d8 72 40 00    	call   *0x4072d8
  401df9:	83 c4 10             	add    $0x10,%esp
  401dfc:	83 ec 0c             	sub    $0xc,%esp
  401dff:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  401e05:	50                   	push   %eax
  401e06:	e8 f5 13 00 00       	call   403200 <_CloseHandle@4>
  401e0b:	83 c4 0c             	add    $0xc,%esp
  401e0e:	e9 3d ff ff ff       	jmp    401d50 <_WinMain@16+0x2a0>
  401e13:	8b 8d 04 f9 ff ff    	mov    0xfffff904(%ebp),%ecx
  401e19:	8d 85 00 f9 ff ff    	lea    0xfffff900(%ebp),%eax
  401e1f:	53                   	push   %ebx
  401e20:	6a 01                	push   $0x1
  401e22:	51                   	push   %ecx
  401e23:	50                   	push   %eax
  401e24:	e8 67 17 00 00       	call   403590 <_CreateEnvironmentBlock@12>
  401e29:	5a                   	pop    %edx
  401e2a:	85 c0                	test   %eax,%eax
  401e2c:	75 19                	jne    401e47 <_WinMain@16+0x397>
  401e2e:	83 ec 0c             	sub    $0xc,%esp
  401e31:	68 44 53 40 00       	push   $0x405344
  401e36:	ff 15 d8 72 40 00    	call   *0x4072d8
  401e3c:	83 c4 10             	add    $0x10,%esp
  401e3f:	83 ec 0c             	sub    $0xc,%esp
  401e42:	e9 6e fe ff ff       	jmp    401cb5 <_WinMain@16+0x205>
  401e47:	83 ec 0c             	sub    $0xc,%esp
  401e4a:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  401e50:	50                   	push   %eax
  401e51:	e8 ca 16 00 00       	call   403520 <_ImpersonateLoggedOnUser@4>
  401e56:	83 c4 0c             	add    $0xc,%esp
  401e59:	85 c0                	test   %eax,%eax
  401e5b:	74 12                	je     401e6f <_WinMain@16+0x3bf>
  401e5d:	57                   	push   %edi
  401e5e:	57                   	push   %edi
  401e5f:	6a 01                	push   $0x1
  401e61:	6a 00                	push   $0x0
  401e63:	e8 78 15 00 00       	call   4033e0 <_UpdatePerUserSystemParameters@8>
  401e68:	5b                   	pop    %ebx
  401e69:	5e                   	pop    %esi
  401e6a:	e8 c1 16 00 00       	call   403530 <_RevertToSelf@0>
  401e6f:	8d bd 68 fb ff ff    	lea    0xfffffb68(%ebp),%edi
  401e75:	51                   	push   %ecx
  401e76:	51                   	push   %ecx
  401e77:	68 04 01 00 00       	push   $0x104
  401e7c:	57                   	push   %edi
  401e7d:	e8 ee 13 00 00       	call   403270 <_GetWindowsDirectoryW@8>
  401e82:	c7 45 88 44 00 00 00 	movl   $0x44,0xffffff88(%ebp)
  401e89:	58                   	pop    %eax
  401e8a:	8d 85 fc f8 ff ff    	lea    0xfffff8fc(%ebp),%eax
  401e90:	5a                   	pop    %edx
  401e91:	c7 45 8c 00 00 00 00 	movl   $0x0,0xffffff8c(%ebp)
  401e98:	c7 45 90 00 00 00 00 	movl   $0x0,0xffffff90(%ebp)
  401e9f:	c7 45 94 00 00 00 00 	movl   $0x0,0xffffff94(%ebp)
  401ea6:	c7 45 b4 00 00 00 00 	movl   $0x0,0xffffffb4(%ebp)
  401ead:	66 c7 45 ba 00 00    	movw   $0x0,0xffffffba(%ebp)
  401eb3:	c7 45 bc 00 00 00 00 	movl   $0x0,0xffffffbc(%ebp)
  401eba:	e8 f1 f6 ff ff       	call   4015b0 <_OpenRegistryKey>
  401ebf:	31 db                	xor    %ebx,%ebx
  401ec1:	84 c0                	test   %al,%al
  401ec3:	0f 85 90 01 00 00    	jne    402059 <_WinMain@16+0x5a9>
  401ec9:	50                   	push   %eax
  401eca:	50                   	push   %eax
  401ecb:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  401ed1:	68 f5 00 00 00       	push   $0xf5
  401ed6:	50                   	push   %eax
  401ed7:	e8 a4 13 00 00       	call   403280 <_GetSystemDirectoryW@8>
  401edc:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  401ee2:	68 6a 53 40 00       	push   $0x40536a
  401ee7:	50                   	push   %eax
  401ee8:	e8 b3 12 00 00       	call   4031a0 <_wcscat>
  401eed:	83 c4 10             	add    $0x10,%esp
  401ef0:	8d 45 d8             	lea    0xffffffd8(%ebp),%eax
  401ef3:	56                   	push   %esi
  401ef4:	50                   	push   %eax
  401ef5:	8d 45 88             	lea    0xffffff88(%ebp),%eax
  401ef8:	8b 9d 00 f9 ff ff    	mov    0xfffff900(%ebp),%ebx
  401efe:	50                   	push   %eax
  401eff:	8b 8d 04 f9 ff ff    	mov    0xfffff904(%ebp),%ecx
  401f05:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  401f0b:	57                   	push   %edi
  401f0c:	53                   	push   %ebx
  401f0d:	6a 10                	push   $0x10
  401f0f:	6a 00                	push   $0x0
  401f11:	6a 00                	push   $0x0
  401f13:	6a 00                	push   $0x0
  401f15:	50                   	push   %eax
  401f16:	6a 00                	push   $0x0
  401f18:	51                   	push   %ecx
  401f19:	e8 22 16 00 00       	call   403540 <_CreateProcessAsUserW@44>
  401f1e:	5a                   	pop    %edx
  401f1f:	85 c0                	test   %eax,%eax
  401f21:	75 70                	jne    401f93 <_WinMain@16+0x4e3>
  401f23:	50                   	push   %eax
  401f24:	50                   	push   %eax
  401f25:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  401f2b:	50                   	push   %eax
  401f2c:	68 88 53 40 00       	push   $0x405388
  401f31:	ff 15 d8 72 40 00    	call   *0x4072d8
  401f37:	5f                   	pop    %edi
  401f38:	8b b5 04 f9 ff ff    	mov    0xfffff904(%ebp),%esi
  401f3e:	56                   	push   %esi
  401f3f:	e8 dc 15 00 00       	call   403520 <_ImpersonateLoggedOnUser@4>
  401f44:	83 c4 0c             	add    $0xc,%esp
  401f47:	85 c0                	test   %eax,%eax
  401f49:	74 12                	je     401f5d <_WinMain@16+0x4ad>
  401f4b:	53                   	push   %ebx
  401f4c:	53                   	push   %ebx
  401f4d:	6a 00                	push   $0x0
  401f4f:	6a 00                	push   $0x0
  401f51:	e8 8a 14 00 00       	call   4033e0 <_UpdatePerUserSystemParameters@8>
  401f56:	5a                   	pop    %edx
  401f57:	59                   	pop    %ecx
  401f58:	e8 d3 15 00 00       	call   403530 <_RevertToSelf@0>
  401f5d:	50                   	push   %eax
  401f5e:	50                   	push   %eax
  401f5f:	8b 85 64 fb ff ff    	mov    0xfffffb64(%ebp),%eax
  401f65:	50                   	push   %eax
  401f66:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  401f6c:	50                   	push   %eax
  401f6d:	e8 2e 16 00 00       	call   4035a0 <_UnloadUserProfile@8>
  401f72:	50                   	push   %eax
  401f73:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  401f79:	50                   	push   %eax
  401f7a:	e8 81 12 00 00       	call   403200 <_CloseHandle@4>
  401f7f:	8b 85 00 f9 ff ff    	mov    0xfffff900(%ebp),%eax
  401f85:	50                   	push   %eax
  401f86:	e8 25 16 00 00       	call   4035b0 <_DestroyEnvironmentBlock@4>
  401f8b:	83 c4 0c             	add    $0xc,%esp
  401f8e:	e9 cf fd ff ff       	jmp    401d62 <_WinMain@16+0x2b2>
  401f93:	e8 48 f6 ff ff       	call   4015e0 <_RegisterHotKeys@0>
  401f98:	8d 9d 28 fb ff ff    	lea    0xfffffb28(%ebp),%ebx
  401f9e:	8b 75 d8             	mov    0xffffffd8(%ebp),%esi
  401fa1:	57                   	push   %edi
  401fa2:	57                   	push   %edi
  401fa3:	6a 64                	push   $0x64
  401fa5:	56                   	push   %esi
  401fa6:	e8 35 12 00 00       	call   4031e0 <_WaitForSingleObject@8>
  401fab:	5a                   	pop    %edx
  401fac:	85 c0                	test   %eax,%eax
  401fae:	59                   	pop    %ecx
  401faf:	74 4d                	je     401ffe <_WinMain@16+0x54e>
  401fb1:	83 ec 0c             	sub    $0xc,%esp
  401fb4:	6a 01                	push   $0x1
  401fb6:	6a 00                	push   $0x0
  401fb8:	6a 00                	push   $0x0
  401fba:	6a 00                	push   $0x0
  401fbc:	53                   	push   %ebx
  401fbd:	e8 2e 14 00 00       	call   4033f0 <_PeekMessageW@20>
  401fc2:	83 c4 0c             	add    $0xc,%esp
  401fc5:	85 c0                	test   %eax,%eax
  401fc7:	74 d5                	je     401f9e <_WinMain@16+0x4ee>
  401fc9:	81 bd 2c fb ff ff 12 	cmpl   $0x312,0xfffffb2c(%ebp)
  401fd0:	03 00 00 
  401fd3:	0f 84 e7 00 00 00    	je     4020c0 <_WinMain@16+0x610>
  401fd9:	83 ec 0c             	sub    $0xc,%esp
  401fdc:	53                   	push   %ebx
  401fdd:	e8 8e 13 00 00       	call   403370 <_TranslateMessage@4>
  401fe2:	53                   	push   %ebx
  401fe3:	e8 98 13 00 00       	call   403380 <_DispatchMessageW@4>
  401fe8:	83 c4 0c             	add    $0xc,%esp
  401feb:	8b 75 d8             	mov    0xffffffd8(%ebp),%esi
  401fee:	57                   	push   %edi
  401fef:	57                   	push   %edi
  401ff0:	6a 64                	push   $0x64
  401ff2:	56                   	push   %esi
  401ff3:	e8 e8 11 00 00       	call   4031e0 <_WaitForSingleObject@8>
  401ff8:	5a                   	pop    %edx
  401ff9:	85 c0                	test   %eax,%eax
  401ffb:	59                   	pop    %ecx
  401ffc:	75 b3                	jne    401fb1 <_WinMain@16+0x501>
  401ffe:	e8 fd f5 ff ff       	call   401600 <_UnregisterHotKeys@0>
  402003:	83 ec 0c             	sub    $0xc,%esp
  402006:	8b 45 d8             	mov    0xffffffd8(%ebp),%eax
  402009:	50                   	push   %eax
  40200a:	e8 f1 11 00 00       	call   403200 <_CloseHandle@4>
  40200f:	8b 45 dc             	mov    0xffffffdc(%ebp),%eax
  402012:	50                   	push   %eax
  402013:	e8 e8 11 00 00       	call   403200 <_CloseHandle@4>
  402018:	8b 85 04 f9 ff ff    	mov    0xfffff904(%ebp),%eax
  40201e:	50                   	push   %eax
  40201f:	e8 fc 14 00 00       	call   403520 <_ImpersonateLoggedOnUser@4>
  402024:	83 c4 0c             	add    $0xc,%esp
  402027:	85 c0                	test   %eax,%eax
  402029:	74 12                	je     40203d <_WinMain@16+0x58d>
  40202b:	50                   	push   %eax
  40202c:	50                   	push   %eax
  40202d:	6a 00                	push   $0x0
  40202f:	6a 00                	push   $0x0
  402031:	e8 aa 13 00 00       	call   4033e0 <_UpdatePerUserSystemParameters@8>
  402036:	5f                   	pop    %edi
  402037:	58                   	pop    %eax
  402038:	e8 f3 14 00 00       	call   403530 <_RevertToSelf@0>
  40203d:	8b 9d 64 fb ff ff    	mov    0xfffffb64(%ebp),%ebx
  402043:	8b 8d 04 f9 ff ff    	mov    0xfffff904(%ebp),%ecx
  402049:	56                   	push   %esi
  40204a:	56                   	push   %esi
  40204b:	53                   	push   %ebx
  40204c:	51                   	push   %ecx
  40204d:	e8 4e 15 00 00       	call   4035a0 <_UnloadUserProfile@8>
  402052:	58                   	pop    %eax
  402053:	5a                   	pop    %edx
  402054:	e9 a3 fd ff ff       	jmp    401dfc <_WinMain@16+0x34c>
  402059:	50                   	push   %eax
  40205a:	50                   	push   %eax
  40205b:	8d 85 f8 f8 ff ff    	lea    0xfffff8f8(%ebp),%eax
  402061:	50                   	push   %eax
  402062:	8d b5 18 f9 ff ff    	lea    0xfffff918(%ebp),%esi
  402068:	8d 85 f4 f8 ff ff    	lea    0xfffff8f4(%ebp),%eax
  40206e:	56                   	push   %esi
  40206f:	50                   	push   %eax
  402070:	8b 85 fc f8 ff ff    	mov    0xfffff8fc(%ebp),%eax
  402076:	6a 00                	push   $0x0
  402078:	c7 85 f8 f8 ff ff 04 	movl   $0x104,0xfffff8f8(%ebp)
  40207f:	01 00 00 
  402082:	68 ae 53 40 00       	push   $0x4053ae
  402087:	50                   	push   %eax
  402088:	e8 53 14 00 00       	call   4034e0 <_RegQueryValueExW@24>
  40208d:	5a                   	pop    %edx
  40208e:	85 c0                	test   %eax,%eax
  402090:	59                   	pop    %ecx
  402091:	75 0e                	jne    4020a1 <_WinMain@16+0x5f1>
  402093:	8b 85 f4 f8 ff ff    	mov    0xfffff8f4(%ebp),%eax
  402099:	83 f8 02             	cmp    $0x2,%eax
  40209c:	74 4c                	je     4020ea <_WinMain@16+0x63a>
  40209e:	48                   	dec    %eax
  40209f:	74 30                	je     4020d1 <_WinMain@16+0x621>
  4020a1:	83 ec 0c             	sub    $0xc,%esp
  4020a4:	8b 85 fc f8 ff ff    	mov    0xfffff8fc(%ebp),%eax
  4020aa:	50                   	push   %eax
  4020ab:	e8 40 14 00 00       	call   4034f0 <_RegCloseKey@4>
  4020b0:	83 c4 0c             	add    $0xc,%esp
  4020b3:	85 db                	test   %ebx,%ebx
  4020b5:	0f 85 35 fe ff ff    	jne    401ef0 <_WinMain@16+0x440>
  4020bb:	e9 09 fe ff ff       	jmp    401ec9 <_WinMain@16+0x419>
  4020c0:	83 ec 0c             	sub    $0xc,%esp
  4020c3:	53                   	push   %ebx
  4020c4:	e8 57 f5 ff ff       	call   401620 <_HandleHotKey@4>
  4020c9:	83 c4 0c             	add    $0xc,%esp
  4020cc:	e9 08 ff ff ff       	jmp    401fd9 <_WinMain@16+0x529>
  4020d1:	50                   	push   %eax
  4020d2:	50                   	push   %eax
  4020d3:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  4020d9:	56                   	push   %esi
  4020da:	50                   	push   %eax
  4020db:	e8 70 10 00 00       	call   403150 <_wcscpy>
  4020e0:	bb 01 00 00 00       	mov    $0x1,%ebx
  4020e5:	83 c4 10             	add    $0x10,%esp
  4020e8:	eb b7                	jmp    4020a1 <_WinMain@16+0x5f1>
  4020ea:	50                   	push   %eax
  4020eb:	8d 85 78 fd ff ff    	lea    0xfffffd78(%ebp),%eax
  4020f1:	68 04 01 00 00       	push   $0x104
  4020f6:	50                   	push   %eax
  4020f7:	56                   	push   %esi
  4020f8:	e8 13 11 00 00       	call   403210 <_ExpandEnvironmentStringsW@12>
  4020fd:	b3 01                	mov    $0x1,%bl
  4020ff:	58                   	pop    %eax
  402100:	eb 9f                	jmp    4020a1 <_WinMain@16+0x5f1>
  402102:	90                   	nop    
  402103:	90                   	nop    
  402104:	90                   	nop    
  402105:	90                   	nop    
  402106:	90                   	nop    
  402107:	90                   	nop    
  402108:	90                   	nop    
  402109:	90                   	nop    
  40210a:	90                   	nop    
  40210b:	90                   	nop    
  40210c:	90                   	nop    
  40210d:	90                   	nop    
  40210e:	90                   	nop    
  40210f:	90                   	nop    

00402110 <_WlxSetOption@16>:
  DWORD Option,
  ULONG_PTR Value,
  ULONG_PTR* OldValue
)
{
  402110:	55                   	push   %ebp
  402111:	89 e5                	mov    %esp,%ebp
  402113:	56                   	push   %esi
  402114:	53                   	push   %ebx
  402115:	8b 4d 08             	mov    0x8(%ebp),%ecx
  402118:	8b 75 10             	mov    0x10(%ebp),%esi
  PWLSESSION Session = (PWLSESSION)hWlx;
  
  if(Session || !Value)
  40211b:	85 c9                	test   %ecx,%ecx
  40211d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
  402120:	0f 95 c2             	setne  %dl
  402123:	85 f6                	test   %esi,%esi
  402125:	0f 94 c0             	sete   %al
  402128:	09 d0                	or     %edx,%eax
  40212a:	a8 01                	test   $0x1,%al
  40212c:	74 0e                	je     40213c <_WlxSetOption@16+0x2c>
  {
    switch(Option)
  40212e:	83 fb 02             	cmp    $0x2,%ebx
  402131:	74 1d                	je     402150 <_WlxSetOption@16+0x40>
  402133:	76 0f                	jbe    402144 <_WlxSetOption@16+0x34>
    {
      case WLX_OPTION_USE_CTRL_ALT_DEL:
        return TRUE;
      case WLX_OPTION_CONTEXT_POINTER:
      {
        *OldValue = (ULONG_PTR)Session->MsGina.Context;
        Session->MsGina.Context = (PVOID)Value;
        return TRUE;
      }    
      case WLX_OPTION_USE_SMART_CARD:
        return FALSE;
  402135:	31 c0                	xor    %eax,%eax
  402137:	83 fb 03             	cmp    $0x3,%ebx
  40213a:	74 02                	je     40213e <_WlxSetOption@16+0x2e>
    }
  }
  
  return FALSE;
  40213c:	31 c0                	xor    %eax,%eax
}
  40213e:	5b                   	pop    %ebx
  40213f:	5e                   	pop    %esi
  402140:	5d                   	pop    %ebp
  402141:	c2 10 00             	ret    $0x10
  402144:	b8 01 00 00 00       	mov    $0x1,%eax
  402149:	4b                   	dec    %ebx
  40214a:	eb ee                	jmp    40213a <_WlxSetOption@16+0x2a>
  40214c:	8d 74 26 00          	lea    0x0(%esi),%esi
  402150:	8b 45 14             	mov    0x14(%ebp),%eax
  402153:	8b 51 4c             	mov    0x4c(%ecx),%edx
  402156:	89 71 4c             	mov    %esi,0x4c(%ecx)
  402159:	89 10                	mov    %edx,(%eax)
  40215b:	b8 01 00 00 00       	mov    $0x1,%eax
  402160:	5b                   	pop    %ebx
  402161:	5e                   	pop    %esi
  402162:	5d                   	pop    %ebp
  402163:	c2 10 00             	ret    $0x10
  402166:	8d 76 00             	lea    0x0(%esi),%esi
  402169:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402170 <_WlxUseCtrlAltDel@4>:
  402170:	55                   	push   %ebp
  402171:	89 e5                	mov    %esp,%ebp
  402173:	6a 00                	push   $0x0
  402175:	6a 01                	push   $0x1
  402177:	6a 01                	push   $0x1
  402179:	8b 45 08             	mov    0x8(%ebp),%eax
  40217c:	50                   	push   %eax
  40217d:	e8 8e ff ff ff       	call   402110 <_WlxSetOption@16>
  402182:	c9                   	leave  
  402183:	c2 04 00             	ret    $0x4
  402186:	8d 76 00             	lea    0x0(%esi),%esi
  402189:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402190 <_WlxSetContextPointer@8>:
  402190:	55                   	push   %ebp
  402191:	89 e5                	mov    %esp,%ebp
  402193:	6a 00                	push   $0x0
  402195:	8b 4d 0c             	mov    0xc(%ebp),%ecx
  402198:	8b 55 08             	mov    0x8(%ebp),%edx
  40219b:	51                   	push   %ecx
  40219c:	6a 02                	push   $0x2
  40219e:	52                   	push   %edx
  40219f:	e8 6c ff ff ff       	call   402110 <_WlxSetOption@16>
  4021a4:	c9                   	leave  
  4021a5:	c2 08 00             	ret    $0x8
  4021a8:	90                   	nop    
  4021a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

004021b0 <_WlxSasNotify@8>:
  4021b0:	55                   	push   %ebp
  4021b1:	89 e5                	mov    %esp,%ebp
  4021b3:	83 ec 10             	sub    $0x10,%esp
  4021b6:	8b 45 0c             	mov    0xc(%ebp),%eax
  4021b9:	50                   	push   %eax
  4021ba:	8b 45 08             	mov    0x8(%ebp),%eax
  4021bd:	50                   	push   %eax
  4021be:	e8 dd 09 00 00       	call   402ba0 <_DispatchSAS>
  4021c3:	c9                   	leave  
  4021c4:	c2 08 00             	ret    $0x8
  4021c7:	89 f6                	mov    %esi,%esi
  4021c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004021d0 <_WlxSetTimeout@8>:
  4021d0:	55                   	push   %ebp
  4021d1:	31 c0                	xor    %eax,%eax
  4021d3:	89 e5                	mov    %esp,%ebp
  4021d5:	5d                   	pop    %ebp
  4021d6:	c2 08 00             	ret    $0x8
  4021d9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

004021e0 <_WlxAssignShellProtection@16>:
  4021e0:	55                   	push   %ebp
  4021e1:	89 e5                	mov    %esp,%ebp
  4021e3:	50                   	push   %eax
  4021e4:	50                   	push   %eax
  4021e5:	6a 59                	push   $0x59
  4021e7:	68 45 54 40 00       	push   $0x405445
  4021ec:	68 2c 54 40 00       	push   $0x40542c
  4021f1:	68 4c 54 40 00       	push   $0x40544c
  4021f6:	ff 15 d8 72 40 00    	call   *0x4072d8
  4021fc:	31 c0                	xor    %eax,%eax
  4021fe:	c9                   	leave  
  4021ff:	c2 10 00             	ret    $0x10
  402202:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
  402209:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402210 <_WlxMessageBox@20>:
  402210:	55                   	push   %ebp
  402211:	89 e5                	mov    %esp,%ebp
  402213:	50                   	push   %eax
  402214:	50                   	push   %eax
  402215:	6a 69                	push   $0x69
  402217:	68 45 54 40 00       	push   $0x405445
  40221c:	68 6e 54 40 00       	push   $0x40546e
  402221:	68 4c 54 40 00       	push   $0x40544c
  402226:	ff 15 d8 72 40 00    	call   *0x4072d8
  40222c:	31 c0                	xor    %eax,%eax
  40222e:	c9                   	leave  
  40222f:	c2 14 00             	ret    $0x14
  402232:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
  402239:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402240 <_WlxDialogBox@20>:
  402240:	55                   	push   %ebp
  402241:	89 e5                	mov    %esp,%ebp
  402243:	50                   	push   %eax
  402244:	50                   	push   %eax
  402245:	6a 79                	push   $0x79
  402247:	68 45 54 40 00       	push   $0x405445
  40224c:	68 7c 54 40 00       	push   $0x40547c
  402251:	68 4c 54 40 00       	push   $0x40544c
  402256:	ff 15 d8 72 40 00    	call   *0x4072d8
  40225c:	31 c0                	xor    %eax,%eax
  40225e:	c9                   	leave  
  40225f:	c2 14 00             	ret    $0x14
  402262:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
  402269:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402270 <_WlxDialogBoxParam@24>:
  402270:	55                   	push   %ebp
  402271:	89 e5                	mov    %esp,%ebp
  402273:	50                   	push   %eax
  402274:	50                   	push   %eax
  402275:	68 8a 00 00 00       	push   $0x8a
  40227a:	68 45 54 40 00       	push   $0x405445
  40227f:	68 89 54 40 00       	push   $0x405489
  402284:	68 4c 54 40 00       	push   $0x40544c
  402289:	ff 15 d8 72 40 00    	call   *0x4072d8
  40228f:	31 c0                	xor    %eax,%eax
  402291:	c9                   	leave  
  402292:	c2 18 00             	ret    $0x18
  402295:	8d 74 26 00          	lea    0x0(%esi),%esi
  402299:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004022a0 <_WlxDialogBoxIndirect@20>:
  4022a0:	55                   	push   %ebp
  4022a1:	89 e5                	mov    %esp,%ebp
  4022a3:	52                   	push   %edx
  4022a4:	52                   	push   %edx
  4022a5:	68 9a 00 00 00       	push   $0x9a
  4022aa:	68 45 54 40 00       	push   $0x405445
  4022af:	68 9b 54 40 00       	push   $0x40549b
  4022b4:	68 4c 54 40 00       	push   $0x40544c
  4022b9:	ff 15 d8 72 40 00    	call   *0x4072d8
  4022bf:	31 c0                	xor    %eax,%eax
  4022c1:	c9                   	leave  
  4022c2:	c2 14 00             	ret    $0x14
  4022c5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4022c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004022d0 <_WlxDialogBoxIndirectParam@24>:
  4022d0:	55                   	push   %ebp
  4022d1:	89 e5                	mov    %esp,%ebp
  4022d3:	51                   	push   %ecx
  4022d4:	51                   	push   %ecx
  4022d5:	68 ab 00 00 00       	push   $0xab
  4022da:	68 45 54 40 00       	push   $0x405445
  4022df:	68 b0 54 40 00       	push   $0x4054b0
  4022e4:	68 4c 54 40 00       	push   $0x40544c
  4022e9:	ff 15 d8 72 40 00    	call   *0x4072d8
  4022ef:	31 c0                	xor    %eax,%eax
  4022f1:	c9                   	leave  
  4022f2:	c2 18 00             	ret    $0x18
  4022f5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4022f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402300 <_WlxSwitchDesktopToUser@4>:
  402300:	55                   	push   %ebp
  402301:	89 e5                	mov    %esp,%ebp
  402303:	50                   	push   %eax
  402304:	50                   	push   %eax
  402305:	68 b7 00 00 00       	push   $0xb7
  40230a:	68 45 54 40 00       	push   $0x405445
  40230f:	68 ca 54 40 00       	push   $0x4054ca
  402314:	68 4c 54 40 00       	push   $0x40544c
  402319:	ff 15 d8 72 40 00    	call   *0x4072d8
  40231f:	31 c0                	xor    %eax,%eax
  402321:	c9                   	leave  
  402322:	c2 04 00             	ret    $0x4
  402325:	8d 74 26 00          	lea    0x0(%esi),%esi
  402329:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402330 <_WlxSwitchDesktopToWinlogon@4>:
  402330:	55                   	push   %ebp
  402331:	89 e5                	mov    %esp,%ebp
  402333:	50                   	push   %eax
  402334:	50                   	push   %eax
  402335:	68 c3 00 00 00       	push   $0xc3
  40233a:	68 45 54 40 00       	push   $0x405445
  40233f:	68 e1 54 40 00       	push   $0x4054e1
  402344:	68 4c 54 40 00       	push   $0x40544c
  402349:	ff 15 d8 72 40 00    	call   *0x4072d8
  40234f:	31 c0                	xor    %eax,%eax
  402351:	c9                   	leave  
  402352:	c2 04 00             	ret    $0x4
  402355:	8d 74 26 00          	lea    0x0(%esi),%esi
  402359:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402360 <_WlxChangePasswordNotify@12>:
  402360:	55                   	push   %ebp
  402361:	89 e5                	mov    %esp,%ebp
  402363:	50                   	push   %eax
  402364:	50                   	push   %eax
  402365:	68 d1 00 00 00       	push   $0xd1
  40236a:	68 45 54 40 00       	push   $0x405445
  40236f:	68 fc 54 40 00       	push   $0x4054fc
  402374:	68 4c 54 40 00       	push   $0x40544c
  402379:	ff 15 d8 72 40 00    	call   *0x4072d8
  40237f:	31 c0                	xor    %eax,%eax
  402381:	c9                   	leave  
  402382:	c2 0c 00             	ret    $0xc
  402385:	8d 74 26 00          	lea    0x0(%esi),%esi
  402389:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402390 <_WlxGetSourceDesktop@8>:
  402390:	55                   	push   %ebp
  402391:	89 e5                	mov    %esp,%ebp
  402393:	50                   	push   %eax
  402394:	50                   	push   %eax
  402395:	68 de 00 00 00       	push   $0xde
  40239a:	68 45 54 40 00       	push   $0x405445
  40239f:	68 14 55 40 00       	push   $0x405514
  4023a4:	68 4c 54 40 00       	push   $0x40544c
  4023a9:	ff 15 d8 72 40 00    	call   *0x4072d8
  4023af:	31 c0                	xor    %eax,%eax
  4023b1:	c9                   	leave  
  4023b2:	c2 08 00             	ret    $0x8
  4023b5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4023b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004023c0 <_WlxSetReturnDesktop@8>:
  4023c0:	55                   	push   %ebp
  4023c1:	89 e5                	mov    %esp,%ebp
  4023c3:	50                   	push   %eax
  4023c4:	50                   	push   %eax
  4023c5:	68 eb 00 00 00       	push   $0xeb
  4023ca:	68 45 54 40 00       	push   $0x405445
  4023cf:	68 28 55 40 00       	push   $0x405528
  4023d4:	68 4c 54 40 00       	push   $0x40544c
  4023d9:	ff 15 d8 72 40 00    	call   *0x4072d8
  4023df:	31 c0                	xor    %eax,%eax
  4023e1:	c9                   	leave  
  4023e2:	c2 08 00             	ret    $0x8
  4023e5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4023e9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004023f0 <_WlxCreateUserDesktop@20>:
  4023f0:	55                   	push   %ebp
  4023f1:	89 e5                	mov    %esp,%ebp
  4023f3:	50                   	push   %eax
  4023f4:	50                   	push   %eax
  4023f5:	68 fb 00 00 00       	push   $0xfb
  4023fa:	68 45 54 40 00       	push   $0x405445
  4023ff:	68 3c 55 40 00       	push   $0x40553c
  402404:	68 4c 54 40 00       	push   $0x40544c
  402409:	ff 15 d8 72 40 00    	call   *0x4072d8
  40240f:	31 c0                	xor    %eax,%eax
  402411:	c9                   	leave  
  402412:	c2 14 00             	ret    $0x14
  402415:	8d 74 26 00          	lea    0x0(%esi),%esi
  402419:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402420 <_WlxChangePasswordNotifyEx@20>:
  402420:	55                   	push   %ebp
  402421:	89 e5                	mov    %esp,%ebp
  402423:	52                   	push   %edx
  402424:	52                   	push   %edx
  402425:	68 0b 01 00 00       	push   $0x10b
  40242a:	68 45 54 40 00       	push   $0x405445
  40242f:	68 51 55 40 00       	push   $0x405551
  402434:	68 4c 54 40 00       	push   $0x40544c
  402439:	ff 15 d8 72 40 00    	call   *0x4072d8
  40243f:	31 c0                	xor    %eax,%eax
  402441:	c9                   	leave  
  402442:	c2 14 00             	ret    $0x14
  402445:	8d 74 26 00          	lea    0x0(%esi),%esi
  402449:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402450 <_WlxCloseUserDesktop@12>:
  402450:	55                   	push   %ebp
  402451:	89 e5                	mov    %esp,%ebp
  402453:	51                   	push   %ecx
  402454:	51                   	push   %ecx
  402455:	68 19 01 00 00       	push   $0x119
  40245a:	68 45 54 40 00       	push   $0x405445
  40245f:	68 6b 55 40 00       	push   $0x40556b
  402464:	68 4c 54 40 00       	push   $0x40544c
  402469:	ff 15 d8 72 40 00    	call   *0x4072d8
  40246f:	31 c0                	xor    %eax,%eax
  402471:	c9                   	leave  
  402472:	c2 0c 00             	ret    $0xc
  402475:	8d 74 26 00          	lea    0x0(%esi),%esi
  402479:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402480 <_WlxGetOption@12>:

/*
 * @unimplemented
 */
BOOL WINAPI
WlxGetOption(
  HANDLE hWlx,
  DWORD Option,
  ULONG_PTR* Value
)
{
  402480:	55                   	push   %ebp
  402481:	89 e5                	mov    %esp,%ebp
  402483:	57                   	push   %edi
  402484:	56                   	push   %esi
  402485:	53                   	push   %ebx
  402486:	83 ec 0c             	sub    $0xc,%esp
  402489:	8b 7d 08             	mov    0x8(%ebp),%edi
  40248c:	8b 5d 10             	mov    0x10(%ebp),%ebx
  PMSGINAINSTANCE Instance = (PMSGINAINSTANCE)hWlx;
  Unimplemented;
  40248f:	68 49 01 00 00       	push   $0x149
  402494:	68 45 54 40 00       	push   $0x405445
  402499:	68 7f 55 40 00       	push   $0x40557f
  40249e:	68 4c 54 40 00       	push   $0x40544c
  4024a3:	8b 75 0c             	mov    0xc(%ebp),%esi
  4024a6:	ff 15 d8 72 40 00    	call   *0x4072d8
  if(Instance || !Value)
  4024ac:	83 c4 10             	add    $0x10,%esp
  4024af:	85 ff                	test   %edi,%edi
  4024b1:	0f 95 c2             	setne  %dl
  4024b4:	85 db                	test   %ebx,%ebx
  4024b6:	0f 94 c0             	sete   %al
  4024b9:	09 d0                	or     %edx,%eax
  4024bb:	a8 01                	test   $0x1,%al
  4024bd:	74 16                	je     4024d5 <_WlxGetOption@12+0x55>
  {
    switch(Option)
  4024bf:	83 fe 03             	cmp    $0x3,%esi
  4024c2:	74 4c                	je     402510 <_WlxGetOption@12+0x90>
  4024c4:	77 1b                	ja     4024e1 <_WlxGetOption@12+0x61>
    {
      case WLX_OPTION_USE_CTRL_ALT_DEL:
        return TRUE;
  4024c6:	b8 01 00 00 00       	mov    $0x1,%eax
  4024cb:	83 fe 01             	cmp    $0x1,%esi
  4024ce:	74 07                	je     4024d7 <_WlxGetOption@12+0x57>
  4024d0:	83 fe 02             	cmp    $0x2,%esi
  4024d3:	74 43                	je     402518 <_WlxGetOption@12+0x98>
      case WLX_OPTION_CONTEXT_POINTER:
      {
        *Value = (ULONG_PTR)Instance->Context;
        return TRUE;
      }
      case WLX_OPTION_USE_SMART_CARD:
      case WLX_OPTION_SMART_CARD_PRESENT:
      case WLX_OPTION_SMART_CARD_INFO:
        *Value = 0;
        return FALSE;
      case WLX_OPTION_DISPATCH_TABLE_SIZE:
      {
        switch(Instance->Version)
        {
          case WLX_VERSION_1_0:
            *Value = sizeof(WLX_DISPATCH_VERSION_1_0);
            break;
          case WLX_VERSION_1_1:
            *Value = sizeof(WLX_DISPATCH_VERSION_1_1);
            break;
          case WLX_VERSION_1_2:
            *Value = sizeof(WLX_DISPATCH_VERSION_1_2);
            break;
          case WLX_VERSION_1_3:
            *Value = sizeof(WLX_DISPATCH_VERSION_1_3);
            break;
          case WLX_VERSION_1_4:
            *Value = sizeof(WLX_DISPATCH_VERSION_1_4);
            break;
          default:
            return 0;
        }
        return TRUE;
      }
    }
  }
  
  return FALSE;
  4024d5:	31 c0                	xor    %eax,%eax
}
  4024d7:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  4024da:	5b                   	pop    %ebx
  4024db:	5e                   	pop    %esi
  4024dc:	5f                   	pop    %edi
  4024dd:	5d                   	pop    %ebp
  4024de:	c2 0c 00             	ret    $0xc
  4024e1:	81 fe 01 00 01 00    	cmp    $0x10001,%esi
  4024e7:	72 ec                	jb     4024d5 <_WlxGetOption@12+0x55>
  4024e9:	81 fe 02 00 01 00    	cmp    $0x10002,%esi
  4024ef:	76 1f                	jbe    402510 <_WlxGetOption@12+0x90>
  4024f1:	81 fe 03 00 01 00    	cmp    $0x10003,%esi
  4024f7:	75 dc                	jne    4024d5 <_WlxGetOption@12+0x55>
  4024f9:	8b 57 50             	mov    0x50(%edi),%edx
  4024fc:	31 c0                	xor    %eax,%eax
  4024fe:	81 ea 00 00 01 00    	sub    $0x10000,%edx
  402504:	83 fa 04             	cmp    $0x4,%edx
  402507:	77 ce                	ja     4024d7 <_WlxGetOption@12+0x57>
  402509:	ff 24 95 8c 55 40 00 	jmp    *0x40558c(,%edx,4)
  402510:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
  402516:	eb bd                	jmp    4024d5 <_WlxGetOption@12+0x55>
  402518:	8b 47 4c             	mov    0x4c(%edi),%eax
  40251b:	89 03                	mov    %eax,(%ebx)
  40251d:	b8 01 00 00 00       	mov    $0x1,%eax
  402522:	eb b3                	jmp    4024d7 <_WlxGetOption@12+0x57>
  402524:	b8 01 00 00 00       	mov    $0x1,%eax
  402529:	c7 03 6c 00 00 00    	movl   $0x6c,(%ebx)
  40252f:	eb a6                	jmp    4024d7 <_WlxGetOption@12+0x57>
  402531:	b8 01 00 00 00       	mov    $0x1,%eax
  402536:	c7 03 64 00 00 00    	movl   $0x64,(%ebx)
  40253c:	eb 99                	jmp    4024d7 <_WlxGetOption@12+0x57>
  40253e:	b8 01 00 00 00       	mov    $0x1,%eax
  402543:	c7 03 48 00 00 00    	movl   $0x48,(%ebx)
  402549:	eb 8c                	jmp    4024d7 <_WlxGetOption@12+0x57>
  40254b:	b8 01 00 00 00       	mov    $0x1,%eax
  402550:	c7 03 44 00 00 00    	movl   $0x44,(%ebx)
  402556:	e9 7c ff ff ff       	jmp    4024d7 <_WlxGetOption@12+0x57>
  40255b:	b8 01 00 00 00       	mov    $0x1,%eax
  402560:	c7 03 34 00 00 00    	movl   $0x34,(%ebx)
  402566:	e9 6c ff ff ff       	jmp    4024d7 <_WlxGetOption@12+0x57>
  40256b:	90                   	nop    
  40256c:	8d 74 26 00          	lea    0x0(%esi),%esi

00402570 <_WlxWin31Migrate@4>:

/*
 * @unimplemented
 */
VOID WINAPI
WlxWin31Migrate(
  HANDLE hWlx
)
{
  402570:	55                   	push   %ebp
  402571:	89 e5                	mov    %esp,%ebp
  402573:	50                   	push   %eax
  402574:	50                   	push   %eax
  Unimplemented;
  402575:	68 80 01 00 00       	push   $0x180
  40257a:	68 45 54 40 00       	push   $0x405445
  40257f:	68 a0 55 40 00       	push   $0x4055a0
  402584:	68 4c 54 40 00       	push   $0x40544c
  402589:	ff 15 d8 72 40 00    	call   *0x4072d8
  40258f:	c9                   	leave  
  402590:	c2 04 00             	ret    $0x4
  402593:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  402599:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004025a0 <_WlxQueryClientCredentials@4>:
}

/*
 * @unimplemented
 */
BOOL WINAPI
WlxQueryClientCredentials(
  PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
)
{
  4025a0:	55                   	push   %ebp
  4025a1:	89 e5                	mov    %esp,%ebp
  4025a3:	50                   	push   %eax
  4025a4:	50                   	push   %eax
  Unimplemented;
  4025a5:	68 8b 01 00 00       	push   $0x18b
  4025aa:	68 45 54 40 00       	push   $0x405445
  4025af:	68 b0 55 40 00       	push   $0x4055b0
  4025b4:	68 4c 54 40 00       	push   $0x40544c
  4025b9:	ff 15 d8 72 40 00    	call   *0x4072d8
  return FALSE;
}
  4025bf:	31 c0                	xor    %eax,%eax
  4025c1:	c9                   	leave  
  4025c2:	c2 04 00             	ret    $0x4
  4025c5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4025c9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004025d0 <_WlxQueryInetConnectorCredentials@4>:

/*
 * @unimplemented
 */
BOOL WINAPI
WlxQueryInetConnectorCredentials(
  PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
)
{
  4025d0:	55                   	push   %ebp
  4025d1:	89 e5                	mov    %esp,%ebp
  4025d3:	50                   	push   %eax
  4025d4:	50                   	push   %eax
  Unimplemented;
  4025d5:	68 97 01 00 00       	push   $0x197
  4025da:	68 45 54 40 00       	push   $0x405445
  4025df:	68 e0 55 40 00       	push   $0x4055e0
  4025e4:	68 4c 54 40 00       	push   $0x40544c
  4025e9:	ff 15 d8 72 40 00    	call   *0x4072d8
  return FALSE;
}
  4025ef:	31 c0                	xor    %eax,%eax
  4025f1:	c9                   	leave  
  4025f2:	c2 04 00             	ret    $0x4
  4025f5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4025f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402600 <_WlxQueryConsoleSwitchCredentials@4>:

/*
 * @unimplemented
 */
DWORD WINAPI
WlxQueryConsoleSwitchCredentials(
  PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred
)
{
  402600:	55                   	push   %ebp
  402601:	89 e5                	mov    %esp,%ebp
  402603:	50                   	push   %eax
  402604:	50                   	push   %eax
  Unimplemented;
  402605:	68 a3 01 00 00       	push   $0x1a3
  40260a:	68 45 54 40 00       	push   $0x405445
  40260f:	68 20 56 40 00       	push   $0x405620
  402614:	68 4c 54 40 00       	push   $0x40544c
  402619:	ff 15 d8 72 40 00    	call   *0x4072d8
  return 0;
}
  40261f:	31 c0                	xor    %eax,%eax
  402621:	c9                   	leave  
  402622:	c2 04 00             	ret    $0x4
  402625:	8d 74 26 00          	lea    0x0(%esi),%esi
  402629:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402630 <_WlxQueryTsLogonCredentials@4>:

/*
 * @unimplemented
 */
BOOL WINAPI
WlxQueryTsLogonCredentials(
  PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred
)
{
  402630:	55                   	push   %ebp
  402631:	89 e5                	mov    %esp,%ebp
  402633:	50                   	push   %eax
  402634:	50                   	push   %eax
  Unimplemented;
  402635:	68 af 01 00 00       	push   $0x1af
  40263a:	68 45 54 40 00       	push   $0x405445
  40263f:	68 41 56 40 00       	push   $0x405641
  402644:	68 4c 54 40 00       	push   $0x40544c
  402649:	ff 15 d8 72 40 00    	call   *0x4072d8
  return FALSE;
}
  40264f:	31 c0                	xor    %eax,%eax
  402651:	c9                   	leave  
  402652:	c2 04 00             	ret    $0x4
  402655:	8d 74 26 00          	lea    0x0(%esi),%esi
  402659:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402660 <_WlxDisconnect@0>:

/*
 * @unimplemented
 */
BOOL WINAPI
WlxDisconnect(void)
{
  402660:	55                   	push   %ebp
  402661:	89 e5                	mov    %esp,%ebp
  402663:	50                   	push   %eax
  402664:	50                   	push   %eax
  Unimplemented;
  402665:	68 b9 01 00 00       	push   $0x1b9
  40266a:	68 45 54 40 00       	push   $0x405445
  40266f:	68 5c 56 40 00       	push   $0x40565c
  402674:	68 4c 54 40 00       	push   $0x40544c
  402679:	ff 15 d8 72 40 00    	call   *0x4072d8
  return FALSE;
}
  40267f:	31 c0                	xor    %eax,%eax
  402681:	c9                   	leave  
  402682:	c3                   	ret    
  402683:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  402689:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

00402690 <_WlxQueryTerminalServicesData@16>:

/*
 * @unimplemented
 */
DWORD WINAPI
WlxQueryTerminalServicesData(
  HANDLE hWlx,
  PWLX_TERMINAL_SERVICES_DATA pTSData,
  WCHAR* UserName,
  WCHAR* Domain
)
{
  402690:	55                   	push   %ebp
  402691:	89 e5                	mov    %esp,%ebp
  402693:	52                   	push   %edx
  402694:	52                   	push   %edx
  Unimplemented;
  402695:	68 c8 01 00 00       	push   $0x1c8
  40269a:	68 45 54 40 00       	push   $0x405445
  40269f:	68 6a 56 40 00       	push   $0x40566a
  4026a4:	68 4c 54 40 00       	push   $0x40544c
  4026a9:	ff 15 d8 72 40 00    	call   *0x4072d8
  return 0;
}
  4026af:	31 c0                	xor    %eax,%eax
  4026b1:	c9                   	leave  
  4026b2:	c2 10 00             	ret    $0x10
  4026b5:	8d 74 26 00          	lea    0x0(%esi),%esi
  4026b9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004026c0 <_GinaLoadFailedProc@16>:

const
WLX_DISPATCH_VERSION_1_4 FunctionTable = {
  WlxUseCtrlAltDel,
  WlxSetContextPointer,
  WlxSasNotify,
  WlxSetTimeout,
  WlxAssignShellProtection,
  WlxMessageBox,
  WlxDialogBox,
  WlxDialogBoxParam,
  WlxDialogBoxIndirect,
  WlxDialogBoxIndirectParam,
  WlxSwitchDesktopToUser,
  WlxSwitchDesktopToWinlogon,
  WlxChangePasswordNotify,
  WlxGetSourceDesktop,
  WlxSetReturnDesktop,
  WlxCreateUserDesktop,
  WlxChangePasswordNotifyEx,
  WlxCloseUserDesktop,
  WlxSetOption,
  WlxGetOption,
  WlxWin31Migrate,
  WlxQueryClientCredentials,
  WlxQueryInetConnectorCredentials,
  WlxDisconnect,
  WlxQueryTerminalServicesData,
  WlxQueryConsoleSwitchCredentials,
  WlxQueryTsLogonCredentials
};

/******************************************************************************/

static void
GetMsGinaPath(WCHAR *path)
{
  DWORD Status, Type, Size;
  HKEY hKey;
  
  Status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                        L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",
                        0,
                        KEY_QUERY_VALUE,
                        &hKey);
  if(Status != ERROR_SUCCESS)
  {
    wcscpy(path, L"msgina.dll");
    return;
  }
  
  Size = MAX_PATH * sizeof(WCHAR);
  Status = RegQueryValueEx(hKey,
                           L"GinaDLL",
                           NULL,
                           &Type,
                           (LPBYTE)path,
                           &Size);
  if((Status != ERROR_SUCCESS) || (Size != REG_SZ) || (Size == 0))
  {
    wcscpy(path, L"msgina.dll");
  }
  RegCloseKey(hKey);
}

INT_PTR CALLBACK
GinaLoadFailedProc(
  HWND hwndDlg,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
)
{
  4026c0:	55                   	push   %ebp
  4026c1:	89 e5                	mov    %esp,%ebp
  4026c3:	57                   	push   %edi
  4026c4:	56                   	push   %esi
  4026c5:	53                   	push   %ebx
  4026c6:	81 ec 2c 04 00 00    	sub    $0x42c,%esp
  4026cc:	8b 45 0c             	mov    0xc(%ebp),%eax
  4026cf:	8b 75 08             	mov    0x8(%ebp),%esi
  4026d2:	8b 5d 14             	mov    0x14(%ebp),%ebx
  switch(uMsg)
  4026d5:	3d 10 01 00 00       	cmp    $0x110,%eax
  4026da:	74 34                	je     402710 <_GinaLoadFailedProc@16+0x50>
  4026dc:	77 12                	ja     4026f0 <_GinaLoadFailedProc@16+0x30>
  4026de:	83 f8 10             	cmp    $0x10,%eax
  4026e1:	74 4a                	je     40272d <_GinaLoadFailedProc@16+0x6d>
  {
    case WM_COMMAND:
    {
      switch(LOWORD(wParam))
      {
        case IDOK:
          EndDialog(hwndDlg, IDOK);
          break;
      }
      break;
    }
    case WM_INITDIALOG:
    {
      int len;
      WCHAR str[MAX_PATH], str2[MAX_PATH];
      
      if(lParam)
      {
        len = GetDlgItemText(hwndDlg, IDC_GINALOADFAILED, str, MAX_PATH);
        
        if(len)
        {
          wsprintf(str2, str, (LPWSTR)lParam);
          SetDlgItemText(hwndDlg, IDC_GINALOADFAILED, str2);
        }
      }
      SetFocus(GetDlgItem(hwndDlg, IDOK));
      break;
    }
    case WM_CLOSE:
    {
      EndDialog(hwndDlg, IDCANCEL);
      return TRUE;
    }
  }
  return FALSE;
  4026e3:	31 c0                	xor    %eax,%eax
}
  4026e5:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  4026e8:	5b                   	pop    %ebx
  4026e9:	5e                   	pop    %esi
  4026ea:	5f                   	pop    %edi
  4026eb:	5d                   	pop    %ebp
  4026ec:	c2 10 00             	ret    $0x10
  4026ef:	90                   	nop    
  4026f0:	3d 11 01 00 00       	cmp    $0x111,%eax
  4026f5:	75 ec                	jne    4026e3 <_GinaLoadFailedProc@16+0x23>
  4026f7:	66 83 7d 10 01       	cmpw   $0x1,0x10(%ebp)
  4026fc:	75 e5                	jne    4026e3 <_GinaLoadFailedProc@16+0x23>
  4026fe:	51                   	push   %ecx
  4026ff:	51                   	push   %ecx
  402700:	6a 01                	push   $0x1
  402702:	56                   	push   %esi
  402703:	e8 e8 0b 00 00       	call   4032f0 <_EndDialog@8>
  402708:	58                   	pop    %eax
  402709:	5a                   	pop    %edx
  40270a:	eb d7                	jmp    4026e3 <_GinaLoadFailedProc@16+0x23>
  40270c:	8d 74 26 00          	lea    0x0(%esi),%esi
  402710:	85 db                	test   %ebx,%ebx
  402712:	75 2a                	jne    40273e <_GinaLoadFailedProc@16+0x7e>
  402714:	83 ec 18             	sub    $0x18,%esp
  402717:	6a 01                	push   $0x1
  402719:	56                   	push   %esi
  40271a:	e8 01 0c 00 00       	call   403320 <_GetDlgItem@8>
  40271f:	83 c4 0c             	add    $0xc,%esp
  402722:	50                   	push   %eax
  402723:	e8 08 0c 00 00       	call   403330 <_SetFocus@4>
  402728:	83 c4 0c             	add    $0xc,%esp
  40272b:	eb b6                	jmp    4026e3 <_GinaLoadFailedProc@16+0x23>
  40272d:	51                   	push   %ecx
  40272e:	51                   	push   %ecx
  40272f:	6a 02                	push   $0x2
  402731:	56                   	push   %esi
  402732:	e8 b9 0b 00 00       	call   4032f0 <_EndDialog@8>
  402737:	b8 01 00 00 00       	mov    $0x1,%eax
  40273c:	eb a7                	jmp    4026e5 <_GinaLoadFailedProc@16+0x25>
  40273e:	8d bd d8 fd ff ff    	lea    0xfffffdd8(%ebp),%edi
  402744:	68 04 01 00 00       	push   $0x104
  402749:	57                   	push   %edi
  40274a:	68 91 01 00 00       	push   $0x191
  40274f:	56                   	push   %esi
  402750:	e8 bb 0c 00 00       	call   403410 <_GetDlgItemTextW@16>
  402755:	85 c0                	test   %eax,%eax
  402757:	74 bb                	je     402714 <_GinaLoadFailedProc@16+0x54>
  402759:	50                   	push   %eax
  40275a:	53                   	push   %ebx
  40275b:	8d 9d c8 fb ff ff    	lea    0xfffffbc8(%ebp),%ebx
  402761:	57                   	push   %edi
  402762:	53                   	push   %ebx
  402763:	e8 98 0c 00 00       	call   403400 <_wsprintfW>
  402768:	83 c4 0c             	add    $0xc,%esp
  40276b:	53                   	push   %ebx
  40276c:	68 91 01 00 00       	push   $0x191
  402771:	56                   	push   %esi
  402772:	e8 a9 0c 00 00       	call   403420 <_SetDlgItemTextW@12>
  402777:	5b                   	pop    %ebx
  402778:	eb 9a                	jmp    402714 <_GinaLoadFailedProc@16+0x54>
  40277a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

00402780 <_LoadGina>:

BOOL
LoadGina(PMSGINAFUNCTIONS Functions, DWORD *DllVersion, HMODULE *GinaInstance)
{
  402780:	55                   	push   %ebp
  402781:	89 e5                	mov    %esp,%ebp
  402783:	57                   	push   %edi
  402784:	56                   	push   %esi
  402785:	53                   	push   %ebx
  402786:	81 ec 38 02 00 00    	sub    $0x238,%esp
  40278c:	8d 85 d4 fd ff ff    	lea    0xfffffdd4(%ebp),%eax
  402792:	8b 7d 08             	mov    0x8(%ebp),%edi
  402795:	8d b5 d8 fd ff ff    	lea    0xfffffdd8(%ebp),%esi
  40279b:	50                   	push   %eax
  40279c:	6a 01                	push   $0x1
  40279e:	6a 00                	push   $0x0
  4027a0:	68 88 56 40 00       	push   $0x405688
  4027a5:	68 02 00 00 80       	push   $0x80000002
  4027aa:	e8 21 0d 00 00       	call   4034d0 <_RegOpenKeyExW@20>
  4027af:	83 c4 0c             	add    $0xc,%esp
  4027b2:	85 c0                	test   %eax,%eax
  4027b4:	74 7a                	je     402830 <_LoadGina+0xb0>
  4027b6:	50                   	push   %eax
  4027b7:	50                   	push   %eax
  4027b8:	68 f4 56 40 00       	push   $0x4056f4
  4027bd:	56                   	push   %esi
  4027be:	e8 8d 09 00 00       	call   403150 <_wcscpy>
  4027c3:	83 c4 10             	add    $0x10,%esp
  HMODULE hGina;
  WCHAR GinaDll[MAX_PATH + 1];
  
  GetMsGinaPath(GinaDll);
  
  if(!(hGina = LoadLibrary(GinaDll)))
  4027c6:	83 ec 0c             	sub    $0xc,%esp
  4027c9:	56                   	push   %esi
  4027ca:	e8 c1 0a 00 00       	call   403290 <_LoadLibraryW@4>
  4027cf:	83 c4 0c             	add    $0xc,%esp
  4027d2:	89 c3                	mov    %eax,%ebx
  4027d4:	85 c0                	test   %eax,%eax
  4027d6:	0f 84 c9 00 00 00    	je     4028a5 <_LoadGina+0x125>
  {
    DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_GINALOADFAILED), 0, GinaLoadFailedProc, (LPARAM)&GinaDll);
    return FALSE;
  }
  *GinaInstance = hGina;
  4027dc:	8b 45 10             	mov    0x10(%ebp),%eax
  4027df:	89 18                	mov    %ebx,(%eax)
  
  Functions->WlxNegotiate = (PFWLXNEGOTIATE)GetProcAddress(hGina, "WlxNegotiate");
  4027e1:	50                   	push   %eax
  4027e2:	50                   	push   %eax
  4027e3:	68 0a 57 40 00       	push   $0x40570a
  4027e8:	53                   	push   %ebx
  4027e9:	e8 b2 0a 00 00       	call   4032a0 <_GetProcAddress@8>
  4027ee:	89 07                	mov    %eax,(%edi)
  Functions->WlxInitialize = (PFWLXINITIALIZE)GetProcAddress(hGina, "WlxInitialize");
  4027f0:	68 17 57 40 00       	push   $0x405717
  4027f5:	53                   	push   %ebx
  4027f6:	e8 a5 0a 00 00       	call   4032a0 <_GetProcAddress@8>
  4027fb:	89 47 04             	mov    %eax,0x4(%edi)
  
  if(Functions->WlxNegotiate)
  4027fe:	8b 07                	mov    (%edi),%eax
  402800:	59                   	pop    %ecx
  402801:	85 c0                	test   %eax,%eax
  402803:	5e                   	pop    %esi
  402804:	0f 85 c6 00 00 00    	jne    4028d0 <_LoadGina+0x150>
  {
    if(!Functions->WlxNegotiate(WLX_VERSION_1_3, DllVersion))
    {
      return FALSE;
    }
    
    if(*DllVersion >= WLX_VERSION_1_0)
    {
      Functions->WlxActivateUserShell = (PFWLXACTIVATEUSERSHELL)GetProcAddress(hGina, "WlxActivateUserShell");
      Functions->WlxDisplayLockedNotice = (PFWLXDISPLAYLOCKEDNOTICE)GetProcAddress(hGina, "WlxDisplayLockedNotice");
      Functions->WlxDisplaySASNotice = (PFWLXDISPLAYSASNOTICE)GetProcAddress(hGina, "WlxDisplaySASNotice");
      Functions->WlxIsLockOk = (PFWLXISLOCKOK)GetProcAddress(hGina, "WlxIsLockOk");
      Functions->WlxIsLogoffOk = (PFWLXISLOGOFFOK)GetProcAddress(hGina, "WlxIsLogoffOk");
      Functions->WlxLoggedOnSAS = (PFWLXLOGGEDONSAS)GetProcAddress(hGina, "WlxLoggedOnSAS");
      Functions->WlxLoggedOutSAS = (PFWLXLOGGEDOUTSAS)GetProcAddress(hGina, "WlxLoggedOutSAS");
      Functions->WlxLogoff = (PFWLXLOGOFF)GetProcAddress(hGina, "WlxLogoff");
      Functions->WlxShutdown = (PFWLXSHUTDOWN)GetProcAddress(hGina, "WlxShutdown");
      Functions->WlxWkstaLockedSAS = (PFWLXWKSTALOCKEDSAS)GetProcAddress(hGina, "WlxWkstaLockedSAS");
    }
    
    if(*DllVersion >= WLX_VERSION_1_1)
    {
      Functions->WlxScreenSaverNotify = (PFWLXSCREENSAVERNOTIFY)GetProcAddress(hGina, "WlxScreenSaverNotify");
      Functions->WlxStartApplication = (PFWLXSTARTAPPLICATION)GetProcAddress(hGina, "WlxStartApplication");
    }
    
    if(*DllVersion >= WLX_VERSION_1_3)
    {
      Functions->WlxDisplayStatusMessage = (PFWLXDISPLAYSTATUSMESSAGE)GetProcAddress(hGina, "WlxDisplayStatusMessage");
      Functions->WlxGetStatusMessage = (PFWLXGETSTATUSMESSAGE)GetProcAddress(hGina, "WlxGetStatusMessage");
      Functions->WlxNetworkProviderLoad = (PFWLXNETWORKPROVIDERLOAD)GetProcAddress(hGina, "WlxNetworkProviderLoad");
      Functions->WlxRemoveStatusMessage = (PFWLXREMOVESTATUSMESSAGE)GetProcAddress(hGina, "WlxRemoveStatusMessage");
    }
    
    if(*DllVersion >= WLX_VERSION_1_4)
    {
      
    }
  }
  
  return (Functions->WlxNegotiate != NULL) && (Functions->WlxInitialize != NULL);
  40280a:	31 d2                	xor    %edx,%edx
  40280c:	85 c0                	test   %eax,%eax
  40280e:	74 10                	je     402820 <_LoadGina+0xa0>
  402810:	8b 5f 04             	mov    0x4(%edi),%ebx
  402813:	85 db                	test   %ebx,%ebx
  402815:	74 09                	je     402820 <_LoadGina+0xa0>
  402817:	b2 01                	mov    $0x1,%dl
  402819:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
}
  402820:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  402823:	89 d0                	mov    %edx,%eax
  402825:	5b                   	pop    %ebx
  402826:	5e                   	pop    %esi
  402827:	5f                   	pop    %edi
  402828:	5d                   	pop    %ebp
  402829:	c3                   	ret    
  40282a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  402830:	c7 85 d0 fd ff ff 08 	movl   $0x208,0xfffffdd0(%ebp)
  402837:	02 00 00 
  40283a:	50                   	push   %eax
  40283b:	50                   	push   %eax
  40283c:	8d 85 d0 fd ff ff    	lea    0xfffffdd0(%ebp),%eax
  402842:	50                   	push   %eax
  402843:	8d 85 cc fd ff ff    	lea    0xfffffdcc(%ebp),%eax
  402849:	56                   	push   %esi
  40284a:	50                   	push   %eax
  40284b:	6a 00                	push   $0x0
  40284d:	68 26 57 40 00       	push   $0x405726
  402852:	8b 9d d4 fd ff ff    	mov    0xfffffdd4(%ebp),%ebx
  402858:	53                   	push   %ebx
  402859:	e8 82 0c 00 00       	call   4034e0 <_RegQueryValueExW@24>
  40285e:	5a                   	pop    %edx
  40285f:	85 c0                	test   %eax,%eax
  402861:	59                   	pop    %ecx
  402862:	75 09                	jne    40286d <_LoadGina+0xed>
  402864:	83 bd d0 fd ff ff 01 	cmpl   $0x1,0xfffffdd0(%ebp)
  40286b:	74 10                	je     40287d <_LoadGina+0xfd>
  40286d:	50                   	push   %eax
  40286e:	50                   	push   %eax
  40286f:	68 f4 56 40 00       	push   $0x4056f4
  402874:	56                   	push   %esi
  402875:	e8 d6 08 00 00       	call   403150 <_wcscpy>
  40287a:	83 c4 10             	add    $0x10,%esp
  40287d:	83 ec 0c             	sub    $0xc,%esp
  402880:	8b 85 d4 fd ff ff    	mov    0xfffffdd4(%ebp),%eax
  402886:	50                   	push   %eax
  402887:	e8 64 0c 00 00       	call   4034f0 <_RegCloseKey@4>
  40288c:	83 c4 0c             	add    $0xc,%esp
  40288f:	83 ec 0c             	sub    $0xc,%esp
  402892:	56                   	push   %esi
  402893:	e8 f8 09 00 00       	call   403290 <_LoadLibraryW@4>
  402898:	83 c4 0c             	add    $0xc,%esp
  40289b:	89 c3                	mov    %eax,%ebx
  40289d:	85 c0                	test   %eax,%eax
  40289f:	0f 85 37 ff ff ff    	jne    4027dc <_LoadGina+0x5c>
  4028a5:	83 ec 0c             	sub    $0xc,%esp
  4028a8:	56                   	push   %esi
  4028a9:	68 c0 26 40 00       	push   $0x4026c0
  4028ae:	6a 00                	push   $0x0
  4028b0:	68 90 01 00 00       	push   $0x190
  4028b5:	a1 70 60 40 00       	mov    0x406070,%eax
  4028ba:	50                   	push   %eax
  4028bb:	e8 10 0b 00 00       	call   4033d0 <_DialogBoxParamW@20>
  4028c0:	31 d2                	xor    %edx,%edx
  4028c2:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  4028c5:	89 d0                	mov    %edx,%eax
  4028c7:	5b                   	pop    %ebx
  4028c8:	5e                   	pop    %esi
  4028c9:	5f                   	pop    %edi
  4028ca:	5d                   	pop    %ebp
  4028cb:	c3                   	ret    
  4028cc:	8d 74 26 00          	lea    0x0(%esi),%esi
  4028d0:	52                   	push   %edx
  4028d1:	52                   	push   %edx
  4028d2:	8b 75 0c             	mov    0xc(%ebp),%esi
  4028d5:	56                   	push   %esi
  4028d6:	68 03 00 01 00       	push   $0x10003
  4028db:	ff d0                	call   *%eax
  4028dd:	5a                   	pop    %edx
  4028de:	31 d2                	xor    %edx,%edx
  4028e0:	59                   	pop    %ecx
  4028e1:	85 c0                	test   %eax,%eax
  4028e3:	0f 84 37 ff ff ff    	je     402820 <_LoadGina+0xa0>
  4028e9:	8b 55 0c             	mov    0xc(%ebp),%edx
  4028ec:	8b 02                	mov    (%edx),%eax
  4028ee:	3d ff ff 00 00       	cmp    $0xffff,%eax
  4028f3:	77 7f                	ja     402974 <_LoadGina+0x1f4>
  4028f5:	3d 00 00 01 00       	cmp    $0x10000,%eax
  4028fa:	77 51                	ja     40294d <_LoadGina+0x1cd>
  4028fc:	3d 02 00 01 00       	cmp    $0x10002,%eax
  402901:	77 07                	ja     40290a <_LoadGina+0x18a>
  402903:	8b 07                	mov    (%edi),%eax
  402905:	e9 00 ff ff ff       	jmp    40280a <_LoadGina+0x8a>
  40290a:	50                   	push   %eax
  40290b:	50                   	push   %eax
  40290c:	68 36 57 40 00       	push   $0x405736
  402911:	53                   	push   %ebx
  402912:	e8 89 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402917:	89 47 3c             	mov    %eax,0x3c(%edi)
  40291a:	68 4e 57 40 00       	push   $0x40574e
  40291f:	53                   	push   %ebx
  402920:	e8 7b 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402925:	89 47 40             	mov    %eax,0x40(%edi)
  402928:	68 62 57 40 00       	push   $0x405762
  40292d:	53                   	push   %ebx
  40292e:	e8 6d 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402933:	89 47 38             	mov    %eax,0x38(%edi)
  402936:	68 79 57 40 00       	push   $0x405779
  40293b:	53                   	push   %ebx
  40293c:	e8 5f 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402941:	89 47 44             	mov    %eax,0x44(%edi)
  402944:	5e                   	pop    %esi
  402945:	58                   	pop    %eax
  402946:	8b 07                	mov    (%edi),%eax
  402948:	e9 bd fe ff ff       	jmp    40280a <_LoadGina+0x8a>
  40294d:	51                   	push   %ecx
  40294e:	51                   	push   %ecx
  40294f:	68 90 57 40 00       	push   $0x405790
  402954:	53                   	push   %ebx
  402955:	e8 46 09 00 00       	call   4032a0 <_GetProcAddress@8>
  40295a:	89 47 30             	mov    %eax,0x30(%edi)
  40295d:	68 a5 57 40 00       	push   $0x4057a5
  402962:	53                   	push   %ebx
  402963:	e8 38 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402968:	89 47 34             	mov    %eax,0x34(%edi)
  40296b:	58                   	pop    %eax
  40296c:	5a                   	pop    %edx
  40296d:	8b 55 0c             	mov    0xc(%ebp),%edx
  402970:	8b 02                	mov    (%edx),%eax
  402972:	eb 88                	jmp    4028fc <_LoadGina+0x17c>
  402974:	50                   	push   %eax
  402975:	50                   	push   %eax
  402976:	68 b9 57 40 00       	push   $0x4057b9
  40297b:	53                   	push   %ebx
  40297c:	e8 1f 09 00 00       	call   4032a0 <_GetProcAddress@8>
  402981:	89 47 10             	mov    %eax,0x10(%edi)
  402984:	68 ce 57 40 00       	push   $0x4057ce
  402989:	53                   	push   %ebx
  40298a:	e8 11 09 00 00       	call   4032a0 <_GetProcAddress@8>
  40298f:	89 47 18             	mov    %eax,0x18(%edi)
  402992:	68 e5 57 40 00       	push   $0x4057e5
  402997:	53                   	push   %ebx
  402998:	e8 03 09 00 00       	call   4032a0 <_GetProcAddress@8>
  40299d:	89 47 08             	mov    %eax,0x8(%edi)
  4029a0:	68 f9 57 40 00       	push   $0x4057f9
  4029a5:	53                   	push   %ebx
  4029a6:	e8 f5 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029ab:	89 47 20             	mov    %eax,0x20(%edi)
  4029ae:	68 05 58 40 00       	push   $0x405805
  4029b3:	53                   	push   %ebx
  4029b4:	e8 e7 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029b9:	89 47 24             	mov    %eax,0x24(%edi)
  4029bc:	68 13 58 40 00       	push   $0x405813
  4029c1:	53                   	push   %ebx
  4029c2:	e8 d9 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029c7:	89 47 14             	mov    %eax,0x14(%edi)
  4029ca:	68 22 58 40 00       	push   $0x405822
  4029cf:	53                   	push   %ebx
  4029d0:	e8 cb 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029d5:	89 47 0c             	mov    %eax,0xc(%edi)
  4029d8:	68 32 58 40 00       	push   $0x405832
  4029dd:	53                   	push   %ebx
  4029de:	e8 bd 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029e3:	89 47 28             	mov    %eax,0x28(%edi)
  4029e6:	68 3c 58 40 00       	push   $0x40583c
  4029eb:	53                   	push   %ebx
  4029ec:	e8 af 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029f1:	89 47 2c             	mov    %eax,0x2c(%edi)
  4029f4:	68 48 58 40 00       	push   $0x405848
  4029f9:	53                   	push   %ebx
  4029fa:	e8 a1 08 00 00       	call   4032a0 <_GetProcAddress@8>
  4029ff:	8b 55 0c             	mov    0xc(%ebp),%edx
  402a02:	89 47 1c             	mov    %eax,0x1c(%edi)
  402a05:	5e                   	pop    %esi
  402a06:	58                   	pop    %eax
  402a07:	8b 02                	mov    (%edx),%eax
  402a09:	e9 e7 fe ff ff       	jmp    4028f5 <_LoadGina+0x175>
  402a0e:	89 f6                	mov    %esi,%esi

00402a10 <_MsGinaInit>:

PWLSESSION
MsGinaInit(void)
{
  402a10:	55                   	push   %ebp
  402a11:	89 e5                	mov    %esp,%ebp
  402a13:	53                   	push   %ebx
  402a14:	53                   	push   %ebx
  402a15:	53                   	push   %ebx
  PWLSESSION WLSession;
  DWORD GinaDllVersion;
  
  WLSession = (PWLSESSION)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLSESSION));
  402a16:	68 88 00 00 00       	push   $0x88
  402a1b:	6a 08                	push   $0x8
  402a1d:	51                   	push   %ecx
  402a1e:	e8 8d 08 00 00       	call   4032b0 <_GetProcessHeap@0>
  402a23:	89 04 24             	mov    %eax,(%esp)
  402a26:	e8 95 08 00 00       	call   4032c0 <_HeapAlloc@12>
  if(!WLSession)
  402a2b:	5a                   	pop    %edx
  402a2c:	89 c3                	mov    %eax,%ebx
  {
    return NULL;
  402a2e:	31 d2                	xor    %edx,%edx
  402a30:	85 c0                	test   %eax,%eax
  402a32:	74 49                	je     402a7d <_MsGinaInit+0x6d>
  }
  
  if(!LoadGina(&WLSession->MsGina.Functions, &GinaDllVersion, &WLSession->MsGina.hDllInstance))
  402a34:	50                   	push   %eax
  402a35:	8d 45 f8             	lea    0xfffffff8(%ebp),%eax
  402a38:	53                   	push   %ebx
  402a39:	50                   	push   %eax
  402a3a:	8d 43 04             	lea    0x4(%ebx),%eax
  402a3d:	50                   	push   %eax
  402a3e:	e8 3d fd ff ff       	call   402780 <_LoadGina>
  402a43:	83 c4 10             	add    $0x10,%esp
  402a46:	85 c0                	test   %eax,%eax
  402a48:	74 3a                	je     402a84 <_MsGinaInit+0x74>
  {
    HeapFree(GetProcessHeap(), 0, WLSession);
    return NULL;
  }
  
  WLSession->MsGina.Context = NULL;
  WLSession->MsGina.Version = GinaDllVersion;
  402a4a:	8b 45 f8             	mov    0xfffffff8(%ebp),%eax
  WLSession->SuppressStatus = FALSE;
  
  if(!WLSession->MsGina.Functions.WlxInitialize(WLSession->InteractiveWindowStationName,
  402a4d:	83 ec 0c             	sub    $0xc,%esp
  402a50:	89 43 50             	mov    %eax,0x50(%ebx)
  402a53:	8d 43 4c             	lea    0x4c(%ebx),%eax
  402a56:	c7 43 4c 00 00 00 00 	movl   $0x0,0x4c(%ebx)
  402a5d:	c7 43 5c 00 00 00 00 	movl   $0x0,0x5c(%ebx)
  402a64:	50                   	push   %eax
  402a65:	68 c0 53 40 00       	push   $0x4053c0
  402a6a:	6a 00                	push   $0x0
  402a6c:	53                   	push   %ebx
  402a6d:	8b 43 6c             	mov    0x6c(%ebx),%eax
  402a70:	50                   	push   %eax
  402a71:	ff 53 08             	call   *0x8(%ebx)
                                               (HANDLE)WLSession,
                                               NULL,
                                               (PVOID)&FunctionTable,
                                               &WLSession->MsGina.Context))
  {
    HeapFree(GetProcessHeap(), 0, WLSession);
    return NULL;
  }
  return WLSession;
  402a74:	89 da                	mov    %ebx,%edx
  402a76:	83 c4 0c             	add    $0xc,%esp
  402a79:	85 c0                	test   %eax,%eax
  402a7b:	74 07                	je     402a84 <_MsGinaInit+0x74>
}
  402a7d:	89 d0                	mov    %edx,%eax
  402a7f:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402a82:	c9                   	leave  
  402a83:	c3                   	ret    
  402a84:	50                   	push   %eax
  402a85:	53                   	push   %ebx
  402a86:	6a 00                	push   $0x0
  402a88:	50                   	push   %eax
  402a89:	e8 22 08 00 00       	call   4032b0 <_GetProcessHeap@0>
  402a8e:	89 04 24             	mov    %eax,(%esp)
  402a91:	e8 3a 08 00 00       	call   4032d0 <_HeapFree@12>
  402a96:	31 d2                	xor    %edx,%edx
  402a98:	89 d0                	mov    %edx,%eax
  402a9a:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402a9d:	c9                   	leave  
  402a9e:	c3                   	ret    
  402a9f:	90                   	nop    

00402aa0 <_WlxCreateWindowStationAndDesktops>:

BOOL
WlxCreateWindowStationAndDesktops(PWLSESSION Session)
{
  402aa0:	55                   	push   %ebp
  402aa1:	89 e5                	mov    %esp,%ebp
  402aa3:	53                   	push   %ebx
  402aa4:	50                   	push   %eax
  402aa5:	8b 5d 08             	mov    0x8(%ebp),%ebx
  /*
   * Create the interactive window station
   */
  Session->InteractiveWindowStationName = L"WinSta0";
  402aa8:	c7 43 6c 5a 58 40 00 	movl   $0x40585a,0x6c(%ebx)
  Session->InteractiveWindowStation = CreateWindowStation(Session->InteractiveWindowStationName,
  402aaf:	6a 00                	push   $0x0
  402ab1:	68 00 00 00 10       	push   $0x10000000
  402ab6:	6a 00                	push   $0x0
  402ab8:	68 5a 58 40 00       	push   $0x40585a
  402abd:	e8 6e 09 00 00       	call   403430 <_CreateWindowStationW@16>
                                                          0, GENERIC_ALL, NULL);
  if(!Session->InteractiveWindowStation)
  402ac2:	85 c0                	test   %eax,%eax
  402ac4:	89 43 68             	mov    %eax,0x68(%ebx)
  402ac7:	75 1f                	jne    402ae8 <_WlxCreateWindowStationAndDesktops+0x48>
  {
    DbgPrint("WL: Failed to create window station (0x%X)\n", GetLastError());
  402ac9:	83 ec 10             	sub    $0x10,%esp
  402acc:	e8 7f 07 00 00       	call   403250 <_GetLastError@0>
  402ad1:	59                   	pop    %ecx
  402ad2:	5b                   	pop    %ebx
  402ad3:	50                   	push   %eax
  402ad4:	68 6c 58 40 00       	push   $0x40586c
    return FALSE;
  }
  SetProcessWindowStation(Session->InteractiveWindowStation);
  
  /*
   * Create the application desktop
   */
  Session->ApplicationDesktop = CreateDesktop(L"Default",
                                              NULL,
                                              NULL,
                                              0,      /* FIXME: Set some flags */
                                              GENERIC_ALL,
                                              NULL);
  if(!Session->ApplicationDesktop)
  {
    DbgPrint("WL: Failed to create Default desktop (0x%X)\n", GetLastError());
    return FALSE;
  }
  
  /*
   * Create the winlogon desktop
   */
  Session->WinlogonDesktop = CreateDesktop(WINLOGON_DESKTOP,
                                           NULL,
                                           NULL,
                                           0,      /* FIXME: Set some flags */
                                           GENERIC_ALL,
                                           NULL);
  if(!Session->WinlogonDesktop)
  {
    DbgPrint("WL: Failed to create Winlogon desktop (0x%X)\n", GetLastError());
    return FALSE;
  }
  
  /*
   * Create the screen saver desktop
   */
  Session->ScreenSaverDesktop = CreateDesktop(L"Screen-Saver",
                                              NULL,
                                              NULL,
                                              0,      /* FIXME: Set some flags */
                                              GENERIC_ALL,
                                              NULL);
  if(!Session->ScreenSaverDesktop)
  {
    DbgPrint("WL: Failed to create Screen-Saver desktop (0x%X)\n", GetLastError());
  402ad9:	ff 15 d8 72 40 00    	call   *0x4072d8
    return FALSE;
  402adf:	31 d2                	xor    %edx,%edx
  }
  
  return TRUE;
}
  402ae1:	89 d0                	mov    %edx,%eax
  402ae3:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402ae6:	c9                   	leave  
  402ae7:	c3                   	ret    
  402ae8:	83 ec 0c             	sub    $0xc,%esp
  402aeb:	50                   	push   %eax
  402aec:	e8 4f 09 00 00       	call   403440 <_SetProcessWindowStation@4>
  402af1:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
  402af8:	68 00 00 00 10       	push   $0x10000000
  402afd:	6a 00                	push   $0x0
  402aff:	6a 00                	push   $0x0
  402b01:	6a 00                	push   $0x0
  402b03:	68 98 58 40 00       	push   $0x405898
  402b08:	e8 43 09 00 00       	call   403450 <_CreateDesktopW@24>
  402b0d:	85 c0                	test   %eax,%eax
  402b0f:	89 43 70             	mov    %eax,0x70(%ebx)
  402b12:	59                   	pop    %ecx
  402b13:	5a                   	pop    %edx
  402b14:	75 12                	jne    402b28 <_WlxCreateWindowStationAndDesktops+0x88>
  402b16:	83 ec 10             	sub    $0x10,%esp
  402b19:	e8 32 07 00 00       	call   403250 <_GetLastError@0>
  402b1e:	5b                   	pop    %ebx
  402b1f:	5a                   	pop    %edx
  402b20:	50                   	push   %eax
  402b21:	68 a8 58 40 00       	push   $0x4058a8
  402b26:	eb b1                	jmp    402ad9 <_WlxCreateWindowStationAndDesktops+0x39>
  402b28:	51                   	push   %ecx
  402b29:	51                   	push   %ecx
  402b2a:	6a 00                	push   $0x0
  402b2c:	68 00 00 00 10       	push   $0x10000000
  402b31:	6a 00                	push   $0x0
  402b33:	6a 00                	push   $0x0
  402b35:	6a 00                	push   $0x0
  402b37:	68 d6 58 40 00       	push   $0x4058d6
  402b3c:	e8 0f 09 00 00       	call   403450 <_CreateDesktopW@24>
  402b41:	85 c0                	test   %eax,%eax
  402b43:	89 43 74             	mov    %eax,0x74(%ebx)
  402b46:	59                   	pop    %ecx
  402b47:	5a                   	pop    %edx
  402b48:	75 16                	jne    402b60 <_WlxCreateWindowStationAndDesktops+0xc0>
  402b4a:	83 ec 10             	sub    $0x10,%esp
  402b4d:	e8 fe 06 00 00       	call   403250 <_GetLastError@0>
  402b52:	5b                   	pop    %ebx
  402b53:	5a                   	pop    %edx
  402b54:	50                   	push   %eax
  402b55:	68 e8 58 40 00       	push   $0x4058e8
  402b5a:	e9 7a ff ff ff       	jmp    402ad9 <_WlxCreateWindowStationAndDesktops+0x39>
  402b5f:	90                   	nop    
  402b60:	51                   	push   %ecx
  402b61:	51                   	push   %ecx
  402b62:	6a 00                	push   $0x0
  402b64:	68 00 00 00 10       	push   $0x10000000
  402b69:	6a 00                	push   $0x0
  402b6b:	6a 00                	push   $0x0
  402b6d:	6a 00                	push   $0x0
  402b6f:	68 16 59 40 00       	push   $0x405916
  402b74:	e8 d7 08 00 00       	call   403450 <_CreateDesktopW@24>
  402b79:	85 c0                	test   %eax,%eax
  402b7b:	89 43 78             	mov    %eax,0x78(%ebx)
  402b7e:	5b                   	pop    %ebx
  402b7f:	5a                   	pop    %edx
  402b80:	ba 01 00 00 00       	mov    $0x1,%edx
  402b85:	0f 85 56 ff ff ff    	jne    402ae1 <_WlxCreateWindowStationAndDesktops+0x41>
  402b8b:	83 ec 10             	sub    $0x10,%esp
  402b8e:	e8 bd 06 00 00       	call   403250 <_GetLastError@0>
  402b93:	5a                   	pop    %edx
  402b94:	59                   	pop    %ecx
  402b95:	50                   	push   %eax
  402b96:	68 30 59 40 00       	push   $0x405930
  402b9b:	e9 39 ff ff ff       	jmp    402ad9 <_WlxCreateWindowStationAndDesktops+0x39>

00402ba0 <_DispatchSAS>:
  402ba0:	55                   	push   %ebp
  402ba1:	89 e5                	mov    %esp,%ebp
  402ba3:	8b 45 08             	mov    0x8(%ebp),%eax
  402ba6:	8b 55 0c             	mov    0xc(%ebp),%edx
  402ba9:	89 50 54             	mov    %edx,0x54(%eax)
  402bac:	5d                   	pop    %ebp
  402bad:	c3                   	ret    
  402bae:	89 f6                	mov    %esi,%esi

00402bb0 <_UninitSAS>:
  402bb0:	55                   	push   %ebp
  402bb1:	89 e5                	mov    %esp,%ebp
  402bb3:	53                   	push   %ebx
  402bb4:	50                   	push   %eax
  402bb5:	8b 5d 08             	mov    0x8(%ebp),%ebx
  402bb8:	8b 43 64             	mov    0x64(%ebx),%eax
  402bbb:	85 c0                	test   %eax,%eax
  402bbd:	75 05                	jne    402bc4 <_UninitSAS+0x14>
  402bbf:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402bc2:	c9                   	leave  
  402bc3:	c3                   	ret    
  402bc4:	83 ec 0c             	sub    $0xc,%esp
  402bc7:	50                   	push   %eax
  402bc8:	e8 93 08 00 00       	call   403460 <_DestroyWindow@4>
  402bcd:	c7 43 64 00 00 00 00 	movl   $0x0,0x64(%ebx)
  402bd4:	83 c4 0c             	add    $0xc,%esp
  402bd7:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402bda:	c9                   	leave  
  402bdb:	c3                   	ret    
  402bdc:	8d 74 26 00          	lea    0x0(%esi),%esi

00402be0 <_SetupSAS>:
  402be0:	55                   	push   %ebp
  402be1:	89 e5                	mov    %esp,%ebp
  402be3:	53                   	push   %ebx
  402be4:	53                   	push   %ebx
  402be5:	8b 5d 0c             	mov    0xc(%ebp),%ebx
  402be8:	6a 2e                	push   $0x2e
  402bea:	6a 03                	push   $0x3
  402bec:	6a 00                	push   $0x0
  402bee:	53                   	push   %ebx
  402bef:	e8 4c 07 00 00       	call   403340 <_RegisterHotKey@16>
  402bf4:	85 c0                	test   %eax,%eax
  402bf6:	75 28                	jne    402c20 <_SetupSAS+0x40>
  402bf8:	51                   	push   %ecx
  402bf9:	6a 3a                	push   $0x3a
  402bfb:	68 80 59 40 00       	push   $0x405980
  402c00:	68 86 59 40 00       	push   $0x405986
  402c05:	ff 15 d8 72 40 00    	call   *0x4072d8
  402c0b:	c7 04 24 90 59 40 00 	movl   $0x405990,(%esp)
  402c12:	ff 15 d8 72 40 00    	call   *0x4072d8
  402c18:	31 c0                	xor    %eax,%eax
  402c1a:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402c1d:	c9                   	leave  
  402c1e:	c3                   	ret    
  402c1f:	90                   	nop    
  402c20:	6a 1b                	push   $0x1b
  402c22:	6a 06                	push   $0x6
  402c24:	6a 01                	push   $0x1
  402c26:	53                   	push   %ebx
  402c27:	e8 14 07 00 00       	call   403340 <_RegisterHotKey@16>
  402c2c:	8b 55 08             	mov    0x8(%ebp),%edx
  402c2f:	85 c0                	test   %eax,%eax
  402c31:	89 42 60             	mov    %eax,0x60(%edx)
  402c34:	74 0a                	je     402c40 <_SetupSAS+0x60>
  402c36:	b8 01 00 00 00       	mov    $0x1,%eax
  402c3b:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402c3e:	c9                   	leave  
  402c3f:	c3                   	ret    
  402c40:	52                   	push   %edx
  402c41:	6a 42                	push   $0x42
  402c43:	68 80 59 40 00       	push   $0x405980
  402c48:	68 86 59 40 00       	push   $0x405986
  402c4d:	ff 15 d8 72 40 00    	call   *0x4072d8
  402c53:	c7 04 24 c4 59 40 00 	movl   $0x4059c4,(%esp)
  402c5a:	ff 15 d8 72 40 00    	call   *0x4072d8
  402c60:	83 c4 10             	add    $0x10,%esp
  402c63:	b8 01 00 00 00       	mov    $0x1,%eax
  402c68:	eb d1                	jmp    402c3b <_SetupSAS+0x5b>
  402c6a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

00402c70 <_DestroySAS>:
  402c70:	55                   	push   %ebp
  402c71:	89 e5                	mov    %esp,%ebp
  402c73:	53                   	push   %ebx
  402c74:	83 ec 0c             	sub    $0xc,%esp
  402c77:	8b 5d 0c             	mov    0xc(%ebp),%ebx
  402c7a:	6a 00                	push   $0x0
  402c7c:	53                   	push   %ebx
  402c7d:	e8 ce 06 00 00       	call   403350 <_UnregisterHotKey@8>
  402c82:	58                   	pop    %eax
  402c83:	8b 45 08             	mov    0x8(%ebp),%eax
  402c86:	5a                   	pop    %edx
  402c87:	8b 40 60             	mov    0x60(%eax),%eax
  402c8a:	85 c0                	test   %eax,%eax
  402c8c:	75 0a                	jne    402c98 <_DestroySAS+0x28>
  402c8e:	b8 01 00 00 00       	mov    $0x1,%eax
  402c93:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402c96:	c9                   	leave  
  402c97:	c3                   	ret    
  402c98:	51                   	push   %ecx
  402c99:	51                   	push   %ecx
  402c9a:	6a 01                	push   $0x1
  402c9c:	53                   	push   %ebx
  402c9d:	e8 ae 06 00 00       	call   403350 <_UnregisterHotKey@8>
  402ca2:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  402ca5:	58                   	pop    %eax
  402ca6:	b8 01 00 00 00       	mov    $0x1,%eax
  402cab:	5a                   	pop    %edx
  402cac:	c9                   	leave  
  402cad:	c3                   	ret    
  402cae:	89 f6                	mov    %esi,%esi

00402cb0 <_SASProc@16>:
  402cb0:	55                   	push   %ebp
  402cb1:	89 e5                	mov    %esp,%ebp
  402cb3:	57                   	push   %edi
  402cb4:	56                   	push   %esi
  402cb5:	53                   	push   %ebx
  402cb6:	83 ec 14             	sub    $0x14,%esp
  402cb9:	8b 75 08             	mov    0x8(%ebp),%esi
  402cbc:	8b 5d 0c             	mov    0xc(%ebp),%ebx
  402cbf:	8b 7d 14             	mov    0x14(%ebp),%edi
  402cc2:	6a eb                	push   $0xffffffeb
  402cc4:	56                   	push   %esi
  402cc5:	e8 a6 07 00 00       	call   403470 <_GetWindowLongW@8>
  402cca:	5a                   	pop    %edx
  402ccb:	85 c0                	test   %eax,%eax
  402ccd:	59                   	pop    %ecx
  402cce:	74 10                	je     402ce0 <_SASProc@16+0x30>
  402cd0:	83 fb 02             	cmp    $0x2,%ebx
  402cd3:	74 5b                	je     402d30 <_SASProc@16+0x80>
  402cd5:	77 1f                	ja     402cf6 <_SASProc@16+0x46>
  402cd7:	83 fb 01             	cmp    $0x1,%ebx
  402cda:	0f 84 a0 00 00 00    	je     402d80 <_SASProc@16+0xd0>
  402ce0:	57                   	push   %edi
  402ce1:	8b 4d 10             	mov    0x10(%ebp),%ecx
  402ce4:	51                   	push   %ecx
  402ce5:	53                   	push   %ebx
  402ce6:	56                   	push   %esi
  402ce7:	e8 94 07 00 00       	call   403480 <_DefWindowProcW@16>
  402cec:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  402cef:	5b                   	pop    %ebx
  402cf0:	5e                   	pop    %esi
  402cf1:	5f                   	pop    %edi
  402cf2:	5d                   	pop    %ebp
  402cf3:	c2 10 00             	ret    $0x10
  402cf6:	81 fb 12 03 00 00    	cmp    $0x312,%ebx
  402cfc:	74 47                	je     402d45 <_SASProc@16+0x95>
  402cfe:	81 fb 00 80 00 00    	cmp    $0x8000,%ebx
  402d04:	75 da                	jne    402ce0 <_SASProc@16+0x30>
  402d06:	89 fb                	mov    %edi,%ebx
  402d08:	83 e3 0b             	and    $0xb,%ebx
  402d0b:	83 fb 02             	cmp    $0x2,%ebx
  402d0e:	0f 97 c2             	seta   %dl
  402d11:	83 fb 08             	cmp    $0x8,%ebx
  402d14:	0f 95 c0             	setne  %al
  402d17:	25 ff 00 00 00       	and    $0xff,%eax
  402d1c:	85 c2                	test   %eax,%edx
  402d1e:	0f 85 06 01 00 00    	jne    402e2a <_SASProc@16+0x17a>
  402d24:	85 db                	test   %ebx,%ebx
  402d26:	75 73                	jne    402d9b <_SASProc@16+0xeb>
  402d28:	b8 01 00 00 00       	mov    $0x1,%eax
  402d2d:	eb bd                	jmp    402cec <_SASProc@16+0x3c>
  402d2f:	90                   	nop    
  402d30:	53                   	push   %ebx
  402d31:	53                   	push   %ebx
  402d32:	56                   	push   %esi
  402d33:	50                   	push   %eax
  402d34:	e8 37 ff ff ff       	call   402c70 <_DestroySAS>
  402d39:	31 c0                	xor    %eax,%eax
  402d3b:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  402d3e:	5b                   	pop    %ebx
  402d3f:	5e                   	pop    %esi
  402d40:	5f                   	pop    %edi
  402d41:	5d                   	pop    %ebp
  402d42:	c2 10 00             	ret    $0x10
  402d45:	8b 45 10             	mov    0x10(%ebp),%eax
  402d48:	85 c0                	test   %eax,%eax
  402d4a:	0f 84 b8 00 00 00    	je     402e08 <_SASProc@16+0x158>
  402d50:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
  402d54:	75 e3                	jne    402d39 <_SASProc@16+0x89>
  402d56:	56                   	push   %esi
  402d57:	68 b0 00 00 00       	push   $0xb0
  402d5c:	68 80 59 40 00       	push   $0x405980
  402d61:	68 86 59 40 00       	push   $0x405986
  402d66:	ff 15 d8 72 40 00    	call   *0x4072d8
  402d6c:	c7 04 24 fe 59 40 00 	movl   $0x4059fe,(%esp)
  402d73:	ff 15 d8 72 40 00    	call   *0x4072d8
  402d79:	83 c4 10             	add    $0x10,%esp
  402d7c:	31 c0                	xor    %eax,%eax
  402d7e:	eb bb                	jmp    402d3b <_SASProc@16+0x8b>
  402d80:	53                   	push   %ebx
  402d81:	53                   	push   %ebx
  402d82:	56                   	push   %esi
  402d83:	50                   	push   %eax
  402d84:	e8 57 fe ff ff       	call   402be0 <_SetupSAS>
  402d89:	83 c4 10             	add    $0x10,%esp
  402d8c:	85 c0                	test   %eax,%eax
  402d8e:	0f 94 c0             	sete   %al
  402d91:	25 ff 00 00 00       	and    $0xff,%eax
  402d96:	e9 51 ff ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402d9b:	50                   	push   %eax
  402d9c:	8b 7d 10             	mov    0x10(%ebp),%edi
  402d9f:	57                   	push   %edi
  402da0:	6a 00                	push   $0x0
  402da2:	68 00 04 00 00       	push   $0x400
  402da7:	e8 34 05 00 00       	call   4032e0 <_OpenProcess@12>
  402dac:	5e                   	pop    %esi
  402dad:	89 c3                	mov    %eax,%ebx
  402daf:	85 c0                	test   %eax,%eax
  402db1:	0f 84 45 01 00 00    	je     402efc <_SASProc@16+0x24c>
  402db7:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
  402dba:	57                   	push   %edi
  402dbb:	50                   	push   %eax
  402dbc:	6a 08                	push   $0x8
  402dbe:	53                   	push   %ebx
  402dbf:	e8 8c 07 00 00       	call   403550 <_OpenProcessToken@12>
  402dc4:	5e                   	pop    %esi
  402dc5:	85 c0                	test   %eax,%eax
  402dc7:	0f 85 8b 00 00 00    	jne    402e58 <_SASProc@16+0x1a8>
  402dcd:	51                   	push   %ecx
  402dce:	6a 74                	push   $0x74
  402dd0:	68 80 59 40 00       	push   $0x405980
  402dd5:	68 86 59 40 00       	push   $0x405986
  402dda:	ff 15 d8 72 40 00    	call   *0x4072d8
  402de0:	e8 6b 04 00 00       	call   403250 <_GetLastError@0>
  402de5:	5f                   	pop    %edi
  402de6:	5a                   	pop    %edx
  402de7:	50                   	push   %eax
  402de8:	68 14 5a 40 00       	push   $0x405a14
  402ded:	ff 15 d8 72 40 00    	call   *0x4072d8
  402df3:	89 1c 24             	mov    %ebx,(%esp)
  402df6:	e8 05 04 00 00       	call   403200 <_CloseHandle@4>
  402dfb:	b8 08 00 00 c0       	mov    $0xc0000008,%eax
  402e00:	83 c4 0c             	add    $0xc,%esp
  402e03:	e9 e4 fe ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402e08:	57                   	push   %edi
  402e09:	68 ad 00 00 00       	push   $0xad
  402e0e:	68 80 59 40 00       	push   $0x405980
  402e13:	68 86 59 40 00       	push   $0x405986
  402e18:	ff 15 d8 72 40 00    	call   *0x4072d8
  402e1e:	c7 04 24 3b 5a 40 00 	movl   $0x405a3b,(%esp)
  402e25:	e9 49 ff ff ff       	jmp    402d73 <_SASProc@16+0xc3>
  402e2a:	51                   	push   %ecx
  402e2b:	6a 65                	push   $0x65
  402e2d:	68 80 59 40 00       	push   $0x405980
  402e32:	68 86 59 40 00       	push   $0x405986
  402e37:	ff 15 d8 72 40 00    	call   *0x4072d8
  402e3d:	58                   	pop    %eax
  402e3e:	5a                   	pop    %edx
  402e3f:	53                   	push   %ebx
  402e40:	68 50 5a 40 00       	push   $0x405a50
  402e45:	ff 15 d8 72 40 00    	call   *0x4072d8
  402e4b:	83 c4 10             	add    $0x10,%esp
  402e4e:	b8 0d 00 00 c0       	mov    $0xc000000d,%eax
  402e53:	e9 94 fe ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402e58:	83 ec 0c             	sub    $0xc,%esp
  402e5b:	53                   	push   %ebx
  402e5c:	e8 9f 03 00 00       	call   403200 <_CloseHandle@4>
  402e61:	5b                   	pop    %ebx
  402e62:	5e                   	pop    %esi
  402e63:	6a 20                	push   $0x20
  402e65:	6a 00                	push   $0x0
  402e67:	51                   	push   %ecx
  402e68:	e8 43 04 00 00       	call   4032b0 <_GetProcessHeap@0>
  402e6d:	89 04 24             	mov    %eax,(%esp)
  402e70:	e8 4b 04 00 00       	call   4032c0 <_HeapAlloc@12>
  402e75:	5a                   	pop    %edx
  402e76:	89 c3                	mov    %eax,%ebx
  402e78:	85 c0                	test   %eax,%eax
  402e7a:	0f 84 73 01 00 00    	je     402ff3 <_SASProc@16+0x343>
  402e80:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
  402e86:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
  402e8d:	50                   	push   %eax
  402e8e:	8d 43 08             	lea    0x8(%ebx),%eax
  402e91:	50                   	push   %eax
  402e92:	68 74 5a 40 00       	push   $0x405a74
  402e97:	6a 00                	push   $0x0
  402e99:	e8 c2 06 00 00       	call   403560 <_LookupPrivilegeValueW@12>
  402e9e:	5f                   	pop    %edi
  402e9f:	85 c0                	test   %eax,%eax
  402ea1:	0f 85 88 00 00 00    	jne    402f2f <_SASProc@16+0x27f>
  402ea7:	56                   	push   %esi
  402ea8:	68 84 00 00 00       	push   $0x84
  402ead:	68 80 59 40 00       	push   $0x405980
  402eb2:	68 86 59 40 00       	push   $0x405986
  402eb7:	ff 15 d8 72 40 00    	call   *0x4072d8
  402ebd:	e8 8e 03 00 00       	call   403250 <_GetLastError@0>
  402ec2:	5a                   	pop    %edx
  402ec3:	59                   	pop    %ecx
  402ec4:	50                   	push   %eax
  402ec5:	68 9c 5a 40 00       	push   $0x405a9c
  402eca:	ff 15 d8 72 40 00    	call   *0x4072d8
  402ed0:	83 c4 0c             	add    $0xc,%esp
  402ed3:	53                   	push   %ebx
  402ed4:	6a 00                	push   $0x0
  402ed6:	50                   	push   %eax
  402ed7:	e8 d4 03 00 00       	call   4032b0 <_GetProcessHeap@0>
  402edc:	89 04 24             	mov    %eax,(%esp)
  402edf:	e8 ec 03 00 00       	call   4032d0 <_HeapFree@12>
  402ee4:	50                   	push   %eax
  402ee5:	50                   	push   %eax
  402ee6:	8b 7d f0             	mov    0xfffffff0(%ebp),%edi
  402ee9:	57                   	push   %edi
  402eea:	e8 11 03 00 00       	call   403200 <_CloseHandle@4>
  402eef:	b8 01 00 00 c0       	mov    $0xc0000001,%eax
  402ef4:	83 c4 0c             	add    $0xc,%esp
  402ef7:	e9 f0 fd ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402efc:	53                   	push   %ebx
  402efd:	6a 6f                	push   $0x6f
  402eff:	68 80 59 40 00       	push   $0x405980
  402f04:	68 86 59 40 00       	push   $0x405986
  402f09:	ff 15 d8 72 40 00    	call   *0x4072d8
  402f0f:	e8 3c 03 00 00       	call   403250 <_GetLastError@0>
  402f14:	5a                   	pop    %edx
  402f15:	59                   	pop    %ecx
  402f16:	50                   	push   %eax
  402f17:	68 c8 5a 40 00       	push   $0x405ac8
  402f1c:	ff 15 d8 72 40 00    	call   *0x4072d8
  402f22:	83 c4 10             	add    $0x10,%esp
  402f25:	b8 08 00 00 c0       	mov    $0xc0000008,%eax
  402f2a:	e9 bd fd ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402f2f:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
  402f32:	56                   	push   %esi
  402f33:	50                   	push   %eax
  402f34:	53                   	push   %ebx
  402f35:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
  402f38:	51                   	push   %ecx
  402f39:	e8 32 06 00 00       	call   403570 <_PrivilegeCheck@12>
  402f3e:	5a                   	pop    %edx
  402f3f:	85 c0                	test   %eax,%eax
  402f41:	75 55                	jne    402f98 <_SASProc@16+0x2e8>
  402f43:	57                   	push   %edi
  402f44:	68 8b 00 00 00       	push   $0x8b
  402f49:	68 80 59 40 00       	push   $0x405980
  402f4e:	68 86 59 40 00       	push   $0x405986
  402f53:	ff 15 d8 72 40 00    	call   *0x4072d8
  402f59:	e8 f2 02 00 00       	call   403250 <_GetLastError@0>
  402f5e:	59                   	pop    %ecx
  402f5f:	5e                   	pop    %esi
  402f60:	50                   	push   %eax
  402f61:	68 ec 5a 40 00       	push   $0x405aec
  402f66:	ff 15 d8 72 40 00    	call   *0x4072d8
  402f6c:	83 c4 0c             	add    $0xc,%esp
  402f6f:	53                   	push   %ebx
  402f70:	6a 00                	push   $0x0
  402f72:	52                   	push   %edx
  402f73:	e8 38 03 00 00       	call   4032b0 <_GetProcessHeap@0>
  402f78:	89 04 24             	mov    %eax,(%esp)
  402f7b:	e8 50 03 00 00       	call   4032d0 <_HeapFree@12>
  402f80:	50                   	push   %eax
  402f81:	50                   	push   %eax
  402f82:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
  402f85:	50                   	push   %eax
  402f86:	e8 75 02 00 00       	call   403200 <_CloseHandle@4>
  402f8b:	b8 22 00 00 c0       	mov    $0xc0000022,%eax
  402f90:	83 c4 0c             	add    $0xc,%esp
  402f93:	e9 54 fd ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402f98:	50                   	push   %eax
  402f99:	53                   	push   %ebx
  402f9a:	6a 00                	push   $0x0
  402f9c:	50                   	push   %eax
  402f9d:	e8 0e 03 00 00       	call   4032b0 <_GetProcessHeap@0>
  402fa2:	89 04 24             	mov    %eax,(%esp)
  402fa5:	e8 26 03 00 00       	call   4032d0 <_HeapFree@12>
  402faa:	50                   	push   %eax
  402fab:	50                   	push   %eax
  402fac:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
  402faf:	50                   	push   %eax
  402fb0:	e8 4b 02 00 00       	call   403200 <_CloseHandle@4>
  402fb5:	8b 7d ec             	mov    0xffffffec(%ebp),%edi
  402fb8:	83 c4 0c             	add    $0xc,%esp
  402fbb:	85 ff                	test   %edi,%edi
  402fbd:	0f 85 65 fd ff ff    	jne    402d28 <_SASProc@16+0x78>
  402fc3:	56                   	push   %esi
  402fc4:	68 94 00 00 00       	push   $0x94
  402fc9:	68 80 59 40 00       	push   $0x405980
  402fce:	68 86 59 40 00       	push   $0x405986
  402fd3:	ff 15 d8 72 40 00    	call   *0x4072d8
  402fd9:	c7 04 24 14 5b 40 00 	movl   $0x405b14,(%esp)
  402fe0:	ff 15 d8 72 40 00    	call   *0x4072d8
  402fe6:	83 c4 10             	add    $0x10,%esp
  402fe9:	b8 22 00 00 c0       	mov    $0xc0000022,%eax
  402fee:	e9 f9 fc ff ff       	jmp    402cec <_SASProc@16+0x3c>
  402ff3:	50                   	push   %eax
  402ff4:	6a 7c                	push   $0x7c
  402ff6:	68 80 59 40 00       	push   $0x405980
  402ffb:	68 86 59 40 00       	push   $0x405986
  403000:	ff 15 d8 72 40 00    	call   *0x4072d8
  403006:	c7 04 24 38 5b 40 00 	movl   $0x405b38,(%esp)
  40300d:	ff 15 d8 72 40 00    	call   *0x4072d8
  403013:	58                   	pop    %eax
  403014:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
  403017:	50                   	push   %eax
  403018:	e8 e3 01 00 00       	call   403200 <_CloseHandle@4>
  40301d:	b8 17 00 00 c0       	mov    $0xc0000017,%eax
  403022:	83 c4 0c             	add    $0xc,%esp
  403025:	e9 c2 fc ff ff       	jmp    402cec <_SASProc@16+0x3c>
  40302a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

00403030 <_InitializeSAS>:
  403030:	55                   	push   %ebp
  403031:	89 e5                	mov    %esp,%ebp
  403033:	53                   	push   %ebx
  403034:	83 ec 40             	sub    $0x40,%esp
  403037:	a1 70 60 40 00       	mov    0x406070,%eax
  40303c:	8b 5d 08             	mov    0x8(%ebp),%ebx
  40303f:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
  403042:	8d 45 c8             	lea    0xffffffc8(%ebp),%eax
  403045:	c7 45 c8 30 00 00 00 	movl   $0x30,0xffffffc8(%ebp)
  40304c:	c7 45 cc 00 08 00 00 	movl   $0x800,0xffffffcc(%ebp)
  403053:	c7 45 d0 b0 2c 40 00 	movl   $0x402cb0,0xffffffd0(%ebp)
  40305a:	c7 45 d4 00 00 00 00 	movl   $0x0,0xffffffd4(%ebp)
  403061:	c7 45 d8 00 00 00 00 	movl   $0x0,0xffffffd8(%ebp)
  403068:	c7 45 e0 00 00 00 00 	movl   $0x0,0xffffffe0(%ebp)
  40306f:	c7 45 e4 00 00 00 00 	movl   $0x0,0xffffffe4(%ebp)
  403076:	c7 45 e8 00 00 00 00 	movl   $0x0,0xffffffe8(%ebp)
  40307d:	c7 45 ec 00 00 00 00 	movl   $0x0,0xffffffec(%ebp)
  403084:	c7 45 f0 64 5b 40 00 	movl   $0x405b64,0xfffffff0(%ebp)
  40308b:	c7 45 f4 00 00 00 00 	movl   $0x0,0xfffffff4(%ebp)
  403092:	50                   	push   %eax
  403093:	e8 f8 03 00 00       	call   403490 <_RegisterClassExW@4>
  403098:	a1 70 60 40 00       	mov    0x406070,%eax
  40309d:	83 c4 0c             	add    $0xc,%esp
  4030a0:	6a 00                	push   $0x0
  4030a2:	50                   	push   %eax
  4030a3:	6a 00                	push   $0x0
  4030a5:	6a 00                	push   $0x0
  4030a7:	6a 00                	push   $0x0
  4030a9:	6a 00                	push   $0x0
  4030ab:	6a 00                	push   $0x0
  4030ad:	6a 00                	push   $0x0
  4030af:	68 00 00 00 80       	push   $0x80000000
  4030b4:	68 86 5b 40 00       	push   $0x405b86
  4030b9:	68 64 5b 40 00       	push   $0x405b64
  4030be:	6a 00                	push   $0x0
  4030c0:	e8 db 03 00 00       	call   4034a0 <_CreateWindowExW@48>
  4030c5:	85 c0                	test   %eax,%eax
  4030c7:	89 43 64             	mov    %eax,0x64(%ebx)
  4030ca:	75 2c                	jne    4030f8 <_InitializeSAS+0xc8>
  4030cc:	51                   	push   %ecx
  4030cd:	68 e5 00 00 00       	push   $0xe5
  4030d2:	68 80 59 40 00       	push   $0x405980
  4030d7:	68 86 59 40 00       	push   $0x405986
  4030dc:	ff 15 d8 72 40 00    	call   *0x4072d8
  4030e2:	c7 04 24 90 5b 40 00 	movl   $0x405b90,(%esp)
  4030e9:	ff 15 d8 72 40 00    	call   *0x4072d8
  4030ef:	31 d2                	xor    %edx,%edx
  4030f1:	89 d0                	mov    %edx,%eax
  4030f3:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  4030f6:	c9                   	leave  
  4030f7:	c3                   	ret    
  4030f8:	52                   	push   %edx
  4030f9:	53                   	push   %ebx
  4030fa:	6a eb                	push   $0xffffffeb
  4030fc:	50                   	push   %eax
  4030fd:	e8 ae 03 00 00       	call   4034b0 <_SetWindowLongW@12>
  403102:	50                   	push   %eax
  403103:	8b 43 68             	mov    0x68(%ebx),%eax
  403106:	50                   	push   %eax
  403107:	8b 43 64             	mov    0x64(%ebx),%eax
  40310a:	50                   	push   %eax
  40310b:	e8 b0 03 00 00       	call   4034c0 <_SetLogonNotifyWindow@8>
  403110:	5a                   	pop    %edx
  403111:	85 c0                	test   %eax,%eax
  403113:	59                   	pop    %ecx
  403114:	ba 01 00 00 00       	mov    $0x1,%edx
  403119:	75 d6                	jne    4030f1 <_InitializeSAS+0xc1>
  40311b:	83 ec 0c             	sub    $0xc,%esp
  40311e:	53                   	push   %ebx
  40311f:	e8 8c fa ff ff       	call   402bb0 <_UninitSAS>
  403124:	83 c4 0c             	add    $0xc,%esp
  403127:	68 f0 00 00 00       	push   $0xf0
  40312c:	68 80 59 40 00       	push   $0x405980
  403131:	68 86 59 40 00       	push   $0x405986
  403136:	ff 15 d8 72 40 00    	call   *0x4072d8
  40313c:	c7 04 24 b4 5b 40 00 	movl   $0x405bb4,(%esp)
  403143:	eb a4                	jmp    4030e9 <_InitializeSAS+0xb9>
  403145:	90                   	nop    
  403146:	90                   	nop    
  403147:	90                   	nop    
  403148:	90                   	nop    
  403149:	90                   	nop    
  40314a:	90                   	nop    
  40314b:	90                   	nop    
  40314c:	90                   	nop    
  40314d:	90                   	nop    
  40314e:	90                   	nop    
  40314f:	90                   	nop    

00403150 <_wcscpy>:
  403150:	ff 25 ec 72 40 00    	jmp    *0x4072ec
  403156:	90                   	nop    
  403157:	90                   	nop    
	...

00403160 <_DbgPrint>:
  403160:	ff 25 d8 72 40 00    	jmp    *0x4072d8
  403166:	90                   	nop    
  403167:	90                   	nop    
	...

00403170 <_NtShutdownSystem@4>:
  403170:	ff 25 e0 72 40 00    	jmp    *0x4072e0
  403176:	90                   	nop    
  403177:	90                   	nop    
	...

00403180 <_NtRaiseHardError@24>:
  403180:	ff 25 dc 72 40 00    	jmp    *0x4072dc
  403186:	90                   	nop    
  403187:	90                   	nop    
	...

00403190 <_RtlDestroyEnvironment@4>:
  403190:	ff 25 e4 72 40 00    	jmp    *0x4072e4
  403196:	90                   	nop    
  403197:	90                   	nop    
	...

004031a0 <_wcscat>:
  4031a0:	ff 25 e8 72 40 00    	jmp    *0x4072e8
  4031a6:	90                   	nop    
  4031a7:	90                   	nop    
	...

004031b0 <_SetUnhandledExceptionFilter@4>:
  4031b0:	ff 25 c4 72 40 00    	jmp    *0x4072c4
  4031b6:	90                   	nop    
  4031b7:	90                   	nop    
	...

004031c0 <_ExitProcess@4>:
  4031c0:	ff 25 88 72 40 00    	jmp    *0x407288
  4031c6:	90                   	nop    
  4031c7:	90                   	nop    
	...

004031d0 <_CreateProcessW@40>:
  4031d0:	ff 25 84 72 40 00    	jmp    *0x407284
  4031d6:	90                   	nop    
  4031d7:	90                   	nop    
	...

004031e0 <_WaitForSingleObject@8>:
  4031e0:	ff 25 cc 72 40 00    	jmp    *0x4072cc
  4031e6:	90                   	nop    
  4031e7:	90                   	nop    
	...

004031f0 <_GetExitCodeProcess@8>:
  4031f0:	ff 25 94 72 40 00    	jmp    *0x407294
  4031f6:	90                   	nop    
  4031f7:	90                   	nop    
	...

00403200 <_CloseHandle@4>:
  403200:	ff 25 80 72 40 00    	jmp    *0x407280
  403206:	90                   	nop    
  403207:	90                   	nop    
	...

00403210 <_ExpandEnvironmentStringsW@12>:
  403210:	ff 25 8c 72 40 00    	jmp    *0x40728c
  403216:	90                   	nop    
  403217:	90                   	nop    
	...

00403220 <_OutputDebugStringW@4>:
  403220:	ff 25 c0 72 40 00    	jmp    *0x4072c0
  403226:	90                   	nop    
  403227:	90                   	nop    
	...

00403230 <_Sleep@4>:
  403230:	ff 25 c8 72 40 00    	jmp    *0x4072c8
  403236:	90                   	nop    
  403237:	90                   	nop    
	...

00403240 <_OpenEventW@12>:
  403240:	ff 25 b8 72 40 00    	jmp    *0x4072b8
  403246:	90                   	nop    
  403247:	90                   	nop    
	...

00403250 <_GetLastError@0>:
  403250:	ff 25 98 72 40 00    	jmp    *0x407298
  403256:	90                   	nop    
  403257:	90                   	nop    
	...

00403260 <_GetCurrentProcessId@0>:
  403260:	ff 25 90 72 40 00    	jmp    *0x407290
  403266:	90                   	nop    
  403267:	90                   	nop    
	...

00403270 <_GetWindowsDirectoryW@8>:
  403270:	ff 25 a8 72 40 00    	jmp    *0x4072a8
  403276:	90                   	nop    
  403277:	90                   	nop    
	...

00403280 <_GetSystemDirectoryW@8>:
  403280:	ff 25 a4 72 40 00    	jmp    *0x4072a4
  403286:	90                   	nop    
  403287:	90                   	nop    
	...

00403290 <_LoadLibraryW@4>:
  403290:	ff 25 b4 72 40 00    	jmp    *0x4072b4
  403296:	90                   	nop    
  403297:	90                   	nop    
	...

004032a0 <_GetProcAddress@8>:
  4032a0:	ff 25 9c 72 40 00    	jmp    *0x40729c
  4032a6:	90                   	nop    
  4032a7:	90                   	nop    
	...

004032b0 <_GetProcessHeap@0>:
  4032b0:	ff 25 a0 72 40 00    	jmp    *0x4072a0
  4032b6:	90                   	nop    
  4032b7:	90                   	nop    
	...

004032c0 <_HeapAlloc@12>:
  4032c0:	ff 25 ac 72 40 00    	jmp    *0x4072ac
  4032c6:	90                   	nop    
  4032c7:	90                   	nop    
	...

004032d0 <_HeapFree@12>:
  4032d0:	ff 25 b0 72 40 00    	jmp    *0x4072b0
  4032d6:	90                   	nop    
  4032d7:	90                   	nop    
	...

004032e0 <_OpenProcess@12>:
  4032e0:	ff 25 bc 72 40 00    	jmp    *0x4072bc
  4032e6:	90                   	nop    
  4032e7:	90                   	nop    
	...

004032f0 <_EndDialog@8>:
  4032f0:	ff 25 14 73 40 00    	jmp    *0x407314
  4032f6:	90                   	nop    
  4032f7:	90                   	nop    
	...

00403300 <_GetSystemMenu@8>:
  403300:	ff 25 24 73 40 00    	jmp    *0x407324
  403306:	90                   	nop    
  403307:	90                   	nop    
	...

00403310 <_RemoveMenu@12>:
  403310:	ff 25 40 73 40 00    	jmp    *0x407340
  403316:	90                   	nop    
  403317:	90                   	nop    
	...

00403320 <_GetDlgItem@8>:
  403320:	ff 25 18 73 40 00    	jmp    *0x407318
  403326:	90                   	nop    
  403327:	90                   	nop    
	...

00403330 <_SetFocus@4>:
  403330:	ff 25 48 73 40 00    	jmp    *0x407348
  403336:	90                   	nop    
  403337:	90                   	nop    
	...

00403340 <_RegisterHotKey@16>:
  403340:	ff 25 38 73 40 00    	jmp    *0x407338
  403346:	90                   	nop    
  403347:	90                   	nop    
	...

00403350 <_UnregisterHotKey@8>:
  403350:	ff 25 64 73 40 00    	jmp    *0x407364
  403356:	90                   	nop    
  403357:	90                   	nop    
	...

00403360 <_LoadStringW@16>:
  403360:	ff 25 2c 73 40 00    	jmp    *0x40732c
  403366:	90                   	nop    
  403367:	90                   	nop    
	...

00403370 <_TranslateMessage@4>:
  403370:	ff 25 60 73 40 00    	jmp    *0x407360
  403376:	90                   	nop    
  403377:	90                   	nop    
	...

00403380 <_DispatchMessageW@4>:
  403380:	ff 25 10 73 40 00    	jmp    *0x407310
  403386:	90                   	nop    
  403387:	90                   	nop    
	...

00403390 <_GetMessageW@16>:
  403390:	ff 25 20 73 40 00    	jmp    *0x407320
  403396:	90                   	nop    
  403397:	90                   	nop    
	...

004033a0 <_RegisterLogonProcess@8>:
  4033a0:	ff 25 3c 73 40 00    	jmp    *0x40733c
  4033a6:	90                   	nop    
  4033a7:	90                   	nop    
	...

004033b0 <_SetThreadDesktop@4>:
  4033b0:	ff 25 54 73 40 00    	jmp    *0x407354
  4033b6:	90                   	nop    
  4033b7:	90                   	nop    
	...

004033c0 <_SwitchDesktop@4>:
  4033c0:	ff 25 5c 73 40 00    	jmp    *0x40735c
  4033c6:	90                   	nop    
  4033c7:	90                   	nop    
	...

004033d0 <_DialogBoxParamW@20>:
  4033d0:	ff 25 0c 73 40 00    	jmp    *0x40730c
  4033d6:	90                   	nop    
  4033d7:	90                   	nop    
	...

004033e0 <_UpdatePerUserSystemParameters@8>:
  4033e0:	ff 25 68 73 40 00    	jmp    *0x407368
  4033e6:	90                   	nop    
  4033e7:	90                   	nop    
	...

004033f0 <_PeekMessageW@20>:
  4033f0:	ff 25 30 73 40 00    	jmp    *0x407330
  4033f6:	90                   	nop    
  4033f7:	90                   	nop    
	...

00403400 <_wsprintfW>:
  403400:	ff 25 6c 73 40 00    	jmp    *0x40736c
  403406:	90                   	nop    
  403407:	90                   	nop    
	...

00403410 <_GetDlgItemTextW@16>:
  403410:	ff 25 1c 73 40 00    	jmp    *0x40731c
  403416:	90                   	nop    
  403417:	90                   	nop    
	...

00403420 <_SetDlgItemTextW@12>:
  403420:	ff 25 44 73 40 00    	jmp    *0x407344
  403426:	90                   	nop    
  403427:	90                   	nop    
	...

00403430 <_CreateWindowStationW@16>:
  403430:	ff 25 00 73 40 00    	jmp    *0x407300
  403436:	90                   	nop    
  403437:	90                   	nop    
	...

00403440 <_SetProcessWindowStation@4>:
  403440:	ff 25 50 73 40 00    	jmp    *0x407350
  403446:	90                   	nop    
  403447:	90                   	nop    
	...

00403450 <_CreateDesktopW@24>:
  403450:	ff 25 f8 72 40 00    	jmp    *0x4072f8
  403456:	90                   	nop    
  403457:	90                   	nop    
	...

00403460 <_DestroyWindow@4>:
  403460:	ff 25 08 73 40 00    	jmp    *0x407308
  403466:	90                   	nop    
  403467:	90                   	nop    
	...

00403470 <_GetWindowLongW@8>:
  403470:	ff 25 28 73 40 00    	jmp    *0x407328
  403476:	90                   	nop    
  403477:	90                   	nop    
	...

00403480 <_DefWindowProcW@16>:
  403480:	ff 25 04 73 40 00    	jmp    *0x407304
  403486:	90                   	nop    
  403487:	90                   	nop    
	...

00403490 <_RegisterClassExW@4>:
  403490:	ff 25 34 73 40 00    	jmp    *0x407334
  403496:	90                   	nop    
  403497:	90                   	nop    
	...

004034a0 <_CreateWindowExW@48>:
  4034a0:	ff 25 fc 72 40 00    	jmp    *0x4072fc
  4034a6:	90                   	nop    
  4034a7:	90                   	nop    
	...

004034b0 <_SetWindowLongW@12>:
  4034b0:	ff 25 58 73 40 00    	jmp    *0x407358
  4034b6:	90                   	nop    
  4034b7:	90                   	nop    
	...

004034c0 <_SetLogonNotifyWindow@8>:
  4034c0:	ff 25 4c 73 40 00    	jmp    *0x40734c
  4034c6:	90                   	nop    
  4034c7:	90                   	nop    
	...

004034d0 <_RegOpenKeyExW@20>:
  4034d0:	ff 25 68 72 40 00    	jmp    *0x407268
  4034d6:	90                   	nop    
  4034d7:	90                   	nop    
	...

004034e0 <_RegQueryValueExW@24>:
  4034e0:	ff 25 6c 72 40 00    	jmp    *0x40726c
  4034e6:	90                   	nop    
  4034e7:	90                   	nop    
	...

004034f0 <_RegCloseKey@4>:
  4034f0:	ff 25 64 72 40 00    	jmp    *0x407264
  4034f6:	90                   	nop    
  4034f7:	90                   	nop    
	...

00403500 <_RegSetValueExW@24>:
  403500:	ff 25 70 72 40 00    	jmp    *0x407270
  403506:	90                   	nop    
  403507:	90                   	nop    
	...

00403510 <_LogonUserW@24>:
  403510:	ff 25 54 72 40 00    	jmp    *0x407254
  403516:	90                   	nop    
  403517:	90                   	nop    
	...

00403520 <_ImpersonateLoggedOnUser@4>:
  403520:	ff 25 50 72 40 00    	jmp    *0x407250
  403526:	90                   	nop    
  403527:	90                   	nop    
	...

00403530 <_RevertToSelf@0>:
  403530:	ff 25 74 72 40 00    	jmp    *0x407274
  403536:	90                   	nop    
  403537:	90                   	nop    
	...

00403540 <_CreateProcessAsUserW@44>:
  403540:	ff 25 4c 72 40 00    	jmp    *0x40724c
  403546:	90                   	nop    
  403547:	90                   	nop    
	...

00403550 <_OpenProcessToken@12>:
  403550:	ff 25 5c 72 40 00    	jmp    *0x40725c
  403556:	90                   	nop    
  403557:	90                   	nop    
	...

00403560 <_LookupPrivilegeValueW@12>:
  403560:	ff 25 58 72 40 00    	jmp    *0x407258
  403566:	90                   	nop    
  403567:	90                   	nop    
	...

00403570 <_PrivilegeCheck@12>:
  403570:	ff 25 60 72 40 00    	jmp    *0x407260
  403576:	90                   	nop    
  403577:	90                   	nop    
	...

00403580 <_LoadUserProfileW@8>:
  403580:	ff 25 80 73 40 00    	jmp    *0x407380
  403586:	90                   	nop    
  403587:	90                   	nop    
	...

00403590 <_CreateEnvironmentBlock@12>:
  403590:	ff 25 78 73 40 00    	jmp    *0x407378
  403596:	90                   	nop    
  403597:	90                   	nop    
	...

004035a0 <_UnloadUserProfile@8>:
  4035a0:	ff 25 84 73 40 00    	jmp    *0x407384
  4035a6:	90                   	nop    
  4035a7:	90                   	nop    
	...

004035b0 <_DestroyEnvironmentBlock@4>:
  4035b0:	ff 25 7c 73 40 00    	jmp    *0x40737c
  4035b6:	90                   	nop    
  4035b7:	90                   	nop    
	...

004035c0 <_main>:
  4035c0:	55                   	push   %ebp
  4035c1:	b8 10 00 00 00       	mov    $0x10,%eax
  4035c6:	89 e5                	mov    %esp,%ebp
  4035c8:	53                   	push   %ebx
  4035c9:	83 ec 64             	sub    $0x64,%esp
  4035cc:	83 e4 f0             	and    $0xfffffff0,%esp
  4035cf:	e8 4c 05 00 00       	call   403b20 <___chkstk>
  4035d4:	e8 e7 01 00 00       	call   4037c0 <___main>
  4035d9:	e8 82 06 00 00       	call   403c60 <_GetCommandLineA@0>
  4035de:	89 c3                	mov    %eax,%ebx
  4035e0:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
  4035e3:	89 04 24             	mov    %eax,(%esp)
  4035e6:	e8 85 06 00 00       	call   403c70 <_GetStartupInfoA@4>
  4035eb:	83 ec 04             	sub    $0x4,%esp
  4035ee:	85 db                	test   %ebx,%ebx
  4035f0:	75 06                	jne    4035f8 <_main+0x38>
  4035f2:	e9 9f 00 00 00       	jmp    403696 <_main+0xd6>
  4035f7:	43                   	inc    %ebx
  4035f8:	0f b6 0b             	movzbl (%ebx),%ecx
  4035fb:	80 f9 20             	cmp    $0x20,%cl
  4035fe:	0f 94 c0             	sete   %al
  403601:	80 f9 09             	cmp    $0x9,%cl
  403604:	0f 94 c2             	sete   %dl
  403607:	09 d0                	or     %edx,%eax
  403609:	a8 01                	test   $0x1,%al
  40360b:	75 ea                	jne    4035f7 <_main+0x37>
  40360d:	80 f9 22             	cmp    $0x22,%cl
  403610:	74 3e                	je     403650 <_main+0x90>
  403612:	80 f9 20             	cmp    $0x20,%cl
  403615:	0f 95 c0             	setne  %al
  403618:	31 d2                	xor    %edx,%edx
  40361a:	80 f9 09             	cmp    $0x9,%cl
  40361d:	0f 95 c2             	setne  %dl
  403620:	85 d0                	test   %edx,%eax
  403622:	74 4c                	je     403670 <_main+0xb0>
  403624:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  40362a:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi
  403630:	84 c9                	test   %cl,%cl
  403632:	74 3c                	je     403670 <_main+0xb0>
  403634:	43                   	inc    %ebx
  403635:	0f b6 0b             	movzbl (%ebx),%ecx
  403638:	80 f9 20             	cmp    $0x20,%cl
  40363b:	0f 95 c0             	setne  %al
  40363e:	31 d2                	xor    %edx,%edx
  403640:	80 f9 09             	cmp    $0x9,%cl
  403643:	0f 95 c2             	setne  %dl
  403646:	85 d0                	test   %edx,%eax
  403648:	75 e6                	jne    403630 <_main+0x70>
  40364a:	eb 24                	jmp    403670 <_main+0xb0>
  40364c:	8d 74 26 00          	lea    0x0(%esi),%esi
  403650:	43                   	inc    %ebx
  403651:	0f b6 0b             	movzbl (%ebx),%ecx
  403654:	80 f9 22             	cmp    $0x22,%cl
  403657:	0f 95 c0             	setne  %al
  40365a:	31 d2                	xor    %edx,%edx
  40365c:	84 c9                	test   %cl,%cl
  40365e:	0f 95 c2             	setne  %dl
  403661:	85 d0                	test   %edx,%eax
  403663:	75 eb                	jne    403650 <_main+0x90>
  403665:	80 f9 22             	cmp    $0x22,%cl
  403668:	74 68                	je     4036d2 <_main+0x112>
  40366a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  403670:	80 f9 20             	cmp    $0x20,%cl
  403673:	0f 94 c0             	sete   %al
  403676:	80 f9 09             	cmp    $0x9,%cl
  403679:	0f 94 c2             	sete   %dl
  40367c:	eb 12                	jmp    403690 <_main+0xd0>
  40367e:	89 f6                	mov    %esi,%esi
  403680:	43                   	inc    %ebx
  403681:	0f b6 0b             	movzbl (%ebx),%ecx
  403684:	80 f9 20             	cmp    $0x20,%cl
  403687:	0f 94 c2             	sete   %dl
  40368a:	80 f9 09             	cmp    $0x9,%cl
  40368d:	0f 94 c0             	sete   %al
  403690:	09 d0                	or     %edx,%eax
  403692:	a8 01                	test   $0x1,%al
  403694:	75 ea                	jne    403680 <_main+0xc0>
  403696:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
  40369d:	e8 de 05 00 00       	call   403c80 <_GetModuleHandleA@4>
  4036a2:	83 ec 04             	sub    $0x4,%esp
  4036a5:	f6 45 d4 01          	testb  $0x1,0xffffffd4(%ebp)
  4036a9:	ba 0a 00 00 00       	mov    $0xa,%edx
  4036ae:	74 04                	je     4036b4 <_main+0xf4>
  4036b0:	0f b7 55 d8          	movzwl 0xffffffd8(%ebp),%edx
  4036b4:	89 5c 24 08          	mov    %ebx,0x8(%esp)
  4036b8:	31 db                	xor    %ebx,%ebx
  4036ba:	89 5c 24 04          	mov    %ebx,0x4(%esp)
  4036be:	89 54 24 0c          	mov    %edx,0xc(%esp)
  4036c2:	89 04 24             	mov    %eax,(%esp)
  4036c5:	e8 e6 e3 ff ff       	call   401ab0 <_WinMain@16>
  4036ca:	83 ec 10             	sub    $0x10,%esp
  4036cd:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  4036d0:	c9                   	leave  
  4036d1:	c3                   	ret    
  4036d2:	43                   	inc    %ebx
  4036d3:	0f b6 0b             	movzbl (%ebx),%ecx
  4036d6:	eb 98                	jmp    403670 <_main+0xb0>
  4036d8:	90                   	nop    
  4036d9:	90                   	nop    
  4036da:	90                   	nop    
  4036db:	90                   	nop    
  4036dc:	90                   	nop    
  4036dd:	90                   	nop    
  4036de:	90                   	nop    
  4036df:	90                   	nop    

004036e0 <__pei386_runtime_relocator>:
  4036e0:	55                   	push   %ebp
  4036e1:	b9 c0 5c 40 00       	mov    $0x405cc0,%ecx
  4036e6:	89 e5                	mov    %esp,%ebp
  4036e8:	eb 14                	jmp    4036fe <__pei386_runtime_relocator+0x1e>
  4036ea:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  4036f0:	8b 51 04             	mov    0x4(%ecx),%edx
  4036f3:	8b 01                	mov    (%ecx),%eax
  4036f5:	83 c1 08             	add    $0x8,%ecx
  4036f8:	01 82 00 00 40 00    	add    %eax,0x400000(%edx)
  4036fe:	81 f9 c0 5c 40 00    	cmp    $0x405cc0,%ecx
  403704:	72 ea                	jb     4036f0 <__pei386_runtime_relocator+0x10>
  403706:	5d                   	pop    %ebp
  403707:	c3                   	ret    
  403708:	90                   	nop    
  403709:	90                   	nop    
  40370a:	90                   	nop    
  40370b:	90                   	nop    
  40370c:	90                   	nop    
  40370d:	90                   	nop    
  40370e:	90                   	nop    
  40370f:	90                   	nop    

00403710 <__fpreset>:
  403710:	55                   	push   %ebp
  403711:	89 e5                	mov    %esp,%ebp
  403713:	db e3                	fninit 
  403715:	5d                   	pop    %ebp
  403716:	c3                   	ret    
  403717:	90                   	nop    
  403718:	90                   	nop    
  403719:	90                   	nop    
  40371a:	90                   	nop    
  40371b:	90                   	nop    
  40371c:	90                   	nop    
  40371d:	90                   	nop    
  40371e:	90                   	nop    
  40371f:	90                   	nop    

00403720 <___do_global_dtors>:
  403720:	55                   	push   %ebp
  403721:	89 e5                	mov    %esp,%ebp
  403723:	83 ec 08             	sub    $0x8,%esp
  403726:	a1 30 40 40 00       	mov    0x404030,%eax
  40372b:	8b 08                	mov    (%eax),%ecx
  40372d:	85 c9                	test   %ecx,%ecx
  40372f:	74 26                	je     403757 <___do_global_dtors+0x37>
  403731:	eb 0d                	jmp    403740 <___do_global_dtors+0x20>
  403733:	90                   	nop    
  403734:	90                   	nop    
  403735:	90                   	nop    
  403736:	90                   	nop    
  403737:	90                   	nop    
  403738:	90                   	nop    
  403739:	90                   	nop    
  40373a:	90                   	nop    
  40373b:	90                   	nop    
  40373c:	90                   	nop    
  40373d:	90                   	nop    
  40373e:	90                   	nop    
  40373f:	90                   	nop    
  403740:	ff 10                	call   *(%eax)
  403742:	8b 0d 30 40 40 00    	mov    0x404030,%ecx
  403748:	8b 51 04             	mov    0x4(%ecx),%edx
  40374b:	8d 41 04             	lea    0x4(%ecx),%eax
  40374e:	a3 30 40 40 00       	mov    %eax,0x404030
  403753:	85 d2                	test   %edx,%edx
  403755:	75 e9                	jne    403740 <___do_global_dtors+0x20>
  403757:	c9                   	leave  
  403758:	c3                   	ret    
  403759:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

00403760 <___do_global_ctors>:
  403760:	55                   	push   %ebp
  403761:	89 e5                	mov    %esp,%ebp
  403763:	53                   	push   %ebx
  403764:	83 ec 04             	sub    $0x4,%esp
  403767:	a1 d0 3c 40 00       	mov    0x403cd0,%eax
  40376c:	83 f8 ff             	cmp    $0xffffffff,%eax
  40376f:	74 29                	je     40379a <___do_global_ctors+0x3a>
  403771:	85 c0                	test   %eax,%eax
  403773:	89 c3                	mov    %eax,%ebx
  403775:	74 13                	je     40378a <___do_global_ctors+0x2a>
  403777:	89 f6                	mov    %esi,%esi
  403779:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi
  403780:	ff 14 9d d0 3c 40 00 	call   *0x403cd0(,%ebx,4)
  403787:	4b                   	dec    %ebx
  403788:	75 f6                	jne    403780 <___do_global_ctors+0x20>
  40378a:	c7 04 24 20 37 40 00 	movl   $0x403720,(%esp)
  403791:	e8 ca da ff ff       	call   401260 <_atexit>
  403796:	5b                   	pop    %ebx
  403797:	5b                   	pop    %ebx
  403798:	5d                   	pop    %ebp
  403799:	c3                   	ret    
  40379a:	8b 0d d4 3c 40 00    	mov    0x403cd4,%ecx
  4037a0:	31 c0                	xor    %eax,%eax
  4037a2:	85 c9                	test   %ecx,%ecx
  4037a4:	eb 0a                	jmp    4037b0 <___do_global_ctors+0x50>
  4037a6:	40                   	inc    %eax
  4037a7:	8b 14 85 d4 3c 40 00 	mov    0x403cd4(,%eax,4),%edx
  4037ae:	85 d2                	test   %edx,%edx
  4037b0:	75 f4                	jne    4037a6 <___do_global_ctors+0x46>
  4037b2:	eb bd                	jmp    403771 <___do_global_ctors+0x11>
  4037b4:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
  4037ba:	8d bf 00 00 00 00    	lea    0x0(%edi),%edi

004037c0 <___main>:
  4037c0:	55                   	push   %ebp
  4037c1:	89 e5                	mov    %esp,%ebp
  4037c3:	53                   	push   %ebx
  4037c4:	83 ec 04             	sub    $0x4,%esp
  4037c7:	a1 30 60 40 00       	mov    0x406030,%eax
  4037cc:	85 c0                	test   %eax,%eax
  4037ce:	75 36                	jne    403806 <___main+0x46>
  4037d0:	a1 d0 3c 40 00       	mov    0x403cd0,%eax
  4037d5:	bb 01 00 00 00       	mov    $0x1,%ebx
  4037da:	89 1d 30 60 40 00    	mov    %ebx,0x406030
  4037e0:	83 f8 ff             	cmp    $0xffffffff,%eax
  4037e3:	74 25                	je     40380a <___main+0x4a>
  4037e5:	85 c0                	test   %eax,%eax
  4037e7:	89 c3                	mov    %eax,%ebx
  4037e9:	74 0f                	je     4037fa <___main+0x3a>
  4037eb:	90                   	nop    
  4037ec:	8d 74 26 00          	lea    0x0(%esi),%esi
  4037f0:	ff 14 9d d0 3c 40 00 	call   *0x403cd0(,%ebx,4)
  4037f7:	4b                   	dec    %ebx
  4037f8:	75 f6                	jne    4037f0 <___main+0x30>
  4037fa:	c7 04 24 20 37 40 00 	movl   $0x403720,(%esp)
  403801:	e8 5a da ff ff       	call   401260 <_atexit>
  403806:	5b                   	pop    %ebx
  403807:	5b                   	pop    %ebx
  403808:	5d                   	pop    %ebp
  403809:	c3                   	ret    
  40380a:	8b 0d d4 3c 40 00    	mov    0x403cd4,%ecx
  403810:	31 c0                	xor    %eax,%eax
  403812:	85 c9                	test   %ecx,%ecx
  403814:	eb 0a                	jmp    403820 <___main+0x60>
  403816:	40                   	inc    %eax
  403817:	8b 14 85 d4 3c 40 00 	mov    0x403cd4(,%eax,4),%edx
  40381e:	85 d2                	test   %edx,%edx
  403820:	75 f4                	jne    403816 <___main+0x56>
  403822:	eb c1                	jmp    4037e5 <___main+0x25>
  403824:	90                   	nop    
  403825:	90                   	nop    
  403826:	90                   	nop    
  403827:	90                   	nop    
  403828:	90                   	nop    
  403829:	90                   	nop    
  40382a:	90                   	nop    
  40382b:	90                   	nop    
  40382c:	90                   	nop    
  40382d:	90                   	nop    
  40382e:	90                   	nop    
  40382f:	90                   	nop    

00403830 <___w32_sharedptr_default_unexpected>:
  403830:	55                   	push   %ebp
  403831:	a1 90 60 40 00       	mov    0x406090,%eax
  403836:	89 e5                	mov    %esp,%ebp
  403838:	5d                   	pop    %ebp
  403839:	8b 48 04             	mov    0x4(%eax),%ecx
  40383c:	ff e1                	jmp    *%ecx
  40383e:	89 f6                	mov    %esi,%esi

00403840 <___w32_sharedptr_get>:
  403840:	55                   	push   %ebp
  403841:	ba 42 00 00 00       	mov    $0x42,%edx
  403846:	89 e5                	mov    %esp,%ebp
  403848:	53                   	push   %ebx
  403849:	0f b7 c0             	movzwl %ax,%eax
  40384c:	83 ec 64             	sub    $0x64,%esp
  40384f:	89 54 24 08          	mov    %edx,0x8(%esp)
  403853:	8d 55 a8             	lea    0xffffffa8(%ebp),%edx
  403856:	31 db                	xor    %ebx,%ebx
  403858:	89 54 24 04          	mov    %edx,0x4(%esp)
  40385c:	89 04 24             	mov    %eax,(%esp)
  40385f:	ff 15 98 73 40 00    	call   *0x407398
  403865:	ba 1f 00 00 00       	mov    $0x1f,%edx
  40386a:	b9 01 00 00 00       	mov    $0x1,%ecx
  40386f:	83 ec 0c             	sub    $0xc,%esp
  403872:	85 c0                	test   %eax,%eax
  403874:	75 07                	jne    40387d <___w32_sharedptr_get+0x3d>
  403876:	eb 46                	jmp    4038be <___w32_sharedptr_get+0x7e>
  403878:	01 c9                	add    %ecx,%ecx
  40387a:	4a                   	dec    %edx
  40387b:	78 0e                	js     40388b <___w32_sharedptr_get+0x4b>
  40387d:	80 7c 2a a8 41       	cmpb   $0x41,0xffffffa8(%edx,%ebp,1)
  403882:	75 f4                	jne    403878 <___w32_sharedptr_get+0x38>
  403884:	09 cb                	or     %ecx,%ebx
  403886:	01 c9                	add    %ecx,%ecx
  403888:	4a                   	dec    %edx
  403889:	79 f2                	jns    40387d <___w32_sharedptr_get+0x3d>
  40388b:	83 3b 3c             	cmpl   $0x3c,(%ebx)
  40388e:	75 07                	jne    403897 <___w32_sharedptr_get+0x57>
  403890:	89 d8                	mov    %ebx,%eax
  403892:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
  403895:	c9                   	leave  
  403896:	c3                   	ret    
  403897:	b9 04 5c 40 00       	mov    $0x405c04,%ecx
  40389c:	ba ea 00 00 00       	mov    $0xea,%edx
  4038a1:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
  4038a5:	89 54 24 08          	mov    %edx,0x8(%esp)
  4038a9:	c7 04 24 31 5c 40 00 	movl   $0x405c31,(%esp)
  4038b0:	b8 50 5c 40 00       	mov    $0x405c50,%eax
  4038b5:	89 44 24 04          	mov    %eax,0x4(%esp)
  4038b9:	e8 92 02 00 00       	call   403b50 <___eprintf>
  4038be:	b8 7c 5c 40 00       	mov    $0x405c7c,%eax
  4038c3:	bb e4 00 00 00       	mov    $0xe4,%ebx
  4038c8:	89 44 24 0c          	mov    %eax,0xc(%esp)
  4038cc:	89 5c 24 08          	mov    %ebx,0x8(%esp)
  4038d0:	eb d7                	jmp    4038a9 <___w32_sharedptr_get+0x69>
  4038d2:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
  4038d9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

004038e0 <___w32_sharedptr_initialize>:
  4038e0:	55                   	push   %ebp
  4038e1:	89 e5                	mov    %esp,%ebp
  4038e3:	57                   	push   %edi
  4038e4:	56                   	push   %esi
  4038e5:	53                   	push   %ebx
  4038e6:	81 ec cc 00 00 00    	sub    $0xcc,%esp
  4038ec:	8b 0d 90 60 40 00    	mov    0x406090,%ecx
  4038f2:	85 c9                	test   %ecx,%ecx
  4038f4:	74 08                	je     4038fe <___w32_sharedptr_initialize+0x1e>
  4038f6:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  4038f9:	5b                   	pop    %ebx
  4038fa:	5e                   	pop    %esi
  4038fb:	5f                   	pop    %edi
  4038fc:	5d                   	pop    %ebp
  4038fd:	c3                   	ret    
  4038fe:	c7 45 98 41 41 41 41 	movl   $0x41414141,0xffffff98(%ebp)
  403905:	a1 e0 5b 40 00       	mov    0x405be0,%eax
  40390a:	8d 75 98             	lea    0xffffff98(%ebp),%esi
  40390d:	c7 45 9c 41 41 41 41 	movl   $0x41414141,0xffffff9c(%ebp)
  403914:	c7 45 a0 41 41 41 41 	movl   $0x41414141,0xffffffa0(%ebp)
  40391b:	89 45 b8             	mov    %eax,0xffffffb8(%ebp)
  40391e:	a1 e4 5b 40 00       	mov    0x405be4,%eax
  403923:	c7 45 a4 41 41 41 41 	movl   $0x41414141,0xffffffa4(%ebp)
  40392a:	c7 45 a8 41 41 41 41 	movl   $0x41414141,0xffffffa8(%ebp)
  403931:	89 45 bc             	mov    %eax,0xffffffbc(%ebp)
  403934:	a1 e8 5b 40 00       	mov    0x405be8,%eax
  403939:	c7 45 ac 41 41 41 41 	movl   $0x41414141,0xffffffac(%ebp)
  403940:	c7 45 b0 41 41 41 41 	movl   $0x41414141,0xffffffb0(%ebp)
  403947:	89 45 c0             	mov    %eax,0xffffffc0(%ebp)
  40394a:	a1 ec 5b 40 00       	mov    0x405bec,%eax
  40394f:	c7 45 b4 41 41 41 41 	movl   $0x41414141,0xffffffb4(%ebp)
  403956:	89 45 c4             	mov    %eax,0xffffffc4(%ebp)
  403959:	a1 f0 5b 40 00       	mov    0x405bf0,%eax
  40395e:	89 45 c8             	mov    %eax,0xffffffc8(%ebp)
  403961:	a1 f4 5b 40 00       	mov    0x405bf4,%eax
  403966:	89 45 cc             	mov    %eax,0xffffffcc(%ebp)
  403969:	a1 f8 5b 40 00       	mov    0x405bf8,%eax
  40396e:	89 45 d0             	mov    %eax,0xffffffd0(%ebp)
  403971:	a1 fc 5b 40 00       	mov    0x405bfc,%eax
  403976:	89 45 d4             	mov    %eax,0xffffffd4(%ebp)
  403979:	0f b7 05 00 5c 40 00 	movzwl 0x405c00,%eax
  403980:	66 89 45 d8          	mov    %ax,0xffffffd8(%ebp)
  403984:	89 34 24             	mov    %esi,(%esp)
  403987:	ff 15 94 73 40 00    	call   *0x407394
  40398d:	0f b7 c0             	movzwl %ax,%eax
  403990:	83 ec 04             	sub    $0x4,%esp
  403993:	85 c0                	test   %eax,%eax
  403995:	89 85 44 ff ff ff    	mov    %eax,0xffffff44(%ebp)
  40399b:	0f 85 3b 01 00 00    	jne    403adc <___w32_sharedptr_initialize+0x1fc>
  4039a1:	c7 04 24 3c 00 00 00 	movl   $0x3c,(%esp)
  4039a8:	e8 73 02 00 00       	call   403c20 <_malloc>
  4039ad:	85 c0                	test   %eax,%eax
  4039af:	89 c3                	mov    %eax,%ebx
  4039b1:	0f 84 59 01 00 00    	je     403b10 <___w32_sharedptr_initialize+0x230>
  4039b7:	fc                   	cld    
  4039b8:	89 c7                	mov    %eax,%edi
  4039ba:	8b 85 44 ff ff ff    	mov    0xffffff44(%ebp),%eax
  4039c0:	b9 0f 00 00 00       	mov    $0xf,%ecx
  4039c5:	f3 ab                	repz stos %eax,%es:(%edi)
  4039c7:	c7 43 04 30 3c 40 00 	movl   $0x403c30,0x4(%ebx)
  4039ce:	b9 01 00 00 00       	mov    $0x1,%ecx
  4039d3:	c7 43 08 30 38 40 00 	movl   $0x403830,0x8(%ebx)
  4039da:	a1 50 60 40 00       	mov    0x406050,%eax
  4039df:	c7 03 3c 00 00 00    	movl   $0x3c,(%ebx)
  4039e5:	8b 15 54 60 40 00    	mov    0x406054,%edx
  4039eb:	c7 43 28 00 00 00 00 	movl   $0x0,0x28(%ebx)
  4039f2:	89 43 14             	mov    %eax,0x14(%ebx)
  4039f5:	a1 40 40 40 00       	mov    0x404040,%eax
  4039fa:	89 53 18             	mov    %edx,0x18(%ebx)
  4039fd:	8b 15 44 40 40 00    	mov    0x404044,%edx
  403a03:	89 43 1c             	mov    %eax,0x1c(%ebx)
  403a06:	a1 60 60 40 00       	mov    0x406060,%eax
  403a0b:	89 53 20             	mov    %edx,0x20(%ebx)
  403a0e:	c7 43 30 ff ff ff ff 	movl   $0xffffffff,0x30(%ebx)
  403a15:	89 43 2c             	mov    %eax,0x2c(%ebx)
  403a18:	8b 15 4c 40 40 00    	mov    0x40404c,%edx
  403a1e:	a1 48 40 40 00       	mov    0x404048,%eax
  403a23:	89 53 38             	mov    %edx,0x38(%ebx)
  403a26:	ba 1f 00 00 00       	mov    $0x1f,%edx
  403a2b:	89 43 34             	mov    %eax,0x34(%ebx)
  403a2e:	89 f6                	mov    %esi,%esi
  403a30:	89 d8                	mov    %ebx,%eax
  403a32:	21 c8                	and    %ecx,%eax
  403a34:	83 f8 01             	cmp    $0x1,%eax
  403a37:	19 c0                	sbb    %eax,%eax
  403a39:	24 20                	and    $0x20,%al
  403a3b:	01 c9                	add    %ecx,%ecx
  403a3d:	04 41                	add    $0x41,%al
  403a3f:	88 84 2a 48 ff ff ff 	mov    %al,0xffffff48(%edx,%ebp,1)
  403a46:	4a                   	dec    %edx
  403a47:	79 e7                	jns    403a30 <___w32_sharedptr_initialize+0x150>
  403a49:	a1 e0 5b 40 00       	mov    0x405be0,%eax
  403a4e:	89 85 68 ff ff ff    	mov    %eax,0xffffff68(%ebp)
  403a54:	a1 e4 5b 40 00       	mov    0x405be4,%eax
  403a59:	89 85 6c ff ff ff    	mov    %eax,0xffffff6c(%ebp)
  403a5f:	a1 e8 5b 40 00       	mov    0x405be8,%eax
  403a64:	89 85 70 ff ff ff    	mov    %eax,0xffffff70(%ebp)
  403a6a:	a1 ec 5b 40 00       	mov    0x405bec,%eax
  403a6f:	89 85 74 ff ff ff    	mov    %eax,0xffffff74(%ebp)
  403a75:	a1 f0 5b 40 00       	mov    0x405bf0,%eax
  403a7a:	89 85 78 ff ff ff    	mov    %eax,0xffffff78(%ebp)
  403a80:	a1 f4 5b 40 00       	mov    0x405bf4,%eax
  403a85:	89 85 7c ff ff ff    	mov    %eax,0xffffff7c(%ebp)
  403a8b:	a1 f8 5b 40 00       	mov    0x405bf8,%eax
  403a90:	89 45 80             	mov    %eax,0xffffff80(%ebp)
  403a93:	a1 fc 5b 40 00       	mov    0x405bfc,%eax
  403a98:	89 45 84             	mov    %eax,0xffffff84(%ebp)
  403a9b:	0f b7 05 00 5c 40 00 	movzwl 0x405c00,%eax
  403aa2:	66 89 45 88          	mov    %ax,0xffffff88(%ebp)
  403aa6:	8d 85 48 ff ff ff    	lea    0xffffff48(%ebp),%eax
  403aac:	89 04 24             	mov    %eax,(%esp)
  403aaf:	ff 15 90 73 40 00    	call   *0x407390
  403ab5:	0f b7 f8             	movzwl %ax,%edi
  403ab8:	83 ec 04             	sub    $0x4,%esp
  403abb:	85 ff                	test   %edi,%edi
  403abd:	75 42                	jne    403b01 <___w32_sharedptr_initialize+0x221>
  403abf:	31 d2                	xor    %edx,%edx
  403ac1:	85 d2                	test   %edx,%edx
  403ac3:	75 1e                	jne    403ae3 <___w32_sharedptr_initialize+0x203>
  403ac5:	89 1c 24             	mov    %ebx,(%esp)
  403ac8:	e8 43 01 00 00       	call   403c10 <_free>
  403acd:	89 34 24             	mov    %esi,(%esp)
  403ad0:	ff 15 94 73 40 00    	call   *0x407394
  403ad6:	83 ec 04             	sub    $0x4,%esp
  403ad9:	0f b7 c0             	movzwl %ax,%eax
  403adc:	e8 5f fd ff ff       	call   403840 <___w32_sharedptr_get>
  403ae1:	89 c3                	mov    %eax,%ebx
  403ae3:	89 1d 90 60 40 00    	mov    %ebx,0x406090
  403ae9:	8d 43 04             	lea    0x4(%ebx),%eax
  403aec:	a3 80 60 40 00       	mov    %eax,0x406080
  403af1:	8d 43 08             	lea    0x8(%ebx),%eax
  403af4:	a3 a0 60 40 00       	mov    %eax,0x4060a0
  403af9:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
  403afc:	5b                   	pop    %ebx
  403afd:	5e                   	pop    %esi
  403afe:	5f                   	pop    %edi
  403aff:	5d                   	pop    %ebp
  403b00:	c3                   	ret    
  403b01:	89 f8                	mov    %edi,%eax
  403b03:	e8 38 fd ff ff       	call   403840 <___w32_sharedptr_get>
  403b08:	39 d8                	cmp    %ebx,%eax
  403b0a:	89 fa                	mov    %edi,%edx
  403b0c:	75 b1                	jne    403abf <___w32_sharedptr_initialize+0x1df>
  403b0e:	eb b1                	jmp    403ac1 <___w32_sharedptr_initialize+0x1e1>
  403b10:	e8 1b 01 00 00       	call   403c30 <_abort>
  403b15:	90                   	nop    
  403b16:	90                   	nop    
  403b17:	90                   	nop    
  403b18:	90                   	nop    
  403b19:	90                   	nop    
  403b1a:	90                   	nop    
  403b1b:	90                   	nop    
  403b1c:	90                   	nop    
  403b1d:	90                   	nop    
  403b1e:	90                   	nop    
  403b1f:	90                   	nop    

00403b20 <___chkstk>:
  403b20:	51                   	push   %ecx
  403b21:	89 e1                	mov    %esp,%ecx
  403b23:	83 c1 08             	add    $0x8,%ecx

00403b26 <probe>:
  403b26:	3d 00 10 00 00       	cmp    $0x1000,%eax
  403b2b:	72 10                	jb     403b3d <done>
  403b2d:	81 e9 00 10 00 00    	sub    $0x1000,%ecx
  403b33:	83 09 00             	orl    $0x0,(%ecx)
  403b36:	2d 00 10 00 00       	sub    $0x1000,%eax
  403b3b:	eb e9                	jmp    403b26 <probe>

00403b3d <done>:
  403b3d:	29 c1                	sub    %eax,%ecx
  403b3f:	83 09 00             	orl    $0x0,(%ecx)
  403b42:	89 e0                	mov    %esp,%eax
  403b44:	89 cc                	mov    %ecx,%esp
  403b46:	8b 08                	mov    (%eax),%ecx
  403b48:	8b 40 04             	mov    0x4(%eax),%eax
  403b4b:	ff e0                	jmp    *%eax
  403b4d:	90                   	nop    
  403b4e:	90                   	nop    
  403b4f:	90                   	nop    

00403b50 <___eprintf>:
  403b50:	55                   	push   %ebp
  403b51:	89 e5                	mov    %esp,%ebp
  403b53:	83 ec 18             	sub    $0x18,%esp
  403b56:	8b 45 14             	mov    0x14(%ebp),%eax
  403b59:	89 44 24 10          	mov    %eax,0x10(%esp)
  403b5d:	8b 45 10             	mov    0x10(%ebp),%eax
  403b60:	89 44 24 0c          	mov    %eax,0xc(%esp)
  403b64:	8b 45 0c             	mov    0xc(%ebp),%eax
  403b67:	89 44 24 08          	mov    %eax,0x8(%esp)
  403b6b:	8b 45 08             	mov    0x8(%ebp),%eax
  403b6e:	89 44 24 04          	mov    %eax,0x4(%esp)
  403b72:	a1 c4 73 40 00       	mov    0x4073c4,%eax
  403b77:	83 c0 40             	add    $0x40,%eax
  403b7a:	89 04 24             	mov    %eax,(%esp)
  403b7d:	e8 ce 00 00 00       	call   403c50 <_fprintf>
  403b82:	a1 c4 73 40 00       	mov    0x4073c4,%eax
  403b87:	83 c0 40             	add    $0x40,%eax
  403b8a:	89 04 24             	mov    %eax,(%esp)
  403b8d:	e8 ae 00 00 00       	call   403c40 <_fflush>
  403b92:	e8 99 00 00 00       	call   403c30 <_abort>
  403b97:	90                   	nop    
  403b98:	90                   	nop    
  403b99:	90                   	nop    
  403b9a:	90                   	nop    
  403b9b:	90                   	nop    
  403b9c:	90                   	nop    
  403b9d:	90                   	nop    
  403b9e:	90                   	nop    
  403b9f:	90                   	nop    

00403ba0 <___set_app_type>:
  403ba0:	ff 25 bc 73 40 00    	jmp    *0x4073bc
  403ba6:	90                   	nop    
  403ba7:	90                   	nop    
	...

00403bb0 <__cexit>:
  403bb0:	ff 25 c0 73 40 00    	jmp    *0x4073c0
  403bb6:	90                   	nop    
  403bb7:	90                   	nop    
	...

00403bc0 <___p__environ>:
  403bc0:	ff 25 b4 73 40 00    	jmp    *0x4073b4
  403bc6:	90                   	nop    
  403bc7:	90                   	nop    
	...

00403bd0 <_signal>:
  403bd0:	ff 25 e8 73 40 00    	jmp    *0x4073e8
  403bd6:	90                   	nop    
  403bd7:	90                   	nop    
	...

00403be0 <___p__fmode>:
  403be0:	ff 25 b8 73 40 00    	jmp    *0x4073b8
  403be6:	90                   	nop    
  403be7:	90                   	nop    
	...

00403bf0 <__setmode>:
  403bf0:	ff 25 cc 73 40 00    	jmp    *0x4073cc
  403bf6:	90                   	nop    
  403bf7:	90                   	nop    
	...

00403c00 <___getmainargs>:
  403c00:	ff 25 b0 73 40 00    	jmp    *0x4073b0
  403c06:	90                   	nop    
  403c07:	90                   	nop    
	...

00403c10 <_free>:
  403c10:	ff 25 e0 73 40 00    	jmp    *0x4073e0
  403c16:	90                   	nop    
  403c17:	90                   	nop    
	...

00403c20 <_malloc>:
  403c20:	ff 25 e4 73 40 00    	jmp    *0x4073e4
  403c26:	90                   	nop    
  403c27:	90                   	nop    
	...

00403c30 <_abort>:
  403c30:	ff 25 d0 73 40 00    	jmp    *0x4073d0
  403c36:	90                   	nop    
  403c37:	90                   	nop    
	...

00403c40 <_fflush>:
  403c40:	ff 25 d8 73 40 00    	jmp    *0x4073d8
  403c46:	90                   	nop    
  403c47:	90                   	nop    
	...

00403c50 <_fprintf>:
  403c50:	ff 25 dc 73 40 00    	jmp    *0x4073dc
  403c56:	90                   	nop    
  403c57:	90                   	nop    
	...

00403c60 <_GetCommandLineA@0>:
  403c60:	ff 25 9c 73 40 00    	jmp    *0x40739c
  403c66:	90                   	nop    
  403c67:	90                   	nop    
	...

00403c70 <_GetStartupInfoA@4>:
  403c70:	ff 25 a4 73 40 00    	jmp    *0x4073a4
  403c76:	90                   	nop    
  403c77:	90                   	nop    
	...

00403c80 <_GetModuleHandleA@4>:
  403c80:	ff 25 a0 73 40 00    	jmp    *0x4073a0
  403c86:	90                   	nop    
  403c87:	90                   	nop    
	...

00403c90 <_GetAtomNameA@12>:
  403c90:	ff 25 98 73 40 00    	jmp    *0x407398
  403c96:	90                   	nop    
  403c97:	90                   	nop    
	...

00403ca0 <_FindAtomA@4>:
  403ca0:	ff 25 94 73 40 00    	jmp    *0x407394
  403ca6:	90                   	nop    
  403ca7:	90                   	nop    
	...

00403cb0 <_AddAtomA@4>:
  403cb0:	ff 25 90 73 40 00    	jmp    *0x407390
  403cb6:	90                   	nop    
  403cb7:	90                   	nop    
	...

00403cc0 <___sjlj_init_ctor>:
  403cc0:	55                   	push   %ebp
  403cc1:	89 e5                	mov    %esp,%ebp
  403cc3:	5d                   	pop    %ebp
  403cc4:	e9 b7 d5 ff ff       	jmp    401280 <___do_sjlj_init>
  403cc9:	90                   	nop    
  403cca:	90                   	nop    
  403ccb:	90                   	nop    
  403ccc:	90                   	nop    
  403ccd:	90                   	nop    
  403cce:	90                   	nop    
  403ccf:	90                   	nop    

00403cd0 <__CTOR_LIST__>:
  403cd0:	ff                   	(bad)  
  403cd1:	ff                   	(bad)  
  403cd2:	ff                   	(bad)  
  403cd3:	ff c0                	inc    %eax

00403cd4 <.ctors>:
  403cd4:	c0 3c 40 00          	sarb   $0x0,(%eax,%eax,2)
  403cd8:	00 00                	add    %al,(%eax)
	...

00403cdc <__DTOR_LIST__>:
  403cdc:	ff                   	(bad)  
  403cdd:	ff                   	(bad)  
  403cde:	ff                   	(bad)  
  403cdf:	ff 00                	incl   (%eax)
  403ce1:	00 00                	add    %al,(%eax)
	...
