WbDecryptWarbirdEncryptionSegmentBlockV0

__int64 __fastcall WbDecryptWarbirdEncryptionSegmentBlockV0(INT64 *a1, INT64 a2, _DWORD *a3){
  int v4; 
  _BYTE *v6; 
  int v7; 
  char *v8; 
  int v9; 
  INT64 v11; 
  INT64 v12; 
  int v13; 
  PMDL Mdl; 
  char v15; 
  INT64 v16; 

  v16 = 0i64;
  Mdl = 0i64;
  v4 = a2;
  v15 = 0;
  if( (_DWORD)a2 && (*a3 & 1) != 0 )
  {
    v7 = 0;
  }
  else
  {
    v6 = (_BYTE *)(a1[4] + (a3[1] & 0xFFFFFFF));
    v7 = sub_14065E218(v6, a3[2] & 0xFFFFFFF, (*a3 & 2) == 0);
    if( v7 >= 0 )
    {
      v7 = sub_1405D28BC(v6, a3[2] & 0xFFFFFFF, (*a3 & 2) == 0, &Mdl, (UINT64 *)&v16);
      if( v7 >= 0 )
      {
        v8 = (char *)v16;
        if( !v4
          || (LODWORD(v11) = a3[2] & 0xFFFFFFF,
              v7 = ApplyRelocations(
                     a1[5],
                     *(unsigned int *)(a1[7] + 48),
                     a1[4],
                     *(_QWORD *)(a1[7] + 56) - a1[4],
                     (INT64)v6,
                     v16,
                     v11),
              v7 >= 0) )
        {
          v7 = sub_14065F78C(
                 0,
                 v6,
                 v8,
                 a3[2] & 0xFFFFFFF,
                 (__int64 *)(a1[7] + 72),
                 a3[1] & 0xFFFFFFF,
                 (__int128 *)(a1[7] + 80),
                 v13,
                 &v15);
          if( v7 >= 0 )
          {
            if( !v4
              || (LODWORD(v12) = a3[2] & 0xFFFFFFF,
                  v7 = ApplyRelocations(
                         a1[5],
                         *(unsigned int *)(a1[7] + 48),
                         a1[4],
                         a1[4] - *(_QWORD *)(a1[7] + 56),
                         (INT64)v6,
                         (INT64)v8,
                         v12),
                  v7 >= 0) )
            {
              ZwFlushInstructionCache();
              v7 = v9;
            }
          }
        }
      }
    }
  }
  sub_14064F46C(Mdl, a2, (INT64)a3);
  return(unsigned int)v7;
}

Referenced by:

WbDecryptWarbirdEncryptionSegment