ExpCreateOutputNT

INT64 __fastcall ExpCreateOutputNT(INT64 a1, UINT64 *a2, const WCHAR **a3, const WCHAR *a4){
  int v4; 
  __int64 v8; 
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  INT64 v12; 
  unsigned int v13; 
  WCHAR *v14; 
  v4 = *(unsigned __int16 *)a3 + 2;
  if( a4 )
  {
    v8 = -1i64;
    do
      ++v8;
    while( a4[v8] );
    v4 += 2 * v8;
  }
  v9 = v4 + 2;
  v10 = v4 + 14;
  v11 = v9 >> 1;
  if( a1 && *(_DWORD *)a2 >= v10 )
  {
    *(_DWORD *)a1 = 1;
    v12 = a1 + 12;
    *(_DWORD *)(a1 + 4) = v10;
    *(_DWORD *)(a1 + 8) = 3;
    v13 = v11;
    wcscpy_s((PWCHAR)(a1 + 12), v11, (PWCHAR)a3[1]);
    v14 = (WCHAR *)(v12 + *(unsigned __int16 *)a3 + 2i64);
    if( a4 )
      wcscpy_s(v14, v13, (PWCHAR)a4);
    else
      *v14 = 0;
    *(_DWORD *)a2 = v10;
    return 0i64;
  }
  else
  {
    *(_DWORD *)a2 = v10;
    return 3221225507i64;
  }
}

Referenced by:

ExpConvertArcName
ExpConvertSignatureName
ExpTranslateEfiPath