strtok_s

PSTR __stdcall strtok_s(PSTR Str, PSTR Delim, PSTR Context){
  PSTR v4; 
  PSTR v5; 
  __int64 v6; 
  bool v7; 
  unsigned int v8; 
  unsigned __int8 v9; 
  CHAR v10; 
  CHAR *v11; 
  unsigned __int8 *v12; 
  char v14[32]; 
  v4 = Delim;
  v5 = Str;
  if( Context && Delim && (Str || *(_QWORD *)Context) )
  {
    v6 = 0i64;
    v7 = 1;
    do
    {
      if( !v7 )
        _report_rangecheckfailure();
      v14[v6++] = 0;
      v7 = (unsigned __int64)v6 < 0x20;
    }
    while( v6 < 32 );
    do
    {
      v8 = (unsigned __int8)*v4++;
      v14[(unsigned __int64)v8 >> 3] |= 1 << (v8 & 7);
    }
    while( (_BYTE)v8 );
    if( !Str )
      v5 = *(PSTR *)Context;
    v9 = *v5;
    if( ((unsigned __int8)(1 << (*v5 & 7)) & (unsigned __int8)v14[(unsigned __int64)(unsigned __int8)*v5 >> 3]) != 0 )
    {
      v10 = *v5;
      do
      {
        v9 = v10;
        if( !v10 )
          break;
        v10 = *++v5;
        v9 = *v5;
      }
      while( ((unsigned __int8)(1 << (*v5 & 7)) & (unsigned __int8)v14[(unsigned __int64)(unsigned __int8)*v5 >> 3]) != 0 );
    }
    v11 = v5;
    if( v9 )
    {
      while( 1 )
      {
        v12 = (unsigned __int8 *)(v5 + 1);
        if( ((unsigned __int8)(1 << (v9 & 7)) & (unsigned __int8)v14[(unsigned __int64)v9 >> 3]) != 0 )
          break;
        ++v5;
        v9 = *v12;
        if( !*v12 )
          goto LABEL_20;
      }
      *v5++ = 0;
    }
LABEL_20:
    *(_QWORD *)Context = v5;
    if( v11 == v5 )
      return 0i64;
    return v11;
  }
  else
  {
    xHalTimerWatchdogStop(0i64, 0i64);
    return 0i64;
  }
}

Referenced by:

No references.