
version.nostrip.dll:     file format pei-i386

Disassembly of section .text:

77a91000 <_DllMain@12>:

INT
STDCALL
DllMain(PVOID hinstDll, ULONG dwReason, PVOID reserved)
{
77a91000:	55                   	push   %ebp
    switch (dwReason) {
    case DLL_PROCESS_ATTACH:
        break;
    case DLL_THREAD_ATTACH:
        break;
    case DLL_THREAD_DETACH:
        break;
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
77a91001:	b8 01 00 00 00       	mov    $0x1,%eax
77a91006:	89 e5                	mov    %esp,%ebp
77a91008:	5d                   	pop    %ebp
77a91009:	c2 0c 00             	ret    $0xc
77a9100c:	90                   	nop    
77a9100d:	90                   	nop    
77a9100e:	90                   	nop    
77a9100f:	90                   	nop    

77a91010 <_VerQueryValueIndexA@24>:
77a91010:	55                   	push   %ebp
77a91011:	89 e5                	mov    %esp,%ebp
77a91013:	83 ec 14             	sub    $0x14,%esp
77a91016:	6a 78                	push   $0x78
77a91018:	e8 13 1a 00 00       	call   77a92a30 <_SetLastError@4>
77a9101d:	31 c0                	xor    %eax,%eax
77a9101f:	c9                   	leave  
77a91020:	c2 18 00             	ret    $0x18
77a91023:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77a91029:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a91030 <_VerQueryValueIndexW@24>:
77a91030:	55                   	push   %ebp
77a91031:	89 e5                	mov    %esp,%ebp
77a91033:	83 ec 14             	sub    $0x14,%esp
77a91036:	6a 78                	push   $0x78
77a91038:	e8 f3 19 00 00       	call   77a92a30 <_SetLastError@4>
77a9103d:	31 c0                	xor    %eax,%eax
77a9103f:	c9                   	leave  
77a91040:	c2 18 00             	ret    $0x18
77a91043:	90                   	nop    
77a91044:	90                   	nop    
77a91045:	90                   	nop    
77a91046:	90                   	nop    
77a91047:	90                   	nop    
77a91048:	90                   	nop    
77a91049:	90                   	nop    
77a9104a:	90                   	nop    
77a9104b:	90                   	nop    
77a9104c:	90                   	nop    
77a9104d:	90                   	nop    
77a9104e:	90                   	nop    
77a9104f:	90                   	nop    

77a91050 <_VERSION_AllocA2W>:

static
LPWSTR
VERSION_AllocA2W ( LPCSTR ansi_str )
{
77a91050:	55                   	push   %ebp
77a91051:	89 e5                	mov    %esp,%ebp
77a91053:	57                   	push   %edi
77a91054:	56                   	push   %esi
77a91055:	53                   	push   %ebx
77a91056:	83 ec 14             	sub    $0x14,%esp
77a91059:	89 c7                	mov    %eax,%edi
	int len = MultiByteToWideChar ( CP_ACP, 0, ansi_str, -1, NULL, 0 );
77a9105b:	6a 00                	push   $0x0
77a9105d:	6a 00                	push   $0x0
77a9105f:	6a ff                	push   $0xffffffff
77a91061:	50                   	push   %eax
77a91062:	6a 00                	push   $0x0
77a91064:	6a 00                	push   $0x0
77a91066:	e8 d5 19 00 00       	call   77a92a40 <_MultiByteToWideChar@24>
77a9106b:	89 c6                	mov    %eax,%esi
	LPWSTR wide_str = HeapAlloc ( GetProcessHeap(), 0, len * sizeof(WCHAR) );
77a9106d:	8d 04 00             	lea    (%eax,%eax,1),%eax
77a91070:	89 04 24             	mov    %eax,(%esp)
77a91073:	6a 00                	push   $0x0
77a91075:	50                   	push   %eax
77a91076:	e8 d5 19 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9107b:	89 04 24             	mov    %eax,(%esp)
77a9107e:	e8 dd 19 00 00       	call   77a92a60 <_HeapAlloc@12>
77a91083:	89 c3                	mov    %eax,%ebx
	if ( !wide_str )
77a91085:	58                   	pop    %eax
		return NULL;
77a91086:	31 c0                	xor    %eax,%eax
77a91088:	85 db                	test   %ebx,%ebx
77a9108a:	74 14                	je     77a910a0 <_VERSION_AllocA2W+0x50>
77a9108c:	51                   	push   %ecx
77a9108d:	51                   	push   %ecx
77a9108e:	56                   	push   %esi
77a9108f:	53                   	push   %ebx
77a91090:	6a ff                	push   $0xffffffff
77a91092:	57                   	push   %edi
77a91093:	6a 00                	push   $0x0
77a91095:	6a 00                	push   $0x0
77a91097:	e8 a4 19 00 00       	call   77a92a40 <_MultiByteToWideChar@24>
77a9109c:	58                   	pop    %eax
	VERSION_A2W ( wide_str, ansi_str, len );
	return wide_str;
77a9109d:	89 d8                	mov    %ebx,%eax
77a9109f:	5a                   	pop    %edx
}
77a910a0:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a910a3:	5b                   	pop    %ebx
77a910a4:	5e                   	pop    %esi
77a910a5:	5f                   	pop    %edi
77a910a6:	5d                   	pop    %ebp
77a910a7:	c3                   	ret    
77a910a8:	90                   	nop    
77a910a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77a910b0 <_VERSION_Free>:

static
LPSTR
VERSION_AllocW2A ( LPCWSTR wide_str )
{
	int len = WideCharToMultiByte ( CP_ACP, 0, wide_str, -1, NULL, 0, NULL, NULL );
	LPSTR ansi_str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(char));
	if (!ansi_str)
		return NULL;
	VERSION_W2A ( ansi_str, wide_str, len );
	return ansi_str;
}

static
void
VERSION_Free ( LPVOID lpvoid )
{
77a910b0:	55                   	push   %ebp
77a910b1:	89 e5                	mov    %esp,%ebp
77a910b3:	83 ec 0c             	sub    $0xc,%esp
	HeapFree ( GetProcessHeap(), 0, lpvoid );
77a910b6:	50                   	push   %eax
77a910b7:	6a 00                	push   $0x0
77a910b9:	50                   	push   %eax
77a910ba:	e8 91 19 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a910bf:	89 04 24             	mov    %eax,(%esp)
77a910c2:	e8 a9 19 00 00       	call   77a92a70 <_HeapFree@12>
77a910c7:	c9                   	leave  
77a910c8:	c3                   	ret    
77a910c9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77a910d0 <_VERSION_GetFileVersionInfo_PE>:
}


/******************************************************************************
 *
 *   This function will print via dprintf[_]ver to stddeb debug info regarding
 *   the file info structure vffi.
 *      15-Feb-1998 Dimitrie Paun (dimi@cs.toronto.edu)
 *      Added this function to clean up the code.
 *
 *****************************************************************************/
static
void
print_vffi_debug(VS_FIXEDFILEINFO *vffi)
{
	TRACE(" structversion=%u.%u, fileversion=%u.%u.%u.%u, productversion=%u.%u.%u.%u, flagmask=0x%lx, flags=%s%s%s%s%s%s\n",
		    HIWORD(vffi->dwStrucVersion),LOWORD(vffi->dwStrucVersion),
		    HIWORD(vffi->dwFileVersionMS),LOWORD(vffi->dwFileVersionMS),
		    HIWORD(vffi->dwFileVersionLS),LOWORD(vffi->dwFileVersionLS),
		    HIWORD(vffi->dwProductVersionMS),LOWORD(vffi->dwProductVersionMS),
		    HIWORD(vffi->dwProductVersionLS),LOWORD(vffi->dwProductVersionLS),
		    vffi->dwFileFlagsMask,
		    (vffi->dwFileFlags & VS_FF_DEBUG) ? "DEBUG," : "",
		    (vffi->dwFileFlags & VS_FF_PRERELEASE) ? "PRERELEASE," : "",
		    (vffi->dwFileFlags & VS_FF_PATCHED) ? "PATCHED," : "",
		    (vffi->dwFileFlags & VS_FF_PRIVATEBUILD) ? "PRIVATEBUILD," : "",
		    (vffi->dwFileFlags & VS_FF_INFOINFERRED) ? "INFOINFERRED," : "",
		    (vffi->dwFileFlags & VS_FF_SPECIALBUILD) ? "SPECIALBUILD," : ""
		    );

	TRACE("(");
	TRACE(" OS=0x%x.0x%x ",
		HIWORD(vffi->dwFileOS),
		LOWORD(vffi->dwFileOS)
	);
	switch (vffi->dwFileOS&0xFFFF0000) {
	case VOS_DOS:TRACE("DOS,");break;
	case VOS_OS216:TRACE("OS/2-16,");break;
	case VOS_OS232:TRACE("OS/2-32,");break;
	case VOS_NT:TRACE("NT,");break;
	case VOS_UNKNOWN:
	default:
		TRACE("UNKNOWN(0x%lx),",vffi->dwFileOS&0xFFFF0000);break;
	}
	switch (LOWORD(vffi->dwFileOS)) {
	case VOS__BASE:TRACE("BASE");break;
	case VOS__WINDOWS16:TRACE("WIN16");break;
	case VOS__WINDOWS32:TRACE("WIN32");break;
	case VOS__PM16:TRACE("PM16");break;
	case VOS__PM32:TRACE("PM32");break;
	default:TRACE("UNKNOWN(0x%x)",LOWORD(vffi->dwFileOS));break;
	}
	TRACE(")\n");

	switch (vffi->dwFileType) {
	default:
	case VFT_UNKNOWN:
		TRACE("filetype=Unknown(0x%lx)",vffi->dwFileType);
		break;
	case VFT_APP:TRACE("filetype=APP,");break;
	case VFT_DLL:TRACE("filetype=DLL,");break;
	case VFT_DRV:
		TRACE("filetype=DRV,");
		switch(vffi->dwFileSubtype) {
		default:
		case VFT2_UNKNOWN:
			TRACE("UNKNOWN(0x%lx)",vffi->dwFileSubtype);
			break;
		case VFT2_DRV_PRINTER:
			TRACE("PRINTER");
			break;
		case VFT2_DRV_KEYBOARD:
			TRACE("KEYBOARD");
			break;
		case VFT2_DRV_LANGUAGE:
			TRACE("LANGUAGE");
			break;
		case VFT2_DRV_DISPLAY:
			TRACE("DISPLAY");
			break;
		case VFT2_DRV_MOUSE:
			TRACE("MOUSE");
			break;
		case VFT2_DRV_NETWORK:
			TRACE("NETWORK");
			break;
		case VFT2_DRV_SYSTEM:
			TRACE("SYSTEM");
			break;
		case VFT2_DRV_INSTALLABLE:
			TRACE("INSTALLABLE");
			break;
		case VFT2_DRV_SOUND:
			TRACE("SOUND");
			break;
		case VFT2_DRV_COMM:
			TRACE("COMM");
			break;
		case VFT2_DRV_INPUTMETHOD:
			TRACE("INPUTMETHOD");
			break;
		}
		break;
	case VFT_FONT:
		TRACE("filetype=FONT.");
		switch (vffi->dwFileSubtype) {
		default:
			TRACE("UNKNOWN(0x%lx)",vffi->dwFileSubtype);
			break;
		case VFT2_FONT_RASTER:TRACE("RASTER");break;
		case VFT2_FONT_VECTOR:TRACE("VECTOR");break;
		case VFT2_FONT_TRUETYPE:TRACE("TRUETYPE");break;
		}
		break;
	case VFT_VXD:TRACE("filetype=VXD");break;
	case VFT_STATIC_LIB:TRACE("filetype=STATIC_LIB");break;
	}
	TRACE("\n");
	TRACE("  filedata=0x%lx.0x%lx\n",
		    vffi->dwFileDateMS,vffi->dwFileDateLS);
}


/***********************************************************************
 * Version Info Structure
 */

typedef struct
{
    WORD  wLength;
    WORD  wValueLength;
    WORD  bText;
    WCHAR szKey[1];
#if 0   /* variable length structure */
    /* DWORD aligned */
    BYTE  Value[];
    /* DWORD aligned */
    VS_VERSION_INFO_STRUCT32 Children[];
#endif
} VS_VERSION_INFO_STRUCT32;
/*
#define VersionInfoIs16( ver ) \
    ( ((VS_VERSION_INFO_STRUCT16 *)ver)->szKey[0] >= ' ' )
*/
#define DWORD_ALIGN( base, ptr ) \
    ( (LPBYTE)(base) + ((((LPBYTE)(ptr) - (LPBYTE)(base)) + 3) & ~3) )
/*
#define VersionInfo16_Value( ver )  \
    DWORD_ALIGN( (ver), (ver)->szKey + strlen((ver)->szKey) + 1 )
*/
#define VersionInfo32_Value( ver )  \
    DWORD_ALIGN( (ver), (ver)->szKey + strlenW((ver)->szKey) + 1 )
/*
#define VersionInfo16_Children( ver )  \
    (VS_VERSION_INFO_STRUCT16 *)( VersionInfo16_Value( ver ) + \
                           ( ( (ver)->wValueLength + 3 ) & ~3 ) )
*/
#define VersionInfo32_Children( ver )  \
    (VS_VERSION_INFO_STRUCT32 *)( VersionInfo32_Value( ver ) + \
                           ( ( (ver)->wValueLength * \
                               ((ver)->bText? 2 : 1) + 3 ) & ~3 ) )

/*
#define VersionInfo16_Next( ver ) \
    (VS_VERSION_INFO_STRUCT16 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )
*/
#define VersionInfo32_Next( ver ) \
    (VS_VERSION_INFO_STRUCT32 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )

/***********************************************************************
 *           VERSION_GetFileVersionInfo_PE             [internal]
 *
 *    NOTE: returns size of the PE VERSION resource or 0xFFFFFFFF
 *    in the case if file exists, but VERSION_INFO not found.
 *    FIXME: handle is not used.
 */
static
DWORD
VERSION_GetFileVersionInfo_PE (
	LPCWSTR filename, LPDWORD handle,
	DWORD datasize, LPVOID data )
{
77a910d0:	55                   	push   %ebp
77a910d1:	89 e5                	mov    %esp,%ebp
77a910d3:	57                   	push   %edi
77a910d4:	56                   	push   %esi
77a910d5:	53                   	push   %ebx
77a910d6:	83 ec 18             	sub    $0x18,%esp
77a910d9:	89 c3                	mov    %eax,%ebx
	VS_FIXEDFILEINFO *vffi;
	DWORD len;
	BYTE *buf;
	HMODULE hModule;
	HRSRC hRsrc;
	HGLOBAL hMem;

	TRACE("(%s,%p)\n", debugstr_w(filename), handle );

	hModule = GetModuleHandleW(filename);
77a910db:	50                   	push   %eax
77a910dc:	e8 9f 19 00 00       	call   77a92a80 <_GetModuleHandleW@4>
	if(!hModule)
77a910e1:	83 c4 0c             	add    $0xc,%esp
77a910e4:	85 c0                	test   %eax,%eax
77a910e6:	0f 84 ba 00 00 00    	je     77a911a6 <_VERSION_GetFileVersionInfo_PE+0xd6>
		hModule = LoadLibraryExW(filename, 0, LOAD_LIBRARY_AS_DATAFILE);
	else
		hModule = LoadLibraryExW(filename, 0, 0);
77a910ec:	50                   	push   %eax
77a910ed:	6a 00                	push   $0x0
77a910ef:	6a 00                	push   $0x0
77a910f1:	53                   	push   %ebx
77a910f2:	e8 99 19 00 00       	call   77a92a90 <_LoadLibraryExW@12>
77a910f7:	89 c6                	mov    %eax,%esi
77a910f9:	58                   	pop    %eax
	if ( !hModule )
	{
		WARN("Could not load %s\n", debugstr_w(filename));
		return 0;
77a910fa:	31 c0                	xor    %eax,%eax
77a910fc:	85 f6                	test   %esi,%esi
77a910fe:	74 72                	je     77a91172 <_VERSION_GetFileVersionInfo_PE+0xa2>
	}
	hRsrc = FindResourceW(hModule,
77a91100:	50                   	push   %eax
77a91101:	6a 10                	push   $0x10
77a91103:	6a 01                	push   $0x1
77a91105:	56                   	push   %esi
77a91106:	e8 95 19 00 00       	call   77a92aa0 <_FindResourceW@12>
77a9110b:	89 c3                	mov    %eax,%ebx
	                      MAKEINTRESOURCEW(VS_VERSION_INFO),
	                      MAKEINTRESOURCEW(VS_FILE_INFO));
	if ( !hRsrc )
77a9110d:	5f                   	pop    %edi
77a9110e:	85 c0                	test   %eax,%eax
77a91110:	0f 84 98 00 00 00    	je     77a911ae <_VERSION_GetFileVersionInfo_PE+0xde>
	{
		WARN("Could not find VS_VERSION_INFO in %s\n", debugstr_w(filename));
		FreeLibrary(hModule);
		return 0xFFFFFFFF;
	}
	len = SizeofResource(hModule, hRsrc);
77a91116:	51                   	push   %ecx
77a91117:	51                   	push   %ecx
77a91118:	50                   	push   %eax
77a91119:	56                   	push   %esi
77a9111a:	e8 91 19 00 00       	call   77a92ab0 <_SizeofResource@8>
77a9111f:	89 c7                	mov    %eax,%edi
	hMem = LoadResource(hModule, hRsrc);
77a91121:	53                   	push   %ebx
77a91122:	56                   	push   %esi
77a91123:	e8 98 19 00 00       	call   77a92ac0 <_LoadResource@8>
	if(!hMem)
77a91128:	5b                   	pop    %ebx
77a91129:	85 c0                	test   %eax,%eax
77a9112b:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a9112e:	5a                   	pop    %edx
77a9112f:	74 7d                	je     77a911ae <_VERSION_GetFileVersionInfo_PE+0xde>
	{
		WARN("Could not load VS_VERSION_INFO from %s\n", debugstr_a(filename));
		FreeLibrary(hModule);
		return 0xFFFFFFFF;
	}
	buf = LockResource(hMem);
77a91131:	83 ec 0c             	sub    $0xc,%esp
77a91134:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
77a91137:	51                   	push   %ecx
77a91138:	e8 93 19 00 00       	call   77a92ad0 <_LockResource@4>
77a9113d:	89 c3                	mov    %eax,%ebx

	vffi = (VS_FIXEDFILEINFO *)VersionInfo32_Value( (VS_VERSION_INFO_STRUCT32 *)buf );
77a9113f:	8d 40 06             	lea    0x6(%eax),%eax
77a91142:	50                   	push   %eax
77a91143:	e8 f8 1a 00 00       	call   77a92c40 <_wcslen>

	if ( vffi->dwSignature != VS_FFI_SIGNATURE )
77a91148:	83 c4 10             	add    $0x10,%esp
77a9114b:	8d 44 00 0b          	lea    0xb(%eax,%eax,1),%eax
77a9114f:	83 e0 fc             	and    $0xfffffffc,%eax
77a91152:	81 3c 18 bd 04 ef fe 	cmpl   $0xfeef04bd,(%eax,%ebx,1)
77a91159:	74 25                	je     77a91180 <_VERSION_GetFileVersionInfo_PE+0xb0>
	{
		WARN("vffi->dwSignature is 0x%08lx, but not 0x%08lx!\n",
		     vffi->dwSignature, VS_FFI_SIGNATURE );
		len = 0xFFFFFFFF;
		goto END;
	}

	if ( TRACE_ON(ver) )
		print_vffi_debug( vffi );

	if(data)
	{
		if(datasize < len)
			len = datasize; /* truncate data */
		if(len)
			memcpy(data, buf, len);
		else
			len = 0xFFFFFFFF;
77a9115b:	83 cf ff             	or     $0xffffffff,%edi
	}
END:
	FreeResource(hMem);
77a9115e:	83 ec 0c             	sub    $0xc,%esp
77a91161:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77a91164:	50                   	push   %eax
77a91165:	e8 76 19 00 00       	call   77a92ae0 <_FreeResource@4>
	FreeLibrary(hModule);
77a9116a:	56                   	push   %esi
77a9116b:	e8 80 19 00 00       	call   77a92af0 <_FreeLibrary@4>

	return len;
77a91170:	89 f8                	mov    %edi,%eax
}
77a91172:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91175:	5b                   	pop    %ebx
77a91176:	5e                   	pop    %esi
77a91177:	5f                   	pop    %edi
77a91178:	5d                   	pop    %ebp
77a91179:	c3                   	ret    
77a9117a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77a91180:	8b 55 0c             	mov    0xc(%ebp),%edx
77a91183:	85 d2                	test   %edx,%edx
77a91185:	74 d7                	je     77a9115e <_VERSION_GetFileVersionInfo_PE+0x8e>
77a91187:	39 7d 08             	cmp    %edi,0x8(%ebp)
77a9118a:	72 15                	jb     77a911a1 <_VERSION_GetFileVersionInfo_PE+0xd1>
77a9118c:	85 ff                	test   %edi,%edi
77a9118e:	74 cb                	je     77a9115b <_VERSION_GetFileVersionInfo_PE+0x8b>
77a91190:	50                   	push   %eax
77a91191:	8b 45 0c             	mov    0xc(%ebp),%eax
77a91194:	57                   	push   %edi
77a91195:	53                   	push   %ebx
77a91196:	50                   	push   %eax
77a91197:	e8 94 1a 00 00       	call   77a92c30 <_memcpy>
77a9119c:	83 c4 10             	add    $0x10,%esp
77a9119f:	eb bd                	jmp    77a9115e <_VERSION_GetFileVersionInfo_PE+0x8e>
77a911a1:	8b 7d 08             	mov    0x8(%ebp),%edi
77a911a4:	eb e6                	jmp    77a9118c <_VERSION_GetFileVersionInfo_PE+0xbc>
77a911a6:	50                   	push   %eax
77a911a7:	6a 02                	push   $0x2
77a911a9:	e9 41 ff ff ff       	jmp    77a910ef <_VERSION_GetFileVersionInfo_PE+0x1f>
77a911ae:	83 ec 0c             	sub    $0xc,%esp
77a911b1:	56                   	push   %esi
77a911b2:	e8 39 19 00 00       	call   77a92af0 <_FreeLibrary@4>
77a911b7:	83 c8 ff             	or     $0xffffffff,%eax
77a911ba:	eb b6                	jmp    77a91172 <_VERSION_GetFileVersionInfo_PE+0xa2>
77a911bc:	8d 74 26 00          	lea    0x0(%esi),%esi

77a911c0 <_GetFileVersionInfoSizeW@8>:

/***********************************************************************
 *           GetFileVersionInfoSizeW         [VERSION.@]
 */
DWORD
WINAPI
GetFileVersionInfoSizeW ( LPWSTR filename, LPDWORD handle )
{
77a911c0:	55                   	push   %ebp
77a911c1:	89 e5                	mov    %esp,%ebp
77a911c3:	50                   	push   %eax
77a911c4:	50                   	push   %eax
77a911c5:	8b 55 0c             	mov    0xc(%ebp),%edx
77a911c8:	8b 45 08             	mov    0x8(%ebp),%eax
	DWORD len;

	TRACE("(%s,%p)\n", debugstr_w(filename), handle );
	if ( handle ) *handle = 0; //offset;
77a911cb:	85 d2                	test   %edx,%edx
77a911cd:	74 06                	je     77a911d5 <_GetFileVersionInfoSizeW@8+0x15>
77a911cf:	c7 02 00 00 00 00    	movl   $0x0,(%edx)

	len = VERSION_GetFileVersionInfo_PE ( filename, handle, 0, NULL );
77a911d5:	51                   	push   %ecx
77a911d6:	51                   	push   %ecx
77a911d7:	6a 00                	push   $0x0
77a911d9:	6a 00                	push   $0x0
77a911db:	e8 f0 fe ff ff       	call   77a910d0 <_VERSION_GetFileVersionInfo_PE>
	/* 0xFFFFFFFF means: file exists, but VERSION_INFO not found */
	if ( len == 0xFFFFFFFF )
77a911e0:	83 c4 10             	add    $0x10,%esp
77a911e3:	83 f8 ff             	cmp    $0xffffffff,%eax
77a911e6:	74 10                	je     77a911f8 <_GetFileVersionInfoSizeW@8+0x38>
	{
		SetLastError(ERROR_RESOURCE_DATA_NOT_FOUND);
		return 0;
	}
	if ( len ) return (len<<1) + 4; // This matches MS's version.dll behavior, from what I can tell
77a911e8:	8d 54 00 04          	lea    0x4(%eax,%eax,1),%edx
77a911ec:	85 c0                	test   %eax,%eax
77a911ee:	75 02                	jne    77a911f2 <_GetFileVersionInfoSizeW@8+0x32>

	/* there used to be a bunch of 16-bit stuff here, but MS's docs say 16-bit not supported */

	return 0;
77a911f0:	31 d2                	xor    %edx,%edx
}
77a911f2:	89 d0                	mov    %edx,%eax
77a911f4:	c9                   	leave  
77a911f5:	c2 08 00             	ret    $0x8
77a911f8:	83 ec 0c             	sub    $0xc,%esp
77a911fb:	68 14 07 00 00       	push   $0x714
77a91200:	e8 2b 18 00 00       	call   77a92a30 <_SetLastError@4>
77a91205:	31 d2                	xor    %edx,%edx
77a91207:	eb e9                	jmp    77a911f2 <_GetFileVersionInfoSizeW@8+0x32>
77a91209:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77a91210 <_GetFileVersionInfoSizeA@8>:

/***********************************************************************
 *           GetFileVersionInfoSizeA         [VERSION.@]
 */
DWORD
WINAPI
GetFileVersionInfoSizeA ( LPSTR filename, LPDWORD handle )
{
77a91210:	55                   	push   %ebp
77a91211:	89 e5                	mov    %esp,%ebp
77a91213:	56                   	push   %esi
77a91214:	53                   	push   %ebx
77a91215:	8b 45 08             	mov    0x8(%ebp),%eax
	LPWSTR filenameW = VERSION_AllocA2W(filename);
77a91218:	e8 33 fe ff ff       	call   77a91050 <_VERSION_AllocA2W>
	DWORD ret = GetFileVersionInfoSizeW ( filenameW, handle );
77a9121d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
77a91220:	89 c6                	mov    %eax,%esi
77a91222:	53                   	push   %ebx
77a91223:	53                   	push   %ebx
77a91224:	51                   	push   %ecx
77a91225:	50                   	push   %eax
77a91226:	e8 95 ff ff ff       	call   77a911c0 <_GetFileVersionInfoSizeW@8>
77a9122b:	89 c3                	mov    %eax,%ebx
	VERSION_Free ( filenameW );
77a9122d:	58                   	pop    %eax
77a9122e:	89 f0                	mov    %esi,%eax
77a91230:	5a                   	pop    %edx
77a91231:	e8 7a fe ff ff       	call   77a910b0 <_VERSION_Free>
	return ret;
}
77a91236:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a91239:	89 d8                	mov    %ebx,%eax
77a9123b:	5b                   	pop    %ebx
77a9123c:	5e                   	pop    %esi
77a9123d:	5d                   	pop    %ebp
77a9123e:	c2 08 00             	ret    $0x8
77a91241:	eb 0d                	jmp    77a91250 <_GetFileVersionInfoW@16>
77a91243:	90                   	nop    
77a91244:	90                   	nop    
77a91245:	90                   	nop    
77a91246:	90                   	nop    
77a91247:	90                   	nop    
77a91248:	90                   	nop    
77a91249:	90                   	nop    
77a9124a:	90                   	nop    
77a9124b:	90                   	nop    
77a9124c:	90                   	nop    
77a9124d:	90                   	nop    
77a9124e:	90                   	nop    
77a9124f:	90                   	nop    

77a91250 <_GetFileVersionInfoW@16>:

/***********************************************************************
 *           GetFileVersionInfoW             [VERSION.@]
 */
BOOL
WINAPI
GetFileVersionInfoW (
	LPWSTR filename, DWORD handle,
	DWORD datasize, LPVOID data )
{
77a91250:	55                   	push   %ebp
77a91251:	89 e5                	mov    %esp,%ebp
77a91253:	56                   	push   %esi
77a91254:	53                   	push   %ebx
	DWORD len, extradata;
	VS_VERSION_INFO_STRUCT32* vvis = (VS_VERSION_INFO_STRUCT32*)data;

	TRACE("(%s,%ld,size=%ld,data=%p)\n",
		debugstr_w(filename), handle, datasize, data );

	len = VERSION_GetFileVersionInfo_PE(filename, &handle, datasize, data);
77a91255:	51                   	push   %ecx
77a91256:	8b 75 10             	mov    0x10(%ebp),%esi
77a91259:	8b 5d 14             	mov    0x14(%ebp),%ebx
77a9125c:	8d 55 0c             	lea    0xc(%ebp),%edx
77a9125f:	8b 45 08             	mov    0x8(%ebp),%eax
77a91262:	51                   	push   %ecx
77a91263:	53                   	push   %ebx
77a91264:	56                   	push   %esi
77a91265:	e8 66 fe ff ff       	call   77a910d0 <_VERSION_GetFileVersionInfo_PE>

	if ( len == 0xFFFFFFFF )
77a9126a:	83 c4 10             	add    $0x10,%esp
		return FALSE;
77a9126d:	31 d2                	xor    %edx,%edx
77a9126f:	40                   	inc    %eax
77a91270:	74 25                	je     77a91297 <_GetFileVersionInfoW@16+0x47>

	extradata = datasize - vvis->wLength;
77a91272:	66 8b 03             	mov    (%ebx),%ax
77a91275:	25 ff ff 00 00       	and    $0xffff,%eax
	memmove ( ((char*)(data))+vvis->wLength, "FE2X", extradata > 4 ? 4 : extradata );
77a9127a:	52                   	push   %edx
77a9127b:	89 f2                	mov    %esi,%edx
77a9127d:	29 c2                	sub    %eax,%edx
77a9127f:	83 fa 04             	cmp    $0x4,%edx
77a91282:	77 1e                	ja     77a912a2 <_GetFileVersionInfoW@16+0x52>
77a91284:	01 d8                	add    %ebx,%eax
77a91286:	52                   	push   %edx
77a91287:	68 00 30 a9 77       	push   $0x77a93000
77a9128c:	50                   	push   %eax
77a9128d:	e8 8e 19 00 00       	call   77a92c20 <_memmove>

	return TRUE;
77a91292:	ba 01 00 00 00       	mov    $0x1,%edx
}
77a91297:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a9129a:	89 d0                	mov    %edx,%eax
77a9129c:	5b                   	pop    %ebx
77a9129d:	5e                   	pop    %esi
77a9129e:	5d                   	pop    %ebp
77a9129f:	c2 10 00             	ret    $0x10
77a912a2:	ba 04 00 00 00       	mov    $0x4,%edx
77a912a7:	eb db                	jmp    77a91284 <_GetFileVersionInfoW@16+0x34>
77a912a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77a912b0 <_GetFileVersionInfoA@16>:

/***********************************************************************
 *           GetFileVersionInfoA             [VERSION.@]
 */
BOOL
WINAPI
GetFileVersionInfoA (
	LPSTR filename, DWORD handle,
	DWORD datasize, LPVOID data )
{
77a912b0:	55                   	push   %ebp
77a912b1:	89 e5                	mov    %esp,%ebp
77a912b3:	56                   	push   %esi
77a912b4:	53                   	push   %ebx
77a912b5:	8b 45 08             	mov    0x8(%ebp),%eax
	LPWSTR filenameW = VERSION_AllocA2W ( filename );
77a912b8:	e8 93 fd ff ff       	call   77a91050 <_VERSION_AllocA2W>
	BOOL ret = GetFileVersionInfoW ( filenameW, handle, datasize, data );
77a912bd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77a912c0:	89 c6                	mov    %eax,%esi
77a912c2:	8b 45 14             	mov    0x14(%ebp),%eax
77a912c5:	50                   	push   %eax
77a912c6:	8b 45 10             	mov    0x10(%ebp),%eax
77a912c9:	50                   	push   %eax
77a912ca:	53                   	push   %ebx
77a912cb:	56                   	push   %esi
77a912cc:	e8 7f ff ff ff       	call   77a91250 <_GetFileVersionInfoW@16>
77a912d1:	89 c3                	mov    %eax,%ebx
	VERSION_Free ( filenameW );
77a912d3:	89 f0                	mov    %esi,%eax
77a912d5:	e8 d6 fd ff ff       	call   77a910b0 <_VERSION_Free>
	return ret;
}
77a912da:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a912dd:	89 d8                	mov    %ebx,%eax
77a912df:	5b                   	pop    %ebx
77a912e0:	5e                   	pop    %esi
77a912e1:	5d                   	pop    %ebp
77a912e2:	c2 10 00             	ret    $0x10
77a912e5:	8d 74 26 00          	lea    0x0(%esi),%esi
77a912e9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a912f0 <_VERSION_VerQueryValue>:

/***********************************************************************
 *           VersionInfo32_FindChild             [internal]
 */
static
VS_VERSION_INFO_STRUCT32*
VersionInfo32_FindChild (
	VS_VERSION_INFO_STRUCT32 *info,
	LPCWSTR szKey, UINT cbKey )
{
	VS_VERSION_INFO_STRUCT32 *child = VersionInfo32_Children( info );

	while ( (DWORD)child < (DWORD)info + info->wLength )
	{
		if ( !strncmpiW( child->szKey, szKey, cbKey ) )
			return child;

		child = VersionInfo32_Next( child );
	}

	return NULL;
}

static
VS_VERSION_INFO_STRUCT32*
VERSION_VerQueryValue ( VS_VERSION_INFO_STRUCT32* info, LPCWSTR lpSubBlock )
{
77a912f0:	55                   	push   %ebp
77a912f1:	89 e5                	mov    %esp,%ebp
77a912f3:	57                   	push   %edi
77a912f4:	56                   	push   %esi
77a912f5:	53                   	push   %ebx
77a912f6:	83 ec 0c             	sub    $0xc,%esp
77a912f9:	89 c7                	mov    %eax,%edi
	while ( *lpSubBlock )
	{
		/* Find next path component */
		LPCWSTR lpNextSlash;
		for ( lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++ )
		{
			if ( *lpNextSlash == '\\' )
				break;
		}

		/* Skip empty components */
		if ( lpNextSlash == lpSubBlock )
		{
			lpSubBlock++;
			continue;
		}

		/* We have a non-empty component: search info for key */
		info = VersionInfo32_FindChild ( info, lpSubBlock, lpNextSlash-lpSubBlock );
		if ( !info ) return NULL;

		/* Skip path component */
		lpSubBlock = lpNextSlash;
77a912fb:	66 8b 02             	mov    (%edx),%ax
77a912fe:	89 55 f0             	mov    %edx,0xfffffff0(%ebp)
77a91301:	66 85 c0             	test   %ax,%ax
77a91304:	0f 84 d7 00 00 00    	je     77a913e1 <_VERSION_VerQueryValue+0xf1>
77a9130a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77a91310:	66 85 c0             	test   %ax,%ax
77a91313:	8b 75 f0             	mov    0xfffffff0(%ebp),%esi
77a91316:	74 19                	je     77a91331 <_VERSION_VerQueryValue+0x41>
77a91318:	66 8b 06             	mov    (%esi),%ax
77a9131b:	90                   	nop    
77a9131c:	8d 74 26 00          	lea    0x0(%esi),%esi
77a91320:	66 83 f8 5c          	cmp    $0x5c,%ax
77a91324:	74 0b                	je     77a91331 <_VERSION_VerQueryValue+0x41>
77a91326:	83 c6 02             	add    $0x2,%esi
77a91329:	66 8b 06             	mov    (%esi),%ax
77a9132c:	66 85 c0             	test   %ax,%ax
77a9132f:	75 ef                	jne    77a91320 <_VERSION_VerQueryValue+0x30>
77a91331:	3b 75 f0             	cmp    0xfffffff0(%ebp),%esi
77a91334:	0f 84 b1 00 00 00    	je     77a913eb <_VERSION_VerQueryValue+0xfb>
77a9133a:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a9133d:	89 f0                	mov    %esi,%eax
77a9133f:	29 d0                	sub    %edx,%eax
77a91341:	83 ec 0c             	sub    $0xc,%esp
77a91344:	d1 f8                	sar    %eax
77a91346:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
77a91349:	8d 47 06             	lea    0x6(%edi),%eax
77a9134c:	50                   	push   %eax
77a9134d:	e8 ee 18 00 00       	call   77a92c40 <_wcslen>
77a91352:	83 c4 10             	add    $0x10,%esp
77a91355:	8d 44 00 0b          	lea    0xb(%eax,%eax,1),%eax
77a91359:	83 e0 fc             	and    $0xfffffffc,%eax
77a9135c:	8d 14 38             	lea    (%eax,%edi,1),%edx
77a9135f:	66 8b 47 02          	mov    0x2(%edi),%ax
77a91363:	25 ff ff 00 00       	and    $0xffff,%eax
77a91368:	66 83 7f 04 00       	cmpw   $0x0,0x4(%edi)
77a9136d:	0f 84 86 00 00 00    	je     77a913f9 <_VERSION_VerQueryValue+0x109>
77a91373:	8d 44 00 03          	lea    0x3(%eax,%eax,1),%eax
77a91377:	83 e0 fc             	and    $0xfffffffc,%eax
77a9137a:	8d 1c 02             	lea    (%edx,%eax,1),%ebx
77a9137d:	66 8b 07             	mov    (%edi),%ax
77a91380:	25 ff ff 00 00       	and    $0xffff,%eax
77a91385:	01 f8                	add    %edi,%eax
77a91387:	39 c3                	cmp    %eax,%ebx
77a91389:	73 3c                	jae    77a913c7 <_VERSION_VerQueryValue+0xd7>
77a9138b:	90                   	nop    
77a9138c:	8d 74 26 00          	lea    0x0(%esi),%esi
77a91390:	50                   	push   %eax
77a91391:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
77a91394:	50                   	push   %eax
77a91395:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77a91398:	50                   	push   %eax
77a91399:	8d 43 06             	lea    0x6(%ebx),%eax
77a9139c:	50                   	push   %eax
77a9139d:	e8 6e 18 00 00       	call   77a92c10 <__wcsnicmp>
77a913a2:	83 c4 10             	add    $0x10,%esp
77a913a5:	85 c0                	test   %eax,%eax
77a913a7:	74 58                	je     77a91401 <_VERSION_VerQueryValue+0x111>
77a913a9:	66 8b 03             	mov    (%ebx),%ax
77a913ac:	25 ff ff 00 00       	and    $0xffff,%eax
77a913b1:	83 c0 03             	add    $0x3,%eax
77a913b4:	83 e0 fc             	and    $0xfffffffc,%eax
77a913b7:	01 c3                	add    %eax,%ebx
77a913b9:	66 8b 07             	mov    (%edi),%ax
77a913bc:	25 ff ff 00 00       	and    $0xffff,%eax
77a913c1:	01 f8                	add    %edi,%eax
77a913c3:	39 c3                	cmp    %eax,%ebx
77a913c5:	72 c9                	jb     77a91390 <_VERSION_VerQueryValue+0xa0>
77a913c7:	31 c0                	xor    %eax,%eax
77a913c9:	89 c7                	mov    %eax,%edi
77a913cb:	85 c0                	test   %eax,%eax
77a913cd:	74 3a                	je     77a91409 <_VERSION_VerQueryValue+0x119>
77a913cf:	89 75 f0             	mov    %esi,0xfffffff0(%ebp)
77a913d2:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a913d5:	66 8b 02             	mov    (%edx),%ax
77a913d8:	66 85 c0             	test   %ax,%ax
77a913db:	0f 85 2f ff ff ff    	jne    77a91310 <_VERSION_VerQueryValue+0x20>
	}
	return info;
}
77a913e1:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a913e4:	89 f8                	mov    %edi,%eax
77a913e6:	5b                   	pop    %ebx
77a913e7:	5e                   	pop    %esi
77a913e8:	5f                   	pop    %edi
77a913e9:	5d                   	pop    %ebp
77a913ea:	c3                   	ret    
77a913eb:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
77a913ee:	83 c1 02             	add    $0x2,%ecx
77a913f1:	89 4d f0             	mov    %ecx,0xfffffff0(%ebp)
77a913f4:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a913f7:	eb dc                	jmp    77a913d5 <_VERSION_VerQueryValue+0xe5>
77a913f9:	83 c0 03             	add    $0x3,%eax
77a913fc:	e9 76 ff ff ff       	jmp    77a91377 <_VERSION_VerQueryValue+0x87>
77a91401:	89 d8                	mov    %ebx,%eax
77a91403:	89 c7                	mov    %eax,%edi
77a91405:	85 c0                	test   %eax,%eax
77a91407:	75 c6                	jne    77a913cf <_VERSION_VerQueryValue+0xdf>
77a91409:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a9140c:	31 c0                	xor    %eax,%eax
77a9140e:	5b                   	pop    %ebx
77a9140f:	5e                   	pop    %esi
77a91410:	5f                   	pop    %edi
77a91411:	5d                   	pop    %ebp
77a91412:	c3                   	ret    
77a91413:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77a91419:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a91420 <_VerQueryValueW@16>:

/***********************************************************************
 *           VerQueryValueW              [VERSION.@]
 */
BOOL
WINAPI
VerQueryValueW (
	const LPVOID pBlock,
	LPWSTR lpSubBlock,
	LPVOID *lplpBuffer,
	UINT *puLen )
{
77a91420:	55                   	push   %ebp
77a91421:	89 e5                	mov    %esp,%ebp
77a91423:	53                   	push   %ebx
77a91424:	53                   	push   %ebx
	VS_VERSION_INFO_STRUCT32 *info = (VS_VERSION_INFO_STRUCT32 *)pBlock;
77a91425:	8b 5d 08             	mov    0x8(%ebp),%ebx
77a91428:	8b 55 0c             	mov    0xc(%ebp),%edx

	TRACE("(%p,%s,%p,%p)\n",
		pBlock, debugstr_a(lpSubBlock), lplpBuffer, puLen );

	info = VERSION_VerQueryValue ( info, lpSubBlock );
77a9142b:	89 d8                	mov    %ebx,%eax
77a9142d:	e8 be fe ff ff       	call   77a912f0 <_VERSION_VerQueryValue>
77a91432:	89 c3                	mov    %eax,%ebx
	if ( !info )
	{
		// FIXME: what should SetLastError be set to???
		return FALSE;
77a91434:	31 c0                	xor    %eax,%eax
77a91436:	85 db                	test   %ebx,%ebx
77a91438:	74 2d                	je     77a91467 <_VerQueryValueW@16+0x47>
	}

	*lplpBuffer = VersionInfo32_Value ( info );
77a9143a:	83 ec 0c             	sub    $0xc,%esp
77a9143d:	8d 43 06             	lea    0x6(%ebx),%eax
77a91440:	50                   	push   %eax
77a91441:	e8 fa 17 00 00       	call   77a92c40 <_wcslen>
77a91446:	8b 55 10             	mov    0x10(%ebp),%edx
77a91449:	8d 44 00 0b          	lea    0xb(%eax,%eax,1),%eax
77a9144d:	83 e0 fc             	and    $0xfffffffc,%eax
77a91450:	01 d8                	add    %ebx,%eax
77a91452:	89 02                	mov    %eax,(%edx)
	*puLen = info->wValueLength;
77a91454:	66 8b 43 02          	mov    0x2(%ebx),%ax
77a91458:	8b 55 14             	mov    0x14(%ebp),%edx
77a9145b:	25 ff ff 00 00       	and    $0xffff,%eax
77a91460:	89 02                	mov    %eax,(%edx)

	return TRUE;
77a91462:	b8 01 00 00 00       	mov    $0x1,%eax
}
77a91467:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77a9146a:	c9                   	leave  
77a9146b:	c2 10 00             	ret    $0x10
77a9146e:	89 f6                	mov    %esi,%esi

77a91470 <_VerQueryValueA@16>:

/***********************************************************************
 *           VerQueryValueA              [VERSION.@]
 */
BOOL
WINAPI
VerQueryValueA (
	LPVOID pBlock,
	LPSTR lpSubBlockA,
	LPVOID *lplpBuffer,
	UINT *puLen )
{
77a91470:	55                   	push   %ebp
77a91471:	89 e5                	mov    %esp,%ebp
77a91473:	57                   	push   %edi
77a91474:	56                   	push   %esi
77a91475:	53                   	push   %ebx
77a91476:	83 ec 0c             	sub    $0xc,%esp
77a91479:	8b 45 0c             	mov    0xc(%ebp),%eax
	VS_VERSION_INFO_STRUCT32 *info = (VS_VERSION_INFO_STRUCT32 *)pBlock;
77a9147c:	8b 75 08             	mov    0x8(%ebp),%esi
	LPWSTR lpSubBlockW = VERSION_AllocA2W ( lpSubBlockA );
77a9147f:	e8 cc fb ff ff       	call   77a91050 <_VERSION_AllocA2W>

	TRACE("(%p,%s,%p,%p)\n",
		pBlock, debugstr_a(lpSubBlockA), lplpBuffer, puLen );

	info = VERSION_VerQueryValue ( info, lpSubBlockW );
77a91484:	89 c2                	mov    %eax,%edx
77a91486:	89 c3                	mov    %eax,%ebx
77a91488:	89 f0                	mov    %esi,%eax
77a9148a:	e8 61 fe ff ff       	call   77a912f0 <_VERSION_VerQueryValue>
77a9148f:	89 c6                	mov    %eax,%esi

	VERSION_Free ( lpSubBlockW );
77a91491:	89 d8                	mov    %ebx,%eax
77a91493:	e8 18 fc ff ff       	call   77a910b0 <_VERSION_Free>

	if ( !info )
	{
		// FIXME: what should SetLastError be set to???
		return FALSE;
77a91498:	31 c0                	xor    %eax,%eax
77a9149a:	85 f6                	test   %esi,%esi
77a9149c:	74 38                	je     77a914d6 <_VerQueryValueA@16+0x66>
	}

	*lplpBuffer = VersionInfo32_Value ( info );
77a9149e:	83 ec 0c             	sub    $0xc,%esp
77a914a1:	8d 46 06             	lea    0x6(%esi),%eax
77a914a4:	50                   	push   %eax
77a914a5:	e8 96 17 00 00       	call   77a92c40 <_wcslen>
	*puLen = info->wValueLength;
77a914aa:	8b 55 14             	mov    0x14(%ebp),%edx

	if ( info->bText )
77a914ad:	83 c4 10             	add    $0x10,%esp
77a914b0:	8d 44 00 0b          	lea    0xb(%eax,%eax,1),%eax
77a914b4:	83 e0 fc             	and    $0xfffffffc,%eax
77a914b7:	8d 3c 30             	lea    (%eax,%esi,1),%edi
77a914ba:	8b 45 10             	mov    0x10(%ebp),%eax
77a914bd:	89 38                	mov    %edi,(%eax)
77a914bf:	66 8b 46 02          	mov    0x2(%esi),%ax
77a914c3:	25 ff ff 00 00       	and    $0xffff,%eax
77a914c8:	89 02                	mov    %eax,(%edx)
77a914ca:	66 83 7e 04 00       	cmpw   $0x0,0x4(%esi)
77a914cf:	75 0f                	jne    77a914e0 <_VerQueryValueA@16+0x70>
	{
		LPSTR str = VERSION_AllocW2A ( *lplpBuffer );
		memmove ( *lplpBuffer, str, info->wValueLength + 1 );
		VERSION_Free ( str );
	}

	return TRUE;
77a914d1:	b8 01 00 00 00       	mov    $0x1,%eax
}
77a914d6:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a914d9:	5b                   	pop    %ebx
77a914da:	5e                   	pop    %esi
77a914db:	5f                   	pop    %edi
77a914dc:	5d                   	pop    %ebp
77a914dd:	c2 10 00             	ret    $0x10
77a914e0:	6a 00                	push   $0x0
77a914e2:	6a 00                	push   $0x0
77a914e4:	6a 00                	push   $0x0
77a914e6:	6a 00                	push   $0x0
77a914e8:	6a ff                	push   $0xffffffff
77a914ea:	57                   	push   %edi
77a914eb:	6a 00                	push   $0x0
77a914ed:	6a 00                	push   $0x0
77a914ef:	e8 0c 16 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
77a914f4:	53                   	push   %ebx
77a914f5:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
77a914f8:	50                   	push   %eax
77a914f9:	6a 00                	push   $0x0
77a914fb:	51                   	push   %ecx
77a914fc:	e8 4f 15 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91501:	89 04 24             	mov    %eax,(%esp)
77a91504:	e8 57 15 00 00       	call   77a92a60 <_HeapAlloc@12>
77a91509:	c7 45 f0 00 00 00 00 	movl   $0x0,0xfffffff0(%ebp)
77a91510:	5a                   	pop    %edx
77a91511:	89 c3                	mov    %eax,%ebx
77a91513:	85 c0                	test   %eax,%eax
77a91515:	74 18                	je     77a9152f <_VerQueryValueA@16+0xbf>
77a91517:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
77a9151a:	6a 00                	push   $0x0
77a9151c:	6a 00                	push   $0x0
77a9151e:	50                   	push   %eax
77a9151f:	53                   	push   %ebx
77a91520:	6a ff                	push   $0xffffffff
77a91522:	57                   	push   %edi
77a91523:	6a 00                	push   $0x0
77a91525:	6a 00                	push   $0x0
77a91527:	e8 d4 15 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
77a9152c:	89 5d f0             	mov    %ebx,0xfffffff0(%ebp)
77a9152f:	50                   	push   %eax
77a91530:	66 8b 46 02          	mov    0x2(%esi),%ax
77a91534:	8b 55 10             	mov    0x10(%ebp),%edx
77a91537:	25 ff ff 00 00       	and    $0xffff,%eax
77a9153c:	8b 7d f0             	mov    0xfffffff0(%ebp),%edi
77a9153f:	40                   	inc    %eax
77a91540:	50                   	push   %eax
77a91541:	57                   	push   %edi
77a91542:	8b 32                	mov    (%edx),%esi
77a91544:	56                   	push   %esi
77a91545:	e8 d6 16 00 00       	call   77a92c20 <_memmove>
77a9154a:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77a9154d:	e8 5e fb ff ff       	call   77a910b0 <_VERSION_Free>
77a91552:	83 c4 10             	add    $0x10,%esp
77a91555:	e9 77 ff ff ff       	jmp    77a914d1 <_VerQueryValueA@16+0x61>
77a9155a:	90                   	nop    
77a9155b:	90                   	nop    
77a9155c:	90                   	nop    
77a9155d:	90                   	nop    
77a9155e:	90                   	nop    
77a9155f:	90                   	nop    

77a91560 <_testFileExistenceA>:
 * TODO
 *   o Check the installation functions.
 */
#include "config.h"
#include "wine/port.h"

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>

#include "windef.h"
#include "winbase.h"
#include "winver.h"
#include "winnls.h"
#include "wine/unicode.h"
#include "winerror.h"
#include "lzexpand.h"
#include "wine/debug.h"

WINE_DEFAULT_DEBUG_CHANNEL(ver);

/* Couple of Hacks */
extern inline DWORD WINAPI GetLastError(void)
{
    DWORD ret;
    __asm__ __volatile__( ".byte 0x64\n\tmovl 0x60,%0" : "=r" (ret) );
    return ret;
}

/******************************************************************************
 *   testFileExistenceA
 *
 *   Tests whether a given path/file combination exists.  If the file does
 *   not exist, the return value is zero.  If it does exist, the return
 *   value is non-zero.
 *
 *   Revision history
 *      30-May-1997 Dave Cuthbert (dacut@ece.cmu.edu)
 *         Original implementation
 *
 */
static int testFileExistenceA( char const * path, char const * file, BOOL excl )
{
77a91560:	55                   	push   %ebp
77a91561:	89 e5                	mov    %esp,%ebp
77a91563:	56                   	push   %esi
77a91564:	53                   	push   %ebx
77a91565:	89 d6                	mov    %edx,%esi
77a91567:	81 ec 98 04 00 00    	sub    $0x498,%esp
    char  filename[1024];
    int  filenamelen;
    OFSTRUCT  fileinfo;

    fileinfo.cBytes = sizeof(OFSTRUCT);

    strcpy(filename, path);
77a9156d:	8d 9d f8 fb ff ff    	lea    0xfffffbf8(%ebp),%ebx
77a91573:	c6 85 68 fb ff ff 88 	movb   $0x88,0xfffffb68(%ebp)
77a9157a:	50                   	push   %eax
77a9157b:	53                   	push   %ebx
77a9157c:	e8 0f 17 00 00       	call   77a92c90 <_strcpy>
    filenamelen = strlen(filename);
77a91581:	83 ec 0c             	sub    $0xc,%esp
77a91584:	53                   	push   %ebx
77a91585:	e8 f6 16 00 00       	call   77a92c80 <_strlen>

    /* Add a trailing \ if necessary */
    if(filenamelen) {
77a9158a:	83 c4 20             	add    $0x20,%esp
77a9158d:	85 c0                	test   %eax,%eax
77a9158f:	74 53                	je     77a915e4 <_testFileExistenceA+0x84>
	if(filename[filenamelen - 1] != '\\')
77a91591:	80 bc 28 f7 fb ff ff 	cmpb   $0x5c,0xfffffbf7(%eax,%ebp,1)
77a91598:	5c 
77a91599:	74 10                	je     77a915ab <_testFileExistenceA+0x4b>
	    strcat(filename, "\\");
77a9159b:	50                   	push   %eax
77a9159c:	50                   	push   %eax
77a9159d:	68 10 30 a9 77       	push   $0x77a93010
77a915a2:	53                   	push   %ebx
77a915a3:	e8 c8 16 00 00       	call   77a92c70 <_strcat>
    }
    else /* specify the current directory */
	strcpy(filename, ".\\");
77a915a8:	83 c4 10             	add    $0x10,%esp

    /* Create the full pathname */
    strcat(filename, file);
77a915ab:	51                   	push   %ecx
77a915ac:	51                   	push   %ecx
77a915ad:	56                   	push   %esi
77a915ae:	53                   	push   %ebx
77a915af:	e8 bc 16 00 00       	call   77a92c70 <_strcat>

    return (OpenFile(filename, &fileinfo,
77a915b4:	83 c4 0c             	add    $0xc,%esp
77a915b7:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
77a915bb:	19 c0                	sbb    %eax,%eax
77a915bd:	83 e0 f0             	and    $0xfffffff0,%eax
77a915c0:	05 10 40 00 00       	add    $0x4010,%eax
77a915c5:	50                   	push   %eax
77a915c6:	8d 85 68 fb ff ff    	lea    0xfffffb68(%ebp),%eax
77a915cc:	50                   	push   %eax
77a915cd:	53                   	push   %ebx
77a915ce:	e8 3d 15 00 00       	call   77a92b10 <_OpenFile@12>
77a915d3:	40                   	inc    %eax
77a915d4:	5a                   	pop    %edx
77a915d5:	0f 95 c0             	setne  %al
77a915d8:	25 ff 00 00 00       	and    $0xff,%eax
                     OF_EXIST | (excl ? OF_SHARE_EXCLUSIVE : 0)) != HFILE_ERROR);
}
77a915dd:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a915e0:	5b                   	pop    %ebx
77a915e1:	5e                   	pop    %esi
77a915e2:	5d                   	pop    %ebp
77a915e3:	c3                   	ret    
77a915e4:	50                   	push   %eax
77a915e5:	50                   	push   %eax
77a915e6:	68 12 30 a9 77       	push   $0x77a93012
77a915eb:	53                   	push   %ebx
77a915ec:	e8 9f 16 00 00       	call   77a92c90 <_strcpy>
77a915f1:	eb b5                	jmp    77a915a8 <_testFileExistenceA+0x48>
77a915f3:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi
77a915f9:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a91600 <_testFileExistenceW>:

/******************************************************************************
 *   testFileExistenceW
 */
static int testFileExistenceW( const WCHAR *path, const WCHAR *file, BOOL excl )
{
77a91600:	55                   	push   %ebp
77a91601:	89 e5                	mov    %esp,%ebp
77a91603:	57                   	push   %edi
77a91604:	56                   	push   %esi
77a91605:	53                   	push   %ebx
77a91606:	81 ec ac 00 00 00    	sub    $0xac,%esp
77a9160c:	89 c3                	mov    %eax,%ebx
77a9160e:	89 95 54 ff ff ff    	mov    %edx,0xffffff54(%ebp)
    char *filename;
    DWORD pathlen, filelen;
    int ret;
    OFSTRUCT fileinfo;

    fileinfo.cBytes = sizeof(OFSTRUCT);
77a91614:	c6 85 58 ff ff ff 88 	movb   $0x88,0xffffff58(%ebp)

    pathlen = WideCharToMultiByte( CP_ACP, 0, path, -1, NULL, 0, NULL, NULL );
77a9161b:	6a 00                	push   $0x0
77a9161d:	6a 00                	push   $0x0
77a9161f:	6a 00                	push   $0x0
77a91621:	6a 00                	push   $0x0
77a91623:	6a ff                	push   $0xffffffff
77a91625:	50                   	push   %eax
77a91626:	6a 00                	push   $0x0
77a91628:	6a 00                	push   $0x0
77a9162a:	e8 d1 14 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    filelen = WideCharToMultiByte( CP_ACP, 0, file, -1, NULL, 0, NULL, NULL );
77a9162f:	8b 8d 54 ff ff ff    	mov    0xffffff54(%ebp),%ecx
77a91635:	89 c7                	mov    %eax,%edi
77a91637:	6a 00                	push   $0x0
77a91639:	6a 00                	push   $0x0
77a9163b:	6a 00                	push   $0x0
77a9163d:	6a 00                	push   $0x0
77a9163f:	6a ff                	push   $0xffffffff
77a91641:	51                   	push   %ecx
77a91642:	6a 00                	push   $0x0
77a91644:	6a 00                	push   $0x0
77a91646:	e8 b5 14 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
77a9164b:	89 85 50 ff ff ff    	mov    %eax,0xffffff50(%ebp)
    filename = HeapAlloc( GetProcessHeap(), 0, pathlen+filelen+2 );
77a91651:	8d 44 07 02          	lea    0x2(%edi,%eax,1),%eax
77a91655:	52                   	push   %edx
77a91656:	50                   	push   %eax
77a91657:	6a 00                	push   $0x0
77a91659:	56                   	push   %esi
77a9165a:	e8 f1 13 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9165f:	89 04 24             	mov    %eax,(%esp)
77a91662:	e8 f9 13 00 00       	call   77a92a60 <_HeapAlloc@12>
77a91667:	89 c6                	mov    %eax,%esi

    WideCharToMultiByte( CP_ACP, 0, path, -1, filename, pathlen, NULL, NULL );
77a91669:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
77a91670:	6a 00                	push   $0x0
77a91672:	57                   	push   %edi
77a91673:	50                   	push   %eax
77a91674:	6a ff                	push   $0xffffffff
77a91676:	53                   	push   %ebx
77a91677:	6a 00                	push   $0x0
77a91679:	6a 00                	push   $0x0
77a9167b:	e8 80 14 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    /* Add a trailing \ if necessary */
    if (pathlen > 1)
77a91680:	83 ff 01             	cmp    $0x1,%edi
77a91683:	0f 86 87 00 00 00    	jbe    77a91710 <_testFileExistenceW+0x110>
    {
        if (filename[pathlen-2] != '\\') strcpy( &filename[pathlen-1], "\\" );
77a91689:	80 7c 3e fe 5c       	cmpb   $0x5c,0xfffffffe(%esi,%edi,1)
77a9168e:	74 14                	je     77a916a4 <_testFileExistenceW+0xa4>
77a91690:	8d 44 3e ff          	lea    0xffffffff(%esi,%edi,1),%eax
77a91694:	51                   	push   %ecx
77a91695:	51                   	push   %ecx
77a91696:	68 10 30 a9 77       	push   $0x77a93010
77a9169b:	50                   	push   %eax
    }
    else /* specify the current directory */
        strcpy(filename, ".\\");
77a9169c:	e8 ef 15 00 00       	call   77a92c90 <_strcpy>
77a916a1:	83 c4 10             	add    $0x10,%esp

    WideCharToMultiByte( CP_ACP, 0, file, -1, filename+strlen(filename), filelen, NULL, NULL );
77a916a4:	8b 85 50 ff ff ff    	mov    0xffffff50(%ebp),%eax
77a916aa:	6a 00                	push   $0x0
77a916ac:	6a 00                	push   $0x0
77a916ae:	50                   	push   %eax
77a916af:	56                   	push   %esi
77a916b0:	e8 cb 15 00 00       	call   77a92c80 <_strlen>
77a916b5:	01 f0                	add    %esi,%eax
77a916b7:	89 04 24             	mov    %eax,(%esp)
77a916ba:	8b 85 54 ff ff ff    	mov    0xffffff54(%ebp),%eax
77a916c0:	6a ff                	push   $0xffffffff
77a916c2:	50                   	push   %eax
77a916c3:	6a 00                	push   $0x0
77a916c5:	6a 00                	push   $0x0
77a916c7:	e8 34 14 00 00       	call   77a92b00 <_WideCharToMultiByte@32>

    ret = (OpenFile(filename, &fileinfo,
77a916cc:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
77a916d0:	50                   	push   %eax
77a916d1:	19 c0                	sbb    %eax,%eax
77a916d3:	83 e0 f0             	and    $0xfffffff0,%eax
77a916d6:	05 10 40 00 00       	add    $0x4010,%eax
77a916db:	50                   	push   %eax
77a916dc:	8d 85 58 ff ff ff    	lea    0xffffff58(%ebp),%eax
77a916e2:	50                   	push   %eax
77a916e3:	56                   	push   %esi
77a916e4:	e8 27 14 00 00       	call   77a92b10 <_OpenFile@12>
77a916e9:	40                   	inc    %eax
                    OF_EXIST | (excl ? OF_SHARE_EXCLUSIVE : 0)) != HFILE_ERROR);
    HeapFree( GetProcessHeap(), 0, filename );
77a916ea:	56                   	push   %esi
77a916eb:	6a 00                	push   $0x0
77a916ed:	0f 95 c3             	setne  %bl
77a916f0:	50                   	push   %eax
77a916f1:	e8 5a 13 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a916f6:	81 e3 ff 00 00 00    	and    $0xff,%ebx
77a916fc:	89 04 24             	mov    %eax,(%esp)
77a916ff:	e8 6c 13 00 00       	call   77a92a70 <_HeapFree@12>
    return ret;
}
77a91704:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91707:	89 d8                	mov    %ebx,%eax
77a91709:	5b                   	pop    %ebx
77a9170a:	5e                   	pop    %esi
77a9170b:	5f                   	pop    %edi
77a9170c:	5d                   	pop    %ebp
77a9170d:	c3                   	ret    
77a9170e:	89 f6                	mov    %esi,%esi
77a91710:	52                   	push   %edx
77a91711:	52                   	push   %edx
77a91712:	68 12 30 a9 77       	push   $0x77a93012
77a91717:	56                   	push   %esi
77a91718:	eb 82                	jmp    77a9169c <_testFileExistenceW+0x9c>
77a9171a:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77a91720 <_VerFindFileA@32>:

/*****************************************************************************
 *   VerFindFileA [VERSION.@]
 *
 *   Determines where to install a file based on whether it locates another
 *   version of the file in the system.  The values VerFindFile returns are
 *   used in a subsequent call to the VerInstallFile function.
 *
 *   Revision history:
 *      30-May-1997   Dave Cuthbert (dacut@ece.cmu.edu)
 *         Reimplementation of VerFindFile from original stub.
 */
DWORD WINAPI VerFindFileA(
    DWORD flags,
    LPSTR lpszFilename,
    LPSTR lpszWinDir,
    LPSTR lpszAppDir,
    LPSTR lpszCurDir,
    UINT *lpuCurDirLen,
    LPSTR lpszDestDir,
    UINT *lpuDestDirLen )
{
77a91720:	55                   	push   %ebp
77a91721:	89 e5                	mov    %esp,%ebp
77a91723:	57                   	push   %edi
77a91724:	56                   	push   %esi
77a91725:	53                   	push   %ebx
77a91726:	81 ec 34 01 00 00    	sub    $0x134,%esp
    DWORD  retval = 0;
    const char *curDir;
    const char *destDir;
    unsigned int  curDirSizeReq;
    unsigned int  destDirSizeReq;
    char  systemDir[MAX_PATH];

    /* Print out debugging information */
    TRACE("flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
          flags, debugstr_a(lpszFilename), debugstr_a(lpszWinDir), debugstr_a(lpszAppDir),
          lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
          lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );

    /* Figure out where the file should go; shared files default to the
       system directory */

    GetSystemDirectoryA(systemDir, sizeof(systemDir));
77a9172c:	8d b5 d8 fe ff ff    	lea    0xfffffed8(%ebp),%esi
77a91732:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77a91735:	c7 85 d4 fe ff ff 00 	movl   $0x0,0xfffffed4(%ebp)
77a9173c:	00 00 00 
77a9173f:	68 04 01 00 00       	push   $0x104
77a91744:	56                   	push   %esi
77a91745:	e8 d6 13 00 00       	call   77a92b20 <_GetSystemDirectoryA@8>
    curDir = "";
    destDir = "";
77a9174a:	bf 15 30 a9 77       	mov    $0x77a93015,%edi

    if(flags & VFFF_ISSHAREDFILE)
77a9174f:	5a                   	pop    %edx
77a91750:	c7 85 d0 fe ff ff 15 	movl   $0x77a93015,0xfffffed0(%ebp)
77a91757:	30 a9 77 
77a9175a:	59                   	pop    %ecx
77a9175b:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
77a9175f:	0f 84 3b 01 00 00    	je     77a918a0 <_VerFindFileA@32+0x180>
    {
        destDir = systemDir;
77a91765:	89 f7                	mov    %esi,%edi
        /* Were we given a filename?  If so, try to find the file. */
        if(lpszFilename)
77a91767:	85 db                	test   %ebx,%ebx
77a91769:	74 75                	je     77a917e0 <_VerFindFileA@32+0xc0>
        {
            if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
77a9176b:	83 ec 0c             	sub    $0xc,%esp
77a9176e:	89 da                	mov    %ebx,%edx
77a91770:	89 f0                	mov    %esi,%eax
77a91772:	6a 00                	push   $0x0
77a91774:	e8 e7 fd ff ff       	call   77a91560 <_testFileExistenceA>
77a91779:	83 c4 10             	add    $0x10,%esp
77a9177c:	85 c0                	test   %eax,%eax
77a9177e:	0f 85 47 01 00 00    	jne    77a918cb <_VerFindFileA@32+0x1ab>
            else if(lpszAppDir && testFileExistenceA(lpszAppDir, lpszFilename, FALSE))
77a91784:	8b 45 14             	mov    0x14(%ebp),%eax
77a91787:	85 c0                	test   %eax,%eax
77a91789:	74 29                	je     77a917b4 <_VerFindFileA@32+0x94>
77a9178b:	83 ec 0c             	sub    $0xc,%esp
77a9178e:	89 da                	mov    %ebx,%edx
77a91790:	8b 45 14             	mov    0x14(%ebp),%eax
77a91793:	6a 00                	push   $0x0
77a91795:	e8 c6 fd ff ff       	call   77a91560 <_testFileExistenceA>
77a9179a:	83 c4 10             	add    $0x10,%esp
77a9179d:	85 c0                	test   %eax,%eax
77a9179f:	74 13                	je     77a917b4 <_VerFindFileA@32+0x94>
            {
                curDir = lpszAppDir;
77a917a1:	8b 45 14             	mov    0x14(%ebp),%eax
77a917a4:	89 85 d0 fe ff ff    	mov    %eax,0xfffffed0(%ebp)
                retval |= VFF_CURNEDEST;
            }
        }
    }
    else /* not a shared file */
    {
        if(lpszAppDir)
        {
            destDir = lpszAppDir;
            if(lpszFilename)
            {
                if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
                else if(testFileExistenceA(systemDir, lpszFilename, FALSE))
                {
                    curDir = systemDir;
                    retval |= VFF_CURNEDEST;
77a917aa:	c7 85 d4 fe ff ff 01 	movl   $0x1,0xfffffed4(%ebp)
77a917b1:	00 00 00 
                }
            }
        }
    }

    if (lpszFilename && !testFileExistenceA(curDir, lpszFilename, TRUE))
77a917b4:	85 db                	test   %ebx,%ebx
77a917b6:	74 28                	je     77a917e0 <_VerFindFileA@32+0xc0>
77a917b8:	83 ec 0c             	sub    $0xc,%esp
77a917bb:	89 da                	mov    %ebx,%edx
77a917bd:	8b 85 d0 fe ff ff    	mov    0xfffffed0(%ebp),%eax
77a917c3:	6a 01                	push   $0x1
77a917c5:	e8 96 fd ff ff       	call   77a91560 <_testFileExistenceA>
77a917ca:	83 c4 10             	add    $0x10,%esp
77a917cd:	85 c0                	test   %eax,%eax
77a917cf:	75 0f                	jne    77a917e0 <_VerFindFileA@32+0xc0>
        retval |= VFF_FILEINUSE;
77a917d1:	8b 85 d4 fe ff ff    	mov    0xfffffed4(%ebp),%eax
77a917d7:	83 c8 02             	or     $0x2,%eax
77a917da:	89 85 d4 fe ff ff    	mov    %eax,0xfffffed4(%ebp)

    curDirSizeReq = strlen(curDir) + 1;
77a917e0:	83 ec 0c             	sub    $0xc,%esp
77a917e3:	8b 85 d0 fe ff ff    	mov    0xfffffed0(%ebp),%eax
77a917e9:	50                   	push   %eax
77a917ea:	e8 91 14 00 00       	call   77a92c80 <_strlen>
    destDirSizeReq = strlen(destDir) + 1;
77a917ef:	89 3c 24             	mov    %edi,(%esp)
77a917f2:	8d 70 01             	lea    0x1(%eax),%esi
77a917f5:	e8 86 14 00 00       	call   77a92c80 <_strlen>
77a917fa:	83 c4 10             	add    $0x10,%esp
77a917fd:	8d 58 01             	lea    0x1(%eax),%ebx

    /* Make sure that the pointers to the size of the buffers are
       valid; if not, do NOTHING with that buffer.  If that pointer
       is valid, then make sure that the buffer pointer is valid, too! */

    if(lpuDestDirLen && lpszDestDir)
77a91800:	8b 45 24             	mov    0x24(%ebp),%eax
77a91803:	85 c0                	test   %eax,%eax
77a91805:	8b 45 20             	mov    0x20(%ebp),%eax
77a91808:	0f 95 c2             	setne  %dl
77a9180b:	85 c0                	test   %eax,%eax
77a9180d:	0f 95 c0             	setne  %al
77a91810:	25 ff 00 00 00       	and    $0xff,%eax
77a91815:	85 c2                	test   %eax,%edx
77a91817:	74 2a                	je     77a91843 <_VerFindFileA@32+0x123>
    {
        if (*lpuDestDirLen < destDirSizeReq) retval |= VFF_BUFFTOOSMALL;
77a91819:	8b 55 24             	mov    0x24(%ebp),%edx
77a9181c:	8b 02                	mov    (%edx),%eax
77a9181e:	39 d8                	cmp    %ebx,%eax
77a91820:	73 0f                	jae    77a91831 <_VerFindFileA@32+0x111>
77a91822:	8b 8d d4 fe ff ff    	mov    0xfffffed4(%ebp),%ecx
77a91828:	83 c9 04             	or     $0x4,%ecx
77a9182b:	89 8d d4 fe ff ff    	mov    %ecx,0xfffffed4(%ebp)
        lstrcpynA(lpszDestDir, destDir, *lpuDestDirLen);
77a91831:	52                   	push   %edx
77a91832:	50                   	push   %eax
77a91833:	8b 45 20             	mov    0x20(%ebp),%eax
77a91836:	57                   	push   %edi
77a91837:	50                   	push   %eax
77a91838:	e8 f3 12 00 00       	call   77a92b30 <_lstrcpynA@12>
        *lpuDestDirLen = destDirSizeReq;
77a9183d:	8b 45 24             	mov    0x24(%ebp),%eax
77a91840:	89 18                	mov    %ebx,(%eax)
77a91842:	58                   	pop    %eax
    }
    if(lpuCurDirLen && lpszCurDir)
77a91843:	8b 7d 1c             	mov    0x1c(%ebp),%edi
77a91846:	8b 5d 18             	mov    0x18(%ebp),%ebx
77a91849:	85 ff                	test   %edi,%edi
77a9184b:	0f 95 c2             	setne  %dl
77a9184e:	85 db                	test   %ebx,%ebx
77a91850:	0f 95 c0             	setne  %al
77a91853:	25 ff 00 00 00       	and    $0xff,%eax
77a91858:	85 c2                	test   %eax,%edx
77a9185a:	74 30                	je     77a9188c <_VerFindFileA@32+0x16c>
    {
        if(*lpuCurDirLen < curDirSizeReq) retval |= VFF_BUFFTOOSMALL;
77a9185c:	8b 55 1c             	mov    0x1c(%ebp),%edx
77a9185f:	8b 02                	mov    (%edx),%eax
77a91861:	39 f0                	cmp    %esi,%eax
77a91863:	73 0f                	jae    77a91874 <_VerFindFileA@32+0x154>
77a91865:	8b 8d d4 fe ff ff    	mov    0xfffffed4(%ebp),%ecx
77a9186b:	83 c9 04             	or     $0x4,%ecx
77a9186e:	89 8d d4 fe ff ff    	mov    %ecx,0xfffffed4(%ebp)
        lstrcpynA(lpszCurDir, curDir, *lpuCurDirLen);
77a91874:	8b 7d 18             	mov    0x18(%ebp),%edi
77a91877:	52                   	push   %edx
77a91878:	50                   	push   %eax
77a91879:	8b 85 d0 fe ff ff    	mov    0xfffffed0(%ebp),%eax
77a9187f:	50                   	push   %eax
77a91880:	57                   	push   %edi
77a91881:	e8 aa 12 00 00       	call   77a92b30 <_lstrcpynA@12>
        *lpuCurDirLen = curDirSizeReq;
77a91886:	8b 45 1c             	mov    0x1c(%ebp),%eax
77a91889:	89 30                	mov    %esi,(%eax)
77a9188b:	5b                   	pop    %ebx
    }

    TRACE("ret = %lu (%s%s%s) curdir=%s destdir=%s\n", retval,
          (retval & VFF_CURNEDEST) ? "VFF_CURNEDEST " : "",
          (retval & VFF_FILEINUSE) ? "VFF_FILEINUSE " : "",
          (retval & VFF_BUFFTOOSMALL) ? "VFF_BUFFTOOSMALL " : "",
          debugstr_a(lpszCurDir), debugstr_a(lpszDestDir));

    return retval;
}
77a9188c:	8b 85 d4 fe ff ff    	mov    0xfffffed4(%ebp),%eax
77a91892:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91895:	5b                   	pop    %ebx
77a91896:	5e                   	pop    %esi
77a91897:	5f                   	pop    %edi
77a91898:	5d                   	pop    %ebp
77a91899:	c2 20 00             	ret    $0x20
77a9189c:	8d 74 26 00          	lea    0x0(%esi),%esi
77a918a0:	8b 45 14             	mov    0x14(%ebp),%eax
77a918a3:	85 c0                	test   %eax,%eax
77a918a5:	0f 84 09 ff ff ff    	je     77a917b4 <_VerFindFileA@32+0x94>
77a918ab:	8b 7d 14             	mov    0x14(%ebp),%edi
77a918ae:	85 db                	test   %ebx,%ebx
77a918b0:	0f 84 2a ff ff ff    	je     77a917e0 <_VerFindFileA@32+0xc0>
77a918b6:	83 ec 0c             	sub    $0xc,%esp
77a918b9:	89 da                	mov    %ebx,%edx
77a918bb:	89 f8                	mov    %edi,%eax
77a918bd:	6a 00                	push   $0x0
77a918bf:	e8 9c fc ff ff       	call   77a91560 <_testFileExistenceA>
77a918c4:	83 c4 10             	add    $0x10,%esp
77a918c7:	85 c0                	test   %eax,%eax
77a918c9:	74 0b                	je     77a918d6 <_VerFindFileA@32+0x1b6>
77a918cb:	89 bd d0 fe ff ff    	mov    %edi,0xfffffed0(%ebp)
77a918d1:	e9 de fe ff ff       	jmp    77a917b4 <_VerFindFileA@32+0x94>
77a918d6:	83 ec 0c             	sub    $0xc,%esp
77a918d9:	89 da                	mov    %ebx,%edx
77a918db:	89 f0                	mov    %esi,%eax
77a918dd:	6a 00                	push   $0x0
77a918df:	e8 7c fc ff ff       	call   77a91560 <_testFileExistenceA>
77a918e4:	83 c4 10             	add    $0x10,%esp
77a918e7:	85 c0                	test   %eax,%eax
77a918e9:	0f 84 c5 fe ff ff    	je     77a917b4 <_VerFindFileA@32+0x94>
77a918ef:	89 b5 d0 fe ff ff    	mov    %esi,0xfffffed0(%ebp)
77a918f5:	e9 b0 fe ff ff       	jmp    77a917aa <_VerFindFileA@32+0x8a>
77a918fa:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77a91900 <_VerFindFileW@32>:

/*****************************************************************************
 * VerFindFileW						[VERSION.@]
 */
DWORD WINAPI VerFindFileW( DWORD flags,LPWSTR lpszFilename,LPWSTR lpszWinDir,
                           LPWSTR lpszAppDir, LPWSTR lpszCurDir,UINT *lpuCurDirLen,
                           LPWSTR lpszDestDir,UINT *lpuDestDirLen )
{
77a91900:	55                   	push   %ebp
77a91901:	89 e5                	mov    %esp,%ebp
77a91903:	57                   	push   %edi
77a91904:	56                   	push   %esi
77a91905:	53                   	push   %ebx
77a91906:	81 ec 34 02 00 00    	sub    $0x234,%esp
    static const WCHAR emptyW;
    DWORD retval = 0;
    const WCHAR *curDir;
    const WCHAR *destDir;
    unsigned int curDirSizeReq;
    unsigned int destDirSizeReq;
    WCHAR systemDir[MAX_PATH];

    /* Print out debugging information */
    TRACE("flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
          flags, debugstr_w(lpszFilename), debugstr_w(lpszWinDir), debugstr_w(lpszAppDir),
          lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
          lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );

    /* Figure out where the file should go; shared files default to the
       system directory */

    GetSystemDirectoryW(systemDir, sizeof(systemDir)/sizeof(WCHAR));
77a9190c:	8d b5 d8 fd ff ff    	lea    0xfffffdd8(%ebp),%esi
77a91912:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77a91915:	c7 85 d4 fd ff ff 00 	movl   $0x0,0xfffffdd4(%ebp)
77a9191c:	00 00 00 
77a9191f:	68 04 01 00 00       	push   $0x104
77a91924:	56                   	push   %esi
77a91925:	e8 16 12 00 00       	call   77a92b40 <_GetSystemDirectoryW@8>
    curDir = &emptyW;
    destDir = &emptyW;
77a9192a:	bf 00 40 a9 77       	mov    $0x77a94000,%edi

    if(flags & VFFF_ISSHAREDFILE)
77a9192f:	5a                   	pop    %edx
77a91930:	c7 85 d0 fd ff ff 00 	movl   $0x77a94000,0xfffffdd0(%ebp)
77a91937:	40 a9 77 
77a9193a:	59                   	pop    %ecx
77a9193b:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
77a9193f:	0f 84 3b 01 00 00    	je     77a91a80 <_VerFindFileW@32+0x180>
    {
        destDir = systemDir;
77a91945:	89 f7                	mov    %esi,%edi
        /* Were we given a filename?  If so, try to find the file. */
        if(lpszFilename)
77a91947:	85 db                	test   %ebx,%ebx
77a91949:	74 75                	je     77a919c0 <_VerFindFileW@32+0xc0>
        {
            if(testFileExistenceW(destDir, lpszFilename, FALSE)) curDir = destDir;
77a9194b:	83 ec 0c             	sub    $0xc,%esp
77a9194e:	89 da                	mov    %ebx,%edx
77a91950:	89 f0                	mov    %esi,%eax
77a91952:	6a 00                	push   $0x0
77a91954:	e8 a7 fc ff ff       	call   77a91600 <_testFileExistenceW>
77a91959:	83 c4 10             	add    $0x10,%esp
77a9195c:	85 c0                	test   %eax,%eax
77a9195e:	0f 85 47 01 00 00    	jne    77a91aab <_VerFindFileW@32+0x1ab>
            else if(lpszAppDir && testFileExistenceW(lpszAppDir, lpszFilename, FALSE))
77a91964:	8b 45 14             	mov    0x14(%ebp),%eax
77a91967:	85 c0                	test   %eax,%eax
77a91969:	74 29                	je     77a91994 <_VerFindFileW@32+0x94>
77a9196b:	83 ec 0c             	sub    $0xc,%esp
77a9196e:	89 da                	mov    %ebx,%edx
77a91970:	8b 45 14             	mov    0x14(%ebp),%eax
77a91973:	6a 00                	push   $0x0
77a91975:	e8 86 fc ff ff       	call   77a91600 <_testFileExistenceW>
77a9197a:	83 c4 10             	add    $0x10,%esp
77a9197d:	85 c0                	test   %eax,%eax
77a9197f:	74 13                	je     77a91994 <_VerFindFileW@32+0x94>
            {
                curDir = lpszAppDir;
77a91981:	8b 45 14             	mov    0x14(%ebp),%eax
77a91984:	89 85 d0 fd ff ff    	mov    %eax,0xfffffdd0(%ebp)
                retval |= VFF_CURNEDEST;
            }
        }
    }
    else /* not a shared file */
    {
        if(lpszAppDir)
        {
            destDir = lpszAppDir;
            if(lpszFilename)
            {
                if(testFileExistenceW(destDir, lpszFilename, FALSE)) curDir = destDir;
                else if(testFileExistenceW(systemDir, lpszFilename, FALSE))
                {
                    curDir = systemDir;
                    retval |= VFF_CURNEDEST;
77a9198a:	c7 85 d4 fd ff ff 01 	movl   $0x1,0xfffffdd4(%ebp)
77a91991:	00 00 00 
                }
            }
        }
    }

    if (lpszFilename && !testFileExistenceW(curDir, lpszFilename, TRUE))
77a91994:	85 db                	test   %ebx,%ebx
77a91996:	74 28                	je     77a919c0 <_VerFindFileW@32+0xc0>
77a91998:	83 ec 0c             	sub    $0xc,%esp
77a9199b:	89 da                	mov    %ebx,%edx
77a9199d:	8b 85 d0 fd ff ff    	mov    0xfffffdd0(%ebp),%eax
77a919a3:	6a 01                	push   $0x1
77a919a5:	e8 56 fc ff ff       	call   77a91600 <_testFileExistenceW>
77a919aa:	83 c4 10             	add    $0x10,%esp
77a919ad:	85 c0                	test   %eax,%eax
77a919af:	75 0f                	jne    77a919c0 <_VerFindFileW@32+0xc0>
        retval |= VFF_FILEINUSE;
77a919b1:	8b 85 d4 fd ff ff    	mov    0xfffffdd4(%ebp),%eax
77a919b7:	83 c8 02             	or     $0x2,%eax
77a919ba:	89 85 d4 fd ff ff    	mov    %eax,0xfffffdd4(%ebp)

    curDirSizeReq = strlenW(curDir) + 1;
77a919c0:	83 ec 0c             	sub    $0xc,%esp
77a919c3:	8b 85 d0 fd ff ff    	mov    0xfffffdd0(%ebp),%eax
77a919c9:	50                   	push   %eax
77a919ca:	e8 71 12 00 00       	call   77a92c40 <_wcslen>
    destDirSizeReq = strlenW(destDir) + 1;
77a919cf:	89 3c 24             	mov    %edi,(%esp)
77a919d2:	8d 70 01             	lea    0x1(%eax),%esi
77a919d5:	e8 66 12 00 00       	call   77a92c40 <_wcslen>

    /* Make sure that the pointers to the size of the buffers are
       valid; if not, do NOTHING with that buffer.  If that pointer
       is valid, then make sure that the buffer pointer is valid, too! */

    if(lpuDestDirLen && lpszDestDir)
77a919da:	83 c4 10             	add    $0x10,%esp
77a919dd:	8d 58 01             	lea    0x1(%eax),%ebx
77a919e0:	8b 45 24             	mov    0x24(%ebp),%eax
77a919e3:	85 c0                	test   %eax,%eax
77a919e5:	8b 45 20             	mov    0x20(%ebp),%eax
77a919e8:	0f 95 c2             	setne  %dl
77a919eb:	85 c0                	test   %eax,%eax
77a919ed:	0f 95 c0             	setne  %al
77a919f0:	25 ff 00 00 00       	and    $0xff,%eax
77a919f5:	85 c2                	test   %eax,%edx
77a919f7:	74 2a                	je     77a91a23 <_VerFindFileW@32+0x123>
    {
        if (*lpuDestDirLen < destDirSizeReq) retval |= VFF_BUFFTOOSMALL;
77a919f9:	8b 55 24             	mov    0x24(%ebp),%edx
77a919fc:	8b 02                	mov    (%edx),%eax
77a919fe:	39 d8                	cmp    %ebx,%eax
77a91a00:	73 0f                	jae    77a91a11 <_VerFindFileW@32+0x111>
77a91a02:	8b 8d d4 fd ff ff    	mov    0xfffffdd4(%ebp),%ecx
77a91a08:	83 c9 04             	or     $0x4,%ecx
77a91a0b:	89 8d d4 fd ff ff    	mov    %ecx,0xfffffdd4(%ebp)
        lstrcpynW(lpszDestDir, destDir, *lpuDestDirLen);
77a91a11:	52                   	push   %edx
77a91a12:	50                   	push   %eax
77a91a13:	8b 45 20             	mov    0x20(%ebp),%eax
77a91a16:	57                   	push   %edi
77a91a17:	50                   	push   %eax
77a91a18:	e8 33 11 00 00       	call   77a92b50 <_lstrcpynW@12>
        *lpuDestDirLen = destDirSizeReq;
77a91a1d:	8b 45 24             	mov    0x24(%ebp),%eax
77a91a20:	89 18                	mov    %ebx,(%eax)
77a91a22:	58                   	pop    %eax
    }
    if(lpuCurDirLen && lpszCurDir)
77a91a23:	8b 7d 1c             	mov    0x1c(%ebp),%edi
77a91a26:	8b 5d 18             	mov    0x18(%ebp),%ebx
77a91a29:	85 ff                	test   %edi,%edi
77a91a2b:	0f 95 c2             	setne  %dl
77a91a2e:	85 db                	test   %ebx,%ebx
77a91a30:	0f 95 c0             	setne  %al
77a91a33:	25 ff 00 00 00       	and    $0xff,%eax
77a91a38:	85 c2                	test   %eax,%edx
77a91a3a:	74 30                	je     77a91a6c <_VerFindFileW@32+0x16c>
    {
        if(*lpuCurDirLen < curDirSizeReq) retval |= VFF_BUFFTOOSMALL;
77a91a3c:	8b 55 1c             	mov    0x1c(%ebp),%edx
77a91a3f:	8b 02                	mov    (%edx),%eax
77a91a41:	39 f0                	cmp    %esi,%eax
77a91a43:	73 0f                	jae    77a91a54 <_VerFindFileW@32+0x154>
77a91a45:	8b 8d d4 fd ff ff    	mov    0xfffffdd4(%ebp),%ecx
77a91a4b:	83 c9 04             	or     $0x4,%ecx
77a91a4e:	89 8d d4 fd ff ff    	mov    %ecx,0xfffffdd4(%ebp)
        lstrcpynW(lpszCurDir, curDir, *lpuCurDirLen);
77a91a54:	8b 7d 18             	mov    0x18(%ebp),%edi
77a91a57:	52                   	push   %edx
77a91a58:	50                   	push   %eax
77a91a59:	8b 85 d0 fd ff ff    	mov    0xfffffdd0(%ebp),%eax
77a91a5f:	50                   	push   %eax
77a91a60:	57                   	push   %edi
77a91a61:	e8 ea 10 00 00       	call   77a92b50 <_lstrcpynW@12>
        *lpuCurDirLen = curDirSizeReq;
77a91a66:	8b 45 1c             	mov    0x1c(%ebp),%eax
77a91a69:	89 30                	mov    %esi,(%eax)
77a91a6b:	5b                   	pop    %ebx
    }

    TRACE("ret = %lu (%s%s%s) curdir=%s destdir=%s\n", retval,
          (retval & VFF_CURNEDEST) ? "VFF_CURNEDEST " : "",
          (retval & VFF_FILEINUSE) ? "VFF_FILEINUSE " : "",
          (retval & VFF_BUFFTOOSMALL) ? "VFF_BUFFTOOSMALL " : "",
          debugstr_w(lpszCurDir), debugstr_w(lpszDestDir));
    return retval;
}
77a91a6c:	8b 85 d4 fd ff ff    	mov    0xfffffdd4(%ebp),%eax
77a91a72:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91a75:	5b                   	pop    %ebx
77a91a76:	5e                   	pop    %esi
77a91a77:	5f                   	pop    %edi
77a91a78:	5d                   	pop    %ebp
77a91a79:	c2 20 00             	ret    $0x20
77a91a7c:	8d 74 26 00          	lea    0x0(%esi),%esi
77a91a80:	8b 45 14             	mov    0x14(%ebp),%eax
77a91a83:	85 c0                	test   %eax,%eax
77a91a85:	0f 84 09 ff ff ff    	je     77a91994 <_VerFindFileW@32+0x94>
77a91a8b:	8b 7d 14             	mov    0x14(%ebp),%edi
77a91a8e:	85 db                	test   %ebx,%ebx
77a91a90:	0f 84 2a ff ff ff    	je     77a919c0 <_VerFindFileW@32+0xc0>
77a91a96:	83 ec 0c             	sub    $0xc,%esp
77a91a99:	89 da                	mov    %ebx,%edx
77a91a9b:	89 f8                	mov    %edi,%eax
77a91a9d:	6a 00                	push   $0x0
77a91a9f:	e8 5c fb ff ff       	call   77a91600 <_testFileExistenceW>
77a91aa4:	83 c4 10             	add    $0x10,%esp
77a91aa7:	85 c0                	test   %eax,%eax
77a91aa9:	74 0b                	je     77a91ab6 <_VerFindFileW@32+0x1b6>
77a91aab:	89 bd d0 fd ff ff    	mov    %edi,0xfffffdd0(%ebp)
77a91ab1:	e9 de fe ff ff       	jmp    77a91994 <_VerFindFileW@32+0x94>
77a91ab6:	83 ec 0c             	sub    $0xc,%esp
77a91ab9:	89 da                	mov    %ebx,%edx
77a91abb:	89 f0                	mov    %esi,%eax
77a91abd:	6a 00                	push   $0x0
77a91abf:	e8 3c fb ff ff       	call   77a91600 <_testFileExistenceW>
77a91ac4:	83 c4 10             	add    $0x10,%esp
77a91ac7:	85 c0                	test   %eax,%eax
77a91ac9:	0f 84 c5 fe ff ff    	je     77a91994 <_VerFindFileW@32+0x94>
77a91acf:	89 b5 d0 fd ff ff    	mov    %esi,0xfffffdd0(%ebp)
77a91ad5:	e9 b0 fe ff ff       	jmp    77a9198a <_VerFindFileW@32+0x8a>
77a91ada:	8d b6 00 00 00 00    	lea    0x0(%esi),%esi

77a91ae0 <__fetch_versioninfo>:

static LPBYTE
_fetch_versioninfo(LPSTR fn,VS_FIXEDFILEINFO **vffi) {
77a91ae0:	55                   	push   %ebp
77a91ae1:	89 e5                	mov    %esp,%ebp
77a91ae3:	57                   	push   %edi
77a91ae4:	56                   	push   %esi
77a91ae5:	53                   	push   %ebx
77a91ae6:	83 ec 10             	sub    $0x10,%esp
77a91ae9:	89 55 f0             	mov    %edx,0xfffffff0(%ebp)
77a91aec:	89 c7                	mov    %eax,%edi
    DWORD	alloclen;
    LPBYTE	buf;
    DWORD	ret;

    alloclen = 1000;
77a91aee:	be e8 03 00 00       	mov    $0x3e8,%esi
    buf=HeapAlloc(GetProcessHeap(), 0, alloclen);
77a91af3:	68 e8 03 00 00       	push   $0x3e8
77a91af8:	6a 00                	push   $0x0
77a91afa:	51                   	push   %ecx
77a91afb:	e8 50 0f 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91b00:	89 04 24             	mov    %eax,(%esp)
77a91b03:	e8 58 0f 00 00       	call   77a92a60 <_HeapAlloc@12>
77a91b08:	89 c3                	mov    %eax,%ebx
    if(buf == NULL) {
77a91b0a:	5a                   	pop    %edx
        WARN("Memory exausted while fetching version info!\n");
        return NULL;
77a91b0b:	31 c0                	xor    %eax,%eax
77a91b0d:	85 db                	test   %ebx,%ebx
77a91b0f:	74 48                	je     77a91b59 <__fetch_versioninfo+0x79>
    }
    while (1) {
    	ret = GetFileVersionInfoA(fn,0,alloclen,buf);
77a91b11:	53                   	push   %ebx
77a91b12:	56                   	push   %esi
77a91b13:	6a 00                	push   $0x0
77a91b15:	57                   	push   %edi
77a91b16:	e8 95 f7 ff ff       	call   77a912b0 <_GetFileVersionInfoA@16>
	if (!ret) {
77a91b1b:	85 c0                	test   %eax,%eax
77a91b1d:	74 42                	je     77a91b61 <__fetch_versioninfo+0x81>
	    HeapFree(GetProcessHeap(), 0, buf);
	    return NULL;
	}
	if (alloclen<*(WORD*)buf) {
77a91b1f:	66 8b 03             	mov    (%ebx),%ax
77a91b22:	25 ff ff 00 00       	and    $0xffff,%eax
77a91b27:	39 f0                	cmp    %esi,%eax
77a91b29:	76 4a                	jbe    77a91b75 <__fetch_versioninfo+0x95>
	    alloclen = *(WORD*)buf;
77a91b2b:	89 c6                	mov    %eax,%esi
	    HeapFree(GetProcessHeap(), 0, buf);
77a91b2d:	50                   	push   %eax
77a91b2e:	53                   	push   %ebx
77a91b2f:	6a 00                	push   $0x0
77a91b31:	50                   	push   %eax
77a91b32:	e8 19 0f 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91b37:	89 04 24             	mov    %eax,(%esp)
77a91b3a:	e8 31 0f 00 00       	call   77a92a70 <_HeapFree@12>
	    buf = HeapAlloc(GetProcessHeap(), 0, alloclen);
77a91b3f:	56                   	push   %esi
77a91b40:	6a 00                	push   $0x0
77a91b42:	50                   	push   %eax
77a91b43:	e8 08 0f 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91b48:	89 04 24             	mov    %eax,(%esp)
77a91b4b:	e8 10 0f 00 00       	call   77a92a60 <_HeapAlloc@12>
77a91b50:	89 c3                	mov    %eax,%ebx
            if(buf == NULL) {
77a91b52:	58                   	pop    %eax
77a91b53:	85 db                	test   %ebx,%ebx
77a91b55:	75 ba                	jne    77a91b11 <__fetch_versioninfo+0x31>
               WARN("Memory exausted while fetching version info!\n");
               return NULL;
77a91b57:	31 c0                	xor    %eax,%eax
            }
	} else {
	    *vffi = (VS_FIXEDFILEINFO*)(buf+0x14);
	    if ((*vffi)->dwSignature == 0x004f0049) /* hack to detect unicode */
	    	*vffi = (VS_FIXEDFILEINFO*)(buf+0x28);
	    if ((*vffi)->dwSignature != VS_FFI_SIGNATURE)
	    	WARN("Bad VS_FIXEDFILEINFO signature 0x%08lx\n",(*vffi)->dwSignature);
	    return buf;
	}
    }
}
77a91b59:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91b5c:	5b                   	pop    %ebx
77a91b5d:	5e                   	pop    %esi
77a91b5e:	5f                   	pop    %edi
77a91b5f:	5d                   	pop    %ebp
77a91b60:	c3                   	ret    
77a91b61:	50                   	push   %eax
77a91b62:	53                   	push   %ebx
77a91b63:	6a 00                	push   $0x0
77a91b65:	50                   	push   %eax
77a91b66:	e8 e5 0e 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91b6b:	89 04 24             	mov    %eax,(%esp)
77a91b6e:	e8 fd 0e 00 00       	call   77a92a70 <_HeapFree@12>
77a91b73:	eb e2                	jmp    77a91b57 <__fetch_versioninfo+0x77>
77a91b75:	8d 43 14             	lea    0x14(%ebx),%eax
77a91b78:	81 7b 14 49 00 4f 00 	cmpl   $0x4f0049,0x14(%ebx)
77a91b7f:	74 0f                	je     77a91b90 <__fetch_versioninfo+0xb0>
77a91b81:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a91b84:	89 02                	mov    %eax,(%edx)
77a91b86:	89 d8                	mov    %ebx,%eax
77a91b88:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91b8b:	5b                   	pop    %ebx
77a91b8c:	5e                   	pop    %esi
77a91b8d:	5f                   	pop    %edi
77a91b8e:	5d                   	pop    %ebp
77a91b8f:	c3                   	ret    
77a91b90:	8d 43 28             	lea    0x28(%ebx),%eax
77a91b93:	eb ec                	jmp    77a91b81 <__fetch_versioninfo+0xa1>
77a91b95:	8d 74 26 00          	lea    0x0(%esi),%esi
77a91b99:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a91ba0 <__error2vif>:

static DWORD
_error2vif(DWORD error) {
77a91ba0:	55                   	push   %ebp
    switch (error) {
    case ERROR_ACCESS_DENIED:
    	return VIF_ACCESSVIOLATION;
77a91ba1:	ba 00 02 00 00       	mov    $0x200,%edx
77a91ba6:	89 e5                	mov    %esp,%ebp
77a91ba8:	83 f8 05             	cmp    $0x5,%eax
77a91bab:	74 0c                	je     77a91bb9 <__error2vif+0x19>
    case ERROR_SHARING_VIOLATION:
    	return VIF_SHARINGVIOLATION;
77a91bad:	66 ba 00 04          	mov    $0x400,%dx
77a91bb1:	83 f8 20             	cmp    $0x20,%eax
77a91bb4:	74 03                	je     77a91bb9 <__error2vif+0x19>
    default:
    	return 0;
77a91bb6:	66 31 d2             	xor    %dx,%dx
    }
}
77a91bb9:	89 d0                	mov    %edx,%eax
77a91bbb:	5d                   	pop    %ebp
77a91bbc:	c3                   	ret    
77a91bbd:	8d 76 00             	lea    0x0(%esi),%esi

77a91bc0 <_VerInstallFileA@32>:


/******************************************************************************
 * VerInstallFileA [VERSION.@]
 */
DWORD WINAPI VerInstallFileA(
	DWORD flags,LPSTR srcfilename,LPSTR destfilename,LPSTR srcdir,
 	LPSTR destdir,LPSTR curdir,LPSTR tmpfile,UINT *tmpfilelen )
{
77a91bc0:	55                   	push   %ebp
77a91bc1:	89 e5                	mov    %esp,%ebp
77a91bc3:	57                   	push   %edi
77a91bc4:	56                   	push   %esi
77a91bc5:	53                   	push   %ebx
77a91bc6:	81 ec 0c 05 00 00    	sub    $0x50c,%esp
    LPCSTR pdest;
    char	destfn[260],tmpfn[260],srcfn[260];
    HFILE	hfsrc,hfdst;
    DWORD	attr,ret,xret,tmplast;
    LPBYTE	buf1,buf2;
    OFSTRUCT	ofs;

    TRACE("(%x,%s,%s,%s,%s,%s,%p,%d)\n",
	    flags,srcfilename,destfilename,srcdir,destdir,curdir,tmpfile,*tmpfilelen
    );
    xret = 0;
    sprintf(srcfn,"%s\\%s",srcdir,srcfilename);
77a91bcc:	8b 45 0c             	mov    0xc(%ebp),%eax
77a91bcf:	8b 75 14             	mov    0x14(%ebp),%esi
77a91bd2:	50                   	push   %eax
77a91bd3:	8d 85 b8 fc ff ff    	lea    0xfffffcb8(%ebp),%eax
77a91bd9:	56                   	push   %esi
77a91bda:	8b 5d 18             	mov    0x18(%ebp),%ebx
77a91bdd:	68 16 30 a9 77       	push   $0x77a93016
77a91be2:	50                   	push   %eax
77a91be3:	8b 7d 08             	mov    0x8(%ebp),%edi
77a91be6:	e8 75 10 00 00       	call   77a92c60 <_sprintf>
    if (!destdir || !*destdir) pdest = srcdir;
77a91beb:	83 c4 10             	add    $0x10,%esp
77a91bee:	85 db                	test   %ebx,%ebx
77a91bf0:	0f 84 cf 01 00 00    	je     77a91dc5 <_VerInstallFileA@32+0x205>
    else pdest = destdir;
77a91bf6:	89 9d fc fa ff ff    	mov    %ebx,0xfffffafc(%ebp)
77a91bfc:	80 3b 00             	cmpb   $0x0,(%ebx)
77a91bff:	0f 84 c0 01 00 00    	je     77a91dc5 <_VerInstallFileA@32+0x205>
    sprintf(destfn,"%s\\%s",pdest,destfilename);
77a91c05:	8d 95 d8 fe ff ff    	lea    0xfffffed8(%ebp),%edx
77a91c0b:	8b 9d fc fa ff ff    	mov    0xfffffafc(%ebp),%ebx
77a91c11:	8b 75 10             	mov    0x10(%ebp),%esi
77a91c14:	56                   	push   %esi
77a91c15:	53                   	push   %ebx
77a91c16:	68 16 30 a9 77       	push   $0x77a93016
77a91c1b:	52                   	push   %edx
77a91c1c:	e8 3f 10 00 00       	call   77a92c60 <_sprintf>
    hfsrc=LZOpenFileA(srcfn,&ofs,OF_READ);
77a91c21:	83 c4 0c             	add    $0xc,%esp
77a91c24:	8d 85 b8 fc ff ff    	lea    0xfffffcb8(%ebp),%eax
77a91c2a:	8d 9d 28 fc ff ff    	lea    0xfffffc28(%ebp),%ebx
77a91c30:	6a 00                	push   $0x0
77a91c32:	53                   	push   %ebx
77a91c33:	50                   	push   %eax
77a91c34:	e8 27 0f 00 00       	call   77a92b60 <_LZOpenFileA@12>
    if (hfsrc < 0)
77a91c39:	59                   	pop    %ecx
77a91c3a:	89 85 f8 fa ff ff    	mov    %eax,0xfffffaf8(%ebp)
    	return VIF_CANNOTREADSRC;
77a91c40:	b8 00 00 01 00       	mov    $0x10000,%eax
77a91c45:	8b 95 f8 fa ff ff    	mov    0xfffffaf8(%ebp),%edx
77a91c4b:	85 d2                	test   %edx,%edx
77a91c4d:	0f 88 68 01 00 00    	js     77a91dbb <_VerInstallFileA@32+0x1fb>
    sprintf(tmpfn,"%s\\%s",pdest,destfilename);
77a91c53:	8b 8d fc fa ff ff    	mov    0xfffffafc(%ebp),%ecx
77a91c59:	8d 95 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%edx
77a91c5f:	8b 75 10             	mov    0x10(%ebp),%esi
77a91c62:	56                   	push   %esi
77a91c63:	51                   	push   %ecx
77a91c64:	68 16 30 a9 77       	push   $0x77a93016
77a91c69:	52                   	push   %edx
77a91c6a:	e8 f1 0f 00 00       	call   77a92c60 <_sprintf>
    tmplast=strlen(pdest)+1;
    attr = GetFileAttributesA(tmpfn);
77a91c6f:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91c75:	89 04 24             	mov    %eax,(%esp)
77a91c78:	e8 f3 0e 00 00       	call   77a92b70 <_GetFileAttributesA@4>
    if (attr != INVALID_FILE_ATTRIBUTES) {
77a91c7d:	83 c4 0c             	add    $0xc,%esp
77a91c80:	83 f8 ff             	cmp    $0xffffffff,%eax
77a91c83:	74 08                	je     77a91c8d <_VerInstallFileA@32+0xcd>
	if (attr & FILE_ATTRIBUTE_READONLY) {
77a91c85:	a8 01                	test   $0x1,%al
77a91c87:	0f 85 17 04 00 00    	jne    77a920a4 <_VerInstallFileA@32+0x4e4>
	    LZClose(hfsrc);
	    return VIF_WRITEPROT;
	}
	/* FIXME: check if file currently in use and return VIF_FILEINUSE */
    }
    attr = INVALID_FILE_ATTRIBUTES;
    if (flags & VIFF_FORCEINSTALL) {
77a91c8d:	f7 c7 01 00 00 00    	test   $0x1,%edi
77a91c93:	74 0c                	je     77a91ca1 <_VerInstallFileA@32+0xe1>
    	if (tmpfile[0]) {
77a91c95:	8b 55 20             	mov    0x20(%ebp),%edx
77a91c98:	80 3a 00             	cmpb   $0x0,(%edx)
77a91c9b:	0f 85 72 02 00 00    	jne    77a91f13 <_VerInstallFileA@32+0x353>
	    sprintf(tmpfn,"%s\\%s",pdest,tmpfile);
	    tmplast = strlen(pdest)+1;
	    attr = GetFileAttributesA(tmpfn);
	    /* if it exists, it has been copied by the call before.
	     * we jump over the copy part...
	     */
	}
    }
    if (attr == INVALID_FILE_ATTRIBUTES) {
    	char	*s;

	GetTempFileNameA(pdest,"ver",0,tmpfn); /* should not fail ... */
77a91ca1:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91ca7:	50                   	push   %eax
77a91ca8:	8b 85 fc fa ff ff    	mov    0xfffffafc(%ebp),%eax
77a91cae:	6a 00                	push   $0x0
77a91cb0:	68 1c 30 a9 77       	push   $0x77a9301c
77a91cb5:	50                   	push   %eax
77a91cb6:	e8 c5 0e 00 00       	call   77a92b80 <_GetTempFileNameA@16>
	s=strrchr(tmpfn,'\\');
77a91cbb:	8d 95 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%edx
77a91cc1:	50                   	push   %eax
77a91cc2:	50                   	push   %eax
77a91cc3:	6a 5c                	push   $0x5c
77a91cc5:	52                   	push   %edx
77a91cc6:	e8 85 0f 00 00       	call   77a92c50 <_strrchr>
77a91ccb:	83 c4 10             	add    $0x10,%esp
	if (s)
	    tmplast = s-tmpfn;
	else
	    tmplast = 0;
77a91cce:	c7 85 f4 fa ff ff 00 	movl   $0x0,0xfffffaf4(%ebp)
77a91cd5:	00 00 00 
77a91cd8:	85 c0                	test   %eax,%eax
77a91cda:	74 0e                	je     77a91cea <_VerInstallFileA@32+0x12a>
77a91cdc:	8d 95 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%edx
77a91ce2:	29 d0                	sub    %edx,%eax
77a91ce4:	89 85 f4 fa ff ff    	mov    %eax,0xfffffaf4(%ebp)
	hfdst = OpenFile(tmpfn,&ofs,OF_CREATE);
77a91cea:	50                   	push   %eax
77a91ceb:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91cf1:	68 00 10 00 00       	push   $0x1000
77a91cf6:	53                   	push   %ebx
77a91cf7:	50                   	push   %eax
77a91cf8:	e8 13 0e 00 00       	call   77a92b10 <_OpenFile@12>
77a91cfd:	89 c3                	mov    %eax,%ebx
	if (hfdst == HFILE_ERROR) {
77a91cff:	58                   	pop    %eax
77a91d00:	83 fb ff             	cmp    $0xffffffff,%ebx
77a91d03:	0f 84 82 03 00 00    	je     77a9208b <_VerInstallFileA@32+0x4cb>
	    LZClose(hfsrc);
	    return VIF_CANNOTCREATE; /* | translated dos error */
	}
	ret = LZCopy(hfsrc,hfdst);
77a91d09:	8b 8d f8 fa ff ff    	mov    0xfffffaf8(%ebp),%ecx
77a91d0f:	56                   	push   %esi
77a91d10:	56                   	push   %esi
77a91d11:	53                   	push   %ebx
77a91d12:	51                   	push   %ecx
77a91d13:	e8 78 0e 00 00       	call   77a92b90 <_LZCopy@8>
77a91d18:	89 c6                	mov    %eax,%esi
	_lclose(hfdst);
77a91d1a:	52                   	push   %edx
77a91d1b:	53                   	push   %ebx
77a91d1c:	e8 7f 0e 00 00       	call   77a92ba0 <__lclose@4>
	if (((long) ret) < 0) {
77a91d21:	83 c4 0c             	add    $0xc,%esp
77a91d24:	85 f6                	test   %esi,%esi
77a91d26:	0f 88 d4 01 00 00    	js     77a91f00 <_VerInstallFileA@32+0x340>
	    /* translate LZ errors into VIF_xxx */
	    switch (ret) {
	    case LZERROR_BADINHANDLE:
	    case LZERROR_READ:
	    case LZERROR_BADVALUE:
	    case LZERROR_UNKNOWNALG:
		ret = VIF_CANNOTREADSRC;
		break;
	    case LZERROR_BADOUTHANDLE:
	    case LZERROR_WRITE:
		ret = VIF_OUTOFSPACE;
		break;
	    case LZERROR_GLOBALLOC:
	    case LZERROR_GLOBLOCK:
		ret = VIF_OUTOFMEMORY;
		break;
	    default: /* unknown error, should not happen */
		ret = 0;
		break;
	    }
	    if (ret) {
		LZClose(hfsrc);
		return ret;
	    }
	}
    }
    xret = 0;
77a91d2c:	31 db                	xor    %ebx,%ebx
    if (!(flags & VIFF_FORCEINSTALL)) {
77a91d2e:	f7 c7 01 00 00 00    	test   $0x1,%edi
77a91d34:	0f 84 96 00 00 00    	je     77a91dd0 <_VerInstallFileA@32+0x210>
	VS_FIXEDFILEINFO *destvffi,*tmpvffi;
    	buf1 = _fetch_versioninfo(destfn,&destvffi);
	if (buf1) {
	    buf2 = _fetch_versioninfo(tmpfn,&tmpvffi);
	    if (buf2) {
	    	char	*tbuf1,*tbuf2;
		UINT	len1,len2;

		len1=len2=40;

		/* compare file versions */
		if ((destvffi->dwFileVersionMS > tmpvffi->dwFileVersionMS)||
		    ((destvffi->dwFileVersionMS==tmpvffi->dwFileVersionMS)&&
		     (destvffi->dwFileVersionLS > tmpvffi->dwFileVersionLS)
		    )
		)
		    xret |= VIF_MISMATCH|VIF_SRCOLD;
		/* compare filetypes and filesubtypes */
		if ((destvffi->dwFileType!=tmpvffi->dwFileType) ||
		    (destvffi->dwFileSubtype!=tmpvffi->dwFileSubtype)
		)
		    xret |= VIF_MISMATCH|VIF_DIFFTYPE;
		if (VerQueryValueA(buf1,"\\VarFileInfo\\Translation",(LPVOID*)&tbuf1,&len1) &&
		    VerQueryValueA(buf2,"\\VarFileInfo\\Translation",(LPVOID*)&tbuf2,&len2)
		) {
		    /* irgendwas mit tbuf1 und tbuf2 machen
		     * generiert DIFFLANG|MISMATCH
		     */
		}
		HeapFree(GetProcessHeap(), 0, buf2);
	    } else
		xret=VIF_MISMATCH|VIF_SRCOLD;
	    HeapFree(GetProcessHeap(), 0, buf1);
	}
    }
    if (xret) {
	if (*tmpfilelen<strlen(tmpfn+tmplast)) {
	    xret|=VIF_BUFFTOOSMALL;
	    DeleteFileA(tmpfn);
	} else {
	    strcpy(tmpfile,tmpfn+tmplast);
	    *tmpfilelen = strlen(tmpfn+tmplast)+1;
	    xret|=VIF_TEMPFILE;
	}
    } else {
    	if (-1!=GetFileAttributesA(destfn))
77a91d3a:	83 ec 0c             	sub    $0xc,%esp
77a91d3d:	8d 85 d8 fe ff ff    	lea    0xfffffed8(%ebp),%eax
77a91d43:	50                   	push   %eax
77a91d44:	e8 27 0e 00 00       	call   77a92b70 <_GetFileAttributesA@4>
77a91d49:	83 c4 0c             	add    $0xc,%esp
77a91d4c:	40                   	inc    %eax
77a91d4d:	74 1a                	je     77a91d69 <_VerInstallFileA@32+0x1a9>
	    if (!DeleteFileA(destfn)) {
77a91d4f:	83 ec 0c             	sub    $0xc,%esp
77a91d52:	8d 95 d8 fe ff ff    	lea    0xfffffed8(%ebp),%edx
77a91d58:	52                   	push   %edx
77a91d59:	e8 52 0e 00 00       	call   77a92bb0 <_DeleteFileA@4>
77a91d5e:	83 c4 0c             	add    $0xc,%esp
77a91d61:	85 c0                	test   %eax,%eax
77a91d63:	0f 84 f7 01 00 00    	je     77a91f60 <_VerInstallFileA@32+0x3a0>
		xret|=_error2vif(GetLastError())|VIF_CANNOTDELETE;
		DeleteFileA(tmpfn);
		LZClose(hfsrc);
		return xret;
	    }
	if ((!(flags & VIFF_DONTDELETEOLD))	&&
77a91d69:	d1 ef                	shr    %edi
77a91d6b:	8b 45 1c             	mov    0x1c(%ebp),%eax
77a91d6e:	83 f7 01             	xor    $0x1,%edi
77a91d71:	85 c0                	test   %eax,%eax
77a91d73:	0f 95 c0             	setne  %al
77a91d76:	25 ff 00 00 00       	and    $0xff,%eax
77a91d7b:	85 f8                	test   %edi,%eax
77a91d7d:	74 0c                	je     77a91d8b <_VerInstallFileA@32+0x1cb>
77a91d7f:	8b 55 1c             	mov    0x1c(%ebp),%edx
77a91d82:	80 3a 00             	cmpb   $0x0,(%edx)
77a91d85:	0f 85 05 02 00 00    	jne    77a91f90 <_VerInstallFileA@32+0x3d0>
	    curdir				&&
	    *curdir				&&
	    lstrcmpiA(curdir,pdest)
	) {
	    char curfn[260];

	    sprintf(curfn,"%s\\%s",curdir,destfilename);
	    if (INVALID_FILE_ATTRIBUTES != GetFileAttributesA(curfn)) {
		/* FIXME: check if in use ... if it is, VIF_CANNOTDELETECUR */
		if (!DeleteFileA(curfn))
	    	    xret|=_error2vif(GetLastError())|VIF_CANNOTDELETECUR;
	    }
	}
	if (!MoveFileA(tmpfn,destfn)) {
77a91d8b:	8d 95 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%edx
77a91d91:	8d 85 d8 fe ff ff    	lea    0xfffffed8(%ebp),%eax
77a91d97:	51                   	push   %ecx
77a91d98:	51                   	push   %ecx
77a91d99:	50                   	push   %eax
77a91d9a:	52                   	push   %edx
77a91d9b:	e8 20 0e 00 00       	call   77a92bc0 <_MoveFileA@8>
77a91da0:	5f                   	pop    %edi
77a91da1:	85 c0                	test   %eax,%eax
77a91da3:	5a                   	pop    %edx
77a91da4:	0f 84 28 01 00 00    	je     77a91ed2 <_VerInstallFileA@32+0x312>
	    xret|=_error2vif(GetLastError())|VIF_CANNOTRENAME;
	    DeleteFileA(tmpfn);
	}
    }
    LZClose(hfsrc);
77a91daa:	83 ec 0c             	sub    $0xc,%esp
77a91dad:	8b b5 f8 fa ff ff    	mov    0xfffffaf8(%ebp),%esi
77a91db3:	56                   	push   %esi
77a91db4:	e8 17 0e 00 00       	call   77a92bd0 <_LZClose@4>
    return xret;
77a91db9:	89 d8                	mov    %ebx,%eax
}
77a91dbb:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a91dbe:	5b                   	pop    %ebx
77a91dbf:	5e                   	pop    %esi
77a91dc0:	5f                   	pop    %edi
77a91dc1:	5d                   	pop    %ebp
77a91dc2:	c2 20 00             	ret    $0x20
77a91dc5:	89 b5 fc fa ff ff    	mov    %esi,0xfffffafc(%ebp)
77a91dcb:	e9 35 fe ff ff       	jmp    77a91c05 <_VerInstallFileA@32+0x45>
77a91dd0:	8d 95 14 fb ff ff    	lea    0xfffffb14(%ebp),%edx
77a91dd6:	8d 85 d8 fe ff ff    	lea    0xfffffed8(%ebp),%eax
77a91ddc:	e8 ff fc ff ff       	call   77a91ae0 <__fetch_versioninfo>
77a91de1:	89 c6                	mov    %eax,%esi
77a91de3:	85 c0                	test   %eax,%eax
77a91de5:	0f 84 4f ff ff ff    	je     77a91d3a <_VerInstallFileA@32+0x17a>
77a91deb:	8d 95 10 fb ff ff    	lea    0xfffffb10(%ebp),%edx
77a91df1:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91df7:	e8 e4 fc ff ff       	call   77a91ae0 <__fetch_versioninfo>
77a91dfc:	85 c0                	test   %eax,%eax
77a91dfe:	89 85 f0 fa ff ff    	mov    %eax,0xfffffaf0(%ebp)
77a91e04:	0f 84 77 02 00 00    	je     77a92081 <_VerInstallFileA@32+0x4c1>
77a91e0a:	8b 95 10 fb ff ff    	mov    0xfffffb10(%ebp),%edx
77a91e10:	8b 8d 14 fb ff ff    	mov    0xfffffb14(%ebp),%ecx
77a91e16:	c7 85 04 fb ff ff 28 	movl   $0x28,0xfffffb04(%ebp)
77a91e1d:	00 00 00 
77a91e20:	c7 85 0c fb ff ff 28 	movl   $0x28,0xfffffb0c(%ebp)
77a91e27:	00 00 00 
77a91e2a:	8b 42 08             	mov    0x8(%edx),%eax
77a91e2d:	39 41 08             	cmp    %eax,0x8(%ecx)
77a91e30:	77 0a                	ja     77a91e3c <_VerInstallFileA@32+0x27c>
77a91e32:	75 0d                	jne    77a91e41 <_VerInstallFileA@32+0x281>
77a91e34:	8b 42 0c             	mov    0xc(%edx),%eax
77a91e37:	39 41 0c             	cmp    %eax,0xc(%ecx)
77a91e3a:	76 05                	jbe    77a91e41 <_VerInstallFileA@32+0x281>
77a91e3c:	bb 06 00 00 00       	mov    $0x6,%ebx
77a91e41:	8b 42 24             	mov    0x24(%edx),%eax
77a91e44:	39 41 24             	cmp    %eax,0x24(%ecx)
77a91e47:	0f 84 d6 01 00 00    	je     77a92023 <_VerInstallFileA@32+0x463>
77a91e4d:	83 cb 22             	or     $0x22,%ebx
77a91e50:	8d 85 0c fb ff ff    	lea    0xfffffb0c(%ebp),%eax
77a91e56:	50                   	push   %eax
77a91e57:	8d 85 08 fb ff ff    	lea    0xfffffb08(%ebp),%eax
77a91e5d:	50                   	push   %eax
77a91e5e:	68 20 30 a9 77       	push   $0x77a93020
77a91e63:	56                   	push   %esi
77a91e64:	e8 07 f6 ff ff       	call   77a91470 <_VerQueryValueA@16>
77a91e69:	85 c0                	test   %eax,%eax
77a91e6b:	0f 85 ec 01 00 00    	jne    77a9205d <_VerInstallFileA@32+0x49d>
77a91e71:	50                   	push   %eax
77a91e72:	8b 85 f0 fa ff ff    	mov    0xfffffaf0(%ebp),%eax
77a91e78:	50                   	push   %eax
77a91e79:	6a 00                	push   $0x0
77a91e7b:	50                   	push   %eax
77a91e7c:	e8 cf 0b 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91e81:	89 04 24             	mov    %eax,(%esp)
77a91e84:	e8 e7 0b 00 00       	call   77a92a70 <_HeapFree@12>
77a91e89:	58                   	pop    %eax
77a91e8a:	51                   	push   %ecx
77a91e8b:	56                   	push   %esi
77a91e8c:	6a 00                	push   $0x0
77a91e8e:	52                   	push   %edx
77a91e8f:	e8 bc 0b 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a91e94:	89 04 24             	mov    %eax,(%esp)
77a91e97:	e8 d4 0b 00 00       	call   77a92a70 <_HeapFree@12>
77a91e9c:	85 db                	test   %ebx,%ebx
77a91e9e:	58                   	pop    %eax
77a91e9f:	0f 84 95 fe ff ff    	je     77a91d3a <_VerInstallFileA@32+0x17a>
77a91ea5:	83 ec 0c             	sub    $0xc,%esp
77a91ea8:	8b 85 f4 fa ff ff    	mov    0xfffffaf4(%ebp),%eax
77a91eae:	8d b5 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%esi
77a91eb4:	01 c6                	add    %eax,%esi
77a91eb6:	56                   	push   %esi
77a91eb7:	e8 c4 0d 00 00       	call   77a92c80 <_strlen>
77a91ebc:	8b 55 24             	mov    0x24(%ebp),%edx
77a91ebf:	83 c4 10             	add    $0x10,%esp
77a91ec2:	39 02                	cmp    %eax,(%edx)
77a91ec4:	0f 83 33 01 00 00    	jae    77a91ffd <_VerInstallFileA@32+0x43d>
77a91eca:	81 cb 00 00 04 00    	or     $0x40000,%ebx
77a91ed0:	eb 10                	jmp    77a91ee2 <_VerInstallFileA@32+0x322>
77a91ed2:	64 a1 60 00 00 00    	mov    %fs:0x60,%eax
77a91ed8:	e8 c3 fc ff ff       	call   77a91ba0 <__error2vif>
77a91edd:	09 c3                	or     %eax,%ebx
77a91edf:	80 cf 20             	or     $0x20,%bh
77a91ee2:	83 ec 0c             	sub    $0xc,%esp
77a91ee5:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91eeb:	50                   	push   %eax
77a91eec:	e8 bf 0c 00 00       	call   77a92bb0 <_DeleteFileA@4>
77a91ef1:	83 c4 0c             	add    $0xc,%esp
77a91ef4:	e9 b1 fe ff ff       	jmp    77a91daa <_VerInstallFileA@32+0x1ea>
77a91ef9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77a91f00:	8d 46 08             	lea    0x8(%esi),%eax
77a91f03:	83 f8 07             	cmp    $0x7,%eax
77a91f06:	0f 87 20 fe ff ff    	ja     77a91d2c <_VerInstallFileA@32+0x16c>
77a91f0c:	ff 24 85 3c 30 a9 77 	jmp    *0x77a9303c(,%eax,4)
77a91f13:	8b 85 fc fa ff ff    	mov    0xfffffafc(%ebp),%eax
77a91f19:	52                   	push   %edx
77a91f1a:	50                   	push   %eax
77a91f1b:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91f21:	68 16 30 a9 77       	push   $0x77a93016
77a91f26:	50                   	push   %eax
77a91f27:	e8 34 0d 00 00       	call   77a92c60 <_sprintf>
77a91f2c:	83 ec 0c             	sub    $0xc,%esp
77a91f2f:	8b 85 fc fa ff ff    	mov    0xfffffafc(%ebp),%eax
77a91f35:	50                   	push   %eax
77a91f36:	e8 45 0d 00 00       	call   77a92c80 <_strlen>
77a91f3b:	83 c4 14             	add    $0x14,%esp
77a91f3e:	40                   	inc    %eax
77a91f3f:	8d 95 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%edx
77a91f45:	89 85 f4 fa ff ff    	mov    %eax,0xfffffaf4(%ebp)
77a91f4b:	52                   	push   %edx
77a91f4c:	e8 1f 0c 00 00       	call   77a92b70 <_GetFileAttributesA@4>
77a91f51:	83 c4 0c             	add    $0xc,%esp
77a91f54:	40                   	inc    %eax
77a91f55:	0f 85 d1 fd ff ff    	jne    77a91d2c <_VerInstallFileA@32+0x16c>
77a91f5b:	e9 41 fd ff ff       	jmp    77a91ca1 <_VerInstallFileA@32+0xe1>
77a91f60:	64 a1 60 00 00 00    	mov    %fs:0x60,%eax
77a91f66:	e8 35 fc ff ff       	call   77a91ba0 <__error2vif>
77a91f6b:	83 ec 0c             	sub    $0xc,%esp
77a91f6e:	89 c3                	mov    %eax,%ebx
77a91f70:	8d 85 c8 fd ff ff    	lea    0xfffffdc8(%ebp),%eax
77a91f76:	50                   	push   %eax
77a91f77:	e8 34 0c 00 00       	call   77a92bb0 <_DeleteFileA@4>
77a91f7c:	8b 85 f8 fa ff ff    	mov    0xfffffaf8(%ebp),%eax
77a91f82:	80 cf 10             	or     $0x10,%bh
77a91f85:	50                   	push   %eax
77a91f86:	e8 45 0c 00 00       	call   77a92bd0 <_LZClose@4>
77a91f8b:	e9 29 fe ff ff       	jmp    77a91db9 <_VerInstallFileA@32+0x1f9>
77a91f90:	8b b5 fc fa ff ff    	mov    0xfffffafc(%ebp),%esi
77a91f96:	57                   	push   %edi
77a91f97:	57                   	push   %edi
77a91f98:	56                   	push   %esi
77a91f99:	52                   	push   %edx
77a91f9a:	e8 41 0c 00 00       	call   77a92be0 <_lstrcmpiA@8>
77a91f9f:	5a                   	pop    %edx
77a91fa0:	85 c0                	test   %eax,%eax
77a91fa2:	59                   	pop    %ecx
77a91fa3:	0f 84 e2 fd ff ff    	je     77a91d8b <_VerInstallFileA@32+0x1cb>
77a91fa9:	8b 75 1c             	mov    0x1c(%ebp),%esi
77a91fac:	8b 7d 10             	mov    0x10(%ebp),%edi
77a91faf:	57                   	push   %edi
77a91fb0:	56                   	push   %esi
77a91fb1:	8d b5 18 fb ff ff    	lea    0xfffffb18(%ebp),%esi
77a91fb7:	68 16 30 a9 77       	push   $0x77a93016
77a91fbc:	56                   	push   %esi
77a91fbd:	e8 9e 0c 00 00       	call   77a92c60 <_sprintf>
77a91fc2:	89 34 24             	mov    %esi,(%esp)
77a91fc5:	e8 a6 0b 00 00       	call   77a92b70 <_GetFileAttributesA@4>
77a91fca:	83 c4 0c             	add    $0xc,%esp
77a91fcd:	40                   	inc    %eax
77a91fce:	0f 84 b7 fd ff ff    	je     77a91d8b <_VerInstallFileA@32+0x1cb>
77a91fd4:	83 ec 0c             	sub    $0xc,%esp
77a91fd7:	56                   	push   %esi
77a91fd8:	e8 d3 0b 00 00       	call   77a92bb0 <_DeleteFileA@4>
77a91fdd:	83 c4 0c             	add    $0xc,%esp
77a91fe0:	85 c0                	test   %eax,%eax
77a91fe2:	0f 85 a3 fd ff ff    	jne    77a91d8b <_VerInstallFileA@32+0x1cb>
77a91fe8:	64 a1 60 00 00 00    	mov    %fs:0x60,%eax
77a91fee:	e8 ad fb ff ff       	call   77a91ba0 <__error2vif>
77a91ff3:	89 c3                	mov    %eax,%ebx
77a91ff5:	80 cf 40             	or     $0x40,%bh
77a91ff8:	e9 8e fd ff ff       	jmp    77a91d8b <_VerInstallFileA@32+0x1cb>
77a91ffd:	50                   	push   %eax
77a91ffe:	50                   	push   %eax
77a91fff:	8b 45 20             	mov    0x20(%ebp),%eax
77a92002:	56                   	push   %esi
77a92003:	50                   	push   %eax
77a92004:	e8 87 0c 00 00       	call   77a92c90 <_strcpy>
77a92009:	83 ec 0c             	sub    $0xc,%esp
77a9200c:	56                   	push   %esi
77a9200d:	e8 6e 0c 00 00       	call   77a92c80 <_strlen>
77a92012:	8b 55 24             	mov    0x24(%ebp),%edx
77a92015:	40                   	inc    %eax
77a92016:	83 cb 01             	or     $0x1,%ebx
77a92019:	83 c4 20             	add    $0x20,%esp
77a9201c:	89 02                	mov    %eax,(%edx)
77a9201e:	e9 87 fd ff ff       	jmp    77a91daa <_VerInstallFileA@32+0x1ea>
77a92023:	8b 42 28             	mov    0x28(%edx),%eax
77a92026:	39 41 28             	cmp    %eax,0x28(%ecx)
77a92029:	0f 85 1e fe ff ff    	jne    77a91e4d <_VerInstallFileA@32+0x28d>
77a9202f:	e9 1c fe ff ff       	jmp    77a91e50 <_VerInstallFileA@32+0x290>
77a92034:	be 00 00 01 00       	mov    $0x10000,%esi
77a92039:	83 ec 0c             	sub    $0xc,%esp
77a9203c:	8b 85 f8 fa ff ff    	mov    0xfffffaf8(%ebp),%eax
77a92042:	50                   	push   %eax
77a92043:	e8 88 0b 00 00       	call   77a92bd0 <_LZClose@4>
77a92048:	89 f0                	mov    %esi,%eax
77a9204a:	e9 6c fd ff ff       	jmp    77a91dbb <_VerInstallFileA@32+0x1fb>
77a9204f:	be 00 01 00 00       	mov    $0x100,%esi
77a92054:	eb e3                	jmp    77a92039 <_VerInstallFileA@32+0x479>
77a92056:	be 00 80 00 00       	mov    $0x8000,%esi
77a9205b:	eb dc                	jmp    77a92039 <_VerInstallFileA@32+0x479>
77a9205d:	8d 85 04 fb ff ff    	lea    0xfffffb04(%ebp),%eax
77a92063:	50                   	push   %eax
77a92064:	8d 85 00 fb ff ff    	lea    0xfffffb00(%ebp),%eax
77a9206a:	50                   	push   %eax
77a9206b:	8b 85 f0 fa ff ff    	mov    0xfffffaf0(%ebp),%eax
77a92071:	68 20 30 a9 77       	push   $0x77a93020
77a92076:	50                   	push   %eax
77a92077:	e8 f4 f3 ff ff       	call   77a91470 <_VerQueryValueA@16>
77a9207c:	e9 f0 fd ff ff       	jmp    77a91e71 <_VerInstallFileA@32+0x2b1>
77a92081:	bb 06 00 00 00       	mov    $0x6,%ebx
77a92086:	e9 ff fd ff ff       	jmp    77a91e8a <_VerInstallFileA@32+0x2ca>
77a9208b:	83 ec 0c             	sub    $0xc,%esp
77a9208e:	8b bd f8 fa ff ff    	mov    0xfffffaf8(%ebp),%edi
77a92094:	57                   	push   %edi
77a92095:	e8 36 0b 00 00       	call   77a92bd0 <_LZClose@4>
77a9209a:	b8 00 08 00 00       	mov    $0x800,%eax
77a9209f:	e9 17 fd ff ff       	jmp    77a91dbb <_VerInstallFileA@32+0x1fb>
77a920a4:	83 ec 0c             	sub    $0xc,%esp
77a920a7:	8b 95 f8 fa ff ff    	mov    0xfffffaf8(%ebp),%edx
77a920ad:	52                   	push   %edx
77a920ae:	e8 1d 0b 00 00       	call   77a92bd0 <_LZClose@4>
77a920b3:	b8 40 00 00 00       	mov    $0x40,%eax
77a920b8:	e9 fe fc ff ff       	jmp    77a91dbb <_VerInstallFileA@32+0x1fb>
77a920bd:	8d 76 00             	lea    0x0(%esi),%esi

77a920c0 <_VerInstallFileW@32>:


/******************************************************************************
 * VerInstallFileW				[VERSION.@]
 */
DWORD WINAPI VerInstallFileW(
	DWORD flags,LPWSTR srcfilename,LPWSTR destfilename,LPWSTR srcdir,
	LPWSTR destdir,LPWSTR curdir,LPWSTR tmpfile,UINT *tmpfilelen )
{
77a920c0:	55                   	push   %ebp
77a920c1:	89 e5                	mov    %esp,%ebp
77a920c3:	57                   	push   %edi
77a920c4:	56                   	push   %esi
77a920c5:	53                   	push   %ebx
77a920c6:	83 ec 1c             	sub    $0x1c,%esp
    LPSTR wsrcf = NULL, wsrcd = NULL, wdestf = NULL, wdestd = NULL, wtmpf = NULL, wcurd = NULL;
77a920c9:	c7 45 ec 00 00 00 00 	movl   $0x0,0xffffffec(%ebp)
77a920d0:	8b 5d 0c             	mov    0xc(%ebp),%ebx
77a920d3:	8b 7d 10             	mov    0x10(%ebp),%edi
77a920d6:	8b 75 14             	mov    0x14(%ebp),%esi
77a920d9:	c7 45 e8 00 00 00 00 	movl   $0x0,0xffffffe8(%ebp)
77a920e0:	c7 45 e4 00 00 00 00 	movl   $0x0,0xffffffe4(%ebp)
77a920e7:	c7 45 e0 00 00 00 00 	movl   $0x0,0xffffffe0(%ebp)
77a920ee:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
    DWORD ret;
    UINT len;

    if (srcfilename)
77a920f5:	85 db                	test   %ebx,%ebx
77a920f7:	74 46                	je     77a9213f <_VerInstallFileW@32+0x7f>
    {
        len = WideCharToMultiByte( CP_ACP, 0, srcfilename, -1, NULL, 0, NULL, NULL );
77a920f9:	6a 00                	push   $0x0
77a920fb:	6a 00                	push   $0x0
77a920fd:	6a 00                	push   $0x0
77a920ff:	6a 00                	push   $0x0
77a92101:	6a ff                	push   $0xffffffff
77a92103:	53                   	push   %ebx
77a92104:	6a 00                	push   $0x0
77a92106:	6a 00                	push   $0x0
77a92108:	e8 f3 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
        if ((wsrcf = HeapAlloc( GetProcessHeap(), 0, len )))
77a9210d:	52                   	push   %edx
77a9210e:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a92111:	50                   	push   %eax
77a92112:	6a 00                	push   $0x0
77a92114:	51                   	push   %ecx
77a92115:	e8 36 09 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9211a:	89 04 24             	mov    %eax,(%esp)
77a9211d:	e8 3e 09 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92122:	5a                   	pop    %edx
77a92123:	85 c0                	test   %eax,%eax
77a92125:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
77a92128:	74 15                	je     77a9213f <_VerInstallFileW@32+0x7f>
            WideCharToMultiByte( CP_ACP, 0, srcfilename, -1, wsrcf, len, NULL, NULL );
77a9212a:	8b 4d f0             	mov    0xfffffff0(%ebp),%ecx
77a9212d:	6a 00                	push   $0x0
77a9212f:	6a 00                	push   $0x0
77a92131:	51                   	push   %ecx
77a92132:	50                   	push   %eax
77a92133:	6a ff                	push   $0xffffffff
77a92135:	53                   	push   %ebx
77a92136:	6a 00                	push   $0x0
77a92138:	6a 00                	push   $0x0
77a9213a:	e8 c1 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    }
    if (srcdir)
77a9213f:	85 f6                	test   %esi,%esi
77a92141:	74 46                	je     77a92189 <_VerInstallFileW@32+0xc9>
    {
        len = WideCharToMultiByte( CP_ACP, 0, srcdir, -1, NULL, 0, NULL, NULL );
77a92143:	6a 00                	push   $0x0
77a92145:	6a 00                	push   $0x0
77a92147:	6a 00                	push   $0x0
77a92149:	6a 00                	push   $0x0
77a9214b:	6a ff                	push   $0xffffffff
77a9214d:	56                   	push   %esi
77a9214e:	6a 00                	push   $0x0
77a92150:	6a 00                	push   $0x0
77a92152:	e8 a9 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
        if ((wsrcd = HeapAlloc( GetProcessHeap(), 0, len )))
77a92157:	52                   	push   %edx
77a92158:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a9215b:	50                   	push   %eax
77a9215c:	6a 00                	push   $0x0
77a9215e:	53                   	push   %ebx
77a9215f:	e8 ec 08 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92164:	89 04 24             	mov    %eax,(%esp)
77a92167:	e8 f4 08 00 00       	call   77a92a60 <_HeapAlloc@12>
77a9216c:	59                   	pop    %ecx
77a9216d:	85 c0                	test   %eax,%eax
77a9216f:	89 45 e8             	mov    %eax,0xffffffe8(%ebp)
77a92172:	74 15                	je     77a92189 <_VerInstallFileW@32+0xc9>
            WideCharToMultiByte( CP_ACP, 0, srcdir, -1, wsrcd, len, NULL, NULL );
77a92174:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a92177:	6a 00                	push   $0x0
77a92179:	6a 00                	push   $0x0
77a9217b:	52                   	push   %edx
77a9217c:	50                   	push   %eax
77a9217d:	6a ff                	push   $0xffffffff
77a9217f:	56                   	push   %esi
77a92180:	6a 00                	push   $0x0
77a92182:	6a 00                	push   $0x0
77a92184:	e8 77 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    }
    if (destfilename)
77a92189:	85 ff                	test   %edi,%edi
77a9218b:	74 46                	je     77a921d3 <_VerInstallFileW@32+0x113>
    {
        len = WideCharToMultiByte( CP_ACP, 0, destfilename, -1, NULL, 0, NULL, NULL );
77a9218d:	6a 00                	push   $0x0
77a9218f:	6a 00                	push   $0x0
77a92191:	6a 00                	push   $0x0
77a92193:	6a 00                	push   $0x0
77a92195:	6a ff                	push   $0xffffffff
77a92197:	57                   	push   %edi
77a92198:	6a 00                	push   $0x0
77a9219a:	6a 00                	push   $0x0
77a9219c:	e8 5f 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
        if ((wdestf = HeapAlloc( GetProcessHeap(), 0, len )))
77a921a1:	56                   	push   %esi
77a921a2:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a921a5:	50                   	push   %eax
77a921a6:	6a 00                	push   $0x0
77a921a8:	53                   	push   %ebx
77a921a9:	e8 a2 08 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a921ae:	89 04 24             	mov    %eax,(%esp)
77a921b1:	e8 aa 08 00 00       	call   77a92a60 <_HeapAlloc@12>
77a921b6:	59                   	pop    %ecx
77a921b7:	85 c0                	test   %eax,%eax
77a921b9:	89 45 e4             	mov    %eax,0xffffffe4(%ebp)
77a921bc:	74 15                	je     77a921d3 <_VerInstallFileW@32+0x113>
            WideCharToMultiByte( CP_ACP, 0, destfilename, -1, wdestf, len, NULL, NULL );
77a921be:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a921c1:	6a 00                	push   $0x0
77a921c3:	6a 00                	push   $0x0
77a921c5:	52                   	push   %edx
77a921c6:	50                   	push   %eax
77a921c7:	6a ff                	push   $0xffffffff
77a921c9:	57                   	push   %edi
77a921ca:	6a 00                	push   $0x0
77a921cc:	6a 00                	push   $0x0
77a921ce:	e8 2d 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    }
    if (destdir)
77a921d3:	8b 45 18             	mov    0x18(%ebp),%eax
77a921d6:	85 c0                	test   %eax,%eax
77a921d8:	74 4c                	je     77a92226 <_VerInstallFileW@32+0x166>
    {
        len = WideCharToMultiByte( CP_ACP, 0, destdir, -1, NULL, 0, NULL, NULL );
77a921da:	8b 7d 18             	mov    0x18(%ebp),%edi
77a921dd:	6a 00                	push   $0x0
77a921df:	6a 00                	push   $0x0
77a921e1:	6a 00                	push   $0x0
77a921e3:	6a 00                	push   $0x0
77a921e5:	6a ff                	push   $0xffffffff
77a921e7:	57                   	push   %edi
77a921e8:	6a 00                	push   $0x0
77a921ea:	6a 00                	push   $0x0
77a921ec:	e8 0f 09 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
        if ((wdestd = HeapAlloc( GetProcessHeap(), 0, len )))
77a921f1:	56                   	push   %esi
77a921f2:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a921f5:	50                   	push   %eax
77a921f6:	6a 00                	push   $0x0
77a921f8:	53                   	push   %ebx
77a921f9:	e8 52 08 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a921fe:	89 04 24             	mov    %eax,(%esp)
77a92201:	e8 5a 08 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92206:	59                   	pop    %ecx
77a92207:	85 c0                	test   %eax,%eax
77a92209:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
77a9220c:	74 18                	je     77a92226 <_VerInstallFileW@32+0x166>
            WideCharToMultiByte( CP_ACP, 0, destdir, -1, wdestd, len, NULL, NULL );
77a9220e:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a92211:	6a 00                	push   $0x0
77a92213:	6a 00                	push   $0x0
77a92215:	52                   	push   %edx
77a92216:	50                   	push   %eax
77a92217:	8b 45 18             	mov    0x18(%ebp),%eax
77a9221a:	6a ff                	push   $0xffffffff
77a9221c:	50                   	push   %eax
77a9221d:	6a 00                	push   $0x0
77a9221f:	6a 00                	push   $0x0
77a92221:	e8 da 08 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    }
    if (curdir)
77a92226:	8b 7d 1c             	mov    0x1c(%ebp),%edi
77a92229:	85 ff                	test   %edi,%edi
77a9222b:	74 4c                	je     77a92279 <_VerInstallFileW@32+0x1b9>
    {
        len = WideCharToMultiByte( CP_ACP, 0, curdir, -1, NULL, 0, NULL, NULL );
77a9222d:	8b 75 1c             	mov    0x1c(%ebp),%esi
77a92230:	6a 00                	push   $0x0
77a92232:	6a 00                	push   $0x0
77a92234:	6a 00                	push   $0x0
77a92236:	6a 00                	push   $0x0
77a92238:	6a ff                	push   $0xffffffff
77a9223a:	56                   	push   %esi
77a9223b:	6a 00                	push   $0x0
77a9223d:	6a 00                	push   $0x0
77a9223f:	e8 bc 08 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
        if ((wcurd = HeapAlloc( GetProcessHeap(), 0, len )))
77a92244:	53                   	push   %ebx
77a92245:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a92248:	50                   	push   %eax
77a92249:	6a 00                	push   $0x0
77a9224b:	51                   	push   %ecx
77a9224c:	e8 ff 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92251:	89 04 24             	mov    %eax,(%esp)
77a92254:	e8 07 08 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92259:	5a                   	pop    %edx
77a9225a:	85 c0                	test   %eax,%eax
77a9225c:	89 45 dc             	mov    %eax,0xffffffdc(%ebp)
77a9225f:	74 18                	je     77a92279 <_VerInstallFileW@32+0x1b9>
            WideCharToMultiByte( CP_ACP, 0, curdir, -1, wcurd, len, NULL, NULL );
77a92261:	8b 7d f0             	mov    0xfffffff0(%ebp),%edi
77a92264:	8b 75 1c             	mov    0x1c(%ebp),%esi
77a92267:	6a 00                	push   $0x0
77a92269:	6a 00                	push   $0x0
77a9226b:	57                   	push   %edi
77a9226c:	50                   	push   %eax
77a9226d:	6a ff                	push   $0xffffffff
77a9226f:	56                   	push   %esi
77a92270:	6a 00                	push   $0x0
77a92272:	6a 00                	push   $0x0
77a92274:	e8 87 08 00 00       	call   77a92b00 <_WideCharToMultiByte@32>
    }
    len = *tmpfilelen * sizeof(WCHAR);
77a92279:	8b 55 24             	mov    0x24(%ebp),%edx
77a9227c:	8b 02                	mov    (%edx),%eax
    wtmpf = HeapAlloc( GetProcessHeap(), 0, len );
77a9227e:	53                   	push   %ebx
77a9227f:	01 c0                	add    %eax,%eax
77a92281:	50                   	push   %eax
77a92282:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a92285:	6a 00                	push   $0x0
77a92287:	51                   	push   %ecx
77a92288:	e8 c3 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9228d:	89 04 24             	mov    %eax,(%esp)
77a92290:	e8 cb 07 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92295:	89 c6                	mov    %eax,%esi
    ret = VerInstallFileA(flags,wsrcf,wdestf,wsrcd,wdestd,wcurd,wtmpf,&len);
77a92297:	8d 45 f0             	lea    0xfffffff0(%ebp),%eax
77a9229a:	89 04 24             	mov    %eax,(%esp)
77a9229d:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
77a922a0:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
77a922a3:	56                   	push   %esi
77a922a4:	52                   	push   %edx
77a922a5:	50                   	push   %eax
77a922a6:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
77a922a9:	50                   	push   %eax
77a922aa:	8b 45 e4             	mov    0xffffffe4(%ebp),%eax
77a922ad:	50                   	push   %eax
77a922ae:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
77a922b1:	50                   	push   %eax
77a922b2:	8b 45 08             	mov    0x8(%ebp),%eax
77a922b5:	50                   	push   %eax
77a922b6:	e8 05 f9 ff ff       	call   77a91bc0 <_VerInstallFileA@32>
77a922bb:	89 c3                	mov    %eax,%ebx
    if (!ret)
77a922bd:	85 c0                	test   %eax,%eax
77a922bf:	0f 84 91 00 00 00    	je     77a92356 <_VerInstallFileW@32+0x296>
        *tmpfilelen = MultiByteToWideChar( CP_ACP, 0, wtmpf, -1, tmpfile, *tmpfilelen );
    else if (ret & VIF_BUFFTOOSMALL)
77a922c5:	a9 00 00 04 00       	test   $0x40000,%eax
77a922ca:	74 08                	je     77a922d4 <_VerInstallFileW@32+0x214>
        *tmpfilelen = len;  /* FIXME: not correct */
77a922cc:	8b 55 24             	mov    0x24(%ebp),%edx
77a922cf:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77a922d2:	89 02                	mov    %eax,(%edx)

    HeapFree( GetProcessHeap(), 0, wsrcf );
77a922d4:	50                   	push   %eax
77a922d5:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
77a922d8:	50                   	push   %eax
77a922d9:	6a 00                	push   $0x0
77a922db:	50                   	push   %eax
77a922dc:	e8 6f 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a922e1:	89 04 24             	mov    %eax,(%esp)
77a922e4:	e8 87 07 00 00       	call   77a92a70 <_HeapFree@12>
    HeapFree( GetProcessHeap(), 0, wsrcd );
77a922e9:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
77a922ec:	50                   	push   %eax
77a922ed:	6a 00                	push   $0x0
77a922ef:	57                   	push   %edi
77a922f0:	e8 5b 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a922f5:	89 04 24             	mov    %eax,(%esp)
77a922f8:	e8 73 07 00 00       	call   77a92a70 <_HeapFree@12>
    HeapFree( GetProcessHeap(), 0, wdestf );
77a922fd:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
77a92300:	51                   	push   %ecx
77a92301:	6a 00                	push   $0x0
77a92303:	52                   	push   %edx
77a92304:	e8 47 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92309:	89 04 24             	mov    %eax,(%esp)
77a9230c:	e8 5f 07 00 00       	call   77a92a70 <_HeapFree@12>
    HeapFree( GetProcessHeap(), 0, wdestd );
77a92311:	8b 45 e0             	mov    0xffffffe0(%ebp),%eax
77a92314:	50                   	push   %eax
77a92315:	6a 00                	push   $0x0
77a92317:	50                   	push   %eax
77a92318:	e8 33 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9231d:	89 04 24             	mov    %eax,(%esp)
77a92320:	e8 4b 07 00 00       	call   77a92a70 <_HeapFree@12>
    HeapFree( GetProcessHeap(), 0, wtmpf );
77a92325:	56                   	push   %esi
77a92326:	6a 00                	push   $0x0
77a92328:	50                   	push   %eax
77a92329:	e8 22 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9232e:	89 04 24             	mov    %eax,(%esp)
77a92331:	e8 3a 07 00 00       	call   77a92a70 <_HeapFree@12>
    HeapFree( GetProcessHeap(), 0, wcurd );
77a92336:	8b 45 dc             	mov    0xffffffdc(%ebp),%eax
77a92339:	50                   	push   %eax
77a9233a:	6a 00                	push   $0x0
77a9233c:	50                   	push   %eax
77a9233d:	e8 0e 07 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92342:	89 04 24             	mov    %eax,(%esp)
77a92345:	e8 26 07 00 00       	call   77a92a70 <_HeapFree@12>
    return ret;
}
77a9234a:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a9234d:	89 d8                	mov    %ebx,%eax
77a9234f:	5b                   	pop    %ebx
77a92350:	5e                   	pop    %esi
77a92351:	5f                   	pop    %edi
77a92352:	5d                   	pop    %ebp
77a92353:	c2 20 00             	ret    $0x20
77a92356:	50                   	push   %eax
77a92357:	50                   	push   %eax
77a92358:	8b 45 24             	mov    0x24(%ebp),%eax
77a9235b:	8b 4d 20             	mov    0x20(%ebp),%ecx
77a9235e:	8b 38                	mov    (%eax),%edi
77a92360:	57                   	push   %edi
77a92361:	51                   	push   %ecx
77a92362:	6a ff                	push   $0xffffffff
77a92364:	56                   	push   %esi
77a92365:	6a 00                	push   $0x0
77a92367:	6a 00                	push   $0x0
77a92369:	e8 d2 06 00 00       	call   77a92a40 <_MultiByteToWideChar@24>
77a9236e:	8b 55 24             	mov    0x24(%ebp),%edx
77a92371:	89 02                	mov    %eax,(%edx)
77a92373:	58                   	pop    %eax
77a92374:	5a                   	pop    %edx
77a92375:	e9 5a ff ff ff       	jmp    77a922d4 <_VerInstallFileW@32+0x214>
77a9237a:	90                   	nop    
77a9237b:	90                   	nop    
77a9237c:	90                   	nop    
77a9237d:	90                   	nop    
77a9237e:	90                   	nop    
77a9237f:	90                   	nop    

77a92380 <_find_entry_by_id>:
77a92380:	55                   	push   %ebp
77a92381:	89 e5                	mov    %esp,%ebp
77a92383:	57                   	push   %edi
77a92384:	56                   	push   %esi
77a92385:	53                   	push   %ebx
77a92386:	89 d7                	mov    %edx,%edi
77a92388:	66 8b 50 0c          	mov    0xc(%eax),%dx
77a9238c:	8d 70 10             	lea    0x10(%eax),%esi
77a9238f:	89 d3                	mov    %edx,%ebx
77a92391:	66 8b 40 0e          	mov    0xe(%eax),%ax
77a92395:	81 e3 ff ff 00 00    	and    $0xffff,%ebx
77a9239b:	25 ff ff 00 00       	and    $0xffff,%eax
77a923a0:	8d 4c 18 ff          	lea    0xffffffff(%eax,%ebx,1),%ecx
77a923a4:	39 cb                	cmp    %ecx,%ebx
77a923a6:	7f 1c                	jg     77a923c4 <_find_entry_by_id+0x44>
77a923a8:	8d 14 0b             	lea    (%ebx,%ecx,1),%edx
77a923ab:	89 d0                	mov    %edx,%eax
77a923ad:	c1 e8 1f             	shr    $0x1f,%eax
77a923b0:	8d 04 02             	lea    (%edx,%eax,1),%eax
77a923b3:	d1 f8                	sar    %eax
77a923b5:	66 39 3c c6          	cmp    %di,(%esi,%eax,8)
77a923b9:	74 10                	je     77a923cb <_find_entry_by_id+0x4b>
77a923bb:	76 e7                	jbe    77a923a4 <_find_entry_by_id+0x24>
77a923bd:	8d 48 ff             	lea    0xffffffff(%eax),%ecx
77a923c0:	39 cb                	cmp    %ecx,%ebx
77a923c2:	7e e4                	jle    77a923a8 <_find_entry_by_id+0x28>
77a923c4:	31 c0                	xor    %eax,%eax
77a923c6:	5b                   	pop    %ebx
77a923c7:	5e                   	pop    %esi
77a923c8:	5f                   	pop    %edi
77a923c9:	5d                   	pop    %ebp
77a923ca:	c3                   	ret    
77a923cb:	8b 44 c6 04          	mov    0x4(%esi,%eax,8),%eax
77a923cf:	8b 55 08             	mov    0x8(%ebp),%edx
77a923d2:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
77a923d7:	5b                   	pop    %ebx
77a923d8:	01 d0                	add    %edx,%eax
77a923da:	5e                   	pop    %esi
77a923db:	5f                   	pop    %edi
77a923dc:	5d                   	pop    %ebp
77a923dd:	c3                   	ret    
77a923de:	89 f6                	mov    %esi,%esi

77a923e0 <_find_entry_by_name>:
77a923e0:	55                   	push   %ebp
77a923e1:	89 e5                	mov    %esp,%ebp
77a923e3:	57                   	push   %edi
77a923e4:	56                   	push   %esi
77a923e5:	53                   	push   %ebx
77a923e6:	83 ec 1c             	sub    $0x1c,%esp
77a923e9:	89 c6                	mov    %eax,%esi
77a923eb:	8b 45 08             	mov    0x8(%ebp),%eax
77a923ee:	89 d3                	mov    %edx,%ebx
77a923f0:	89 45 f0             	mov    %eax,0xfffffff0(%ebp)
77a923f3:	89 d0                	mov    %edx,%eax
77a923f5:	c1 e8 10             	shr    $0x10,%eax
77a923f8:	c7 45 ec 00 00 00 00 	movl   $0x0,0xffffffec(%ebp)
77a923ff:	66 85 c0             	test   %ax,%ax
77a92402:	0f 84 19 01 00 00    	je     77a92521 <_find_entry_by_name+0x141>
77a92408:	80 3a 23             	cmpb   $0x23,(%edx)
77a9240b:	0f 84 e5 00 00 00    	je     77a924f6 <_find_entry_by_name+0x116>
77a92411:	50                   	push   %eax
77a92412:	50                   	push   %eax
77a92413:	6a 00                	push   $0x0
77a92415:	6a 00                	push   $0x0
77a92417:	6a ff                	push   $0xffffffff
77a92419:	52                   	push   %edx
77a9241a:	6a 00                	push   $0x0
77a9241c:	6a 00                	push   $0x0
77a9241e:	e8 1d 06 00 00       	call   77a92a40 <_MultiByteToWideChar@24>
77a92423:	89 45 e4             	mov    %eax,0xffffffe4(%ebp)
77a92426:	01 c0                	add    %eax,%eax
77a92428:	89 04 24             	mov    %eax,(%esp)
77a9242b:	6a 00                	push   $0x0
77a9242d:	57                   	push   %edi
77a9242e:	e8 1d 06 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92433:	89 04 24             	mov    %eax,(%esp)
77a92436:	e8 25 06 00 00       	call   77a92a60 <_HeapAlloc@12>
77a9243b:	85 c0                	test   %eax,%eax
77a9243d:	89 45 e8             	mov    %eax,0xffffffe8(%ebp)
77a92440:	59                   	pop    %ecx
77a92441:	0f 84 a4 00 00 00    	je     77a924eb <_find_entry_by_name+0x10b>
77a92447:	52                   	push   %edx
77a92448:	52                   	push   %edx
77a92449:	8b 7d e4             	mov    0xffffffe4(%ebp),%edi
77a9244c:	57                   	push   %edi
77a9244d:	50                   	push   %eax
77a9244e:	6a ff                	push   $0xffffffff
77a92450:	53                   	push   %ebx
77a92451:	6a 00                	push   $0x0
77a92453:	6a 00                	push   $0x0
77a92455:	e8 e6 05 00 00       	call   77a92a40 <_MultiByteToWideChar@24>
77a9245a:	8d 46 10             	lea    0x10(%esi),%eax
77a9245d:	89 45 e0             	mov    %eax,0xffffffe0(%ebp)
77a92460:	66 8b 46 0c          	mov    0xc(%esi),%ax
77a92464:	25 ff ff 00 00       	and    $0xffff,%eax
77a92469:	8b 4d e4             	mov    0xffffffe4(%ebp),%ecx
77a9246c:	49                   	dec    %ecx
77a9246d:	c7 45 dc 00 00 00 00 	movl   $0x0,0xffffffdc(%ebp)
77a92474:	89 4d e4             	mov    %ecx,0xffffffe4(%ebp)
77a92477:	8d 78 ff             	lea    0xffffffff(%eax),%edi
77a9247a:	39 7d ec             	cmp    %edi,0xffffffec(%ebp)
77a9247d:	58                   	pop    %eax
77a9247e:	5a                   	pop    %edx
77a9247f:	7f 54                	jg     77a924d5 <_find_entry_by_name+0xf5>
77a92481:	8b 55 dc             	mov    0xffffffdc(%ebp),%edx
77a92484:	01 fa                	add    %edi,%edx
77a92486:	89 d0                	mov    %edx,%eax
77a92488:	c1 e8 1f             	shr    $0x1f,%eax
77a9248b:	8d 34 02             	lea    (%edx,%eax,1),%esi
77a9248e:	8b 55 e0             	mov    0xffffffe0(%ebp),%edx
77a92491:	d1 fe                	sar    %esi
77a92493:	8b 04 f2             	mov    (%edx,%esi,8),%eax
77a92496:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a92499:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
77a9249e:	8d 1c 10             	lea    (%eax,%edx,1),%ebx
77a924a1:	50                   	push   %eax
77a924a2:	66 8b 03             	mov    (%ebx),%ax
77a924a5:	25 ff ff 00 00       	and    $0xffff,%eax
77a924aa:	50                   	push   %eax
77a924ab:	8d 43 02             	lea    0x2(%ebx),%eax
77a924ae:	50                   	push   %eax
77a924af:	8b 45 e8             	mov    0xffffffe8(%ebp),%eax
77a924b2:	50                   	push   %eax
77a924b3:	e8 58 07 00 00       	call   77a92c10 <__wcsnicmp>
77a924b8:	83 c4 10             	add    $0x10,%esp
77a924bb:	85 c0                	test   %eax,%eax
77a924bd:	75 76                	jne    77a92535 <_find_entry_by_name+0x155>
77a924bf:	66 8b 03             	mov    (%ebx),%ax
77a924c2:	25 ff ff 00 00       	and    $0xffff,%eax
77a924c7:	3b 45 e4             	cmp    0xffffffe4(%ebp),%eax
77a924ca:	74 73                	je     77a9253f <_find_entry_by_name+0x15f>
77a924cc:	46                   	inc    %esi
77a924cd:	89 75 dc             	mov    %esi,0xffffffdc(%ebp)
77a924d0:	39 7d dc             	cmp    %edi,0xffffffdc(%ebp)
77a924d3:	7e ac                	jle    77a92481 <_find_entry_by_name+0xa1>
77a924d5:	57                   	push   %edi
77a924d6:	8b 75 e8             	mov    0xffffffe8(%ebp),%esi
77a924d9:	56                   	push   %esi
77a924da:	6a 00                	push   $0x0
77a924dc:	53                   	push   %ebx
77a924dd:	e8 6e 05 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a924e2:	89 04 24             	mov    %eax,(%esp)
77a924e5:	e8 86 05 00 00       	call   77a92a70 <_HeapFree@12>
77a924ea:	59                   	pop    %ecx
77a924eb:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
77a924ee:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a924f1:	5b                   	pop    %ebx
77a924f2:	5e                   	pop    %esi
77a924f3:	5f                   	pop    %edi
77a924f4:	5d                   	pop    %ebp
77a924f5:	c3                   	ret    
77a924f6:	83 ec 0c             	sub    $0xc,%esp
77a924f9:	8d 42 01             	lea    0x1(%edx),%eax
77a924fc:	50                   	push   %eax
77a924fd:	e8 ae 07 00 00       	call   77a92cb0 <_atoi>
77a92502:	89 c2                	mov    %eax,%edx
77a92504:	8b 45 f0             	mov    0xfffffff0(%ebp),%eax
77a92507:	89 45 08             	mov    %eax,0x8(%ebp)
77a9250a:	83 c4 10             	add    $0x10,%esp
77a9250d:	89 f0                	mov    %esi,%eax
77a9250f:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a92512:	81 e2 ff ff 00 00    	and    $0xffff,%edx
77a92518:	5b                   	pop    %ebx
77a92519:	5e                   	pop    %esi
77a9251a:	5f                   	pop    %edi
77a9251b:	5d                   	pop    %ebp
77a9251c:	e9 5f fe ff ff       	jmp    77a92380 <_find_entry_by_id>
77a92521:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a92524:	89 f0                	mov    %esi,%eax
77a92526:	81 e2 ff ff 00 00    	and    $0xffff,%edx
77a9252c:	5b                   	pop    %ebx
77a9252d:	5e                   	pop    %esi
77a9252e:	5f                   	pop    %edi
77a9252f:	5d                   	pop    %ebp
77a92530:	e9 4b fe ff ff       	jmp    77a92380 <_find_entry_by_id>
77a92535:	7d 95                	jge    77a924cc <_find_entry_by_name+0xec>
77a92537:	8d 7e ff             	lea    0xffffffff(%esi),%edi
77a9253a:	39 7d dc             	cmp    %edi,0xffffffdc(%ebp)
77a9253d:	eb 94                	jmp    77a924d3 <_find_entry_by_name+0xf3>
77a9253f:	8b 55 e0             	mov    0xffffffe0(%ebp),%edx
77a92542:	8b 44 f2 04          	mov    0x4(%edx,%esi,8),%eax
77a92546:	8b 55 f0             	mov    0xfffffff0(%ebp),%edx
77a92549:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
77a9254e:	01 d0                	add    %edx,%eax
77a92550:	89 45 ec             	mov    %eax,0xffffffec(%ebp)
77a92553:	eb 80                	jmp    77a924d5 <_find_entry_by_name+0xf5>
77a92555:	8d 74 26 00          	lea    0x0(%esi),%esi
77a92559:	8d bc 27 00 00 00 00 	lea    0x0(%edi),%edi

77a92560 <_read_xx_header>:
77a92560:	55                   	push   %ebp
77a92561:	89 e5                	mov    %esp,%ebp
77a92563:	53                   	push   %ebx
77a92564:	83 ec 58             	sub    $0x58,%esp
77a92567:	89 c3                	mov    %eax,%ebx
77a92569:	6a 00                	push   $0x0
77a9256b:	6a 00                	push   $0x0
77a9256d:	50                   	push   %eax
77a9256e:	e8 7d 06 00 00       	call   77a92bf0 <_LZSeek@12>
77a92573:	8d 45 b8             	lea    0xffffffb8(%ebp),%eax
77a92576:	6a 40                	push   $0x40
77a92578:	50                   	push   %eax
77a92579:	53                   	push   %ebx
77a9257a:	e8 81 06 00 00       	call   77a92c00 <_LZRead@12>
77a9257f:	5a                   	pop    %edx
77a92580:	31 d2                	xor    %edx,%edx
77a92582:	83 f8 40             	cmp    $0x40,%eax
77a92585:	74 09                	je     77a92590 <_read_xx_header+0x30>
77a92587:	89 d0                	mov    %edx,%eax
77a92589:	8b 5d fc             	mov    0xfffffffc(%ebp),%ebx
77a9258c:	c9                   	leave  
77a9258d:	c3                   	ret    
77a9258e:	89 f6                	mov    %esi,%esi
77a92590:	66 81 7d b8 4d 5a    	cmpw   $0x5a4d,0xffffffb8(%ebp)
77a92596:	75 ef                	jne    77a92587 <_read_xx_header+0x27>
77a92598:	8b 4d f4             	mov    0xfffffff4(%ebp),%ecx
77a9259b:	50                   	push   %eax
77a9259c:	6a 00                	push   $0x0
77a9259e:	51                   	push   %ecx
77a9259f:	53                   	push   %ebx
77a925a0:	e8 4b 06 00 00       	call   77a92bf0 <_LZSeek@12>
77a925a5:	8d 45 a8             	lea    0xffffffa8(%ebp),%eax
77a925a8:	6a 02                	push   $0x2
77a925aa:	50                   	push   %eax
77a925ab:	53                   	push   %ebx
77a925ac:	e8 4f 06 00 00       	call   77a92c00 <_LZRead@12>
77a925b1:	5a                   	pop    %edx
77a925b2:	31 d2                	xor    %edx,%edx
77a925b4:	83 f8 02             	cmp    $0x2,%eax
77a925b7:	75 ce                	jne    77a92587 <_read_xx_header+0x27>
77a925b9:	50                   	push   %eax
77a925ba:	8b 45 f4             	mov    0xfffffff4(%ebp),%eax
77a925bd:	6a 00                	push   $0x0
77a925bf:	50                   	push   %eax
77a925c0:	53                   	push   %ebx
77a925c1:	e8 2a 06 00 00       	call   77a92bf0 <_LZSeek@12>
77a925c6:	8a 45 a8             	mov    0xffffffa8(%ebp),%al
77a925c9:	59                   	pop    %ecx
77a925ca:	ba 4e 45 00 00       	mov    $0x454e,%edx
77a925cf:	3c 4e                	cmp    $0x4e,%al
77a925d1:	74 11                	je     77a925e4 <_read_xx_header+0x84>
77a925d3:	3c 50                	cmp    $0x50,%al
77a925d5:	74 08                	je     77a925df <_read_xx_header+0x7f>
77a925d7:	31 d2                	xor    %edx,%edx
77a925d9:	c6 45 aa 00          	movb   $0x0,0xffffffaa(%ebp)
77a925dd:	eb a8                	jmp    77a92587 <_read_xx_header+0x27>
77a925df:	ba 50 45 00 00       	mov    $0x4550,%edx
77a925e4:	80 7d a9 45          	cmpb   $0x45,0xffffffa9(%ebp)
77a925e8:	75 ed                	jne    77a925d7 <_read_xx_header+0x77>
77a925ea:	eb 9b                	jmp    77a92587 <_read_xx_header+0x27>
77a925ec:	8d 74 26 00          	lea    0x0(%esi),%esi

77a925f0 <_find_pe_resource>:
77a925f0:	55                   	push   %ebp
77a925f1:	89 e5                	mov    %esp,%ebp
77a925f3:	57                   	push   %edi
77a925f4:	56                   	push   %esi
77a925f5:	53                   	push   %ebx
77a925f6:	81 ec 30 01 00 00    	sub    $0x130,%esp
77a925fc:	89 c3                	mov    %eax,%ebx
77a925fe:	89 95 e4 fe ff ff    	mov    %edx,0xfffffee4(%ebp)
77a92604:	c7 85 d4 fe ff ff 00 	movl   $0x0,0xfffffed4(%ebp)
77a9260b:	00 00 00 
77a9260e:	6a 01                	push   $0x1
77a92610:	6a 00                	push   $0x0
77a92612:	50                   	push   %eax
77a92613:	e8 d8 05 00 00       	call   77a92bf0 <_LZSeek@12>
77a92618:	89 c6                	mov    %eax,%esi
77a9261a:	8d 85 e8 fe ff ff    	lea    0xfffffee8(%ebp),%eax
77a92620:	68 f8 00 00 00       	push   $0xf8
77a92625:	50                   	push   %eax
77a92626:	53                   	push   %ebx
77a92627:	e8 d4 05 00 00       	call   77a92c00 <_LZRead@12>
77a9262c:	5a                   	pop    %edx
77a9262d:	31 d2                	xor    %edx,%edx
77a9262f:	3d f8 00 00 00       	cmp    $0xf8,%eax
77a92634:	74 0a                	je     77a92640 <_find_pe_resource+0x50>
77a92636:	8d 65 f4             	lea    0xfffffff4(%ebp),%esp
77a92639:	89 d0                	mov    %edx,%eax
77a9263b:	5b                   	pop    %ebx
77a9263c:	5e                   	pop    %esi
77a9263d:	5f                   	pop    %edi
77a9263e:	5d                   	pop    %ebp
77a9263f:	c3                   	ret    
77a92640:	8b 85 74 ff ff ff    	mov    0xffffff74(%ebp),%eax
77a92646:	85 c0                	test   %eax,%eax
77a92648:	74 ec                	je     77a92636 <_find_pe_resource+0x46>
77a9264a:	66 8b 85 ee fe ff ff 	mov    0xfffffeee(%ebp),%ax
77a92651:	25 ff ff 00 00       	and    $0xffff,%eax
77a92656:	57                   	push   %edi
77a92657:	89 85 d8 fe ff ff    	mov    %eax,0xfffffed8(%ebp)
77a9265d:	8d 04 80             	lea    (%eax,%eax,4),%eax
77a92660:	8d 3c c5 00 00 00 00 	lea    0x0(,%eax,8),%edi
77a92667:	57                   	push   %edi
77a92668:	6a 00                	push   $0x0
77a9266a:	51                   	push   %ecx
77a9266b:	e8 e0 03 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92670:	89 04 24             	mov    %eax,(%esp)
77a92673:	e8 e8 03 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92678:	5a                   	pop    %edx
77a92679:	31 d2                	xor    %edx,%edx
77a9267b:	89 85 e0 fe ff ff    	mov    %eax,0xfffffee0(%ebp)
77a92681:	85 c0                	test   %eax,%eax
77a92683:	74 b1                	je     77a92636 <_find_pe_resource+0x46>
77a92685:	50                   	push   %eax
77a92686:	8b 85 fc fe ff ff    	mov    0xfffffefc(%ebp),%eax
77a9268c:	6a 00                	push   $0x0
77a9268e:	25 ff ff 00 00       	and    $0xffff,%eax
77a92693:	8d 44 30 18          	lea    0x18(%eax,%esi,1),%eax
77a92697:	50                   	push   %eax
77a92698:	53                   	push   %ebx
77a92699:	e8 52 05 00 00       	call   77a92bf0 <_LZSeek@12>
77a9269e:	8b 8d e0 fe ff ff    	mov    0xfffffee0(%ebp),%ecx
77a926a4:	57                   	push   %edi
77a926a5:	51                   	push   %ecx
77a926a6:	53                   	push   %ebx
77a926a7:	e8 54 05 00 00       	call   77a92c00 <_LZRead@12>
77a926ac:	5a                   	pop    %edx
77a926ad:	39 c7                	cmp    %eax,%edi
77a926af:	74 1f                	je     77a926d0 <_find_pe_resource+0xe0>
77a926b1:	50                   	push   %eax
77a926b2:	8b 85 e0 fe ff ff    	mov    0xfffffee0(%ebp),%eax
77a926b8:	50                   	push   %eax
77a926b9:	6a 00                	push   $0x0
77a926bb:	50                   	push   %eax
77a926bc:	e8 8f 03 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a926c1:	89 04 24             	mov    %eax,(%esp)
77a926c4:	e8 a7 03 00 00       	call   77a92a70 <_HeapFree@12>
77a926c9:	31 d2                	xor    %edx,%edx
77a926cb:	e9 66 ff ff ff       	jmp    77a92636 <_find_pe_resource+0x46>
77a926d0:	8b 85 d8 fe ff ff    	mov    0xfffffed8(%ebp),%eax
77a926d6:	31 c9                	xor    %ecx,%ecx
77a926d8:	39 85 d4 fe ff ff    	cmp    %eax,0xfffffed4(%ebp)
77a926de:	7d 2a                	jge    77a9270a <_find_pe_resource+0x11a>
77a926e0:	8b b5 70 ff ff ff    	mov    0xffffff70(%ebp),%esi
77a926e6:	31 d2                	xor    %edx,%edx
77a926e8:	8b bd e0 fe ff ff    	mov    0xfffffee0(%ebp),%edi
77a926ee:	8b 44 3a 0c          	mov    0xc(%edx,%edi,1),%eax
77a926f2:	39 c6                	cmp    %eax,%esi
77a926f4:	72 08                	jb     77a926fe <_find_pe_resource+0x10e>
77a926f6:	03 44 3a 10          	add    0x10(%edx,%edi,1),%eax
77a926fa:	39 c6                	cmp    %eax,%esi
77a926fc:	72 0c                	jb     77a9270a <_find_pe_resource+0x11a>
77a926fe:	41                   	inc    %ecx
77a926ff:	83 c2 28             	add    $0x28,%edx
77a92702:	3b 8d d8 fe ff ff    	cmp    0xfffffed8(%ebp),%ecx
77a92708:	7c de                	jl     77a926e8 <_find_pe_resource+0xf8>
77a9270a:	3b 8d d8 fe ff ff    	cmp    0xfffffed8(%ebp),%ecx
77a92710:	74 9f                	je     77a926b1 <_find_pe_resource+0xc1>
77a92712:	8d 04 89             	lea    (%ecx,%ecx,4),%eax
77a92715:	8d 3c c5 00 00 00 00 	lea    0x0(,%eax,8),%edi
77a9271c:	8b 85 e0 fe ff ff    	mov    0xfffffee0(%ebp),%eax
77a92722:	8b 74 07 10          	mov    0x10(%edi,%eax,1),%esi
77a92726:	50                   	push   %eax
77a92727:	56                   	push   %esi
77a92728:	6a 00                	push   $0x0
77a9272a:	51                   	push   %ecx
77a9272b:	e8 20 03 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92730:	89 04 24             	mov    %eax,(%esp)
77a92733:	e8 28 03 00 00       	call   77a92a60 <_HeapAlloc@12>
77a92738:	5a                   	pop    %edx
77a92739:	85 c0                	test   %eax,%eax
77a9273b:	89 85 dc fe ff ff    	mov    %eax,0xfffffedc(%ebp)
77a92741:	0f 84 6a ff ff ff    	je     77a926b1 <_find_pe_resource+0xc1>
77a92747:	8b 95 e0 fe ff ff    	mov    0xfffffee0(%ebp),%edx
77a9274d:	50                   	push   %eax
77a9274e:	6a 00                	push   $0x0
77a92750:	8b 44 17 14          	mov    0x14(%edi,%edx,1),%eax
77a92754:	50                   	push   %eax
77a92755:	53                   	push   %ebx
77a92756:	e8 95 04 00 00       	call   77a92bf0 <_LZSeek@12>
77a9275b:	8b 85 dc fe ff ff    	mov    0xfffffedc(%ebp),%eax
77a92761:	56                   	push   %esi
77a92762:	50                   	push   %eax
77a92763:	53                   	push   %ebx
77a92764:	e8 97 04 00 00       	call   77a92c00 <_LZRead@12>
77a92769:	59                   	pop    %ecx
77a9276a:	39 f0                	cmp    %esi,%eax
77a9276c:	74 3a                	je     77a927a8 <_find_pe_resource+0x1b8>
77a9276e:	8b bd dc fe ff ff    	mov    0xfffffedc(%ebp),%edi
77a92774:	50                   	push   %eax
77a92775:	57                   	push   %edi
77a92776:	6a 00                	push   $0x0
77a92778:	56                   	push   %esi
77a92779:	e8 d2 02 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a9277e:	89 04 24             	mov    %eax,(%esp)
77a92781:	e8 ea 02 00 00       	call   77a92a70 <_HeapFree@12>
77a92786:	8b 9d e0 fe ff ff    	mov    0xfffffee0(%ebp),%ebx
77a9278c:	53                   	push   %ebx
77a9278d:	6a 00                	push   $0x0
77a9278f:	51                   	push   %ecx
77a92790:	e8 bb 02 00 00       	call   77a92a50 <_GetProcessHeap@0>
77a92795:	89 04 24             	mov    %eax,(%esp)
77a92798:	e8 d3 02 00 00       	call   77a92a70 <_HeapFree@12>
77a9279d:	8b 95 d4 fe ff ff    	mov    0xfffffed4(%ebp),%edx
77a927a3:	e9 8e fe ff ff       	jmp    77a92636 <_find_pe_resource+0x46>
77a927a8:	8b 8d e0 fe ff ff    	mov    0xfffffee0(%ebp),%ecx
77a927ae:	8b 85 70 ff ff ff    	mov    0xffffff70(%ebp),%eax
77a927b4:	83 ec 0c             	sub    $0xc,%esp
77a927b7:	8b 54 0f 0c          	mov    0xc(%edi,%ecx,1),%edx
77a927bb:	8b bd dc fe ff ff    	mov    0xfffffedc(%ebp),%edi
77a927c1:	29 d0                	sub    %edx,%eax
77a927c3:	8b 95 e4 fe ff ff    	mov    0xfffffee4(%ebp),%edx
77a927c9:	8d 1c 38             	lea    (%eax,%edi,1),%ebx
77a927cc:	89 d8                	mov    %ebx,%eax
77a927ce:	53                   	push   %ebx
77a927cf:	e8 0c fc ff ff       	call   77a923e0 <_find_entry_by_name>
77a927d4:	83 c4 10             	add    $0x10,%esp
77a927d7:	85 c0                	test   %eax,%eax
77a927d9:	74 93                	je     77a9276e <_find_pe_resource+0x17e>
77a927db:	83 ec 0c             	sub    $0xc,%esp
77a927de:	8b 55 08             	mov    0x8(%ebp),%edx
77a927e1:	53                   	push   %ebx
77a927e2:	e8 f9 fb ff ff       	call   77a923e0 <_find_entry_by_name>
77a927e7:	83 c4 10             	add    $0x10,%esp
77a927ea:	85 c0                	test   %eax,%eax
77a927ec:	74 80                	je     77a9276e <_find_pe_resource+0x17e>
77a927ee:	8b 40 14             	mov    0x14(%eax),%eax
77a927f1:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
77a927f6:	89 c6                	mov    %eax,%esi
77a927f8:	01 de                	add    %ebx,%esi
77a927fa:	0f 84 6e ff ff ff    	je     77a9276e <_find_pe_resource+0x17e>
77a92800:	31 c9                	xor    %ecx,%ecx
77a92802:	3b 8d d8 fe ff ff    	cmp    0xfffffed8(%ebp),%ecx
77a92808:	7d 26                	jge    77a92830 <_find_pe_resource+0x240>
77a9280a:	8b 1e                	mov    (%esi),%ebx
77a9280c:	31 d2                	xor    %edx,%edx
77a9280e:	8b bd e0 fe ff ff    	mov    0xfffffee0(%ebp),%edi
77a92814:	8b 44 3a 0c          	mov    0xc(%edx,%edi,1),%eax
77a92818:	39 c3                	cmp    %eax,%ebx
77a9281a:	72 08                	jb     77a92824 <_find_pe_resource+0x234>
77a9281c:	03 44 3a 10          	add    0x10(%edx,%edi,1),%eax
77a92820:	39 c3                	cmp    %eax,%ebx
77a92822:	72 0c                	jb     77a92830 <_find_pe_resource+0x240>
77a92824:	41                   	inc    %ecx
77a92825:	83 c2 28             	add    $0x28,%edx
77a92828:	3b 8d d8 fe ff ff    	cmp    0xfffffed8(%ebp),%ecx
77a9282e:	7c de                	jl     77a9280e <_find_pe_resource+0x21e>
77a92830:	3b 8d d8 fe ff ff    	cmp    0xfffffed8(%ebp),%ecx
77a92836:	0f 84 32 ff ff ff    	je     77a9276e <_find_pe_resource+0x17e>
77a9283c:	8b 45 0c             	mov    0xc(%ebp),%eax
77a9283f:	85 c0                	test   %eax,%eax
77a92841:	74 08                	je     77a9284b <_find_pe_resource+0x25b>
77a92843:	8b 55 0c             	mov    0xc(%ebp),%edx
77a92846:	8b 46 04             	mov    0x4(%esi),%eax
77a92849:	89 02                	mov    %eax,(%edx)
77a9284b:	8b 7d 10             	mov    0x10(%ebp),%edi
77a9284e:	85 ff                	test   %edi,%edi
77a92850:	74 1c                	je     77a9286e <_find_pe_resource+0x27e>
77a92852:	8d 14 89             	lea    (%ecx,%ecx,4),%edx
77a92855:	8b 8d e0 fe ff ff    	mov    0xfffffee0(%ebp),%ecx
77a9285b:	8b 06                	mov    (%esi),%eax
77a9285d:	8b 7d 10             	mov    0x10(%ebp),%edi
77a92860:	8b 74 d1 0c          	mov    0xc(%ecx,%edx,8),%esi
77a92864:	8b 5c d1 14          	mov    0x14(%ecx,%edx,8),%ebx
77a92868:	29 f0                	sub    %esi,%eax
77a9286a:	01 d8                	add    %ebx,%eax
77a9286c:	89 07                	mov    %eax,(%edi)
77a9286e:	c7 85 d4 fe ff ff 01 	movl   $0x1,0xfffffed4(%ebp)
77a92875:	00 00 00 
77a92878:	e9 f1 fe ff ff       	jmp    77a9276e <_find_pe_resource+0x17e>
77a9287d:	8d 76 00             	lea    0x0(%esi),%esi

77a92880 <_GetFileResourceSize16@16>:
77a92880:	55                   	push   %ebp
77a92881:	89 e5                	mov    %esp,%ebp
77a92883:	56                   	push   %esi
77a92884:	53                   	push   %ebx
77a92885:	31 f6                	xor    %esi,%esi
77a92887:	81 ec a4 00 00 00    	sub    $0xa4,%esp
77a9288d:	8d 85 68 ff ff ff    	lea    0xffffff68(%ebp),%eax
77a92893:	6a 00                	push   $0x0
77a92895:	50                   	push   %eax
77a92896:	8b 45 08             	mov    0x8(%ebp),%eax
77a92899:	50                   	push   %eax
77a9289a:	e8 c1 02 00 00       	call   77a92b60 <_LZOpenFileA@12>
77a9289f:	89 c3                	mov    %eax,%ebx
77a928a1:	58                   	pop    %eax
77a928a2:	31 c0                	xor    %eax,%eax
77a928a4:	85 db                	test   %ebx,%ebx
77a928a6:	78 2d                	js     77a928d5 <_GetFileResourceSize16@16+0x55>
77a928a8:	89 d8                	mov    %ebx,%eax
77a928aa:	e8 b1 fc ff ff       	call   77a92560 <_read_xx_header>
77a928af:	3d 4e 45 00 00       	cmp    $0x454e,%eax
77a928b4:	74 49                	je     77a928ff <_GetFileResourceSize16@16+0x7f>
77a928b6:	3d 50 45 00 00       	cmp    $0x4550,%eax
77a928bb:	74 21                	je     77a928de <_GetFileResourceSize16@16+0x5e>
77a928bd:	83 ec 0c             	sub    $0xc,%esp
77a928c0:	53                   	push   %ebx
77a928c1:	e8 0a 03 00 00       	call   77a92bd0 <_LZClose@4>
77a928c6:	31 c0                	xor    %eax,%eax
77a928c8:	83 c4 0c             	add    $0xc,%esp
77a928cb:	85 f6                	test   %esi,%esi
77a928cd:	74 06                	je     77a928d5 <_GetFileResourceSize16@16+0x55>
77a928cf:	8b 85 64 ff ff ff    	mov    0xffffff64(%ebp),%eax
77a928d5:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a928d8:	5b                   	pop    %ebx
77a928d9:	5e                   	pop    %esi
77a928da:	5d                   	pop    %ebp
77a928db:	c2 10 00             	ret    $0x10
77a928de:	8b 75 14             	mov    0x14(%ebp),%esi
77a928e1:	50                   	push   %eax
77a928e2:	8d 85 64 ff ff ff    	lea    0xffffff64(%ebp),%eax
77a928e8:	56                   	push   %esi
77a928e9:	8b 4d 10             	mov    0x10(%ebp),%ecx
77a928ec:	50                   	push   %eax
77a928ed:	8b 55 0c             	mov    0xc(%ebp),%edx
77a928f0:	89 d8                	mov    %ebx,%eax
77a928f2:	51                   	push   %ecx
77a928f3:	e8 f8 fc ff ff       	call   77a925f0 <_find_pe_resource>
77a928f8:	83 c4 10             	add    $0x10,%esp
77a928fb:	89 c6                	mov    %eax,%esi
77a928fd:	eb be                	jmp    77a928bd <_GetFileResourceSize16@16+0x3d>
77a928ff:	68 60 30 a9 77       	push   $0x77a93060
77a92904:	68 a7 01 00 00       	push   $0x1a7
77a92909:	68 76 30 a9 77       	push   $0x77a93076
77a9290e:	68 81 30 a9 77       	push   $0x77a93081
77a92913:	e8 88 03 00 00       	call   77a92ca0 <_DbgPrint>
77a92918:	c7 04 24 90 30 a9 77 	movl   $0x77a93090,(%esp)
77a9291f:	e8 7c 03 00 00       	call   77a92ca0 <_DbgPrint>
77a92924:	83 c4 10             	add    $0x10,%esp
77a92927:	eb 94                	jmp    77a928bd <_GetFileResourceSize16@16+0x3d>
77a92929:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi

77a92930 <_GetFileResource16@24>:
77a92930:	55                   	push   %ebp
77a92931:	89 e5                	mov    %esp,%ebp
77a92933:	56                   	push   %esi
77a92934:	53                   	push   %ebx
77a92935:	81 ec a4 00 00 00    	sub    $0xa4,%esp
77a9293b:	8d 85 68 ff ff ff    	lea    0xffffff68(%ebp),%eax
77a92941:	8b 75 18             	mov    0x18(%ebp),%esi
77a92944:	89 b5 64 ff ff ff    	mov    %esi,0xffffff64(%ebp)
77a9294a:	6a 00                	push   $0x0
77a9294c:	50                   	push   %eax
77a9294d:	8b 45 08             	mov    0x8(%ebp),%eax
77a92950:	50                   	push   %eax
77a92951:	e8 0a 02 00 00       	call   77a92b60 <_LZOpenFileA@12>
77a92956:	89 c3                	mov    %eax,%ebx
77a92958:	58                   	pop    %eax
77a92959:	31 c0                	xor    %eax,%eax
77a9295b:	85 db                	test   %ebx,%ebx
77a9295d:	78 41                	js     77a929a0 <_GetFileResource16@24+0x70>
77a9295f:	8b 45 14             	mov    0x14(%ebp),%eax
77a92962:	85 c0                	test   %eax,%eax
77a92964:	74 4a                	je     77a929b0 <_GetFileResource16@24+0x80>
77a92966:	52                   	push   %edx
77a92967:	6a 00                	push   $0x0
77a92969:	8b 45 14             	mov    0x14(%ebp),%eax
77a9296c:	50                   	push   %eax
77a9296d:	53                   	push   %ebx
77a9296e:	e8 7d 02 00 00       	call   77a92bf0 <_LZSeek@12>
77a92973:	8b 95 64 ff ff ff    	mov    0xffffff64(%ebp),%edx
77a92979:	89 f0                	mov    %esi,%eax
77a9297b:	39 d6                	cmp    %edx,%esi
77a9297d:	76 02                	jbe    77a92981 <_GetFileResource16@24+0x51>
77a9297f:	89 d0                	mov    %edx,%eax
77a92981:	50                   	push   %eax
77a92982:	8b 45 1c             	mov    0x1c(%ebp),%eax
77a92985:	50                   	push   %eax
77a92986:	53                   	push   %ebx
77a92987:	e8 74 02 00 00       	call   77a92c00 <_LZRead@12>
77a9298c:	89 85 64 ff ff ff    	mov    %eax,0xffffff64(%ebp)
77a92992:	50                   	push   %eax
77a92993:	50                   	push   %eax
77a92994:	53                   	push   %ebx
77a92995:	e8 36 02 00 00       	call   77a92bd0 <_LZClose@4>
77a9299a:	8b 85 64 ff ff ff    	mov    0xffffff64(%ebp),%eax
77a929a0:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a929a3:	5b                   	pop    %ebx
77a929a4:	5e                   	pop    %esi
77a929a5:	5d                   	pop    %ebp
77a929a6:	c2 18 00             	ret    $0x18
77a929a9:	8d b4 26 00 00 00 00 	lea    0x0(%esi),%esi
77a929b0:	89 d8                	mov    %ebx,%eax
77a929b2:	e8 a9 fb ff ff       	call   77a92560 <_read_xx_header>
77a929b7:	3d 4e 45 00 00       	cmp    $0x454e,%eax
77a929bc:	74 1b                	je     77a929d9 <_GetFileResource16@24+0xa9>
77a929be:	3d 50 45 00 00       	cmp    $0x4550,%eax
77a929c3:	74 3e                	je     77a92a03 <_GetFileResource16@24+0xd3>
77a929c5:	83 ec 0c             	sub    $0xc,%esp
77a929c8:	53                   	push   %ebx
77a929c9:	e8 02 02 00 00       	call   77a92bd0 <_LZClose@4>
77a929ce:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
77a929d1:	31 c0                	xor    %eax,%eax
77a929d3:	5b                   	pop    %ebx
77a929d4:	5e                   	pop    %esi
77a929d5:	5d                   	pop    %ebp
77a929d6:	c2 18 00             	ret    $0x18
77a929d9:	68 c5 30 a9 77       	push   $0x77a930c5
77a929de:	68 d2 01 00 00       	push   $0x1d2
77a929e3:	68 76 30 a9 77       	push   $0x77a93076
77a929e8:	68 81 30 a9 77       	push   $0x77a93081
77a929ed:	e8 ae 02 00 00       	call   77a92ca0 <_DbgPrint>
77a929f2:	c7 04 24 90 30 a9 77 	movl   $0x77a93090,(%esp)
77a929f9:	e8 a2 02 00 00       	call   77a92ca0 <_DbgPrint>
77a929fe:	83 c4 10             	add    $0x10,%esp
77a92a01:	eb c2                	jmp    77a929c5 <_GetFileResource16@24+0x95>
77a92a03:	50                   	push   %eax
77a92a04:	8d 45 14             	lea    0x14(%ebp),%eax
77a92a07:	50                   	push   %eax
77a92a08:	8d 85 64 ff ff ff    	lea    0xffffff64(%ebp),%eax
77a92a0e:	50                   	push   %eax
77a92a0f:	89 d8                	mov    %ebx,%eax
77a92a11:	8b 4d 10             	mov    0x10(%ebp),%ecx
77a92a14:	51                   	push   %ecx
77a92a15:	8b 55 0c             	mov    0xc(%ebp),%edx
77a92a18:	e8 d3 fb ff ff       	call   77a925f0 <_find_pe_resource>
77a92a1d:	83 c4 10             	add    $0x10,%esp
77a92a20:	85 c0                	test   %eax,%eax
77a92a22:	0f 85 3e ff ff ff    	jne    77a92966 <_GetFileResource16@24+0x36>
77a92a28:	eb 9b                	jmp    77a929c5 <_GetFileResource16@24+0x95>
77a92a2a:	90                   	nop    
77a92a2b:	90                   	nop    
77a92a2c:	90                   	nop    
77a92a2d:	90                   	nop    
77a92a2e:	90                   	nop    
77a92a2f:	90                   	nop    

77a92a30 <_SetLastError@4>:
77a92a30:	ff 25 50 61 a9 77    	jmp    *0x77a96150
77a92a36:	90                   	nop    
77a92a37:	90                   	nop    
	...

77a92a40 <_MultiByteToWideChar@24>:
77a92a40:	ff 25 48 61 a9 77    	jmp    *0x77a96148
77a92a46:	90                   	nop    
77a92a47:	90                   	nop    
	...

77a92a50 <_GetProcessHeap@0>:
77a92a50:	ff 25 0c 61 a9 77    	jmp    *0x77a9610c
77a92a56:	90                   	nop    
77a92a57:	90                   	nop    
	...

77a92a60 <_HeapAlloc@12>:
77a92a60:	ff 25 1c 61 a9 77    	jmp    *0x77a9611c
77a92a66:	90                   	nop    
77a92a67:	90                   	nop    
	...

77a92a70 <_HeapFree@12>:
77a92a70:	ff 25 20 61 a9 77    	jmp    *0x77a96120
77a92a76:	90                   	nop    
77a92a77:	90                   	nop    
	...

77a92a80 <_GetModuleHandleW@4>:
77a92a80:	ff 25 08 61 a9 77    	jmp    *0x77a96108
77a92a86:	90                   	nop    
77a92a87:	90                   	nop    
	...

77a92a90 <_LoadLibraryExW@12>:
77a92a90:	ff 25 38 61 a9 77    	jmp    *0x77a96138
77a92a96:	90                   	nop    
77a92a97:	90                   	nop    
	...

77a92aa0 <_FindResourceW@12>:
77a92aa0:	ff 25 f8 60 a9 77    	jmp    *0x77a960f8
77a92aa6:	90                   	nop    
77a92aa7:	90                   	nop    
	...

77a92ab0 <_SizeofResource@8>:
77a92ab0:	ff 25 54 61 a9 77    	jmp    *0x77a96154
77a92ab6:	90                   	nop    
77a92ab7:	90                   	nop    
	...

77a92ac0 <_LoadResource@8>:
77a92ac0:	ff 25 3c 61 a9 77    	jmp    *0x77a9613c
77a92ac6:	90                   	nop    
77a92ac7:	90                   	nop    
	...

77a92ad0 <_LockResource@4>:
77a92ad0:	ff 25 40 61 a9 77    	jmp    *0x77a96140
77a92ad6:	90                   	nop    
77a92ad7:	90                   	nop    
	...

77a92ae0 <_FreeResource@4>:
77a92ae0:	ff 25 00 61 a9 77    	jmp    *0x77a96100
77a92ae6:	90                   	nop    
77a92ae7:	90                   	nop    
	...

77a92af0 <_FreeLibrary@4>:
77a92af0:	ff 25 fc 60 a9 77    	jmp    *0x77a960fc
77a92af6:	90                   	nop    
77a92af7:	90                   	nop    
	...

77a92b00 <_WideCharToMultiByte@32>:
77a92b00:	ff 25 58 61 a9 77    	jmp    *0x77a96158
77a92b06:	90                   	nop    
77a92b07:	90                   	nop    
	...

77a92b10 <_OpenFile@12>:
77a92b10:	ff 25 4c 61 a9 77    	jmp    *0x77a9614c
77a92b16:	90                   	nop    
77a92b17:	90                   	nop    
	...

77a92b20 <_GetSystemDirectoryA@8>:
77a92b20:	ff 25 10 61 a9 77    	jmp    *0x77a96110
77a92b26:	90                   	nop    
77a92b27:	90                   	nop    
	...

77a92b30 <_lstrcpynA@12>:
77a92b30:	ff 25 64 61 a9 77    	jmp    *0x77a96164
77a92b36:	90                   	nop    
77a92b37:	90                   	nop    
	...

77a92b40 <_GetSystemDirectoryW@8>:
77a92b40:	ff 25 14 61 a9 77    	jmp    *0x77a96114
77a92b46:	90                   	nop    
77a92b47:	90                   	nop    
	...

77a92b50 <_lstrcpynW@12>:
77a92b50:	ff 25 68 61 a9 77    	jmp    *0x77a96168
77a92b56:	90                   	nop    
77a92b57:	90                   	nop    
	...

77a92b60 <_LZOpenFileA@12>:
77a92b60:	ff 25 2c 61 a9 77    	jmp    *0x77a9612c
77a92b66:	90                   	nop    
77a92b67:	90                   	nop    
	...

77a92b70 <_GetFileAttributesA@4>:
77a92b70:	ff 25 04 61 a9 77    	jmp    *0x77a96104
77a92b76:	90                   	nop    
77a92b77:	90                   	nop    
	...

77a92b80 <_GetTempFileNameA@16>:
77a92b80:	ff 25 18 61 a9 77    	jmp    *0x77a96118
77a92b86:	90                   	nop    
77a92b87:	90                   	nop    
	...

77a92b90 <_LZCopy@8>:
77a92b90:	ff 25 28 61 a9 77    	jmp    *0x77a96128
77a92b96:	90                   	nop    
77a92b97:	90                   	nop    
	...

77a92ba0 <__lclose@4>:
77a92ba0:	ff 25 5c 61 a9 77    	jmp    *0x77a9615c
77a92ba6:	90                   	nop    
77a92ba7:	90                   	nop    
	...

77a92bb0 <_DeleteFileA@4>:
77a92bb0:	ff 25 f4 60 a9 77    	jmp    *0x77a960f4
77a92bb6:	90                   	nop    
77a92bb7:	90                   	nop    
	...

77a92bc0 <_MoveFileA@8>:
77a92bc0:	ff 25 44 61 a9 77    	jmp    *0x77a96144
77a92bc6:	90                   	nop    
77a92bc7:	90                   	nop    
	...

77a92bd0 <_LZClose@4>:
77a92bd0:	ff 25 24 61 a9 77    	jmp    *0x77a96124
77a92bd6:	90                   	nop    
77a92bd7:	90                   	nop    
	...

77a92be0 <_lstrcmpiA@8>:
77a92be0:	ff 25 60 61 a9 77    	jmp    *0x77a96160
77a92be6:	90                   	nop    
77a92be7:	90                   	nop    
	...

77a92bf0 <_LZSeek@12>:
77a92bf0:	ff 25 34 61 a9 77    	jmp    *0x77a96134
77a92bf6:	90                   	nop    
77a92bf7:	90                   	nop    
	...

77a92c00 <_LZRead@12>:
77a92c00:	ff 25 30 61 a9 77    	jmp    *0x77a96130
77a92c06:	90                   	nop    
77a92c07:	90                   	nop    
	...

77a92c10 <__wcsnicmp>:
77a92c10:	ff 25 78 61 a9 77    	jmp    *0x77a96178
77a92c16:	90                   	nop    
77a92c17:	90                   	nop    
	...

77a92c20 <_memmove>:
77a92c20:	ff 25 84 61 a9 77    	jmp    *0x77a96184
77a92c26:	90                   	nop    
77a92c27:	90                   	nop    
	...

77a92c30 <_memcpy>:
77a92c30:	ff 25 80 61 a9 77    	jmp    *0x77a96180
77a92c36:	90                   	nop    
77a92c37:	90                   	nop    
	...

77a92c40 <_wcslen>:
77a92c40:	ff 25 9c 61 a9 77    	jmp    *0x77a9619c
77a92c46:	90                   	nop    
77a92c47:	90                   	nop    
	...

77a92c50 <_strrchr>:
77a92c50:	ff 25 98 61 a9 77    	jmp    *0x77a96198
77a92c56:	90                   	nop    
77a92c57:	90                   	nop    
	...

77a92c60 <_sprintf>:
77a92c60:	ff 25 88 61 a9 77    	jmp    *0x77a96188
77a92c66:	90                   	nop    
77a92c67:	90                   	nop    
	...

77a92c70 <_strcat>:
77a92c70:	ff 25 8c 61 a9 77    	jmp    *0x77a9618c
77a92c76:	90                   	nop    
77a92c77:	90                   	nop    
	...

77a92c80 <_strlen>:
77a92c80:	ff 25 94 61 a9 77    	jmp    *0x77a96194
77a92c86:	90                   	nop    
77a92c87:	90                   	nop    
	...

77a92c90 <_strcpy>:
77a92c90:	ff 25 90 61 a9 77    	jmp    *0x77a96190
77a92c96:	90                   	nop    
77a92c97:	90                   	nop    
	...

77a92ca0 <_DbgPrint>:
77a92ca0:	ff 25 74 61 a9 77    	jmp    *0x77a96174
77a92ca6:	90                   	nop    
77a92ca7:	90                   	nop    
	...

77a92cb0 <_atoi>:
77a92cb0:	ff 25 7c 61 a9 77    	jmp    *0x77a9617c
77a92cb6:	90                   	nop    
77a92cb7:	90                   	nop    
	...

77a92cc0 <__CTOR_LIST__>:
77a92cc0:	ff                   	(bad)  
77a92cc1:	ff                   	(bad)  
77a92cc2:	ff                   	(bad)  
77a92cc3:	ff 00                	incl   (%eax)
77a92cc5:	00 00                	add    %al,(%eax)
	...

77a92cc8 <__DTOR_LIST__>:
77a92cc8:	ff                   	(bad)  
77a92cc9:	ff                   	(bad)  
77a92cca:	ff                   	(bad)  
77a92ccb:	ff 00                	incl   (%eax)
77a92ccd:	00 00                	add    %al,(%eax)
	...
