decompiled_code:
void *__fastcall RVC_decoder__motion_U__interpolation_action_scheduler(__int64 a1)
{
int v1; // eax

LABEL_1:
while ( 2 )
{
while ( 2 )
{
while ( 2 )
{
v1 = *(_DWORD *)(a1 + 72);
do
{
if ( !v1 )
{
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 128LL) )
return &exitcode_block_Any;
action0__start(a1);
*(_DWORD *)(a1 + 72) = 1;
goto LABEL_1;
}
}
while ( v1 != 1 );
if ( (unsigned int)RVC_decoder__motion_U__interpolation__DOLLAR__d1756(0LL, a1) )
{
*(_DWORD *)(a1 + 72) = 0;
continue;
}
break;
}
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)RVC_decoder__motion_U__interpolation__DOLLAR__d1763(0LL, a1) )
{
action2__row_col_0(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
break;
}
if ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL)
&& (unsigned int)RVC_decoder__motion_U__interpolation__DOLLAR__d1796(0LL, a1)
&& (unsigned int)RVC_decoder__motion_U__interpolation__DOLLAR__d1800(0LL, a1)
&& (unsigned int)RVC_decoder__motion_U__interpolation__DOLLAR__d1804(0LL, a1)
&& (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) )
{
action3__other(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
return &exitcode_block_Any;
}
}

canonical_decompiled_code:
void *__fastcall func20(__int64 a1)
{
int v1; // eax

LABEL_1:
while ( 2 )
{
while ( 2 )
{
while ( 2 )
{
v1 = *(_DWORD *)(a1 + 72);
do
{
if ( !v1 )
{
if ( !(unsigned int)func8(*(_QWORD *)(a1 + 40) + 128LL) )
return &exitcode_block_Any;
func13(a1);
*(_DWORD *)(a1 + 72) = 1;
goto LABEL_1;
}
}
while ( v1 != 1 );
if ( (unsigned int)func15(0LL, a1) )
{
*(_DWORD *)(a1 + 72) = 0;
continue;
}
break;
}
if ( !(unsigned int)func8(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)func16(0LL, a1) )
{
func14(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
break;
}
if ( (unsigned int)func8(*(_QWORD *)(a1 + 40) + 24LL)
&& (unsigned int)func17(0LL, a1)
&& (unsigned int)func18(0LL, a1)
&& (unsigned int)func19(0LL, a1)
&& (unsigned int)func9(*(_QWORD *)(a1 + 56)) )
{
action3__other(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
return &exitcode_block_Any;
}
}

original_code:
static const int *RVC_decoder__motion_U__interpolation_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__motion_U__interpolation *thisActor=(ActorInstance_RVC_decoder__motion_U__interpolation*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[1].localInputPort)) >= 1)) {
          action0__start(thisActor);
          thisActor->_fsmState = 1;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if (RVC_decoder__motion_U__interpolation__DOLLAR__d1756(context, thisActor)) {
          action1__done(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__motion_U__interpolation__DOLLAR__d1763(context, thisActor)) {
            action2__row_col_0(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__motion_U__interpolation__DOLLAR__d1796(context, thisActor) && RVC_decoder__motion_U__interpolation__DOLLAR__d1800(context, thisActor) && RVC_decoder__motion_U__interpolation__DOLLAR__d1804(context, thisActor)) {
            if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
              action3__other(thisActor);
              thisActor->_fsmState = 1;
              continue;
            } else {
              result = exitcode_block_Any;
              goto out;
            }
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__motion_U__interpolation_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__motion_U__interpolation *thisActor = (ActorInstance_RVC_decoder__motion_U__interpolation*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[1].localInputPort)) >= 1)) {
          action0__start(thisActor);
          thisActor->_fsmState = 1;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if (RVC_decoder__motion_U__interpolation__DOLLAR__d1756(context, thisActor)) {
          action1__done(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__motion_U__interpolation__DOLLAR__d1763(context, thisActor)) {
            action2__row_col_0(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__motion_U__interpolation__DOLLAR__d1796(context, thisActor) && RVC_decoder__motion_U__interpolation__DOLLAR__d1800(context, thisActor) && RVC_decoder__motion_U__interpolation__DOLLAR__d1804(context, thisActor)) {
            if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
              action3__other(thisActor);
              thisActor->_fsmState = 1;
              continue;
            } else {
              result = exitcode_block_Any;
              goto out;
            }
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

variable_types:
result
int *

return_type: int *


repo: Caltoopia/caltoopia-calvin

decompiled_code:
void __fastcall ActorInstance_RVC_decoder__texture_U__DCsplit_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

canonical_decompiled_code:
void __fastcall func8(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__texture_U__DCsplit_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_U__DCsplit *thisActor=(ActorInstance_RVC_decoder__texture_U__DCsplit*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_U__DCsplit_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_U__DCsplit *thisActor = (ActorInstance_RVC_decoder__texture_U__DCsplit*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

variable_types: struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } *

variable_types: struct ActorInstance_RVC_decoder__texture_U__DCsplit { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; } *

return_type: void

user_defined_types: struct AbstractActorInstance { struct dllist_link_tag listEntry; struct ActorClass *actorClass; char *instanceName; int numInputPorts; struct InputPort *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); }

user_defined_types: struct ActorInstance_RVC_decoder__texture_U__DCsplit { struct AbstractActorInstance base; int _fsmState; }

user_defined_types: struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); }

user_defined_types: struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort *producer; struct LocalInputPort localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; }

user_defined_types: struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn *functions; }

user_defined_types: struct OutputPort { struct LocalOutputPort localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t consumers; }

user_defined_types: struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t mutex; }

user_defined_types: union pthread_mutex_t { struct __pthread_mutex_s __data; char __size[40]; long __align; }

user_defined_types: struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list __list; }


decompiled_code:
void *__fastcall RVC_decoder__texture_U__DCsplit_action_scheduler(__int64 a1)
{
__int64 v1; // rbp

while ( 1 )
{
while ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) <= 0x3F )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
v1 = *(_QWORD *)(a1 + 56);
if ( !(unsigned int)pinAvailOut_int32_t(v1) || (unsigned int)pinAvailOut_int32_t(v1 + 136) <= 0x3E )
break;
action0(a1);
}
return &exitcode_block_Any;
}

canonical_decompiled_code:
void *__fastcall func12(__int64 a1)
{
__int64 v1; // rbp

while ( 1 )
{
while ( (unsigned int)func6(*(_QWORD *)(a1 + 40) + 24LL) <= 0x3F )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
v1 = *(_QWORD *)(a1 + 56);
if ( !(unsigned int)func7(v1) || (unsigned int)func7(v1 + 136) <= 0x3E )
break;
func11(a1);
}
return &exitcode_block_Any;
}

original_code:
static const int *RVC_decoder__texture_U__DCsplit_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_U__DCsplit *thisActor=(ActorInstance_RVC_decoder__texture_U__DCsplit*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 63)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_U__DCsplit_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_U__DCsplit *thisActor = (ActorInstance_RVC_decoder__texture_U__DCsplit*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 63)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

variable_types:
context
void *

user_defined_types: struct dllist_link_tag { struct dllist_link_tag *suc; }

user_defined_types: struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; }

user_defined_types: struct ActionDescription { char *name; int *consumption; int *production; }

user_defined_types: struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; }

user_defined_types: struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); }

user_defined_types: struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; }


rshift

decompiled_code:
__int64 __fastcall rshift(int a1, char a2)
{
return (unsigned int)(a1 >> a2);
}

canonical_decompiled_code:
__int64 __fastcall func6(int a1, char a2)
{
return (unsigned int)(a1 >> a2);
}

original_code: static inline int32_t rshift(int32_t x, int32_t n) { return x >> n; }

canonical_original_code: static inline int rshift(int x, int n) { return x >> n; }

variable_types: x int

variable_types: n int

return_type: int


decompiled_code:
void __fastcall ActorInstance_RVC_decoder__texture_Y__idct2d__column_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__texture_Y__idct2d__column_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_Y__idct2d__column *thisActor=(ActorInstance_RVC_decoder__texture_Y__idct2d__column*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_Y__idct2d__column_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_Y__idct2d__column *thisActor = (ActorInstance_RVC_decoder__texture_Y__idct2d__column*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_Y__idct2d__column { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_Y__idct2d__column { struct AbstractActorInstance base; int _fsmState; }


decompiled_code:
void *__fastcall RVC_decoder__texture_Y__idct2d__column_action_scheduler(__int64 a1)
{
while ( 1 )
{
while ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) <= 7 )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
if ( (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) <= 7 )
break;
action0(a1);
}
return &exitcode_block_Any;
}

canonical_decompiled_code:
void *__fastcall func19(__int64 a1)
{
while ( 1 )
{
while ( (unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) <= 7 )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
if ( (unsigned int)func8(*(_QWORD *)(a1 + 56)) <= 7 )
break;
func18(a1);
}
return &exitcode_block_Any;
}

original_code:
static const int *RVC_decoder__texture_Y__idct2d__column_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_Y__idct2d__column *thisActor=(ActorInstance_RVC_decoder__texture_Y__idct2d__column*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 8)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 8)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_Y__idct2d__column_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_Y__idct2d__column *thisActor = (ActorInstance_RVC_decoder__texture_Y__idct2d__column*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 8)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 8)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}


decompiled_code:
void __fastcall ActorInstance_RVC_decoder__texture_U__idct2d__shift_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

canonical_decompiled_code:
void __fastcall func9(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__texture_U__idct2d__shift_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_U__idct2d__shift *thisActor=(ActorInstance_RVC_decoder__texture_U__idct2d__shift*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_U__idct2d__shift_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_U__idct2d__shift *thisActor = (ActorInstance_RVC_decoder__texture_U__idct2d__shift*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_U__idct2d__shift { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_U__idct2d__shift { struct AbstractActorInstance base; int _fsmState; }


decompiled_code:
void *__fastcall RVC_decoder__texture_U__idct2d__shift_action_scheduler(__int64 a1)
{
while ( 1 )
{
while ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) <= 0x3F )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
if ( (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) <= 0x3F )
break;
action0(a1);
}
return &exitcode_block_Any;
}

canonical_decompiled_code:
void *__fastcall func13(__int64 a1)
{
while ( 1 )
{
while ( (unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) <= 0x3F )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
if ( (unsigned int)func8(*(_QWORD *)(a1 + 56)) <= 0x3F )
break;
func12(a1);
}
return &exitcode_block_Any;
}

original_code:
static const int *RVC_decoder__texture_U__idct2d__shift_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_U__idct2d__shift *thisActor=(ActorInstance_RVC_decoder__texture_U__idct2d__shift*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 64)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_U__idct2d__shift_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_U__idct2d__shift *thisActor = (ActorInstance_RVC_decoder__texture_U__idct2d__shift*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 64)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

user_defined_types: struct AbstractActorInstance { struct dllist_link_tag listEntry; struct ActorClass *actorClass; char *instanceName; int numInputPorts; struct InputPort *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); }


decompiled_code:
void __fastcall ActorInstance_RVC_decoder__serialize_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
*(_DWORD *)(a1 + 76) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__serialize_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__serialize *thisActor=(ActorInstance_RVC_decoder__serialize*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->count = 0;
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__serialize_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__serialize *thisActor = (ActorInstance_RVC_decoder__serialize*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->count = 0;
  }
}

variable_types: struct ActorInstance_RVC_decoder__serialize { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; int count; int buf; } *

user_defined_types: struct ActorInstance_RVC_decoder__serialize { struct AbstractActorInstance base; int _fsmState; int count; int buf; }


decompiled_code:
__int64 __fastcall pinRead_int32_t(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}

canonical_decompiled_code:
__int64 __fastcall func11(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}

original_code:
static inline int32_t pinRead_int32_t(LocalInputPort *p)
{
  const int32_t *readPtr=(const int32_t *) p->readPtr;
  int32_t result;
  ((void) sizeof ((p->available > 0) ? 1 : 0), __extension__ ({ if (p->available > 0) ; else __assert_fail ("p->available > 0", "../../actors-fifo.h", 107, __extension__ __PRETTY_FUNCTION__); }));
  result = (int32_t) *readPtr++;
  if (readPtr >= (const int32_t*) p->bufferEnd)
    readPtr = (const int32_t*)p->bufferStart;
  p->readPtr=readPtr;
  p->available--;
  return result;
}

canonical_original_code:
static inline int pinRead_int32_t(struct LocalInputPort *p)
{
  int *readPtr = (const int32_t *) p->readPtr;
  int result;
  ((void) sizeof ((p->available > 0) ? 1 : 0), __extension__ ({ if (p->available > 0) ; else __assert_fail ("p->available > 0", "../../actors-fifo.h", 107, __extension__ __PRETTY_FUNCTION__); }));
  result = (int) *readPtr++;
  if (readPtr >= (int *) p->bufferEnd)
    readPtr = (int *)p->bufferStart;
  p->readPtr=readPtr;
  p->available--;
  return result;
}

variable_types: struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } *

variable_types:
readPtr
int *

variable_types: result int


decompiled_code:
__int64 __fastcall action0__reload(__int64 a1)
{
__int64 result; // rax

result = pinRead_int32_t(*(_QWORD *)(a1 + 40) + 24LL);
*(_DWORD *)(a1 + 80) = result;
*(_DWORD *)(a1 + 76) = 8;
return result;
}

canonical_decompiled_code:
__int64 __fastcall func12(__int64 a1)
{
__int64 result; // rax

result = func11(*(_QWORD *)(a1 + 40) + 24LL);
*(_DWORD *)(a1 + 80) = result;
*(_DWORD *)(a1 + 76) = 8;
return result;
}

original_code:
static void action0__reload(ActorInstance_RVC_decoder__serialize *thisActor) {
  int32_t i;
  ;
  i = pinRead_int32_t(&(thisActor->base.inputPort[0].localInputPort));
  thisActor->buf = i;
  thisActor->count = 8;
  ;
  ;
}

canonical_original_code:
static void action0__reload(struct ActorInstance_RVC_decoder__serialize *thisActor) {
  int i;
  ;
  i = pinRead_int32_t(&(thisActor->base.inputPort[0].localInputPort));
  thisActor->buf = i;
  thisActor->count = 8;
  ;
  ;
}

variable_types: i int

user_defined_types: struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__serialize__DOLLAR__d7932(__int64 a1, __int64 a2)
{
return *(_DWORD *)(a2 + 76) == 0;
}

canonical_decompiled_code:
_BOOL8 __fastcall func13(__int64 a1, __int64 a2)
{
return *(_DWORD *)(a2 + 76) == 0;
}

original_code:
bool_t RVC_decoder__serialize__DOLLAR__d7932(art_action_context_t *context, ActorInstance_RVC_decoder__serialize *thisActor) {
  {
    bool_t ret;
    ret = (thisActor->count == 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__serialize__DOLLAR__d7932(void *context, struct ActorInstance_RVC_decoder__serialize *thisActor) {
  {
    int ret;
    ret = (thisActor->count == 0);
    return ret;
  }
}

variable_types: ret int

user_defined_types: struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort *producer; struct LocalInputPort localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__serialize__DOLLAR__d7940(__int64 a1, __int64 a2)
{
return *(_DWORD *)(a2 + 76) != 0;
}

canonical_decompiled_code:
_BOOL8 __fastcall func14(__int64 a1, __int64 a2)
{
return *(_DWORD *)(a2 + 76) != 0;
}

original_code:
bool_t RVC_decoder__serialize__DOLLAR__d7940(art_action_context_t *context, ActorInstance_RVC_decoder__serialize *thisActor) {
  {
    bool_t ret;
    ret = (thisActor->count != 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__serialize__DOLLAR__d7940(void *context, struct ActorInstance_RVC_decoder__serialize *thisActor) {
  {
    int ret;
    ret = (thisActor->count != 0);
    return ret;
  }
}

user_defined_types: struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn *functions; }


decompiled_code:
void *__fastcall RVC_decoder__serialize_action_scheduler(__int64 a1)
{
while ( 1 )
{
while ( 1 )
{
while ( *(_DWORD *)(a1 + 72) )
;
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL)
|| !(unsigned int)RVC_decoder__serialize__DOLLAR__d7932(0LL, a1) )
{
break;
}
action0__reload(a1);
*(_DWORD *)(a1 + 72) = 0;
}
if ( !(unsigned int)RVC_decoder__serialize__DOLLAR__d7940(0LL, a1)
|| !(unsigned int)pinAvailOut_bool_t(*(_QWORD *)(a1 + 56)) )
{
break;
}
action1__shift(a1);
*(_DWORD *)(a1 + 72) = 0;
}
return &exitcode_block_Any;
}

canonical_decompiled_code:
void *__fastcall func15(__int64 a1)
{
while ( 1 )
{
while ( 1 )
{
while ( *(_DWORD *)(a1 + 72) )
;
if ( !(unsigned int)func8(*(_QWORD *)(a1 + 40) + 24LL)
|| !(unsigned int)func13(0LL, a1) )
{
break;
}
func12(a1);
*(_DWORD *)(a1 + 72) = 0;
}
if ( !(unsigned int)func14(0LL, a1)
|| !(unsigned int)func9(*(_QWORD *)(a1 + 56)) )
{
break;
}
action1__shift(a1);
*(_DWORD *)(a1 + 72) = 0;
}
return &exitcode_block_Any;
}

original_code:
static const int *RVC_decoder__serialize_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__serialize *thisActor=(ActorInstance_RVC_decoder__serialize*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__serialize__DOLLAR__d7932(context, thisActor)) {
            action0__reload(thisActor);
            thisActor->_fsmState = 0;
            continue;
          }
        }
        if (RVC_decoder__serialize__DOLLAR__d7940(context, thisActor)) {
          if ((pinAvailOut_bool_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
            action1__shift(thisActor);
            thisActor->_fsmState = 0;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__serialize_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__serialize *thisActor = (ActorInstance_RVC_decoder__serialize*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__serialize__DOLLAR__d7932(context, thisActor)) {
            action0__reload(thisActor);
            thisActor->_fsmState = 0;
            continue;
          }
        }
        if (RVC_decoder__serialize__DOLLAR__d7940(context, thisActor)) {
          if ((pinAvailOut_bool_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
            action1__shift(thisActor);
            thisActor->_fsmState = 0;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

user_defined_types: struct OutputPort { struct LocalOutputPort localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t consumers; }


decompiled_code:
void __fastcall ActorInstance_RVC_decoder__texture_Y__idct2d__shift_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__texture_Y__idct2d__shift_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_Y__idct2d__shift *thisActor=(ActorInstance_RVC_decoder__texture_Y__idct2d__shift*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_Y__idct2d__shift_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_Y__idct2d__shift *thisActor = (ActorInstance_RVC_decoder__texture_Y__idct2d__shift*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_Y__idct2d__shift { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_Y__idct2d__shift { struct AbstractActorInstance base; int _fsmState; }

user_defined_types: struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t mutex; }


decompiled_code:
void *__fastcall RVC_decoder__texture_Y__idct2d__shift_action_scheduler(__int64 a1)
{
while ( 1 )
{
while ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) <= 0x3F )
{
if ( !*(_DWORD *)(a1 + 72) )
return &exitcode_block_Any;
}
if ( (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) <= 0x3F )
break;
action0(a1);
}
return &exitcode_block_Any;
}

original_code:
static const int *RVC_decoder__texture_Y__idct2d__shift_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_Y__idct2d__shift *thisActor=(ActorInstance_RVC_decoder__texture_Y__idct2d__shift*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 64)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_Y__idct2d__shift_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_Y__idct2d__shift *thisActor = (ActorInstance_RVC_decoder__texture_Y__idct2d__shift*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 64)) {
      if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 64)) {
        action0(thisActor);
        continue;
      } else {
        result = exitcode_block_Any;
        goto out;
      }
    }
    switch(thisActor->_fsmState) {
      case 0:
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

user_defined_types: union pthread_mutex_t { struct __pthread_mutex_s __data; char __size[40]; long __align; }

user_defined_types: struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list __list; }


bitand

decompiled_code:
__int64 __fastcall bitand(unsigned int a1, int a2)
{
return a2 & a1;
}

canonical_decompiled_code:
__int64 __fastcall func6(unsigned int a1, int a2)
{
return a2 & a1;
}

original_code: static inline int32_t bitand(int32_t x, int32_t y) { return x & y; }

canonical_original_code: static inline int bitand(int x, int y) { return x & y; }

variable_types: y int


decompiled_code:
__int64 __fastcall ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing_constructor(__int64 a1)
{
__int64 result; // rax

*(_DWORD *)(a1 + 72) = 0;
*(_QWORD *)(a1 + 80) = malloc(0x1ECuLL);
for ( result = 0LL; result != 492; result += 4LL )
*(_DWORD *)(*(_QWORD *)(a1 + 80) + result) = 0;
*(_DWORD *)(a1 + 104) = 0;
*(_DWORD *)(a1 + 108) = 0;
*(_DWORD *)(a1 + 116) = 1;
return result;
}

original_code:
static void ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor=(ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->coded = malloc((sizeof(bool_t) * 123));
    {
      int32_t i;
      for(i = 1; i <= 123; i++)
      {
        thisActor->coded[((0 + i) - 1)] = 0;
      }
    }
    thisActor->mbwidth = 0;
    thisActor->mbx = 0;
    thisActor->top_edge = 1;
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor = (ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->coded = malloc((sizeof(bool_t) * 123));
    {
      int i;
      for(i = 1; i <= 123; i++)
      {
        thisActor->coded[((0 + i) - 1)] = 0;
      }
    }
    thisActor->mbwidth = 0;
    thisActor->mbx = 0;
    thisActor->top_edge = 1;
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; int *coded; int left_edge; int ptr_left; int ptr_above_left; int ptr_above; int mbwidth; int mbx; int ptr; int top_edge; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing { struct AbstractActorInstance base; int _fsmState; int *coded; int left_edge; int ptr_left; int ptr_above_left; int ptr_above; int mbwidth; int mbx; int ptr; int top_edge; }


canonical_decompiled_code:
__int64 __fastcall func12(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}

user_defined_types: struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)bitand(v2, 2048) != 0;
}

canonical_decompiled_code:
_BOOL8 __fastcall func19(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = func18(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)func6(v2, 2048) != 0;
}

original_code:
bool_t RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(art_action_context_t *context, ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor) {
  int32_t cmd;
  {
    bool_t ret;
    cmd = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(cmd, NEWVOP) != 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(void *context, struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor) {
  int cmd;
  {
    int ret;
    cmd = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(cmd, NEWVOP) != 0);
    return ret;
  }
}

variable_types: cmd int

user_defined_types: struct dllist_link_tag { struct dllist_link_tag *suc; }

user_defined_types: struct ActionDescription { char *name; int *consumption; int *production; }

user_defined_types: struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)bitand(v2, 1024) != 0;
}

canonical_decompiled_code:
_BOOL8 __fastcall func20(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = func18(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)func6(v2, 1024) != 0;
}

original_code:
bool_t RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(art_action_context_t *context, ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor) {
  int32_t blocktype;
  {
    bool_t ret;
    blocktype = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(blocktype, INTRA) != 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(void *context, struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor) {
  int blocktype;
  {
    int ret;
    blocktype = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(blocktype, INTRA) != 0);
    return ret;
  }
}

variable_types: blocktype int

user_defined_types: struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); }

user_defined_types: struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; }


decompiled_code:
void *__fastcall RVC_decoder__texture_U__DCRecontruction__addressing_action_scheduler(__int64 a1)
{
__int64 v2; // r12

while ( 2 )
{
switch ( *(_DWORD *)(a1 + 72) )
{
case 0:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(0LL, a1) )
{
action0__start(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(0LL, a1) )
{
action3__read__intra(a1);
*(_DWORD *)(a1 + 72) = 3;
continue;
}
if ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
{
action4__read__other(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
}
return &exitcode_block_Any;
case 1:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
action1__getw(a1);
*(_DWORD *)(a1 + 72) = 2;
continue;
case 2:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
action2__geth(a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
case 3:
v2 = *(_QWORD *)(a1 + 56);
if ( !(unsigned int)pinAvailOut_int32_t(v2)
|| !(unsigned int)pinAvailOut_int32_t(v2 + 136)
|| !(unsigned int)pinAvailOut_int32_t(v2 + 272) )
{
return &exitcode_block_Any;
}
action6__predict__b0(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
case 4:
action5__advance((_DWORD *)a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
default:
continue;
}
}
}

canonical_decompiled_code:
void *__fastcall func21(__int64 a1)
{
__int64 v2; // r12

while ( 2 )
{
switch ( *(_DWORD *)(a1 + 72) )
{
case 0:
if ( !(unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)func19(0LL, a1) )
{
func13(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
if ( !(unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)func20(0LL, a1) )
{
func14(a1);
*(_DWORD *)(a1 + 72) = 3;
continue;
}
if ( (unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) )
{
func15(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
}
return &exitcode_block_Any;
case 1:
if ( !(unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
func16(a1);
*(_DWORD *)(a1 + 72) = 2;
continue;
case 2:
if ( !(unsigned int)func7(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
func17(a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
case 3:
v2 = *(_QWORD *)(a1 + 56);
if ( !(unsigned int)func8(v2)
|| !(unsigned int)func8(v2 + 136)
|| !(unsigned int)func8(v2 + 272) )
{
return &exitcode_block_Any;
}
action6__predict__b0(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
case 4:
func10((_DWORD *)a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
default:
continue;
}
}
}

original_code:
static const int *RVC_decoder__texture_U__DCRecontruction__addressing_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor=(ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(context, thisActor)) {
            action0__start(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(context, thisActor)) {
            action3__read__intra(thisActor);
            thisActor->_fsmState = 3;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action4__read__other(thisActor);
          thisActor->_fsmState = 4;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action1__getw(thisActor);
          thisActor->_fsmState = 2;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 2:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action2__geth(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 3:
        if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[2].localOutputPort)) >= 1)) {
          action6__predict__b0(thisActor);
          thisActor->_fsmState = 4;
          continue;
        } else {
          result = exitcode_block_Any;
          goto out;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 4:
        action5__advance(thisActor);
        thisActor->_fsmState = 0;
        continue;
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_U__DCRecontruction__addressing_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing *thisActor = (ActorInstance_RVC_decoder__texture_U__DCRecontruction__addressing*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1306(context, thisActor)) {
            action0__start(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_U__DCRecontruction__addressing__DOLLAR__d1336(context, thisActor)) {
            action3__read__intra(thisActor);
            thisActor->_fsmState = 3;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action4__read__other(thisActor);
          thisActor->_fsmState = 4;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action1__getw(thisActor);
          thisActor->_fsmState = 2;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 2:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action2__geth(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 3:
        if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[2].localOutputPort)) >= 1)) {
          action6__predict__b0(thisActor);
          thisActor->_fsmState = 4;
          continue;
        } else {
          result = exitcode_block_Any;
          goto out;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 4:
        action5__advance(thisActor);
        thisActor->_fsmState = 0;
        continue;
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

variable_types: struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } *

variable_types:
result
int *

user_defined_types: struct AbstractActorInstance { struct dllist_link_tag listEntry; struct ActorClass *actorClass; char *instanceName; int numInputPorts; struct InputPort *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); }


decompiled_code:
__int64 __fastcall ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing_constructor(__int64 a1)
{
__int64 result; // rax

*(_DWORD *)(a1 + 72) = 0;
*(_QWORD *)(a1 + 80) = malloc(0x1ECuLL);
for ( result = 0LL; result != 492; result += 4LL )
*(_DWORD *)(*(_QWORD *)(a1 + 80) + result) = 0;
*(_DWORD *)(a1 + 104) = 0;
*(_DWORD *)(a1 + 108) = 0;
*(_DWORD *)(a1 + 116) = 1;
return result;
}

original_code:
static void ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor=(ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->coded = malloc((sizeof(bool_t) * 123));
    {
      int32_t i;
      for(i = 1; i <= 123; i++)
      {
        thisActor->coded[((0 + i) - 1)] = 0;
      }
    }
    thisActor->mbwidth = 0;
    thisActor->mbx = 0;
    thisActor->top_edge = 1;
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor = (ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing*) pBase;
  thisActor->_fsmState = 0;
  {
    thisActor->coded = malloc((sizeof(bool_t) * 123));
    {
      int i;
      for(i = 1; i <= 123; i++)
      {
        thisActor->coded[((0 + i) - 1)] = 0;
      }
    }
    thisActor->mbwidth = 0;
    thisActor->mbx = 0;
    thisActor->top_edge = 1;
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; int *coded; int left_edge; int ptr_left; int ptr_above_left; int ptr_above; int mbwidth; int mbx; int ptr; int top_edge; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing { struct AbstractActorInstance base; int _fsmState; int *coded; int left_edge; int ptr_left; int ptr_above_left; int ptr_above; int mbwidth; int mbx; int ptr; int top_edge; }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)bitand(v2, 2048) != 0;
}

original_code:
bool_t RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(art_action_context_t *context, ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor) {
  int32_t cmd;
  {
    bool_t ret;
    cmd = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(cmd, NEWVOP) != 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(void *context, struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor) {
  int cmd;
  {
    int ret;
    cmd = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(cmd, NEWVOP) != 0);
    return ret;
  }
}

variable_types:
context
void *

user_defined_types: struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(__int64 a1, __int64 a2)
{
unsigned int v2; // eax

v2 = pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 24LL, 0);
return (unsigned int)bitand(v2, 1024) != 0;
}

original_code:
bool_t RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(art_action_context_t *context, ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor) {
  int32_t blocktype;
  {
    bool_t ret;
    blocktype = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(blocktype, INTRA) != 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(void *context, struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor) {
  int blocktype;
  {
    int ret;
    blocktype = pinPeek_int32_t(&(thisActor->base.inputPort[0].localInputPort), 0);
    ret = (bitand(blocktype, INTRA) != 0);
    return ret;
  }
}

user_defined_types: struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort *producer; struct LocalInputPort localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; }


decompiled_code:
void *__fastcall RVC_decoder__texture_V__DCRecontruction__addressing_action_scheduler(__int64 a1)
{
__int64 v2; // r12

while ( 2 )
{
switch ( *(_DWORD *)(a1 + 72) )
{
case 0:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(0LL, a1) )
{
action0__start(a1);
*(_DWORD *)(a1 + 72) = 1;
continue;
}
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
if ( (unsigned int)RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(0LL, a1) )
{
action3__read__intra(a1);
*(_DWORD *)(a1 + 72) = 3;
continue;
}
if ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
{
action4__read__other(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
}
return &exitcode_block_Any;
case 1:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
action1__getw(a1);
*(_DWORD *)(a1 + 72) = 2;
continue;
case 2:
if ( !(unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 24LL) )
return &exitcode_block_Any;
action2__geth(a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
case 3:
v2 = *(_QWORD *)(a1 + 56);
if ( !(unsigned int)pinAvailOut_int32_t(v2)
|| !(unsigned int)pinAvailOut_int32_t(v2 + 136)
|| !(unsigned int)pinAvailOut_int32_t(v2 + 272) )
{
return &exitcode_block_Any;
}
action6__predict__b0(a1);
*(_DWORD *)(a1 + 72) = 4;
continue;
case 4:
action5__advance((_DWORD *)a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
default:
continue;
}
}
}

original_code:
static const int *RVC_decoder__texture_V__DCRecontruction__addressing_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor=(ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(context, thisActor)) {
            action0__start(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(context, thisActor)) {
            action3__read__intra(thisActor);
            thisActor->_fsmState = 3;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action4__read__other(thisActor);
          thisActor->_fsmState = 4;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action1__getw(thisActor);
          thisActor->_fsmState = 2;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 2:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action2__geth(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 3:
        if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[2].localOutputPort)) >= 1)) {
          action6__predict__b0(thisActor);
          thisActor->_fsmState = 4;
          continue;
        } else {
          result = exitcode_block_Any;
          goto out;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 4:
        action5__advance(thisActor);
        thisActor->_fsmState = 0;
        continue;
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_V__DCRecontruction__addressing_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing *thisActor = (ActorInstance_RVC_decoder__texture_V__DCRecontruction__addressing*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1306(context, thisActor)) {
            action0__start(thisActor);
            thisActor->_fsmState = 1;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if (RVC_decoder__texture_V__DCRecontruction__addressing__DOLLAR__d1336(context, thisActor)) {
            action3__read__intra(thisActor);
            thisActor->_fsmState = 3;
            continue;
          }
        }
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action4__read__other(thisActor);
          thisActor->_fsmState = 4;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action1__getw(thisActor);
          thisActor->_fsmState = 2;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 2:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          action2__geth(thisActor);
          thisActor->_fsmState = 0;
          continue;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 3:
        if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[1].localOutputPort)) >= 1) && (pinAvailOut_int32_t(&(thisActor->base.outputPort[2].localOutputPort)) >= 1)) {
          action6__predict__b0(thisActor);
          thisActor->_fsmState = 4;
          continue;
        } else {
          result = exitcode_block_Any;
          goto out;
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 4:
        action5__advance(thisActor);
        thisActor->_fsmState = 0;
        continue;
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

user_defined_types: struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn *functions; }


decompiled_code:
void __fastcall ActorInstance_RVC_decoder__texture_Y__IQ_constructor(__int64 a1)
{
*(_DWORD *)(a1 + 72) = 0;
}

original_code:
static void ActorInstance_RVC_decoder__texture_Y__IQ_constructor(AbstractActorInstance *pBase) {
  ActorInstance_RVC_decoder__texture_Y__IQ *thisActor=(ActorInstance_RVC_decoder__texture_Y__IQ*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

canonical_original_code:
static void ActorInstance_RVC_decoder__texture_Y__IQ_constructor(struct AbstractActorInstance *pBase) {
  struct ActorInstance_RVC_decoder__texture_Y__IQ *thisActor = (ActorInstance_RVC_decoder__texture_Y__IQ*) pBase;
  thisActor->_fsmState = 0;
  {
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_Y__IQ { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; int round; int count; int quant; } *

user_defined_types: struct ActorInstance_RVC_decoder__texture_Y__IQ { struct AbstractActorInstance base; int _fsmState; int round; int count; int quant; }

user_defined_types: struct OutputPort { struct LocalOutputPort localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t consumers; }


decompiled_code:
__int64 __fastcall pinRead_int32_t(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}

canonical_decompiled_code:
__int64 __fastcall func14(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}

original_code:
static inline int32_t pinRead_int32_t(LocalInputPort *p)
{
  const int32_t *readPtr=(const int32_t *) p->readPtr;
  int32_t result;
  ((void) sizeof ((p->available > 0) ? 1 : 0), __extension__ ({ if (p->available > 0) ; else __assert_fail ("p->available > 0", "../../actors-fifo.h", 107, __extension__ __PRETTY_FUNCTION__); }));
  result = (int32_t) *readPtr++;
  if (readPtr >= (const int32_t*) p->bufferEnd)
    readPtr = (const int32_t*)p->bufferStart;
  p->readPtr=readPtr;
  p->available--;
  return result;
}

canonical_original_code:
static inline int pinRead_int32_t(struct LocalInputPort *p)
{
  int *readPtr = (const int32_t *) p->readPtr;
  int result;
  ((void) sizeof ((p->available > 0) ? 1 : 0), __extension__ ({ if (p->available > 0) ; else __assert_fail ("p->available > 0", "../../actors-fifo.h", 107, __extension__ __PRETTY_FUNCTION__); }));
  result = (int) *readPtr++;
  if (readPtr >= (int *) p->bufferEnd)
    readPtr = (int *)p->bufferStart;
  p->readPtr=readPtr;
  p->available--;
  return result;
}


decompiled_code:
void *__fastcall RVC_decoder__texture_Y__IQ_action_scheduler(__int64 a1)
{
int v1; // eax
__int64 v3; // rbp

LABEL_1:
while ( 2 )
{
v1 = *(_DWORD *)(a1 + 72);
do
{
if ( !v1 )
{
v3 = *(_QWORD *)(a1 + 40);
if ( (unsigned int)pinAvailIn_int32_t(v3 + 232)
&& (unsigned int)pinAvailIn_int32_t(v3 + 24)
&& (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) )
{
action0__get_qp(a1);
*(_DWORD *)(a1 + 72) = 1;
goto LABEL_1;
}
return &exitcode_block_Any;
}
}
while ( v1 != 1 );
if ( (unsigned int)pinAvailIn_int32_t(*(_QWORD *)(a1 + 40) + 128LL) > 0x3E
&& (unsigned int)pinAvailOut_int32_t(*(_QWORD *)(a1 + 56)) > 0x3E )
{
action1__ac(a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
}
return &exitcode_block_Any;
}
}

canonical_decompiled_code:
void *__fastcall func18(__int64 a1)
{
int v1; // eax
__int64 v3; // rbp

LABEL_1:
while ( 2 )
{
v1 = *(_DWORD *)(a1 + 72);
do
{
if ( !v1 )
{
v3 = *(_QWORD *)(a1 + 40);
if ( (unsigned int)func9(v3 + 232)
&& (unsigned int)func9(v3 + 24)
&& (unsigned int)func10(*(_QWORD *)(a1 + 56)) )
{
action0__get_qp(a1);
*(_DWORD *)(a1 + 72) = 1;
goto LABEL_1;
}
return &exitcode_block_Any;
}
}
while ( v1 != 1 );
if ( (unsigned int)func9(*(_QWORD *)(a1 + 40) + 128LL) > 0x3E
&& (unsigned int)func10(*(_QWORD *)(a1 + 56)) > 0x3E )
{
func17(a1);
*(_DWORD *)(a1 + 72) = 0;
continue;
}
return &exitcode_block_Any;
}
}

original_code:
static const int *RVC_decoder__texture_Y__IQ_action_scheduler(AbstractActorInstance *pBase) {
  const int *result = exit_code_yield;
  ActorInstance_RVC_decoder__texture_Y__IQ *thisActor=(ActorInstance_RVC_decoder__texture_Y__IQ*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[2].localInputPort)) >= 1) && (pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
            action0__get_qp(thisActor);
            thisActor->_fsmState = 1;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[1].localInputPort)) >= 63)) {
          if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 63)) {
            action1__ac(thisActor);
            thisActor->_fsmState = 0;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

canonical_original_code:
static int *RVC_decoder__texture_Y__IQ_action_scheduler(struct AbstractActorInstance *pBase) {
  int *result = exit_code_yield;
  struct ActorInstance_RVC_decoder__texture_Y__IQ *thisActor = (ActorInstance_RVC_decoder__texture_Y__IQ*) pBase;
  void *context = ((void *)0); context = context;
  while(1) {
    switch(thisActor->_fsmState) {
      case 0:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[2].localInputPort)) >= 1) && (pinAvailIn_int32_t(&(thisActor->base.inputPort[0].localInputPort)) >= 1)) {
          if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 1)) {
            action0__get_qp(thisActor);
            thisActor->_fsmState = 1;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
      case 1:
        if ((pinAvailIn_int32_t(&(thisActor->base.inputPort[1].localInputPort)) >= 63)) {
          if ((pinAvailOut_int32_t(&(thisActor->base.outputPort[0].localOutputPort)) >= 63)) {
            action1__ac(thisActor);
            thisActor->_fsmState = 0;
            continue;
          } else {
            result = exitcode_block_Any;
            goto out;
          }
        }
        result = exitcode_block_Any;
        goto out;
        break;
    }
  }
  out:

  return result;
}

user_defined_types: struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t mutex; }


bitor

decompiled_code:
__int64 __fastcall bitor(unsigned int a1, int a2)
{
return a2 | a1;
}

canonical_decompiled_code:
__int64 __fastcall func7(unsigned int a1, int a2)
{
return a2 | a1;
}

original_code: static inline int32_t bitor(int32_t x, int32_t y) { return x | y; }

canonical_original_code: static inline int bitor(int x, int y) { return x | y; }

variable_types: x int


canonical_decompiled_code:
__int64 __fastcall func15(__int64 a1)
{
unsigned int *v1; // rcx
int v2; // eax
_DWORD *v3; // rdx
unsigned int v4; // ecx

v1 = *(unsigned int **)(a1 + 16);
v2 = *(_DWORD *)(a1 + 24);
if ( !v2 )
__assert_fail("p->available > 0", "../../actors-fifo.h", 0x6Bu, "pinRead_int32_t");
v3 = v1 + 1;
v4 = *v1;
if ( *(_QWORD *)(a1 + 8) <= (unsigned __int64)v3 )
v3 = *(_DWORD **)a1;
*(_QWORD *)(a1 + 16) = v3;
*(_DWORD *)(a1 + 24) = v2 - 1;
return v4;
}


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_U__IAP__DOLLAR__d10566(__int64 a1, __int64 a2)
{
return (unsigned int)pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 232LL, 0) == -2;
}

canonical_decompiled_code:
_BOOL8 __fastcall func20(__int64 a1, __int64 a2)
{
return (unsigned int)func19(*(_QWORD *)(a2 + 40) + 232LL, 0) == -2;
}

original_code:
bool_t RVC_decoder__texture_U__IAP__DOLLAR__d10566(art_action_context_t *context, ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  int32_t s;
  {
    bool_t ret;
    s = pinPeek_int32_t(&(thisActor->base.inputPort[2].localInputPort), 0);
    ret = (s == -2);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_U__IAP__DOLLAR__d10566(void *context, struct ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  int s;
  {
    int ret;
    s = pinPeek_int32_t(&(thisActor->base.inputPort[2].localInputPort), 0);
    ret = (s == -2);
    return ret;
  }
}

variable_types: struct ActorInstance_RVC_decoder__texture_U__IAP { struct AbstractActorInstance { struct dllist_link_tag { struct dllist_link_tag *suc; } listEntry; struct ActorClass { unsigned int majorVersion; unsigned int minorVersion; char *name; int sizeActorInstance; int numInputPorts; struct PortDescription { int dummy; char *name; int tokenSize; struct tokenFn { char *(*serialize)(void *, char *); char *(*deserialize)(void **, char *); long (*size)(void *); int (*free)(void *, int); } *functions; } *inputPortDescriptions; int numOutputPorts; struct PortDescription *outputPortDescriptions; int numActions; struct ActionDescription { char *name; int *consumption; int *production; } *actionDescriptions; int *(*action_scheduler)(struct AbstractActorInstance *); void (*constructor)(struct AbstractActorInstance *); void (*destructor)(struct AbstractActorInstance *); void (*set_param)(struct AbstractActorInstance *, char *, char *); } *actorClass; char *instanceName; int numInputPorts; struct InputPort { struct dllist_link_tag asConsumer; struct OutputPort { struct LocalOutputPort { void *bufferStart; void *bufferEnd; void *writePtr; unsigned int spaceLeft; } localOutputPort; unsigned int capacity; unsigned int tokensProduced; unsigned int fullAt; struct tokenFn functions; struct dllist_head_t { struct dllist_link_tag head_element; union pthread_mutex_t { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __list; } __data; char __size[40]; long __align; } mutex; } consumers; } *producer; struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; } localInputPort; unsigned int tokensConsumed; unsigned int drainedAt; unsigned int capacity; struct tokenFn functions; } *inputPort; int numOutputPorts; struct OutputPort *outputPort; int *(*action_scheduler)(struct AbstractActorInstance *); } base; int _fsmState; int ptr; int pred_ptr; int acpred_flag; int top; int *buf; int s_prev_quant; int count; int s_quant; } *

variable_types: s int

user_defined_types: struct ActorInstance_RVC_decoder__texture_U__IAP { struct AbstractActorInstance base; int _fsmState; int ptr; int pred_ptr; int acpred_flag; int top; int *buf; int s_prev_quant; int count; int s_quant; }

user_defined_types: union pthread_mutex_t { struct __pthread_mutex_s __data; char __size[40]; long __align; }


decompiled_code:
__int64 __fastcall RVC_decoder__texture_U__IAP__DOLLAR__d10577(__int64 a1, __int64 a2)
{
return (unsigned int)pinPeek_int32_t(*(_QWORD *)(a2 + 40) + 232LL, 0) >> 31;
}

canonical_decompiled_code:
__int64 __fastcall func21(__int64 a1, __int64 a2)
{
return (unsigned int)func19(*(_QWORD *)(a2 + 40) + 232LL, 0) >> 31;
}

original_code:
bool_t RVC_decoder__texture_U__IAP__DOLLAR__d10577(art_action_context_t *context, ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  int32_t s;
  {
    bool_t ret;
    s = pinPeek_int32_t(&(thisActor->base.inputPort[2].localInputPort), 0);
    ret = (s < 0);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_U__IAP__DOLLAR__d10577(void *context, struct ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  int s;
  {
    int ret;
    s = pinPeek_int32_t(&(thisActor->base.inputPort[2].localInputPort), 0);
    ret = (s < 0);
    return ret;
  }
}

user_defined_types: struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; struct __pthread_internal_list __list; }


decompiled_code:
_BOOL8 __fastcall RVC_decoder__texture_U__IAP__DOLLAR__d10606(__int64 a1, __int64 a2)
{
return *(_DWORD *)(a2 + 108) == 64;
}

original_code:
bool_t RVC_decoder__texture_U__IAP__DOLLAR__d10606(art_action_context_t *context, ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  {
    bool_t ret;
    ret = (thisActor->count == 64);
    return ret;
  }
}

canonical_original_code:
int RVC_decoder__texture_U__IAP__DOLLAR__d10606(void *context, struct ActorInstance_RVC_decoder__texture_U__IAP *thisActor) {
  {
    int ret;
    ret = (thisActor->count == 64);
    return ret;
  }
}

user_defined_types: struct LocalInputPort { void *bufferStart; void *bufferEnd; void *readPtr; unsigned int available; }