GetStringOperandValue

UINT64 __stdcall GetStringOperandValue(WCHAR *Condition, _OPERAND_VALUE **Value, UINT64 *MoveBy){
  unsigned int v3; 
  WCHAR *v4; 
  WCHAR v5; 
  unsigned int v8; 
  _OPERAND_VALUE *v9; 
  UINT64 v10; 
  VOID *v11; 
  _OPERAND_VALUE *v12; 

  v3 = 0;
  v4 = Condition + 1;
  v5 = Condition[1];
  v8 = 1;
  while( v5 != 34 && v5 )
    v5 = Condition[++v8];
  if( Condition[v8] )
  {
    v9 = *Value;
    *((_BYTE *)*Value + 1) = 16;
    if( v8 <= 1 )
    {
      v9[1] = 0;
      *((_QWORD *)v9 + 1) = 0i64;
    }
    else
    {
      v10 = 2 * v8 - 2;
      v9[1] = v10;
      if( 2 * v8 != 2 )
      {
        v11 = SddlpAlloc(v10, (UINT8)Value, (UINT64)MoveBy);
        v12 = *Value;
        *((_QWORD *)*Value + 1) = v11;
        if( !v11 )
          return 8;
        memmove(v11, v4, v12[1]);
      }
    }
    *(_DWORD *)MoveBy = v8 + 1;
    return v3;
  }
  return 1336;
}

Referenced by:

GetOperandValue