vQueueWaitForMessageRestricted (struct QueueDefinition * xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) { struct Queue_t * const pxQueue; : pxQueue = xQueue; vPortEnterCritical (); _1 = pxQueue->cRxLock; if (_1 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = 0; : _2 = pxQueue->cTxLock; if (_2 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = 0; : vPortExitCritical (); _3 = pxQueue->uxMessagesWaiting; if (_3 == 0) goto ; [INV] else goto ; [INV] : _4 = &pxQueue->xTasksWaitingToReceive; vTaskPlaceOnEventListRestricted (_4, xTicksToWait, xWaitIndefinitely); : prvUnlockQueue (pxQueue); return; } vQueueUnregisterQueue (struct QueueDefinition * xQueue) { UBaseType_t ux; : if (xQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : ux = 0; goto ; [INV] : _1 = xQueueRegistry[ux].xHandle; if (xQueue == _1) goto ; [INV] else goto ; [INV] : xQueueRegistry[ux].pcQueueName = 0B; xQueueRegistry[ux].xHandle = 0B; goto ; [INV] : ux = ux + 1; : if (ux <= 1) goto ; [INV] else goto ; [INV] : return; } pcQueueGetName (struct QueueDefinition * xQueue) { const char * pcReturn; UBaseType_t ux; const char * D.7264; : pcReturn = 0B; if (xQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : ux = 0; goto ; [INV] : _1 = xQueueRegistry[ux].xHandle; if (xQueue == _1) goto ; [INV] else goto ; [INV] : pcReturn = xQueueRegistry[ux].pcQueueName; goto ; [INV] : ux = ux + 1; : if (ux <= 1) goto ; [INV] else goto ; [INV] : D.7264 = pcReturn; : : return D.7264; } vQueueAddToRegistry (struct QueueDefinition * xQueue, const char * pcQueueName) { struct QueueRegistryItem_t * pxEntryToWrite; UBaseType_t ux; : if (xQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxEntryToWrite = 0B; if (pcQueueName != 0B) goto ; [INV] else goto ; [INV] : ux = 0; goto ; [INV] : _1 = xQueueRegistry[ux].xHandle; if (xQueue == _1) goto ; [INV] else goto ; [INV] : pxEntryToWrite = &xQueueRegistry[ux]; goto ; [INV] : if (pxEntryToWrite == 0B) goto ; [INV] else goto ; [INV] : _2 = xQueueRegistry[ux].pcQueueName; if (_2 == 0B) goto ; [INV] else goto ; [INV] : pxEntryToWrite = &xQueueRegistry[ux]; : ux = ux + 1; : if (ux <= 1) goto ; [INV] else goto ; [INV] : if (pxEntryToWrite != 0B) goto ; [INV] else goto ; [INV] : pxEntryToWrite->pcQueueName = pcQueueName; pxEntryToWrite->xHandle = xQueue; : return; } xQueueIsQueueFullFromISR (struct QueueDefinition * const xQueue) { struct Queue_t * const pxQueue; BaseType_t xReturn; BaseType_t D.7245; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxQueue->uxMessagesWaiting; _2 = pxQueue->uxLength; if (_1 == _2) goto ; [INV] else goto ; [INV] : xReturn = 1; goto ; [INV] : xReturn = 0; : D.7245 = xReturn; : : return D.7245; } prvIsQueueFull (const struct Queue_t * pxQueue) { BaseType_t xReturn; BaseType_t D.7238; : vPortEnterCritical (); _1 = pxQueue->uxMessagesWaiting; _2 = pxQueue->uxLength; if (_1 == _2) goto ; [INV] else goto ; [INV] : xReturn = 1; goto ; [INV] : xReturn = 0; : vPortExitCritical (); D.7238 = xReturn; : : return D.7238; } xQueueIsQueueEmptyFromISR (struct QueueDefinition * const xQueue) { struct Queue_t * const pxQueue; BaseType_t xReturn; BaseType_t D.7233; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxQueue->uxMessagesWaiting; if (_1 == 0) goto ; [INV] else goto ; [INV] : xReturn = 1; goto ; [INV] : xReturn = 0; : D.7233 = xReturn; : : return D.7233; } prvIsQueueEmpty (const struct Queue_t * pxQueue) { BaseType_t xReturn; BaseType_t D.7226; : vPortEnterCritical (); _1 = pxQueue->uxMessagesWaiting; if (_1 == 0) goto ; [INV] else goto ; [INV] : xReturn = 1; goto ; [INV] : xReturn = 0; : vPortExitCritical (); D.7226 = xReturn; : : return D.7226; } prvUnlockQueue (struct Queue_t * const pxQueue) { int8_t cRxLock; int8_t cTxLock; : vPortEnterCritical (); cTxLock = pxQueue->cTxLock; goto ; [INV] : _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_1 != 0) goto ; [INV] else goto ; [INV] : _2 = &pxQueue->xTasksWaitingToReceive; _3 = xTaskRemoveFromEventList (_2); if (_3 != 0) goto ; [INV] else goto ; [INV] : vTaskMissedYield (); goto ; [INV] : goto ; [INV] : cTxLock.28_4 = (unsigned char) cTxLock; _5 = cTxLock.28_4 + 255; cTxLock = (int8_t) _5; : if (cTxLock > 0) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = -1; vPortExitCritical (); vPortEnterCritical (); cRxLock = pxQueue->cRxLock; goto ; [INV] : _6 = pxQueue->xTasksWaitingToSend.uxNumberOfItems; if (_6 != 0) goto ; [INV] else goto ; [INV] : _7 = &pxQueue->xTasksWaitingToSend; _8 = xTaskRemoveFromEventList (_7); if (_8 != 0) goto ; [INV] else goto ; [INV] : vTaskMissedYield (); : cRxLock.29_9 = (unsigned char) cRxLock; _10 = cRxLock.29_9 + 255; cRxLock = (int8_t) _10; goto ; [INV] : goto ; [INV] : if (cRxLock > 0) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = -1; vPortExitCritical (); return; } prvCopyDataFromQueue (struct Queue_t * const pxQueue, void * const pvBuffer) { : _1 = pxQueue->uxItemSize; if (_1 != 0) goto ; [INV] else goto ; [INV] : _2 = pxQueue->u.xQueue.pcReadFrom; _3 = pxQueue->uxItemSize; _4 = _2 + _3; pxQueue->u.xQueue.pcReadFrom = _4; _5 = pxQueue->u.xQueue.pcReadFrom; _6 = pxQueue->u.xQueue.pcTail; if (_5 >= _6) goto ; [INV] else goto ; [INV] : _7 = pxQueue->pcHead; pxQueue->u.xQueue.pcReadFrom = _7; : _8 = pxQueue->u.xQueue.pcReadFrom; _9 = pxQueue->uxItemSize; memcpy (pvBuffer, _8, _9); : return; } prvCopyDataToQueue (struct Queue_t * const pxQueue, const void * pvItemToQueue, const BaseType_t xPosition) { UBaseType_t uxMessagesWaiting; BaseType_t xReturn; BaseType_t D.7204; : xReturn = 0; uxMessagesWaiting = pxQueue->uxMessagesWaiting; _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : _2 = pxQueue->pcHead; if (_2 == 0B) goto ; [INV] else goto ; [INV] : _3 = pxQueue->u.xSemaphore.xMutexHolder; xReturn = xTaskPriorityDisinherit (_3); pxQueue->u.xSemaphore.xMutexHolder = 0B; goto ; [INV] : if (xPosition == 0) goto ; [INV] else goto ; [INV] : _4 = pxQueue->pcWriteTo; _5 = pxQueue->uxItemSize; memcpy (_4, pvItemToQueue, _5); _6 = pxQueue->pcWriteTo; _7 = pxQueue->uxItemSize; _8 = _6 + _7; pxQueue->pcWriteTo = _8; _9 = pxQueue->pcWriteTo; _10 = pxQueue->u.xQueue.pcTail; if (_9 >= _10) goto ; [INV] else goto ; [INV] : _11 = pxQueue->pcHead; pxQueue->pcWriteTo = _11; goto ; [INV] : _12 = pxQueue->u.xQueue.pcReadFrom; _13 = pxQueue->uxItemSize; memcpy (_12, pvItemToQueue, _13); _14 = pxQueue->u.xQueue.pcReadFrom; _15 = pxQueue->uxItemSize; _16 = -_15; _17 = _14 + _16; pxQueue->u.xQueue.pcReadFrom = _17; _18 = pxQueue->u.xQueue.pcReadFrom; _19 = pxQueue->pcHead; if (_18 < _19) goto ; [INV] else goto ; [INV] : _20 = pxQueue->u.xQueue.pcTail; _21 = pxQueue->uxItemSize; _22 = -_21; _23 = _20 + _22; pxQueue->u.xQueue.pcReadFrom = _23; : if (xPosition == 2) goto ; [INV] else goto ; [INV] : if (uxMessagesWaiting != 0) goto ; [INV] else goto ; [INV] : uxMessagesWaiting = uxMessagesWaiting + 4294967295; : _24 = uxMessagesWaiting + 1; pxQueue->uxMessagesWaiting = _24; D.7204 = xReturn; : : return D.7204; } prvGetDisinheritPriorityAfterTimeout (const struct Queue_t * const pxQueue) { UBaseType_t uxHighestPriorityOfWaitingTasks; UBaseType_t D.7181; : _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_1 != 0) goto ; [INV] else goto ; [INV] : _2 = pxQueue->xTasksWaitingToReceive.xListEnd.pxNext; _3 = _2->xItemValue; uxHighestPriorityOfWaitingTasks = 5 - _3; goto ; [INV] : uxHighestPriorityOfWaitingTasks = 0; : D.7181 = uxHighestPriorityOfWaitingTasks; : : return D.7181; } ucQueueGetQueueType (struct QueueDefinition * xQueue) { uint8_t D.7176; : D.7176 = MEM[(struct Queue_t *)xQueue].ucQueueType; : : return D.7176; } vQueueSetQueueNumber (struct QueueDefinition * xQueue, UBaseType_t uxQueueNumber) { : MEM[(struct Queue_t *)xQueue].uxQueueNumber = uxQueueNumber; return; } uxQueueGetQueueNumber (struct QueueDefinition * xQueue) { UBaseType_t D.7174; : D.7174 = MEM[(struct Queue_t *)xQueue].uxQueueNumber; : : return D.7174; } vQueueDelete (struct QueueDefinition * xQueue) { struct Queue_t * const pxQueue; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vQueueUnregisterQueue (pxQueue); vPortFree (pxQueue); return; } uxQueueMessagesWaitingFromISR (struct QueueDefinition * const xQueue) { struct Queue_t * const pxQueue; UBaseType_t uxReturn; UBaseType_t D.7170; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxReturn = pxQueue->uxMessagesWaiting; D.7170 = uxReturn; : : return D.7170; } uxQueueSpacesAvailable (struct QueueDefinition * const xQueue) { struct Queue_t * const pxQueue; UBaseType_t uxReturn; UBaseType_t D.7166; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); _1 = pxQueue->uxLength; _2 = pxQueue->uxMessagesWaiting; uxReturn = _1 - _2; vPortExitCritical (); D.7166 = uxReturn; : : return D.7166; } uxQueueMessagesWaiting (struct QueueDefinition * const xQueue) { UBaseType_t uxReturn; UBaseType_t D.7162; : if (xQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); uxReturn = MEM[(struct Queue_t *)xQueue].uxMessagesWaiting; vPortExitCritical (); D.7162 = uxReturn; : : return D.7162; } xQueuePeekFromISR (struct QueueDefinition * xQueue, void * const pvBuffer) { struct Queue_t * const pxQueue; int8_t * pcOriginalReadPosition; UBaseType_t uxSavedInterruptStatus; BaseType_t xReturn; BaseType_t D.7158; int iftmp.27; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvBuffer != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.27 = 1; goto ; [INV] : iftmp.27 = 0; : if (iftmp.27 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = pxQueue->uxItemSize; if (_2 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); uxSavedInterruptStatus = ulPortRaiseBASEPRI (); _3 = pxQueue->uxMessagesWaiting; if (_3 != 0) goto ; [INV] else goto ; [INV] : pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; prvCopyDataFromQueue (pxQueue, pvBuffer); pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; xReturn = 1; goto ; [INV] : xReturn = 0; : vPortSetBASEPRI (uxSavedInterruptStatus); D.7158 = xReturn; : : return D.7158; } xQueueReceiveFromISR (struct QueueDefinition * xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken) { const int8_t cRxLock; const UBaseType_t uxMessagesWaiting; struct Queue_t * const pxQueue; UBaseType_t uxSavedInterruptStatus; BaseType_t xReturn; BaseType_t D.7142; int iftmp.25; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvBuffer != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.25 = 1; goto ; [INV] : iftmp.25 = 0; : if (iftmp.25 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); uxSavedInterruptStatus = ulPortRaiseBASEPRI (); uxMessagesWaiting = pxQueue->uxMessagesWaiting; if (uxMessagesWaiting != 0) goto ; [INV] else goto ; [INV] : cRxLock = pxQueue->cRxLock; prvCopyDataFromQueue (pxQueue, pvBuffer); _2 = uxMessagesWaiting + 4294967295; pxQueue->uxMessagesWaiting = _2; if (cRxLock == -1) goto ; [INV] else goto ; [INV] : _3 = pxQueue->xTasksWaitingToSend.uxNumberOfItems; if (_3 != 0) goto ; [INV] else goto ; [INV] : _4 = &pxQueue->xTasksWaitingToSend; _5 = xTaskRemoveFromEventList (_4); if (_5 != 0) goto ; [INV] else goto ; [INV] : if (pxHigherPriorityTaskWoken != 0B) goto ; [INV] else goto ; [INV] : *pxHigherPriorityTaskWoken = 1; goto ; [INV] : if (cRxLock == 127) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : cRxLock.26_6 = (unsigned char) cRxLock; _7 = cRxLock.26_6 + 1; _8 = (signed char) _7; pxQueue->cRxLock = _8; : xReturn = 1; goto ; [INV] : xReturn = 0; : vPortSetBASEPRI (uxSavedInterruptStatus); D.7142 = xReturn; : : return D.7142; } xQueuePeek (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait) { const UBaseType_t uxMessagesWaiting; struct Queue_t * const pxQueue; int8_t * pcOriginalReadPosition; struct TimeOut_t xTimeOut; BaseType_t xEntryTimeSet; BaseType_t D.7093; int iftmp.21; int iftmp.20; : xEntryTimeSet = 0; pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvBuffer != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.20 = 1; goto ; [INV] : iftmp.20 = 0; : if (iftmp.20 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = xTaskGetSchedulerState (); if (_2 != 0) goto ; [INV] else goto ; [INV] : xTicksToWait.22_3 = xTicksToWait; if (xTicksToWait.22_3 == 0) goto ; [INV] else goto ; [INV] : iftmp.21 = 1; goto ; [INV] : iftmp.21 = 0; : if (iftmp.21 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); uxMessagesWaiting = pxQueue->uxMessagesWaiting; if (uxMessagesWaiting != 0) goto ; [INV] else goto ; [INV] : pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; prvCopyDataFromQueue (pxQueue, pvBuffer); pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; _4 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_4 != 0) goto ; [INV] else goto ; [INV] : _5 = &pxQueue->xTasksWaitingToReceive; _6 = xTaskRemoveFromEventList (_5); if (_6 != 0) goto ; [INV] else goto ; [INV] : _7 = 3758157060B; *_7 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.7093 = 1; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : xTicksToWait.23_8 = xTicksToWait; if (xTicksToWait.23_8 == 0) goto ; [INV] else goto ; [INV] : vPortExitCritical (); D.7093 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : if (xEntryTimeSet == 0) goto ; [INV] else goto ; [INV] : vTaskInternalSetTimeOutState (&xTimeOut); xEntryTimeSet = 1; : vPortExitCritical (); vTaskSuspendAll (); vPortEnterCritical (); _9 = pxQueue->cRxLock; if (_9 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = 0; : _10 = pxQueue->cTxLock; if (_10 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = 0; : vPortExitCritical (); _11 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait); if (_11 == 0) goto ; [INV] else goto ; [INV] : _12 = prvIsQueueEmpty (pxQueue); if (_12 != 0) goto ; [INV] else goto ; [INV] : _13 = &pxQueue->xTasksWaitingToReceive; xTicksToWait.24_14 = xTicksToWait; vTaskPlaceOnEventList (_13, xTicksToWait.24_14); prvUnlockQueue (pxQueue); _15 = xTaskResumeAll (); if (_15 == 0) goto ; [INV] else goto ; [INV] : _16 = 3758157060B; *_16 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); _17 = prvIsQueueEmpty (pxQueue); if (_17 != 0) goto ; [INV] else goto ; [INV] : D.7093 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : goto ; [INV] : xTimeOut = {CLOBBER}; : : return D.7093; } xQueueSemaphoreTake (struct QueueDefinition * xQueue, TickType_t xTicksToWait) { UBaseType_t uxHighestWaitingPriority; const UBaseType_t uxSemaphoreCount; BaseType_t xInheritanceOccurred; struct Queue_t * const pxQueue; struct TimeOut_t xTimeOut; BaseType_t xEntryTimeSet; BaseType_t D.7039; int iftmp.16; : xEntryTimeSet = 0; pxQueue = xQueue; xInheritanceOccurred = 0; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = xTaskGetSchedulerState (); if (_2 != 0) goto ; [INV] else goto ; [INV] : xTicksToWait.17_3 = xTicksToWait; if (xTicksToWait.17_3 == 0) goto ; [INV] else goto ; [INV] : iftmp.16 = 1; goto ; [INV] : iftmp.16 = 0; : if (iftmp.16 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); uxSemaphoreCount = pxQueue->uxMessagesWaiting; if (uxSemaphoreCount != 0) goto ; [INV] else goto ; [INV] : _4 = uxSemaphoreCount + 4294967295; pxQueue->uxMessagesWaiting = _4; _5 = pxQueue->pcHead; if (_5 == 0B) goto ; [INV] else goto ; [INV] : _6 = pvTaskIncrementMutexHeldCount (); pxQueue->u.xSemaphore.xMutexHolder = _6; : _7 = pxQueue->xTasksWaitingToSend.uxNumberOfItems; if (_7 != 0) goto ; [INV] else goto ; [INV] : _8 = &pxQueue->xTasksWaitingToSend; _9 = xTaskRemoveFromEventList (_8); if (_9 != 0) goto ; [INV] else goto ; [INV] : _10 = 3758157060B; *_10 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.7039 = 1; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : xTicksToWait.18_11 = xTicksToWait; if (xTicksToWait.18_11 == 0) goto ; [INV] else goto ; [INV] : if (xInheritanceOccurred != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortExitCritical (); D.7039 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : if (xEntryTimeSet == 0) goto ; [INV] else goto ; [INV] : vTaskInternalSetTimeOutState (&xTimeOut); xEntryTimeSet = 1; : vPortExitCritical (); vTaskSuspendAll (); vPortEnterCritical (); _12 = pxQueue->cRxLock; if (_12 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = 0; : _13 = pxQueue->cTxLock; if (_13 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = 0; : vPortExitCritical (); _14 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait); if (_14 == 0) goto ; [INV] else goto ; [INV] : _15 = prvIsQueueEmpty (pxQueue); if (_15 != 0) goto ; [INV] else goto ; [INV] : _16 = pxQueue->pcHead; if (_16 == 0B) goto ; [INV] else goto ; [INV] : vPortEnterCritical (); _17 = pxQueue->u.xSemaphore.xMutexHolder; xInheritanceOccurred = xTaskPriorityInherit (_17); vPortExitCritical (); : _18 = &pxQueue->xTasksWaitingToReceive; xTicksToWait.19_19 = xTicksToWait; vTaskPlaceOnEventList (_18, xTicksToWait.19_19); prvUnlockQueue (pxQueue); _20 = xTaskResumeAll (); if (_20 == 0) goto ; [INV] else goto ; [INV] : _21 = 3758157060B; *_21 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); _22 = prvIsQueueEmpty (pxQueue); if (_22 != 0) goto ; [INV] else goto ; [INV] : if (xInheritanceOccurred != 0) goto ; [INV] else goto ; [INV] : vPortEnterCritical (); uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout (pxQueue); _23 = pxQueue->u.xSemaphore.xMutexHolder; vTaskPriorityDisinheritAfterTimeout (_23, uxHighestWaitingPriority); vPortExitCritical (); : D.7039 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : goto ; [INV] : xTimeOut = {CLOBBER}; : : return D.7039; } xQueueReceive (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait) { const UBaseType_t uxMessagesWaiting; struct Queue_t * const pxQueue; struct TimeOut_t xTimeOut; BaseType_t xEntryTimeSet; BaseType_t D.6994; int iftmp.12; int iftmp.11; : xEntryTimeSet = 0; pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvBuffer != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.11 = 1; goto ; [INV] : iftmp.11 = 0; : if (iftmp.11 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = xTaskGetSchedulerState (); if (_2 != 0) goto ; [INV] else goto ; [INV] : xTicksToWait.13_3 = xTicksToWait; if (xTicksToWait.13_3 == 0) goto ; [INV] else goto ; [INV] : iftmp.12 = 1; goto ; [INV] : iftmp.12 = 0; : if (iftmp.12 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); uxMessagesWaiting = pxQueue->uxMessagesWaiting; if (uxMessagesWaiting != 0) goto ; [INV] else goto ; [INV] : prvCopyDataFromQueue (pxQueue, pvBuffer); _4 = uxMessagesWaiting + 4294967295; pxQueue->uxMessagesWaiting = _4; _5 = pxQueue->xTasksWaitingToSend.uxNumberOfItems; if (_5 != 0) goto ; [INV] else goto ; [INV] : _6 = &pxQueue->xTasksWaitingToSend; _7 = xTaskRemoveFromEventList (_6); if (_7 != 0) goto ; [INV] else goto ; [INV] : _8 = 3758157060B; *_8 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.6994 = 1; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : xTicksToWait.14_9 = xTicksToWait; if (xTicksToWait.14_9 == 0) goto ; [INV] else goto ; [INV] : vPortExitCritical (); D.6994 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : if (xEntryTimeSet == 0) goto ; [INV] else goto ; [INV] : vTaskInternalSetTimeOutState (&xTimeOut); xEntryTimeSet = 1; : vPortExitCritical (); vTaskSuspendAll (); vPortEnterCritical (); _10 = pxQueue->cRxLock; if (_10 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = 0; : _11 = pxQueue->cTxLock; if (_11 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = 0; : vPortExitCritical (); _12 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait); if (_12 == 0) goto ; [INV] else goto ; [INV] : _13 = prvIsQueueEmpty (pxQueue); if (_13 != 0) goto ; [INV] else goto ; [INV] : _14 = &pxQueue->xTasksWaitingToReceive; xTicksToWait.15_15 = xTicksToWait; vTaskPlaceOnEventList (_14, xTicksToWait.15_15); prvUnlockQueue (pxQueue); _16 = xTaskResumeAll (); if (_16 == 0) goto ; [INV] else goto ; [INV] : _17 = 3758157060B; *_17 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); _18 = prvIsQueueEmpty (pxQueue); if (_18 != 0) goto ; [INV] else goto ; [INV] : D.6994 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : goto ; [INV] : xTimeOut = {CLOBBER}; : : return D.6994; } xQueueGiveFromISR (struct QueueDefinition * xQueue, BaseType_t * const pxHigherPriorityTaskWoken) { const int8_t cTxLock; const UBaseType_t uxMessagesWaiting; struct Queue_t * const pxQueue; UBaseType_t uxSavedInterruptStatus; BaseType_t xReturn; BaseType_t D.6968; int iftmp.9; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = pxQueue->pcHead; if (_2 != 0B) goto ; [INV] else goto ; [INV] : _3 = pxQueue->u.xSemaphore.xMutexHolder; if (_3 == 0B) goto ; [INV] else goto ; [INV] : iftmp.9 = 1; goto ; [INV] : iftmp.9 = 0; : if (iftmp.9 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); uxSavedInterruptStatus = ulPortRaiseBASEPRI (); uxMessagesWaiting = pxQueue->uxMessagesWaiting; _4 = pxQueue->uxLength; if (uxMessagesWaiting < _4) goto ; [INV] else goto ; [INV] : cTxLock = pxQueue->cTxLock; _5 = uxMessagesWaiting + 1; pxQueue->uxMessagesWaiting = _5; if (cTxLock == -1) goto ; [INV] else goto ; [INV] : _6 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_6 != 0) goto ; [INV] else goto ; [INV] : _7 = &pxQueue->xTasksWaitingToReceive; _8 = xTaskRemoveFromEventList (_7); if (_8 != 0) goto ; [INV] else goto ; [INV] : if (pxHigherPriorityTaskWoken != 0B) goto ; [INV] else goto ; [INV] : *pxHigherPriorityTaskWoken = 1; goto ; [INV] : if (cTxLock == 127) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : cTxLock.10_9 = (unsigned char) cTxLock; _10 = cTxLock.10_9 + 1; _11 = (signed char) _10; pxQueue->cTxLock = _11; : xReturn = 1; goto ; [INV] : xReturn = 0; : vPortSetBASEPRI (uxSavedInterruptStatus); D.6968 = xReturn; : : return D.6968; } xQueueGenericSendFromISR (struct QueueDefinition * xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition) { const UBaseType_t uxPreviousMessagesWaiting; const int8_t cTxLock; struct Queue_t * const pxQueue; UBaseType_t uxSavedInterruptStatus; BaseType_t xReturn; BaseType_t D.6936; int iftmp.7; int iftmp.6; : pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvItemToQueue != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.6 = 1; goto ; [INV] : iftmp.6 = 0; : if (iftmp.6 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (xCopyPosition != 2) goto ; [INV] else goto ; [INV] : _2 = pxQueue->uxLength; if (_2 == 1) goto ; [INV] else goto ; [INV] : iftmp.7 = 1; goto ; [INV] : iftmp.7 = 0; : if (iftmp.7 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); uxSavedInterruptStatus = ulPortRaiseBASEPRI (); _3 = pxQueue->uxMessagesWaiting; _4 = pxQueue->uxLength; if (_3 < _4) goto ; [INV] else goto ; [INV] : if (xCopyPosition == 2) goto ; [INV] else goto ; [INV] : cTxLock = pxQueue->cTxLock; uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition); if (cTxLock == -1) goto ; [INV] else goto ; [INV] : _5 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_5 != 0) goto ; [INV] else goto ; [INV] : _6 = &pxQueue->xTasksWaitingToReceive; _7 = xTaskRemoveFromEventList (_6); if (_7 != 0) goto ; [INV] else goto ; [INV] : if (pxHigherPriorityTaskWoken != 0B) goto ; [INV] else goto ; [INV] : *pxHigherPriorityTaskWoken = 1; goto ; [INV] : if (cTxLock == 127) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : cTxLock.8_8 = (unsigned char) cTxLock; _9 = cTxLock.8_8 + 1; _10 = (signed char) _9; pxQueue->cTxLock = _10; : xReturn = 1; goto ; [INV] : xReturn = 0; : vPortSetBASEPRI (uxSavedInterruptStatus); D.6936 = xReturn; : : return D.6936; } xQueueGenericSend (struct QueueDefinition * xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition) { struct Queue_t * const pxQueue; struct TimeOut_t xTimeOut; BaseType_t xYieldRequired; BaseType_t xEntryTimeSet; BaseType_t D.6882; int iftmp.2; int iftmp.1; int iftmp.0; : xEntryTimeSet = 0; pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pvItemToQueue != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxItemSize; if (_1 == 0) goto ; [INV] else goto ; [INV] : iftmp.0 = 1; goto ; [INV] : iftmp.0 = 0; : if (iftmp.0 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (xCopyPosition != 2) goto ; [INV] else goto ; [INV] : _2 = pxQueue->uxLength; if (_2 == 1) goto ; [INV] else goto ; [INV] : iftmp.1 = 1; goto ; [INV] : iftmp.1 = 0; : if (iftmp.1 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _3 = xTaskGetSchedulerState (); if (_3 != 0) goto ; [INV] else goto ; [INV] : xTicksToWait.3_4 = xTicksToWait; if (xTicksToWait.3_4 == 0) goto ; [INV] else goto ; [INV] : iftmp.2 = 1; goto ; [INV] : iftmp.2 = 0; : if (iftmp.2 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); _5 = pxQueue->uxMessagesWaiting; _6 = pxQueue->uxLength; if (_5 < _6) goto ; [INV] else goto ; [INV] : if (xCopyPosition == 2) goto ; [INV] else goto ; [INV] : xYieldRequired = prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition); _7 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems; if (_7 != 0) goto ; [INV] else goto ; [INV] : _8 = &pxQueue->xTasksWaitingToReceive; _9 = xTaskRemoveFromEventList (_8); if (_9 != 0) goto ; [INV] else goto ; [INV] : _10 = 3758157060B; *_10 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : if (xYieldRequired != 0) goto ; [INV] else goto ; [INV] : _11 = 3758157060B; *_11 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.6882 = 1; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : xTicksToWait.4_12 = xTicksToWait; if (xTicksToWait.4_12 == 0) goto ; [INV] else goto ; [INV] : vPortExitCritical (); D.6882 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : if (xEntryTimeSet == 0) goto ; [INV] else goto ; [INV] : vTaskInternalSetTimeOutState (&xTimeOut); xEntryTimeSet = 1; : vPortExitCritical (); vTaskSuspendAll (); vPortEnterCritical (); _13 = pxQueue->cRxLock; if (_13 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cRxLock = 0; : _14 = pxQueue->cTxLock; if (_14 == -1) goto ; [INV] else goto ; [INV] : pxQueue->cTxLock = 0; : vPortExitCritical (); _15 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait); if (_15 == 0) goto ; [INV] else goto ; [INV] : _16 = prvIsQueueFull (pxQueue); if (_16 != 0) goto ; [INV] else goto ; [INV] : _17 = &pxQueue->xTasksWaitingToSend; xTicksToWait.5_18 = xTicksToWait; vTaskPlaceOnEventList (_17, xTicksToWait.5_18); prvUnlockQueue (pxQueue); _19 = xTaskResumeAll (); if (_19 == 0) goto ; [INV] else goto ; [INV] : _20 = 3758157060B; *_20 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); goto ; [INV] : prvUnlockQueue (pxQueue); xTaskResumeAll (); D.6882 = 0; // predicted unlikely by early return (on trees) predictor. goto ; [INV] : goto ; [INV] : xTimeOut = {CLOBBER}; : : return D.6882; } xQueueCreateCountingSemaphore (const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount) { struct QueueDefinition * xHandle; struct QueueDefinition * D.6845; : xHandle = 0B; if (uxMaxCount != 0) goto ; [INV] else goto ; [INV] : if (uxInitialCount <= uxMaxCount) goto ; [INV] else goto ; [INV] : xHandle = xQueueGenericCreate (uxMaxCount, 0, 2); if (xHandle != 0B) goto ; [INV] else goto ; [INV] : MEM[(struct Queue_t *)xHandle].uxMessagesWaiting = uxInitialCount; : goto ; [INV] : if (xHandle == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : D.6845 = xHandle; : : return D.6845; } xQueueTakeMutexRecursive (struct QueueDefinition * xMutex, TickType_t xTicksToWait) { struct Queue_t * const pxMutex; BaseType_t xReturn; BaseType_t D.6834; : pxMutex = xMutex; if (pxMutex == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxMutex->u.xSemaphore.xMutexHolder; _2 = xTaskGetCurrentTaskHandle (); if (_1 == _2) goto ; [INV] else goto ; [INV] : _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount; _4 = _3 + 1; pxMutex->u.xSemaphore.uxRecursiveCallCount = _4; xReturn = 1; goto ; [INV] : xReturn = xQueueSemaphoreTake (pxMutex, xTicksToWait); if (xReturn != 0) goto ; [INV] else goto ; [INV] : _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount; _6 = _5 + 1; pxMutex->u.xSemaphore.uxRecursiveCallCount = _6; : D.6834 = xReturn; : : return D.6834; } xQueueGiveMutexRecursive (struct QueueDefinition * xMutex) { struct Queue_t * const pxMutex; BaseType_t xReturn; BaseType_t D.6824; : pxMutex = xMutex; if (pxMutex == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxMutex->u.xSemaphore.xMutexHolder; _2 = xTaskGetCurrentTaskHandle (); if (_1 == _2) goto ; [INV] else goto ; [INV] : _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount; _4 = _3 + 4294967295; pxMutex->u.xSemaphore.uxRecursiveCallCount = _4; _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount; if (_5 == 0) goto ; [INV] else goto ; [INV] : xQueueGenericSend (pxMutex, 0B, 0, 0); : xReturn = 1; goto ; [INV] : xReturn = 0; : D.6824 = xReturn; : : return D.6824; } xQueueGetMutexHolderFromISR (struct QueueDefinition * xSemaphore) { struct tskTaskControlBlock * pxReturn; struct tskTaskControlBlock * D.6814; : if (xSemaphore == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = MEM[(struct Queue_t *)xSemaphore].pcHead; if (_1 == 0B) goto ; [INV] else goto ; [INV] : pxReturn = MEM[(struct Queue_t *)xSemaphore].u.xSemaphore.xMutexHolder; goto ; [INV] : pxReturn = 0B; : D.6814 = pxReturn; : : return D.6814; } xQueueGetMutexHolder (struct QueueDefinition * xSemaphore) { struct Queue_t * const pxSemaphore; struct tskTaskControlBlock * pxReturn; struct tskTaskControlBlock * D.6807; : pxSemaphore = xSemaphore; if (xSemaphore == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); _1 = pxSemaphore->pcHead; if (_1 == 0B) goto ; [INV] else goto ; [INV] : pxReturn = pxSemaphore->u.xSemaphore.xMutexHolder; goto ; [INV] : pxReturn = 0B; : vPortExitCritical (); D.6807 = pxReturn; : : return D.6807; } xQueueCreateMutex (const uint8_t ucQueueType) { const UBaseType_t uxMutexSize; const UBaseType_t uxMutexLength; struct QueueDefinition * xNewQueue; struct QueueDefinition * D.6800; : uxMutexLength = 1; uxMutexSize = 0; xNewQueue = xQueueGenericCreate (uxMutexLength, uxMutexSize, ucQueueType); prvInitialiseMutex (xNewQueue); D.6800 = xNewQueue; : : return D.6800; } prvInitialiseMutex (struct Queue_t * pxNewQueue) { : if (pxNewQueue != 0B) goto ; [INV] else goto ; [INV] : pxNewQueue->u.xSemaphore.xMutexHolder = 0B; pxNewQueue->pcHead = 0B; pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0; xQueueGenericSend (pxNewQueue, 0B, 0, 0); : return; } prvInitialiseNewQueue (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t * pucQueueStorage, const uint8_t ucQueueType, struct Queue_t * pxNewQueue) { : if (uxItemSize == 0) goto ; [INV] else goto ; [INV] : pxNewQueue->pcHead = pxNewQueue; goto ; [INV] : pxNewQueue->pcHead = pucQueueStorage; : pxNewQueue->uxLength = uxQueueLength; pxNewQueue->uxItemSize = uxItemSize; xQueueGenericReset (pxNewQueue, 1); pxNewQueue->ucQueueType = ucQueueType; return; } xQueueGenericCreate (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType) { uint8_t * pucQueueStorage; size_t xQueueSizeInBytes; struct Queue_t * pxNewQueue; struct QueueDefinition * D.6792; : pxNewQueue = 0B; if (uxQueueLength != 0) goto ; [INV] else goto ; [INV] : _1 = .MUL_OVERFLOW (uxItemSize, uxQueueLength); _2 = IMAGPART_EXPR <_1>; if (_2 == 0) goto ; [INV] else goto ; [INV] : _3 = uxQueueLength * uxItemSize; if (_3 <= 4294967215) goto ; [INV] else goto ; [INV] : xQueueSizeInBytes = uxQueueLength * uxItemSize; _4 = xQueueSizeInBytes + 80; pxNewQueue = pvPortMalloc (_4); if (pxNewQueue != 0B) goto ; [INV] else goto ; [INV] : pucQueueStorage = pxNewQueue; pucQueueStorage = pucQueueStorage + 80; prvInitialiseNewQueue (uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue); : goto ; [INV] : if (pxNewQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : D.6792 = pxNewQueue; : : return D.6792; } xQueueGenericReset (struct QueueDefinition * xQueue, BaseType_t xNewQueue) { struct Queue_t * const pxQueue; BaseType_t xReturn; BaseType_t D.6780; : xReturn = 1; pxQueue = xQueue; if (pxQueue == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pxQueue != 0B) goto ; [INV] else goto ; [INV] : _1 = pxQueue->uxLength; if (_1 != 0) goto ; [INV] else goto ; [INV] : _3 = pxQueue->uxItemSize; _4 = pxQueue->uxLength; _2 = .MUL_OVERFLOW (_3, _4); _5 = IMAGPART_EXPR <_2>; if (_5 == 0) goto ; [INV] else goto ; [INV] : vPortEnterCritical (); _6 = pxQueue->pcHead; _7 = pxQueue->uxLength; _8 = pxQueue->uxItemSize; _9 = _7 * _8; _10 = _6 + _9; pxQueue->u.xQueue.pcTail = _10; pxQueue->uxMessagesWaiting = 0; _11 = pxQueue->pcHead; pxQueue->pcWriteTo = _11; _12 = pxQueue->pcHead; _13 = pxQueue->uxLength; _14 = _13 + 4294967295; _15 = pxQueue->uxItemSize; _16 = _14 * _15; _17 = _12 + _16; pxQueue->u.xQueue.pcReadFrom = _17; pxQueue->cRxLock = -1; pxQueue->cTxLock = -1; if (xNewQueue == 0) goto ; [INV] else goto ; [INV] : _18 = pxQueue->xTasksWaitingToSend.uxNumberOfItems; if (_18 != 0) goto ; [INV] else goto ; [INV] : _19 = &pxQueue->xTasksWaitingToSend; _20 = xTaskRemoveFromEventList (_19); if (_20 != 0) goto ; [INV] else goto ; [INV] : _21 = 3758157060B; *_21 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : _22 = &pxQueue->xTasksWaitingToSend; vListInitialise (_22); _23 = &pxQueue->xTasksWaitingToReceive; vListInitialise (_23); : vPortExitCritical (); goto ; [INV] : xReturn = 0; : if (xReturn == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : D.6780 = xReturn; : : return D.6780; } __attribute__((always_inline)) vPortSetBASEPRI (uint32_t ulNewMaskValue) { : __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory"); return; } __attribute__((always_inline)) ulPortRaiseBASEPRI () { uint32_t ulNewBASEPRI; uint32_t ulOriginalBASEPRI; uint32_t D.6938; : __asm__ __volatile__(" mrs %0, basepri mov %1, %2 msr basepri, %1 isb dsb " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory"); D.6938 = ulOriginalBASEPRI; : : return D.6938; } __attribute__((always_inline)) vPortRaiseBASEPRI () { uint32_t ulNewBASEPRI; : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI : "i" 16 : "memory"); return; }