void *P1_0(void *__cs_param_P1_arg)
                                        {
IF(2,0,tP1_0_1)
                                        __CSEQ_atomic_begin();
tP1_0_1: IF(2,1,tP1_0_2)
                                        x$w_buff1 = x$w_buff0;
tP1_0_2: IF(2,2,tP1_0_3)
                                        x$w_buff0 = 2;
tP1_0_3: IF(2,3,tP1_0_4)
                                        x$w_buff1_used = x$w_buff0_used;
tP1_0_4: IF(2,4,tP1_0_5)
                                        x$w_buff0_used = (_Bool) 1;
tP1_0_5: IF(2,5,tP1_0_6)
                                        assert(!(x$w_buff1_used && x$w_buff0_used));
tP1_0_6: IF(2,6,tP1_0_7)
                                        x$r_buff1_thd0 = x$r_buff0_thd0;
tP1_0_7: IF(2,7,tP1_0_8)
                                        x$r_buff1_thd1 = x$r_buff0_thd1;
tP1_0_8: IF(2,8,tP1_0_9)
                                        x$r_buff1_thd2 = x$r_buff0_thd2;
tP1_0_9: IF(2,9,tP1_0_10)
                                        x$r_buff0_thd2 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP1_0_10: IF(2,10,tP1_0_11)
                                        __CSEQ_atomic_begin();
tP1_0_11: IF(2,11,tP1_0_12)
                                        y = 1;
                                        __CSEQ_atomic_end();
tP1_0_12: IF(2,12,tP1_0_13)
                                        __CSEQ_atomic_begin();
tP1_0_13: IF(2,13,tP1_0_14)
                                        __unbuffered_p1_EAX = y;
                                        __CSEQ_atomic_end();
tP1_0_14: IF(2,14,tP1_0_15)
                                        __CSEQ_atomic_begin();
tP1_0_15: IF(2,15,tP1_0_16)
                                        __unbuffered_p1_EBX = z;
                                        __CSEQ_atomic_end();
tP1_0_16: IF(2,16,tP1_0_17)
                                        __CSEQ_atomic_begin();
tP1_0_17: IF(2,17,tP1_0_18)
                                        x = x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd2 ? x$w_buff1 : x;
tP1_0_18: IF(2,18,tP1_0_19)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$w_buff0_used;
tP1_0_19: IF(2,19,tP1_0_20)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$w_buff1_used;
tP1_0_20: IF(2,20,tP1_0_21)
                                        x$r_buff0_thd2 = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$r_buff0_thd2;
tP1_0_21: IF(2,21,tP1_0_22)
                                        x$r_buff1_thd2 = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$r_buff1_thd2;
                                        __CSEQ_atomic_end();
tP1_0_22: IF(2,22,tP1_0_23)
                                        __CSEQ_atomic_begin();
tP1_0_23: IF(2,23,tP1_0_24)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P1;
                                        		;
                                        __exit_P1:
                                        		__CPROVER_assume(__cs_pc_cs[2] >= 24);
                                        		;
                                        		;
tP1_0_24: 
                                        STOP_NONVOID(24);
                                        }
Пример #2
0
void
vec4_gs_visitor::gs_emit_vertex(int stream_id)
{
    this->current_annotation = "emit vertex: safety check";

    /* Haswell and later hardware ignores the "Render Stream Select" bits
     * from the 3DSTATE_STREAMOUT packet when the SOL stage is disabled,
     * and instead sends all primitives down the pipeline for rasterization.
     * If the SOL stage is enabled, "Render Stream Select" is honored and
     * primitives bound to non-zero streams are discarded after stream output.
     *
     * Since the only purpose of primives sent to non-zero streams is to
     * be recorded by transform feedback, we can simply discard all geometry
     * bound to these streams when transform feedback is disabled.
     */
    if (stream_id > 0 && !nir->info->has_transform_feedback_varyings)
        return;

    /* If we're outputting 32 control data bits or less, then we can wait
     * until the shader is over to output them all.  Otherwise we need to
     * output them as we go.  Now is the time to do it, since we're about to
     * output the vertex_count'th vertex, so it's guaranteed that the
     * control data bits associated with the (vertex_count - 1)th vertex are
     * correct.
     */
    if (c->control_data_header_size_bits > 32) {
        this->current_annotation = "emit vertex: emit control data bits";
        /* Only emit control data bits if we've finished accumulating a batch
         * of 32 bits.  This is the case when:
         *
         *     (vertex_count * bits_per_vertex) % 32 == 0
         *
         * (in other words, when the last 5 bits of vertex_count *
         * bits_per_vertex are 0).  Assuming bits_per_vertex == 2^n for some
         * integer n (which is always the case, since bits_per_vertex is
         * always 1 or 2), this is equivalent to requiring that the last 5-n
         * bits of vertex_count are 0:
         *
         *     vertex_count & (2^(5-n) - 1) == 0
         *
         * 2^(5-n) == 2^5 / 2^n == 32 / bits_per_vertex, so this is
         * equivalent to:
         *
         *     vertex_count & (32 / bits_per_vertex - 1) == 0
         */
        vec4_instruction *inst =
            emit(AND(dst_null_ud(), this->vertex_count,
                     brw_imm_ud(32 / c->control_data_bits_per_vertex - 1)));
        inst->conditional_mod = BRW_CONDITIONAL_Z;

        emit(IF(BRW_PREDICATE_NORMAL));
        {
            /* If vertex_count is 0, then no control data bits have been
             * accumulated yet, so we skip emitting them.
             */
            emit(CMP(dst_null_ud(), this->vertex_count, brw_imm_ud(0u),
                     BRW_CONDITIONAL_NEQ));
            emit(IF(BRW_PREDICATE_NORMAL));
            emit_control_data_bits();
            emit(BRW_OPCODE_ENDIF);

            /* Reset control_data_bits to 0 so we can start accumulating a new
             * batch.
             *
             * Note: in the case where vertex_count == 0, this neutralizes the
             * effect of any call to EndPrimitive() that the shader may have
             * made before outputting its first vertex.
             */
            inst = emit(MOV(dst_reg(this->control_data_bits), brw_imm_ud(0u)));
            inst->force_writemask_all = true;
        }
        emit(BRW_OPCODE_ENDIF);
    }

    this->current_annotation = "emit vertex: vertex data";
    emit_vertex();

    /* In stream mode we have to set control data bits for all vertices
     * unless we have disabled control data bits completely (which we do
     * do for GL_POINTS outputs that don't use streams).
     */
    if (c->control_data_header_size_bits > 0 &&
            gs_prog_data->control_data_format ==
            GEN7_GS_CONTROL_DATA_FORMAT_GSCTL_SID) {
        this->current_annotation = "emit vertex: Stream control data bits";
        set_stream_control_data_bits(stream_id);
    }

    this->current_annotation = NULL;
}
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        y$w_buff1 = y$w_buff0;
tP2_0_2: IF(3,2,tP2_0_3)
                                        y$w_buff0 = 1;
tP2_0_3: IF(3,3,tP2_0_4)
                                        y$w_buff1_used = y$w_buff0_used;
tP2_0_4: IF(3,4,tP2_0_5)
                                        y$w_buff0_used = (_Bool) 1;
tP2_0_5: IF(3,5,tP2_0_6)
                                        assert(!(y$w_buff1_used && y$w_buff0_used));
tP2_0_6: IF(3,6,tP2_0_7)
                                        y$r_buff1_thd0 = y$r_buff0_thd0;
tP2_0_7: IF(3,7,tP2_0_8)
                                        y$r_buff1_thd1 = y$r_buff0_thd1;
tP2_0_8: IF(3,8,tP2_0_9)
                                        y$r_buff1_thd2 = y$r_buff0_thd2;
tP2_0_9: IF(3,9,tP2_0_10)
                                        y$r_buff1_thd3 = y$r_buff0_thd3;
tP2_0_10: IF(3,10,tP2_0_11)
                                        y$r_buff1_thd4 = y$r_buff0_thd4;
tP2_0_11: IF(3,11,tP2_0_12)
                                        y$r_buff0_thd3 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP2_0_12: IF(3,12,tP2_0_13)
                                        __CSEQ_atomic_begin();
tP2_0_13: IF(3,13,tP2_0_14)
                                        __unbuffered_p2_EAX = z;
                                        __CSEQ_atomic_end();
tP2_0_14: IF(3,14,tP2_0_15)
                                        __CSEQ_atomic_begin();
tP2_0_15: IF(3,15,tP2_0_16)
                                        y = y$w_buff0_used && y$r_buff0_thd3 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd3 ? y$w_buff1 : y;
tP2_0_16: IF(3,16,tP2_0_17)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd3 ? (_Bool) 0 : y$w_buff0_used;
tP2_0_17: IF(3,17,tP2_0_18)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd3) || (y$w_buff1_used && y$r_buff1_thd3) ? (_Bool) 0 : y$w_buff1_used;
tP2_0_18: IF(3,18,tP2_0_19)
                                        y$r_buff0_thd3 = y$w_buff0_used && y$r_buff0_thd3 ? (_Bool) 0 : y$r_buff0_thd3;
tP2_0_19: IF(3,19,tP2_0_20)
                                        y$r_buff1_thd3 = (y$w_buff0_used && y$r_buff0_thd3) || (y$w_buff1_used && y$r_buff1_thd3) ? (_Bool) 0 : y$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_20: IF(3,20,tP2_0_21)
                                        __CSEQ_atomic_begin();
tP2_0_21: IF(3,21,tP2_0_22)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 22);
                                        		;
                                        		;
tP2_0_22: 
                                        STOP_NONVOID(22);
                                        }
Пример #4
0
void* DLLEXPORT SignalGenerator_Init ( int hParentInstrumentHandle , ViRsrc szRsrcAddress , int *vhInstrumentHandle , int *InstrumentConnectStatus , int *InstrumentChannelsQuantity )
{
	STD_ERROR						StdError										=	{0};
	
	tsHandle						*pLocalHandle									=	{0};
	
	CmtTSVHandle 					handle											=	0;
	
	int								supported										=	0;
	
	tsSTD_CallBackSet				tSTD_CallBackSet								=	{0};
	
	double							lfTimeout										=	0.0,
									lfStateFileDelay								=	1.0,  
									lfStateFileTimeout								=	10.0, 
									lfDefaultTimeout								=	5.0;
									
	IF (( szRsrcAddress == NULL ) , "Address string is empty" );
	
	if ( hParentInstrumentHandle == 0 ) 
	{
		CHK_CMT ( CmtNewTSV ( sizeof(tsHandle) , &handle ));
	}
	else
		handle = hParentInstrumentHandle;
		
	if ( vhInstrumentHandle )
		*vhInstrumentHandle = handle;
	
	CHK_CMT ( CmtGetTSVPtr ( handle , &pLocalHandle ));

	if ( pLocalHandle->defaultRM == 0 )
	{
		CHK_VSA ( viOpenDefaultRM (&(pLocalHandle->defaultRM)));
	}
	
	if ( pLocalHandle->sessionHandle == 0 )
	{
		CHK_VSA ( viOpen ( pLocalHandle->defaultRM , szRsrcAddress , VI_NULL, VI_NULL, &(pLocalHandle->sessionHandle)));
	}
	
	WaitForOperationCompletion( pLocalHandle->sessionHandle , 20.0 , 0.5 );
	
	CHK_VSA ( viSetAttribute ( pLocalHandle->sessionHandle , VI_ATTR_TMO_VALUE , 500 ));
	
	FREE_STDERR_COPY_ERR( Equipment_IsSupported ( pLocalHandle->sessionHandle , NULL , NULL , NULL , &supported , &pLocalHandle )); 

	IF (( supported == 0 ) , "This device has not supported." );

	FREE_STDERR_COPY_ERR( Equipment_Info ( pLocalHandle->sessionHandle , NULL , &pLocalHandle->pVendor , &pLocalHandle->pSerialNumber , &pLocalHandle->pModel , &pLocalHandle->pFirmware ));

	STDF_UPDATE_CALLBACK_DATA(pLocalHandle->ptCallbacks); 
	
	viPrintf( pLocalHandle->sessionHandle ,"*CLS\n" ); 
	
	STDF_CONFIG_VALUE("Timeout", VAL_DOUBLE , 1 , lfTimeout , lfDefaultTimeout );	
	
	if ( lfTimeout == 0.0 )
		lfTimeout = lfDefaultTimeout;
	
	viSetAttribute ( pLocalHandle->sessionHandle , VI_ATTR_TMO_VALUE , (lfTimeout*1E3) );
	
	STDF_CONFIG_VALUE("OPC_Timeout", VAL_DOUBLE , 1 , (pLocalHandle->lfTimeout) , lfDefaultTimeout );	
	
	if ( pLocalHandle->lfTimeout == 0.0 )
		pLocalHandle->lfTimeout = lfDefaultTimeout;
	
	STDF_CONFIG_VALUE("OPC_LowLevel_Timeout", VAL_DOUBLE , 1 , (pLocalHandle->lfOpcLowLevelTimeout) , lfDefaultTimeout );	 
	
	if ( pLocalHandle->lfOpcLowLevelTimeout == 0.0 )
		pLocalHandle->lfOpcLowLevelTimeout = lfDefaultTimeout;
	
		STDF_CONFIG_VALUE("State_File_Timeout", VAL_DOUBLE , 1 , (pLocalHandle->lfStateFileTimeout) , lfStateFileTimeout );	 
	
	if ( pLocalHandle->lfStateFileTimeout == 0.0 )
		pLocalHandle->lfStateFileTimeout = lfStateFileTimeout;
	
	STDF_CONFIG_VALUE("State_File_Delay", VAL_DOUBLE , 1 , (pLocalHandle->lfStateFileDelay) , lfStateFileDelay );	 
	
	if ( pLocalHandle->lfStateFileDelay == 0.0 )
		pLocalHandle->lfStateFileDelay = lfStateFileDelay;   
Error:
	
	if ( InstrumentConnectStatus )
		*InstrumentConnectStatus = supported;
	
	if ( handle )
		CmtReleaseTSVPtr ( handle );
	
	RETURN_STDERR_POINTER;
}
                                        void *P1_0(void *__cs_param_P1_arg)
                                        {
IF(2,0,tP1_0_1)
                                        __CSEQ_atomic_begin();
tP1_0_1: IF(2,1,tP1_0_2)
                                        __unbuffered_p1_EAX = x;
                                        __CSEQ_atomic_end();
tP1_0_2: IF(2,2,tP1_0_3)
                                        __CSEQ_atomic_begin();
tP1_0_3: IF(2,3,tP1_0_4)
                                        y = 1;
                                        __CSEQ_atomic_end();
tP1_0_4: IF(2,4,tP1_0_5)
                                        __CSEQ_atomic_begin();
tP1_0_5: IF(2,5,tP1_0_6)
                                        y = y$w_buff0_used && y$r_buff0_thd2 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd2 ? y$w_buff1 : y;
tP1_0_6: IF(2,6,tP1_0_7)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : y$w_buff0_used;
tP1_0_7: IF(2,7,tP1_0_8)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd2) || (y$w_buff1_used && y$r_buff1_thd2) ? (_Bool) 0 : y$w_buff1_used;
tP1_0_8: IF(2,8,tP1_0_9)
                                        y$r_buff0_thd2 = y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : y$r_buff0_thd2;
tP1_0_9: IF(2,9,tP1_0_10)
                                        y$r_buff1_thd2 = (y$w_buff0_used && y$r_buff0_thd2) || (y$w_buff1_used && y$r_buff1_thd2) ? (_Bool) 0 : y$r_buff1_thd2;
                                        __CSEQ_atomic_end();
tP1_0_10: IF(2,10,tP1_0_11)
                                        __CSEQ_atomic_begin();
tP1_0_11: IF(2,11,tP1_0_12)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P1;
                                        		;
                                        __exit_P1:
                                        		__CPROVER_assume(__cs_pc_cs[2] >= 12);
                                        		;
                                        		;
tP1_0_12: 
                                        STOP_NONVOID(12);
                                        }
Пример #6
0
static void LoadBlock(LoadState* S, void* b, size_t size)
{
 size_t r=luaZ_read(S->Z,b,size);
 IF (r!=0, "unexpected end");
}
Пример #7
0
void* DLLEXPORT SignalGenerator_GetErrorTextMessage ( int hInstrumentHandle , int iError , char *pErrorMessage )
{
	STD_ERROR		StdError							=	{0};
	
	tsHandle		*pLocalHandle						=	{0};

	int				handle								=	0;
	
	char			szReadBuffer[LOW_STRING]			=	{0},
					szErrorDescription[LOW_STRING]		=	{0};
	
	int				count								=	0;
	
	char			*pTemp								=	NULL;
	
	IF (( hInstrumentHandle == 0 ) , "Handle is empty" );
	
	SetBreakOnLibraryErrors (0); 
	
	handle = hInstrumentHandle;
	
	CHK_CMT ( CmtGetTSVPtr ( handle , &pLocalHandle ));
	
	WaitForOperationCompletion( pLocalHandle->sessionHandle , pLocalHandle->lfTimeout  ,  pLocalHandle->lfOpcLowLevelTimeout );  
	
	viPrintf( pLocalHandle->sessionHandle , ":SYST:ERR?\n" );
	viRead( pLocalHandle->sessionHandle, szReadBuffer , LOW_STRING , &count );
	
	iError = atoi(szReadBuffer);
	
	pTemp = strchr( szReadBuffer , '"' );
	
	if ( pTemp )
	{
		pTemp++;
		
		strcpy( szErrorDescription , pTemp );  
		
		pTemp = strchr( szErrorDescription , '"' );
		
		if ( pTemp )
			*pTemp = 0;
	}
	
	viPrintf( pLocalHandle->sessionHandle , "*CLS\n" );
	
	if ( pErrorMessage )
	{
		strcpy( pErrorMessage , szErrorDescription ); 
	}

	StdError.error = iError;
	
	if ( iError )
	{
		CALLOC_COPY_STRING( StdError.pszErrorDescription , szErrorDescription );
	}
	
Error:

	SetBreakOnLibraryErrors (1);
	
	if ( handle )
		CmtReleaseTSVPtr ( handle );
	
	RETURN_STDERR_POINTER;
}
                                        void *P0_0(void *__cs_param_P0_arg)
                                        {
IF(1,0,tP0_0_1)
                                        __CSEQ_atomic_begin();
tP0_0_1: IF(1,1,tP0_0_2)
                                        __unbuffered_p0_EAX = y;
                                        __CSEQ_atomic_end();
tP0_0_2: IF(1,2,tP0_0_3)
                                        __CSEQ_atomic_begin();
tP0_0_3: IF(1,3,tP0_0_4)
                                        weak$$choice0 = nondet_0();
tP0_0_4: IF(1,4,tP0_0_5)
                                        weak$$choice2 = nondet_0();
tP0_0_5: IF(1,5,tP0_0_6)
                                        x$flush_delayed = weak$$choice2;
tP0_0_6: IF(1,6,tP0_0_7)
                                        x$mem_tmp = x;
tP0_0_7: IF(1,7,tP0_0_8)
                                        x = ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x : x$w_buff0_used && x$r_buff0_thd1 ? x$w_buff0 : x$w_buff1;
tP0_0_8: IF(1,8,tP0_0_9)
                                        x$w_buff0 = weak$$choice2 ? x$w_buff0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$w_buff0 : x$w_buff0_used && x$r_buff0_thd1 ? x$w_buff0 : x$w_buff0;
tP0_0_9: IF(1,9,tP0_0_10)
                                        x$w_buff1 = weak$$choice2 ? x$w_buff1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$w_buff1 : x$w_buff0_used && x$r_buff0_thd1 ? x$w_buff1 : x$w_buff1;
tP0_0_10: IF(1,10,tP0_0_11)
                                        x$w_buff0_used = weak$$choice2 ? x$w_buff0_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$w_buff0_used : x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : x$w_buff0_used;
tP0_0_11: IF(1,11,tP0_0_12)
                                        x$w_buff1_used = weak$$choice2 ? x$w_buff1_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$w_buff1_used : x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : (_Bool) 0;
tP0_0_12: IF(1,12,tP0_0_13)
                                        x$r_buff0_thd1 = weak$$choice2 ? x$r_buff0_thd1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$r_buff0_thd1 : x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : x$r_buff0_thd1;
tP0_0_13: IF(1,13,tP0_0_14)
                                        x$r_buff1_thd1 = weak$$choice2 ? x$r_buff1_thd1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd1) && (!x$w_buff1_used))) || ((!x$r_buff0_thd1) && (!x$r_buff1_thd1)) ? x$r_buff1_thd1 : x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : (_Bool) 0;
tP0_0_14: IF(1,14,tP0_0_15)
                                        __unbuffered_p0_EBX = x;
tP0_0_15: IF(1,15,tP0_0_16)
                                        x = x$flush_delayed ? x$mem_tmp : x;
tP0_0_16: IF(1,16,tP0_0_17)
                                        x$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP0_0_17: IF(1,17,tP0_0_18)
                                        __CSEQ_atomic_begin();
                                        __CSEQ_atomic_end();
tP0_0_18: IF(1,18,tP0_0_19)
                                        __CSEQ_atomic_begin();
tP0_0_19: IF(1,19,tP0_0_20)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P0;
                                        		;
                                        __exit_P0:
                                        		__CPROVER_assume(__cs_pc_cs[1] >= 20);
                                        		;
                                        		;
tP0_0_20: 
                                        STOP_NONVOID(20);
                                        }
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        weak$$choice0 = nondet_0();
tP2_0_2: IF(3,2,tP2_0_3)
                                        weak$$choice2 = nondet_0();
tP2_0_3: IF(3,3,tP2_0_4)
                                        x$flush_delayed = weak$$choice2;
tP2_0_4: IF(3,4,tP2_0_5)
                                        x$mem_tmp = x;
tP2_0_5: IF(3,5,tP2_0_6)
                                        x = ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x : x$w_buff0_used && x$r_buff0_thd3 ? x$w_buff0 : x$w_buff1;
tP2_0_6: IF(3,6,tP2_0_7)
                                        x$w_buff0 = weak$$choice2 ? x$w_buff0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$w_buff0 : x$w_buff0_used && x$r_buff0_thd3 ? x$w_buff0 : x$w_buff0;
tP2_0_7: IF(3,7,tP2_0_8)
                                        x$w_buff1 = weak$$choice2 ? x$w_buff1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$w_buff1 : x$w_buff0_used && x$r_buff0_thd3 ? x$w_buff1 : x$w_buff1;
tP2_0_8: IF(3,8,tP2_0_9)
                                        x$w_buff0_used = weak$$choice2 ? x$w_buff0_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$w_buff0_used : x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$w_buff0_used;
tP2_0_9: IF(3,9,tP2_0_10)
                                        x$w_buff1_used = weak$$choice2 ? x$w_buff1_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$w_buff1_used : x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : (_Bool) 0;
tP2_0_10: IF(3,10,tP2_0_11)
                                        x$r_buff0_thd3 = weak$$choice2 ? x$r_buff0_thd3 : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$r_buff0_thd3 : x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$r_buff0_thd3;
tP2_0_11: IF(3,11,tP2_0_12)
                                        x$r_buff1_thd3 = weak$$choice2 ? x$r_buff1_thd3 : ((!x$w_buff0_used) || ((!x$r_buff0_thd3) && (!x$w_buff1_used))) || ((!x$r_buff0_thd3) && (!x$r_buff1_thd3)) ? x$r_buff1_thd3 : x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : (_Bool) 0;
tP2_0_12: IF(3,12,tP2_0_13)
                                        __unbuffered_p2_EAX$read_delayed = (_Bool) 1;
tP2_0_13: IF(3,13,tP2_0_14)
                                        __unbuffered_p2_EAX$read_delayed_var = &x;
tP2_0_14: IF(3,14,tP2_0_15)
                                        __unbuffered_p2_EAX = x;
tP2_0_15: IF(3,15,tP2_0_16)
                                        x = x$flush_delayed ? x$mem_tmp : x;
tP2_0_16: IF(3,16,tP2_0_17)
                                        x$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP2_0_17: IF(3,17,tP2_0_18)
                                        __CSEQ_atomic_begin();
tP2_0_18: IF(3,18,tP2_0_19)
                                        y = 1;
                                        __CSEQ_atomic_end();
tP2_0_19: IF(3,19,tP2_0_20)
                                        __CSEQ_atomic_begin();
tP2_0_20: IF(3,20,tP2_0_21)
                                        x = x$w_buff0_used && x$r_buff0_thd3 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd3 ? x$w_buff1 : x;
tP2_0_21: IF(3,21,tP2_0_22)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$w_buff0_used;
tP2_0_22: IF(3,22,tP2_0_23)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd3) || (x$w_buff1_used && x$r_buff1_thd3) ? (_Bool) 0 : x$w_buff1_used;
tP2_0_23: IF(3,23,tP2_0_24)
                                        x$r_buff0_thd3 = x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$r_buff0_thd3;
tP2_0_24: IF(3,24,tP2_0_25)
                                        x$r_buff1_thd3 = (x$w_buff0_used && x$r_buff0_thd3) || (x$w_buff1_used && x$r_buff1_thd3) ? (_Bool) 0 : x$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_25: IF(3,25,tP2_0_26)
                                        __CSEQ_atomic_begin();
tP2_0_26: IF(3,26,tP2_0_27)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 27);
                                        		;
                                        		;
tP2_0_27: 
                                        STOP_NONVOID(27);
                                        }
                                        int main_thread(void)
                                        {
                                        		;
IF(0,0,tmain_1)
                                        __cs_create(0, 0, P0_0, 0, 1);
tmain_1: IF(0,1,tmain_2)
                                        __cs_create(0, 0, P1_0, 0, 2);
tmain_2: IF(0,2,tmain_3)
                                        __cs_create(0, 0, P2_0, 0, 3);
tmain_3: IF(0,3,tmain_4)
                                        __CSEQ_atomic_begin();
tmain_4: IF(0,4,tmain_5)
                                        main$tmp_guard0 = __unbuffered_cnt == 3;
                                        __CSEQ_atomic_end();
tmain_5: IF(0,5,tmain_6)
                                        __CPROVER_assume(main$tmp_guard0);
tmain_6: IF(0,6,tmain_7)
                                        __CSEQ_atomic_begin();
tmain_7: IF(0,7,tmain_8)
                                        x = x$w_buff0_used && x$r_buff0_thd0 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd0 ? x$w_buff1 : x;
tmain_8: IF(0,8,tmain_9)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : x$w_buff0_used;
tmain_9: IF(0,9,tmain_10)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd0) || (x$w_buff1_used && x$r_buff1_thd0) ? (_Bool) 0 : x$w_buff1_used;
tmain_10: IF(0,10,tmain_11)
                                        x$r_buff0_thd0 = x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : x$r_buff0_thd0;
tmain_11: IF(0,11,tmain_12)
                                        x$r_buff1_thd0 = (x$w_buff0_used && x$r_buff0_thd0) || (x$w_buff1_used && x$r_buff1_thd0) ? (_Bool) 0 : x$r_buff1_thd0;
                                        __CSEQ_atomic_end();
tmain_12: IF(0,12,tmain_13)
                                        __CSEQ_atomic_begin();
tmain_13: IF(0,13,tmain_14)
                                        weak$$choice0 = nondet_0();
tmain_14: IF(0,14,tmain_15)
                                        weak$$choice2 = nondet_0();
tmain_15: IF(0,15,tmain_16)
                                        x$flush_delayed = weak$$choice2;
tmain_16: IF(0,16,tmain_17)
                                        x$mem_tmp = x;
tmain_17: IF(0,17,tmain_18)
                                        x = ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x : x$w_buff0_used && x$r_buff0_thd0 ? x$w_buff0 : x$w_buff1;
tmain_18: IF(0,18,tmain_19)
                                        x$w_buff0 = weak$$choice2 ? x$w_buff0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$w_buff0 : x$w_buff0_used && x$r_buff0_thd0 ? x$w_buff0 : x$w_buff0;
tmain_19: IF(0,19,tmain_20)
                                        x$w_buff1 = weak$$choice2 ? x$w_buff1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$w_buff1 : x$w_buff0_used && x$r_buff0_thd0 ? x$w_buff1 : x$w_buff1;
tmain_20: IF(0,20,tmain_21)
                                        x$w_buff0_used = weak$$choice2 ? x$w_buff0_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$w_buff0_used : x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : x$w_buff0_used;
tmain_21: IF(0,21,tmain_22)
                                        x$w_buff1_used = weak$$choice2 ? x$w_buff1_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$w_buff1_used : x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : (_Bool) 0;
tmain_22: IF(0,22,tmain_23)
                                        x$r_buff0_thd0 = weak$$choice2 ? x$r_buff0_thd0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$r_buff0_thd0 : x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : x$r_buff0_thd0;
tmain_23: IF(0,23,tmain_24)
                                        x$r_buff1_thd0 = weak$$choice2 ? x$r_buff1_thd0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd0) && (!x$w_buff1_used))) || ((!x$r_buff0_thd0) && (!x$r_buff1_thd0)) ? x$r_buff1_thd0 : x$w_buff0_used && x$r_buff0_thd0 ? (_Bool) 0 : (_Bool) 0;
tmain_24: IF(0,24,tmain_25)
                                        main$tmp_guard1 = !((((x == 2) && (y == 2)) && (__unbuffered_p0_EAX == 0)) && (__unbuffered_p1_EAX == 1));
tmain_25: IF(0,25,tmain_26)
                                        x = x$flush_delayed ? x$mem_tmp : x;
tmain_26: IF(0,26,tmain_27)
                                        x$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tmain_27: IF(0,27,tmain_28)
                                        assert(main$tmp_guard1);
                                        goto __exit_main;
                                        		;
                                        __exit_main:
                                        		__CPROVER_assume(__cs_pc_cs[0] >= 28);
                                        		;
                                        		;
tmain_28: 
                                        STOP_NONVOID(28);
                                        }
Пример #11
0
void get_desc(dungeon* d) {
	room r = *(d->cur_room);

	printf(
		"\t%s"	//journey conclusion
		"%s"	//low health
		"%s"	//visited
		"%s"	//boss room
		"%s"	//chest room
		"%s"	//dark
		"%s"	//cold
		"%s"	//sky view
		"%s"	//trait
		"%s"	//exit north
		"%s"	//exit south
		"%s"	//exit east
		"%s\n",	//exit west
		IF(d->location==d->end_room, " I believe my journey shall soon end."),
		IF(d->player.hp<3, " I feel the wounds of battle taking their toll."),
		IF(r.visited, " This room seems familiar to me."),
		IF(r.boss_room, " This is a boss room."),
		IF(r.chest, " I see a chest... I wonder what's inside."),
		IF(r.dark, " This room is very dark."),
		IF(r.cold, " This room is very cold."),
		IF(r.sky_view, " I can see the stars, they remind me to be strong."),
		IF(d->player.trait==r.trait, " You feel at home in this room."),
		IF(r.n, " I see a passage to the north."),
		IF(r.s, " I see a passage to the south."),
		IF(r.e, " I see a passage to the east."),
		IF(r.w, " I see a passage to the west.")
	);
}
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        x$w_buff1 = x$w_buff0;
tP2_0_2: IF(3,2,tP2_0_3)
                                        x$w_buff0 = 2;
tP2_0_3: IF(3,3,tP2_0_4)
                                        x$w_buff1_used = x$w_buff0_used;
tP2_0_4: IF(3,4,tP2_0_5)
                                        x$w_buff0_used = (_Bool) 1;
tP2_0_5: IF(3,5,tP2_0_6)
                                        assert(!(x$w_buff1_used && x$w_buff0_used));
tP2_0_6: IF(3,6,tP2_0_7)
                                        x$r_buff1_thd0 = x$r_buff0_thd0;
tP2_0_7: IF(3,7,tP2_0_8)
                                        x$r_buff1_thd1 = x$r_buff0_thd1;
tP2_0_8: IF(3,8,tP2_0_9)
                                        x$r_buff1_thd2 = x$r_buff0_thd2;
tP2_0_9: IF(3,9,tP2_0_10)
                                        x$r_buff1_thd3 = x$r_buff0_thd3;
tP2_0_10: IF(3,10,tP2_0_11)
                                        x$r_buff0_thd3 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP2_0_11: IF(3,11,tP2_0_12)
                                        __CSEQ_atomic_begin();
tP2_0_12: IF(3,12,tP2_0_13)
                                        y = 1;
                                        __CSEQ_atomic_end();
tP2_0_13: IF(3,13,tP2_0_14)
                                        __CSEQ_atomic_begin();
tP2_0_14: IF(3,14,tP2_0_15)
                                        x = x$w_buff0_used && x$r_buff0_thd3 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd3 ? x$w_buff1 : x;
tP2_0_15: IF(3,15,tP2_0_16)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$w_buff0_used;
tP2_0_16: IF(3,16,tP2_0_17)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd3) || (x$w_buff1_used && x$r_buff1_thd3) ? (_Bool) 0 : x$w_buff1_used;
tP2_0_17: IF(3,17,tP2_0_18)
                                        x$r_buff0_thd3 = x$w_buff0_used && x$r_buff0_thd3 ? (_Bool) 0 : x$r_buff0_thd3;
tP2_0_18: IF(3,18,tP2_0_19)
                                        x$r_buff1_thd3 = (x$w_buff0_used && x$r_buff0_thd3) || (x$w_buff1_used && x$r_buff1_thd3) ? (_Bool) 0 : x$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_19: IF(3,19,tP2_0_20)
                                        __CSEQ_atomic_begin();
tP2_0_20: IF(3,20,tP2_0_21)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 21);
                                        		;
                                        		;
tP2_0_21: 
                                        STOP_NONVOID(21);
                                        }
                                        void *P1_0(void *__cs_param_P1_arg)
                                        {
IF(2,0,tP1_0_1)
                                        __CSEQ_atomic_begin();
tP1_0_1: IF(2,1,tP1_0_2)
                                        x = 1;
                                        __CSEQ_atomic_end();
tP1_0_2: IF(2,2,tP1_0_3)
                                        __CSEQ_atomic_begin();
tP1_0_3: IF(2,3,tP1_0_4)
                                        x = x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd2 ? x$w_buff1 : x;
tP1_0_4: IF(2,4,tP1_0_5)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$w_buff0_used;
tP1_0_5: IF(2,5,tP1_0_6)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$w_buff1_used;
tP1_0_6: IF(2,6,tP1_0_7)
                                        x$r_buff0_thd2 = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$r_buff0_thd2;
tP1_0_7: IF(2,7,tP1_0_8)
                                        x$r_buff1_thd2 = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$r_buff1_thd2;
                                        __CSEQ_atomic_end();
tP1_0_8: IF(2,8,tP1_0_9)
                                        __CSEQ_atomic_begin();
tP1_0_9: IF(2,9,tP1_0_10)
                                        weak$$choice0 = nondet_0();
tP1_0_10: IF(2,10,tP1_0_11)
                                        weak$$choice2 = nondet_0();
tP1_0_11: IF(2,11,tP1_0_12)
                                        x$flush_delayed = weak$$choice2;
tP1_0_12: IF(2,12,tP1_0_13)
                                        x$mem_tmp = x;
tP1_0_13: IF(2,13,tP1_0_14)
                                        x = ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x : x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff0 : x$w_buff1;
tP1_0_14: IF(2,14,tP1_0_15)
                                        x$w_buff0 = weak$$choice2 ? x$w_buff0 : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$w_buff0 : x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff0 : x$w_buff0;
tP1_0_15: IF(2,15,tP1_0_16)
                                        x$w_buff1 = weak$$choice2 ? x$w_buff1 : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$w_buff1 : x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff1 : x$w_buff1;
tP1_0_16: IF(2,16,tP1_0_17)
                                        x$w_buff0_used = weak$$choice2 ? x$w_buff0_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$w_buff0_used : x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$w_buff0_used;
tP1_0_17: IF(2,17,tP1_0_18)
                                        x$w_buff1_used = weak$$choice2 ? x$w_buff1_used : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$w_buff1_used : x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_18: IF(2,18,tP1_0_19)
                                        x$r_buff0_thd2 = weak$$choice2 ? x$r_buff0_thd2 : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$r_buff0_thd2 : x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$r_buff0_thd2;
tP1_0_19: IF(2,19,tP1_0_20)
                                        x$r_buff1_thd2 = weak$$choice2 ? x$r_buff1_thd2 : ((!x$w_buff0_used) || ((!x$r_buff0_thd2) && (!x$w_buff1_used))) || ((!x$r_buff0_thd2) && (!x$r_buff1_thd2)) ? x$r_buff1_thd2 : x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_20: IF(2,20,tP1_0_21)
                                        __unbuffered_p1_EAX = x;
tP1_0_21: IF(2,21,tP1_0_22)
                                        x = x$flush_delayed ? x$mem_tmp : x;
tP1_0_22: IF(2,22,tP1_0_23)
                                        x$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP1_0_23: IF(2,23,tP1_0_24)
                                        __CSEQ_atomic_begin();
tP1_0_24: IF(2,24,tP1_0_25)
                                        x = x$w_buff0_used && x$r_buff0_thd2 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd2 ? x$w_buff1 : x;
tP1_0_25: IF(2,25,tP1_0_26)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$w_buff0_used;
tP1_0_26: IF(2,26,tP1_0_27)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$w_buff1_used;
tP1_0_27: IF(2,27,tP1_0_28)
                                        x$r_buff0_thd2 = x$w_buff0_used && x$r_buff0_thd2 ? (_Bool) 0 : x$r_buff0_thd2;
tP1_0_28: IF(2,28,tP1_0_29)
                                        x$r_buff1_thd2 = (x$w_buff0_used && x$r_buff0_thd2) || (x$w_buff1_used && x$r_buff1_thd2) ? (_Bool) 0 : x$r_buff1_thd2;
                                        __CSEQ_atomic_end();
tP1_0_29: IF(2,29,tP1_0_30)
                                        __CSEQ_atomic_begin();
tP1_0_30: IF(2,30,tP1_0_31)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P1;
                                        		;
                                        __exit_P1:
                                        		__CPROVER_assume(__cs_pc_cs[2] >= 31);
                                        		;
                                        		;
tP1_0_31: 
                                        STOP_NONVOID(31);
                                        }
                                        void *P3_0(void *__cs_param_P3_arg)
                                        {
IF(4,0,tP3_0_1)
                                        __CSEQ_atomic_begin();
tP3_0_1: IF(4,1,tP3_0_2)
                                        z$w_buff1 = z$w_buff0;
tP3_0_2: IF(4,2,tP3_0_3)
                                        z$w_buff0 = 1;
tP3_0_3: IF(4,3,tP3_0_4)
                                        z$w_buff1_used = z$w_buff0_used;
tP3_0_4: IF(4,4,tP3_0_5)
                                        z$w_buff0_used = (_Bool) 1;
tP3_0_5: IF(4,5,tP3_0_6)
                                        assert(!(z$w_buff1_used && z$w_buff0_used));
tP3_0_6: IF(4,6,tP3_0_7)
                                        z$r_buff1_thd0 = z$r_buff0_thd0;
tP3_0_7: IF(4,7,tP3_0_8)
                                        z$r_buff1_thd1 = z$r_buff0_thd1;
tP3_0_8: IF(4,8,tP3_0_9)
                                        z$r_buff1_thd2 = z$r_buff0_thd2;
tP3_0_9: IF(4,9,tP3_0_10)
                                        z$r_buff1_thd3 = z$r_buff0_thd3;
tP3_0_10: IF(4,10,tP3_0_11)
                                        z$r_buff1_thd4 = z$r_buff0_thd4;
tP3_0_11: IF(4,11,tP3_0_12)
                                        z$r_buff0_thd4 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP3_0_12: IF(4,12,tP3_0_13)
                                        __CSEQ_atomic_begin();
tP3_0_13: IF(4,13,tP3_0_14)
                                        __unbuffered_p3_EAX = a;
                                        __CSEQ_atomic_end();
tP3_0_14: IF(4,14,tP3_0_15)
                                        __CSEQ_atomic_begin();
tP3_0_15: IF(4,15,tP3_0_16)
                                        z = z$w_buff0_used && z$r_buff0_thd4 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd4 ? z$w_buff1 : z;
tP3_0_16: IF(4,16,tP3_0_17)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd4 ? (_Bool) 0 : z$w_buff0_used;
tP3_0_17: IF(4,17,tP3_0_18)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd4) || (z$w_buff1_used && z$r_buff1_thd4) ? (_Bool) 0 : z$w_buff1_used;
tP3_0_18: IF(4,18,tP3_0_19)
                                        z$r_buff0_thd4 = z$w_buff0_used && z$r_buff0_thd4 ? (_Bool) 0 : z$r_buff0_thd4;
tP3_0_19: IF(4,19,tP3_0_20)
                                        z$r_buff1_thd4 = (z$w_buff0_used && z$r_buff0_thd4) || (z$w_buff1_used && z$r_buff1_thd4) ? (_Bool) 0 : z$r_buff1_thd4;
                                        __CSEQ_atomic_end();
tP3_0_20: IF(4,20,tP3_0_21)
                                        __CSEQ_atomic_begin();
tP3_0_21: IF(4,21,tP3_0_22)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P3;
                                        		;
                                        __exit_P3:
                                        		__CPROVER_assume(__cs_pc_cs[4] >= 22);
                                        		;
                                        		;
tP3_0_22: 
                                        STOP_NONVOID(22);
                                        }
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        y = 2;
                                        __CSEQ_atomic_end();
tP2_0_2: IF(3,2,tP2_0_3)
                                        __CSEQ_atomic_begin();
tP2_0_3: IF(3,3,tP2_0_4)
                                        __unbuffered_p2_EAX = y;
                                        __CSEQ_atomic_end();
tP2_0_4: IF(3,4,tP2_0_5)
                                        __CSEQ_atomic_begin();
tP2_0_5: IF(3,5,tP2_0_6)
                                        weak$$choice0 = nondet_1();
tP2_0_6: IF(3,6,tP2_0_7)
                                        weak$$choice2 = nondet_1();
tP2_0_7: IF(3,7,tP2_0_8)
                                        z$flush_delayed = weak$$choice2;
tP2_0_8: IF(3,8,tP2_0_9)
                                        z$mem_tmp = z;
tP2_0_9: IF(3,9,tP2_0_10)
                                        z = ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z : z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff0 : z$w_buff1;
tP2_0_10: IF(3,10,tP2_0_11)
                                        z$w_buff0 = weak$$choice2 ? z$w_buff0 : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$w_buff0 : z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff0 : z$w_buff0;
tP2_0_11: IF(3,11,tP2_0_12)
                                        z$w_buff1 = weak$$choice2 ? z$w_buff1 : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$w_buff1 : z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff1 : z$w_buff1;
tP2_0_12: IF(3,12,tP2_0_13)
                                        z$w_buff0_used = weak$$choice2 ? z$w_buff0_used : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$w_buff0_used : z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$w_buff0_used;
tP2_0_13: IF(3,13,tP2_0_14)
                                        z$w_buff1_used = weak$$choice2 ? z$w_buff1_used : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$w_buff1_used : z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : (_Bool) 0;
tP2_0_14: IF(3,14,tP2_0_15)
                                        z$r_buff0_thd3 = weak$$choice2 ? z$r_buff0_thd3 : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$r_buff0_thd3 : z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$r_buff0_thd3;
tP2_0_15: IF(3,15,tP2_0_16)
                                        z$r_buff1_thd3 = weak$$choice2 ? z$r_buff1_thd3 : ((!z$w_buff0_used) || ((!z$r_buff0_thd3) && (!z$w_buff1_used))) || ((!z$r_buff0_thd3) && (!z$r_buff1_thd3)) ? z$r_buff1_thd3 : z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : (_Bool) 0;
tP2_0_16: IF(3,16,tP2_0_17)
                                        __unbuffered_p2_EBX = z;
tP2_0_17: IF(3,17,tP2_0_18)
                                        z = z$flush_delayed ? z$mem_tmp : z;
tP2_0_18: IF(3,18,tP2_0_19)
                                        z$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP2_0_19: IF(3,19,tP2_0_20)
                                        __CSEQ_atomic_begin();
tP2_0_20: IF(3,20,tP2_0_21)
                                        z = z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd3 ? z$w_buff1 : z;
tP2_0_21: IF(3,21,tP2_0_22)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$w_buff0_used;
tP2_0_22: IF(3,22,tP2_0_23)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$w_buff1_used;
tP2_0_23: IF(3,23,tP2_0_24)
                                        z$r_buff0_thd3 = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$r_buff0_thd3;
tP2_0_24: IF(3,24,tP2_0_25)
                                        z$r_buff1_thd3 = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_25: IF(3,25,tP2_0_26)
                                        __CSEQ_atomic_begin();
tP2_0_26: IF(3,26,tP2_0_27)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 27);
                                        		;
                                        		;
tP2_0_27: 
                                        STOP_NONVOID(27);
                                        }
                                        void *P1_0(void *__cs_param_P1_arg)
                                        {
IF(2,0,tP1_0_1)
                                        __CSEQ_atomic_begin();
tP1_0_1: IF(2,1,tP1_0_2)
                                        x = 2;
                                        __CSEQ_atomic_end();
tP1_0_2: IF(2,2,tP1_0_3)
                                        __CSEQ_atomic_begin();
tP1_0_3: IF(2,3,tP1_0_4)
                                        y = 1;
                                        __CSEQ_atomic_end();
tP1_0_4: IF(2,4,tP1_0_5)
                                        __CSEQ_atomic_begin();
tP1_0_5: IF(2,5,tP1_0_6)
                                        __unbuffered_p1_EAX = y;
                                        __CSEQ_atomic_end();
tP1_0_6: IF(2,6,tP1_0_7)
                                        __CSEQ_atomic_begin();
tP1_0_7: IF(2,7,tP1_0_8)
                                        weak$$choice0 = nondet_1();
tP1_0_8: IF(2,8,tP1_0_9)
                                        weak$$choice2 = nondet_1();
tP1_0_9: IF(2,9,tP1_0_10)
                                        z$flush_delayed = weak$$choice2;
tP1_0_10: IF(2,10,tP1_0_11)
                                        z$mem_tmp = z;
tP1_0_11: IF(2,11,tP1_0_12)
                                        z = ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z : z$w_buff0_used && z$r_buff0_thd2 ? z$w_buff0 : z$w_buff1;
tP1_0_12: IF(2,12,tP1_0_13)
                                        z$w_buff0 = weak$$choice2 ? z$w_buff0 : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$w_buff0 : z$w_buff0_used && z$r_buff0_thd2 ? z$w_buff0 : z$w_buff0;
tP1_0_13: IF(2,13,tP1_0_14)
                                        z$w_buff1 = weak$$choice2 ? z$w_buff1 : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$w_buff1 : z$w_buff0_used && z$r_buff0_thd2 ? z$w_buff1 : z$w_buff1;
tP1_0_14: IF(2,14,tP1_0_15)
                                        z$w_buff0_used = weak$$choice2 ? z$w_buff0_used : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$w_buff0_used : z$w_buff0_used && z$r_buff0_thd2 ? (_Bool) 0 : z$w_buff0_used;
tP1_0_15: IF(2,15,tP1_0_16)
                                        z$w_buff1_used = weak$$choice2 ? z$w_buff1_used : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$w_buff1_used : z$w_buff0_used && z$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_16: IF(2,16,tP1_0_17)
                                        z$r_buff0_thd2 = weak$$choice2 ? z$r_buff0_thd2 : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$r_buff0_thd2 : z$w_buff0_used && z$r_buff0_thd2 ? (_Bool) 0 : z$r_buff0_thd2;
tP1_0_17: IF(2,17,tP1_0_18)
                                        z$r_buff1_thd2 = weak$$choice2 ? z$r_buff1_thd2 : ((!z$w_buff0_used) || ((!z$r_buff0_thd2) && (!z$w_buff1_used))) || ((!z$r_buff0_thd2) && (!z$r_buff1_thd2)) ? z$r_buff1_thd2 : z$w_buff0_used && z$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_18: IF(2,18,tP1_0_19)
                                        __unbuffered_p1_EBX = z;
tP1_0_19: IF(2,19,tP1_0_20)
                                        z = z$flush_delayed ? z$mem_tmp : z;
tP1_0_20: IF(2,20,tP1_0_21)
                                        z$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP1_0_21: IF(2,21,tP1_0_22)
                                        __CSEQ_atomic_begin();
                                        __CSEQ_atomic_end();
tP1_0_22: IF(2,22,tP1_0_23)
                                        __CSEQ_atomic_begin();
tP1_0_23: IF(2,23,tP1_0_24)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P1;
                                        		;
                                        __exit_P1:
                                        		__CPROVER_assume(__cs_pc_cs[2] >= 24);
                                        		;
                                        		;
tP1_0_24: 
                                        STOP_NONVOID(24);
                                        }
                                        int main_thread(void)
                                        {
                                        		;
IF(0,0,tmain_1)
                                        __cs_create(0, 0, P0_0, 0, 1);
tmain_1: IF(0,1,tmain_2)
                                        __cs_create(0, 0, P1_0, 0, 2);
tmain_2: IF(0,2,tmain_3)
                                        __cs_create(0, 0, P2_0, 0, 3);
tmain_3: IF(0,3,tmain_4)
                                        __CSEQ_atomic_begin();
tmain_4: IF(0,4,tmain_5)
                                        main$tmp_guard0 = __unbuffered_cnt == 3;
                                        __CSEQ_atomic_end();
tmain_5: IF(0,5,tmain_6)
                                        __CPROVER_assume(main$tmp_guard0);
tmain_6: IF(0,6,tmain_7)
                                        __CSEQ_atomic_begin();
tmain_7: IF(0,7,tmain_8)
                                        z = z$w_buff0_used && z$r_buff0_thd0 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd0 ? z$w_buff1 : z;
tmain_8: IF(0,8,tmain_9)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd0 ? (_Bool) 0 : z$w_buff0_used;
tmain_9: IF(0,9,tmain_10)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd0) || (z$w_buff1_used && z$r_buff1_thd0) ? (_Bool) 0 : z$w_buff1_used;
tmain_10: IF(0,10,tmain_11)
                                        z$r_buff0_thd0 = z$w_buff0_used && z$r_buff0_thd0 ? (_Bool) 0 : z$r_buff0_thd0;
tmain_11: IF(0,11,tmain_12)
                                        z$r_buff1_thd0 = (z$w_buff0_used && z$r_buff0_thd0) || (z$w_buff1_used && z$r_buff1_thd0) ? (_Bool) 0 : z$r_buff1_thd0;
                                        __CSEQ_atomic_end();
tmain_12: IF(0,12,tmain_13)
                                        __CSEQ_atomic_begin();
tmain_13: IF(0,13,tmain_14)
                                        main$tmp_guard1 = !((((y == 2) && (__unbuffered_p0_EAX == 0)) && (__unbuffered_p2_EAX == 2)) && (__unbuffered_p2_EBX == 0));
                                        __CSEQ_atomic_end();
tmain_14: IF(0,14,tmain_15)
                                        assert(main$tmp_guard1);
                                        goto __exit_main;
                                        		;
                                        __exit_main:
                                        		__CPROVER_assume(__cs_pc_cs[0] >= 15);
                                        		;
                                        		;
tmain_15: 
                                        STOP_NONVOID(15);
                                        }
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        z$w_buff1 = z$w_buff0;
tP2_0_2: IF(3,2,tP2_0_3)
                                        z$w_buff0 = 1;
tP2_0_3: IF(3,3,tP2_0_4)
                                        z$w_buff1_used = z$w_buff0_used;
tP2_0_4: IF(3,4,tP2_0_5)
                                        z$w_buff0_used = (_Bool) 1;
tP2_0_5: IF(3,5,tP2_0_6)
                                        assert(!(z$w_buff1_used && z$w_buff0_used));
tP2_0_6: IF(3,6,tP2_0_7)
                                        z$r_buff1_thd0 = z$r_buff0_thd0;
tP2_0_7: IF(3,7,tP2_0_8)
                                        z$r_buff1_thd1 = z$r_buff0_thd1;
tP2_0_8: IF(3,8,tP2_0_9)
                                        z$r_buff1_thd2 = z$r_buff0_thd2;
tP2_0_9: IF(3,9,tP2_0_10)
                                        z$r_buff1_thd3 = z$r_buff0_thd3;
tP2_0_10: IF(3,10,tP2_0_11)
                                        z$r_buff0_thd3 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP2_0_11: IF(3,11,tP2_0_12)
                                        __CSEQ_atomic_begin();
tP2_0_12: IF(3,12,tP2_0_13)
                                        a = 1;
                                        __CSEQ_atomic_end();
tP2_0_13: IF(3,13,tP2_0_14)
                                        __CSEQ_atomic_begin();
tP2_0_14: IF(3,14,tP2_0_15)
                                        __unbuffered_p2_EAX = a;
                                        __CSEQ_atomic_end();
tP2_0_15: IF(3,15,tP2_0_16)
                                        __CSEQ_atomic_begin();
tP2_0_16: IF(3,16,tP2_0_17)
                                        __unbuffered_p2_EBX = b;
                                        __CSEQ_atomic_end();
tP2_0_17: IF(3,17,tP2_0_18)
                                        __CSEQ_atomic_begin();
tP2_0_18: IF(3,18,tP2_0_19)
                                        z = z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd3 ? z$w_buff1 : z;
tP2_0_19: IF(3,19,tP2_0_20)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$w_buff0_used;
tP2_0_20: IF(3,20,tP2_0_21)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$w_buff1_used;
tP2_0_21: IF(3,21,tP2_0_22)
                                        z$r_buff0_thd3 = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$r_buff0_thd3;
tP2_0_22: IF(3,22,tP2_0_23)
                                        z$r_buff1_thd3 = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_23: IF(3,23,tP2_0_24)
                                        __CSEQ_atomic_begin();
tP2_0_24: IF(3,24,tP2_0_25)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 25);
                                        		;
                                        		;
tP2_0_25: 
                                        STOP_NONVOID(25);
                                        }
                                        int main_thread(void)
                                        {
                                        		;
IF(0,0,tmain_1)
                                        __cs_create(0, 0, P0_0, 0, 1);
tmain_1: IF(0,1,tmain_2)
                                        __cs_create(0, 0, P1_0, 0, 2);
tmain_2: IF(0,2,tmain_3)
                                        __cs_create(0, 0, P2_0, 0, 3);
tmain_3: IF(0,3,tmain_4)
                                        __cs_create(0, 0, P3_0, 0, 4);
tmain_4: IF(0,4,tmain_5)
                                        __CSEQ_atomic_begin();
tmain_5: IF(0,5,tmain_6)
                                        main$tmp_guard0 = __unbuffered_cnt == 4;
                                        __CSEQ_atomic_end();
tmain_6: IF(0,6,tmain_7)
                                        __CPROVER_assume(main$tmp_guard0);
tmain_7: IF(0,7,tmain_8)
                                        __CSEQ_atomic_begin();
tmain_8: IF(0,8,tmain_9)
                                        y = y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd0 ? y$w_buff1 : y;
tmain_9: IF(0,9,tmain_10)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$w_buff0_used;
tmain_10: IF(0,10,tmain_11)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$w_buff1_used;
tmain_11: IF(0,11,tmain_12)
                                        y$r_buff0_thd0 = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$r_buff0_thd0;
tmain_12: IF(0,12,tmain_13)
                                        y$r_buff1_thd0 = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$r_buff1_thd0;
                                        __CSEQ_atomic_end();
tmain_13: IF(0,13,tmain_14)
                                        __CSEQ_atomic_begin();
tmain_14: IF(0,14,tmain_15)
                                        main$tmp_guard1 = !(((((z == 2) && (__unbuffered_p0_EAX == 0)) && (__unbuffered_p1_EAX == 0)) && (__unbuffered_p3_EAX == 2)) && (__unbuffered_p3_EBX == 0));
                                        __CSEQ_atomic_end();
tmain_15: IF(0,15,tmain_16)
                                        assert(main$tmp_guard1);
                                        goto __exit_main;
                                        		;
                                        __exit_main:
                                        		__CPROVER_assume(__cs_pc_cs[0] >= 16);
                                        		;
                                        		;
tmain_16: 
                                        STOP_NONVOID(16);
                                        }
                                        int main_thread(void)
                                        {
                                        		;
IF(0,0,tmain_1)
                                        __cs_create(0, 0, P0_0, 0, 1);
tmain_1: IF(0,1,tmain_2)
                                        __cs_create(0, 0, P1_0, 0, 2);
tmain_2: IF(0,2,tmain_3)
                                        __CSEQ_atomic_begin();
tmain_3: IF(0,3,tmain_4)
                                        main$tmp_guard0 = __unbuffered_cnt == 2;
                                        __CSEQ_atomic_end();
tmain_4: IF(0,4,tmain_5)
                                        __CPROVER_assume(main$tmp_guard0);
tmain_5: IF(0,5,tmain_6)
                                        __CSEQ_atomic_begin();
tmain_6: IF(0,6,tmain_7)
                                        y = y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd0 ? y$w_buff1 : y;
tmain_7: IF(0,7,tmain_8)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$w_buff0_used;
tmain_8: IF(0,8,tmain_9)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$w_buff1_used;
tmain_9: IF(0,9,tmain_10)
                                        y$r_buff0_thd0 = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$r_buff0_thd0;
tmain_10: IF(0,10,tmain_11)
                                        y$r_buff1_thd0 = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$r_buff1_thd0;
                                        __CSEQ_atomic_end();
tmain_11: IF(0,11,tmain_12)
                                        __CSEQ_atomic_begin();
tmain_12: IF(0,12,tmain_13)
                                        weak$$choice1 = nondet_0();
tmain_13: IF(0,13,tmain_14)
                                        __unbuffered_p0_EAX = __unbuffered_p0_EAX$read_delayed ? weak$$choice1 ? *__unbuffered_p0_EAX$read_delayed_var : __unbuffered_p0_EAX : __unbuffered_p0_EAX;
tmain_14: IF(0,14,tmain_15)
                                        main$tmp_guard1 = !((__unbuffered_p0_EAX == 1) && (__unbuffered_p1_EAX == 1));
                                        __CSEQ_atomic_end();
tmain_15: IF(0,15,tmain_16)
                                        assert(main$tmp_guard1);
                                        goto __exit_main;
                                        		;
                                        __exit_main:
                                        		__CPROVER_assume(__cs_pc_cs[0] >= 16);
                                        		;
                                        		;
tmain_16: 
                                        STOP_NONVOID(16);
                                        }
Пример #21
0
void*	DLLEXPORT		Equipment_Info ( int hLowLevelHandle , char *pAddress , char **pVendor , char **pSerialNumber , char **pModel , char **pFirmware )
{
	STD_ERROR						StdError									=	{0};
	
	int								iCount										=	0, 
									status										=	0, 
									iIndex										=	0, 
									bSupport									=	0, 
									defaultRM									=	0,
									hConnectionHandle							=	0;
	
	char							szIdentificationText[LOW_STRING]			=	{0},
									*pTemp										=	NULL;

	if ( hLowLevelHandle == 0 )
	{
		viOpenDefaultRM (&defaultRM);

		SetBreakOnLibraryErrors (0);
	
		status = viOpen ( defaultRM , pAddress , NULL, NULL, &hConnectionHandle );
	}
	else
	{
		hConnectionHandle = hLowLevelHandle;	
	}
		
	if ( status == 0 )
	{	
		status = viPrintf ( hConnectionHandle , "*IDN?\n" );
	
		if ( status == 0 )
		{
			viRead ( hConnectionHandle , szIdentificationText , (LOW_STRING-1) , &iCount );
			RemoveSurroundingWhiteSpace (szIdentificationText); 
		}
	}
		
	if (( hLowLevelHandle == 0 ) && hConnectionHandle )
		viClose(hConnectionHandle); 
		
	SetBreakOnLibraryErrors (1);

	do
	{
		IF (( strstr( szIdentificationText , "Hittite" ) == NULL ) , "Is not supported" );
	
		pTemp = strrchr( szIdentificationText , ',' );

		if ( pTemp )
		{
			*pTemp = 0;
			pTemp++;
	
			if ( pFirmware )
			{
				CALLOC_COPY_STRING( *pFirmware , pTemp );
			}
		}
		else
			break;
	
		pTemp = strrchr( szIdentificationText , ',' );

		if ( pTemp )
		{
			*pTemp = 0;
			pTemp++;
	
			if ( pSerialNumber )
			{
				CALLOC_COPY_STRING( *pSerialNumber , pTemp );
			}
		}
		else
			break;
	
		pTemp = strrchr( szIdentificationText , ',' );

		if ( pTemp )
		{
			*pTemp = 0;
			pTemp++;
	
			if ( pModel )
			{
				CALLOC_COPY_STRING( *pModel , pTemp );
			}
		}
		else
			break;
	
		if ( pVendor )
		{
			CALLOC_COPY_STRING( *pVendor , szIdentificationText );  
		}
		
	} while(0);
		
Error:
		
	RETURN_STDERR_POINTER;
}
                                        void *P0_0(void *__cs_param_P0_arg)
                                        {
IF(1,0,tP0_0_1)
                                        __CSEQ_atomic_begin();
tP0_0_1: IF(1,1,tP0_0_2)
                                        weak$$choice0 = nondet_0();
tP0_0_2: IF(1,2,tP0_0_3)
                                        weak$$choice2 = nondet_0();
tP0_0_3: IF(1,3,tP0_0_4)
                                        z$flush_delayed = weak$$choice2;
tP0_0_4: IF(1,4,tP0_0_5)
                                        z$mem_tmp = z;
tP0_0_5: IF(1,5,tP0_0_6)
                                        weak$$choice1 = nondet_0();
tP0_0_6: IF(1,6,tP0_0_7)
                                        z = !z$w_buff0_used ? z : z$w_buff0_used && z$r_buff0_thd1 ? z$w_buff0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 ? z : weak$$choice1 ? z$w_buff0 : z$w_buff1 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 ? z$w_buff1 : z$w_buff0 : weak$$choice0 ? z$w_buff0 : z;
tP0_0_7: IF(1,7,tP0_0_8)
                                        z$w_buff0 = weak$$choice2 ? z$w_buff0 : !z$w_buff0_used ? z$w_buff0 : z$w_buff0_used && z$r_buff0_thd1 ? z$w_buff0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? z$w_buff0 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? z$w_buff0 : z$w_buff0;
tP0_0_8: IF(1,8,tP0_0_9)
                                        z$w_buff1 = weak$$choice2 ? z$w_buff1 : !z$w_buff0_used ? z$w_buff1 : z$w_buff0_used && z$r_buff0_thd1 ? z$w_buff1 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? z$w_buff1 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? z$w_buff1 : z$w_buff1;
tP0_0_9: IF(1,9,tP0_0_10)
                                        z$w_buff0_used = weak$$choice2 ? z$w_buff0_used : !z$w_buff0_used ? z$w_buff0_used : z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 || (!weak$$choice1) : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 : weak$$choice0;
tP0_0_10: IF(1,10,tP0_0_11)
                                        z$w_buff1_used = weak$$choice2 ? z$w_buff1_used : !z$w_buff0_used ? z$w_buff1_used : z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? (_Bool) 0 : (_Bool) 0;
tP0_0_11: IF(1,11,tP0_0_12)
                                        z$r_buff0_thd1 = weak$$choice2 ? z$r_buff0_thd1 : !z$w_buff0_used ? z$r_buff0_thd1 : z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? z$r_buff0_thd1 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? (_Bool) 0 : (_Bool) 0;
tP0_0_12: IF(1,12,tP0_0_13)
                                        z$r_buff1_thd1 = weak$$choice2 ? z$r_buff1_thd1 : !z$w_buff0_used ? z$r_buff1_thd1 : z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : ((z$w_buff0_used && (!z$r_buff1_thd1)) && z$w_buff1_used) && (!z$r_buff0_thd1) ? weak$$choice0 ? z$r_buff1_thd1 : (_Bool) 0 : ((z$w_buff0_used && z$r_buff1_thd1) && z$w_buff1_used) && (!z$r_buff0_thd1) ? (_Bool) 0 : (_Bool) 0;
tP0_0_13: IF(1,13,tP0_0_14)
                                        __unbuffered_p0_EAX$read_delayed = (_Bool) 1;
tP0_0_14: IF(1,14,tP0_0_15)
                                        __unbuffered_p0_EAX$read_delayed_var = &z;
tP0_0_15: IF(1,15,tP0_0_16)
                                        __unbuffered_p0_EAX = z;
tP0_0_16: IF(1,16,tP0_0_17)
                                        z = z$flush_delayed ? z$mem_tmp : z;
tP0_0_17: IF(1,17,tP0_0_18)
                                        z$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP0_0_18: IF(1,18,tP0_0_19)
                                        __CSEQ_atomic_begin();
tP0_0_19: IF(1,19,tP0_0_20)
                                        __unbuffered_p0_EBX = x;
                                        __CSEQ_atomic_end();
tP0_0_20: IF(1,20,tP0_0_21)
                                        __CSEQ_atomic_begin();
                                        __CSEQ_atomic_end();
tP0_0_21: IF(1,21,tP0_0_22)
                                        __CSEQ_atomic_begin();
tP0_0_22: IF(1,22,tP0_0_23)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P0;
                                        		;
                                        __exit_P0:
                                        		__CPROVER_assume(__cs_pc_cs[1] >= 23);
                                        		;
                                        		;
tP0_0_23: 
                                        STOP_NONVOID(23);
                                        }
                                        void *P0_0(void *__cs_param_P0_arg)
                                        {
IF(1,0,tP0_0_1)
                                        __CSEQ_atomic_begin();
tP0_0_1: IF(1,1,tP0_0_2)
                                        weak$$choice0 = nondet_0();
tP0_0_2: IF(1,2,tP0_0_3)
                                        weak$$choice2 = nondet_0();
tP0_0_3: IF(1,3,tP0_0_4)
                                        y$flush_delayed = weak$$choice2;
tP0_0_4: IF(1,4,tP0_0_5)
                                        y$mem_tmp = y;
tP0_0_5: IF(1,5,tP0_0_6)
                                        y = ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y : y$w_buff0_used && y$r_buff0_thd1 ? y$w_buff0 : y$w_buff1;
tP0_0_6: IF(1,6,tP0_0_7)
                                        y$w_buff0 = weak$$choice2 ? y$w_buff0 : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$w_buff0 : y$w_buff0_used && y$r_buff0_thd1 ? y$w_buff0 : y$w_buff0;
tP0_0_7: IF(1,7,tP0_0_8)
                                        y$w_buff1 = weak$$choice2 ? y$w_buff1 : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$w_buff1 : y$w_buff0_used && y$r_buff0_thd1 ? y$w_buff1 : y$w_buff1;
tP0_0_8: IF(1,8,tP0_0_9)
                                        y$w_buff0_used = weak$$choice2 ? y$w_buff0_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$w_buff0_used : y$w_buff0_used && y$r_buff0_thd1 ? (_Bool) 0 : y$w_buff0_used;
tP0_0_9: IF(1,9,tP0_0_10)
                                        y$w_buff1_used = weak$$choice2 ? y$w_buff1_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$w_buff1_used : y$w_buff0_used && y$r_buff0_thd1 ? (_Bool) 0 : (_Bool) 0;
tP0_0_10: IF(1,10,tP0_0_11)
                                        y$r_buff0_thd1 = weak$$choice2 ? y$r_buff0_thd1 : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$r_buff0_thd1 : y$w_buff0_used && y$r_buff0_thd1 ? (_Bool) 0 : y$r_buff0_thd1;
tP0_0_11: IF(1,11,tP0_0_12)
                                        y$r_buff1_thd1 = weak$$choice2 ? y$r_buff1_thd1 : ((!y$w_buff0_used) || ((!y$r_buff0_thd1) && (!y$w_buff1_used))) || ((!y$r_buff0_thd1) && (!y$r_buff1_thd1)) ? y$r_buff1_thd1 : y$w_buff0_used && y$r_buff0_thd1 ? (_Bool) 0 : (_Bool) 0;
tP0_0_12: IF(1,12,tP0_0_13)
                                        __unbuffered_p0_EAX$read_delayed = (_Bool) 1;
tP0_0_13: IF(1,13,tP0_0_14)
                                        __unbuffered_p0_EAX$read_delayed_var = &y;
tP0_0_14: IF(1,14,tP0_0_15)
                                        __unbuffered_p0_EAX = y;
tP0_0_15: IF(1,15,tP0_0_16)
                                        y = y$flush_delayed ? y$mem_tmp : y;
tP0_0_16: IF(1,16,tP0_0_17)
                                        y$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP0_0_17: IF(1,17,tP0_0_18)
                                        __CSEQ_atomic_begin();
tP0_0_18: IF(1,18,tP0_0_19)
                                        x = 1;
                                        __CSEQ_atomic_end();
tP0_0_19: IF(1,19,tP0_0_20)
                                        __CSEQ_atomic_begin();
                                        __CSEQ_atomic_end();
tP0_0_20: IF(1,20,tP0_0_21)
                                        __CSEQ_atomic_begin();
tP0_0_21: IF(1,21,tP0_0_22)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P0;
                                        		;
                                        __exit_P0:
                                        		__CPROVER_assume(__cs_pc_cs[1] >= 22);
                                        		;
                                        		;
tP0_0_22: 
                                        STOP_NONVOID(22);
                                        }
                                        void *P2_0(void *__cs_param_P2_arg)
                                        {
IF(3,0,tP2_0_1)
                                        __CSEQ_atomic_begin();
tP2_0_1: IF(3,1,tP2_0_2)
                                        __unbuffered_p2_EAX = y;
                                        __CSEQ_atomic_end();
tP2_0_2: IF(3,2,tP2_0_3)
                                        __CSEQ_atomic_begin();
tP2_0_3: IF(3,3,tP2_0_4)
                                        z = 1;
                                        __CSEQ_atomic_end();
tP2_0_4: IF(3,4,tP2_0_5)
                                        __CSEQ_atomic_begin();
tP2_0_5: IF(3,5,tP2_0_6)
                                        z = z$w_buff0_used && z$r_buff0_thd3 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd3 ? z$w_buff1 : z;
tP2_0_6: IF(3,6,tP2_0_7)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$w_buff0_used;
tP2_0_7: IF(3,7,tP2_0_8)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$w_buff1_used;
tP2_0_8: IF(3,8,tP2_0_9)
                                        z$r_buff0_thd3 = z$w_buff0_used && z$r_buff0_thd3 ? (_Bool) 0 : z$r_buff0_thd3;
tP2_0_9: IF(3,9,tP2_0_10)
                                        z$r_buff1_thd3 = (z$w_buff0_used && z$r_buff0_thd3) || (z$w_buff1_used && z$r_buff1_thd3) ? (_Bool) 0 : z$r_buff1_thd3;
                                        __CSEQ_atomic_end();
tP2_0_10: IF(3,10,tP2_0_11)
                                        __CSEQ_atomic_begin();
tP2_0_11: IF(3,11,tP2_0_12)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P2;
                                        		;
                                        __exit_P2:
                                        		__CPROVER_assume(__cs_pc_cs[3] >= 12);
                                        		;
                                        		;
tP2_0_12: 
                                        STOP_NONVOID(12);
                                        }
                                        int main_thread(void)
                                        {
                                        		;
IF(0,0,tmain_1)
                                        __cs_create(0, 0, P0_0, 0, 1);
tmain_1: IF(0,1,tmain_2)
                                        __cs_create(0, 0, P1_0, 0, 2);
tmain_2: IF(0,2,tmain_3)
                                        __cs_create(0, 0, P2_0, 0, 3);
tmain_3: IF(0,3,tmain_4)
                                        __CSEQ_atomic_begin();
tmain_4: IF(0,4,tmain_5)
                                        main$tmp_guard0 = __unbuffered_cnt == 3;
                                        __CSEQ_atomic_end();
tmain_5: IF(0,5,tmain_6)
                                        __CPROVER_assume(main$tmp_guard0);
tmain_6: IF(0,6,tmain_7)
                                        __CSEQ_atomic_begin();
tmain_7: IF(0,7,tmain_8)
                                        y = y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd0 ? y$w_buff1 : y;
tmain_8: IF(0,8,tmain_9)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$w_buff0_used;
tmain_9: IF(0,9,tmain_10)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$w_buff1_used;
tmain_10: IF(0,10,tmain_11)
                                        y$r_buff0_thd0 = y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$r_buff0_thd0;
tmain_11: IF(0,11,tmain_12)
                                        y$r_buff1_thd0 = (y$w_buff0_used && y$r_buff0_thd0) || (y$w_buff1_used && y$r_buff1_thd0) ? (_Bool) 0 : y$r_buff1_thd0;
                                        __CSEQ_atomic_end();
tmain_12: IF(0,12,tmain_13)
                                        __CSEQ_atomic_begin();
tmain_13: IF(0,13,tmain_14)
                                        weak$$choice0 = nondet_0();
tmain_14: IF(0,14,tmain_15)
                                        weak$$choice2 = nondet_0();
tmain_15: IF(0,15,tmain_16)
                                        y$flush_delayed = weak$$choice2;
tmain_16: IF(0,16,tmain_17)
                                        y$mem_tmp = y;
tmain_17: IF(0,17,tmain_18)
                                        y = ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y : y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff0 : y$w_buff1;
tmain_18: IF(0,18,tmain_19)
                                        y$w_buff0 = weak$$choice2 ? y$w_buff0 : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$w_buff0 : y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff0 : y$w_buff0;
tmain_19: IF(0,19,tmain_20)
                                        y$w_buff1 = weak$$choice2 ? y$w_buff1 : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$w_buff1 : y$w_buff0_used && y$r_buff0_thd0 ? y$w_buff1 : y$w_buff1;
tmain_20: IF(0,20,tmain_21)
                                        y$w_buff0_used = weak$$choice2 ? y$w_buff0_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$w_buff0_used : y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$w_buff0_used;
tmain_21: IF(0,21,tmain_22)
                                        y$w_buff1_used = weak$$choice2 ? y$w_buff1_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$w_buff1_used : y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : (_Bool) 0;
tmain_22: IF(0,22,tmain_23)
                                        y$r_buff0_thd0 = weak$$choice2 ? y$r_buff0_thd0 : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$r_buff0_thd0 : y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : y$r_buff0_thd0;
tmain_23: IF(0,23,tmain_24)
                                        y$r_buff1_thd0 = weak$$choice2 ? y$r_buff1_thd0 : ((!y$w_buff0_used) || ((!y$r_buff0_thd0) && (!y$w_buff1_used))) || ((!y$r_buff0_thd0) && (!y$r_buff1_thd0)) ? y$r_buff1_thd0 : y$w_buff0_used && y$r_buff0_thd0 ? (_Bool) 0 : (_Bool) 0;
tmain_24: IF(0,24,tmain_25)
                                        weak$$choice1 = nondet_0();
tmain_25: IF(0,25,tmain_26)
                                        __unbuffered_p0_EAX = __unbuffered_p0_EAX$read_delayed ? weak$$choice1 ? *__unbuffered_p0_EAX$read_delayed_var : __unbuffered_p0_EAX : __unbuffered_p0_EAX;
tmain_26: IF(0,26,tmain_27)
                                        main$tmp_guard1 = !(((y == 2) && (__unbuffered_p0_EAX == 2)) && (__unbuffered_p1_EAX == 1));
tmain_27: IF(0,27,tmain_28)
                                        y = y$flush_delayed ? y$mem_tmp : y;
tmain_28: IF(0,28,tmain_29)
                                        y$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tmain_29: IF(0,29,tmain_30)
                                        assert(main$tmp_guard1);
                                        goto __exit_main;
                                        		;
                                        __exit_main:
                                        		__CPROVER_assume(__cs_pc_cs[0] >= 30);
                                        		;
                                        		;
tmain_30: 
                                        STOP_NONVOID(30);
                                        }
Пример #26
0
void
gen8_vec4_generator::generate_vec4_instruction(vec4_instruction *instruction,
                                               struct brw_reg dst,
                                               struct brw_reg *src)
{
   vec4_instruction *ir = (vec4_instruction *) instruction;

   if (dst.width == BRW_WIDTH_4) {
      /* This happens in attribute fixups for "dual instanced" geometry
       * shaders, since they use attributes that are vec4's.  Since the exec
       * width is only 4, it's essential that the caller set
       * force_writemask_all in order to make sure the instruction is executed
       * regardless of which channels are enabled.
       */
      assert(ir->force_writemask_all);

      /* Fix up any <8;8,1> or <0;4,1> source registers to <4;4,1> to satisfy
       * the following register region restrictions (from Graphics BSpec:
       * 3D-Media-GPGPU Engine > EU Overview > Registers and Register Regions
       * > Register Region Restrictions)
       *
       *     1. ExecSize must be greater than or equal to Width.
       *
       *     2. If ExecSize = Width and HorzStride != 0, VertStride must be set
       *        to Width * HorzStride."
       */
      for (int i = 0; i < 3; i++) {
         if (src[i].file == BRW_GENERAL_REGISTER_FILE)
            src[i] = stride(src[i], 4, 4, 1);
      }
   }

   switch (ir->opcode) {
   case BRW_OPCODE_MOV:
      MOV(dst, src[0]);
      break;

   case BRW_OPCODE_ADD:
      ADD(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_MUL:
      MUL(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_MACH:
      MACH(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_MAD:
      MAD(dst, src[0], src[1], src[2]);
      break;

   case BRW_OPCODE_FRC:
      FRC(dst, src[0]);
      break;

   case BRW_OPCODE_RNDD:
      RNDD(dst, src[0]);
      break;

   case BRW_OPCODE_RNDE:
      RNDE(dst, src[0]);
      break;

   case BRW_OPCODE_RNDZ:
      RNDZ(dst, src[0]);
      break;

   case BRW_OPCODE_AND:
      AND(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_OR:
      OR(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_XOR:
      XOR(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_NOT:
      NOT(dst, src[0]);
      break;

   case BRW_OPCODE_ASR:
      ASR(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_SHR:
      SHR(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_SHL:
      SHL(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_CMP:
      CMP(dst, ir->conditional_mod, src[0], src[1]);
      break;

   case BRW_OPCODE_SEL:
      SEL(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_DPH:
      DPH(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_DP4:
      DP4(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_DP3:
      DP3(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_DP2:
      DP2(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_F32TO16:
      /* Emulate the Gen7 zeroing bug. */
      MOV(retype(dst, BRW_REGISTER_TYPE_UD), brw_imm_ud(0u));
      MOV(retype(dst, BRW_REGISTER_TYPE_HF), src[0]);
      break;

   case BRW_OPCODE_F16TO32:
      MOV(dst, retype(src[0], BRW_REGISTER_TYPE_HF));
      break;

   case BRW_OPCODE_LRP:
      LRP(dst, src[0], src[1], src[2]);
      break;

   case BRW_OPCODE_BFREV:
      /* BFREV only supports UD type for src and dst. */
      BFREV(retype(dst, BRW_REGISTER_TYPE_UD),
            retype(src[0], BRW_REGISTER_TYPE_UD));
      break;

   case BRW_OPCODE_FBH:
      /* FBH only supports UD type for dst. */
      FBH(retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
      break;

   case BRW_OPCODE_FBL:
      /* FBL only supports UD type for dst. */
      FBL(retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
      break;

   case BRW_OPCODE_CBIT:
      /* CBIT only supports UD type for dst. */
      CBIT(retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
      break;

   case BRW_OPCODE_ADDC:
      ADDC(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_SUBB:
      SUBB(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_BFE:
      BFE(dst, src[0], src[1], src[2]);
      break;

   case BRW_OPCODE_BFI1:
      BFI1(dst, src[0], src[1]);
      break;

   case BRW_OPCODE_BFI2:
      BFI2(dst, src[0], src[1], src[2]);
      break;

   case BRW_OPCODE_IF:
      IF(ir->predicate);
      break;

   case BRW_OPCODE_ELSE:
      ELSE();
      break;

   case BRW_OPCODE_ENDIF:
      ENDIF();
      break;

   case BRW_OPCODE_DO:
      DO();
      break;

   case BRW_OPCODE_BREAK:
      BREAK();
      break;

   case BRW_OPCODE_CONTINUE:
      CONTINUE();
      break;

   case BRW_OPCODE_WHILE:
      WHILE();
      break;

   case SHADER_OPCODE_RCP:
      MATH(BRW_MATH_FUNCTION_INV, dst, src[0]);
      break;

   case SHADER_OPCODE_RSQ:
      MATH(BRW_MATH_FUNCTION_RSQ, dst, src[0]);
      break;

   case SHADER_OPCODE_SQRT:
      MATH(BRW_MATH_FUNCTION_SQRT, dst, src[0]);
      break;

   case SHADER_OPCODE_EXP2:
      MATH(BRW_MATH_FUNCTION_EXP, dst, src[0]);
      break;

   case SHADER_OPCODE_LOG2:
      MATH(BRW_MATH_FUNCTION_LOG, dst, src[0]);
      break;

   case SHADER_OPCODE_SIN:
      MATH(BRW_MATH_FUNCTION_SIN, dst, src[0]);
      break;

   case SHADER_OPCODE_COS:
      MATH(BRW_MATH_FUNCTION_COS, dst, src[0]);
      break;

   case SHADER_OPCODE_POW:
      MATH(BRW_MATH_FUNCTION_POW, dst, src[0], src[1]);
      break;

   case SHADER_OPCODE_INT_QUOTIENT:
      MATH(BRW_MATH_FUNCTION_INT_DIV_QUOTIENT, dst, src[0], src[1]);
      break;

   case SHADER_OPCODE_INT_REMAINDER:
      MATH(BRW_MATH_FUNCTION_INT_DIV_REMAINDER, dst, src[0], src[1]);
      break;

   case SHADER_OPCODE_TEX:
   case SHADER_OPCODE_TXD:
   case SHADER_OPCODE_TXF:
   case SHADER_OPCODE_TXF_CMS:
   case SHADER_OPCODE_TXF_MCS:
   case SHADER_OPCODE_TXL:
   case SHADER_OPCODE_TXS:
   case SHADER_OPCODE_TG4:
   case SHADER_OPCODE_TG4_OFFSET:
      generate_tex(ir, dst);
      break;

   case VS_OPCODE_URB_WRITE:
      generate_urb_write(ir, true);
      break;

   case SHADER_OPCODE_GEN4_SCRATCH_READ:
      generate_scratch_read(ir, dst, src[0]);
      break;

   case SHADER_OPCODE_GEN4_SCRATCH_WRITE:
      generate_scratch_write(ir, dst, src[0], src[1]);
      break;

   case VS_OPCODE_PULL_CONSTANT_LOAD:
   case VS_OPCODE_PULL_CONSTANT_LOAD_GEN7:
      generate_pull_constant_load(ir, dst, src[0], src[1]);
      break;

   case GS_OPCODE_URB_WRITE:
      generate_urb_write(ir, false);
      break;

   case GS_OPCODE_THREAD_END:
      generate_gs_thread_end(ir);
      break;

   case GS_OPCODE_SET_WRITE_OFFSET:
      generate_gs_set_write_offset(dst, src[0], src[1]);
      break;

   case GS_OPCODE_SET_VERTEX_COUNT:
      generate_gs_set_vertex_count(dst, src[0]);
      break;

   case GS_OPCODE_SET_DWORD_2_IMMED:
      generate_gs_set_dword_2_immed(dst, src[0]);
      break;

   case GS_OPCODE_PREPARE_CHANNEL_MASKS:
      generate_gs_prepare_channel_masks(dst);
      break;

   case GS_OPCODE_SET_CHANNEL_MASKS:
      generate_gs_set_channel_masks(dst, src[0]);
      break;

   case SHADER_OPCODE_SHADER_TIME_ADD:
      assert(!"XXX: Missing Gen8 vec4 support for INTEL_DEBUG=shader_time");
      break;

   case SHADER_OPCODE_UNTYPED_ATOMIC:
      generate_untyped_atomic(ir, dst, src[0], src[1]);
      break;

   case SHADER_OPCODE_UNTYPED_SURFACE_READ:
      generate_untyped_surface_read(ir, dst, src[0]);
      break;

   case VS_OPCODE_UNPACK_FLAGS_SIMD4X2:
      assert(!"VS_OPCODE_UNPACK_FLAGS_SIMD4X2 should not be used on Gen8+.");
      break;

   default:
      if (ir->opcode < (int) ARRAY_SIZE(opcode_descs)) {
         _mesa_problem(ctx, "Unsupported opcode in `%s' in VS\n",
                       opcode_descs[ir->opcode].name);
      } else {
         _mesa_problem(ctx, "Unsupported opcode %d in VS", ir->opcode);
      }
      abort();
   }
}
                                        void *P1_0(void *__cs_param_P1_arg)
                                        {
IF(2,0,tP1_0_1)
                                        __CSEQ_atomic_begin();
tP1_0_1: IF(2,1,tP1_0_2)
                                        x = 1;
                                        __CSEQ_atomic_end();
tP1_0_2: IF(2,2,tP1_0_3)
                                        __CSEQ_atomic_begin();
tP1_0_3: IF(2,3,tP1_0_4)
                                        weak$$choice0 = nondet_1();
tP1_0_4: IF(2,4,tP1_0_5)
                                        weak$$choice2 = nondet_1();
tP1_0_5: IF(2,5,tP1_0_6)
                                        y$flush_delayed = weak$$choice2;
tP1_0_6: IF(2,6,tP1_0_7)
                                        y$mem_tmp = y;
tP1_0_7: IF(2,7,tP1_0_8)
                                        y = ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y : y$w_buff0_used && y$r_buff0_thd2 ? y$w_buff0 : y$w_buff1;
tP1_0_8: IF(2,8,tP1_0_9)
                                        y$w_buff0 = weak$$choice2 ? y$w_buff0 : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$w_buff0 : y$w_buff0_used && y$r_buff0_thd2 ? y$w_buff0 : y$w_buff0;
tP1_0_9: IF(2,9,tP1_0_10)
                                        y$w_buff1 = weak$$choice2 ? y$w_buff1 : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$w_buff1 : y$w_buff0_used && y$r_buff0_thd2 ? y$w_buff1 : y$w_buff1;
tP1_0_10: IF(2,10,tP1_0_11)
                                        y$w_buff0_used = weak$$choice2 ? y$w_buff0_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$w_buff0_used : y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : y$w_buff0_used;
tP1_0_11: IF(2,11,tP1_0_12)
                                        y$w_buff1_used = weak$$choice2 ? y$w_buff1_used : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$w_buff1_used : y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_12: IF(2,12,tP1_0_13)
                                        y$r_buff0_thd2 = weak$$choice2 ? y$r_buff0_thd2 : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$r_buff0_thd2 : y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : y$r_buff0_thd2;
tP1_0_13: IF(2,13,tP1_0_14)
                                        y$r_buff1_thd2 = weak$$choice2 ? y$r_buff1_thd2 : ((!y$w_buff0_used) || ((!y$r_buff0_thd2) && (!y$w_buff1_used))) || ((!y$r_buff0_thd2) && (!y$r_buff1_thd2)) ? y$r_buff1_thd2 : y$w_buff0_used && y$r_buff0_thd2 ? (_Bool) 0 : (_Bool) 0;
tP1_0_14: IF(2,14,tP1_0_15)
                                        __unbuffered_p1_EAX = y;
tP1_0_15: IF(2,15,tP1_0_16)
                                        y = y$flush_delayed ? y$mem_tmp : y;
tP1_0_16: IF(2,16,tP1_0_17)
                                        y$flush_delayed = (_Bool) 0;
                                        __CSEQ_atomic_end();
tP1_0_17: IF(2,17,tP1_0_18)
                                        __CSEQ_atomic_begin();
                                        __CSEQ_atomic_end();
tP1_0_18: IF(2,18,tP1_0_19)
                                        __CSEQ_atomic_begin();
tP1_0_19: IF(2,19,tP1_0_20)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P1;
                                        		;
                                        __exit_P1:
                                        		__CPROVER_assume(__cs_pc_cs[2] >= 20);
                                        		;
                                        		;
tP1_0_20: 
                                        STOP_NONVOID(20);
                                        }
                                        void *P0_0(void *__cs_param_P0_arg)
                                        {
IF(1,0,tP0_0_1)
                                        __CSEQ_atomic_begin();
tP0_0_1: IF(1,1,tP0_0_2)
                                        z$w_buff1 = z$w_buff0;
tP0_0_2: IF(1,2,tP0_0_3)
                                        z$w_buff0 = 1;
tP0_0_3: IF(1,3,tP0_0_4)
                                        z$w_buff1_used = z$w_buff0_used;
tP0_0_4: IF(1,4,tP0_0_5)
                                        z$w_buff0_used = (_Bool) 1;
tP0_0_5: IF(1,5,tP0_0_6)
                                        assert(!(z$w_buff1_used && z$w_buff0_used));
tP0_0_6: IF(1,6,tP0_0_7)
                                        z$r_buff1_thd0 = z$r_buff0_thd0;
tP0_0_7: IF(1,7,tP0_0_8)
                                        z$r_buff1_thd1 = z$r_buff0_thd1;
tP0_0_8: IF(1,8,tP0_0_9)
                                        z$r_buff1_thd2 = z$r_buff0_thd2;
tP0_0_9: IF(1,9,tP0_0_10)
                                        z$r_buff1_thd3 = z$r_buff0_thd3;
tP0_0_10: IF(1,10,tP0_0_11)
                                        z$r_buff0_thd1 = (_Bool) 1;
                                        __CSEQ_atomic_end();
tP0_0_11: IF(1,11,tP0_0_12)
                                        __CSEQ_atomic_begin();
tP0_0_12: IF(1,12,tP0_0_13)
                                        __unbuffered_p0_EAX = x;
                                        __CSEQ_atomic_end();
tP0_0_13: IF(1,13,tP0_0_14)
                                        __CSEQ_atomic_begin();
tP0_0_14: IF(1,14,tP0_0_15)
                                        z = z$w_buff0_used && z$r_buff0_thd1 ? z$w_buff0 : z$w_buff1_used && z$r_buff1_thd1 ? z$w_buff1 : z;
tP0_0_15: IF(1,15,tP0_0_16)
                                        z$w_buff0_used = z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : z$w_buff0_used;
tP0_0_16: IF(1,16,tP0_0_17)
                                        z$w_buff1_used = (z$w_buff0_used && z$r_buff0_thd1) || (z$w_buff1_used && z$r_buff1_thd1) ? (_Bool) 0 : z$w_buff1_used;
tP0_0_17: IF(1,17,tP0_0_18)
                                        z$r_buff0_thd1 = z$w_buff0_used && z$r_buff0_thd1 ? (_Bool) 0 : z$r_buff0_thd1;
tP0_0_18: IF(1,18,tP0_0_19)
                                        z$r_buff1_thd1 = (z$w_buff0_used && z$r_buff0_thd1) || (z$w_buff1_used && z$r_buff1_thd1) ? (_Bool) 0 : z$r_buff1_thd1;
                                        __CSEQ_atomic_end();
tP0_0_19: IF(1,19,tP0_0_20)
                                        __CSEQ_atomic_begin();
tP0_0_20: IF(1,20,tP0_0_21)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P0;
                                        		;
                                        __exit_P0:
                                        		__CPROVER_assume(__cs_pc_cs[1] >= 21);
                                        		;
                                        		;
tP0_0_21: 
                                        STOP_NONVOID(21);
                                        }
                                        void *P3_0(void *__cs_param_P3_arg)
                                        {
IF(4,0,tP3_0_1)
                                        __CSEQ_atomic_begin();
tP3_0_1: IF(4,1,tP3_0_2)
                                        z = 1;
                                        __CSEQ_atomic_end();
tP3_0_2: IF(4,2,tP3_0_3)
                                        __CSEQ_atomic_begin();
tP3_0_3: IF(4,3,tP3_0_4)
                                        __unbuffered_p3_EAX = z;
                                        __CSEQ_atomic_end();
tP3_0_4: IF(4,4,tP3_0_5)
                                        __CSEQ_atomic_begin();
tP3_0_5: IF(4,5,tP3_0_6)
                                        __unbuffered_p3_EBX = a;
                                        __CSEQ_atomic_end();
tP3_0_6: IF(4,6,tP3_0_7)
                                        __CSEQ_atomic_begin();
tP3_0_7: IF(4,7,tP3_0_8)
                                        y = y$w_buff0_used && y$r_buff0_thd4 ? y$w_buff0 : y$w_buff1_used && y$r_buff1_thd4 ? y$w_buff1 : y;
tP3_0_8: IF(4,8,tP3_0_9)
                                        y$w_buff0_used = y$w_buff0_used && y$r_buff0_thd4 ? (_Bool) 0 : y$w_buff0_used;
tP3_0_9: IF(4,9,tP3_0_10)
                                        y$w_buff1_used = (y$w_buff0_used && y$r_buff0_thd4) || (y$w_buff1_used && y$r_buff1_thd4) ? (_Bool) 0 : y$w_buff1_used;
tP3_0_10: IF(4,10,tP3_0_11)
                                        y$r_buff0_thd4 = y$w_buff0_used && y$r_buff0_thd4 ? (_Bool) 0 : y$r_buff0_thd4;
tP3_0_11: IF(4,11,tP3_0_12)
                                        y$r_buff1_thd4 = (y$w_buff0_used && y$r_buff0_thd4) || (y$w_buff1_used && y$r_buff1_thd4) ? (_Bool) 0 : y$r_buff1_thd4;
                                        __CSEQ_atomic_end();
tP3_0_12: IF(4,12,tP3_0_13)
                                        __CSEQ_atomic_begin();
tP3_0_13: IF(4,13,tP3_0_14)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P3;
                                        		;
                                        __exit_P3:
                                        		__CPROVER_assume(__cs_pc_cs[4] >= 14);
                                        		;
                                        		;
tP3_0_14: 
                                        STOP_NONVOID(14);
                                        }
                                        void *P0_0(void *__cs_param_P0_arg)
                                        {
IF(1,0,tP0_0_1)
                                        __CSEQ_atomic_begin();
tP0_0_1: IF(1,1,tP0_0_2)
                                        z = 1;
                                        __CSEQ_atomic_end();
tP0_0_2: IF(1,2,tP0_0_3)
                                        __CSEQ_atomic_begin();
tP0_0_3: IF(1,3,tP0_0_4)
                                        x = 1;
                                        __CSEQ_atomic_end();
tP0_0_4: IF(1,4,tP0_0_5)
                                        __CSEQ_atomic_begin();
tP0_0_5: IF(1,5,tP0_0_6)
                                        x = x$w_buff0_used && x$r_buff0_thd1 ? x$w_buff0 : x$w_buff1_used && x$r_buff1_thd1 ? x$w_buff1 : x;
tP0_0_6: IF(1,6,tP0_0_7)
                                        x$w_buff0_used = x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : x$w_buff0_used;
tP0_0_7: IF(1,7,tP0_0_8)
                                        x$w_buff1_used = (x$w_buff0_used && x$r_buff0_thd1) || (x$w_buff1_used && x$r_buff1_thd1) ? (_Bool) 0 : x$w_buff1_used;
tP0_0_8: IF(1,8,tP0_0_9)
                                        x$r_buff0_thd1 = x$w_buff0_used && x$r_buff0_thd1 ? (_Bool) 0 : x$r_buff0_thd1;
tP0_0_9: IF(1,9,tP0_0_10)
                                        x$r_buff1_thd1 = (x$w_buff0_used && x$r_buff0_thd1) || (x$w_buff1_used && x$r_buff1_thd1) ? (_Bool) 0 : x$r_buff1_thd1;
                                        __CSEQ_atomic_end();
tP0_0_10: IF(1,10,tP0_0_11)
                                        __CSEQ_atomic_begin();
tP0_0_11: IF(1,11,tP0_0_12)
                                        __unbuffered_cnt = __unbuffered_cnt + 1;
                                        __CSEQ_atomic_end();
                                        goto __exit_P0;
                                        		;
                                        __exit_P0:
                                        		__CPROVER_assume(__cs_pc_cs[1] >= 12);
                                        		;
                                        		;
tP0_0_12: 
                                        STOP_NONVOID(12);
                                        }