IopSymlinkInitializeSymlinkInfo

VOID __fastcall IopSymlinkInitializeSymlinkInfo(
        INT64 a1,
        INT16 a2,
        const VOID *a3,
        UINT16 a4,
        INT16 a5,
        VOID *Src,
        UINT16 a7,
        INT16 a8,
        INT16 a9,
        INT64 a10){
  UINT64 v11; 
  UINT16 v12; 
  INT64 v14; 
  unsigned __int64 v15; 
  v11 = a4;
  v12 = 0;
  *(_WORD *)(a1 + 4) = a8;
  v14 = a1 + 32;
  *(_WORD *)a1 = a5;
  *(_WORD *)(a1 + 18) = a2 - 32;
  *(_WORD *)(a1 + 2) = a9;
  *(_QWORD *)(a1 + 8) = a10;
  *(_WORD *)(a1 + 6) = 0;
  *(_WORD *)(a1 + 16) = 0;
  *(_QWORD *)(a1 + 24) = a1 + 32;
  if( Src )
  {
    memmove((UINT8 *)(a1 + 32), (UINT8 *)Src, a7);
    v14 = *(_QWORD *)(a1 + 24);
    v15 = (unsigned __int64)a7 >> 1;
    v12 = a7;
    *(_WORD *)(a1 + 16) = a7;
    if( *(_WORD *)(v14 + 2 * v15 - 2) != 92 )
    {
      *(_WORD *)(v14 + 2 * v15) = 92;
      *(_WORD *)(a1 + 16) += 2;
      v12 = *(_WORD *)(a1 + 16);
      v14 = *(_QWORD *)(a1 + 24);
    }
  }
  memmove((UINT8 *)(v14 + v12), (UINT8 *)a3, v11);
  *(_WORD *)(a1 + 16) += v11;
}

Referenced by:

IopGraftName
IopSymlinkCreateECP
IopSymlinkPropagateToExtensionIfNeeded
IopSymlinkRememberJunction
IopSymlinkUpdateECP