TxtpGetCacheEntry

INT64 *__fastcall TxtpGetCacheEntry(INT64 **a1, INT16 a2, INT64 a3){
  INT64 *v3; 
  INT64 *v4; 
  INT64 v5; 
  INT64 **v6; 
  INT64 *v7; 
  v3 = *a1;
  v4 = 0i64;
  while( v3 != (INT64 *)a1 )
  {
    if( *((_WORD *)v3 + 8) == a2
      && *((_DWORD *)v3 + 6) == *(_DWORD *)a3
      && *((_DWORD *)v3 + 7) == *(_DWORD *)(a3 + 4)
      && v3[4] == *(_QWORD *)(a3 + 8)
      && *((_DWORD *)v3 + 10) == *(_DWORD *)(a3 + 16) )
    {
      v5 = *v3;
      v4 = v3;
      if( *(INT64 **)(*v3 + 8) != v3
        || (v6 = (INT64 **)v3[1], *v6 != v3)
        || (*v6 = (INT64 *)v5, *(_QWORD *)(v5 + 8) = v6, v7 = *a1, (INT64 **)(*a1)[1] != a1) )
      {
        __fastfail(3u);
      }
      *v3 = (INT64)v7;
      v3[1] = (INT64)a1;
      v7[1] = (INT64)v3;
      *a1 = v3;
      return v4;
    }
    v3 = (INT64 *)*v3;
  }
  return v4;
}

Referenced by:

BgpTxtDisplayCharacter