KiTpParseInstructionPrefix

INT64 __fastcall KiTpParseInstructionPrefix(CHAR *a1){
  INT64 result; 
  int *v3; 
  CHAR v4; 
  CHAR v5; 
  bool v6; 
  CHAR v7; 
  unsigned __int8 a2; 
  int v9; 
  int a4; 
  a4 = 0;
  a2 = 0;
  v9 = 0;
  while( 1 )
  {
    result = KiTpFetchInstructionBytes((INT64)a1, &a2, 1i64, &a4);
    if( (int)result < 0 )
      return result;
    if( a2 > 0x65u )
    {
      if( a2 == 102 )
      {
        v3 = (int *)((char *)&v9 + 2);
      }
      else if( a2 == 103 )
      {
        v3 = (int *)((char *)&v9 + 3);
      }
      else
      {
        if( a2 != 240 && (unsigned int)a2 - 242 > 1 )
        {
LABEL_19:
          if( (_WORD)v9 )
            return 3221225659i64;
          v4 = 64;
          v5 = a4;
          if( (a2 & 0xF0) == 64 )
            a1[25] = a2;
          else
            v5 = a4 - 1;
          v6 = (a1[25] & 8) == 0;
          a1[21] = v5;
          a1[4] = 0;
          if( v6 )
          {
            v7 = 32;
            if( BYTE2(v9) == 102 )
              v7 = 16;
            a1[1] = v7;
          }
          else
          {
            a1[1] = 64;
          }
          if( HIBYTE(v9) == 103 )
            v4 = 32;
          result = 0i64;
          *a1 = v4;
          return result;
        }
        v3 = &v9;
      }
    }
    else
    {
      if( a2 < 0x64u && a2 != 38 && a2 != 46 && a2 != 54 && a2 != 62 )
        goto LABEL_19;
      v3 = (int *)((char *)&v9 + 1);
    }
    if( *(_BYTE *)v3 )
      return 3221225473i64;
    *(_BYTE *)v3 = a2;
  }
}

Referenced by:

KiTpParseInstruction