yr_ac_automaton_create:
  732|      2|{
  733|      2|  YR_AC_AUTOMATON* new_automaton;
  734|      2|  YR_AC_STATE* root_state;
  735|       |
  736|      2|  new_automaton = (YR_AC_AUTOMATON*) yr_malloc(sizeof(YR_AC_AUTOMATON));
  737|      2|  root_state = (YR_AC_STATE*) yr_malloc(sizeof(YR_AC_STATE));
  738|       |
  739|      2|  if (new_automaton == NULL || root_state == NULL)
  ------------------
  |  Branch (739:7): [True: 0, False: 2]
  |  Branch (739:32): [True: 0, False: 2]
  ------------------
  740|      0|  {
  741|      0|    yr_free(new_automaton);
  742|      0|    yr_free(root_state);
  743|       |
  744|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  745|      0|  }
  746|       |
  747|      2|  root_state->depth = 0;
  748|      2|  root_state->matches_ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
  749|      2|  root_state->failure = NULL;
  750|      2|  root_state->first_child = NULL;
  751|      2|  root_state->siblings = NULL;
  752|      2|  root_state->t_table_slot = 0;
  753|       |
  754|      2|  new_automaton->arena = arena;
  755|      2|  new_automaton->root = root_state;
  756|      2|  new_automaton->bitmask = NULL;
  757|      2|  new_automaton->tables_size = 0;
  758|       |
  759|      2|  *automaton = new_automaton;
  760|       |
  761|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  762|      2|}
yr_ac_automaton_destroy:
  768|      2|{
  769|      2|  _yr_ac_state_destroy(automaton->root);
  770|       |
  771|      2|  yr_free(automaton->bitmask);
  772|      2|  yr_free(automaton);
  773|       |
  774|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  775|      2|}
yr_ac_compile:
  847|      2|{
  848|      2|  FAIL_ON_ERROR(_yr_ac_create_failure_links(automaton));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  849|      2|  FAIL_ON_ERROR(_yr_ac_optimize_failure_links(automaton));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  850|      2|  FAIL_ON_ERROR(_yr_ac_build_transition_table(automaton));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  851|       |
  852|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  853|      2|}
ahocorasick.c:_yr_ac_state_destroy:
  196|      2|{
  197|      2|  YR_AC_STATE* child_state = state->first_child;
  198|       |
  199|      2|  while (child_state != NULL)
  ------------------
  |  Branch (199:10): [True: 0, False: 2]
  ------------------
  200|      0|  {
  201|      0|    YR_AC_STATE* next_child_state = child_state->siblings;
  202|      0|    _yr_ac_state_destroy(child_state);
  203|      0|    child_state = next_child_state;
  204|      0|  }
  205|       |
  206|      2|  yr_free(state);
  207|       |
  208|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  209|      2|}
ahocorasick.c:_yr_ac_create_failure_links:
  218|      2|{
  219|      2|  YR_AC_STATE* current_state;
  220|      2|  YR_AC_STATE* failure_state;
  221|      2|  YR_AC_STATE* temp_state;
  222|      2|  YR_AC_STATE* state;
  223|      2|  YR_AC_STATE* transition_state;
  224|      2|  YR_AC_STATE* root_state;
  225|      2|  YR_AC_MATCH* match;
  226|       |
  227|      2|  QUEUE queue;
  228|       |
  229|      2|  queue.head = NULL;
  230|      2|  queue.tail = NULL;
  231|       |
  232|      2|  root_state = automaton->root;
  233|       |
  234|       |  // Set the failure link of root state to itself.
  235|      2|  root_state->failure = root_state;
  236|       |
  237|       |  // Push root's children and set their failure link to root.
  238|      2|  state = root_state->first_child;
  239|       |
  240|      2|  while (state != NULL)
  ------------------
  |  Branch (240:10): [True: 0, False: 2]
  ------------------
  241|      0|  {
  242|      0|    FAIL_ON_ERROR(_yr_ac_queue_push(&queue, state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  243|      0|    state->failure = root_state;
  244|      0|    state = state->siblings;
  245|      0|  }
  246|       |
  247|       |  // Traverse the trie in BFS order calculating the failure link
  248|       |  // for each state.
  249|      2|  while (!_yr_ac_queue_is_empty(&queue))
  ------------------
  |  Branch (249:10): [True: 0, False: 2]
  ------------------
  250|      0|  {
  251|      0|    current_state = _yr_ac_queue_pop(&queue);
  252|      0|    match = yr_arena_ref_to_ptr(automaton->arena, &current_state->matches_ref);
  253|       |
  254|      0|    if (match != NULL)
  ------------------
  |  Branch (254:9): [True: 0, False: 0]
  ------------------
  255|      0|    {
  256|       |      // Find the last match in the list of matches.
  257|      0|      while (match->next != NULL) match = match->next;
  ------------------
  |  Branch (257:14): [True: 0, False: 0]
  ------------------
  258|       |
  259|      0|      if (match->backtrack > 0)
  ------------------
  |  Branch (259:11): [True: 0, False: 0]
  ------------------
  260|      0|        match->next = yr_arena_ref_to_ptr(
  261|      0|            automaton->arena, &root_state->matches_ref);
  262|      0|    }
  263|      0|    else
  264|      0|    {
  265|       |      // This state doesn't have any matches, its matches will be those
  266|       |      // in the root state, if any.
  267|      0|      current_state->matches_ref = root_state->matches_ref;
  268|      0|    }
  269|       |
  270|       |    // Iterate over all the states that the current state can transition to.
  271|      0|    transition_state = current_state->first_child;
  272|       |
  273|      0|    while (transition_state != NULL)
  ------------------
  |  Branch (273:12): [True: 0, False: 0]
  ------------------
  274|      0|    {
  275|      0|      FAIL_ON_ERROR(_yr_ac_queue_push(&queue, transition_state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  276|      0|      failure_state = current_state->failure;
  277|       |
  278|      0|      while (1)
  ------------------
  |  Branch (278:14): [Folded - Ignored]
  ------------------
  279|      0|      {
  280|      0|        temp_state = _yr_ac_next_state(failure_state, transition_state->input);
  281|       |
  282|      0|        if (temp_state != NULL)
  ------------------
  |  Branch (282:13): [True: 0, False: 0]
  ------------------
  283|      0|        {
  284|      0|          transition_state->failure = temp_state;
  285|       |
  286|      0|          if (YR_ARENA_IS_NULL_REF(transition_state->matches_ref))
  ------------------
  |  |   49|      0|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |  |  Branch (49:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  287|      0|          {
  288|      0|            transition_state->matches_ref = temp_state->matches_ref;
  289|      0|          }
  290|      0|          else
  291|      0|          {
  292|      0|            match = yr_arena_ref_to_ptr(
  293|      0|                automaton->arena, &transition_state->matches_ref);
  294|       |
  295|      0|            assert(match != NULL);
  296|       |
  297|       |            // Find the last match in the list of matches.
  298|      0|            while (match->next != NULL) match = match->next;
  ------------------
  |  Branch (298:20): [True: 0, False: 0]
  ------------------
  299|       |
  300|      0|            match->next = yr_arena_ref_to_ptr(
  301|      0|                automaton->arena, &temp_state->matches_ref);
  302|      0|          }
  303|       |
  304|      0|          break;
  305|      0|        }
  306|      0|        else
  307|      0|        {
  308|      0|          if (failure_state == root_state)
  ------------------
  |  Branch (308:15): [True: 0, False: 0]
  ------------------
  309|      0|          {
  310|      0|            transition_state->failure = root_state;
  311|      0|            break;
  312|      0|          }
  313|      0|          else
  314|      0|          {
  315|      0|            failure_state = failure_state->failure;
  316|      0|          }
  317|      0|        }
  318|      0|      }  // while(1)
  319|       |
  320|      0|      transition_state = transition_state->siblings;
  321|      0|    }
  322|       |
  323|      0|  }  // while(!__yr_ac_queue_is_empty(&queue))
  324|       |
  325|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  326|      2|}
ahocorasick.c:_yr_ac_queue_is_empty:
  131|      6|{
  132|      6|  return queue->head == NULL;
  133|      6|}
ahocorasick.c:_yr_ac_optimize_failure_links:
  364|      2|{
  365|      2|  QUEUE queue = {NULL, NULL};
  366|       |
  367|       |  // Push root's children.
  368|      2|  YR_AC_STATE* root_state = automaton->root;
  369|      2|  YR_AC_STATE* state = root_state->first_child;
  370|       |
  371|      2|  while (state != NULL)
  ------------------
  |  Branch (371:10): [True: 0, False: 2]
  ------------------
  372|      0|  {
  373|      0|    FAIL_ON_ERROR(_yr_ac_queue_push(&queue, state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  374|      0|    state = state->siblings;
  375|      0|  }
  376|       |
  377|      2|  while (!_yr_ac_queue_is_empty(&queue))
  ------------------
  |  Branch (377:10): [True: 0, False: 2]
  ------------------
  378|      0|  {
  379|      0|    YR_AC_STATE* current_state = _yr_ac_queue_pop(&queue);
  380|       |
  381|      0|    if (current_state->failure != root_state)
  ------------------
  |  Branch (381:9): [True: 0, False: 0]
  ------------------
  382|      0|    {
  383|      0|      if (_yr_ac_transitions_subset(current_state, current_state->failure))
  ------------------
  |  Branch (383:11): [True: 0, False: 0]
  ------------------
  384|      0|        current_state->failure = current_state->failure->failure;
  385|      0|    }
  386|       |
  387|       |    // Push children of current_state
  388|      0|    state = current_state->first_child;
  389|       |
  390|      0|    while (state != NULL)
  ------------------
  |  Branch (390:12): [True: 0, False: 0]
  ------------------
  391|      0|    {
  392|      0|      FAIL_ON_ERROR(_yr_ac_queue_push(&queue, state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  393|      0|      state = state->siblings;
  394|      0|    }
  395|      0|  }
  396|       |
  397|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  398|      2|}
ahocorasick.c:_yr_ac_build_transition_table:
  526|      2|{
  527|      2|  YR_AC_TRANSITION* t_table;
  528|      2|  uint32_t* m_table;
  529|      2|  YR_AC_STATE* state;
  530|      2|  YR_AC_STATE* child_state;
  531|      2|  YR_AC_STATE* root_state = automaton->root;
  532|       |
  533|      2|  uint32_t slot;
  534|       |
  535|      2|  QUEUE queue = {NULL, NULL};
  536|       |
  537|       |  // Both t_table and m_table have 512 slots initially, which is enough for the
  538|       |  // root node's transition table.
  539|      2|  automaton->tables_size = 512;
  540|       |
  541|      2|  automaton->bitmask = yr_calloc(
  542|      2|      YR_BITMASK_SIZE(automaton->tables_size), sizeof(YR_BITMASK));
  ------------------
  |  |   57|      2|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|      2|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  543|       |
  544|      2|  if (automaton->bitmask == NULL)
  ------------------
  |  Branch (544:7): [True: 0, False: 2]
  ------------------
  545|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  546|       |
  547|      2|  FAIL_ON_ERROR(yr_arena_allocate_zeroed_memory(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  548|      2|      automaton->arena,
  549|      2|      YR_AC_TRANSITION_TABLE,
  550|      2|      automaton->tables_size * sizeof(YR_AC_TRANSITION),
  551|      2|      NULL));
  552|       |
  553|      2|  FAIL_ON_ERROR(yr_arena_allocate_zeroed_memory(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  554|      2|      automaton->arena,
  555|      2|      YR_AC_STATE_MATCHES_TABLE,
  556|      2|      automaton->tables_size * sizeof(uint32_t),
  557|      2|      NULL));
  558|       |
  559|      2|  t_table = yr_arena_get_ptr(automaton->arena, YR_AC_TRANSITION_TABLE, 0);
  ------------------
  |  |   65|      2|#define YR_AC_TRANSITION_TABLE      8
  ------------------
  560|      2|  m_table = yr_arena_get_ptr(automaton->arena, YR_AC_STATE_MATCHES_TABLE, 0);
  ------------------
  |  |   66|      2|#define YR_AC_STATE_MATCHES_TABLE   9
  ------------------
  561|       |
  562|       |  // The failure link for the root node points to itself.
  563|      2|  t_table[0] = YR_AC_MAKE_TRANSITION(0, 0);
  ------------------
  |  |   50|      2|  ((YR_AC_TRANSITION)(                     \
  |  |   51|      2|      (((YR_AC_TRANSITION) state) << YR_AC_SLOT_OFFSET_BITS) | (code)))
  |  |  ------------------
  |  |  |  |   39|      2|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  564|       |
  565|       |  // Initialize the entry corresponding to the root node in the match table.
  566|       |  // Entries in this table are the index within YR_AC_MATCH_POOL where resides
  567|       |  // the YR_AC_MATCH structure that corresponds to the head of the matches list
  568|       |  // for the node. The indexes start counting at 1, the zero is used for
  569|       |  // indicating that the node has no associated matches.
  570|      2|  if (!YR_ARENA_IS_NULL_REF(root_state->matches_ref))
  ------------------
  |  |   49|      2|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |  |  |   44|      2|  {                        \
  |  |  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      2|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |  |  |   44|      2|  {                        \
  |  |  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      2|  }
  |  |  ------------------
  ------------------
  |  Branch (570:7): [True: 0, False: 2]
  ------------------
  571|      0|    m_table[0] = root_state->matches_ref.offset / sizeof(YR_AC_MATCH) + 1;
  572|       |
  573|       |  // Mark the first slot in the transition table as used.
  574|      2|  yr_bitmask_set(automaton->bitmask, 0);
  ------------------
  |  |   60|      2|  do                                                                         \
  |  |   61|      2|  {                                                                          \
  |  |   62|      2|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      2|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      2|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      2|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  575|       |
  576|       |  // Index 0 is for root node. Unused indexes start at 1.
  577|      2|  automaton->t_table_unused_candidate = 1;
  578|       |
  579|      2|  child_state = root_state->first_child;
  580|       |
  581|      2|  while (child_state != NULL)
  ------------------
  |  Branch (581:10): [True: 0, False: 2]
  ------------------
  582|      0|  {
  583|       |    // Each state stores its slot number.
  584|      0|    child_state->t_table_slot = child_state->input + 1;
  585|       |
  586|      0|    t_table[child_state->input + 1] = YR_AC_MAKE_TRANSITION(
  ------------------
  |  |   50|      0|  ((YR_AC_TRANSITION)(                     \
  |  |   51|      0|      (((YR_AC_TRANSITION) state) << YR_AC_SLOT_OFFSET_BITS) | (code)))
  |  |  ------------------
  |  |  |  |   39|      0|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  587|      0|        0, child_state->input + 1);
  588|       |
  589|      0|    yr_bitmask_set(automaton->bitmask, child_state->input + 1);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  590|       |
  591|      0|    FAIL_ON_ERROR(_yr_ac_queue_push(&queue, child_state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  592|      0|    child_state = child_state->siblings;
  593|      0|  }
  594|       |
  595|      2|  while (!_yr_ac_queue_is_empty(&queue))
  ------------------
  |  Branch (595:10): [True: 0, False: 2]
  ------------------
  596|      0|  {
  597|      0|    state = _yr_ac_queue_pop(&queue);
  598|       |
  599|      0|    FAIL_ON_ERROR(_yr_ac_find_suitable_transition_table_slot(
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  600|      0|        automaton, automaton->arena, state, &slot));
  601|       |
  602|       |    // _yr_ac_find_suitable_transition_table_slot can allocate more space in
  603|       |    // both tables and cause the tables to be moved to a different memory
  604|       |    // location, we must get their up-to-date addresses.
  605|      0|    t_table = yr_arena_get_ptr(automaton->arena, YR_AC_TRANSITION_TABLE, 0);
  ------------------
  |  |   65|      0|#define YR_AC_TRANSITION_TABLE      8
  ------------------
  606|      0|    m_table = yr_arena_get_ptr(automaton->arena, YR_AC_STATE_MATCHES_TABLE, 0);
  ------------------
  |  |   66|      0|#define YR_AC_STATE_MATCHES_TABLE   9
  ------------------
  607|       |
  608|      0|    t_table[state->t_table_slot] |= (slot << YR_AC_SLOT_OFFSET_BITS);
  ------------------
  |  |   39|      0|#define YR_AC_SLOT_OFFSET_BITS 9
  ------------------
  609|      0|    t_table[slot] = YR_AC_MAKE_TRANSITION(state->failure->t_table_slot, 0);
  ------------------
  |  |   50|      0|  ((YR_AC_TRANSITION)(                     \
  |  |   51|      0|      (((YR_AC_TRANSITION) state) << YR_AC_SLOT_OFFSET_BITS) | (code)))
  |  |  ------------------
  |  |  |  |   39|      0|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  610|       |
  611|       |    // The match table is an array of indexes within YR_AC_MATCHES_POOL. The
  612|       |    // N-th item in the array is the index for the YR_AC_MATCH structure that
  613|       |    // represents the head of the matches list for state N. The indexes start
  614|       |    // at 1, the 0 indicates that there are no matches for the state.
  615|      0|    if (YR_ARENA_IS_NULL_REF(state->matches_ref))
  ------------------
  |  |   49|      0|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |  |  Branch (49:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  616|      0|      m_table[slot] = 0;
  617|      0|    else
  618|      0|      m_table[slot] = state->matches_ref.offset / sizeof(YR_AC_MATCH) + 1;
  619|       |
  620|      0|    state->t_table_slot = slot;
  621|       |
  622|      0|    yr_bitmask_set(automaton->bitmask, slot);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  623|       |
  624|       |    // Push children of current_state
  625|      0|    child_state = state->first_child;
  626|       |
  627|      0|    while (child_state != NULL)
  ------------------
  |  Branch (627:12): [True: 0, False: 0]
  ------------------
  628|      0|    {
  629|      0|      child_state->t_table_slot = slot + child_state->input + 1;
  630|       |
  631|      0|      t_table[child_state->t_table_slot] = YR_AC_MAKE_TRANSITION(
  ------------------
  |  |   50|      0|  ((YR_AC_TRANSITION)(                     \
  |  |   51|      0|      (((YR_AC_TRANSITION) state) << YR_AC_SLOT_OFFSET_BITS) | (code)))
  |  |  ------------------
  |  |  |  |   39|      0|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  632|      0|          0, child_state->input + 1);
  633|       |
  634|      0|      yr_bitmask_set(automaton->bitmask, child_state->t_table_slot);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  635|       |
  636|      0|      FAIL_ON_ERROR(_yr_ac_queue_push(&queue, child_state));
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  134|      0|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      return __error;             \
  |  |  136|      0|  }
  ------------------
  637|       |
  638|      0|      child_state = child_state->siblings;
  639|      0|    }
  640|      0|  }
  641|       |
  642|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  643|      2|}

yr_arena_create:
  237|  2.77k|{
  238|  2.77k|  YR_ARENA* new_arena = (YR_ARENA*) yr_calloc(1, sizeof(YR_ARENA));
  239|       |
  240|  2.77k|  if (new_arena == NULL)
  ------------------
  |  Branch (240:7): [True: 0, False: 2.77k]
  ------------------
  241|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  242|       |
  243|  2.77k|  new_arena->xrefs = 1;
  244|  2.77k|  new_arena->num_buffers = num_buffers;
  245|  2.77k|  new_arena->initial_buffer_size = initial_buffer_size;
  246|       |
  247|  2.77k|  *arena = new_arena;
  248|       |
  249|  2.77k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  ------------------
  250|  2.77k|}
yr_arena_acquire:
  253|      2|{
  254|      2|  arena->xrefs++;
  255|      2|}
yr_arena_release:
  272|  2.77k|{
  273|  2.77k|  arena->xrefs--;
  274|       |
  275|  2.77k|  if (arena->xrefs > 0)
  ------------------
  |  Branch (275:7): [True: 2, False: 2.76k]
  ------------------
  276|      2|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  277|       |
  278|  5.53k|  for (uint32_t i = 0; i < arena->num_buffers; i++)
  ------------------
  |  Branch (278:24): [True: 2.76k, False: 2.76k]
  ------------------
  279|  2.76k|  {
  280|  2.76k|    if (arena->buffers[i].data != NULL)
  ------------------
  |  Branch (280:9): [True: 0, False: 2.76k]
  ------------------
  281|      0|      yr_free(arena->buffers[i].data);
  282|  2.76k|  }
  283|       |
  284|  2.76k|  YR_RELOC* reloc = arena->reloc_list_head;
  285|       |
  286|  2.76k|  while (reloc != NULL)
  ------------------
  |  Branch (286:10): [True: 0, False: 2.76k]
  ------------------
  287|      0|  {
  288|      0|    YR_RELOC* next = reloc->next;
  289|      0|    yr_free(reloc);
  290|      0|    reloc = next;
  291|      0|  }
  292|       |
  293|  2.76k|  yr_free(arena);
  294|       |
  295|  2.76k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  296|  2.77k|}
yr_arena_allocate_zeroed_memory:
  342|      4|{
  343|      4|  return _yr_arena_allocate_memory(
  344|      4|      arena, YR_ARENA_ZERO_MEMORY, buffer_id, size, ref);
  ------------------
  |  |  114|      4|#define YR_ARENA_ZERO_MEMORY 1
  ------------------
  345|      4|}
yr_arena_allocate_struct:
  386|      4|{
  387|      4|  YR_ARENA_REF r;
  388|       |
  389|      4|  int result = _yr_arena_allocate_memory(
  390|      4|      arena, YR_ARENA_ZERO_MEMORY, buffer_id, size, &r);
  ------------------
  |  |  114|      4|#define YR_ARENA_ZERO_MEMORY 1
  ------------------
  391|       |
  392|      4|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      4|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (392:7): [True: 0, False: 4]
  ------------------
  393|      0|    return result;
  394|       |
  395|      4|  va_list field_offsets;
  396|      4|  va_start(field_offsets, ref);
  397|       |
  398|      4|  result = _yr_arena_make_ptr_relocatable(
  399|      4|      arena, buffer_id, r.offset, field_offsets);
  400|       |
  401|      4|  va_end(field_offsets);
  402|       |
  403|      4|  if (result == ERROR_SUCCESS && ref != NULL)
  ------------------
  |  |   40|      8|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (403:7): [True: 4, False: 0]
  |  Branch (403:34): [True: 4, False: 0]
  ------------------
  404|      4|  {
  405|      4|    ref->buffer_id = r.buffer_id;
  406|      4|    ref->offset = r.offset;
  407|      4|  }
  408|       |
  409|      4|  return result;
  410|      4|}
yr_arena_get_ptr:
  416|  2.80k|{
  417|  2.80k|  assert(buffer_id < arena->num_buffers);
  418|  2.80k|  assert(offset <= arena->buffers[buffer_id].used);
  419|       |
  420|  2.80k|  if (arena->buffers[buffer_id].data == NULL)
  ------------------
  |  Branch (420:7): [True: 2.77k, False: 26]
  ------------------
  421|  2.77k|    return NULL;
  422|       |
  423|     26|  return arena->buffers[buffer_id].data + offset;
  424|  2.80k|}
yr_arena_ptr_to_ref:
  434|  2.76k|{
  435|  2.76k|  *ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|  2.76k|  (YR_ARENA_REF)           \
  |  |   44|  2.76k|  {                        \
  |  |   45|  2.76k|    UINT32_MAX, UINT32_MAX \
  |  |   46|  2.76k|  }
  ------------------
  436|       |
  437|  2.76k|  if (address == NULL)
  ------------------
  |  Branch (437:7): [True: 0, False: 2.76k]
  ------------------
  438|      0|    return 1;
  439|       |
  440|  16.6k|  for (uint32_t i = 0; i < arena->num_buffers; ++i)
  ------------------
  |  Branch (440:24): [True: 16.6k, False: 0]
  ------------------
  441|  16.6k|  {
  442|       |    // If the buffer is completetly empty, skip it.
  443|  16.6k|    if (arena->buffers[i].data == NULL)
  ------------------
  |  Branch (443:9): [True: 5.53k, False: 11.0k]
  ------------------
  444|  5.53k|      continue;
  445|       |
  446|       |    // If the address falls within the limits of the buffer, then we found
  447|       |    // the buffer that contains the data and return a reference to it.
  448|  11.0k|    if ((uint8_t*) address >= arena->buffers[i].data &&
  ------------------
  |  Branch (448:9): [True: 8.30k, False: 2.76k]
  ------------------
  449|  11.0k|        (uint8_t*) address < arena->buffers[i].data + arena->buffers[i].used)
  ------------------
  |  Branch (449:9): [True: 2.76k, False: 5.53k]
  ------------------
  450|  2.76k|    {
  451|  2.76k|      ref->buffer_id = i;
  452|  2.76k|      ref->offset =
  453|  2.76k|          (yr_arena_off_t) ((uint8_t*) address - arena->buffers[i].data);
  454|       |
  455|  2.76k|      return 1;
  456|  2.76k|    }
  457|  11.0k|  }
  458|       |
  459|      0|  return 0;
  460|  2.76k|}
yr_arena_ref_to_ptr:
  463|      8|{
  464|      8|  if (YR_ARENA_IS_NULL_REF(*ref))
  ------------------
  |  |   49|      8|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      8|  (YR_ARENA_REF)           \
  |  |  |  |   44|      8|  {                        \
  |  |  |  |   45|      8|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      8|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      8|  (YR_ARENA_REF)           \
  |  |  |  |   44|      8|  {                        \
  |  |  |  |   45|      8|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      8|  }
  |  |  ------------------
  |  |  |  Branch (49:3): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  465|      0|    return NULL;
  466|       |
  467|       |#if defined(__arm__)
  468|       |  YR_ARENA_REF tmp_ref;
  469|       |  memcpy(&tmp_ref, ref, sizeof(YR_ARENA_REF));
  470|       |  ref = &tmp_ref;
  471|       |#endif
  472|       |
  473|      8|  return yr_arena_get_ptr(arena, ref->buffer_id, ref->offset);
  474|      8|}
yr_arena_make_ptr_relocatable:
  488|      2|{
  489|      2|  int result;
  490|       |
  491|      2|  va_list offsets;
  492|      2|  va_start(offsets, buffer_id);
  493|       |
  494|      2|  result = _yr_arena_make_ptr_relocatable(arena, buffer_id, 0, offsets);
  495|       |
  496|      2|  va_end(offsets);
  497|       |
  498|      2|  return result;
  499|      2|}
yr_arena_write_data:
  507|     14|{
  508|     14|  YR_ARENA_REF r;
  509|       |
  510|       |  // Allocate space in the buffer.
  511|     14|  FAIL_ON_ERROR(_yr_arena_allocate_memory(arena, 0, buffer_id, size, &r));
  ------------------
  |  |  132|     14|  {                               \
  |  |  133|     14|    int __error = (x);            \
  |  |  134|     14|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|     14|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 14]
  |  |  ------------------
  |  |  135|     14|      return __error;             \
  |  |  136|     14|  }
  ------------------
  512|       |
  513|       |  // Copy the data into the allocated space.
  514|     14|  memcpy(arena->buffers[buffer_id].data + r.offset, data, size);
  515|       |
  516|     14|  if (ref != NULL)
  ------------------
  |  Branch (516:7): [True: 6, False: 8]
  ------------------
  517|      6|  {
  518|      6|    ref->buffer_id = r.buffer_id;
  519|      6|    ref->offset = r.offset;
  520|      6|  }
  521|       |
  522|     14|  return ERROR_SUCCESS;
  ------------------
  |  |   40|     14|#define ERROR_SUCCESS 0
  ------------------
  523|     14|}
arena.c:_yr_arena_allocate_memory:
  138|     22|{
  139|     22|  if (buffer_id > arena->num_buffers)
  ------------------
  |  Branch (139:7): [True: 0, False: 22]
  ------------------
  140|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  141|       |
  142|     22|  YR_ARENA_BUFFER* b = &arena->buffers[buffer_id];
  143|       |
  144|       |  // If the new data doesn't fit in the remaining space the buffer must be
  145|       |  // re-sized. This implies moving the buffer to a different memory location
  146|       |  // and adjusting the pointers listed in the relocation list.
  147|       |
  148|     22|  if (b->size - b->used < size)
  ------------------
  |  Branch (148:7): [True: 16, False: 6]
  ------------------
  149|     16|  {
  150|     16|    size_t new_size = (b->size == 0) ? arena->initial_buffer_size : b->size * 2;
  ------------------
  |  Branch (150:23): [True: 16, False: 0]
  ------------------
  151|       |
  152|     16|    while (new_size < b->used + size) new_size *= 2;
  ------------------
  |  Branch (152:12): [True: 0, False: 16]
  ------------------
  153|       |
  154|       |    // Make sure that buffer size if not larger than 4GB.
  155|     16|    if (new_size > 1ULL << 32)
  ------------------
  |  Branch (155:9): [True: 0, False: 16]
  ------------------
  156|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  157|       |
  158|     16|    uint8_t* new_data = yr_realloc(b->data, new_size);
  159|       |
  160|     16|    if (new_data == NULL)
  ------------------
  |  Branch (160:9): [True: 0, False: 16]
  ------------------
  161|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  162|       |
  163|       |// When yr_realloc uses the Windows API (HeapAlloc, HeapReAlloc) it is not
  164|       |// necessary to set the memory to zero because the API is called with the
  165|       |// HEAP_ZERO_MEMORY flag.
  166|     16|#if !defined(_WIN32) && !defined(__CYGWIN__)
  167|     16|    if (flags & YR_ARENA_ZERO_MEMORY)
  ------------------
  |  |  114|     16|#define YR_ARENA_ZERO_MEMORY 1
  ------------------
  |  Branch (167:9): [True: 8, False: 8]
  ------------------
  168|      8|      memset(new_data + b->used, 0, new_size - b->used);
  169|     16|#endif
  170|       |
  171|       |    // Fix pointers in the relocation list if the old buffer was not empty
  172|       |    // and it was actually moved by yr_realloc.
  173|     16|    if (b->data != NULL && b->data != new_data)
  ------------------
  |  Branch (173:9): [True: 0, False: 16]
  |  Branch (173:28): [True: 0, False: 0]
  ------------------
  174|      0|    {
  175|      0|      YR_RELOC* reloc = arena->reloc_list_head;
  176|       |
  177|      0|      while (reloc != NULL)
  ------------------
  |  Branch (177:14): [True: 0, False: 0]
  ------------------
  178|      0|      {
  179|       |        // If the reloc entry is for the same buffer that is being relocated,
  180|       |        // the base pointer that we use to access the buffer must be new_data
  181|       |        // as arena->buffers[reloc->buffer_id].data (which is the same than
  182|       |        // b->data) can't be accessed anymore after the call to yr_realloc.
  183|      0|        uint8_t* base = buffer_id == reloc->buffer_id
  ------------------
  |  Branch (183:25): [True: 0, False: 0]
  ------------------
  184|      0|                            ? new_data
  185|      0|                            : arena->buffers[reloc->buffer_id].data;
  186|       |
  187|       |        // reloc_address holds the address inside the buffer where the pointer
  188|       |        // to be relocated resides.
  189|      0|        void** reloc_address = (void**) (base + reloc->offset);
  190|       |
  191|       |        // reloc_target is the value of the relocatable pointer.
  192|      0|        void* reloc_target = *reloc_address;
  193|       |
  194|      0|        if ((uint8_t*) reloc_target >= b->data &&
  ------------------
  |  Branch (194:13): [True: 0, False: 0]
  ------------------
  195|      0|            (uint8_t*) reloc_target < b->data + b->used)
  ------------------
  |  Branch (195:13): [True: 0, False: 0]
  ------------------
  196|      0|        {
  197|       |          // reloc_target points to some data inside the buffer being moved, so
  198|       |          // the pointer needs to be adjusted.
  199|      0|          *reloc_address = (uint8_t*) reloc_target - b->data + new_data;
  200|      0|        }
  201|       |
  202|      0|        reloc = reloc->next;
  203|      0|      }
  204|      0|    }
  205|       |
  206|     16|    b->size = new_size;
  207|     16|    b->data = new_data;
  208|     16|  }
  209|       |
  210|     22|  if (ref != NULL)
  ------------------
  |  Branch (210:7): [True: 18, False: 4]
  ------------------
  211|     18|  {
  212|     18|    ref->buffer_id = buffer_id;
  213|     18|    ref->offset = (uint32_t) b->used;
  214|     18|  }
  215|       |
  216|     22|  b->used += size;
  217|       |
  218|     22|  return ERROR_SUCCESS;
  ------------------
  |  |   40|     22|#define ERROR_SUCCESS 0
  ------------------
  219|     22|}
arena.c:_yr_arena_make_ptr_relocatable:
   80|      6|{
   81|      6|  size_t offset;
   82|       |
   83|      6|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      6|#define ERROR_SUCCESS 0
  ------------------
   84|       |
   85|       |  // The argument to va_arg is size_t because the offsets passed to this
   86|       |  // function are obtained with offsetof().
   87|      6|  offset = va_arg(offsets, size_t);
   88|       |
   89|     10|  while (offset != EOL)
  ------------------
  |  |   38|     10|#define EOL ((size_t) -1)
  ------------------
  |  Branch (89:10): [True: 4, False: 6]
  ------------------
   90|      4|  {
   91|      4|    YR_RELOC* reloc = (YR_RELOC*) yr_malloc(sizeof(YR_RELOC));
   92|       |
   93|      4|    if (reloc == NULL)
  ------------------
  |  Branch (93:9): [True: 0, False: 4]
  ------------------
   94|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   95|       |
   96|      4|    reloc->buffer_id = buffer_id;
   97|      4|    reloc->offset = base_offset + (yr_arena_off_t) offset;
   98|      4|    reloc->next = NULL;
   99|       |
  100|      4|    if (arena->reloc_list_head == NULL)
  ------------------
  |  Branch (100:9): [True: 2, False: 2]
  ------------------
  101|      2|      arena->reloc_list_head = reloc;
  102|       |
  103|      4|    if (arena->reloc_list_tail != NULL)
  ------------------
  |  Branch (103:9): [True: 2, False: 2]
  ------------------
  104|      2|      arena->reloc_list_tail->next = reloc;
  105|       |
  106|      4|    arena->reloc_list_tail = reloc;
  107|      4|    offset = va_arg(offsets, size_t);
  108|      4|  }
  109|       |
  110|      6|  return result;
  111|      6|}

_yr_compiler_store_data:
  177|      4|{
  178|       |  // Check if the data is already in YR_SZ_POOL by using a hash table.
  179|      4|  uint32_t offset = yr_hash_table_lookup_uint32_raw_key(
  180|      4|      compiler->sz_table, data, data_length, NULL);
  181|       |
  182|      4|  if (offset == UINT32_MAX)
  ------------------
  |  Branch (182:7): [True: 4, False: 0]
  ------------------
  183|      4|  {
  184|       |    // The data was not previously written to YR_SZ_POOL, write it and store
  185|       |    // the reference's offset in the hash table. Storing the buffer number
  186|       |    // is not necessary, it's always YR_SZ_POOL.
  187|      4|    FAIL_ON_ERROR(yr_arena_write_data(
  ------------------
  |  |  132|      4|  {                               \
  |  |  133|      4|    int __error = (x);            \
  |  |  134|      4|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      4|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 4]
  |  |  ------------------
  |  |  135|      4|      return __error;             \
  |  |  136|      4|  }
  ------------------
  188|      4|        compiler->arena, YR_SZ_POOL, data, data_length, ref));
  189|       |
  190|      4|    FAIL_ON_ERROR(yr_hash_table_add_uint32_raw_key(
  ------------------
  |  |  132|      4|  {                               \
  |  |  133|      4|    int __error = (x);            \
  |  |  134|      4|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      4|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 4]
  |  |  ------------------
  |  |  135|      4|      return __error;             \
  |  |  136|      4|  }
  ------------------
  191|      4|        compiler->sz_table, data, data_length, NULL, ref->offset));
  192|      4|  }
  193|      0|  else
  194|      0|  {
  195|      0|    ref->buffer_id = YR_SZ_POOL;
  ------------------
  |  |   62|      0|#define YR_SZ_POOL                  5
  ------------------
  196|      0|    ref->offset = offset;
  197|      0|  }
  198|       |
  199|      4|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      4|#define ERROR_SUCCESS 0
  ------------------
  200|      4|}
_yr_compiler_store_string:
  209|      4|{
  210|      4|  return _yr_compiler_store_data(
  211|      4|      compiler,
  212|      4|      (void*) string,
  213|      4|      strlen(string) + 1,  // include the null terminator
  214|      4|      ref);
  215|      4|}
yr_compiler_create:
  218|      2|{
  219|      2|  int result;
  220|      2|  YR_COMPILER* new_compiler;
  221|       |
  222|      2|  new_compiler = (YR_COMPILER*) yr_calloc(1, sizeof(YR_COMPILER));
  223|       |
  224|      2|  if (new_compiler == NULL)
  ------------------
  |  Branch (224:7): [True: 0, False: 2]
  ------------------
  225|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  226|       |
  227|      2|  new_compiler->current_rule_idx = UINT32_MAX;
  228|      2|  new_compiler->next_rule_idx = 0;
  229|      2|  new_compiler->current_string_idx = 0;
  230|      2|  new_compiler->current_namespace_idx = 0;
  231|      2|  new_compiler->current_meta_idx = 0;
  232|      2|  new_compiler->num_namespaces = 0;
  233|      2|  new_compiler->errors = 0;
  234|      2|  new_compiler->callback = NULL;
  235|      2|  new_compiler->rules = NULL;
  236|      2|  new_compiler->include_callback = _yr_compiler_default_include_callback;
  237|      2|  new_compiler->incl_clbk_user_data = NULL;
  238|      2|  new_compiler->include_free = _yr_compiler_default_include_free;
  239|      2|  new_compiler->re_ast_callback = NULL;
  240|      2|  new_compiler->re_ast_clbk_user_data = NULL;
  241|      2|  new_compiler->last_error = ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  242|      2|  new_compiler->last_error_line = 0;
  243|      2|  new_compiler->strict_escape = false;
  244|      2|  new_compiler->current_line = 0;
  245|      2|  new_compiler->file_name_stack_ptr = 0;
  246|      2|  new_compiler->fixup_stack_head = NULL;
  247|      2|  new_compiler->loop_index = -1;
  248|      2|  new_compiler->loop_for_of_var_index = -1;
  249|       |
  250|      2|  new_compiler->atoms_config.get_atom_quality = yr_atoms_heuristic_quality;
  251|      2|  new_compiler->atoms_config.quality_warning_threshold =
  252|      2|      YR_ATOM_QUALITY_WARNING_THRESHOLD;
  ------------------
  |  |   85|      2|  YR_MAX_ATOM_QUALITY - 22 * YR_MAX_ATOM_LENGTH + 38
  |  |  ------------------
  |  |  |  |   72|      2|#define YR_MAX_ATOM_QUALITY 255
  |  |  ------------------
  |  |                 YR_MAX_ATOM_QUALITY - 22 * YR_MAX_ATOM_LENGTH + 38
  |  |  ------------------
  |  |  |  |   68|      2|#define YR_MAX_ATOM_LENGTH 4
  |  |  ------------------
  ------------------
  253|       |
  254|      2|  result = yr_hash_table_create(5000, &new_compiler->rules_table);
  255|       |
  256|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (256:7): [True: 2, False: 0]
  ------------------
  257|      2|    result = yr_hash_table_create(1000, &new_compiler->objects_table);
  258|       |
  259|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (259:7): [True: 2, False: 0]
  ------------------
  260|      2|    result = yr_hash_table_create(10000, &new_compiler->strings_table);
  261|       |
  262|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (262:7): [True: 2, False: 0]
  ------------------
  263|      2|    result = yr_hash_table_create(
  264|      2|        1000, &new_compiler->wildcard_identifiers_table);
  265|       |
  266|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (266:7): [True: 2, False: 0]
  ------------------
  267|      2|    result = yr_hash_table_create(10000, &new_compiler->sz_table);
  268|       |
  269|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (269:7): [True: 2, False: 0]
  ------------------
  270|      2|    result = yr_arena_create(YR_NUM_SECTIONS, 1048576, &new_compiler->arena);
  ------------------
  |  |   72|      2|#define YR_NUM_SECTIONS 12
  ------------------
  271|       |
  272|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (272:7): [True: 2, False: 0]
  ------------------
  273|      2|    result = yr_ac_automaton_create(
  274|      2|        new_compiler->arena, &new_compiler->automaton);
  275|       |
  276|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (276:7): [True: 2, False: 0]
  ------------------
  277|      2|  {
  278|      2|    *compiler = new_compiler;
  279|      2|  }
  280|      0|  else  // if error, do cleanup
  281|      0|  {
  282|      0|    yr_compiler_destroy(new_compiler);
  283|      0|  }
  284|       |
  285|      2|  return result;
  286|      2|}
yr_compiler_destroy:
  289|      2|{
  290|      2|  if (compiler->arena != NULL)
  ------------------
  |  Branch (290:7): [True: 2, False: 0]
  ------------------
  291|      2|    yr_arena_release(compiler->arena);
  292|       |
  293|      2|  if (compiler->automaton != NULL)
  ------------------
  |  Branch (293:7): [True: 2, False: 0]
  ------------------
  294|      2|    yr_ac_automaton_destroy(compiler->automaton);
  295|       |
  296|      2|  if (compiler->rules_table != NULL)
  ------------------
  |  Branch (296:7): [True: 2, False: 0]
  ------------------
  297|      2|    yr_hash_table_destroy(compiler->rules_table, NULL);
  298|       |
  299|      2|  if (compiler->strings_table != NULL)
  ------------------
  |  Branch (299:7): [True: 2, False: 0]
  ------------------
  300|      2|    yr_hash_table_destroy(compiler->strings_table, NULL);
  301|       |
  302|      2|  if (compiler->wildcard_identifiers_table != NULL)
  ------------------
  |  Branch (302:7): [True: 2, False: 0]
  ------------------
  303|      2|    yr_hash_table_destroy(compiler->wildcard_identifiers_table, NULL);
  304|       |
  305|      2|  if (compiler->sz_table != NULL)
  ------------------
  |  Branch (305:7): [True: 2, False: 0]
  ------------------
  306|      2|    yr_hash_table_destroy(compiler->sz_table, NULL);
  307|       |
  308|      2|  if (compiler->objects_table != NULL)
  ------------------
  |  Branch (308:7): [True: 2, False: 0]
  ------------------
  309|      2|    yr_hash_table_destroy(
  310|      2|        compiler->objects_table,
  311|      2|        (YR_HASH_TABLE_FREE_VALUE_FUNC) yr_object_destroy);
  312|       |
  313|      2|  if (compiler->atoms_config.free_quality_table)
  ------------------
  |  Branch (313:7): [True: 0, False: 2]
  ------------------
  314|      0|    yr_free(compiler->atoms_config.quality_table);
  315|       |
  316|      2|  for (int i = 0; i < compiler->file_name_stack_ptr; i++)
  ------------------
  |  Branch (316:19): [True: 0, False: 2]
  ------------------
  317|      0|    yr_free(compiler->file_name_stack[i]);
  318|       |
  319|      2|  YR_FIXUP* fixup = compiler->fixup_stack_head;
  320|       |
  321|      2|  while (fixup != NULL)
  ------------------
  |  Branch (321:10): [True: 0, False: 2]
  ------------------
  322|      0|  {
  323|      0|    YR_FIXUP* next_fixup = fixup->next;
  324|      0|    yr_free(fixup);
  325|      0|    fixup = next_fixup;
  326|      0|  }
  327|       |
  328|      2|  yr_free(compiler);
  329|      2|}
yr_compiler_add_string:
  662|      2|{
  663|       |  // Don't allow calls to yr_compiler_add_string() after
  664|       |  // yr_compiler_get_rules() has been called.
  665|      2|  assert(compiler->rules == NULL);
  666|       |
  667|       |  // Don't allow calls to yr_compiler_add_string() if a previous call to
  668|       |  // yr_compiler_add_XXXX failed.
  669|      2|  assert(compiler->errors == 0);
  670|       |
  671|      2|  if (namespace_ != NULL)
  ------------------
  |  Branch (671:7): [True: 0, False: 2]
  ------------------
  672|      0|    compiler->last_error = _yr_compiler_set_namespace(compiler, namespace_);
  673|      2|  else
  674|      2|    compiler->last_error = _yr_compiler_set_namespace(compiler, "default");
  675|       |
  676|      2|  if (compiler->last_error != ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (676:7): [True: 0, False: 2]
  ------------------
  677|      0|    return ++compiler->errors;
  678|       |
  679|      2|  return yr_lex_parse_rules_string(rules_string, compiler);
  680|      2|}
yr_compiler_get_rules:
  730|      2|{
  731|       |  // Don't allow calls to yr_compiler_get_rules() if a previous call to
  732|       |  // yr_compiler_add_XXXX failed.
  733|      2|  assert(compiler->errors == 0);
  734|       |
  735|      2|  *rules = NULL;
  736|       |
  737|      2|  if (compiler->rules == NULL)
  ------------------
  |  Branch (737:7): [True: 2, False: 0]
  ------------------
  738|      2|    FAIL_ON_ERROR(_yr_compiler_compile_rules(compiler));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  739|       |
  740|      2|  *rules = compiler->rules;
  741|       |
  742|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  743|      2|}
compiler.c:_yr_compiler_set_namespace:
  519|      2|{
  520|      2|  YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
  521|      2|      compiler->arena, YR_NAMESPACES_TABLE, 0);
  ------------------
  |  |   57|      2|#define YR_NAMESPACES_TABLE         0
  ------------------
  522|       |
  523|      2|  bool found = false;
  524|       |
  525|      2|  for (int i = 0; i < compiler->num_namespaces; i++, ns++)
  ------------------
  |  Branch (525:19): [True: 0, False: 2]
  ------------------
  526|      0|  {
  527|      0|    if (strcmp(ns->name, namespace_) == 0)
  ------------------
  |  Branch (527:9): [True: 0, False: 0]
  ------------------
  528|      0|    {
  529|      0|      found = true;
  530|      0|      compiler->current_namespace_idx = i;
  531|      0|      break;
  532|      0|    }
  533|      0|  }
  534|       |
  535|      2|  if (!found)
  ------------------
  |  Branch (535:7): [True: 2, False: 0]
  ------------------
  536|      2|  {
  537|      2|    YR_ARENA_REF ref;
  538|       |
  539|      2|    FAIL_ON_ERROR(yr_arena_allocate_struct(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  540|      2|        compiler->arena,
  541|      2|        YR_NAMESPACES_TABLE,
  542|      2|        sizeof(YR_NAMESPACE),
  543|      2|        &ref,
  544|      2|        offsetof(YR_NAMESPACE, name),
  545|      2|        EOL));
  546|       |
  547|      2|    ns = (YR_NAMESPACE*) yr_arena_ref_to_ptr(compiler->arena, &ref);
  548|       |
  549|      2|    FAIL_ON_ERROR(_yr_compiler_store_string(compiler, namespace_, &ref));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  550|       |
  551|      2|    ns->name = (const char*) yr_arena_ref_to_ptr(compiler->arena, &ref);
  552|      2|    ns->idx = compiler->num_namespaces;
  553|       |
  554|      2|    compiler->current_namespace_idx = compiler->num_namespaces;
  555|      2|    compiler->num_namespaces++;
  556|      2|  }
  557|       |
  558|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  559|      2|}
compiler.c:_yr_compiler_compile_rules:
  683|      2|{
  684|      2|  YR_RULE null_rule;
  685|      2|  YR_EXTERNAL_VARIABLE null_external;
  686|       |
  687|      2|  uint8_t halt = OP_HALT;
  ------------------
  |  |   46|      2|#define OP_HALT  255
  ------------------
  688|       |
  689|       |  // Write halt instruction at the end of code.
  690|      2|  FAIL_ON_ERROR(yr_arena_write_data(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  691|      2|      compiler->arena, YR_CODE_SECTION, &halt, sizeof(uint8_t), NULL));
  692|       |
  693|       |  // Write a null rule indicating the end.
  694|      2|  memset(&null_rule, 0xFA, sizeof(YR_RULE));
  695|      2|  null_rule.flags = RULE_FLAGS_NULL;
  ------------------
  |  |   54|      2|#define RULE_FLAGS_NULL     0x04
  ------------------
  696|       |
  697|      2|  FAIL_ON_ERROR(yr_arena_write_data(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  698|      2|      compiler->arena, YR_RULES_TABLE, &null_rule, sizeof(YR_RULE), NULL));
  699|       |
  700|       |  // Write a null external indicating the end.
  701|      2|  memset(&null_external, 0xFA, sizeof(YR_EXTERNAL_VARIABLE));
  702|      2|  null_external.type = EXTERNAL_VARIABLE_TYPE_NULL;
  ------------------
  |  |  144|      2|#define EXTERNAL_VARIABLE_TYPE_NULL          0
  ------------------
  703|       |
  704|      2|  FAIL_ON_ERROR(yr_arena_write_data(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  705|      2|      compiler->arena,
  706|      2|      YR_EXTERNAL_VARIABLES_TABLE,
  707|      2|      &null_external,
  708|      2|      sizeof(YR_EXTERNAL_VARIABLE),
  709|      2|      NULL));
  710|       |
  711|       |  // Write Aho-Corasick automaton to arena.
  712|      2|  FAIL_ON_ERROR(yr_ac_compile(compiler->automaton, compiler->arena));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  713|       |
  714|      2|  YR_ARENA_REF ref;
  715|       |
  716|      2|  FAIL_ON_ERROR(yr_arena_allocate_struct(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  717|      2|      compiler->arena, YR_SUMMARY_SECTION, sizeof(YR_SUMMARY), &ref, EOL));
  718|       |
  719|      2|  YR_SUMMARY* summary = (YR_SUMMARY*) yr_arena_ref_to_ptr(
  720|      2|      compiler->arena, &ref);
  721|       |
  722|      2|  summary->num_namespaces = compiler->num_namespaces;
  723|      2|  summary->num_rules = compiler->next_rule_idx;
  724|      2|  summary->num_strings = compiler->current_string_idx;
  725|       |
  726|      2|  return yr_rules_from_arena(compiler->arena, &compiler->rules);
  727|      2|}

yr_execute_code:
  419|  2.76k|{
  420|  2.76k|  YR_DEBUG_FPRINTF(2, stderr, "+ %s() {\n", __FUNCTION__);
  421|       |
  422|  2.76k|  const uint8_t* ip = context->rules->code_start;
  423|       |
  424|  2.76k|  YR_VALUE mem[MEM_SIZE];
  425|  2.76k|  YR_VALUE args[YR_MAX_FUNCTION_ARGS];
  426|  2.76k|  YR_VALUE r1;
  427|  2.76k|  YR_VALUE r2;
  428|  2.76k|  YR_VALUE r3;
  429|  2.76k|  YR_VALUE r4;
  430|       |
  431|  2.76k|  YR_VALUE_STACK stack;
  432|       |
  433|  2.76k|  uint64_t elapsed_time;
  434|       |
  435|       |#ifdef YR_PROFILING_ENABLED
  436|       |  uint64_t start_time;
  437|       |#endif
  438|       |
  439|  2.76k|  uint32_t current_rule_idx = 0;
  440|  2.76k|  YR_RULE* current_rule = NULL;
  441|  2.76k|  YR_RULE* rule;
  442|  2.76k|  YR_MATCH* match;
  443|  2.76k|  YR_OBJECT_FUNCTION* function;
  444|  2.76k|  YR_OBJECT** obj_ptr;
  445|  2.76k|  YR_ARENA* obj_arena;
  446|  2.76k|  YR_NOTEBOOK* it_notebook;
  447|       |
  448|  2.76k|  char* identifier;
  449|  2.76k|  char* args_fmt;
  450|       |
  451|  2.76k|  int found;
  452|  2.76k|  int count;
  453|  2.76k|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  454|  2.76k|  int cycle = 0;
  455|  2.76k|  int obj_count = 0;
  456|       |
  457|  2.76k|  bool stop = false;
  458|       |
  459|  2.76k|  uint8_t opcode;
  460|       |
  461|  2.76k|  yr_get_configuration_uint32(YR_CONFIG_STACK_SIZE, &stack.capacity);
  462|       |
  463|  2.76k|  stack.sp = 0;
  464|  2.76k|  stack.items = (YR_VALUE*) yr_malloc(stack.capacity * sizeof(YR_VALUE));
  465|       |
  466|  2.76k|  if (stack.items == NULL)
  ------------------
  |  Branch (466:7): [True: 0, False: 2.76k]
  ------------------
  467|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  468|       |
  469|  2.76k|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  2.76k|  {                                            \
  |  |  141|  2.76k|    int __error = (x);                         \
  |  |  142|  2.76k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  143|  2.76k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  2.76k|  }
  ------------------
  470|  2.76k|      yr_arena_create(1, 512 * sizeof(YR_OBJECT*), &obj_arena),
  471|  2.76k|      yr_free(stack.items));
  472|       |
  473|  2.76k|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  2.76k|  {                                            \
  |  |  141|  2.76k|    int __error = (x);                         \
  |  |  142|  2.76k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  143|  2.76k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  2.76k|  }
  ------------------
  474|  2.76k|      yr_notebook_create(512 * sizeof(YR_ITERATOR), &it_notebook),
  475|  2.76k|      yr_arena_release(obj_arena);
  476|  2.76k|      yr_free(stack.items));
  477|       |
  478|       |#ifdef YR_PROFILING_ENABLED
  479|       |  start_time = yr_stopwatch_elapsed_ns(&context->stopwatch);
  480|       |#endif
  481|       |
  482|  2.76k|#if YR_PARANOID_EXEC
  483|  2.76k|  memset(mem, 0, MEM_SIZE * sizeof(mem[0]));
  ------------------
  |  |   51|  2.76k|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |   96|  2.76k|#define YR_MAX_LOOP_NESTING 4
  |  |  ------------------
  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |  103|  2.76k|#define YR_MAX_LOOP_VARS 2
  |  |  ------------------
  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |   76|  2.76k|#define YR_INTERNAL_LOOP_VARS 3
  |  |  ------------------
  ------------------
  484|  2.76k|#endif
  485|       |
  486|  8.30k|  while (!stop)
  ------------------
  |  Branch (486:10): [True: 5.53k, False: 2.76k]
  ------------------
  487|  5.53k|  {
  488|       |    // Read the opcode from the address indicated by the instruction pointer.
  489|  5.53k|    opcode = *ip;
  490|       |
  491|       |    // Advance the instruction pointer, which now points past the opcode.
  492|  5.53k|    ip++;
  493|       |
  494|  5.53k|    switch (opcode)
  495|  5.53k|    {
  496|      0|    case OP_NOP:
  ------------------
  |  |   47|      0|#define OP_NOP   254
  ------------------
  |  Branch (496:5): [True: 0, False: 5.53k]
  ------------------
  497|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_NOP: // %s()\n", __FUNCTION__);
  498|      0|      break;
  499|       |
  500|  2.76k|    case OP_HALT:
  ------------------
  |  |   46|  2.76k|#define OP_HALT  255
  ------------------
  |  Branch (500:5): [True: 2.76k, False: 2.76k]
  ------------------
  501|  2.76k|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_HALT: // %s()\n", __FUNCTION__);
  502|  2.76k|      assert(stack.sp == 0);  // When HALT is reached the stack should be empty.
  503|  2.76k|      stop = true;
  504|  2.76k|      break;
  505|       |
  506|      0|    case OP_ITER_START_ARRAY:
  ------------------
  |  |  102|      0|#define OP_ITER_START_ARRAY           54
  ------------------
  |  Branch (506:5): [True: 0, False: 5.53k]
  ------------------
  507|      0|      YR_DEBUG_FPRINTF(
  508|      0|          2, stderr, "- case OP_ITER_START_ARRAY: // %s()\n", __FUNCTION__);
  509|      0|      r2.p = yr_notebook_alloc(it_notebook, sizeof(YR_ITERATOR));
  510|       |
  511|      0|      if (r2.p == NULL)
  ------------------
  |  Branch (511:11): [True: 0, False: 0]
  ------------------
  512|      0|      {
  513|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  514|      0|      }
  515|      0|      else
  516|      0|      {
  517|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  518|      0|        r2.it->array_it.array = r1.o;
  519|      0|        r2.it->array_it.index = 0;
  520|      0|        r2.it->next_func_idx = ITER_NEXT_ARRAY;
  ------------------
  |  |  411|      0|#define ITER_NEXT_ARRAY           0
  ------------------
  521|      0|        push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  522|      0|      }
  523|       |
  524|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  525|      0|      break;
  526|       |
  527|      0|    case OP_ITER_START_DICT:
  ------------------
  |  |  103|      0|#define OP_ITER_START_DICT            55
  ------------------
  |  Branch (527:5): [True: 0, False: 5.53k]
  ------------------
  528|      0|      YR_DEBUG_FPRINTF(
  529|      0|          2, stderr, "- case OP_ITER_START_DICT: // %s()\n", __FUNCTION__);
  530|      0|      r2.p = yr_notebook_alloc(it_notebook, sizeof(YR_ITERATOR));
  531|       |
  532|      0|      if (r2.p == NULL)
  ------------------
  |  Branch (532:11): [True: 0, False: 0]
  ------------------
  533|      0|      {
  534|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  535|      0|      }
  536|      0|      else
  537|      0|      {
  538|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  539|      0|        r2.it->dict_it.dict = r1.o;
  540|      0|        r2.it->dict_it.index = 0;
  541|      0|        r2.it->next_func_idx = ITER_NEXT_DICT;
  ------------------
  |  |  412|      0|#define ITER_NEXT_DICT            1
  ------------------
  542|      0|        push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  543|      0|      }
  544|       |
  545|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  546|      0|      break;
  547|       |
  548|      0|    case OP_ITER_START_INT_RANGE:
  ------------------
  |  |  104|      0|#define OP_ITER_START_INT_RANGE       56
  ------------------
  |  Branch (548:5): [True: 0, False: 5.53k]
  ------------------
  549|      0|      YR_DEBUG_FPRINTF(
  550|      0|          2, stderr, "- case OP_ITER_START_INT_RANGE: // %s()\n", __FUNCTION__);
  551|       |      // Creates an iterator for an integer range. The higher bound of the
  552|       |      // range is at the top of the stack followed by the lower bound.
  553|      0|      r3.p = yr_notebook_alloc(it_notebook, sizeof(YR_ITERATOR));
  554|       |
  555|      0|      if (r3.p == NULL)
  ------------------
  |  Branch (555:11): [True: 0, False: 0]
  ------------------
  556|      0|      {
  557|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  558|      0|      }
  559|      0|      else
  560|      0|      {
  561|      0|        pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  562|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  563|      0|        r3.it->int_range_it.next = r1.i;
  564|      0|        r3.it->int_range_it.last = r2.i;
  565|      0|        r3.it->next_func_idx = ITER_NEXT_INT_RANGE;
  ------------------
  |  |  413|      0|#define ITER_NEXT_INT_RANGE       2
  ------------------
  566|      0|        push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  567|      0|      }
  568|       |
  569|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  570|      0|      break;
  571|       |
  572|      0|    case OP_ITER_START_INT_ENUM:
  ------------------
  |  |  105|      0|#define OP_ITER_START_INT_ENUM        57
  ------------------
  |  Branch (572:5): [True: 0, False: 5.53k]
  ------------------
  573|      0|      YR_DEBUG_FPRINTF(
  574|      0|          2, stderr, "- case OP_ITER_START_INT_ENUM: // %s()\n", __FUNCTION__);
  575|       |      // Creates an iterator for an integer enumeration. The number of items
  576|       |      // in the enumeration is at the top of the stack, followed by the
  577|       |      // items in reverse order.
  578|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  579|       |
  580|      0|      r3.p = yr_notebook_alloc(
  581|      0|          it_notebook, sizeof(YR_ITERATOR) + sizeof(uint64_t) * (size_t) r1.i);
  582|       |
  583|      0|      if (r3.p == NULL)
  ------------------
  |  Branch (583:11): [True: 0, False: 0]
  ------------------
  584|      0|      {
  585|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  586|      0|      }
  587|      0|      else
  588|      0|      {
  589|      0|        r3.it->int_enum_it.count = r1.i;
  590|      0|        r3.it->int_enum_it.next = 0;
  591|      0|        r3.it->next_func_idx = ITER_NEXT_INT_ENUM;
  ------------------
  |  |  414|      0|#define ITER_NEXT_INT_ENUM        3
  ------------------
  592|       |
  593|      0|        for (int64_t i = r1.i; i > 0; i--)
  ------------------
  |  Branch (593:32): [True: 0, False: 0]
  ------------------
  594|      0|        {
  595|      0|          pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  596|      0|          r3.it->int_enum_it.items[i - 1] = r2.i;
  597|      0|        }
  598|       |
  599|      0|        push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  600|      0|      }
  601|       |
  602|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  603|      0|      break;
  604|       |
  605|      0|    case OP_ITER_START_STRING_SET:
  ------------------
  |  |  106|      0|#define OP_ITER_START_STRING_SET      58
  ------------------
  |  Branch (605:5): [True: 0, False: 5.53k]
  ------------------
  606|      0|      YR_DEBUG_FPRINTF(
  607|      0|          2,
  608|      0|          stderr,
  609|      0|          "- case OP_ITER_START_STRING_SET: // %s()\n",
  610|      0|          __FUNCTION__);
  611|       |
  612|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  613|       |
  614|      0|      r3.p = yr_notebook_alloc(
  615|      0|          it_notebook,
  616|      0|          sizeof(YR_ITERATOR) + sizeof(YR_STRING*) * (size_t) r1.i);
  617|       |
  618|      0|      if (r3.p == NULL)
  ------------------
  |  Branch (618:11): [True: 0, False: 0]
  ------------------
  619|      0|      {
  620|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  621|      0|      }
  622|      0|      else
  623|      0|      {
  624|      0|        r3.it->string_set_it.count = r1.i;
  625|      0|        r3.it->string_set_it.index = 0;
  626|      0|        r3.it->next_func_idx = ITER_NEXT_STRING_SET;
  ------------------
  |  |  415|      0|#define ITER_NEXT_STRING_SET      4
  ------------------
  627|       |
  628|      0|        for (int64_t i = r1.i; i > 0; i--)
  ------------------
  |  Branch (628:32): [True: 0, False: 0]
  ------------------
  629|      0|        {
  630|      0|          pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  631|      0|          r3.it->string_set_it.strings[i - 1] = r2.s;
  632|      0|        }
  633|       |
  634|       |        // One last pop of the UNDEFINED string
  635|      0|        pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  636|      0|        push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  637|      0|      }
  638|       |
  639|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  640|      0|      break;
  641|       |
  642|      0|    case OP_ITER_START_TEXT_STRING_SET:
  ------------------
  |  |  126|      0|#define OP_ITER_START_TEXT_STRING_SET 78
  ------------------
  |  Branch (642:5): [True: 0, False: 5.53k]
  ------------------
  643|      0|      YR_DEBUG_FPRINTF(
  644|      0|          2,
  645|      0|          stderr,
  646|      0|          "- case OP_ITER_START_TEXT_STRING_SET: // %s()\n",
  647|      0|          __FUNCTION__);
  648|       |
  649|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  650|       |
  651|      0|      r3.p = yr_notebook_alloc(
  652|      0|          it_notebook,
  653|      0|          sizeof(YR_ITERATOR) + sizeof(SIZED_STRING*) * (size_t) r1.i);
  654|       |
  655|      0|      if (r3.p == NULL)
  ------------------
  |  Branch (655:11): [True: 0, False: 0]
  ------------------
  656|      0|      {
  657|      0|        result = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  658|      0|      }
  659|      0|      else
  660|      0|      {
  661|      0|        r3.it->text_string_set_it.count = r1.i;
  662|      0|        r3.it->text_string_set_it.index = 0;
  663|      0|        r3.it->next_func_idx = ITER_NEXT_TEXT_STRING_SET;
  ------------------
  |  |  416|      0|#define ITER_NEXT_TEXT_STRING_SET 5
  ------------------
  664|       |
  665|      0|        for (int64_t i = r1.i; i > 0; i--)
  ------------------
  |  Branch (665:32): [True: 0, False: 0]
  ------------------
  666|      0|        {
  667|      0|          pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  668|      0|          r3.it->text_string_set_it.strings[i - 1] = r2.ss;
  669|      0|        }
  670|       |
  671|      0|        push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  672|      0|      }
  673|       |
  674|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  675|      0|      break;
  676|       |
  677|      0|    case OP_ITER_NEXT:
  ------------------
  |  |  101|      0|#define OP_ITER_NEXT                  53
  ------------------
  |  Branch (677:5): [True: 0, False: 5.53k]
  ------------------
  678|      0|      YR_DEBUG_FPRINTF(
  679|      0|          2, stderr, "- case OP_ITER_NEXT: // %s()\n", __FUNCTION__);
  680|       |      // Loads the iterator in r1, but leaves the iterator in the stack.
  681|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  682|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  683|       |
  684|      0|      if (r1.it->next_func_idx <
  ------------------
  |  Branch (684:11): [True: 0, False: 0]
  ------------------
  685|      0|          sizeof(iter_next_func_table) / sizeof(YR_ITERATOR_NEXT_FUNC))
  686|      0|      {
  687|       |        // The iterator's next function is responsible for pushing the next
  688|       |        // item in the stack, and a boolean indicating if there are more items
  689|       |        // to retrieve. The boolean will be at the top of the stack after
  690|       |        // calling "next".
  691|      0|        result = iter_next_func_table[r1.it->next_func_idx](r1.it, &stack);
  692|      0|      }
  693|      0|      else
  694|      0|      {
  695|       |        // next_func_idx is outside the valid range, this should not happend.
  696|      0|        result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  697|      0|      }
  698|       |
  699|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  700|      0|      break;
  701|       |
  702|      0|    case OP_ITER_CONDITION:
  ------------------
  |  |  107|      0|#define OP_ITER_CONDITION             59
  ------------------
  |  Branch (702:5): [True: 0, False: 5.53k]
  ------------------
  703|      0|      YR_DEBUG_FPRINTF(
  704|      0|          2, stderr, "- case OP_ITER_CONDITION: // %s()\n", __FUNCTION__);
  705|       |
  706|       |      // Evaluate the iteration condition of the loop. This instruction
  707|       |      // evaluates to 1 if the loop should continue and 0 if it shouldn't
  708|       |      // (due to short-circuit evaluation).
  709|       |
  710|      0|      pop(r2);  // min. expression - all, any, none, integer
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  711|      0|      pop(r3);  // number of true expressions
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  712|      0|      pop(r4);  // last expression result
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  713|       |
  714|       |      // In case of 'all' loop, end once we the body failed
  715|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  716|      0|      {
  717|      0|        r1.i = r4.i != 0 ? 1 : 0;
  ------------------
  |  Branch (717:16): [True: 0, False: 0]
  ------------------
  718|      0|      }
  719|       |      // In case of 'none' loop, end once the body succeed
  720|      0|      else if (r2.i == 0)
  ------------------
  |  Branch (720:16): [True: 0, False: 0]
  ------------------
  721|      0|      {
  722|      0|        r1.i = r4.i != 1 ? 1 : 0;
  ------------------
  |  Branch (722:16): [True: 0, False: 0]
  ------------------
  723|      0|      }
  724|       |      // In case of other loops, end once we satified min. expr.
  725|      0|      else
  726|      0|      {
  727|      0|        r1.i = r3.i + r4.i < r2.i ? 1 : 0;
  ------------------
  |  Branch (727:16): [True: 0, False: 0]
  ------------------
  728|      0|      }
  729|       |
  730|       |      // Push whether loop should continue and repush
  731|       |      // the last expression result
  732|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  733|      0|      push(r4);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  734|      0|      break;
  735|       |
  736|      0|    case OP_ITER_END:
  ------------------
  |  |  108|      0|#define OP_ITER_END                   60
  ------------------
  |  Branch (736:5): [True: 0, False: 5.53k]
  ------------------
  737|      0|      YR_DEBUG_FPRINTF(
  738|      0|          2, stderr, "- case OP_ITER_END: // %s()\n", __FUNCTION__);
  739|       |
  740|       |      // Evaluate the whole loop. Whether it was successful or not
  741|       |      // and whether it satisfied it's quantifier.
  742|       |
  743|      0|      pop(r2);  // min. expression - all, any, none, integer
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  744|      0|      pop(r3);  // number of true expressions
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  745|      0|      pop(r4);  // number of total iterations
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  746|       |
  747|       |      // If there was 0 iterations in total, it doesn't
  748|       |      // matter what other numbers show. We can't evaluate
  749|       |      // the loop as true.
  750|      0|      if (r4.i == 0)
  ------------------
  |  Branch (750:11): [True: 0, False: 0]
  ------------------
  751|      0|      {
  752|      0|        r1.i = 0;
  753|      0|      }
  754|      0|      else if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  755|      0|      {
  756|      0|        r1.i = r3.i == r4.i ? 1 : 0;
  ------------------
  |  Branch (756:16): [True: 0, False: 0]
  ------------------
  757|      0|      }
  758|      0|      else if (r2.i == 0)
  ------------------
  |  Branch (758:16): [True: 0, False: 0]
  ------------------
  759|      0|      {
  760|      0|        r1.i = r3.i == 0 ? 1 : 0;
  ------------------
  |  Branch (760:16): [True: 0, False: 0]
  ------------------
  761|      0|      }
  762|      0|      else
  763|      0|      {
  764|      0|        r1.i = r3.i >= r2.i ? 1 : 0;
  ------------------
  |  Branch (764:16): [True: 0, False: 0]
  ------------------
  765|      0|      }
  766|       |
  767|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  768|      0|      break;
  769|       |
  770|      0|    case OP_PUSH:
  ------------------
  |  |   61|      0|#define OP_PUSH                       13
  ------------------
  |  Branch (770:5): [True: 0, False: 5.53k]
  ------------------
  771|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_PUSH: // %s()\n", __FUNCTION__);
  772|      0|      r1.i = yr_unaligned_u64(ip);
  773|      0|      ip += sizeof(uint64_t);
  774|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  775|      0|      break;
  776|       |
  777|      0|    case OP_PUSH_8:
  ------------------
  |  |  111|      0|#define OP_PUSH_8                     63
  ------------------
  |  Branch (777:5): [True: 0, False: 5.53k]
  ------------------
  778|      0|      r1.i = *ip;
  779|      0|      YR_DEBUG_FPRINTF(
  780|      0|          2,
  781|      0|          stderr,
  782|      0|          "- case OP_PUSH_8: r1.i=%" PRId64 " // %s()\n",
  783|      0|          r1.i,
  784|      0|          __FUNCTION__);
  785|      0|      ip += sizeof(uint8_t);
  786|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  787|      0|      break;
  788|       |
  789|      0|    case OP_PUSH_16:
  ------------------
  |  |  112|      0|#define OP_PUSH_16                    64
  ------------------
  |  Branch (789:5): [True: 0, False: 5.53k]
  ------------------
  790|      0|      r1.i = yr_unaligned_u16(ip);
  791|      0|      YR_DEBUG_FPRINTF(
  792|      0|          2,
  793|      0|          stderr,
  794|      0|          "- case OP_PUSH_16: r1.i=%" PRId64 " // %s()\n",
  795|      0|          r1.i,
  796|      0|          __FUNCTION__);
  797|      0|      ip += sizeof(uint16_t);
  798|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  799|      0|      break;
  800|       |
  801|      0|    case OP_PUSH_32:
  ------------------
  |  |  113|      0|#define OP_PUSH_32                    65
  ------------------
  |  Branch (801:5): [True: 0, False: 5.53k]
  ------------------
  802|      0|      r1.i = yr_unaligned_u32(ip);
  803|      0|      YR_DEBUG_FPRINTF(
  804|      0|          2,
  805|      0|          stderr,
  806|      0|          "- case OP_PUSH_32: r1.i=%" PRId64 " // %s()\n",
  807|      0|          r1.i,
  808|      0|          __FUNCTION__);
  809|      0|      ip += sizeof(uint32_t);
  810|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  811|      0|      break;
  812|       |
  813|      0|    case OP_PUSH_U:
  ------------------
  |  |  114|      0|#define OP_PUSH_U                     66
  ------------------
  |  Branch (813:5): [True: 0, False: 5.53k]
  ------------------
  814|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_PUSH_U: // %s()\n", __FUNCTION__);
  815|      0|      r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  816|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  817|      0|      break;
  818|       |
  819|      0|    case OP_POP:
  ------------------
  |  |   62|      0|#define OP_POP                        14
  ------------------
  |  Branch (819:5): [True: 0, False: 5.53k]
  ------------------
  820|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_POP: // %s()\n", __FUNCTION__);
  821|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  822|      0|      break;
  823|       |
  824|      0|    case OP_CLEAR_M:
  ------------------
  |  |   79|      0|#define OP_CLEAR_M                    31
  ------------------
  |  Branch (824:5): [True: 0, False: 5.53k]
  ------------------
  825|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_CLEAR_M: // %s()\n", __FUNCTION__);
  826|      0|      r1.i = yr_unaligned_u64(ip);
  827|      0|      ip += sizeof(uint64_t);
  828|      0|#if YR_PARANOID_EXEC
  829|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  830|      0|#endif
  831|      0|      mem[r1.i].i = 0;
  832|      0|      break;
  833|       |
  834|      0|    case OP_ADD_M:
  ------------------
  |  |   80|      0|#define OP_ADD_M                      32
  ------------------
  |  Branch (834:5): [True: 0, False: 5.53k]
  ------------------
  835|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_ADD_M: // %s()\n", __FUNCTION__);
  836|      0|      r1.i = yr_unaligned_u64(ip);
  837|      0|      ip += sizeof(uint64_t);
  838|      0|#if YR_PARANOID_EXEC
  839|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  840|      0|#endif
  841|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  842|      0|      if (!is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (842:11): [True: 0, False: 0]
  ------------------
  843|      0|        mem[r1.i].i += r2.i;
  844|      0|      break;
  845|       |
  846|      0|    case OP_INCR_M:
  ------------------
  |  |   78|      0|#define OP_INCR_M                     30
  ------------------
  |  Branch (846:5): [True: 0, False: 5.53k]
  ------------------
  847|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INCR_M: // %s()\n", __FUNCTION__);
  848|      0|      r1.i = yr_unaligned_u64(ip);
  849|      0|      ip += sizeof(uint64_t);
  850|      0|#if YR_PARANOID_EXEC
  851|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  852|      0|#endif
  853|      0|      mem[r1.i].i++;
  854|      0|      break;
  855|       |
  856|      0|    case OP_PUSH_M:
  ------------------
  |  |   82|      0|#define OP_PUSH_M                     34
  ------------------
  |  Branch (856:5): [True: 0, False: 5.53k]
  ------------------
  857|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_PUSH_M: // %s()\n", __FUNCTION__);
  858|      0|      r1.i = yr_unaligned_u64(ip);
  859|      0|      ip += sizeof(uint64_t);
  860|      0|#if YR_PARANOID_EXEC
  861|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  862|      0|#endif
  863|      0|      r1 = mem[r1.i];
  864|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  865|      0|      break;
  866|       |
  867|      0|    case OP_POP_M:
  ------------------
  |  |   81|      0|#define OP_POP_M                      33
  ------------------
  |  Branch (867:5): [True: 0, False: 5.53k]
  ------------------
  868|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_POP_M: // %s()\n", __FUNCTION__);
  869|      0|      r1.i = yr_unaligned_u64(ip);
  870|      0|      ip += sizeof(uint64_t);
  871|      0|#if YR_PARANOID_EXEC
  872|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  873|      0|#endif
  874|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  875|      0|      mem[r1.i] = r2;
  876|      0|      break;
  877|       |
  878|      0|    case OP_SET_M:
  ------------------
  |  |   83|      0|#define OP_SET_M                      35
  ------------------
  |  Branch (878:5): [True: 0, False: 5.53k]
  ------------------
  879|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_SET_M: // %s()\n", __FUNCTION__);
  880|      0|      r1.i = yr_unaligned_u64(ip);
  881|      0|      ip += sizeof(uint64_t);
  882|      0|#if YR_PARANOID_EXEC
  883|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  884|      0|#endif
  885|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  886|      0|      push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  887|      0|      if (!is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (887:11): [True: 0, False: 0]
  ------------------
  888|      0|        mem[r1.i] = r2;
  889|      0|      break;
  890|       |
  891|      0|    case OP_SWAPUNDEF:
  ------------------
  |  |   84|      0|#define OP_SWAPUNDEF                  36
  ------------------
  |  Branch (891:5): [True: 0, False: 5.53k]
  ------------------
  892|      0|      YR_DEBUG_FPRINTF(
  893|      0|          2, stderr, "- case OP_SWAPUNDEF: // %s()\n", __FUNCTION__);
  894|      0|      r1.i = yr_unaligned_u64(ip);
  895|      0|      ip += sizeof(uint64_t);
  896|      0|#if YR_PARANOID_EXEC
  897|      0|      ensure_within_mem(r1.i);
  ------------------
  |  |   82|      0|  if (x < 0 || x >= MEM_SIZE)            \
  |  |  ------------------
  |  |  |  |   51|      0|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  |  |  |  |  ------------------
  |  |  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:7): [True: 0, False: 0]
  |  |  |  Branch (82:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   83|      0|  {                                      \
  |  |   84|      0|    stop = true;                         \
  |  |   85|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   86|      0|    break;                               \
  |  |   87|      0|  }
  ------------------
  898|      0|#endif
  899|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  900|       |
  901|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  902|      0|      {
  903|      0|        r1 = mem[r1.i];
  904|      0|        push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  905|      0|      }
  906|      0|      else
  907|      0|      {
  908|      0|        push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  909|      0|      }
  910|      0|      break;
  911|       |
  912|      0|    case OP_JNUNDEF:
  ------------------
  |  |   93|      0|#define OP_JNUNDEF                    45
  ------------------
  |  Branch (912:5): [True: 0, False: 5.53k]
  ------------------
  913|       |      // Jump if the top the stack is not undefined without modifying the stack.
  914|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JNUNDEF: // %s()\n", __FUNCTION__);
  915|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  916|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  917|      0|      ip = jmp_if(!is_undef(r1), ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  918|      0|      break;
  919|       |
  920|      0|    case OP_JUNDEF_P:
  ------------------
  |  |   92|      0|#define OP_JUNDEF_P                   44
  ------------------
  |  Branch (920:5): [True: 0, False: 5.53k]
  ------------------
  921|       |      // Removes a value from the top of the stack and jump if the value is not
  922|       |      // undefined.
  923|      0|      YR_DEBUG_FPRINTF(
  924|      0|          2, stderr, "- case OP_JUNDEF_P: // %s()\n", __FUNCTION__);
  925|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  926|      0|      ip = jmp_if(is_undef(r1), ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  927|      0|      break;
  928|       |
  929|      0|    case OP_JL_P:
  ------------------
  |  |   99|      0|#define OP_JL_P                       51
  ------------------
  |  Branch (929:5): [True: 0, False: 5.53k]
  ------------------
  930|       |      // Pops two values A and B from the stack and jump if A < B. B is popped
  931|       |      // first, and then A.
  932|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JL_P: // %s()\n", __FUNCTION__);
  933|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  934|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  935|      0|      ip = jmp_if(r1.i < r2.i, ip);
  936|      0|      break;
  937|       |
  938|      0|    case OP_JLE_P:
  ------------------
  |  |  100|      0|#define OP_JLE_P                      52
  ------------------
  |  Branch (938:5): [True: 0, False: 5.53k]
  ------------------
  939|       |      // Pops two values A and B from the stack and jump if A <= B. B is popped
  940|       |      // first, and then A.
  941|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JLE_P: // %s()\n", __FUNCTION__);
  942|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  943|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  944|      0|      ip = jmp_if(r1.i <= r2.i, ip);
  945|      0|      break;
  946|       |
  947|      0|    case OP_JTRUE:
  ------------------
  |  |   97|      0|#define OP_JTRUE                      49
  ------------------
  |  Branch (947:5): [True: 0, False: 5.53k]
  ------------------
  948|       |      // Jump if the top of the stack is true without modifying the stack. If
  949|       |      // the top of the stack is undefined the jump is not taken.
  950|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JTRUE: // %s()\n", __FUNCTION__);
  951|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  952|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  953|      0|      ip = jmp_if(!is_undef(r1) && r1.i, ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (953:19): [True: 0, False: 0]
  |  Branch (953:36): [True: 0, False: 0]
  ------------------
  954|      0|      break;
  955|       |
  956|      0|    case OP_JTRUE_P:
  ------------------
  |  |   98|      0|#define OP_JTRUE_P                    50
  ------------------
  |  Branch (956:5): [True: 0, False: 5.53k]
  ------------------
  957|       |      // Removes a value from the stack and jump if it is true. If the value
  958|       |      // is undefined the jump is not taken.
  959|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JTRUE_P: // %s()\n", __FUNCTION__);
  960|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  961|      0|      ip = jmp_if(!is_undef(r1) && r1.i, ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (961:19): [True: 0, False: 0]
  |  Branch (961:36): [True: 0, False: 0]
  ------------------
  962|      0|      break;
  963|       |
  964|      0|    case OP_JFALSE:
  ------------------
  |  |   95|      0|#define OP_JFALSE                     47
  ------------------
  |  Branch (964:5): [True: 0, False: 5.53k]
  ------------------
  965|       |      // Jump if the top of the stack is false without modifying the stack. If
  966|       |      // the top of the stack is undefined the jump is not taken.
  967|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JFALSE: // %s()\n", __FUNCTION__);
  968|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  969|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  970|      0|      ip = jmp_if(!is_undef(r1) && !r1.i, ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (970:19): [True: 0, False: 0]
  |  Branch (970:36): [True: 0, False: 0]
  ------------------
  971|      0|      break;
  972|       |
  973|      0|    case OP_JFALSE_P:
  ------------------
  |  |   96|      0|#define OP_JFALSE_P                   48
  ------------------
  |  Branch (973:5): [True: 0, False: 5.53k]
  ------------------
  974|       |      // Removes a value from the stack and jump if it is false. If the value
  975|       |      // is undefined the jump is not taken.
  976|      0|      YR_DEBUG_FPRINTF(
  977|      0|          2, stderr, "- case OP_JFALSE_P: // %s()\n", __FUNCTION__);
  978|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  979|      0|      ip = jmp_if(!is_undef(r1) && !r1.i, ip);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (979:19): [True: 0, False: 0]
  |  Branch (979:36): [True: 0, False: 0]
  ------------------
  980|      0|      break;
  981|       |
  982|      0|    case OP_JZ:
  ------------------
  |  |  109|      0|#define OP_JZ                         61
  ------------------
  |  Branch (982:5): [True: 0, False: 5.53k]
  ------------------
  983|       |      // Jump if the value at the top of the stack is 0 without modifying the
  984|       |      // stack.
  985|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JZ: // %s()\n", __FUNCTION__);
  986|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  987|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
  988|      0|      ip = jmp_if(r1.i == 0, ip);
  989|      0|      break;
  990|       |
  991|      0|    case OP_JZ_P:
  ------------------
  |  |  110|      0|#define OP_JZ_P                       62
  ------------------
  |  Branch (991:5): [True: 0, False: 5.53k]
  ------------------
  992|       |      // Removes a value from the stack and jump if the value is 0.
  993|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_JZ_P: // %s()\n", __FUNCTION__);
  994|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  995|      0|      ip = jmp_if(r1.i == 0, ip);
  996|      0|      break;
  997|       |
  998|      0|    case OP_AND:
  ------------------
  |  |   49|      0|#define OP_AND                        1
  ------------------
  |  Branch (998:5): [True: 0, False: 5.53k]
  ------------------
  999|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_AND: // %s()\n", __FUNCTION__);
 1000|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1001|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1002|       |
 1003|      0|      if (is_undef(r1))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1004|      0|        r1.i = 0;
 1005|       |
 1006|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1007|      0|        r2.i = 0;
 1008|       |
 1009|      0|      r1.i = r1.i && r2.i;
  ------------------
  |  Branch (1009:14): [True: 0, False: 0]
  |  Branch (1009:22): [True: 0, False: 0]
  ------------------
 1010|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1011|      0|      break;
 1012|       |
 1013|      0|    case OP_OR:
  ------------------
  |  |   50|      0|#define OP_OR                         2
  ------------------
  |  Branch (1013:5): [True: 0, False: 5.53k]
  ------------------
 1014|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_OR: // %s()\n", __FUNCTION__);
 1015|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1016|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1017|       |
 1018|      0|      if (is_undef(r1))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1019|      0|        r1.i = 0;
 1020|       |
 1021|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1022|      0|        r2.i = 0;
 1023|       |
 1024|      0|      r1.i = r1.i || r2.i;
  ------------------
  |  Branch (1024:14): [True: 0, False: 0]
  |  Branch (1024:22): [True: 0, False: 0]
  ------------------
 1025|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1026|      0|      break;
 1027|       |
 1028|      0|    case OP_NOT:
  ------------------
  |  |   51|      0|#define OP_NOT                        3
  ------------------
  |  Branch (1028:5): [True: 0, False: 5.53k]
  ------------------
 1029|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_NOT: // %s()\n", __FUNCTION__);
 1030|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1031|       |
 1032|      0|      if (is_undef(r1))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1033|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1034|      0|      else
 1035|      0|        r1.i = !r1.i;
 1036|       |
 1037|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1038|      0|      break;
 1039|       |
 1040|      0|    case OP_DEFINED:
  ------------------
  |  |  125|      0|#define OP_DEFINED                    77
  ------------------
  |  Branch (1040:5): [True: 0, False: 5.53k]
  ------------------
 1041|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1042|      0|      r1.i = !is_undef(r1);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1043|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1044|      0|      break;
 1045|       |
 1046|      0|    case OP_MOD:
  ------------------
  |  |   58|      0|#define OP_MOD                        10
  ------------------
  |  Branch (1046:5): [True: 0, False: 5.53k]
  ------------------
 1047|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_MOD: // %s()\n", __FUNCTION__);
 1048|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1049|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1050|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1051|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1052|       |      // If divisor is zero the result is undefined. It's also undefined
 1053|       |      // when dividing INT64_MIN by -1.
 1054|      0|      if (r2.i == 0 || (r1.i == INT64_MIN && r2.i == -1))
  ------------------
  |  Branch (1054:11): [True: 0, False: 0]
  |  Branch (1054:25): [True: 0, False: 0]
  |  Branch (1054:46): [True: 0, False: 0]
  ------------------
 1055|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1056|      0|      else
 1057|      0|        r1.i = r1.i % r2.i;
 1058|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1059|      0|      break;
 1060|       |
 1061|      0|    case OP_SHR:
  ------------------
  |  |   57|      0|#define OP_SHR                        9
  ------------------
  |  Branch (1061:5): [True: 0, False: 5.53k]
  ------------------
 1062|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_SHR: // %s()\n", __FUNCTION__);
 1063|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1064|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1065|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1066|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1067|      0|      if (r2.i < 0)
  ------------------
  |  Branch (1067:11): [True: 0, False: 0]
  ------------------
 1068|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1069|      0|      else if (r2.i < 64)
  ------------------
  |  Branch (1069:16): [True: 0, False: 0]
  ------------------
 1070|      0|        r1.i = r1.i >> r2.i;
 1071|      0|      else
 1072|      0|        r1.i = 0;
 1073|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1074|      0|      break;
 1075|       |
 1076|      0|    case OP_SHL:
  ------------------
  |  |   56|      0|#define OP_SHL                        8
  ------------------
  |  Branch (1076:5): [True: 0, False: 5.53k]
  ------------------
 1077|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_SHL: // %s()\n", __FUNCTION__);
 1078|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1079|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1080|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1081|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1082|      0|      if (r2.i < 0)
  ------------------
  |  Branch (1082:11): [True: 0, False: 0]
  ------------------
 1083|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1084|      0|      else if (r2.i < 64)
  ------------------
  |  Branch (1084:16): [True: 0, False: 0]
  ------------------
 1085|      0|        r1.i = r1.i << r2.i;
 1086|      0|      else
 1087|      0|        r1.i = 0;
 1088|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1089|      0|      break;
 1090|       |
 1091|      0|    case OP_BITWISE_NOT:
  ------------------
  |  |   52|      0|#define OP_BITWISE_NOT                4
  ------------------
  |  Branch (1091:5): [True: 0, False: 5.53k]
  ------------------
 1092|      0|      YR_DEBUG_FPRINTF(
 1093|      0|          2, stderr, "- case OP_BITWISE_NOT: // %s()\n", __FUNCTION__);
 1094|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1095|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1096|      0|      r1.i = ~r1.i;
 1097|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1098|      0|      break;
 1099|       |
 1100|      0|    case OP_BITWISE_AND:
  ------------------
  |  |   53|      0|#define OP_BITWISE_AND                5
  ------------------
  |  Branch (1100:5): [True: 0, False: 5.53k]
  ------------------
 1101|      0|      YR_DEBUG_FPRINTF(
 1102|      0|          2, stderr, "- case OP_BITWISE_AND: // %s()\n", __FUNCTION__);
 1103|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1104|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1105|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1106|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1107|      0|      r1.i = r1.i & r2.i;
 1108|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1109|      0|      break;
 1110|       |
 1111|      0|    case OP_BITWISE_OR:
  ------------------
  |  |   54|      0|#define OP_BITWISE_OR                 6
  ------------------
  |  Branch (1111:5): [True: 0, False: 5.53k]
  ------------------
 1112|      0|      YR_DEBUG_FPRINTF(
 1113|      0|          2, stderr, "- case OP_BITWISE_OR: // %s()\n", __FUNCTION__);
 1114|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1115|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1116|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1117|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1118|      0|      r1.i = r1.i | r2.i;
 1119|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1120|      0|      break;
 1121|       |
 1122|      0|    case OP_BITWISE_XOR:
  ------------------
  |  |   55|      0|#define OP_BITWISE_XOR                7
  ------------------
  |  Branch (1122:5): [True: 0, False: 5.53k]
  ------------------
 1123|      0|      YR_DEBUG_FPRINTF(
 1124|      0|          2, stderr, "- case OP_BITWISE_XOR: // %s()\n", __FUNCTION__);
 1125|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1126|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1127|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1128|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1129|      0|      r1.i = r1.i ^ r2.i;
 1130|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1131|      0|      break;
 1132|       |
 1133|      0|    case OP_PUSH_RULE:
  ------------------
  |  |   75|      0|#define OP_PUSH_RULE                  27
  ------------------
  |  Branch (1133:5): [True: 0, False: 5.53k]
  ------------------
 1134|      0|      YR_DEBUG_FPRINTF(
 1135|      0|          2, stderr, "- case OP_PUSH_RULE: // %s()\n", __FUNCTION__);
 1136|      0|      r1.i = yr_unaligned_u64(ip);
 1137|      0|      ip += sizeof(uint64_t);
 1138|       |
 1139|      0|      rule = &context->rules->rules_table[r1.i];
 1140|       |
 1141|      0|      if (RULE_IS_DISABLED(rule))
  ------------------
  |  |   63|      0|#define RULE_IS_DISABLED(x) (((x)->flags) & RULE_FLAGS_DISABLED)
  |  |  ------------------
  |  |  |  |   55|      0|#define RULE_FLAGS_DISABLED 0x08
  |  |  ------------------
  |  |  |  Branch (63:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1142|      0|      {
 1143|      0|        r2.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1144|      0|      }
 1145|      0|      else
 1146|      0|      {
 1147|      0|        if (yr_bitmask_is_set(context->rule_matches_flags, r1.i))
  ------------------
  |  |   75|      0|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |  |  Branch (75:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1148|      0|          r2.i = 1;
 1149|      0|        else
 1150|      0|          r2.i = 0;
 1151|      0|      }
 1152|       |
 1153|      0|      push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1154|      0|      break;
 1155|       |
 1156|      0|    case OP_INIT_RULE:
  ------------------
  |  |   76|      0|#define OP_INIT_RULE                  28
  ------------------
  |  Branch (1156:5): [True: 0, False: 5.53k]
  ------------------
 1157|      0|      YR_DEBUG_FPRINTF(
 1158|      0|          2, stderr, "- case OP_INIT_RULE: // %s()\n", __FUNCTION__);
 1159|       |
 1160|       |      // After the opcode there's an int32_t corresponding to the jump's
 1161|       |      // offset and an uint32_t corresponding to the rule's index.
 1162|      0|      current_rule_idx = yr_unaligned_u32(ip + sizeof(int32_t));
 1163|       |
 1164|       |      // The curent rule index can't be larger than the number of rules.
 1165|      0|      assert(current_rule_idx < context->rules->num_rules);
 1166|       |
 1167|      0|      current_rule = &context->rules->rules_table[current_rule_idx];
 1168|       |
 1169|       |      // If the rule is disabled let's skip its code.
 1170|      0|      bool disabled = RULE_IS_DISABLED(current_rule) || yr_bitmask_is_not_set(context->rule_evaluate_condition_flags, current_rule_idx);
  ------------------
  |  |   63|      0|#define RULE_IS_DISABLED(x) (((x)->flags) & RULE_FLAGS_DISABLED)
  |  |  ------------------
  |  |  |  |   55|      0|#define RULE_FLAGS_DISABLED 0x08
  |  |  ------------------
  |  |  |  Branch (63:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                    bool disabled = RULE_IS_DISABLED(current_rule) || yr_bitmask_is_not_set(context->rule_evaluate_condition_flags, current_rule_idx);
  ------------------
  |  |   77|      0|#define yr_bitmask_is_not_set(bm, i) (!yr_bitmask_is_set(bm, i))
  |  |  ------------------
  |  |  |  |   75|      0|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (77:38): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1171|      0|      ip = jmp_if(disabled, ip);
 1172|       |
 1173|       |      // Skip the bytes corresponding to the rule's index, but only if not
 1174|       |      // taking the jump.
 1175|      0|      if (!disabled)
  ------------------
  |  Branch (1175:11): [True: 0, False: 0]
  ------------------
 1176|      0|        ip += sizeof(uint32_t);
 1177|       |
 1178|      0|      break;
 1179|       |
 1180|      0|    case OP_MATCH_RULE:
  ------------------
  |  |   77|      0|#define OP_MATCH_RULE                 29
  ------------------
  |  Branch (1180:5): [True: 0, False: 5.53k]
  ------------------
 1181|      0|      YR_DEBUG_FPRINTF(
 1182|      0|          2, stderr, "- case OP_MATCH_RULE: // %s()\n", __FUNCTION__);
 1183|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1184|       |
 1185|      0|      r2.i = yr_unaligned_u64(ip);
 1186|      0|      ip += sizeof(uint64_t);
 1187|       |
 1188|      0|      rule = &context->rules->rules_table[r2.i];
 1189|       |
 1190|      0|#if YR_PARANOID_EXEC
 1191|      0|      ensure_within_rules_arena(rule);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1192|      0|#endif
 1193|       |
 1194|      0|      if (!is_undef(r1) && r1.i)
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1194:11): [True: 0, False: 0]
  |  Branch (1194:28): [True: 0, False: 0]
  ------------------
 1195|      0|        yr_bitmask_set(context->rule_matches_flags, r2.i);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1196|      0|      else if (RULE_IS_GLOBAL(rule))
  ------------------
  |  |   59|      0|#define RULE_IS_GLOBAL(x) (((x)->flags) & RULE_FLAGS_GLOBAL)
  |  |  ------------------
  |  |  |  |   53|      0|#define RULE_FLAGS_GLOBAL   0x02
  |  |  ------------------
  |  |  |  Branch (59:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1197|      0|        yr_bitmask_set(context->ns_unsatisfied_flags, rule->ns->idx);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1198|       |
 1199|       |#ifdef YR_PROFILING_ENABLED
 1200|       |      elapsed_time = yr_stopwatch_elapsed_ns(&context->stopwatch);
 1201|       |      context->profiling_info[r2.i].exec_time += (elapsed_time - start_time);
 1202|       |      start_time = elapsed_time;
 1203|       |#endif
 1204|       |
 1205|      0|      assert(stack.sp == 0);  // at this point the stack should be empty.
 1206|      0|      break;
 1207|       |
 1208|      0|    case OP_OBJ_LOAD:
  ------------------
  |  |   64|      0|#define OP_OBJ_LOAD                   16
  ------------------
  |  Branch (1208:5): [True: 0, False: 5.53k]
  ------------------
 1209|      0|      YR_DEBUG_FPRINTF(
 1210|      0|          2, stderr, "- case OP_OBJ_LOAD: // %s()\n", __FUNCTION__);
 1211|       |
 1212|      0|      identifier = yr_unaligned_char_ptr(ip);
 1213|      0|      ip += sizeof(uint64_t);
 1214|       |
 1215|      0|#if YR_PARANOID_EXEC
 1216|      0|      ensure_within_rules_arena(identifier);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1217|      0|#endif
 1218|       |
 1219|      0|      r1.o = (YR_OBJECT*) yr_hash_table_lookup(
 1220|      0|          context->objects_table, identifier, NULL);
 1221|       |
 1222|      0|      assert(r1.o != NULL);
 1223|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1224|      0|      break;
 1225|       |
 1226|      0|    case OP_OBJ_FIELD:
  ------------------
  |  |   66|      0|#define OP_OBJ_FIELD                  18
  ------------------
  |  Branch (1226:5): [True: 0, False: 5.53k]
  ------------------
 1227|      0|      YR_DEBUG_FPRINTF(
 1228|      0|          2, stderr, "- case OP_OBJ_FIELD: // %s()\n", __FUNCTION__);
 1229|       |
 1230|      0|      identifier = yr_unaligned_char_ptr(ip);
 1231|      0|      ip += sizeof(uint64_t);
 1232|       |
 1233|      0|#if YR_PARANOID_EXEC
 1234|      0|      ensure_within_rules_arena(identifier);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1235|      0|#endif
 1236|       |
 1237|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1238|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1239|       |
 1240|      0|      r1.o = yr_object_lookup_field(r1.o, identifier);
 1241|       |
 1242|      0|      if (r1.o == NULL)
  ------------------
  |  Branch (1242:11): [True: 0, False: 0]
  ------------------
 1243|      0|      {
 1244|      0|        result = ERROR_INVALID_FIELD_NAME;
  ------------------
  |  |   78|      0|#define ERROR_INVALID_FIELD_NAME             33
  ------------------
 1245|      0|        stop = true;
 1246|      0|        break;
 1247|      0|      }
 1248|       |
 1249|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1250|      0|      break;
 1251|       |
 1252|      0|    case OP_OBJ_VALUE:
  ------------------
  |  |   65|      0|#define OP_OBJ_VALUE                  17
  ------------------
  |  Branch (1252:5): [True: 0, False: 5.53k]
  ------------------
 1253|      0|      YR_DEBUG_FPRINTF(
 1254|      0|          2, stderr, "- case OP_OBJ_VALUE: // %s()\n", __FUNCTION__);
 1255|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1256|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1257|       |
 1258|      0|#if YR_PARANOID_EXEC
 1259|      0|      check_object_canary(r1.o);
  ------------------
  |  |  102|      0|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|  {                                      \
  |  |  104|      0|    stop = true;                         \
  |  |  105|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |  106|      0|    break;                               \
  |  |  107|      0|  }
  ------------------
 1260|      0|#endif
 1261|       |
 1262|      0|      switch (r1.o->type)
 1263|      0|      {
 1264|      0|      case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|      0|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (1264:7): [True: 0, False: 0]
  ------------------
 1265|      0|        r1.i = r1.o->value.i;
 1266|      0|        break;
 1267|       |
 1268|      0|      case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (1268:7): [True: 0, False: 0]
  ------------------
 1269|      0|        if (yr_isnan(r1.o->value.d))
  ------------------
  |  |   40|      0|  #define yr_isnan isnan
  ------------------
 1270|      0|          r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1271|      0|        else
 1272|      0|          r1.d = r1.o->value.d;
 1273|      0|        break;
 1274|       |
 1275|      0|      case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|      0|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (1275:7): [True: 0, False: 0]
  ------------------
 1276|      0|        if (r1.o->value.ss == NULL)
  ------------------
  |  Branch (1276:13): [True: 0, False: 0]
  ------------------
 1277|      0|          r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1278|      0|        else
 1279|      0|          r1.ss = r1.o->value.ss;
 1280|      0|        break;
 1281|       |
 1282|      0|      default:
  ------------------
  |  Branch (1282:7): [True: 0, False: 0]
  ------------------
 1283|      0|        assert(false);
 1284|      0|      }
 1285|       |
 1286|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1287|      0|      break;
 1288|       |
 1289|      0|    case OP_INDEX_ARRAY:
  ------------------
  |  |   67|      0|#define OP_INDEX_ARRAY                19
  ------------------
  |  Branch (1289:5): [True: 0, False: 5.53k]
  ------------------
 1290|      0|      YR_DEBUG_FPRINTF(
 1291|      0|          2, stderr, "- case OP_INDEX_ARRAY: // %s()\n", __FUNCTION__);
 1292|      0|      pop(r1);  // index
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1293|      0|      pop(r2);  // array
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1294|       |
 1295|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1296|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1297|       |
 1298|      0|      assert(r2.o->type == OBJECT_TYPE_ARRAY);
 1299|       |
 1300|      0|#if YR_PARANOID_EXEC
 1301|      0|      check_object_canary(r2.o);
  ------------------
  |  |  102|      0|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|  {                                      \
  |  |  104|      0|    stop = true;                         \
  |  |  105|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |  106|      0|    break;                               \
  |  |  107|      0|  }
  ------------------
 1302|      0|#endif
 1303|       |
 1304|      0|      r1.o = yr_object_array_get_item(r2.o, 0, (int) r1.i);
 1305|       |
 1306|      0|      if (r1.o == NULL)
  ------------------
  |  Branch (1306:11): [True: 0, False: 0]
  ------------------
 1307|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1308|       |
 1309|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1310|      0|      break;
 1311|       |
 1312|      0|    case OP_LOOKUP_DICT:
  ------------------
  |  |   90|      0|#define OP_LOOKUP_DICT                42
  ------------------
  |  Branch (1312:5): [True: 0, False: 5.53k]
  ------------------
 1313|      0|      YR_DEBUG_FPRINTF(
 1314|      0|          2, stderr, "- case OP_LOOKUP_DICT: // %s()\n", __FUNCTION__);
 1315|      0|      pop(r1);  // key
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1316|      0|      pop(r2);  // dictionary
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1317|       |
 1318|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1319|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1320|       |
 1321|      0|      assert(r2.o->type == OBJECT_TYPE_DICTIONARY);
 1322|       |
 1323|      0|#if YR_PARANOID_EXEC
 1324|      0|      check_object_canary(r2.o);
  ------------------
  |  |  102|      0|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|  {                                      \
  |  |  104|      0|    stop = true;                         \
  |  |  105|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |  106|      0|    break;                               \
  |  |  107|      0|  }
  ------------------
 1325|      0|#endif
 1326|       |
 1327|      0|      r1.o = yr_object_dict_get_item(r2.o, 0, r1.ss->c_string);
 1328|       |
 1329|      0|      if (r1.o == NULL)
  ------------------
  |  Branch (1329:11): [True: 0, False: 0]
  ------------------
 1330|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1331|       |
 1332|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1333|      0|      break;
 1334|       |
 1335|      0|    case OP_CALL:
  ------------------
  |  |   63|      0|#define OP_CALL                       15
  ------------------
  |  Branch (1335:5): [True: 0, False: 5.53k]
  ------------------
 1336|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_CALL: // %s()\n", __FUNCTION__);
 1337|       |
 1338|      0|      args_fmt = yr_unaligned_char_ptr(ip);
 1339|      0|      ip += sizeof(uint64_t);
 1340|       |
 1341|      0|      int i = (int) strlen(args_fmt);
 1342|      0|      count = 0;
 1343|       |
 1344|      0|#if YR_PARANOID_EXEC
 1345|      0|      if (i > YR_MAX_FUNCTION_ARGS)
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
  |  Branch (1345:11): [True: 0, False: 0]
  ------------------
 1346|      0|      {
 1347|      0|        stop = true;
 1348|      0|        result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
 1349|      0|        break;
 1350|      0|      }
 1351|      0|#endif
 1352|       |
 1353|       |      // pop arguments from stack and copy them to args array
 1354|       |
 1355|      0|      while (i > 0)
  ------------------
  |  Branch (1355:14): [True: 0, False: 0]
  ------------------
 1356|      0|      {
 1357|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1358|       |
 1359|      0|        if (is_undef(r1))  // count the number of undefined args
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1360|      0|          count++;
 1361|       |
 1362|      0|        args[i - 1] = r1;
 1363|      0|        i--;
 1364|      0|      }
 1365|       |
 1366|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1367|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1368|       |
 1369|      0|#if YR_PARANOID_EXEC
 1370|      0|      check_object_canary(r2.o);
  ------------------
  |  |  102|      0|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|  {                                      \
  |  |  104|      0|    stop = true;                         \
  |  |  105|      0|    result = ERROR_INTERNAL_FATAL_ERROR; \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |  106|      0|    break;                               \
  |  |  107|      0|  }
  ------------------
 1371|      0|#endif
 1372|       |
 1373|      0|      if (count > 0)
  ------------------
  |  Branch (1373:11): [True: 0, False: 0]
  ------------------
 1374|      0|      {
 1375|       |        // If there are undefined args, result for function call
 1376|       |        // is undefined as well.
 1377|       |
 1378|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1379|      0|        push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1380|      0|        break;
 1381|      0|      }
 1382|       |
 1383|      0|      function = object_as_function(r2.o);
  ------------------
  |  |  905|      0|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
 1384|      0|      result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
 1385|       |
 1386|      0|      for (i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|      0|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (1386:19): [True: 0, False: 0]
  ------------------
 1387|      0|      {
 1388|      0|        if (function->prototypes[i].arguments_fmt == NULL)
  ------------------
  |  Branch (1388:13): [True: 0, False: 0]
  ------------------
 1389|      0|          break;
 1390|       |
 1391|      0|        if (strcmp(function->prototypes[i].arguments_fmt, args_fmt) == 0)
  ------------------
  |  Branch (1391:13): [True: 0, False: 0]
  ------------------
 1392|      0|        {
 1393|      0|          result = function->prototypes[i].code(args, context, function);
 1394|      0|          break;
 1395|      0|        }
 1396|      0|      }
 1397|       |
 1398|       |      // If i == YR_MAX_OVERLOADED_FUNCTIONS at this point no matching
 1399|       |      // prototype was found, but this shouldn't happen.
 1400|      0|      assert(i < YR_MAX_OVERLOADED_FUNCTIONS);
 1401|       |
 1402|       |      // Make a copy of the returned object and push the copy into the stack,
 1403|       |      // function->return_obj can't be pushed because it can change in
 1404|       |      // subsequent calls to the same function.
 1405|      0|      if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1405:11): [True: 0, False: 0]
  ------------------
 1406|      0|        result = yr_object_copy(function->return_obj, &r1.o);
 1407|       |
 1408|       |      // A pointer to the copied object is stored in a arena in order to
 1409|       |      // free the object before exiting yr_execute_code, obj_count tracks
 1410|       |      // the number of objects written.
 1411|      0|      if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1411:11): [True: 0, False: 0]
  ------------------
 1412|      0|      {
 1413|      0|        result = yr_arena_write_data(obj_arena, 0, &r1.o, sizeof(r1.o), NULL);
 1414|      0|        obj_count++;
 1415|      0|      }
 1416|      0|      else
 1417|      0|      {
 1418|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1419|      0|      }
 1420|       |
 1421|      0|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 1422|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1423|      0|      break;
 1424|       |
 1425|      0|    case OP_FOUND:
  ------------------
  |  |   70|      0|#define OP_FOUND                      22
  ------------------
  |  Branch (1425:5): [True: 0, False: 5.53k]
  ------------------
 1426|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1427|      0|      r2.i = context->matches[r1.s->idx].tail != NULL ? 1 : 0;
  ------------------
  |  Branch (1427:14): [True: 0, False: 0]
  ------------------
 1428|      0|      YR_DEBUG_FPRINTF(
 1429|      0|          2,
 1430|      0|          stderr,
 1431|      0|          "- case OP_FOUND: r2.i=%" PRId64 " // %s()\n",
 1432|      0|          r2.i,
 1433|      0|          __FUNCTION__);
 1434|      0|      push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1435|      0|      break;
 1436|       |
 1437|      0|    case OP_FOUND_AT:
  ------------------
  |  |   71|      0|#define OP_FOUND_AT                   23
  ------------------
  |  Branch (1437:5): [True: 0, False: 5.53k]
  ------------------
 1438|      0|      YR_DEBUG_FPRINTF(
 1439|      0|          2, stderr, "- case OP_FOUND_AT: // %s()\n", __FUNCTION__);
 1440|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1441|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1442|       |
 1443|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1444|       |
 1445|      0|#if YR_PARANOID_EXEC
 1446|      0|      ensure_within_rules_arena(r2.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1447|      0|#endif
 1448|       |
 1449|      0|      match = context->matches[r2.s->idx].head;
 1450|      0|      r3.i = false;
 1451|       |
 1452|      0|      while (match != NULL)
  ------------------
  |  Branch (1452:14): [True: 0, False: 0]
  ------------------
 1453|      0|      {
 1454|      0|        if (r1.i == match->base + match->offset)
  ------------------
  |  Branch (1454:13): [True: 0, False: 0]
  ------------------
 1455|      0|        {
 1456|      0|          r3.i = true;
 1457|      0|          break;
 1458|      0|        }
 1459|       |
 1460|      0|        if (r1.i < match->base + match->offset)
  ------------------
  |  Branch (1460:13): [True: 0, False: 0]
  ------------------
 1461|      0|          break;
 1462|       |
 1463|      0|        match = match->next;
 1464|      0|      }
 1465|       |
 1466|      0|      push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1467|      0|      break;
 1468|       |
 1469|      0|    case OP_FOUND_IN:
  ------------------
  |  |   72|      0|#define OP_FOUND_IN                   24
  ------------------
  |  Branch (1469:5): [True: 0, False: 5.53k]
  ------------------
 1470|      0|      YR_DEBUG_FPRINTF(
 1471|      0|          2, stderr, "- case OP_FOUND_IN: // %s()\n", __FUNCTION__);
 1472|      0|      pop(r3);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1473|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1474|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1475|       |
 1476|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1477|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1478|       |
 1479|      0|#if YR_PARANOID_EXEC
 1480|      0|      ensure_within_rules_arena(r3.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1481|      0|#endif
 1482|       |
 1483|      0|      match = context->matches[r3.s->idx].head;
 1484|      0|      r4.i = false;
 1485|       |
 1486|      0|      while (match != NULL && !r4.i)
  ------------------
  |  Branch (1486:14): [True: 0, False: 0]
  |  Branch (1486:31): [True: 0, False: 0]
  ------------------
 1487|      0|      {
 1488|      0|        if (match->base + match->offset >= r1.i &&
  ------------------
  |  Branch (1488:13): [True: 0, False: 0]
  ------------------
 1489|      0|            match->base + match->offset <= r2.i)
  ------------------
  |  Branch (1489:13): [True: 0, False: 0]
  ------------------
 1490|      0|        {
 1491|      0|          r4.i = true;
 1492|      0|        }
 1493|       |
 1494|      0|        if (match->base + match->offset > r2.i)
  ------------------
  |  Branch (1494:13): [True: 0, False: 0]
  ------------------
 1495|      0|          break;
 1496|       |
 1497|      0|        match = match->next;
 1498|      0|      }
 1499|       |
 1500|      0|      push(r4);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1501|      0|      break;
 1502|       |
 1503|      0|    case OP_COUNT:
  ------------------
  |  |   68|      0|#define OP_COUNT                      20
  ------------------
  |  Branch (1503:5): [True: 0, False: 5.53k]
  ------------------
 1504|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_COUNT: // %s()\n", __FUNCTION__);
 1505|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1506|       |
 1507|      0|#if YR_PARANOID_EXEC
 1508|      0|      ensure_within_rules_arena(r1.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1509|      0|#endif
 1510|       |
 1511|      0|      r2.i = context->matches[r1.s->idx].count;
 1512|      0|      push(r2);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1513|      0|      break;
 1514|       |
 1515|      0|    case OP_COUNT_IN:
  ------------------
  |  |  124|      0|#define OP_COUNT_IN                   76
  ------------------
  |  Branch (1515:5): [True: 0, False: 5.53k]
  ------------------
 1516|      0|      YR_DEBUG_FPRINTF(
 1517|      0|          2, stderr, "- case OP_COUNT_IN: // %s()\n", __FUNCTION__);
 1518|      0|      pop(r3);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1519|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1520|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1521|       |
 1522|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1523|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1524|       |
 1525|      0|#if YR_PARANOID_EXEC
 1526|      0|      ensure_within_rules_arena(r3.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1527|      0|#endif
 1528|       |
 1529|      0|      match = context->matches[r3.s->idx].head;
 1530|      0|      r4.i = 0;
 1531|       |
 1532|      0|      while (match != NULL)
  ------------------
  |  Branch (1532:14): [True: 0, False: 0]
  ------------------
 1533|      0|      {
 1534|      0|        if (match->base + match->offset >= r1.i &&
  ------------------
  |  Branch (1534:13): [True: 0, False: 0]
  ------------------
 1535|      0|            match->base + match->offset <= r2.i)
  ------------------
  |  Branch (1535:13): [True: 0, False: 0]
  ------------------
 1536|      0|        {
 1537|      0|          r4.i++;
 1538|      0|        }
 1539|       |
 1540|      0|        if (match->base + match->offset > r2.i)
  ------------------
  |  Branch (1540:13): [True: 0, False: 0]
  ------------------
 1541|      0|          break;
 1542|       |
 1543|      0|        match = match->next;
 1544|      0|      }
 1545|       |
 1546|      0|      push(r4);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1547|      0|      break;
 1548|       |
 1549|      0|    case OP_OFFSET:
  ------------------
  |  |   73|      0|#define OP_OFFSET                     25
  ------------------
  |  Branch (1549:5): [True: 0, False: 5.53k]
  ------------------
 1550|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_OFFSET: // %s()\n", __FUNCTION__);
 1551|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1552|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1553|       |
 1554|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1555|       |
 1556|      0|#if YR_PARANOID_EXEC
 1557|      0|      ensure_within_rules_arena(r2.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1558|      0|#endif
 1559|       |
 1560|      0|      match = context->matches[r2.s->idx].head;
 1561|       |
 1562|      0|      i = 1;
 1563|      0|      r3.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1564|       |
 1565|      0|      while (match != NULL && r3.i == YR_UNDEFINED)
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (1565:14): [True: 0, False: 0]
  |  Branch (1565:31): [True: 0, False: 0]
  ------------------
 1566|      0|      {
 1567|      0|        if (r1.i == i)
  ------------------
  |  Branch (1567:13): [True: 0, False: 0]
  ------------------
 1568|      0|          r3.i = match->base + match->offset;
 1569|       |
 1570|      0|        i++;
 1571|      0|        match = match->next;
 1572|      0|      }
 1573|       |
 1574|      0|      push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1575|      0|      break;
 1576|       |
 1577|      0|    case OP_LENGTH:
  ------------------
  |  |   69|      0|#define OP_LENGTH                     21
  ------------------
  |  Branch (1577:5): [True: 0, False: 5.53k]
  ------------------
 1578|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_LENGTH: // %s()\n", __FUNCTION__);
 1579|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1580|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1581|       |
 1582|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1583|       |
 1584|      0|#if YR_PARANOID_EXEC
 1585|      0|      ensure_within_rules_arena(r2.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1586|      0|#endif
 1587|       |
 1588|      0|      match = context->matches[r2.s->idx].head;
 1589|       |
 1590|      0|      i = 1;
 1591|      0|      r3.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1592|       |
 1593|      0|      while (match != NULL && r3.i == YR_UNDEFINED)
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (1593:14): [True: 0, False: 0]
  |  Branch (1593:31): [True: 0, False: 0]
  ------------------
 1594|      0|      {
 1595|      0|        if (r1.i == i)
  ------------------
  |  Branch (1595:13): [True: 0, False: 0]
  ------------------
 1596|      0|          r3.i = match->match_length;
 1597|       |
 1598|      0|        i++;
 1599|      0|        match = match->next;
 1600|      0|      }
 1601|       |
 1602|      0|      push(r3);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1603|      0|      break;
 1604|       |
 1605|      0|    case OP_OF:
  ------------------
  |  |   74|      0|#define OP_OF                         26
  ------------------
  |  Branch (1605:5): [True: 0, False: 5.53k]
  ------------------
 1606|      0|    case OP_OF_PERCENT:
  ------------------
  |  |  122|      0|#define OP_OF_PERCENT                 74
  ------------------
  |  Branch (1606:5): [True: 0, False: 5.53k]
  ------------------
 1607|      0|      r2.i = yr_unaligned_u64(ip);
 1608|      0|      ip += sizeof(uint64_t);
 1609|      0|      assert(r2.i == OF_STRING_SET || r2.i == OF_RULE_SET);
 1610|      0|      found = 0;
 1611|      0|      count = 0;
 1612|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1613|       |
 1614|      0|      while (!is_undef(r1))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1614:14): [True: 0, False: 0]
  ------------------
 1615|      0|      {
 1616|      0|        if (r2.i == OF_STRING_SET)
  ------------------
  |  |   42|      0|#define OF_STRING_SET 0
  ------------------
  |  Branch (1616:13): [True: 0, False: 0]
  ------------------
 1617|      0|        {
 1618|      0|          if (context->matches[r1.s->idx].tail != NULL)
  ------------------
  |  Branch (1618:15): [True: 0, False: 0]
  ------------------
 1619|      0|          {
 1620|      0|            found++;
 1621|      0|          }
 1622|      0|        }
 1623|      0|        else
 1624|      0|        {
 1625|       |          // r1.i is 1 if the rule has already matched and zero otherwise.
 1626|      0|          found += r1.i;
 1627|      0|        }
 1628|      0|        count++;
 1629|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1630|      0|      }
 1631|       |
 1632|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1633|       |
 1634|      0|      if (opcode == OP_OF)
  ------------------
  |  |   74|      0|#define OP_OF                         26
  ------------------
  |  Branch (1634:11): [True: 0, False: 0]
  ------------------
 1635|      0|      {
 1636|      0|        YR_DEBUG_FPRINTF(2, stderr, "- case OP_OF: // %s()\n", __FUNCTION__);
 1637|       |
 1638|       |        // Quantifier is "all"
 1639|      0|        if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1640|      0|        {
 1641|      0|          r1.i = found >= count ? 1 : 0;
  ------------------
  |  Branch (1641:18): [True: 0, False: 0]
  ------------------
 1642|      0|        }
 1643|       |        // Quantifier is 0 or none. This is a special case in which we want
 1644|       |        // exactly 0 strings matching. More information at:
 1645|       |        // https://github.com/VirusTotal/yara/issues/1695
 1646|      0|        else if (r2.i == 0)
  ------------------
  |  Branch (1646:18): [True: 0, False: 0]
  ------------------
 1647|      0|        {
 1648|      0|          r1.i = found == 0 ? 1 : 0;
  ------------------
  |  Branch (1648:18): [True: 0, False: 0]
  ------------------
 1649|      0|        }
 1650|       |        // In all other cases the number of strings matching should be at
 1651|       |        // least the amount specified by the quantifier.
 1652|      0|        else
 1653|      0|        {
 1654|      0|          r1.i = found >= r2.i ? 1 : 0;
  ------------------
  |  Branch (1654:18): [True: 0, False: 0]
  ------------------
 1655|      0|        }
 1656|      0|      }
 1657|      0|      else  // OP_OF_PERCENT
 1658|      0|      {
 1659|      0|        YR_DEBUG_FPRINTF(
 1660|      0|            2, stderr, "- case OP_OF_PERCENT: // %s()\n", __FUNCTION__);
 1661|       |
 1662|       |        // If, by some weird reason, we manage to get an undefined string
 1663|       |        // reference as the first thing on the stack then count would be zero.
 1664|       |        // I don't know how this could ever happen but better to check for it.
 1665|      0|        if (is_undef(r2) || count == 0)
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1665:29): [True: 0, False: 0]
  ------------------
 1666|      0|          r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1667|      0|        else
 1668|      0|          r1.i = (((double) found / count) * 100) >= r2.i ? 1 : 0;
  ------------------
  |  Branch (1668:18): [True: 0, False: 0]
  ------------------
 1669|      0|      }
 1670|       |
 1671|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1672|      0|      break;
 1673|       |
 1674|      0|    case OP_OF_FOUND_IN:
  ------------------
  |  |  123|      0|#define OP_OF_FOUND_IN                75
  ------------------
  |  Branch (1674:5): [True: 0, False: 5.53k]
  ------------------
 1675|      0|      YR_DEBUG_FPRINTF(
 1676|      0|          2, stderr, "- case OP_OF_FOUND_IN: // %s()\n", __FUNCTION__);
 1677|       |
 1678|      0|      found = 0;
 1679|      0|      count = 0;
 1680|       |
 1681|      0|      pop(r2);  // Offset range end
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1682|      0|      pop(r1);  // Offset range start
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1683|      0|      pop(r3);  // First string
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1684|       |
 1685|       |      // If any of the range boundaries are undefined the result is also
 1686|       |      // undefined, be we need to unwind the stack first.
 1687|      0|      if (is_undef(r1) || is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    if (is_undef(r1) || is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1688|      0|      {
 1689|       |        // Remove all the strings.
 1690|      0|        while (!is_undef(r3)) pop(r3);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      while (!is_undef(r3)) pop(r3);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  |  Branch (1690:16): [True: 0, False: 0]
  ------------------
 1691|       |        // Remove the quantifier at the bottom of the stack.
 1692|      0|        pop(r3);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1693|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1694|      0|        push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1695|      0|        break;
 1696|      0|      }
 1697|       |
 1698|      0|      while (!is_undef(r3))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1698:14): [True: 0, False: 0]
  ------------------
 1699|      0|      {
 1700|      0|#if YR_PARANOID_EXEC
 1701|      0|        ensure_within_rules_arena(r3.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1702|      0|#endif
 1703|      0|        match = context->matches[r3.s->idx].head;
 1704|       |
 1705|      0|        while (match != NULL)
  ------------------
  |  Branch (1705:16): [True: 0, False: 0]
  ------------------
 1706|      0|        {
 1707|       |          // String match within range start and range end?
 1708|      0|          if (match->base + match->offset >= r1.i &&
  ------------------
  |  Branch (1708:15): [True: 0, False: 0]
  ------------------
 1709|      0|              match->base + match->offset <= r2.i)
  ------------------
  |  Branch (1709:15): [True: 0, False: 0]
  ------------------
 1710|      0|          {
 1711|      0|            found++;
 1712|      0|            break;
 1713|      0|          }
 1714|       |
 1715|       |          // If current match is past range end, we can stop as matches
 1716|       |          // are sorted by offset in increasing order, so all remaining
 1717|       |          // matches are part the range end too.
 1718|      0|          if (match->base + match->offset > r1.i)
  ------------------
  |  Branch (1718:15): [True: 0, False: 0]
  ------------------
 1719|      0|            break;
 1720|       |
 1721|      0|          match = match->next;
 1722|      0|        }
 1723|       |
 1724|      0|        count++;
 1725|      0|        pop(r3);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1726|      0|      }
 1727|       |
 1728|      0|      pop(r2);  // Quantifier X in expressions like "X of string_set in range"
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1729|       |
 1730|       |      // Quantifier is "all".
 1731|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1732|      0|      {
 1733|      0|        r1.i = found >= count ? 1 : 0;
  ------------------
  |  Branch (1733:16): [True: 0, False: 0]
  ------------------
 1734|      0|      }
 1735|       |      // Quantifier is 0 or none. This is a special case in which we want
 1736|       |      // exactly 0 strings matching. More information at:
 1737|       |      // https://github.com/VirusTotal/yara/issues/1695
 1738|      0|      else if (r2.i == 0)
  ------------------
  |  Branch (1738:16): [True: 0, False: 0]
  ------------------
 1739|      0|      {
 1740|      0|        r1.i = found == 0 ? 1 : 0;
  ------------------
  |  Branch (1740:16): [True: 0, False: 0]
  ------------------
 1741|      0|      }
 1742|       |      // In all other cases the number of strings matching should be at least
 1743|       |      // the amount specified by the quantifier.
 1744|      0|      else
 1745|      0|      {
 1746|      0|        r1.i = found >= r2.i ? 1 : 0;
  ------------------
  |  Branch (1746:16): [True: 0, False: 0]
  ------------------
 1747|      0|      }
 1748|       |
 1749|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1750|      0|      break;
 1751|       |
 1752|      0|    case OP_OF_FOUND_AT:
  ------------------
  |  |  127|      0|#define OP_OF_FOUND_AT                79
  ------------------
  |  Branch (1752:5): [True: 0, False: 5.53k]
  ------------------
 1753|      0|      YR_DEBUG_FPRINTF(
 1754|      0|          2, stderr, "- case OP_OF_FOUND_AT: // %s()\n", __FUNCTION__);
 1755|       |
 1756|      0|      found = 0;
 1757|      0|      count = 0;
 1758|       |
 1759|      0|      pop(r2);  // Match location
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1760|      0|      pop(r1);  // First string
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1761|       |
 1762|       |      // Match location must be defined.
 1763|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1764|      0|      {
 1765|       |        // Remove all the strings.
 1766|      0|        while (!is_undef(r1)) pop(r1);
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      while (!is_undef(r1)) pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
  |  Branch (1766:16): [True: 0, False: 0]
  ------------------
 1767|       |        // Remove the quantifier at the bottom of the stack.
 1768|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1769|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1770|      0|        push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1771|      0|        break;
 1772|      0|      }
 1773|       |
 1774|      0|      while (!is_undef(r1))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1774:14): [True: 0, False: 0]
  ------------------
 1775|      0|      {
 1776|      0|#if YR_PARANOID_EXEC
 1777|      0|        ensure_within_rules_arena(r1.p);
  ------------------
  |  |   91|      0|  {                                                               \
  |  |   92|      0|    YR_ARENA_REF ref;                                             \
  |  |   93|      0|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|      0|  }
  ------------------
 1778|      0|#endif
 1779|      0|        match = context->matches[r1.s->idx].head;
 1780|       |
 1781|      0|        while (match != NULL)
  ------------------
  |  Branch (1781:16): [True: 0, False: 0]
  ------------------
 1782|      0|        {
 1783|       |          // String match at the desired location?
 1784|      0|          if (match->base + match->offset == r2.i)
  ------------------
  |  Branch (1784:15): [True: 0, False: 0]
  ------------------
 1785|      0|          {
 1786|      0|            found++;
 1787|      0|            break;
 1788|      0|          }
 1789|       |
 1790|       |          // If current match is past desired location, we can stop as matches
 1791|       |          // are sorted by offset in increasing order, so all remaining
 1792|       |          // matches are past it.
 1793|      0|          if (match->base + match->offset > r2.i)
  ------------------
  |  Branch (1793:15): [True: 0, False: 0]
  ------------------
 1794|      0|            break;
 1795|       |
 1796|      0|          match = match->next;
 1797|      0|        }
 1798|       |
 1799|      0|        count++;
 1800|      0|        pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1801|      0|      }
 1802|       |
 1803|      0|      pop(r2);  // Quantifier X in expressions like "X of string_set in range"
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1804|       |
 1805|       |      // Quantifier is "all".
 1806|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1807|      0|      {
 1808|      0|        r1.i = found >= count ? 1 : 0;
  ------------------
  |  Branch (1808:16): [True: 0, False: 0]
  ------------------
 1809|      0|      }
 1810|       |      // Quantifier is 0 or none. This is a special case in which we want
 1811|       |      // exactly 0 strings matching. More information at:
 1812|       |      // https://github.com/VirusTotal/yara/issues/1695
 1813|      0|      else if (r2.i == 0)
  ------------------
  |  Branch (1813:16): [True: 0, False: 0]
  ------------------
 1814|      0|      {
 1815|      0|        r1.i = found == 0 ? 1 : 0;
  ------------------
  |  Branch (1815:16): [True: 0, False: 0]
  ------------------
 1816|      0|      }
 1817|       |      // In all other cases the number of strings matching should be at least
 1818|       |      // the amount specified by the quantifier.
 1819|      0|      else
 1820|      0|      {
 1821|      0|        r1.i = found >= r2.i ? 1 : 0;
  ------------------
  |  Branch (1821:16): [True: 0, False: 0]
  ------------------
 1822|      0|      }
 1823|       |
 1824|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1825|      0|      break;
 1826|       |
 1827|      0|    case OP_FILESIZE:
  ------------------
  |  |   85|      0|#define OP_FILESIZE                   37
  ------------------
  |  Branch (1827:5): [True: 0, False: 5.53k]
  ------------------
 1828|      0|      r1.i = context->file_size;
 1829|      0|      YR_DEBUG_FPRINTF(
 1830|      0|          2,
 1831|      0|          stderr,
 1832|      0|          "- case OP_FILESIZE: r1.i=%" PRId64 "%s // %s()\n",
 1833|      0|          r1.i,
 1834|      0|          r1.i == YR_UNDEFINED ? " AKA YR_UNDEFINED" : "",
 1835|      0|          __FUNCTION__);
 1836|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1837|      0|      break;
 1838|       |
 1839|      0|    case OP_ENTRYPOINT:
  ------------------
  |  |   86|      0|#define OP_ENTRYPOINT                 38
  ------------------
  |  Branch (1839:5): [True: 0, False: 5.53k]
  ------------------
 1840|      0|      YR_DEBUG_FPRINTF(
 1841|      0|          2, stderr, "- case OP_ENTRYPOINT: // %s()\n", __FUNCTION__);
 1842|      0|      r1.i = context->entry_point;
 1843|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1844|      0|      break;
 1845|       |
 1846|      0|    case OP_INT8:
  ------------------
  |  |  183|      0|#define OP_INT8     (OP_READ_INT + 0)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1846:5): [True: 0, False: 5.53k]
  ------------------
 1847|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT8: // %s()\n", __FUNCTION__);
 1848|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1849|      0|      r1.i = read_int8_t_little_endian(context->iterator, (size_t) r1.i);
 1850|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1851|      0|      break;
 1852|       |
 1853|      0|    case OP_INT16:
  ------------------
  |  |  184|      0|#define OP_INT16    (OP_READ_INT + 1)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1853:5): [True: 0, False: 5.53k]
  ------------------
 1854|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT16: // %s()\n", __FUNCTION__);
 1855|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1856|      0|      r1.i = read_int16_t_little_endian(context->iterator, (size_t) r1.i);
 1857|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1858|      0|      break;
 1859|       |
 1860|      0|    case OP_INT32:
  ------------------
  |  |  185|      0|#define OP_INT32    (OP_READ_INT + 2)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1860:5): [True: 0, False: 5.53k]
  ------------------
 1861|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT32: // %s()\n", __FUNCTION__);
 1862|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1863|      0|      r1.i = read_int32_t_little_endian(context->iterator, (size_t) r1.i);
 1864|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1865|      0|      break;
 1866|       |
 1867|      0|    case OP_UINT8:
  ------------------
  |  |  186|      0|#define OP_UINT8    (OP_READ_INT + 3)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1867:5): [True: 0, False: 5.53k]
  ------------------
 1868|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_UINT8: // %s()\n", __FUNCTION__);
 1869|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1870|      0|      r1.i = read_uint8_t_little_endian(context->iterator, (size_t) r1.i);
 1871|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1872|      0|      break;
 1873|       |
 1874|      0|    case OP_UINT16:
  ------------------
  |  |  187|      0|#define OP_UINT16   (OP_READ_INT + 4)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1874:5): [True: 0, False: 5.53k]
  ------------------
 1875|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_UINT16: // %s()\n", __FUNCTION__);
 1876|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1877|      0|      r1.i = read_uint16_t_little_endian(context->iterator, (size_t) r1.i);
 1878|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1879|      0|      break;
 1880|       |
 1881|      0|    case OP_UINT32:
  ------------------
  |  |  188|      0|#define OP_UINT32   (OP_READ_INT + 5)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1881:5): [True: 0, False: 5.53k]
  ------------------
 1882|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_UINT32: // %s()\n", __FUNCTION__);
 1883|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1884|      0|      r1.i = read_uint32_t_little_endian(context->iterator, (size_t) r1.i);
 1885|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1886|      0|      break;
 1887|       |
 1888|      0|    case OP_INT8BE:
  ------------------
  |  |  189|      0|#define OP_INT8BE   (OP_READ_INT + 6)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1888:5): [True: 0, False: 5.53k]
  ------------------
 1889|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT8BE: // %s()\n", __FUNCTION__);
 1890|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1891|      0|      r1.i = read_int8_t_big_endian(context->iterator, (size_t) r1.i);
 1892|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1893|      0|      break;
 1894|       |
 1895|      0|    case OP_INT16BE:
  ------------------
  |  |  190|      0|#define OP_INT16BE  (OP_READ_INT + 7)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1895:5): [True: 0, False: 5.53k]
  ------------------
 1896|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT16BE: // %s()\n", __FUNCTION__);
 1897|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1898|      0|      r1.i = read_int16_t_big_endian(context->iterator, (size_t) r1.i);
 1899|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1900|      0|      break;
 1901|       |
 1902|      0|    case OP_INT32BE:
  ------------------
  |  |  191|      0|#define OP_INT32BE  (OP_READ_INT + 8)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1902:5): [True: 0, False: 5.53k]
  ------------------
 1903|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT32BE: // %s()\n", __FUNCTION__);
 1904|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1905|      0|      r1.i = read_int32_t_big_endian(context->iterator, (size_t) r1.i);
 1906|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1907|      0|      break;
 1908|       |
 1909|      0|    case OP_UINT8BE:
  ------------------
  |  |  192|      0|#define OP_UINT8BE  (OP_READ_INT + 9)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1909:5): [True: 0, False: 5.53k]
  ------------------
 1910|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_UINT8BE: // %s()\n", __FUNCTION__);
 1911|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1912|      0|      r1.i = read_uint8_t_big_endian(context->iterator, (size_t) r1.i);
 1913|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1914|      0|      break;
 1915|       |
 1916|      0|    case OP_UINT16BE:
  ------------------
  |  |  193|      0|#define OP_UINT16BE (OP_READ_INT + 10)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1916:5): [True: 0, False: 5.53k]
  ------------------
 1917|      0|      YR_DEBUG_FPRINTF(
 1918|      0|          2, stderr, "- case OP_UINT16BE: // %s()\n", __FUNCTION__);
 1919|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1920|      0|      r1.i = read_uint16_t_big_endian(context->iterator, (size_t) r1.i);
 1921|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1922|      0|      break;
 1923|       |
 1924|      0|    case OP_UINT32BE:
  ------------------
  |  |  194|      0|#define OP_UINT32BE (OP_READ_INT + 11)
  |  |  ------------------
  |  |  |  |  182|      0|#define OP_READ_INT 240
  |  |  ------------------
  ------------------
  |  Branch (1924:5): [True: 0, False: 5.53k]
  ------------------
 1925|      0|      YR_DEBUG_FPRINTF(
 1926|      0|          2, stderr, "- case OP_UINT32BE: // %s()\n", __FUNCTION__);
 1927|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1928|      0|      r1.i = read_uint32_t_big_endian(context->iterator, (size_t) r1.i);
 1929|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1930|      0|      break;
 1931|       |
 1932|  2.76k|    case OP_IMPORT:
  ------------------
  |  |   89|  2.76k|#define OP_IMPORT                     41
  ------------------
  |  Branch (1932:5): [True: 2.76k, False: 2.76k]
  ------------------
 1933|  2.76k|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_IMPORT: // %s()\n", __FUNCTION__);
 1934|  2.76k|      r1.i = yr_unaligned_u64(ip);
 1935|  2.76k|      ip += sizeof(uint64_t);
 1936|       |
 1937|  2.76k|#if YR_PARANOID_EXEC
 1938|  2.76k|      ensure_within_rules_arena(r1.p);
  ------------------
  |  |   91|  2.76k|  {                                                               \
  |  |   92|  2.76k|    YR_ARENA_REF ref;                                             \
  |  |   93|  2.76k|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |   94|  2.76k|    {                                                             \
  |  |   95|      0|      stop = true;                                                \
  |  |   96|      0|      result = ERROR_INTERNAL_FATAL_ERROR;                        \
  |  |  ------------------
  |  |  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  |  |  ------------------
  |  |   97|      0|      break;                                                      \
  |  |   98|      0|    }                                                             \
  |  |   99|  2.76k|  }
  ------------------
 1939|  2.76k|#endif
 1940|       |
 1941|  2.76k|      result = yr_modules_load((char*) r1.p, context);
 1942|       |
 1943|  2.76k|      if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1943:11): [True: 0, False: 2.76k]
  ------------------
 1944|      0|        stop = true;
 1945|       |
 1946|  2.76k|      break;
 1947|       |
 1948|      0|    case OP_MATCHES:
  ------------------
  |  |   88|      0|#define OP_MATCHES                    40
  ------------------
  |  Branch (1948:5): [True: 0, False: 5.53k]
  ------------------
 1949|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_MATCHES: // %s()\n", __FUNCTION__);
 1950|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1951|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 1952|       |
 1953|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1954|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 1955|       |
 1956|      0|      if (r1.ss->length == 0)
  ------------------
  |  Branch (1956:11): [True: 0, False: 0]
  ------------------
 1957|      0|      {
 1958|      0|        r1.i = false;
 1959|      0|        push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1960|      0|        break;
 1961|      0|      }
 1962|       |
 1963|      0|      result = yr_re_exec(
 1964|      0|          context,
 1965|      0|          (uint8_t*) r2.re->code,
 1966|      0|          (uint8_t*) r1.ss->c_string,
 1967|      0|          r1.ss->length,
 1968|      0|          0,
 1969|      0|          r2.re->flags | RE_FLAGS_SCAN,
  ------------------
  |  |   99|      0|#define RE_FLAGS_SCAN        0x40
  ------------------
 1970|      0|          NULL,
 1971|      0|          NULL,
 1972|      0|          &found);
 1973|       |
 1974|      0|      if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1974:11): [True: 0, False: 0]
  ------------------
 1975|      0|        stop = true;
 1976|       |
 1977|      0|      r1.i = found >= 0;
 1978|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 1979|      0|      break;
 1980|       |
 1981|      0|    case OP_INT_TO_DBL:
  ------------------
  |  |   59|      0|#define OP_INT_TO_DBL                 11
  ------------------
  |  Branch (1981:5): [True: 0, False: 5.53k]
  ------------------
 1982|      0|      YR_DEBUG_FPRINTF(
 1983|      0|          2, stderr, "- case OP_INT_TO_DBL: // %s()\n", __FUNCTION__);
 1984|      0|      r1.i = yr_unaligned_u64(ip);
 1985|      0|      ip += sizeof(uint64_t);
 1986|       |
 1987|      0|#if YR_PARANOID_EXEC
 1988|      0|      if (r1.i > stack.sp || stack.sp - r1.i >= stack.capacity)
  ------------------
  |  Branch (1988:11): [True: 0, False: 0]
  |  Branch (1988:30): [True: 0, False: 0]
  ------------------
 1989|      0|      {
 1990|      0|        stop = true;
 1991|      0|        result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
 1992|      0|        break;
 1993|      0|      }
 1994|      0|#endif
 1995|       |
 1996|      0|      r2 = stack.items[stack.sp - r1.i];
 1997|       |
 1998|      0|      if (is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1999|      0|        stack.items[stack.sp - r1.i].i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 2000|      0|      else
 2001|      0|        stack.items[stack.sp - r1.i].d = (double) r2.i;
 2002|      0|      break;
 2003|       |
 2004|      0|    case OP_STR_TO_BOOL:
  ------------------
  |  |   60|      0|#define OP_STR_TO_BOOL                12
  ------------------
  |  Branch (2004:5): [True: 0, False: 5.53k]
  ------------------
 2005|      0|      YR_DEBUG_FPRINTF(
 2006|      0|          2, stderr, "- case OP_STR_TO_BOOL: // %s()\n", __FUNCTION__);
 2007|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2008|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2009|      0|      r1.i = r1.ss->length > 0;
 2010|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2011|      0|      break;
 2012|       |
 2013|      0|    case OP_INT_EQ:
  ------------------
  |  |  142|      0|#define OP_INT_EQ    (OP_INT_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_EQ    (OP_INT_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  129|      0|#define _OP_EQ    0
  |  |  ------------------
  ------------------
  |  Branch (2013:5): [True: 0, False: 5.53k]
  ------------------
 2014|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_EQ: // %s()\n", __FUNCTION__);
 2015|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2016|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2017|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2018|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2019|      0|      r1.i = r1.i == r2.i;
 2020|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2021|      0|      break;
 2022|       |
 2023|      0|    case OP_INT_NEQ:
  ------------------
  |  |  143|      0|#define OP_INT_NEQ   (OP_INT_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_NEQ   (OP_INT_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  130|      0|#define _OP_NEQ   1
  |  |  ------------------
  ------------------
  |  Branch (2023:5): [True: 0, False: 5.53k]
  ------------------
 2024|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_NEQ: // %s()\n", __FUNCTION__);
 2025|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2026|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2027|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2028|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2029|      0|      r1.i = r1.i != r2.i;
 2030|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2031|      0|      break;
 2032|       |
 2033|      0|    case OP_INT_LT:
  ------------------
  |  |  144|      0|#define OP_INT_LT    (OP_INT_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_LT    (OP_INT_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  131|      0|#define _OP_LT    2
  |  |  ------------------
  ------------------
  |  Branch (2033:5): [True: 0, False: 5.53k]
  ------------------
 2034|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_LT: // %s()\n", __FUNCTION__);
 2035|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2036|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2037|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2038|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2039|      0|      r1.i = r1.i < r2.i;
 2040|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2041|      0|      break;
 2042|       |
 2043|      0|    case OP_INT_GT:
  ------------------
  |  |  145|      0|#define OP_INT_GT    (OP_INT_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_GT    (OP_INT_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  132|      0|#define _OP_GT    3
  |  |  ------------------
  ------------------
  |  Branch (2043:5): [True: 0, False: 5.53k]
  ------------------
 2044|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_GT: // %s()\n", __FUNCTION__);
 2045|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2046|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2047|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2048|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2049|      0|      r1.i = r1.i > r2.i;
 2050|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2051|      0|      break;
 2052|       |
 2053|      0|    case OP_INT_LE:
  ------------------
  |  |  146|      0|#define OP_INT_LE    (OP_INT_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_LE    (OP_INT_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  133|      0|#define _OP_LE    4
  |  |  ------------------
  ------------------
  |  Branch (2053:5): [True: 0, False: 5.53k]
  ------------------
 2054|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_LE: // %s()\n", __FUNCTION__);
 2055|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2056|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2057|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2058|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2059|      0|      r1.i = r1.i <= r2.i;
 2060|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2061|      0|      break;
 2062|       |
 2063|      0|    case OP_INT_GE:
  ------------------
  |  |  147|      0|#define OP_INT_GE    (OP_INT_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_GE    (OP_INT_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  134|      0|#define _OP_GE    5
  |  |  ------------------
  ------------------
  |  Branch (2063:5): [True: 0, False: 5.53k]
  ------------------
 2064|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_GE: // %s()\n", __FUNCTION__);
 2065|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2066|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2067|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2068|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2069|      0|      r1.i = r1.i >= r2.i;
 2070|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2071|      0|      break;
 2072|       |
 2073|      0|    case OP_INT_ADD:
  ------------------
  |  |  148|      0|#define OP_INT_ADD   (OP_INT_BEGIN + _OP_ADD)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_ADD   (OP_INT_BEGIN + _OP_ADD)
  |  |  ------------------
  |  |  |  |  135|      0|#define _OP_ADD   6
  |  |  ------------------
  ------------------
  |  Branch (2073:5): [True: 0, False: 5.53k]
  ------------------
 2074|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_ADD: // %s()\n", __FUNCTION__);
 2075|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2076|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2077|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2078|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2079|      0|      r1.i = r1.i + r2.i;
 2080|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2081|      0|      break;
 2082|       |
 2083|      0|    case OP_INT_SUB:
  ------------------
  |  |  149|      0|#define OP_INT_SUB   (OP_INT_BEGIN + _OP_SUB)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_SUB   (OP_INT_BEGIN + _OP_SUB)
  |  |  ------------------
  |  |  |  |  136|      0|#define _OP_SUB   7
  |  |  ------------------
  ------------------
  |  Branch (2083:5): [True: 0, False: 5.53k]
  ------------------
 2084|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_SUB: // %s()\n", __FUNCTION__);
 2085|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2086|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2087|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2088|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2089|      0|      r1.i = r1.i - r2.i;
 2090|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2091|      0|      break;
 2092|       |
 2093|      0|    case OP_INT_MUL:
  ------------------
  |  |  150|      0|#define OP_INT_MUL   (OP_INT_BEGIN + _OP_MUL)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_MUL   (OP_INT_BEGIN + _OP_MUL)
  |  |  ------------------
  |  |  |  |  137|      0|#define _OP_MUL   8
  |  |  ------------------
  ------------------
  |  Branch (2093:5): [True: 0, False: 5.53k]
  ------------------
 2094|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_MUL: // %s()\n", __FUNCTION__);
 2095|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2096|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2097|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2098|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2099|      0|      r1.i = r1.i * r2.i;
 2100|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2101|      0|      break;
 2102|       |
 2103|      0|    case OP_INT_DIV:
  ------------------
  |  |  151|      0|#define OP_INT_DIV   (OP_INT_BEGIN + _OP_DIV)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_DIV   (OP_INT_BEGIN + _OP_DIV)
  |  |  ------------------
  |  |  |  |  138|      0|#define _OP_DIV   9
  |  |  ------------------
  ------------------
  |  Branch (2103:5): [True: 0, False: 5.53k]
  ------------------
 2104|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_DIV: // %s()\n", __FUNCTION__);
 2105|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2106|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2107|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2108|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2109|       |      // If divisor is zero the result is undefined. It's also undefined
 2110|       |      // when dividing INT64_MIN by -1.
 2111|      0|      if (r2.i == 0 || (r1.i == INT64_MIN && r2.i == -1))
  ------------------
  |  Branch (2111:11): [True: 0, False: 0]
  |  Branch (2111:25): [True: 0, False: 0]
  |  Branch (2111:46): [True: 0, False: 0]
  ------------------
 2112|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 2113|      0|      else
 2114|      0|        r1.i = r1.i / r2.i;
 2115|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2116|      0|      break;
 2117|       |
 2118|      0|    case OP_INT_MINUS:
  ------------------
  |  |  152|      0|#define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  139|      0|#define _OP_MINUS 10
  |  |  ------------------
  ------------------
  |  Branch (2118:5): [True: 0, False: 5.53k]
  ------------------
 2119|      0|      YR_DEBUG_FPRINTF(
 2120|      0|          2, stderr, "- case OP_INT_MINUS: // %s()\n", __FUNCTION__);
 2121|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2122|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2123|      0|      r1.i = -r1.i;
 2124|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2125|      0|      break;
 2126|       |
 2127|      0|    case OP_DBL_LT:
  ------------------
  |  |  158|      0|#define OP_DBL_LT    (OP_DBL_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_LT    (OP_DBL_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  131|      0|#define _OP_LT    2
  |  |  ------------------
  ------------------
  |  Branch (2127:5): [True: 0, False: 5.53k]
  ------------------
 2128|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_LT: // %s()\n", __FUNCTION__);
 2129|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2130|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2131|      0|      if (is_undef(r1) || is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    if (is_undef(r1) || is_undef(r2))
  ------------------
  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2132|      0|        r1.i = false;
 2133|      0|      else
 2134|      0|        r1.i = r1.d < r2.d;
 2135|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2136|      0|      break;
 2137|       |
 2138|      0|    case OP_DBL_GT:
  ------------------
  |  |  159|      0|#define OP_DBL_GT    (OP_DBL_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_GT    (OP_DBL_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  132|      0|#define _OP_GT    3
  |  |  ------------------
  ------------------
  |  Branch (2138:5): [True: 0, False: 5.53k]
  ------------------
 2139|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_GT: // %s()\n", __FUNCTION__);
 2140|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2141|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2142|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2143|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2144|      0|      r1.i = r1.d > r2.d;
 2145|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2146|      0|      break;
 2147|       |
 2148|      0|    case OP_DBL_LE:
  ------------------
  |  |  160|      0|#define OP_DBL_LE    (OP_DBL_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_LE    (OP_DBL_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  133|      0|#define _OP_LE    4
  |  |  ------------------
  ------------------
  |  Branch (2148:5): [True: 0, False: 5.53k]
  ------------------
 2149|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_LE: // %s()\n", __FUNCTION__);
 2150|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2151|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2152|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2153|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2154|      0|      r1.i = r1.d <= r2.d;
 2155|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2156|      0|      break;
 2157|       |
 2158|      0|    case OP_DBL_GE:
  ------------------
  |  |  161|      0|#define OP_DBL_GE    (OP_DBL_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_GE    (OP_DBL_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  134|      0|#define _OP_GE    5
  |  |  ------------------
  ------------------
  |  Branch (2158:5): [True: 0, False: 5.53k]
  ------------------
 2159|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_GE: // %s()\n", __FUNCTION__);
 2160|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2161|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2162|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2163|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2164|      0|      r1.i = r1.d >= r2.d;
 2165|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2166|      0|      break;
 2167|       |
 2168|      0|    case OP_DBL_EQ:
  ------------------
  |  |  156|      0|#define OP_DBL_EQ    (OP_DBL_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_EQ    (OP_DBL_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  129|      0|#define _OP_EQ    0
  |  |  ------------------
  ------------------
  |  Branch (2168:5): [True: 0, False: 5.53k]
  ------------------
 2169|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_EQ: // %s()\n", __FUNCTION__);
 2170|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2171|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2172|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2173|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2174|      0|      r1.i = fabs(r1.d - r2.d) < DBL_EPSILON;
 2175|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2176|      0|      break;
 2177|       |
 2178|      0|    case OP_DBL_NEQ:
  ------------------
  |  |  157|      0|#define OP_DBL_NEQ   (OP_DBL_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_NEQ   (OP_DBL_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  130|      0|#define _OP_NEQ   1
  |  |  ------------------
  ------------------
  |  Branch (2178:5): [True: 0, False: 5.53k]
  ------------------
 2179|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_NEQ: // %s()\n", __FUNCTION__);
 2180|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2181|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2182|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2183|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2184|      0|      r1.i = fabs(r1.d - r2.d) >= DBL_EPSILON;
 2185|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2186|      0|      break;
 2187|       |
 2188|      0|    case OP_DBL_ADD:
  ------------------
  |  |  162|      0|#define OP_DBL_ADD   (OP_DBL_BEGIN + _OP_ADD)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_ADD   (OP_DBL_BEGIN + _OP_ADD)
  |  |  ------------------
  |  |  |  |  135|      0|#define _OP_ADD   6
  |  |  ------------------
  ------------------
  |  Branch (2188:5): [True: 0, False: 5.53k]
  ------------------
 2189|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_ADD: // %s()\n", __FUNCTION__);
 2190|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2191|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2192|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2193|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2194|      0|      r1.d = r1.d + r2.d;
 2195|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2196|      0|      break;
 2197|       |
 2198|      0|    case OP_DBL_SUB:
  ------------------
  |  |  163|      0|#define OP_DBL_SUB   (OP_DBL_BEGIN + _OP_SUB)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_SUB   (OP_DBL_BEGIN + _OP_SUB)
  |  |  ------------------
  |  |  |  |  136|      0|#define _OP_SUB   7
  |  |  ------------------
  ------------------
  |  Branch (2198:5): [True: 0, False: 5.53k]
  ------------------
 2199|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_SUB: // %s()\n", __FUNCTION__);
 2200|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2201|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2202|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2203|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2204|      0|      r1.d = r1.d - r2.d;
 2205|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2206|      0|      break;
 2207|       |
 2208|      0|    case OP_DBL_MUL:
  ------------------
  |  |  164|      0|#define OP_DBL_MUL   (OP_DBL_BEGIN + _OP_MUL)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_MUL   (OP_DBL_BEGIN + _OP_MUL)
  |  |  ------------------
  |  |  |  |  137|      0|#define _OP_MUL   8
  |  |  ------------------
  ------------------
  |  Branch (2208:5): [True: 0, False: 5.53k]
  ------------------
 2209|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_MUL: // %s()\n", __FUNCTION__);
 2210|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2211|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2212|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2213|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2214|      0|      r1.d = r1.d * r2.d;
 2215|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2216|      0|      break;
 2217|       |
 2218|      0|    case OP_DBL_DIV:
  ------------------
  |  |  165|      0|#define OP_DBL_DIV   (OP_DBL_BEGIN + _OP_DIV)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_DIV   (OP_DBL_BEGIN + _OP_DIV)
  |  |  ------------------
  |  |  |  |  138|      0|#define _OP_DIV   9
  |  |  ------------------
  ------------------
  |  Branch (2218:5): [True: 0, False: 5.53k]
  ------------------
 2219|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_DBL_DIV: // %s()\n", __FUNCTION__);
 2220|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2221|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2222|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2223|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2224|      0|      r1.d = r1.d / r2.d;
 2225|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2226|      0|      break;
 2227|       |
 2228|      0|    case OP_DBL_MINUS:
  ------------------
  |  |  166|      0|#define OP_DBL_MINUS (OP_DBL_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_MINUS (OP_DBL_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  139|      0|#define _OP_MINUS 10
  |  |  ------------------
  ------------------
  |  Branch (2228:5): [True: 0, False: 5.53k]
  ------------------
 2229|      0|      YR_DEBUG_FPRINTF(
 2230|      0|          2, stderr, "- case OP_DBL_MINUS: // %s()\n", __FUNCTION__);
 2231|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2232|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2233|      0|      r1.d = -r1.d;
 2234|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2235|      0|      break;
 2236|       |
 2237|      0|    case OP_STR_EQ:
  ------------------
  |  |  170|      0|#define OP_STR_EQ    (OP_STR_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_EQ    (OP_STR_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  129|      0|#define _OP_EQ    0
  |  |  ------------------
  ------------------
  |  Branch (2237:5): [True: 0, False: 5.53k]
  ------------------
 2238|      0|    case OP_STR_NEQ:
  ------------------
  |  |  171|      0|#define OP_STR_NEQ   (OP_STR_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_NEQ   (OP_STR_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  130|      0|#define _OP_NEQ   1
  |  |  ------------------
  ------------------
  |  Branch (2238:5): [True: 0, False: 5.53k]
  ------------------
 2239|      0|    case OP_STR_LT:
  ------------------
  |  |  172|      0|#define OP_STR_LT    (OP_STR_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_LT    (OP_STR_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  131|      0|#define _OP_LT    2
  |  |  ------------------
  ------------------
  |  Branch (2239:5): [True: 0, False: 5.53k]
  ------------------
 2240|      0|    case OP_STR_LE:
  ------------------
  |  |  174|      0|#define OP_STR_LE    (OP_STR_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_LE    (OP_STR_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  133|      0|#define _OP_LE    4
  |  |  ------------------
  ------------------
  |  Branch (2240:5): [True: 0, False: 5.53k]
  ------------------
 2241|      0|    case OP_STR_GT:
  ------------------
  |  |  173|      0|#define OP_STR_GT    (OP_STR_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_GT    (OP_STR_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  132|      0|#define _OP_GT    3
  |  |  ------------------
  ------------------
  |  Branch (2241:5): [True: 0, False: 5.53k]
  ------------------
 2242|      0|    case OP_STR_GE:
  ------------------
  |  |  175|      0|#define OP_STR_GE    (OP_STR_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_GE    (OP_STR_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  134|      0|#define _OP_GE    5
  |  |  ------------------
  ------------------
  |  Branch (2242:5): [True: 0, False: 5.53k]
  ------------------
 2243|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2244|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2245|       |
 2246|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2247|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2248|       |
 2249|      0|      switch (opcode)
  ------------------
  |  Branch (2249:15): [True: 0, False: 0]
  ------------------
 2250|      0|      {
 2251|      0|      case OP_STR_EQ:
  ------------------
  |  |  170|      0|#define OP_STR_EQ    (OP_STR_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_EQ    (OP_STR_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  129|      0|#define _OP_EQ    0
  |  |  ------------------
  ------------------
  |  Branch (2251:7): [True: 0, False: 0]
  ------------------
 2252|      0|        YR_DEBUG_FPRINTF(
 2253|      0|            2, stderr, "- case OP_STR_EQ: // %s()\n", __FUNCTION__);
 2254|      0|        r1.i = (ss_compare(r1.ss, r2.ss) == 0);
 2255|      0|        break;
 2256|      0|      case OP_STR_NEQ:
  ------------------
  |  |  171|      0|#define OP_STR_NEQ   (OP_STR_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_NEQ   (OP_STR_BEGIN + _OP_NEQ)
  |  |  ------------------
  |  |  |  |  130|      0|#define _OP_NEQ   1
  |  |  ------------------
  ------------------
  |  Branch (2256:7): [True: 0, False: 0]
  ------------------
 2257|      0|        YR_DEBUG_FPRINTF(
 2258|      0|            2, stderr, "- case OP_STR_NEQ: // %s()\n", __FUNCTION__);
 2259|      0|        r1.i = (ss_compare(r1.ss, r2.ss) != 0);
 2260|      0|        break;
 2261|      0|      case OP_STR_LT:
  ------------------
  |  |  172|      0|#define OP_STR_LT    (OP_STR_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_LT    (OP_STR_BEGIN + _OP_LT)
  |  |  ------------------
  |  |  |  |  131|      0|#define _OP_LT    2
  |  |  ------------------
  ------------------
  |  Branch (2261:7): [True: 0, False: 0]
  ------------------
 2262|      0|        YR_DEBUG_FPRINTF(
 2263|      0|            2, stderr, "- case OP_STR_LT: // %s()\n", __FUNCTION__);
 2264|      0|        r1.i = (ss_compare(r1.ss, r2.ss) < 0);
 2265|      0|        break;
 2266|      0|      case OP_STR_LE:
  ------------------
  |  |  174|      0|#define OP_STR_LE    (OP_STR_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_LE    (OP_STR_BEGIN + _OP_LE)
  |  |  ------------------
  |  |  |  |  133|      0|#define _OP_LE    4
  |  |  ------------------
  ------------------
  |  Branch (2266:7): [True: 0, False: 0]
  ------------------
 2267|      0|        YR_DEBUG_FPRINTF(
 2268|      0|            2, stderr, "- case OP_STR_LE: // %s()\n", __FUNCTION__);
 2269|      0|        r1.i = (ss_compare(r1.ss, r2.ss) <= 0);
 2270|      0|        break;
 2271|      0|      case OP_STR_GT:
  ------------------
  |  |  173|      0|#define OP_STR_GT    (OP_STR_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_GT    (OP_STR_BEGIN + _OP_GT)
  |  |  ------------------
  |  |  |  |  132|      0|#define _OP_GT    3
  |  |  ------------------
  ------------------
  |  Branch (2271:7): [True: 0, False: 0]
  ------------------
 2272|      0|        YR_DEBUG_FPRINTF(
 2273|      0|            2, stderr, "- case OP_STR_GT: // %s()\n", __FUNCTION__);
 2274|      0|        r1.i = (ss_compare(r1.ss, r2.ss) > 0);
 2275|      0|        break;
 2276|      0|      case OP_STR_GE:
  ------------------
  |  |  175|      0|#define OP_STR_GE    (OP_STR_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define OP_STR_GE    (OP_STR_BEGIN + _OP_GE)
  |  |  ------------------
  |  |  |  |  134|      0|#define _OP_GE    5
  |  |  ------------------
  ------------------
  |  Branch (2276:7): [True: 0, False: 0]
  ------------------
 2277|      0|        YR_DEBUG_FPRINTF(
 2278|      0|            2, stderr, "- case OP_STR_GE: // %s()\n", __FUNCTION__);
 2279|      0|        r1.i = (ss_compare(r1.ss, r2.ss) >= 0);
 2280|      0|        break;
 2281|      0|      }
 2282|       |
 2283|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2284|      0|      break;
 2285|       |
 2286|      0|    case OP_CONTAINS:
  ------------------
  |  |  115|      0|#define OP_CONTAINS                   67
  ------------------
  |  Branch (2286:5): [True: 0, False: 5.53k]
  ------------------
 2287|      0|    case OP_ICONTAINS:
  ------------------
  |  |  118|      0|#define OP_ICONTAINS                  70
  ------------------
  |  Branch (2287:5): [True: 0, False: 5.53k]
  ------------------
 2288|      0|    case OP_STARTSWITH:
  ------------------
  |  |  116|      0|#define OP_STARTSWITH                 68
  ------------------
  |  Branch (2288:5): [True: 0, False: 5.53k]
  ------------------
 2289|      0|    case OP_ISTARTSWITH:
  ------------------
  |  |  119|      0|#define OP_ISTARTSWITH                71
  ------------------
  |  Branch (2289:5): [True: 0, False: 5.53k]
  ------------------
 2290|      0|    case OP_ENDSWITH:
  ------------------
  |  |  117|      0|#define OP_ENDSWITH                   69
  ------------------
  |  Branch (2290:5): [True: 0, False: 5.53k]
  ------------------
 2291|      0|    case OP_IENDSWITH:
  ------------------
  |  |  120|      0|#define OP_IENDSWITH                  72
  ------------------
  |  Branch (2291:5): [True: 0, False: 5.53k]
  ------------------
 2292|      0|    case OP_IEQUALS:
  ------------------
  |  |  121|      0|#define OP_IEQUALS                    73
  ------------------
  |  Branch (2292:5): [True: 0, False: 5.53k]
  ------------------
 2293|      0|      pop(r2);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2294|      0|      pop(r1);
  ------------------
  |  |   66|      0|  {                              \
  |  |   67|      0|    assert(stack.sp > 0);        \
  |  |   68|      0|    x = stack.items[--stack.sp]; \
  |  |   69|      0|  }
  ------------------
 2295|       |
 2296|      0|      ensure_defined(r1);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2297|      0|      ensure_defined(r2);
  ------------------
  |  |   74|      0|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|      0|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|  {                       \
  |  |   76|      0|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|      0|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|  {                                     \
  |  |  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|      0|  }                                     \
  |  |  |  |   58|      0|  else                                  \
  |  |  |  |   59|      0|  {                                     \
  |  |  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  |  |  ------------------
  |  |  |  |   61|      0|    stop = true;                        \
  |  |  |  |   62|      0|    break;                              \
  |  |  |  |   63|      0|  }
  |  |  ------------------
  |  |   78|      0|    break;                \
  |  |   79|      0|  }
  ------------------
 2298|       |
 2299|      0|      switch (opcode)
  ------------------
  |  Branch (2299:15): [True: 0, False: 0]
  ------------------
 2300|      0|      {
 2301|      0|      case OP_CONTAINS:
  ------------------
  |  |  115|      0|#define OP_CONTAINS                   67
  ------------------
  |  Branch (2301:7): [True: 0, False: 0]
  ------------------
 2302|      0|        YR_DEBUG_FPRINTF(
 2303|      0|            2, stderr, "- case OP_CONTAINS: // %s()\n", __FUNCTION__);
 2304|      0|        r1.i = ss_contains(r1.ss, r2.ss);
 2305|      0|        break;
 2306|      0|      case OP_ICONTAINS:
  ------------------
  |  |  118|      0|#define OP_ICONTAINS                  70
  ------------------
  |  Branch (2306:7): [True: 0, False: 0]
  ------------------
 2307|      0|        YR_DEBUG_FPRINTF(
 2308|      0|            2, stderr, "- case OP_ICONTAINS: // %s()\n", __FUNCTION__);
 2309|      0|        r1.i = ss_icontains(r1.ss, r2.ss);
 2310|      0|        break;
 2311|      0|      case OP_STARTSWITH:
  ------------------
  |  |  116|      0|#define OP_STARTSWITH                 68
  ------------------
  |  Branch (2311:7): [True: 0, False: 0]
  ------------------
 2312|      0|        YR_DEBUG_FPRINTF(
 2313|      0|            2, stderr, "- case OP_STARTSWITH: // %s()\n", __FUNCTION__);
 2314|      0|        r1.i = ss_startswith(r1.ss, r2.ss);
 2315|      0|        break;
 2316|      0|      case OP_ISTARTSWITH:
  ------------------
  |  |  119|      0|#define OP_ISTARTSWITH                71
  ------------------
  |  Branch (2316:7): [True: 0, False: 0]
  ------------------
 2317|      0|        YR_DEBUG_FPRINTF(
 2318|      0|            2, stderr, "- case OP_ISTARTSWITH: // %s()\n", __FUNCTION__);
 2319|      0|        r1.i = ss_istartswith(r1.ss, r2.ss);
 2320|      0|        break;
 2321|      0|      case OP_ENDSWITH:
  ------------------
  |  |  117|      0|#define OP_ENDSWITH                   69
  ------------------
  |  Branch (2321:7): [True: 0, False: 0]
  ------------------
 2322|      0|        YR_DEBUG_FPRINTF(
 2323|      0|            2, stderr, "- case OP_ENDSWITH: // %s()\n", __FUNCTION__);
 2324|      0|        r1.i = ss_endswith(r1.ss, r2.ss);
 2325|      0|        break;
 2326|      0|      case OP_IENDSWITH:
  ------------------
  |  |  120|      0|#define OP_IENDSWITH                  72
  ------------------
  |  Branch (2326:7): [True: 0, False: 0]
  ------------------
 2327|      0|        YR_DEBUG_FPRINTF(
 2328|      0|            2, stderr, "- case OP_IENDSWITH: // %s()\n", __FUNCTION__);
 2329|      0|        r1.i = ss_iendswith(r1.ss, r2.ss);
 2330|      0|        break;
 2331|      0|      case OP_IEQUALS:
  ------------------
  |  |  121|      0|#define OP_IEQUALS                    73
  ------------------
  |  Branch (2331:7): [True: 0, False: 0]
  ------------------
 2332|      0|        YR_DEBUG_FPRINTF(
 2333|      0|            2, stderr, "- case OP_IEQUALS: // %s()\n", __FUNCTION__);
 2334|      0|        r1.i = ss_icompare(r1.ss, r2.ss) == 0;
 2335|      0|        break;
 2336|      0|      }
 2337|       |
 2338|      0|      push(r1);
  ------------------
  |  |   54|      0|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|  {                                     \
  |  |   56|      0|    stack.items[stack.sp++] = (x);      \
  |  |   57|      0|  }                                     \
  |  |   58|      0|  else                                  \
  |  |   59|      0|  {                                     \
  |  |   60|      0|    result = ERROR_EXEC_STACK_OVERFLOW; \
  |  |  ------------------
  |  |  |  |   70|      0|#define ERROR_EXEC_STACK_OVERFLOW            25
  |  |  ------------------
  |  |   61|      0|    stop = true;                        \
  |  |   62|      0|    break;                              \
  |  |   63|      0|  }
  ------------------
 2339|      0|      break;
 2340|       |
 2341|      0|    default:
  ------------------
  |  Branch (2341:5): [True: 0, False: 5.53k]
  ------------------
 2342|      0|      YR_DEBUG_FPRINTF(
 2343|      0|          2, stderr, "- case <unknown instruction>: // %s()\n", __FUNCTION__);
 2344|       |      // Unknown instruction, this shouldn't happen.
 2345|      0|      assert(false);
 2346|  5.53k|    }
 2347|       |
 2348|       |    // Check for timeout every 100 instruction cycles. If timeout == 0 it means
 2349|       |    // no timeout at all.
 2350|       |
 2351|  5.53k|    if (context->timeout > 0ULL && ++cycle == 100)
  ------------------
  |  Branch (2351:9): [True: 0, False: 5.53k]
  |  Branch (2351:36): [True: 0, False: 0]
  ------------------
 2352|      0|    {
 2353|      0|      elapsed_time = yr_stopwatch_elapsed_ns(&context->stopwatch);
 2354|       |
 2355|      0|      if (elapsed_time > context->timeout)
  ------------------
  |  Branch (2355:11): [True: 0, False: 0]
  ------------------
 2356|      0|      {
 2357|       |#ifdef YR_PROFILING_ENABLED
 2358|       |        context->profiling_info[current_rule_idx].exec_time +=
 2359|       |            (elapsed_time - start_time);
 2360|       |#endif
 2361|      0|        result = ERROR_SCAN_TIMEOUT;
  ------------------
  |  |   71|      0|#define ERROR_SCAN_TIMEOUT                   26
  ------------------
 2362|      0|        stop = true;
 2363|      0|      }
 2364|       |
 2365|      0|      cycle = 0;
 2366|      0|    }
 2367|  5.53k|  }
 2368|       |
 2369|  2.76k|  obj_ptr = yr_arena_get_ptr(obj_arena, 0, 0);
 2370|       |
 2371|  2.76k|  for (int i = 0; i < obj_count; i++) yr_object_destroy(obj_ptr[i]);
  ------------------
  |  Branch (2371:19): [True: 0, False: 2.76k]
  ------------------
 2372|       |
 2373|  2.76k|  yr_arena_release(obj_arena);
 2374|  2.76k|  yr_notebook_destroy(it_notebook);
 2375|  2.76k|  yr_modules_unload_all(context);
 2376|  2.76k|  yr_free(stack.items);
 2377|       |
 2378|  2.76k|  YR_DEBUG_FPRINTF(
 2379|  2.76k|      2,
 2380|  2.76k|      stderr,
 2381|  2.76k|      "} = %d AKA %s // %s()\n",
 2382|  2.76k|      result,
 2383|  2.76k|      yr_debug_error_as_string(result),
 2384|  2.76k|      __FUNCTION__);
 2385|       |
 2386|  2.76k|  return result;
 2387|  2.76k|}

yr_get_pe_header:
   48|  2.76k|{
   49|  2.76k|  PIMAGE_DOS_HEADER mz_header;
   50|  2.76k|  PIMAGE_NT_HEADERS32 pe_header;
   51|       |
   52|  2.76k|  size_t headers_size = 0;
   53|       |
   54|  2.76k|  if (buffer_length < sizeof(IMAGE_DOS_HEADER))
  ------------------
  |  Branch (54:7): [True: 411, False: 2.35k]
  ------------------
   55|    411|    return NULL;
   56|       |
   57|  2.35k|  mz_header = (PIMAGE_DOS_HEADER) buffer;
   58|       |
   59|  2.35k|  if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   88|  2.35k|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   81|  2.35k|#define IMAGE_DOS_SIGNATURE    0x5A4D      // MZ
  ------------------
  |  Branch (59:7): [True: 2.10k, False: 250]
  ------------------
   60|  2.10k|    return NULL;
   61|       |
   62|    250|  if ((int32_t) yr_le32toh(mz_header->e_lfanew) < 0)
  ------------------
  |  |   89|    250|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (62:7): [True: 31, False: 219]
  ------------------
   63|     31|    return NULL;
   64|       |
   65|    219|  headers_size = yr_le32toh(mz_header->e_lfanew) +
  ------------------
  |  |   89|    219|#define yr_le32toh(x) (x)
  ------------------
   66|    219|                 sizeof(pe_header->Signature) + sizeof(IMAGE_FILE_HEADER);
   67|       |
   68|    219|  if (buffer_length < headers_size)
  ------------------
  |  Branch (68:7): [True: 47, False: 172]
  ------------------
   69|     47|    return NULL;
   70|       |
   71|    172|  pe_header = (PIMAGE_NT_HEADERS32)(buffer + yr_le32toh(mz_header->e_lfanew));
  ------------------
  |  |   89|    172|#define yr_le32toh(x) (x)
  ------------------
   72|       |
   73|    172|  headers_size += sizeof(IMAGE_OPTIONAL_HEADER32);
   74|       |
   75|    172|  if (yr_le32toh(pe_header->Signature) == IMAGE_NT_SIGNATURE &&
  ------------------
  |  |   89|    172|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(pe_header->Signature) == IMAGE_NT_SIGNATURE &&
  ------------------
  |  |   85|    344|#define IMAGE_NT_SIGNATURE     0x00004550  // PE00
  ------------------
  |  Branch (75:7): [True: 127, False: 45]
  ------------------
   76|    172|      (yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_I386 ||
  ------------------
  |  |   88|    127|#define yr_le16toh(x) (x)
  ------------------
                    (yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_I386 ||
  ------------------
  |  |  172|    254|#define IMAGE_FILE_MACHINE_I386          0x014c
  ------------------
  |  Branch (76:8): [True: 91, False: 36]
  ------------------
   77|    127|       yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_AMD64) &&
  ------------------
  |  |   88|     36|#define yr_le16toh(x) (x)
  ------------------
                     yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_AMD64) &&
  ------------------
  |  |  167|     36|#define IMAGE_FILE_MACHINE_AMD64         0x8664
  ------------------
  |  Branch (77:8): [True: 2, False: 34]
  ------------------
   78|    172|      buffer_length > headers_size)
  ------------------
  |  Branch (78:7): [True: 77, False: 16]
  ------------------
   79|     77|  {
   80|     77|    return pe_header;
   81|     77|  }
   82|     95|  else
   83|     95|  {
   84|     95|    return NULL;
   85|     95|  }
   86|    172|}
yr_pe_rva_to_offset:
   92|     77|{
   93|     77|  int i = 0;
   94|     77|  PIMAGE_SECTION_HEADER section;
   95|     77|  DWORD section_rva;
   96|     77|  DWORD section_offset;
   97|       |
   98|     77|  section = IMAGE_FIRST_SECTION(pe_header);
  ------------------
  |  |  369|     77|  ((PIMAGE_SECTION_HEADER)(                                             \
  |  |  370|     77|      (BYTE*) ntheader + offsetof(IMAGE_NT_HEADERS32, OptionalHeader) + \
  |  |  371|     77|      yr_le16toh(((PIMAGE_NT_HEADERS32)(ntheader))                      \
  |  |  ------------------
  |  |  |  |   88|     77|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  372|     77|                     ->FileHeader.SizeOfOptionalHeader)))
  ------------------
   99|     77|  section_rva = 0;
  100|     77|  section_offset = 0;
  101|       |
  102|  1.22k|  while (i < MIN(yr_le16toh(pe_header->FileHeader.NumberOfSections), 60))
  ------------------
  |  |   42|  1.22k|#define MIN(x, y) ((x < y) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (42:20): [True: 78, False: 1.14k]
  |  |  ------------------
  ------------------
  |  Branch (102:10): [True: 1.20k, False: 15]
  ------------------
  103|  1.20k|  {
  104|  1.20k|    if ((uint8_t*) section - (uint8_t*) pe_header +
  ------------------
  |  Branch (104:9): [True: 1.14k, False: 62]
  ------------------
  105|  1.20k|            sizeof(IMAGE_SECTION_HEADER) <
  106|  1.20k|        buffer_length)
  107|  1.14k|    {
  108|  1.14k|      if (rva >= yr_le32toh(section->VirtualAddress) &&
  ------------------
  |  |   89|  2.28k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (108:11): [True: 723, False: 421]
  ------------------
  109|  1.14k|          section_rva <= yr_le32toh(section->VirtualAddress))
  ------------------
  |  |   89|    723|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (109:11): [True: 230, False: 493]
  ------------------
  110|    230|      {
  111|    230|        section_rva = yr_le32toh(section->VirtualAddress);
  ------------------
  |  |   89|    230|#define yr_le32toh(x) (x)
  ------------------
  112|    230|        section_offset = yr_le32toh(section->PointerToRawData);
  ------------------
  |  |   89|    230|#define yr_le32toh(x) (x)
  ------------------
  113|    230|      }
  114|       |
  115|  1.14k|      section++;
  116|  1.14k|      i++;
  117|  1.14k|    }
  118|     62|    else
  119|     62|    {
  120|     62|      return 0;
  121|     62|    }
  122|  1.20k|  }
  123|       |
  124|     15|  return section_offset + (rva - section_rva);
  125|     77|}
yr_get_elf_type:
  128|  2.69k|{
  129|  2.69k|  elf_ident_t* elf_ident;
  130|       |
  131|  2.69k|  if (buffer_length < sizeof(elf_ident_t))
  ------------------
  |  Branch (131:7): [True: 17, False: 2.67k]
  ------------------
  132|     17|    return 0;
  133|       |
  134|  2.67k|  elf_ident = (elf_ident_t*) buffer;
  135|       |
  136|  2.67k|  if (yr_le32toh(elf_ident->magic) != ELF_MAGIC)
  ------------------
  |  |   89|  2.67k|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(elf_ident->magic) != ELF_MAGIC)
  ------------------
  |  |   50|  2.67k|#define ELF_MAGIC 0x464C457F
  ------------------
  |  Branch (136:7): [True: 1.58k, False: 1.09k]
  ------------------
  137|  1.58k|  {
  138|  1.58k|    return 0;
  139|  1.58k|  }
  140|       |
  141|  1.09k|  switch (elf_ident->_class)
  142|  1.09k|  {
  143|    402|  case ELF_CLASS_32:
  ------------------
  |  |   76|    402|#define ELF_CLASS_32   0x0001  // 32bit file
  ------------------
  |  Branch (143:3): [True: 402, False: 691]
  ------------------
  144|    402|    if (buffer_length < sizeof(elf32_header_t))
  ------------------
  |  Branch (144:9): [True: 12, False: 390]
  ------------------
  145|     12|    {
  146|     12|      return 0;
  147|     12|    }
  148|    390|    break;
  149|    690|  case ELF_CLASS_64:
  ------------------
  |  |   77|    690|#define ELF_CLASS_64   0x0002  // 64bit file
  ------------------
  |  Branch (149:3): [True: 690, False: 403]
  ------------------
  150|    690|    if (buffer_length < sizeof(elf64_header_t))
  ------------------
  |  Branch (150:9): [True: 2, False: 688]
  ------------------
  151|      2|    {
  152|      2|      return 0;
  153|      2|    }
  154|    688|    break;
  155|    688|  default:
  ------------------
  |  Branch (155:3): [True: 1, False: 1.09k]
  ------------------
  156|       |    /* Unexpected class */
  157|      1|    return 0;
  158|  1.09k|  }
  159|       |
  160|  1.07k|  return elf_ident->_class;
  161|  1.09k|}
yr_get_entry_point_offset:
  351|  2.76k|{
  352|  2.76k|  PIMAGE_NT_HEADERS32 pe_header;
  353|  2.76k|  elf32_header_t* elf_header32;
  354|  2.76k|  elf64_header_t* elf_header64;
  355|       |
  356|  2.76k|  pe_header = yr_get_pe_header(buffer, buffer_length);
  357|       |
  358|  2.76k|  if (pe_header != NULL)
  ------------------
  |  Branch (358:7): [True: 77, False: 2.69k]
  ------------------
  359|     77|  {
  360|     77|    return yr_pe_rva_to_offset(
  361|     77|        pe_header,
  362|     77|        yr_le32toh(pe_header->OptionalHeader.AddressOfEntryPoint),
  ------------------
  |  |   89|     77|#define yr_le32toh(x) (x)
  ------------------
  363|     77|        buffer_length - ((uint8_t*) pe_header - buffer));
  364|     77|  }
  365|       |
  366|  2.69k|  switch (yr_get_elf_type(buffer, buffer_length))
  ------------------
  |  Branch (366:11): [True: 1.61k, False: 1.07k]
  ------------------
  367|  2.69k|  {
  368|    390|  case ELF_CLASS_32:
  ------------------
  |  |   76|    390|#define ELF_CLASS_32   0x0001  // 32bit file
  ------------------
  |  Branch (368:3): [True: 390, False: 2.30k]
  ------------------
  369|    390|    elf_header32 = (elf32_header_t*) buffer;
  370|    390|    return yr_elf_rva_to_offset_32(
  371|    390|        elf_header32, yr_le32toh(elf_header32->entry), buffer_length);
  ------------------
  |  |   89|    390|#define yr_le32toh(x) (x)
  ------------------
  372|       |
  373|    688|  case ELF_CLASS_64:
  ------------------
  |  |   77|    688|#define ELF_CLASS_64   0x0002  // 64bit file
  ------------------
  |  Branch (373:3): [True: 688, False: 2.00k]
  ------------------
  374|    688|    elf_header64 = (elf64_header_t*) buffer;
  375|    688|    return yr_elf_rva_to_offset_64(
  376|    688|        elf_header64, yr_le64toh(elf_header64->entry), buffer_length);
  ------------------
  |  |   90|    688|#define yr_le64toh(x) (x)
  ------------------
  377|  2.69k|  }
  378|       |
  379|  1.61k|  return YR_UNDEFINED;
  ------------------
  |  |   38|  1.61k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  380|  2.69k|}
exefiles.c:yr_elf_rva_to_offset_32:
  167|    390|{
  168|       |  // if the binary is an executable then prefer the program headers to resolve
  169|       |  // the offset
  170|    390|  if (yr_le16toh(elf_header->type) == ELF_ET_EXEC)
  ------------------
  |  |   88|    390|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(elf_header->type) == ELF_ET_EXEC)
  ------------------
  |  |   54|    390|#define ELF_ET_EXEC   0x0002  // executable
  ------------------
  |  Branch (170:7): [True: 163, False: 227]
  ------------------
  171|    163|  {
  172|    163|    int i;
  173|    163|    elf32_program_header_t* program;
  174|    163|    if (yr_le32toh(elf_header->ph_offset) == 0 ||
  ------------------
  |  |   89|    163|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (174:9): [True: 1, False: 162]
  ------------------
  175|    163|        yr_le16toh(elf_header->ph_entry_count == 0))
  ------------------
  |  |   88|    162|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (88:23): [True: 4, False: 158]
  |  |  ------------------
  ------------------
  176|      5|      return 0;
  177|       |
  178|       |    // check to prevent integer wraps
  179|    158|    if (ULONG_MAX - yr_le16toh(elf_header->ph_entry_count) <
  ------------------
  |  |   88|    158|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (179:9): [True: 0, False: 158]
  ------------------
  180|    158|        sizeof(elf32_program_header_t) * yr_le16toh(elf_header->ph_entry_count))
  ------------------
  |  |   88|    158|#define yr_le16toh(x) (x)
  ------------------
  181|      0|      return 0;
  182|       |
  183|       |    // check that 'ph_offset' doesn't wrap when added to the
  184|       |    // size of entries.
  185|    158|    if (ULONG_MAX - yr_le32toh(elf_header->ph_offset) <
  ------------------
  |  |   89|    158|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (185:9): [True: 0, False: 158]
  ------------------
  186|    158|        sizeof(elf32_program_header_t) * yr_le16toh(elf_header->ph_entry_count))
  ------------------
  |  |   88|    158|#define yr_le16toh(x) (x)
  ------------------
  187|      0|      return 0;
  188|       |
  189|       |    // ensure we don't exceed the buffer size
  190|    158|    if (yr_le32toh(elf_header->ph_offset) +
  ------------------
  |  |   89|    158|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (190:9): [True: 76, False: 82]
  ------------------
  191|    158|            sizeof(elf32_program_header_t) *
  192|    158|                yr_le16toh(elf_header->ph_entry_count) >
  ------------------
  |  |   88|    158|#define yr_le16toh(x) (x)
  ------------------
  193|    158|        buffer_length)
  194|     76|      return 0;
  195|       |
  196|     82|    program =
  197|     82|        (elf32_program_header_t*) ((uint8_t*) elf_header + yr_le32toh(elf_header->ph_offset));
  ------------------
  |  |   89|     82|#define yr_le32toh(x) (x)
  ------------------
  198|       |
  199|    547|    for (i = 0; i < yr_le16toh(elf_header->ph_entry_count); i++)
  ------------------
  |  |   88|    547|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (199:17): [True: 504, False: 43]
  ------------------
  200|    504|    {
  201|    504|      if (rva >= yr_le32toh(program->virt_addr) &&
  ------------------
  |  |   89|  1.00k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (201:11): [True: 276, False: 228]
  ------------------
  202|    504|          rva < yr_le32toh(program->virt_addr) + yr_le32toh(program->mem_size))
  ------------------
  |  |   89|    276|#define yr_le32toh(x) (x)
  ------------------
                        rva < yr_le32toh(program->virt_addr) + yr_le32toh(program->mem_size))
  ------------------
  |  |   89|    276|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (202:11): [True: 39, False: 237]
  ------------------
  203|     39|      {
  204|     39|        return yr_le32toh(program->offset) +
  ------------------
  |  |   89|     39|#define yr_le32toh(x) (x)
  ------------------
  205|     39|               (rva - yr_le32toh(program->virt_addr));
  ------------------
  |  |   89|     39|#define yr_le32toh(x) (x)
  ------------------
  206|     39|      }
  207|       |
  208|    465|      program++;
  209|    465|    }
  210|     82|  }
  211|    227|  else
  212|    227|  {
  213|    227|    int i;
  214|    227|    elf32_section_header_t* section;
  215|       |
  216|    227|    if (yr_le32toh(elf_header->sh_offset) == 0 ||
  ------------------
  |  |   89|    227|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (216:9): [True: 1, False: 226]
  ------------------
  217|    227|        yr_le16toh(elf_header->sh_entry_count == 0))
  ------------------
  |  |   88|    226|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (88:23): [True: 4, False: 222]
  |  |  ------------------
  ------------------
  218|      5|      return 0;
  219|       |
  220|       |    // check to prevent integer wraps
  221|       |
  222|    222|    if (ULONG_MAX - yr_le16toh(elf_header->sh_entry_count) <
  ------------------
  |  |   88|    222|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (222:9): [True: 0, False: 222]
  ------------------
  223|    222|        sizeof(elf32_section_header_t) * yr_le16toh(elf_header->sh_entry_count))
  ------------------
  |  |   88|    222|#define yr_le16toh(x) (x)
  ------------------
  224|      0|      return 0;
  225|       |
  226|       |    // check that 'sh_offset' doesn't wrap when added to the
  227|       |    // size of entries.
  228|       |
  229|    222|    if (ULONG_MAX - yr_le32toh(elf_header->sh_offset) <
  ------------------
  |  |   89|    222|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (229:9): [True: 0, False: 222]
  ------------------
  230|    222|        sizeof(elf32_section_header_t) * yr_le16toh(elf_header->sh_entry_count))
  ------------------
  |  |   88|    222|#define yr_le16toh(x) (x)
  ------------------
  231|      0|      return 0;
  232|       |
  233|    222|    if (yr_le32toh(elf_header->sh_offset) +
  ------------------
  |  |   89|    222|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (233:9): [True: 85, False: 137]
  ------------------
  234|    222|            sizeof(elf32_section_header_t) *
  235|    222|                yr_le16toh(elf_header->sh_entry_count) >
  ------------------
  |  |   88|    222|#define yr_le16toh(x) (x)
  ------------------
  236|    222|        buffer_length)
  237|     85|      return 0;
  238|       |
  239|    137|    section = (elf32_section_header_t*)
  240|    137|      ((unsigned char*) elf_header + yr_le32toh(elf_header->sh_offset));
  ------------------
  |  |   89|    137|#define yr_le32toh(x) (x)
  ------------------
  241|       |
  242|  1.12k|    for (i = 0; i < yr_le16toh(elf_header->sh_entry_count); i++)
  ------------------
  |  |   88|  1.12k|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (242:17): [True: 1.07k, False: 55]
  ------------------
  243|  1.07k|    {
  244|  1.07k|      if (yr_le32toh(section->type) != ELF_SHT_NULL &&
  ------------------
  |  |   89|  1.07k|#define yr_le32toh(x) (x)
  ------------------
                    if (yr_le32toh(section->type) != ELF_SHT_NULL &&
  ------------------
  |  |   83|  2.14k|#define ELF_SHT_NULL     0   // Section header table entry unused
  ------------------
  |  Branch (244:11): [True: 837, False: 233]
  ------------------
  245|  1.07k|          yr_le32toh(section->type) != ELF_SHT_NOBITS &&
  ------------------
  |  |   89|    837|#define yr_le32toh(x) (x)
  ------------------
                        yr_le32toh(section->type) != ELF_SHT_NOBITS &&
  ------------------
  |  |   91|  1.90k|#define ELF_SHT_NOBITS   8   // Program space with no data (bss)
  ------------------
  |  Branch (245:11): [True: 767, False: 70]
  ------------------
  246|  1.07k|          rva >= yr_le32toh(section->addr) &&
  ------------------
  |  |   89|  1.83k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (246:11): [True: 515, False: 252]
  ------------------
  247|  1.07k|          rva < yr_le32toh(section->addr) + yr_le32toh(section->size))
  ------------------
  |  |   89|    515|#define yr_le32toh(x) (x)
  ------------------
                        rva < yr_le32toh(section->addr) + yr_le32toh(section->size))
  ------------------
  |  |   89|    515|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (247:11): [True: 82, False: 433]
  ------------------
  248|     82|      {
  249|       |        // prevent integer wrapping with the return value
  250|       |
  251|     82|        if (ULONG_MAX - yr_le32toh(section->offset) <
  ------------------
  |  |   89|     82|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (251:13): [True: 0, False: 82]
  ------------------
  252|     82|            (rva - yr_le32toh(section->addr)))
  ------------------
  |  |   89|     82|#define yr_le32toh(x) (x)
  ------------------
  253|      0|          return 0;
  254|     82|        else
  255|     82|          return yr_le32toh(section->offset) +
  ------------------
  |  |   89|     82|#define yr_le32toh(x) (x)
  ------------------
  256|     82|                 (rva - yr_le32toh(section->addr));
  ------------------
  |  |   89|     82|#define yr_le32toh(x) (x)
  ------------------
  257|     82|      }
  258|       |
  259|    988|      section++;
  260|    988|    }
  261|    137|  }
  262|       |
  263|     98|  return 0;
  264|    390|}
exefiles.c:yr_elf_rva_to_offset_64:
  270|    688|{
  271|       |  // if the binary is an executable then prefer the program headers to resolve
  272|       |  // the offset
  273|    688|  if (yr_le16toh(elf_header->type) == ELF_ET_EXEC)
  ------------------
  |  |   88|    688|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(elf_header->type) == ELF_ET_EXEC)
  ------------------
  |  |   54|    688|#define ELF_ET_EXEC   0x0002  // executable
  ------------------
  |  Branch (273:7): [True: 316, False: 372]
  ------------------
  274|    316|  {
  275|    316|    int i;
  276|    316|    elf64_program_header_t* program;
  277|    316|    if (yr_le64toh(elf_header->ph_offset) == 0 ||
  ------------------
  |  |   90|    316|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (277:9): [True: 1, False: 315]
  ------------------
  278|    316|        yr_le16toh(elf_header->ph_entry_count == 0))
  ------------------
  |  |   88|    315|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (88:23): [True: 1, False: 314]
  |  |  ------------------
  ------------------
  279|      2|      return 0;
  280|       |
  281|       |    // check that 'ph_offset' doesn't wrap when added to the
  282|       |    // size of entries.
  283|    314|    if (ULONG_MAX - yr_le64toh(elf_header->ph_offset) <
  ------------------
  |  |   90|    314|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (283:9): [True: 20, False: 294]
  ------------------
  284|    314|        sizeof(elf64_program_header_t) * yr_le16toh(elf_header->ph_entry_count))
  ------------------
  |  |   88|    314|#define yr_le16toh(x) (x)
  ------------------
  285|     20|      return 0;
  286|       |
  287|       |    // ensure we don't exceed the buffer size
  288|    294|    if (yr_le64toh(elf_header->ph_offset) +
  ------------------
  |  |   90|    294|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (288:9): [True: 152, False: 142]
  ------------------
  289|    294|            sizeof(elf64_program_header_t) *
  290|    294|                yr_le16toh(elf_header->ph_entry_count) >
  ------------------
  |  |   88|    294|#define yr_le16toh(x) (x)
  ------------------
  291|    294|        buffer_length)
  292|    152|      return 0;
  293|       |
  294|    142|    program =
  295|    142|        (elf64_program_header_t*) ((uint8_t*) elf_header + yr_le64toh(elf_header->ph_offset));
  ------------------
  |  |   90|    142|#define yr_le64toh(x) (x)
  ------------------
  296|       |
  297|    651|    for (i = 0; i < yr_le16toh(elf_header->ph_entry_count); i++)
  ------------------
  |  |   88|    651|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (297:17): [True: 530, False: 121]
  ------------------
  298|    530|    {
  299|    530|      if (rva >= yr_le64toh(program->virt_addr) &&
  ------------------
  |  |   90|  1.06k|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (299:11): [True: 317, False: 213]
  ------------------
  300|    530|          rva < yr_le64toh(program->virt_addr) + yr_le64toh(program->mem_size))
  ------------------
  |  |   90|    317|#define yr_le64toh(x) (x)
  ------------------
                        rva < yr_le64toh(program->virt_addr) + yr_le64toh(program->mem_size))
  ------------------
  |  |   90|    317|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (300:11): [True: 21, False: 296]
  ------------------
  301|     21|      {
  302|     21|        return yr_le64toh(program->offset) +
  ------------------
  |  |   90|     21|#define yr_le64toh(x) (x)
  ------------------
  303|     21|               (rva - yr_le64toh(program->virt_addr));
  ------------------
  |  |   90|     21|#define yr_le64toh(x) (x)
  ------------------
  304|     21|      }
  305|       |
  306|    509|      program++;
  307|    509|    }
  308|    142|  }
  309|    372|  else
  310|    372|  {
  311|    372|    int i;
  312|    372|    elf64_section_header_t* section;
  313|       |
  314|    372|    if (yr_le64toh(elf_header->sh_offset) == 0 ||
  ------------------
  |  |   90|    372|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (314:9): [True: 1, False: 371]
  ------------------
  315|    372|        yr_le16toh(elf_header->sh_entry_count) == 0)
  ------------------
  |  |   88|    371|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (315:9): [True: 3, False: 368]
  ------------------
  316|      4|      return 0;
  317|       |
  318|       |    // check that 'sh_offset' doesn't wrap when added to the
  319|       |    // size of entries.
  320|    368|    if (ULONG_MAX - yr_le64toh(elf_header->sh_offset) <
  ------------------
  |  |   90|    368|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (320:9): [True: 19, False: 349]
  ------------------
  321|    368|        sizeof(elf64_section_header_t) * yr_le16toh(elf_header->sh_entry_count))
  ------------------
  |  |   88|    368|#define yr_le16toh(x) (x)
  ------------------
  322|     19|      return 0;
  323|       |
  324|    349|    if (yr_le64toh(elf_header->sh_offset) +
  ------------------
  |  |   90|    349|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (324:9): [True: 147, False: 202]
  ------------------
  325|    349|            sizeof(elf64_section_header_t) *
  326|    349|                yr_le16toh(elf_header->sh_entry_count) >
  ------------------
  |  |   88|    349|#define yr_le16toh(x) (x)
  ------------------
  327|    349|        buffer_length)
  328|    147|      return 0;
  329|       |
  330|    202|    section =
  331|    202|        (elf64_section_header_t*) ((uint8_t*) elf_header + yr_le64toh(elf_header->sh_offset));
  ------------------
  |  |   90|    202|#define yr_le64toh(x) (x)
  ------------------
  332|       |
  333|  2.52k|    for (i = 0; i < yr_le16toh(elf_header->sh_entry_count); i++)
  ------------------
  |  |   88|  2.52k|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (333:17): [True: 2.41k, False: 105]
  ------------------
  334|  2.41k|    {
  335|  2.41k|      if (yr_le32toh(section->type) != ELF_SHT_NULL &&
  ------------------
  |  |   89|  2.41k|#define yr_le32toh(x) (x)
  ------------------
                    if (yr_le32toh(section->type) != ELF_SHT_NULL &&
  ------------------
  |  |   83|  4.83k|#define ELF_SHT_NULL     0   // Section header table entry unused
  ------------------
  |  Branch (335:11): [True: 1.92k, False: 494]
  ------------------
  336|  2.41k|          yr_le32toh(section->type) != ELF_SHT_NOBITS &&
  ------------------
  |  |   89|  1.92k|#define yr_le32toh(x) (x)
  ------------------
                        yr_le32toh(section->type) != ELF_SHT_NOBITS &&
  ------------------
  |  |   91|  4.34k|#define ELF_SHT_NOBITS   8   // Program space with no data (bss)
  ------------------
  |  Branch (336:11): [True: 1.68k, False: 241]
  ------------------
  337|  2.41k|          rva >= yr_le64toh(section->addr) &&
  ------------------
  |  |   90|  4.10k|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (337:11): [True: 1.38k, False: 301]
  ------------------
  338|  2.41k|          rva < yr_le64toh(section->addr) + yr_le64toh(section->size))
  ------------------
  |  |   90|  1.38k|#define yr_le64toh(x) (x)
  ------------------
                        rva < yr_le64toh(section->addr) + yr_le64toh(section->size))
  ------------------
  |  |   90|  1.38k|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (338:11): [True: 97, False: 1.28k]
  ------------------
  339|     97|      {
  340|     97|        return yr_le64toh(section->offset) + (rva - yr_le64toh(section->addr));
  ------------------
  |  |   90|     97|#define yr_le64toh(x) (x)
  ------------------
                      return yr_le64toh(section->offset) + (rva - yr_le64toh(section->addr));
  ------------------
  |  |   90|     97|#define yr_le64toh(x) (x)
  ------------------
  341|     97|      }
  342|       |
  343|  2.32k|      section++;
  344|  2.32k|    }
  345|    202|  }
  346|       |
  347|    226|  return 0;
  348|    688|}

yara_yyparse:
 1881|      2|{
 1882|       |/* Lookahead token kind.  */
 1883|      2|int yychar;
 1884|       |
 1885|       |
 1886|       |/* The semantic value of the lookahead symbol.  */
 1887|       |/* Default value used for initialization, for pacifying older GCCs
 1888|       |   or non-GCC compilers.  */
 1889|      2|YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
  ------------------
  |  |  726|      2|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 1890|      2|YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  |  726|      2|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 1891|       |
 1892|       |    /* Number of syntax errors so far.  */
 1893|      2|    int yynerrs = 0;
 1894|       |
 1895|      2|    yy_state_fast_t yystate = 0;
 1896|       |    /* Number of tokens to shift before error messages enabled.  */
 1897|      2|    int yyerrstatus = 0;
 1898|       |
 1899|       |    /* Refer to the stacks through separate pointers, to allow yyoverflow
 1900|       |       to reallocate them elsewhere.  */
 1901|       |
 1902|       |    /* Their size.  */
 1903|      2|    YYPTRDIFF_T yystacksize = YYINITDEPTH;
  ------------------
  |  |  633|      2|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                  YYPTRDIFF_T yystacksize = YYINITDEPTH;
  ------------------
  |  | 1470|      2|# define YYINITDEPTH 200
  ------------------
 1904|       |
 1905|       |    /* The state stack: array, bottom, top.  */
 1906|      2|    yy_state_t yyssa[YYINITDEPTH];
 1907|      2|    yy_state_t *yyss = yyssa;
 1908|      2|    yy_state_t *yyssp = yyss;
 1909|       |
 1910|       |    /* The semantic value stack: array, bottom, top.  */
 1911|      2|    YYSTYPE yyvsa[YYINITDEPTH];
 1912|      2|    YYSTYPE *yyvs = yyvsa;
 1913|      2|    YYSTYPE *yyvsp = yyvs;
 1914|       |
 1915|      2|  int yyn;
 1916|       |  /* The return value of yyparse.  */
 1917|      2|  int yyresult;
 1918|       |  /* Lookahead symbol kind.  */
 1919|      2|  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
 1920|       |  /* The variables used to return semantic value and location from the
 1921|       |     action routines.  */
 1922|      2|  YYSTYPE yyval;
 1923|       |
 1924|       |  /* Buffer for error messages, and its allocated size.  */
 1925|      2|  char yymsgbuf[128];
 1926|      2|  char *yymsg = yymsgbuf;
 1927|      2|  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
  ------------------
  |  |  633|      2|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1928|       |
 1929|      2|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 1930|       |
 1931|       |  /* The number of symbols on the RHS of the reduced rule.
 1932|       |     Keep to zero when no symbol should be popped.  */
 1933|      2|  int yylen = 0;
 1934|       |
 1935|      2|  YYDPRINTF ((stderr, "Starting parse\n"));
  ------------------
  |  | 1461|      2|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 1936|       |
 1937|      2|  yychar = YYEMPTY; /* Cause a token to be read.  */
  ------------------
  |  |   52|      2|#define yychar       yara_yychar
  ------------------
                yychar = YYEMPTY; /* Cause a token to be read.  */
  ------------------
  |  |  312|      2|#define YYEMPTY -2
  ------------------
 1938|       |
 1939|      2|  goto yysetstate;
 1940|       |
 1941|       |
 1942|       |/*------------------------------------------------------------.
 1943|       || yynewstate -- push a new state, which is found in yystate.  |
 1944|       |`------------------------------------------------------------*/
 1945|     12|yynewstate:
 1946|       |  /* In all cases, when you get here, the value and location stacks
 1947|       |     have just been pushed.  So pushing a state here evens the stacks.  */
 1948|     12|  yyssp++;
 1949|       |
 1950|       |
 1951|       |/*--------------------------------------------------------------------.
 1952|       || yysetstate -- set current state (the top of the stack) to yystate.  |
 1953|       |`--------------------------------------------------------------------*/
 1954|     14|yysetstate:
 1955|     14|  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  ------------------
  |  | 1461|     14|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 1956|     14|  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  ------------------
  |  |  749|     14|#define YY_ASSERT(E) ((void) (0 && (E)))
  |  |  ------------------
  |  |  |  Branch (749:31): [Folded - Ignored]
  |  |  |  Branch (749:37): [True: 0, False: 0]
  |  |  |  Branch (749:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1957|     14|  YY_IGNORE_USELESS_CAST_BEGIN
 1958|     14|  *yyssp = YY_CAST (yy_state_t, yystate);
  ------------------
  |  |  210|     14|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 1959|     14|  YY_IGNORE_USELESS_CAST_END
 1960|     14|  YY_STACK_PRINT (yyss, yyssp);
 1961|       |
 1962|     14|  if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (1962:7): [True: 0, False: 14]
  ------------------
 1963|       |#if !defined yyoverflow && !defined YYSTACK_RELOCATE
 1964|       |    YYNOMEM;
 1965|       |#else
 1966|      0|    {
 1967|       |      /* Get the current used size of the three stacks, in elements.  */
 1968|      0|      YYPTRDIFF_T yysize = yyssp - yyss + 1;
  ------------------
  |  |  633|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1969|       |
 1970|       |# if defined yyoverflow
 1971|       |      {
 1972|       |        /* Give user a chance to reallocate the stack.  Use copies of
 1973|       |           these so that the &'s don't force the real ones into
 1974|       |           memory.  */
 1975|       |        yy_state_t *yyss1 = yyss;
 1976|       |        YYSTYPE *yyvs1 = yyvs;
 1977|       |
 1978|       |        /* Each stack pointer address is followed by the size of the
 1979|       |           data in use in that stack, in bytes.  This used to be a
 1980|       |           conditional around just the two extra args, but that might
 1981|       |           be undefined if yyoverflow is a macro.  */
 1982|       |        yyoverflow (YY_("memory exhausted"),
 1983|       |                    &yyss1, yysize * YYSIZEOF (*yyssp),
 1984|       |                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
 1985|       |                    &yystacksize);
 1986|       |        yyss = yyss1;
 1987|       |        yyvs = yyvs1;
 1988|       |      }
 1989|       |# else /* defined YYSTACK_RELOCATE */
 1990|       |      /* Extend the stack our own way.  */
 1991|      0|      if (YYMAXDEPTH <= yystacksize)
  ------------------
  |  | 1481|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (1991:11): [True: 0, False: 0]
  ------------------
 1992|      0|        YYNOMEM;
  ------------------
  |  | 1312|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
 1993|      0|      yystacksize *= 2;
 1994|      0|      if (YYMAXDEPTH < yystacksize)
  ------------------
  |  | 1481|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (1994:11): [True: 0, False: 0]
  ------------------
 1995|      0|        yystacksize = YYMAXDEPTH;
  ------------------
  |  | 1481|      0|# define YYMAXDEPTH 10000
  ------------------
 1996|       |
 1997|      0|      {
 1998|      0|        yy_state_t *yyss1 = yyss;
 1999|      0|        union yyalloc *yyptr =
 2000|      0|          YY_CAST (union yyalloc *,
  ------------------
  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 2001|      0|                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
 2002|      0|        if (! yyptr)
  ------------------
  |  Branch (2002:13): [True: 0, False: 0]
  ------------------
 2003|      0|          YYNOMEM;
  ------------------
  |  | 1312|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
 2004|      0|        YYSTACK_RELOCATE (yyss_alloc, yyss);
  ------------------
  |  |  846|      0|    do                                                                  \
  |  |  847|      0|      {                                                                 \
  |  |  848|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  633|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  849|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  864|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  850|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  851|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  830|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  852|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  853|      0|      }                                                                 \
  |  |  854|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (854:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2005|      0|        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  ------------------
  |  |  846|      0|    do                                                                  \
  |  |  847|      0|      {                                                                 \
  |  |  848|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  633|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  849|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  864|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  850|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  851|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  830|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  852|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  666|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  853|      0|      }                                                                 \
  |  |  854|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (854:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2006|      0|#  undef YYSTACK_RELOCATE
 2007|      0|        if (yyss1 != yyssa)
  ------------------
  |  Branch (2007:13): [True: 0, False: 0]
  ------------------
 2008|      0|          YYSTACK_FREE (yyss1);
  ------------------
  |  |  791|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  106|      0|#define YYFREE yr_free
  |  |  ------------------
  ------------------
 2009|      0|      }
 2010|      0|# endif
 2011|       |
 2012|      0|      yyssp = yyss + yysize - 1;
 2013|      0|      yyvsp = yyvs + yysize - 1;
 2014|       |
 2015|      0|      YY_IGNORE_USELESS_CAST_BEGIN
 2016|      0|      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
  ------------------
  |  | 1461|      0|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 2017|      0|                  YY_CAST (long, yystacksize)));
 2018|      0|      YY_IGNORE_USELESS_CAST_END
 2019|       |
 2020|      0|      if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (2020:11): [True: 0, False: 0]
  ------------------
 2021|      0|        YYABORT;
  ------------------
  |  | 1310|      0|#define YYABORT         goto yyabortlab
  ------------------
 2022|      0|    }
 2023|     14|#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 2024|       |
 2025|       |
 2026|     14|  if (yystate == YYFINAL)
  ------------------
  |  |  879|     14|#define YYFINAL  2
  ------------------
  |  Branch (2026:7): [True: 2, False: 12]
  ------------------
 2027|      2|    YYACCEPT;
  ------------------
  |  | 1309|      2|#define YYACCEPT        goto yyacceptlab
  ------------------
 2028|       |
 2029|     12|  goto yybackup;
 2030|       |
 2031|       |
 2032|       |/*-----------.
 2033|       || yybackup.  |
 2034|       |`-----------*/
 2035|     12|yybackup:
 2036|       |  /* Do appropriate processing given the current state.  Read a
 2037|       |     lookahead token if we need one and don't already have one.  */
 2038|       |
 2039|       |  /* First try to decide what to do without reference to lookahead token.  */
 2040|     12|  yyn = yypact[yystate];
 2041|     12|  if (yypact_value_is_default (yyn))
  ------------------
  |  | 1020|     12|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  | 1017|     12|#define YYPACT_NINF (-172)
  |  |  ------------------
  |  |  |  Branch (1020:3): [True: 6, False: 6]
  |  |  ------------------
  ------------------
 2042|      6|    goto yydefault;
 2043|       |
 2044|       |  /* Not known => get a lookahead token if don't already have one.  */
 2045|       |
 2046|       |  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
 2047|      6|  if (yychar == YYEMPTY)
  ------------------
  |  |   52|      6|#define yychar       yara_yychar
  ------------------
                if (yychar == YYEMPTY)
  ------------------
  |  |  312|      6|#define YYEMPTY -2
  ------------------
  |  Branch (2047:7): [True: 6, False: 0]
  ------------------
 2048|      6|    {
 2049|      6|      YYDPRINTF ((stderr, "Reading a token\n"));
  ------------------
  |  | 1461|      6|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 2050|      6|      yychar = yylex (&yylval, yyscanner, compiler);
  ------------------
  |  |   52|      6|#define yychar       yara_yychar
  ------------------
                    yychar = yylex (&yylval, yyscanner, compiler);
  ------------------
  |  |   48|      6|#define yylex        yara_yylex
  ------------------
 2051|      6|    }
 2052|       |
 2053|      6|  if (yychar <= _END_OF_FILE_)
  ------------------
  |  |   52|      6|#define yychar       yara_yychar
  ------------------
                if (yychar <= _END_OF_FILE_)
  ------------------
  |  |  313|      6|#define _END_OF_FILE_ 0
  ------------------
  |  Branch (2053:7): [True: 2, False: 4]
  ------------------
 2054|      2|    {
 2055|      2|      yychar = _END_OF_FILE_;
  ------------------
  |  |   52|      2|#define yychar       yara_yychar
  ------------------
                    yychar = _END_OF_FILE_;
  ------------------
  |  |  313|      2|#define _END_OF_FILE_ 0
  ------------------
 2056|      2|      yytoken = YYSYMBOL_YYEOF;
 2057|      2|      YYDPRINTF ((stderr, "Now at end of input.\n"));
  ------------------
  |  | 1461|      2|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 2058|      2|    }
 2059|      4|  else if (yychar == YYerror)
  ------------------
  |  |   52|      4|#define yychar       yara_yychar
  ------------------
                else if (yychar == YYerror)
  ------------------
  |  |  314|      4|#define YYerror 256
  ------------------
  |  Branch (2059:12): [True: 0, False: 4]
  ------------------
 2060|      0|    {
 2061|       |      /* The scanner already issued an error message, process directly
 2062|       |         to error recovery.  But do not keep the error token as
 2063|       |         lookahead, it is too special and may lead us to an endless
 2064|       |         loop in error recovery. */
 2065|      0|      yychar = YYUNDEF;
  ------------------
  |  |   52|      0|#define yychar       yara_yychar
  ------------------
                    yychar = YYUNDEF;
  ------------------
  |  |  315|      0|#define YYUNDEF 257
  ------------------
 2066|      0|      yytoken = YYSYMBOL_YYerror;
 2067|      0|      goto yyerrlab1;
 2068|      0|    }
 2069|      4|  else
 2070|      4|    {
 2071|      4|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  899|      4|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  |  893|      4|#define YYMAXUTOK   319
  |  |  ------------------
  |  |  |  Branch (899:4): [True: 4, False: 0]
  |  |  |  Branch (899:18): [True: 4, False: 0]
  |  |  ------------------
  |  |  900|      4|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  |  210|      4|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  |  901|      4|   : YYSYMBOL_YYUNDEF)
  ------------------
 2072|      4|      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 2073|      4|    }
 2074|       |
 2075|       |  /* If the proper action on seeing token YYTOKEN is to reduce or to
 2076|       |     detect an error, take that action.  */
 2077|      6|  yyn += yytoken;
 2078|      6|  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  ------------------
  |  |  881|      6|#define YYLAST   476
  ------------------
  |  Branch (2078:7): [True: 0, False: 6]
  |  Branch (2078:18): [True: 0, False: 6]
  |  Branch (2078:34): [True: 0, False: 6]
  ------------------
 2079|      0|    goto yydefault;
 2080|      6|  yyn = yytable[yyn];
 2081|      6|  if (yyn <= 0)
  ------------------
  |  Branch (2081:7): [True: 0, False: 6]
  ------------------
 2082|      0|    {
 2083|      0|      if (yytable_value_is_error (yyn))
  ------------------
  |  | 1025|      0|  0
  |  |  ------------------
  |  |  |  Branch (1025:3): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2084|      0|        goto yyerrlab;
 2085|      0|      yyn = -yyn;
 2086|      0|      goto yyreduce;
 2087|      0|    }
 2088|       |
 2089|       |  /* Count tokens shifted since error; after three, turn off error
 2090|       |     status.  */
 2091|      6|  if (yyerrstatus)
  ------------------
  |  Branch (2091:7): [True: 0, False: 6]
  ------------------
 2092|      0|    yyerrstatus--;
 2093|       |
 2094|       |  /* Shift the lookahead token.  */
 2095|      6|  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 2096|      6|  yystate = yyn;
 2097|      6|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 2098|      6|  *++yyvsp = yylval;
 2099|      6|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 2100|       |
 2101|       |  /* Discard the shifted token.  */
 2102|      6|  yychar = YYEMPTY;
  ------------------
  |  |   52|      6|#define yychar       yara_yychar
  ------------------
                yychar = YYEMPTY;
  ------------------
  |  |  312|      6|#define YYEMPTY -2
  ------------------
 2103|      6|  goto yynewstate;
 2104|       |
 2105|       |
 2106|       |/*-----------------------------------------------------------.
 2107|       || yydefault -- do the default action for the current state.  |
 2108|       |`-----------------------------------------------------------*/
 2109|      6|yydefault:
 2110|      6|  yyn = yydefact[yystate];
 2111|      6|  if (yyn == 0)
  ------------------
  |  Branch (2111:7): [True: 0, False: 6]
  ------------------
 2112|      0|    goto yyerrlab;
 2113|      6|  goto yyreduce;
 2114|       |
 2115|       |
 2116|       |/*-----------------------------.
 2117|       || yyreduce -- do a reduction.  |
 2118|       |`-----------------------------*/
 2119|      6|yyreduce:
 2120|       |  /* yyn is the number of a rule to reduce with.  */
 2121|      6|  yylen = yyr2[yyn];
 2122|       |
 2123|       |  /* If YYLEN is nonzero, implement the default value of the action:
 2124|       |     '$$ = $1'.
 2125|       |
 2126|       |     Otherwise, the following line sets YYVAL to garbage.
 2127|       |     This behavior is undocumented and Bison
 2128|       |     users should not rely upon it.  Assigning to YYVAL
 2129|       |     unconditionally makes the parser a bit smaller, and it avoids a
 2130|       |     GCC warning that YYVAL may be used uninitialized.  */
 2131|      6|  yyval = yyvsp[1-yylen];
 2132|       |
 2133|       |
 2134|      6|  YY_REDUCE_PRINT (yyn);
 2135|      6|  switch (yyn)
 2136|      6|    {
 2137|      0|  case 8: /* rules: rules "end of included file"  */
  ------------------
  |  Branch (2137:3): [True: 0, False: 6]
  ------------------
 2138|      0|#line 368 "libyara/grammar.y"
 2139|      0|      {
 2140|      0|        _yr_compiler_pop_file_name(compiler);
 2141|      0|      }
 2142|      0|#line 2143 "libyara/grammar.c"
 2143|      0|    break;
 2144|       |
 2145|      2|  case 9: /* import: "<import>" "text string"  */
  ------------------
  |  Branch (2145:3): [True: 2, False: 4]
  ------------------
 2146|      2|#line 376 "libyara/grammar.y"
 2147|      2|      {
 2148|      2|        int result = yr_parser_reduce_import(yyscanner, (yyvsp[0].sized_string));
 2149|       |
 2150|      2|        yr_free((yyvsp[0].sized_string));
 2151|       |
 2152|      2|        fail_if_error(result);
  ------------------
  |  |  135|      2|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      4|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      2|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 2]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      2|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2153|      2|      }
 2154|      0|#line 2155 "libyara/grammar.c"
 2155|      0|    break;
 2156|       |
 2157|      0|  case 10: /* @1: %empty  */
  ------------------
  |  Branch (2157:3): [True: 0, False: 6]
  ------------------
 2158|      0|#line 388 "libyara/grammar.y"
 2159|      0|      {
 2160|      0|        fail_if_error(yr_parser_reduce_rule_declaration_phase_1(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2161|      0|            yyscanner, (int32_t) (yyvsp[-2].integer), (yyvsp[0].c_string), &(yyval.rule)));
 2162|      0|      }
 2163|      0|#line 2164 "libyara/grammar.c"
 2164|      0|    break;
 2165|       |
 2166|      0|  case 11: /* $@2: %empty  */
  ------------------
  |  Branch (2166:3): [True: 0, False: 6]
  ------------------
 2167|      0|#line 393 "libyara/grammar.y"
 2168|      0|      {
 2169|      0|        YR_RULE* rule = (YR_RULE*) yr_arena_ref_to_ptr(
 2170|      0|            compiler->arena, &(yyvsp[-4].rule));
 2171|       |
 2172|      0|        rule->tags = (char*) yr_arena_ref_to_ptr(
 2173|      0|            compiler->arena, &(yyvsp[-3].tag));
 2174|       |
 2175|      0|        rule->metas = (YR_META*) yr_arena_ref_to_ptr(
 2176|      0|            compiler->arena, &(yyvsp[-1].meta));
 2177|       |
 2178|      0|        rule->strings = (YR_STRING*) yr_arena_ref_to_ptr(
 2179|      0|            compiler->arena, &(yyvsp[0].string));
 2180|      0|      }
 2181|      0|#line 2182 "libyara/grammar.c"
 2182|      0|    break;
 2183|       |
 2184|      0|  case 12: /* rule: rule_modifiers "<rule>" "identifier" @1 tags '{' meta strings $@2 condition '}'  */
  ------------------
  |  Branch (2184:3): [True: 0, False: 6]
  ------------------
 2185|      0|#line 407 "libyara/grammar.y"
 2186|      0|      {
 2187|      0|        int result = yr_parser_reduce_rule_declaration_phase_2(
 2188|      0|            yyscanner, &(yyvsp[-7].rule)); // rule created in phase 1
 2189|       |
 2190|      0|        yr_free((yyvsp[-8].c_string));
 2191|       |
 2192|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2193|      0|      }
 2194|      0|#line 2195 "libyara/grammar.c"
 2195|      0|    break;
 2196|       |
 2197|      0|  case 13: /* meta: %empty  */
  ------------------
  |  Branch (2197:3): [True: 0, False: 6]
  ------------------
 2198|      0|#line 420 "libyara/grammar.y"
 2199|      0|      {
 2200|      0|        (yyval.meta) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 2201|      0|      }
 2202|      0|#line 2203 "libyara/grammar.c"
 2203|      0|    break;
 2204|       |
 2205|      0|  case 14: /* meta: "<meta>" ':' meta_declarations  */
  ------------------
  |  Branch (2205:3): [True: 0, False: 6]
  ------------------
 2206|      0|#line 424 "libyara/grammar.y"
 2207|      0|      {
 2208|      0|        YR_META* meta = yr_arena_get_ptr(
 2209|      0|            compiler->arena,
 2210|      0|            YR_METAS_TABLE,
  ------------------
  |  |   59|      0|#define YR_METAS_TABLE              2
  ------------------
 2211|      0|            (compiler->current_meta_idx - 1) * sizeof(YR_META));
 2212|       |
 2213|      0|        meta->flags |= META_FLAGS_LAST_IN_RULE;
  ------------------
  |  |  140|      0|#define META_FLAGS_LAST_IN_RULE 1
  ------------------
 2214|       |
 2215|      0|        (yyval.meta) = (yyvsp[0].meta);
 2216|      0|      }
 2217|      0|#line 2218 "libyara/grammar.c"
 2218|      0|    break;
 2219|       |
 2220|      0|  case 15: /* strings: %empty  */
  ------------------
  |  Branch (2220:3): [True: 0, False: 6]
  ------------------
 2221|      0|#line 439 "libyara/grammar.y"
 2222|      0|      {
 2223|      0|        (yyval.string) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 2224|      0|      }
 2225|      0|#line 2226 "libyara/grammar.c"
 2226|      0|    break;
 2227|       |
 2228|      0|  case 16: /* strings: "<strings>" ':' string_declarations  */
  ------------------
  |  Branch (2228:3): [True: 0, False: 6]
  ------------------
 2229|      0|#line 443 "libyara/grammar.y"
 2230|      0|      {
 2231|      0|        YR_STRING* string = (YR_STRING*) yr_arena_get_ptr(
 2232|      0|            compiler->arena,
 2233|      0|            YR_STRINGS_TABLE,
  ------------------
  |  |   60|      0|#define YR_STRINGS_TABLE            3
  ------------------
 2234|      0|            (compiler->current_string_idx - 1) * sizeof(YR_STRING));
 2235|       |
 2236|      0|        string->flags |= STRING_FLAGS_LAST_IN_RULE;
  ------------------
  |  |   78|      0|#define STRING_FLAGS_LAST_IN_RULE  0x1000
  ------------------
 2237|       |
 2238|      0|        (yyval.string) = (yyvsp[0].string);
 2239|      0|      }
 2240|      0|#line 2241 "libyara/grammar.c"
 2241|      0|    break;
 2242|       |
 2243|      0|  case 18: /* rule_modifiers: %empty  */
  ------------------
  |  Branch (2243:3): [True: 0, False: 6]
  ------------------
 2244|      0|#line 462 "libyara/grammar.y"
 2245|      0|                                       { (yyval.integer) = 0;  }
 2246|      0|#line 2247 "libyara/grammar.c"
 2247|      0|    break;
 2248|       |
 2249|      0|  case 19: /* rule_modifiers: rule_modifiers rule_modifier  */
  ------------------
  |  Branch (2249:3): [True: 0, False: 6]
  ------------------
 2250|      0|#line 463 "libyara/grammar.y"
 2251|      0|                                       { (yyval.integer) = (yyvsp[-1].integer) | (yyvsp[0].integer); }
 2252|      0|#line 2253 "libyara/grammar.c"
 2253|      0|    break;
 2254|       |
 2255|      0|  case 20: /* rule_modifier: "<private>"  */
  ------------------
  |  Branch (2255:3): [True: 0, False: 6]
  ------------------
 2256|      0|#line 468 "libyara/grammar.y"
 2257|      0|                     { (yyval.integer) = RULE_FLAGS_PRIVATE; }
  ------------------
  |  |   52|      0|#define RULE_FLAGS_PRIVATE  0x01
  ------------------
 2258|      0|#line 2259 "libyara/grammar.c"
 2259|      0|    break;
 2260|       |
 2261|      0|  case 21: /* rule_modifier: "<global>"  */
  ------------------
  |  Branch (2261:3): [True: 0, False: 6]
  ------------------
 2262|      0|#line 469 "libyara/grammar.y"
 2263|      0|                     { (yyval.integer) = RULE_FLAGS_GLOBAL; }
  ------------------
  |  |   53|      0|#define RULE_FLAGS_GLOBAL   0x02
  ------------------
 2264|      0|#line 2265 "libyara/grammar.c"
 2265|      0|    break;
 2266|       |
 2267|      0|  case 22: /* tags: %empty  */
  ------------------
  |  Branch (2267:3): [True: 0, False: 6]
  ------------------
 2268|      0|#line 475 "libyara/grammar.y"
 2269|      0|      {
 2270|      0|        (yyval.tag) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 2271|      0|      }
 2272|      0|#line 2273 "libyara/grammar.c"
 2273|      0|    break;
 2274|       |
 2275|      0|  case 23: /* tags: ':' tag_list  */
  ------------------
  |  Branch (2275:3): [True: 0, False: 6]
  ------------------
 2276|      0|#line 479 "libyara/grammar.y"
 2277|      0|      {
 2278|       |        // Tags list is represented in the arena as a sequence
 2279|       |        // of null-terminated strings, the sequence ends with an
 2280|       |        // additional null character. Here we write the ending null
 2281|       |        //character. Example: tag1\0tag2\0tag3\0\0
 2282|       |
 2283|      0|        fail_if_error(yr_arena_write_string(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2284|      0|            yyget_extra(yyscanner)->arena, YR_SZ_POOL, "", NULL));
 2285|       |
 2286|      0|        (yyval.tag) = (yyvsp[0].tag);
 2287|      0|      }
 2288|      0|#line 2289 "libyara/grammar.c"
 2289|      0|    break;
 2290|       |
 2291|      0|  case 24: /* tag_list: "identifier"  */
  ------------------
  |  Branch (2291:3): [True: 0, False: 6]
  ------------------
 2292|      0|#line 495 "libyara/grammar.y"
 2293|      0|      {
 2294|      0|        int result = yr_arena_write_string(
 2295|      0|            yyget_extra(yyscanner)->arena, YR_SZ_POOL, (yyvsp[0].c_string), &(yyval.tag));
  ------------------
  |  |   55|      0|#define yyget_extra  yara_yyget_extra
  ------------------
                          yyget_extra(yyscanner)->arena, YR_SZ_POOL, (yyvsp[0].c_string), &(yyval.tag));
  ------------------
  |  |   62|      0|#define YR_SZ_POOL                  5
  ------------------
 2296|       |
 2297|      0|        yr_free((yyvsp[0].c_string));
 2298|       |
 2299|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2300|      0|      }
 2301|      0|#line 2302 "libyara/grammar.c"
 2302|      0|    break;
 2303|       |
 2304|      0|  case 25: /* tag_list: tag_list "identifier"  */
  ------------------
  |  Branch (2304:3): [True: 0, False: 6]
  ------------------
 2305|      0|#line 504 "libyara/grammar.y"
 2306|      0|      {
 2307|      0|        YR_ARENA_REF ref;
 2308|       |
 2309|       |        // Write the new tag identifier.
 2310|      0|        int result = yr_arena_write_string(
 2311|      0|            yyget_extra(yyscanner)->arena, YR_SZ_POOL, (yyvsp[0].c_string), &ref);
  ------------------
  |  |   55|      0|#define yyget_extra  yara_yyget_extra
  ------------------
                          yyget_extra(yyscanner)->arena, YR_SZ_POOL, (yyvsp[0].c_string), &ref);
  ------------------
  |  |   62|      0|#define YR_SZ_POOL                  5
  ------------------
 2312|       |
 2313|      0|        yr_free((yyvsp[0].c_string));
 2314|       |
 2315|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2316|       |
 2317|       |        // Get the address for the tag identifier just written.
 2318|      0|        char* new_tag = (char*) yr_arena_ref_to_ptr(
 2319|      0|            compiler->arena, &ref);
 2320|       |
 2321|       |        // Take the address of first tag's identifier in the list.
 2322|      0|        char* tag = (char*) yr_arena_ref_to_ptr(
 2323|      0|            compiler->arena, &(yyval.tag));
 2324|       |
 2325|       |        // Search for duplicated tags. Tags are written one after
 2326|       |        // the other, with zeroes in between (i.e: tag1/0tag2/0tag3)
 2327|       |        // that's why can use tag < new_tag as the condition for the
 2328|       |        // loop.
 2329|      0|        while (tag < new_tag)
  ------------------
  |  Branch (2329:16): [True: 0, False: 0]
  ------------------
 2330|      0|        {
 2331|      0|          if (strcmp(tag, new_tag) == 0)
  ------------------
  |  Branch (2331:15): [True: 0, False: 0]
  ------------------
 2332|      0|          {
 2333|      0|            yr_compiler_set_error_extra_info(compiler, tag);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2334|      0|            fail_with_error(ERROR_DUPLICATED_TAG_IDENTIFIER);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 2335|      0|          }
 2336|       |
 2337|      0|          tag += strlen(tag) + 1;
 2338|      0|        }
 2339|       |
 2340|      0|        (yyval.tag) = (yyvsp[-1].tag);
 2341|      0|      }
 2342|      0|#line 2343 "libyara/grammar.c"
 2343|      0|    break;
 2344|       |
 2345|      0|  case 26: /* meta_declarations: meta_declaration  */
  ------------------
  |  Branch (2345:3): [True: 0, False: 6]
  ------------------
 2346|      0|#line 545 "libyara/grammar.y"
 2347|      0|                                          {  (yyval.meta) = (yyvsp[0].meta); }
 2348|      0|#line 2349 "libyara/grammar.c"
 2349|      0|    break;
 2350|       |
 2351|      0|  case 27: /* meta_declarations: meta_declarations meta_declaration  */
  ------------------
  |  Branch (2351:3): [True: 0, False: 6]
  ------------------
 2352|      0|#line 546 "libyara/grammar.y"
 2353|      0|                                          {  (yyval.meta) = (yyvsp[-1].meta); }
 2354|      0|#line 2355 "libyara/grammar.c"
 2355|      0|    break;
 2356|       |
 2357|      0|  case 28: /* meta_declaration: "identifier" '=' "text string"  */
  ------------------
  |  Branch (2357:3): [True: 0, False: 6]
  ------------------
 2358|      0|#line 552 "libyara/grammar.y"
 2359|      0|      {
 2360|      0|        SIZED_STRING* sized_string = (yyvsp[0].sized_string);
 2361|       |
 2362|      0|        int result = yr_parser_reduce_meta_declaration(
 2363|      0|            yyscanner,
 2364|      0|            META_TYPE_STRING,
  ------------------
  |  |  137|      0|#define META_TYPE_STRING  2
  ------------------
 2365|      0|            (yyvsp[-2].c_string),
 2366|      0|            sized_string->c_string,
 2367|      0|            0,
 2368|      0|            &(yyval.meta));
 2369|       |
 2370|      0|        yr_free((yyvsp[-2].c_string));
 2371|      0|        yr_free((yyvsp[0].sized_string));
 2372|       |
 2373|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2374|      0|      }
 2375|      0|#line 2376 "libyara/grammar.c"
 2376|      0|    break;
 2377|       |
 2378|      0|  case 29: /* meta_declaration: "identifier" '=' "integer number"  */
  ------------------
  |  Branch (2378:3): [True: 0, False: 6]
  ------------------
 2379|      0|#line 569 "libyara/grammar.y"
 2380|      0|      {
 2381|      0|        int result = yr_parser_reduce_meta_declaration(
 2382|      0|            yyscanner,
 2383|      0|            META_TYPE_INTEGER,
  ------------------
  |  |  136|      0|#define META_TYPE_INTEGER 1
  ------------------
 2384|      0|            (yyvsp[-2].c_string),
 2385|      0|            NULL,
 2386|      0|            (yyvsp[0].integer),
 2387|      0|            &(yyval.meta));
 2388|       |
 2389|      0|        yr_free((yyvsp[-2].c_string));
 2390|       |
 2391|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2392|      0|      }
 2393|      0|#line 2394 "libyara/grammar.c"
 2394|      0|    break;
 2395|       |
 2396|      0|  case 30: /* meta_declaration: "identifier" '=' '-' "integer number"  */
  ------------------
  |  Branch (2396:3): [True: 0, False: 6]
  ------------------
 2397|      0|#line 583 "libyara/grammar.y"
 2398|      0|      {
 2399|      0|        int result = yr_parser_reduce_meta_declaration(
 2400|      0|            yyscanner,
 2401|      0|            META_TYPE_INTEGER,
  ------------------
  |  |  136|      0|#define META_TYPE_INTEGER 1
  ------------------
 2402|      0|            (yyvsp[-3].c_string),
 2403|      0|            NULL,
 2404|      0|            -(yyvsp[0].integer),
 2405|      0|            &(yyval.meta));
 2406|       |
 2407|      0|        yr_free((yyvsp[-3].c_string));
 2408|       |
 2409|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2410|      0|      }
 2411|      0|#line 2412 "libyara/grammar.c"
 2412|      0|    break;
 2413|       |
 2414|      0|  case 31: /* meta_declaration: "identifier" '=' "<true>"  */
  ------------------
  |  Branch (2414:3): [True: 0, False: 6]
  ------------------
 2415|      0|#line 597 "libyara/grammar.y"
 2416|      0|      {
 2417|      0|        int result = yr_parser_reduce_meta_declaration(
 2418|      0|            yyscanner,
 2419|      0|            META_TYPE_BOOLEAN,
  ------------------
  |  |  138|      0|#define META_TYPE_BOOLEAN 3
  ------------------
 2420|      0|            (yyvsp[-2].c_string),
 2421|      0|            NULL,
 2422|      0|            true,
 2423|      0|            &(yyval.meta));
 2424|       |
 2425|      0|        yr_free((yyvsp[-2].c_string));
 2426|       |
 2427|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2428|      0|      }
 2429|      0|#line 2430 "libyara/grammar.c"
 2430|      0|    break;
 2431|       |
 2432|      0|  case 32: /* meta_declaration: "identifier" '=' "<false>"  */
  ------------------
  |  Branch (2432:3): [True: 0, False: 6]
  ------------------
 2433|      0|#line 611 "libyara/grammar.y"
 2434|      0|      {
 2435|      0|        int result = yr_parser_reduce_meta_declaration(
 2436|      0|            yyscanner,
 2437|      0|            META_TYPE_BOOLEAN,
  ------------------
  |  |  138|      0|#define META_TYPE_BOOLEAN 3
  ------------------
 2438|      0|            (yyvsp[-2].c_string),
 2439|      0|            NULL,
 2440|      0|            false,
 2441|      0|            &(yyval.meta));
 2442|       |
 2443|      0|        yr_free((yyvsp[-2].c_string));
 2444|       |
 2445|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2446|      0|      }
 2447|      0|#line 2448 "libyara/grammar.c"
 2448|      0|    break;
 2449|       |
 2450|      0|  case 33: /* string_declarations: string_declaration  */
  ------------------
  |  Branch (2450:3): [True: 0, False: 6]
  ------------------
 2451|      0|#line 628 "libyara/grammar.y"
 2452|      0|                                              { (yyval.string) = (yyvsp[0].string); }
 2453|      0|#line 2454 "libyara/grammar.c"
 2454|      0|    break;
 2455|       |
 2456|      0|  case 34: /* string_declarations: string_declarations string_declaration  */
  ------------------
  |  Branch (2456:3): [True: 0, False: 6]
  ------------------
 2457|      0|#line 629 "libyara/grammar.y"
 2458|      0|                                              { (yyval.string) = (yyvsp[-1].string); }
 2459|      0|#line 2460 "libyara/grammar.c"
 2460|      0|    break;
 2461|       |
 2462|      0|  case 35: /* $@3: %empty  */
  ------------------
  |  Branch (2462:3): [True: 0, False: 6]
  ------------------
 2463|      0|#line 635 "libyara/grammar.y"
 2464|      0|      {
 2465|      0|        compiler->current_line = yyget_lineno(yyscanner);
  ------------------
  |  |   56|      0|#define yyget_lineno yara_yyget_lineno
  ------------------
 2466|      0|      }
 2467|      0|#line 2468 "libyara/grammar.c"
 2468|      0|    break;
 2469|       |
 2470|      0|  case 36: /* string_declaration: "string identifier" '=' $@3 "text string" string_modifiers  */
  ------------------
  |  Branch (2470:3): [True: 0, False: 6]
  ------------------
 2471|      0|#line 639 "libyara/grammar.y"
 2472|      0|      {
 2473|      0|        int result = yr_parser_reduce_string_declaration(
 2474|      0|            yyscanner, (yyvsp[0].modifier), (yyvsp[-4].c_string), (yyvsp[-1].sized_string), &(yyval.string));
 2475|       |
 2476|      0|        yr_free((yyvsp[-4].c_string));
 2477|      0|        yr_free((yyvsp[-1].sized_string));
 2478|      0|        yr_free((yyvsp[0].modifier).alphabet);
 2479|       |
 2480|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2481|      0|        compiler->current_line = 0;
 2482|      0|      }
 2483|      0|#line 2484 "libyara/grammar.c"
 2484|      0|    break;
 2485|       |
 2486|      0|  case 37: /* $@4: %empty  */
  ------------------
  |  Branch (2486:3): [True: 0, False: 6]
  ------------------
 2487|      0|#line 651 "libyara/grammar.y"
 2488|      0|      {
 2489|      0|        compiler->current_line = yyget_lineno(yyscanner);
  ------------------
  |  |   56|      0|#define yyget_lineno yara_yyget_lineno
  ------------------
 2490|      0|      }
 2491|      0|#line 2492 "libyara/grammar.c"
 2492|      0|    break;
 2493|       |
 2494|      0|  case 38: /* string_declaration: "string identifier" '=' $@4 "regular expression" regexp_modifiers  */
  ------------------
  |  Branch (2494:3): [True: 0, False: 6]
  ------------------
 2495|      0|#line 655 "libyara/grammar.y"
 2496|      0|      {
 2497|      0|        int result;
 2498|       |
 2499|      0|        (yyvsp[0].modifier).flags |= STRING_FLAGS_REGEXP;
  ------------------
  |  |   71|      0|#define STRING_FLAGS_REGEXP        0x20
  ------------------
 2500|       |
 2501|      0|        result = yr_parser_reduce_string_declaration(
 2502|      0|            yyscanner, (yyvsp[0].modifier), (yyvsp[-4].c_string), (yyvsp[-1].sized_string), &(yyval.string));
 2503|       |
 2504|      0|        yr_free((yyvsp[-4].c_string));
 2505|      0|        yr_free((yyvsp[-1].sized_string));
 2506|       |
 2507|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2508|       |
 2509|      0|        compiler->current_line = 0;
 2510|      0|      }
 2511|      0|#line 2512 "libyara/grammar.c"
 2512|      0|    break;
 2513|       |
 2514|      0|  case 39: /* $@5: %empty  */
  ------------------
  |  Branch (2514:3): [True: 0, False: 6]
  ------------------
 2515|      0|#line 671 "libyara/grammar.y"
 2516|      0|      {
 2517|      0|        compiler->current_line = yyget_lineno(yyscanner);
  ------------------
  |  |   56|      0|#define yyget_lineno yara_yyget_lineno
  ------------------
 2518|      0|      }
 2519|      0|#line 2520 "libyara/grammar.c"
 2520|      0|    break;
 2521|       |
 2522|      0|  case 40: /* string_declaration: "string identifier" '=' $@5 "hex string" hex_modifiers  */
  ------------------
  |  Branch (2522:3): [True: 0, False: 6]
  ------------------
 2523|      0|#line 675 "libyara/grammar.y"
 2524|      0|      {
 2525|      0|        int result;
 2526|       |
 2527|      0|        (yyvsp[0].modifier).flags |= STRING_FLAGS_HEXADECIMAL;
  ------------------
  |  |   67|      0|#define STRING_FLAGS_HEXADECIMAL   0x02
  ------------------
 2528|       |
 2529|      0|        result = yr_parser_reduce_string_declaration(
 2530|      0|            yyscanner, (yyvsp[0].modifier), (yyvsp[-4].c_string), (yyvsp[-1].sized_string), &(yyval.string));
 2531|       |
 2532|      0|        yr_free((yyvsp[-4].c_string));
 2533|      0|        yr_free((yyvsp[-1].sized_string));
 2534|       |
 2535|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2536|       |
 2537|      0|        compiler->current_line = 0;
 2538|      0|      }
 2539|      0|#line 2540 "libyara/grammar.c"
 2540|      0|    break;
 2541|       |
 2542|      0|  case 41: /* string_modifiers: %empty  */
  ------------------
  |  Branch (2542:3): [True: 0, False: 6]
  ------------------
 2543|      0|#line 695 "libyara/grammar.y"
 2544|      0|      {
 2545|      0|        (yyval.modifier).flags = 0;
 2546|      0|        (yyval.modifier).xor_min = 0;
 2547|      0|        (yyval.modifier).xor_max = 0;
 2548|      0|        (yyval.modifier).alphabet = NULL;
 2549|      0|      }
 2550|      0|#line 2551 "libyara/grammar.c"
 2551|      0|    break;
 2552|       |
 2553|      0|  case 42: /* string_modifiers: string_modifiers string_modifier  */
  ------------------
  |  Branch (2553:3): [True: 0, False: 6]
  ------------------
 2554|      0|#line 702 "libyara/grammar.y"
 2555|      0|      {
 2556|      0|        (yyval.modifier) = (yyvsp[-1].modifier);
 2557|       |
 2558|       |        // Only set the xor minimum and maximum if we are dealing with the
 2559|       |        // xor modifier. If we don't check for this then we can end up with
 2560|       |        // "xor wide" resulting in whatever is on the stack for "wide"
 2561|       |        // overwriting the values for xor.
 2562|      0|        if ((yyvsp[0].modifier).flags & STRING_FLAGS_XOR)
  ------------------
  |  |   85|      0|#define STRING_FLAGS_XOR           0x80000
  ------------------
  |  Branch (2562:13): [True: 0, False: 0]
  ------------------
 2563|      0|        {
 2564|      0|          (yyval.modifier).xor_min = (yyvsp[0].modifier).xor_min;
 2565|      0|          (yyval.modifier).xor_max = (yyvsp[0].modifier).xor_max;
 2566|      0|        }
 2567|       |
 2568|       |        // Only set the base64 alphabet if we are dealing with the base64
 2569|       |        // modifier. If we don't check for this then we can end up with
 2570|       |        // "base64 ascii" resulting in whatever is on the stack for "ascii"
 2571|       |        // overwriting the values for base64.
 2572|      0|        if (((yyvsp[0].modifier).flags & STRING_FLAGS_BASE64) ||
  ------------------
  |  |   87|      0|#define STRING_FLAGS_BASE64        0x200000
  ------------------
  |  Branch (2572:13): [True: 0, False: 0]
  ------------------
 2573|      0|            ((yyvsp[0].modifier).flags & STRING_FLAGS_BASE64_WIDE))
  ------------------
  |  |   88|      0|#define STRING_FLAGS_BASE64_WIDE   0x400000
  ------------------
  |  Branch (2573:13): [True: 0, False: 0]
  ------------------
 2574|      0|        {
 2575|      0|          if ((yyval.modifier).alphabet != NULL)
  ------------------
  |  Branch (2575:15): [True: 0, False: 0]
  ------------------
 2576|      0|          {
 2577|      0|            if (ss_compare((yyval.modifier).alphabet, (yyvsp[0].modifier).alphabet) != 0)
  ------------------
  |  Branch (2577:17): [True: 0, False: 0]
  ------------------
 2578|      0|            {
 2579|      0|              yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2580|      0|                  compiler, "can not specify multiple alphabets");
 2581|       |
 2582|      0|              yr_free((yyvsp[0].modifier).alphabet);
 2583|      0|              yr_free((yyval.modifier).alphabet);
 2584|       |
 2585|      0|              fail_with_error(ERROR_INVALID_MODIFIER);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 2586|      0|            }
 2587|      0|            else
 2588|      0|            {
 2589|      0|              yr_free((yyvsp[0].modifier).alphabet);
 2590|      0|            }
 2591|      0|          }
 2592|      0|          else
 2593|      0|          {
 2594|      0|            (yyval.modifier).alphabet = (yyvsp[0].modifier).alphabet;
 2595|      0|          }
 2596|      0|        }
 2597|       |
 2598|      0|        if ((yyval.modifier).flags & (yyvsp[0].modifier).flags)
  ------------------
  |  Branch (2598:13): [True: 0, False: 0]
  ------------------
 2599|      0|        {
 2600|      0|          if ((yyval.modifier).alphabet != NULL)
  ------------------
  |  Branch (2600:15): [True: 0, False: 0]
  ------------------
 2601|      0|            yr_free((yyval.modifier).alphabet);
 2602|       |
 2603|      0|          fail_with_error(ERROR_DUPLICATED_MODIFIER);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 2604|      0|        }
 2605|      0|        else
 2606|      0|        {
 2607|      0|          (yyval.modifier).flags = (yyval.modifier).flags | (yyvsp[0].modifier).flags;
 2608|      0|        }
 2609|      0|      }
 2610|      0|#line 2611 "libyara/grammar.c"
 2611|      0|    break;
 2612|       |
 2613|      0|  case 43: /* string_modifier: "<wide>"  */
  ------------------
  |  Branch (2613:3): [True: 0, False: 6]
  ------------------
 2614|      0|#line 761 "libyara/grammar.y"
 2615|      0|                    { (yyval.modifier).flags = STRING_FLAGS_WIDE; }
  ------------------
  |  |   70|      0|#define STRING_FLAGS_WIDE          0x10
  ------------------
 2616|      0|#line 2617 "libyara/grammar.c"
 2617|      0|    break;
 2618|       |
 2619|      0|  case 44: /* string_modifier: "<ascii>"  */
  ------------------
  |  Branch (2619:3): [True: 0, False: 6]
  ------------------
 2620|      0|#line 762 "libyara/grammar.y"
 2621|      0|                    { (yyval.modifier).flags = STRING_FLAGS_ASCII; }
  ------------------
  |  |   69|      0|#define STRING_FLAGS_ASCII         0x08
  ------------------
 2622|      0|#line 2623 "libyara/grammar.c"
 2623|      0|    break;
 2624|       |
 2625|      0|  case 45: /* string_modifier: "<nocase>"  */
  ------------------
  |  Branch (2625:3): [True: 0, False: 6]
  ------------------
 2626|      0|#line 763 "libyara/grammar.y"
 2627|      0|                    { (yyval.modifier).flags = STRING_FLAGS_NO_CASE; }
  ------------------
  |  |   68|      0|#define STRING_FLAGS_NO_CASE       0x04
  ------------------
 2628|      0|#line 2629 "libyara/grammar.c"
 2629|      0|    break;
 2630|       |
 2631|      0|  case 46: /* string_modifier: "<fullword>"  */
  ------------------
  |  Branch (2631:3): [True: 0, False: 6]
  ------------------
 2632|      0|#line 764 "libyara/grammar.y"
 2633|      0|                    { (yyval.modifier).flags = STRING_FLAGS_FULL_WORD; }
  ------------------
  |  |   73|      0|#define STRING_FLAGS_FULL_WORD     0x80
  ------------------
 2634|      0|#line 2635 "libyara/grammar.c"
 2635|      0|    break;
 2636|       |
 2637|      0|  case 47: /* string_modifier: "<private>"  */
  ------------------
  |  Branch (2637:3): [True: 0, False: 6]
  ------------------
 2638|      0|#line 765 "libyara/grammar.y"
 2639|      0|                    { (yyval.modifier).flags = STRING_FLAGS_PRIVATE; }
  ------------------
  |  |   86|      0|#define STRING_FLAGS_PRIVATE       0x100000
  ------------------
 2640|      0|#line 2641 "libyara/grammar.c"
 2641|      0|    break;
 2642|       |
 2643|      0|  case 48: /* string_modifier: "<xor>"  */
  ------------------
  |  Branch (2643:3): [True: 0, False: 6]
  ------------------
 2644|      0|#line 767 "libyara/grammar.y"
 2645|      0|      {
 2646|      0|        (yyval.modifier).flags = STRING_FLAGS_XOR;
  ------------------
  |  |   85|      0|#define STRING_FLAGS_XOR           0x80000
  ------------------
 2647|      0|        (yyval.modifier).xor_min = 0;
 2648|      0|        (yyval.modifier).xor_max = 255;
 2649|      0|      }
 2650|      0|#line 2651 "libyara/grammar.c"
 2651|      0|    break;
 2652|       |
 2653|      0|  case 49: /* string_modifier: "<xor>" '(' "integer number" ')'  */
  ------------------
  |  Branch (2653:3): [True: 0, False: 6]
  ------------------
 2654|      0|#line 773 "libyara/grammar.y"
 2655|      0|      {
 2656|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2657|       |
 2658|      0|        if ((yyvsp[-1].integer) < 0 || (yyvsp[-1].integer) > 255)
  ------------------
  |  Branch (2658:13): [True: 0, False: 0]
  |  Branch (2658:40): [True: 0, False: 0]
  ------------------
 2659|      0|        {
 2660|      0|          yr_compiler_set_error_extra_info(compiler, "invalid xor range");
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2661|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2662|      0|        }
 2663|       |
 2664|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2665|       |
 2666|      0|        (yyval.modifier).flags = STRING_FLAGS_XOR;
  ------------------
  |  |   85|      0|#define STRING_FLAGS_XOR           0x80000
  ------------------
 2667|      0|        (yyval.modifier).xor_min = (uint8_t) (yyvsp[-1].integer);
 2668|      0|        (yyval.modifier).xor_max = (uint8_t) (yyvsp[-1].integer);
 2669|      0|      }
 2670|      0|#line 2671 "libyara/grammar.c"
 2671|      0|    break;
 2672|       |
 2673|      0|  case 50: /* string_modifier: "<xor>" '(' "integer number" '-' "integer number" ')'  */
  ------------------
  |  Branch (2673:3): [True: 0, False: 6]
  ------------------
 2674|      0|#line 794 "libyara/grammar.y"
 2675|      0|      {
 2676|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2677|       |
 2678|      0|        if ((yyvsp[-3].integer) < 0)
  ------------------
  |  Branch (2678:13): [True: 0, False: 0]
  ------------------
 2679|      0|        {
 2680|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2681|      0|              compiler, "lower bound for xor range exceeded (min: 0)");
 2682|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2683|      0|        }
 2684|       |
 2685|      0|        if ((yyvsp[-1].integer) > 255)
  ------------------
  |  Branch (2685:13): [True: 0, False: 0]
  ------------------
 2686|      0|        {
 2687|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2688|      0|              compiler, "upper bound for xor range exceeded (max: 255)");
 2689|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2690|      0|        }
 2691|       |
 2692|      0|        if ((yyvsp[-3].integer) > (yyvsp[-1].integer))
  ------------------
  |  Branch (2692:13): [True: 0, False: 0]
  ------------------
 2693|      0|        {
 2694|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2695|      0|              compiler, "xor lower bound exceeds upper bound");
 2696|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2697|      0|        }
 2698|       |
 2699|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2700|       |
 2701|      0|        (yyval.modifier).flags = STRING_FLAGS_XOR;
  ------------------
  |  |   85|      0|#define STRING_FLAGS_XOR           0x80000
  ------------------
 2702|      0|        (yyval.modifier).xor_min = (uint8_t) (yyvsp[-3].integer);
 2703|      0|        (yyval.modifier).xor_max = (uint8_t) (yyvsp[-1].integer);
 2704|      0|      }
 2705|      0|#line 2706 "libyara/grammar.c"
 2706|      0|    break;
 2707|       |
 2708|      0|  case 51: /* string_modifier: "<base64>"  */
  ------------------
  |  Branch (2708:3): [True: 0, False: 6]
  ------------------
 2709|      0|#line 825 "libyara/grammar.y"
 2710|      0|      {
 2711|      0|        (yyval.modifier).flags = STRING_FLAGS_BASE64;
  ------------------
  |  |   87|      0|#define STRING_FLAGS_BASE64        0x200000
  ------------------
 2712|      0|        (yyval.modifier).alphabet = ss_new(DEFAULT_BASE64_ALPHABET);
  ------------------
  |  |  200|      0|    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  ------------------
 2713|      0|      }
 2714|      0|#line 2715 "libyara/grammar.c"
 2715|      0|    break;
 2716|       |
 2717|      0|  case 52: /* string_modifier: "<base64>" '(' "text string" ')'  */
  ------------------
  |  Branch (2717:3): [True: 0, False: 6]
  ------------------
 2718|      0|#line 830 "libyara/grammar.y"
 2719|      0|      {
 2720|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2721|       |
 2722|      0|        if ((yyvsp[-1].sized_string)->length != 64)
  ------------------
  |  Branch (2722:13): [True: 0, False: 0]
  ------------------
 2723|      0|        {
 2724|      0|          yr_free((yyvsp[-1].sized_string));
 2725|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2726|      0|              compiler, "length of base64 alphabet must be 64");
 2727|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2728|      0|        }
 2729|       |
 2730|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2731|       |
 2732|      0|        (yyval.modifier).flags = STRING_FLAGS_BASE64;
  ------------------
  |  |   87|      0|#define STRING_FLAGS_BASE64        0x200000
  ------------------
 2733|      0|        (yyval.modifier).alphabet = (yyvsp[-1].sized_string);
 2734|      0|      }
 2735|      0|#line 2736 "libyara/grammar.c"
 2736|      0|    break;
 2737|       |
 2738|      0|  case 53: /* string_modifier: "<base64wide>"  */
  ------------------
  |  Branch (2738:3): [True: 0, False: 6]
  ------------------
 2739|      0|#line 847 "libyara/grammar.y"
 2740|      0|      {
 2741|      0|        (yyval.modifier).flags = STRING_FLAGS_BASE64_WIDE;
  ------------------
  |  |   88|      0|#define STRING_FLAGS_BASE64_WIDE   0x400000
  ------------------
 2742|      0|        (yyval.modifier).alphabet = ss_new(DEFAULT_BASE64_ALPHABET);
  ------------------
  |  |  200|      0|    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  ------------------
 2743|      0|      }
 2744|      0|#line 2745 "libyara/grammar.c"
 2745|      0|    break;
 2746|       |
 2747|      0|  case 54: /* string_modifier: "<base64wide>" '(' "text string" ')'  */
  ------------------
  |  Branch (2747:3): [True: 0, False: 6]
  ------------------
 2748|      0|#line 852 "libyara/grammar.y"
 2749|      0|      {
 2750|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2751|       |
 2752|      0|        if ((yyvsp[-1].sized_string)->length != 64)
  ------------------
  |  Branch (2752:13): [True: 0, False: 0]
  ------------------
 2753|      0|        {
 2754|      0|          yr_free((yyvsp[-1].sized_string));
 2755|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2756|      0|              compiler, "length of base64 alphabet must be 64");
 2757|      0|          result = ERROR_INVALID_MODIFIER;
  ------------------
  |  |  104|      0|#define ERROR_INVALID_MODIFIER               59
  ------------------
 2758|      0|        }
 2759|       |
 2760|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2761|       |
 2762|      0|        (yyval.modifier).flags = STRING_FLAGS_BASE64_WIDE;
  ------------------
  |  |   88|      0|#define STRING_FLAGS_BASE64_WIDE   0x400000
  ------------------
 2763|      0|        (yyval.modifier).alphabet = (yyvsp[-1].sized_string);
 2764|      0|      }
 2765|      0|#line 2766 "libyara/grammar.c"
 2766|      0|    break;
 2767|       |
 2768|      0|  case 55: /* regexp_modifiers: %empty  */
  ------------------
  |  Branch (2768:3): [True: 0, False: 6]
  ------------------
 2769|      0|#line 871 "libyara/grammar.y"
 2770|      0|                                          { (yyval.modifier).flags = 0; }
 2771|      0|#line 2772 "libyara/grammar.c"
 2772|      0|    break;
 2773|       |
 2774|      0|  case 56: /* regexp_modifiers: regexp_modifiers regexp_modifier  */
  ------------------
  |  Branch (2774:3): [True: 0, False: 6]
  ------------------
 2775|      0|#line 873 "libyara/grammar.y"
 2776|      0|      {
 2777|      0|        if ((yyvsp[-1].modifier).flags & (yyvsp[0].modifier).flags)
  ------------------
  |  Branch (2777:13): [True: 0, False: 0]
  ------------------
 2778|      0|        {
 2779|      0|          fail_with_error(ERROR_DUPLICATED_MODIFIER);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 2780|      0|        }
 2781|      0|        else
 2782|      0|        {
 2783|      0|          (yyval.modifier).flags = (yyvsp[-1].modifier).flags | (yyvsp[0].modifier).flags;
 2784|      0|        }
 2785|      0|      }
 2786|      0|#line 2787 "libyara/grammar.c"
 2787|      0|    break;
 2788|       |
 2789|      0|  case 57: /* regexp_modifier: "<wide>"  */
  ------------------
  |  Branch (2789:3): [True: 0, False: 6]
  ------------------
 2790|      0|#line 886 "libyara/grammar.y"
 2791|      0|                    { (yyval.modifier).flags = STRING_FLAGS_WIDE; }
  ------------------
  |  |   70|      0|#define STRING_FLAGS_WIDE          0x10
  ------------------
 2792|      0|#line 2793 "libyara/grammar.c"
 2793|      0|    break;
 2794|       |
 2795|      0|  case 58: /* regexp_modifier: "<ascii>"  */
  ------------------
  |  Branch (2795:3): [True: 0, False: 6]
  ------------------
 2796|      0|#line 887 "libyara/grammar.y"
 2797|      0|                    { (yyval.modifier).flags = STRING_FLAGS_ASCII; }
  ------------------
  |  |   69|      0|#define STRING_FLAGS_ASCII         0x08
  ------------------
 2798|      0|#line 2799 "libyara/grammar.c"
 2799|      0|    break;
 2800|       |
 2801|      0|  case 59: /* regexp_modifier: "<nocase>"  */
  ------------------
  |  Branch (2801:3): [True: 0, False: 6]
  ------------------
 2802|      0|#line 888 "libyara/grammar.y"
 2803|      0|                    { (yyval.modifier).flags = STRING_FLAGS_NO_CASE; }
  ------------------
  |  |   68|      0|#define STRING_FLAGS_NO_CASE       0x04
  ------------------
 2804|      0|#line 2805 "libyara/grammar.c"
 2805|      0|    break;
 2806|       |
 2807|      0|  case 60: /* regexp_modifier: "<fullword>"  */
  ------------------
  |  Branch (2807:3): [True: 0, False: 6]
  ------------------
 2808|      0|#line 889 "libyara/grammar.y"
 2809|      0|                    { (yyval.modifier).flags = STRING_FLAGS_FULL_WORD; }
  ------------------
  |  |   73|      0|#define STRING_FLAGS_FULL_WORD     0x80
  ------------------
 2810|      0|#line 2811 "libyara/grammar.c"
 2811|      0|    break;
 2812|       |
 2813|      0|  case 61: /* regexp_modifier: "<private>"  */
  ------------------
  |  Branch (2813:3): [True: 0, False: 6]
  ------------------
 2814|      0|#line 890 "libyara/grammar.y"
 2815|      0|                    { (yyval.modifier).flags = STRING_FLAGS_PRIVATE; }
  ------------------
  |  |   86|      0|#define STRING_FLAGS_PRIVATE       0x100000
  ------------------
 2816|      0|#line 2817 "libyara/grammar.c"
 2817|      0|    break;
 2818|       |
 2819|      0|  case 62: /* hex_modifiers: %empty  */
  ------------------
  |  Branch (2819:3): [True: 0, False: 6]
  ------------------
 2820|      0|#line 894 "libyara/grammar.y"
 2821|      0|                                          { (yyval.modifier).flags = 0; }
 2822|      0|#line 2823 "libyara/grammar.c"
 2823|      0|    break;
 2824|       |
 2825|      0|  case 63: /* hex_modifiers: hex_modifiers hex_modifier  */
  ------------------
  |  Branch (2825:3): [True: 0, False: 6]
  ------------------
 2826|      0|#line 896 "libyara/grammar.y"
 2827|      0|      {
 2828|      0|        if ((yyvsp[-1].modifier).flags & (yyvsp[0].modifier).flags)
  ------------------
  |  Branch (2828:13): [True: 0, False: 0]
  ------------------
 2829|      0|        {
 2830|      0|          fail_with_error(ERROR_DUPLICATED_MODIFIER);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 2831|      0|        }
 2832|      0|        else
 2833|      0|        {
 2834|      0|          (yyval.modifier).flags = (yyvsp[-1].modifier).flags | (yyvsp[0].modifier).flags;
 2835|      0|        }
 2836|      0|      }
 2837|      0|#line 2838 "libyara/grammar.c"
 2838|      0|    break;
 2839|       |
 2840|      0|  case 64: /* hex_modifier: "<private>"  */
  ------------------
  |  Branch (2840:3): [True: 0, False: 6]
  ------------------
 2841|      0|#line 909 "libyara/grammar.y"
 2842|      0|                    { (yyval.modifier).flags = STRING_FLAGS_PRIVATE; }
  ------------------
  |  |   86|      0|#define STRING_FLAGS_PRIVATE       0x100000
  ------------------
 2843|      0|#line 2844 "libyara/grammar.c"
 2844|      0|    break;
 2845|       |
 2846|      0|  case 65: /* identifier: "identifier"  */
  ------------------
  |  Branch (2846:3): [True: 0, False: 6]
  ------------------
 2847|      0|#line 914 "libyara/grammar.y"
 2848|      0|      {
 2849|      0|        YR_EXPRESSION expr;
 2850|       |
 2851|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2852|      0|        int var_index = yr_parser_lookup_loop_variable(yyscanner, (yyvsp[0].c_string), &expr);
 2853|       |
 2854|      0|        if (var_index >= 0)
  ------------------
  |  Branch (2854:13): [True: 0, False: 0]
  ------------------
 2855|      0|        {
 2856|       |          // The identifier corresponds to a loop variable.
 2857|      0|          result = yr_parser_emit_with_arg(
 2858|      0|              yyscanner,
 2859|      0|              OP_PUSH_M,
  ------------------
  |  |   82|      0|#define OP_PUSH_M                     34
  ------------------
 2860|      0|              var_index,
 2861|      0|              NULL,
 2862|      0|              NULL);
 2863|       |
 2864|       |          // The expression associated to this identifier is the same one
 2865|       |          // associated to the loop variable.
 2866|      0|          (yyval.expression) = expr;
 2867|      0|        }
 2868|      0|        else
 2869|      0|        {
 2870|       |          // Search for identifier within the global namespace, where the
 2871|       |          // externals variables reside.
 2872|       |
 2873|      0|          YR_OBJECT* object = (YR_OBJECT*) yr_hash_table_lookup(
 2874|      0|              compiler->objects_table, (yyvsp[0].c_string), NULL);
 2875|       |
 2876|      0|          YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 2877|      0|              compiler->arena,
 2878|      0|              YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      0|#define YR_NAMESPACES_TABLE         0
  ------------------
 2879|      0|              compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 2880|       |
 2881|      0|          if (object == NULL)
  ------------------
  |  Branch (2881:15): [True: 0, False: 0]
  ------------------
 2882|      0|          {
 2883|       |            // If not found, search within the current namespace.
 2884|      0|            object = (YR_OBJECT*) yr_hash_table_lookup(
 2885|      0|                compiler->objects_table, (yyvsp[0].c_string), ns->name);
 2886|      0|          }
 2887|       |
 2888|      0|          if (object != NULL)
  ------------------
  |  Branch (2888:15): [True: 0, False: 0]
  ------------------
 2889|      0|          {
 2890|      0|            YR_ARENA_REF ref;
 2891|       |
 2892|      0|            result = _yr_compiler_store_string(
 2893|      0|                compiler, (yyvsp[0].c_string), &ref);
 2894|       |
 2895|      0|            if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (2895:17): [True: 0, False: 0]
  ------------------
 2896|      0|              result = yr_parser_emit_with_arg_reloc(
 2897|      0|                  yyscanner,
 2898|      0|                  OP_OBJ_LOAD,
  ------------------
  |  |   64|      0|#define OP_OBJ_LOAD                   16
  ------------------
 2899|      0|                  yr_arena_ref_to_ptr(compiler->arena, &ref),
 2900|      0|                  NULL,
 2901|      0|                  NULL);
 2902|       |
 2903|      0|            (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 2904|      0|            (yyval.expression).value.object = object;
 2905|      0|            (yyval.expression).identifier.ptr = NULL;
 2906|      0|            (yyval.expression).identifier.ref = ref;
 2907|      0|          }
 2908|      0|          else
 2909|      0|          {
 2910|      0|            uint32_t rule_idx = yr_hash_table_lookup_uint32(
 2911|      0|                compiler->rules_table, (yyvsp[0].c_string), ns->name);
 2912|       |
 2913|      0|            if (rule_idx != UINT32_MAX)
  ------------------
  |  Branch (2913:17): [True: 0, False: 0]
  ------------------
 2914|      0|            {
 2915|      0|              result = yr_parser_emit_with_arg(
 2916|      0|                  yyscanner,
 2917|      0|                  OP_PUSH_RULE,
  ------------------
  |  |   75|      0|#define OP_PUSH_RULE                  27
  ------------------
 2918|      0|                  rule_idx,
 2919|      0|                  NULL,
 2920|      0|                  NULL);
 2921|       |
 2922|      0|              YR_RULE* rule = _yr_compiler_get_rule_by_idx(compiler, rule_idx);
 2923|       |
 2924|      0|              yr_arena_ptr_to_ref(compiler->arena, rule->identifier, &(yyval.expression).identifier.ref);
 2925|       |
 2926|      0|              (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 2927|      0|              (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 2928|      0|              (yyval.expression).identifier.ptr = NULL;
 2929|      0|            }
 2930|      0|            else
 2931|      0|            {
 2932|      0|              yr_compiler_set_error_extra_info(compiler, (yyvsp[0].c_string));
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2933|      0|              result = ERROR_UNDEFINED_IDENTIFIER;
  ------------------
  |  |   65|      0|#define ERROR_UNDEFINED_IDENTIFIER           20
  ------------------
 2934|      0|            }
 2935|      0|          }
 2936|      0|        }
 2937|       |
 2938|      0|        yr_free((yyvsp[0].c_string));
 2939|       |
 2940|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2941|      0|      }
 2942|      0|#line 2943 "libyara/grammar.c"
 2943|      0|    break;
 2944|       |
 2945|      0|  case 66: /* identifier: identifier '.' "identifier"  */
  ------------------
  |  Branch (2945:3): [True: 0, False: 6]
  ------------------
 2946|      0|#line 1009 "libyara/grammar.y"
 2947|      0|      {
 2948|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 2949|      0|        YR_OBJECT* field = NULL;
 2950|       |
 2951|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (2951:13): [True: 0, False: 0]
  ------------------
 2952|      0|            (yyvsp[-2].expression).value.object->type == OBJECT_TYPE_STRUCTURE)
  ------------------
  |  |   60|      0|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (2952:13): [True: 0, False: 0]
  ------------------
 2953|      0|        {
 2954|      0|          field = yr_object_lookup_field((yyvsp[-2].expression).value.object, (yyvsp[0].c_string));
 2955|       |
 2956|      0|          if (field != NULL)
  ------------------
  |  Branch (2956:15): [True: 0, False: 0]
  ------------------
 2957|      0|          {
 2958|      0|            YR_ARENA_REF ref;
 2959|       |
 2960|      0|            result = _yr_compiler_store_string(
 2961|      0|                compiler, (yyvsp[0].c_string), &ref);
 2962|       |
 2963|      0|            if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (2963:17): [True: 0, False: 0]
  ------------------
 2964|      0|              result = yr_parser_emit_with_arg_reloc(
 2965|      0|                  yyscanner,
 2966|      0|                  OP_OBJ_FIELD,
  ------------------
  |  |   66|      0|#define OP_OBJ_FIELD                  18
  ------------------
 2967|      0|                  yr_arena_ref_to_ptr(compiler->arena, &ref),
 2968|      0|                  NULL,
 2969|      0|                  NULL);
 2970|       |
 2971|      0|            (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 2972|      0|            (yyval.expression).value.object = field;
 2973|      0|            (yyval.expression).identifier.ref = ref;
 2974|      0|            (yyval.expression).identifier.ptr = NULL;
 2975|      0|          }
 2976|      0|          else
 2977|      0|          {
 2978|      0|            yr_compiler_set_error_extra_info(compiler, (yyvsp[0].c_string));
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2979|      0|            result = ERROR_INVALID_FIELD_NAME;
  ------------------
  |  |   78|      0|#define ERROR_INVALID_FIELD_NAME             33
  ------------------
 2980|      0|          }
 2981|      0|        }
 2982|      0|        else
 2983|      0|        {
 2984|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  ------------------
  |  |  |  Branch (307:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2985|      0|             compiler, expression_identifier((yyvsp[-2].expression)));
 2986|       |
 2987|      0|          result = ERROR_NOT_A_STRUCTURE;
  ------------------
  |  |   80|      0|#define ERROR_NOT_A_STRUCTURE                35
  ------------------
 2988|      0|        }
 2989|       |
 2990|      0|        yr_free((yyvsp[0].c_string));
 2991|       |
 2992|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 2993|      0|      }
 2994|      0|#line 2995 "libyara/grammar.c"
 2995|      0|    break;
 2996|       |
 2997|      0|  case 67: /* identifier: identifier '[' primary_expression ']'  */
  ------------------
  |  Branch (2997:3): [True: 0, False: 6]
  ------------------
 2998|      0|#line 1057 "libyara/grammar.y"
 2999|      0|      {
 3000|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 3001|      0|        YR_OBJECT_ARRAY* array;
 3002|      0|        YR_OBJECT_DICTIONARY* dict;
 3003|       |
 3004|      0|        if ((yyvsp[-3].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (3004:13): [True: 0, False: 0]
  ------------------
 3005|      0|            (yyvsp[-3].expression).value.object->type == OBJECT_TYPE_ARRAY)
  ------------------
  |  |   61|      0|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (3005:13): [True: 0, False: 0]
  ------------------
 3006|      0|        {
 3007|      0|          if ((yyvsp[-1].expression).type != EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3007:15): [True: 0, False: 0]
  ------------------
 3008|      0|          {
 3009|      0|            yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3010|      0|                compiler, "array indexes must be of integer type");
 3011|      0|            result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 3012|      0|          }
 3013|       |
 3014|      0|          fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3015|       |
 3016|      0|          result = yr_parser_emit(
 3017|      0|              yyscanner, OP_INDEX_ARRAY, NULL);
  ------------------
  |  |   67|      0|#define OP_INDEX_ARRAY                19
  ------------------
 3018|       |
 3019|      0|          array = object_as_array((yyvsp[-3].expression).value.object);
  ------------------
  |  |  903|      0|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
 3020|       |
 3021|      0|          (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 3022|      0|          (yyval.expression).value.object = array->prototype_item;
 3023|      0|          (yyval.expression).identifier.ptr = array->identifier;
 3024|      0|          (yyval.expression).identifier.ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 3025|      0|        }
 3026|      0|        else if ((yyvsp[-3].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (3026:18): [True: 0, False: 0]
  ------------------
 3027|      0|                 (yyvsp[-3].expression).value.object->type == OBJECT_TYPE_DICTIONARY)
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (3027:18): [True: 0, False: 0]
  ------------------
 3028|      0|        {
 3029|      0|          if ((yyvsp[-1].expression).type != EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (3029:15): [True: 0, False: 0]
  ------------------
 3030|      0|          {
 3031|      0|            yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3032|      0|                compiler, "dictionary keys must be of string type");
 3033|      0|            result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 3034|      0|          }
 3035|       |
 3036|      0|          fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3037|       |
 3038|      0|          result = yr_parser_emit(
 3039|      0|              yyscanner, OP_LOOKUP_DICT, NULL);
  ------------------
  |  |   90|      0|#define OP_LOOKUP_DICT                42
  ------------------
 3040|       |
 3041|      0|          dict = object_as_dictionary((yyvsp[-3].expression).value.object);
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
 3042|       |
 3043|      0|          (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 3044|      0|          (yyval.expression).value.object = dict->prototype_item;
 3045|      0|          (yyval.expression).identifier.ptr = dict->identifier;
 3046|      0|          (yyval.expression).identifier.ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 3047|      0|        }
 3048|      0|        else
 3049|      0|        {
 3050|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  ------------------
  |  |  |  Branch (307:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3051|      0|              compiler, expression_identifier((yyvsp[-3].expression)));
 3052|       |
 3053|      0|          result = ERROR_NOT_INDEXABLE;
  ------------------
  |  |   81|      0|#define ERROR_NOT_INDEXABLE                  36
  ------------------
 3054|      0|        }
 3055|       |
 3056|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3057|      0|      }
 3058|      0|#line 3059 "libyara/grammar.c"
 3059|      0|    break;
 3060|       |
 3061|      0|  case 68: /* identifier: identifier '(' arguments ')'  */
  ------------------
  |  Branch (3061:3): [True: 0, False: 6]
  ------------------
 3062|      0|#line 1118 "libyara/grammar.y"
 3063|      0|      {
 3064|      0|        YR_ARENA_REF ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 3065|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 3066|       |
 3067|      0|        if ((yyvsp[-3].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (3067:13): [True: 0, False: 0]
  ------------------
 3068|      0|            (yyvsp[-3].expression).value.object->type == OBJECT_TYPE_FUNCTION)
  ------------------
  |  |   62|      0|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (3068:13): [True: 0, False: 0]
  ------------------
 3069|      0|        {
 3070|      0|          YR_OBJECT_FUNCTION* function = object_as_function((yyvsp[-3].expression).value.object);
  ------------------
  |  |  905|      0|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
 3071|       |
 3072|      0|          result = yr_parser_check_types(compiler, function, (yyvsp[-1].c_string));
 3073|       |
 3074|      0|          if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (3074:15): [True: 0, False: 0]
  ------------------
 3075|      0|            result = _yr_compiler_store_string(
 3076|      0|                compiler, (yyvsp[-1].c_string), &ref);
 3077|       |
 3078|      0|          if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (3078:15): [True: 0, False: 0]
  ------------------
 3079|      0|            result = yr_parser_emit_with_arg_reloc(
 3080|      0|                yyscanner,
 3081|      0|                OP_CALL,
  ------------------
  |  |   63|      0|#define OP_CALL                       15
  ------------------
 3082|      0|                yr_arena_ref_to_ptr(compiler->arena, &ref),
 3083|      0|                NULL,
 3084|      0|                NULL);
 3085|       |
 3086|      0|          (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 3087|      0|          (yyval.expression).value.object = function->return_obj;
 3088|      0|          (yyval.expression).identifier.ref = ref;
 3089|      0|          (yyval.expression).identifier.ptr = NULL;
 3090|      0|        }
 3091|      0|        else
 3092|      0|        {
 3093|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  ------------------
  |  |  |  Branch (307:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3094|      0|              compiler, expression_identifier((yyvsp[-3].expression)));
 3095|       |
 3096|      0|          result = ERROR_NOT_A_FUNCTION;
  ------------------
  |  |   82|      0|#define ERROR_NOT_A_FUNCTION                 37
  ------------------
 3097|      0|        }
 3098|       |
 3099|      0|        yr_free((yyvsp[-1].c_string));
 3100|       |
 3101|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3102|      0|      }
 3103|      0|#line 3104 "libyara/grammar.c"
 3104|      0|    break;
 3105|       |
 3106|      0|  case 69: /* arguments: %empty  */
  ------------------
  |  Branch (3106:3): [True: 0, False: 6]
  ------------------
 3107|      0|#line 1162 "libyara/grammar.y"
 3108|      0|                      { (yyval.c_string) = yr_strdup(""); }
 3109|      0|#line 3110 "libyara/grammar.c"
 3110|      0|    break;
 3111|       |
 3112|      0|  case 70: /* arguments: arguments_list  */
  ------------------
  |  Branch (3112:3): [True: 0, False: 6]
  ------------------
 3113|      0|#line 1163 "libyara/grammar.y"
 3114|      0|                      { (yyval.c_string) = (yyvsp[0].c_string); }
 3115|      0|#line 3116 "libyara/grammar.c"
 3116|      0|    break;
 3117|       |
 3118|      0|  case 71: /* arguments_list: expression  */
  ------------------
  |  Branch (3118:3): [True: 0, False: 6]
  ------------------
 3119|      0|#line 1168 "libyara/grammar.y"
 3120|      0|      {
 3121|      0|        (yyval.c_string) = (char*) yr_malloc(YR_MAX_FUNCTION_ARGS + 1);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3122|       |
 3123|      0|        if ((yyval.c_string) == NULL)
  ------------------
  |  Branch (3123:13): [True: 0, False: 0]
  ------------------
 3124|      0|          fail_with_error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3125|       |
 3126|      0|        switch((yyvsp[0].expression).type)
 3127|      0|        {
 3128|      0|          case EXPRESSION_TYPE_INTEGER:
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3128:11): [True: 0, False: 0]
  ------------------
 3129|      0|            strlcpy((yyval.c_string), "i", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3130|      0|            break;
 3131|      0|          case EXPRESSION_TYPE_FLOAT:
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (3131:11): [True: 0, False: 0]
  ------------------
 3132|      0|            strlcpy((yyval.c_string), "f", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3133|      0|            break;
 3134|      0|          case EXPRESSION_TYPE_BOOLEAN:
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
  |  Branch (3134:11): [True: 0, False: 0]
  ------------------
 3135|      0|            strlcpy((yyval.c_string), "b", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3136|      0|            break;
 3137|      0|          case EXPRESSION_TYPE_STRING:
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (3137:11): [True: 0, False: 0]
  ------------------
 3138|      0|            strlcpy((yyval.c_string), "s", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3139|      0|            break;
 3140|      0|          case EXPRESSION_TYPE_REGEXP:
  ------------------
  |  |   49|      0|#define EXPRESSION_TYPE_REGEXP     8
  ------------------
  |  Branch (3140:11): [True: 0, False: 0]
  ------------------
 3141|      0|            strlcpy((yyval.c_string), "r", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3142|      0|            break;
 3143|      0|          case EXPRESSION_TYPE_UNKNOWN:
  ------------------
  |  |   45|      0|#define EXPRESSION_TYPE_UNKNOWN    0
  ------------------
  |  Branch (3143:11): [True: 0, False: 0]
  ------------------
 3144|      0|            yr_free((yyval.c_string));
 3145|      0|            yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3146|      0|                compiler, "unknown type for argument 1 in function call");
 3147|      0|            fail_with_error(ERROR_WRONG_TYPE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3148|      0|            break;
 3149|      0|          default:
  ------------------
  |  Branch (3149:11): [True: 0, False: 0]
  ------------------
 3150|       |            // An unknown expression type is OK iff an error ocurred.
 3151|      0|            assert(compiler->last_error != ERROR_SUCCESS);
 3152|      0|        }
 3153|      0|      }
 3154|      0|#line 3155 "libyara/grammar.c"
 3155|      0|    break;
 3156|       |
 3157|      0|  case 72: /* arguments_list: arguments_list ',' expression  */
  ------------------
  |  Branch (3157:3): [True: 0, False: 6]
  ------------------
 3158|      0|#line 1203 "libyara/grammar.y"
 3159|      0|      {
 3160|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 3161|       |
 3162|      0|        if (strlen((yyvsp[-2].c_string)) == YR_MAX_FUNCTION_ARGS)
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
  |  Branch (3162:13): [True: 0, False: 0]
  ------------------
 3163|      0|        {
 3164|      0|          result = ERROR_TOO_MANY_ARGUMENTS;
  ------------------
  |  |   84|      0|#define ERROR_TOO_MANY_ARGUMENTS             39
  ------------------
 3165|      0|        }
 3166|      0|        else
 3167|      0|        {
 3168|      0|          switch((yyvsp[0].expression).type)
 3169|      0|          {
 3170|      0|            case EXPRESSION_TYPE_INTEGER:
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3170:13): [True: 0, False: 0]
  ------------------
 3171|      0|              strlcat((yyvsp[-2].c_string), "i", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3172|      0|              break;
 3173|      0|            case EXPRESSION_TYPE_FLOAT:
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (3173:13): [True: 0, False: 0]
  ------------------
 3174|      0|              strlcat((yyvsp[-2].c_string), "f", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3175|      0|              break;
 3176|      0|            case EXPRESSION_TYPE_BOOLEAN:
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
  |  Branch (3176:13): [True: 0, False: 0]
  ------------------
 3177|      0|              strlcat((yyvsp[-2].c_string), "b", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3178|      0|              break;
 3179|      0|            case EXPRESSION_TYPE_STRING:
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (3179:13): [True: 0, False: 0]
  ------------------
 3180|      0|              strlcat((yyvsp[-2].c_string), "s", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3181|      0|              break;
 3182|      0|            case EXPRESSION_TYPE_REGEXP:
  ------------------
  |  |   49|      0|#define EXPRESSION_TYPE_REGEXP     8
  ------------------
  |  Branch (3182:13): [True: 0, False: 0]
  ------------------
 3183|      0|              strlcat((yyvsp[-2].c_string), "r", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      0|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3184|      0|              break;
 3185|      0|            case EXPRESSION_TYPE_UNKNOWN:
  ------------------
  |  |   45|      0|#define EXPRESSION_TYPE_UNKNOWN    0
  ------------------
  |  Branch (3185:13): [True: 0, False: 0]
  ------------------
 3186|      0|              result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 3187|      0|              yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 3188|      0|                  compiler, "unknown type for argument %zu in function call",
 3189|       |                  // As we add one character per argument, the length of $1 is
 3190|       |                  // the number of arguments parsed so far, and the argument
 3191|       |                  // represented by <expression> is length of $1 plus one.
 3192|      0|                  strlen((yyvsp[-2].c_string)) + 1);
 3193|      0|              break;
 3194|      0|            default:
  ------------------
  |  Branch (3194:13): [True: 0, False: 0]
  ------------------
 3195|       |              // An unknown expression type is OK iff an error ocurred.
 3196|      0|              assert(compiler->last_error != ERROR_SUCCESS);
 3197|      0|          }
 3198|      0|        }
 3199|       |
 3200|      0|        if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (3200:13): [True: 0, False: 0]
  ------------------
 3201|      0|          yr_free((yyvsp[-2].c_string));
 3202|       |
 3203|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3204|       |
 3205|      0|        (yyval.c_string) = (yyvsp[-2].c_string);
 3206|      0|      }
 3207|      0|#line 3208 "libyara/grammar.c"
 3208|      0|    break;
 3209|       |
 3210|      0|  case 73: /* regexp: "regular expression"  */
  ------------------
  |  Branch (3210:3): [True: 0, False: 6]
  ------------------
 3211|      0|#line 1256 "libyara/grammar.y"
 3212|      0|      {
 3213|      0|        YR_ARENA_REF re_ref;
 3214|      0|        RE_ERROR error;
 3215|       |
 3216|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 3217|      0|        int re_flags = 0;
 3218|      0|        int parser_flags = RE_PARSER_FLAG_NONE;
 3219|       |
 3220|      0|        if ((yyvsp[0].sized_string)->flags & SIZED_STRING_FLAGS_NO_CASE)
  ------------------
  |  |   39|      0|#define SIZED_STRING_FLAGS_NO_CASE 1
  ------------------
  |  Branch (3220:13): [True: 0, False: 0]
  ------------------
 3221|      0|          re_flags |= RE_FLAGS_NO_CASE;
  ------------------
  |  |   98|      0|#define RE_FLAGS_NO_CASE     0x20
  ------------------
 3222|       |
 3223|      0|        if ((yyvsp[0].sized_string)->flags & SIZED_STRING_FLAGS_DOT_ALL)
  ------------------
  |  |   43|      0|#define SIZED_STRING_FLAGS_DOT_ALL 2
  ------------------
  |  Branch (3223:13): [True: 0, False: 0]
  ------------------
 3224|      0|          re_flags |= RE_FLAGS_DOT_ALL;
  ------------------
  |  |  100|      0|#define RE_FLAGS_DOT_ALL     0x80
  ------------------
 3225|       |
 3226|      0|        if (compiler->strict_escape)
  ------------------
  |  Branch (3226:13): [True: 0, False: 0]
  ------------------
 3227|      0|          parser_flags |= RE_PARSER_FLAG_ENABLE_STRICT_ESCAPE_SEQUENCES;
 3228|       |
 3229|      0|        result = yr_re_compile(
 3230|      0|            (yyvsp[0].sized_string)->c_string,
 3231|      0|            re_flags,
 3232|      0|            parser_flags,
 3233|      0|            compiler->arena,
 3234|      0|            &re_ref,
 3235|      0|            &error);
 3236|       |
 3237|      0|        yr_free((yyvsp[0].sized_string));
 3238|       |
 3239|      0|        if (result == ERROR_INVALID_REGULAR_EXPRESSION)
  ------------------
  |  |   54|      0|#define ERROR_INVALID_REGULAR_EXPRESSION     9
  ------------------
  |  Branch (3239:13): [True: 0, False: 0]
  ------------------
 3240|      0|          yr_compiler_set_error_extra_info(compiler, error.message);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3241|       |
 3242|      0|        if (result == ERROR_SUCCESS || result == ERROR_UNKNOWN_ESCAPE_SEQUENCE)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
                      if (result == ERROR_SUCCESS || result == ERROR_UNKNOWN_ESCAPE_SEQUENCE)
  ------------------
  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  ------------------
  |  Branch (3242:13): [True: 0, False: 0]
  |  Branch (3242:40): [True: 0, False: 0]
  ------------------
 3243|      0|        {
 3244|      0|          if (result == ERROR_UNKNOWN_ESCAPE_SEQUENCE)
  ------------------
  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  ------------------
  |  Branch (3244:15): [True: 0, False: 0]
  ------------------
 3245|      0|          {
 3246|      0|              yywarning(
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3247|      0|                yyscanner,
 3248|      0|                "unknown escape sequence");
 3249|      0|          }
 3250|      0|          result = yr_parser_emit_with_arg_reloc(
 3251|      0|              yyscanner,
 3252|      0|              OP_PUSH,
  ------------------
  |  |   61|      0|#define OP_PUSH                       13
  ------------------
 3253|      0|              yr_arena_ref_to_ptr(compiler->arena, &re_ref),
 3254|      0|              NULL,
 3255|      0|              NULL);
 3256|      0|        }
 3257|       |
 3258|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3259|       |
 3260|      0|        (yyval.expression).type = EXPRESSION_TYPE_REGEXP;
  ------------------
  |  |   49|      0|#define EXPRESSION_TYPE_REGEXP     8
  ------------------
 3261|      0|      }
 3262|      0|#line 3263 "libyara/grammar.c"
 3263|      0|    break;
 3264|       |
 3265|      0|  case 74: /* boolean_expression: expression  */
  ------------------
  |  Branch (3265:3): [True: 0, False: 6]
  ------------------
 3266|      0|#line 1311 "libyara/grammar.y"
 3267|      0|      {
 3268|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (3268:13): [True: 0, False: 0]
  ------------------
 3269|      0|        {
 3270|      0|          if (!YR_ARENA_IS_NULL_REF((yyvsp[0].expression).value.sized_string_ref))
  ------------------
  |  |   49|      0|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  ------------------
  |  Branch (3270:15): [True: 0, False: 0]
  ------------------
 3271|      0|          {
 3272|      0|            SIZED_STRING* sized_string = yr_arena_ref_to_ptr(
 3273|      0|                compiler->arena, &(yyvsp[0].expression).value.sized_string_ref);
 3274|       |
 3275|      0|            yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3276|      0|                "using literal string \"%s\" in a boolean operation.",
 3277|      0|                sized_string->c_string);
 3278|      0|          }
 3279|       |
 3280|      0|          fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3281|      0|              yyscanner, OP_STR_TO_BOOL, NULL));
 3282|      0|        }
 3283|       |
 3284|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3285|      0|      }
 3286|      0|#line 3287 "libyara/grammar.c"
 3287|      0|    break;
 3288|       |
 3289|      0|  case 75: /* expression: "<true>"  */
  ------------------
  |  Branch (3289:3): [True: 0, False: 6]
  ------------------
 3290|      0|#line 1334 "libyara/grammar.y"
 3291|      0|      {
 3292|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, 1));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3293|       |
 3294|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3295|      0|      }
 3296|      0|#line 3297 "libyara/grammar.c"
 3297|      0|    break;
 3298|       |
 3299|      0|  case 76: /* expression: "<false>"  */
  ------------------
  |  Branch (3299:3): [True: 0, False: 6]
  ------------------
 3300|      0|#line 1340 "libyara/grammar.y"
 3301|      0|      {
 3302|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, 0));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3303|       |
 3304|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3305|      0|      }
 3306|      0|#line 3307 "libyara/grammar.c"
 3307|      0|    break;
 3308|       |
 3309|      0|  case 77: /* expression: primary_expression "<matches>" regexp  */
  ------------------
  |  Branch (3309:3): [True: 0, False: 6]
  ------------------
 3310|      0|#line 1346 "libyara/grammar.y"
 3311|      0|      {
 3312|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "matches");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3313|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_REGEXP, "matches");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3314|       |
 3315|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3316|      0|            yyscanner,
 3317|      0|            OP_MATCHES,
 3318|      0|            NULL));
 3319|       |
 3320|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3321|      0|      }
 3322|      0|#line 3323 "libyara/grammar.c"
 3323|      0|    break;
 3324|       |
 3325|      0|  case 78: /* expression: primary_expression "<contains>" primary_expression  */
  ------------------
  |  Branch (3325:3): [True: 0, False: 6]
  ------------------
 3326|      0|#line 1358 "libyara/grammar.y"
 3327|      0|      {
 3328|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "contains");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3329|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "contains");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3330|       |
 3331|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3332|      0|            yyscanner, OP_CONTAINS, NULL));
 3333|       |
 3334|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3335|      0|      }
 3336|      0|#line 3337 "libyara/grammar.c"
 3337|      0|    break;
 3338|       |
 3339|      0|  case 79: /* expression: primary_expression "<icontains>" primary_expression  */
  ------------------
  |  Branch (3339:3): [True: 0, False: 6]
  ------------------
 3340|      0|#line 1368 "libyara/grammar.y"
 3341|      0|      {
 3342|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "icontains");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3343|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "icontains");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3344|       |
 3345|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3346|      0|            yyscanner, OP_ICONTAINS, NULL));
 3347|       |
 3348|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3349|      0|      }
 3350|      0|#line 3351 "libyara/grammar.c"
 3351|      0|    break;
 3352|       |
 3353|      0|  case 80: /* expression: primary_expression "<startswith>" primary_expression  */
  ------------------
  |  Branch (3353:3): [True: 0, False: 6]
  ------------------
 3354|      0|#line 1378 "libyara/grammar.y"
 3355|      0|      {
 3356|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "startswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3357|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "startswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3358|       |
 3359|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3360|      0|            yyscanner, OP_STARTSWITH, NULL));
 3361|       |
 3362|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3363|      0|      }
 3364|      0|#line 3365 "libyara/grammar.c"
 3365|      0|    break;
 3366|       |
 3367|      0|  case 81: /* expression: primary_expression "<istartswith>" primary_expression  */
  ------------------
  |  Branch (3367:3): [True: 0, False: 6]
  ------------------
 3368|      0|#line 1388 "libyara/grammar.y"
 3369|      0|      {
 3370|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "istartswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3371|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "istartswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3372|       |
 3373|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3374|      0|            yyscanner, OP_ISTARTSWITH, NULL));
 3375|       |
 3376|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3377|      0|      }
 3378|      0|#line 3379 "libyara/grammar.c"
 3379|      0|    break;
 3380|       |
 3381|      0|  case 82: /* expression: primary_expression "<endswith>" primary_expression  */
  ------------------
  |  Branch (3381:3): [True: 0, False: 6]
  ------------------
 3382|      0|#line 1398 "libyara/grammar.y"
 3383|      0|      {
 3384|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "endswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3385|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "endswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3386|       |
 3387|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3388|      0|            yyscanner, OP_ENDSWITH, NULL));
 3389|       |
 3390|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3391|      0|      }
 3392|      0|#line 3393 "libyara/grammar.c"
 3393|      0|    break;
 3394|       |
 3395|      0|  case 83: /* expression: primary_expression "<iendswith>" primary_expression  */
  ------------------
  |  Branch (3395:3): [True: 0, False: 6]
  ------------------
 3396|      0|#line 1408 "libyara/grammar.y"
 3397|      0|      {
 3398|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "iendswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3399|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "iendswith");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3400|       |
 3401|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3402|      0|            yyscanner, OP_IENDSWITH, NULL));
 3403|       |
 3404|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3405|      0|      }
 3406|      0|#line 3407 "libyara/grammar.c"
 3407|      0|    break;
 3408|       |
 3409|      0|  case 84: /* expression: primary_expression "<iequals>" primary_expression  */
  ------------------
  |  Branch (3409:3): [True: 0, False: 6]
  ------------------
 3410|      0|#line 1418 "libyara/grammar.y"
 3411|      0|      {
 3412|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_STRING, "iequals");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3413|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_STRING, "iequals");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3414|       |
 3415|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3416|      0|            yyscanner, OP_IEQUALS, NULL));
 3417|       |
 3418|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3419|      0|      }
 3420|      0|#line 3421 "libyara/grammar.c"
 3421|      0|    break;
 3422|       |
 3423|      0|  case 85: /* expression: "string identifier"  */
  ------------------
  |  Branch (3423:3): [True: 0, False: 6]
  ------------------
 3424|      0|#line 1428 "libyara/grammar.y"
 3425|      0|      {
 3426|      0|        int result = yr_parser_reduce_string_identifier(
 3427|      0|            yyscanner,
 3428|      0|            (yyvsp[0].c_string),
 3429|      0|            OP_FOUND,
  ------------------
  |  |   70|      0|#define OP_FOUND                      22
  ------------------
 3430|      0|            YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 3431|       |
 3432|      0|        yr_free((yyvsp[0].c_string));
 3433|       |
 3434|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3435|       |
 3436|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3437|      0|      }
 3438|      0|#line 3439 "libyara/grammar.c"
 3439|      0|    break;
 3440|       |
 3441|      0|  case 86: /* expression: "string identifier" "<at>" primary_expression  */
  ------------------
  |  Branch (3441:3): [True: 0, False: 6]
  ------------------
 3442|      0|#line 1442 "libyara/grammar.y"
 3443|      0|      {
 3444|      0|        int result;
 3445|       |
 3446|      0|        check_type_with_cleanup((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "at", yr_free((yyvsp[-2].c_string)));
  ------------------
  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  ------------------
  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  146|      0|    { \
  |  |  147|      0|      switch(expression.type) \
  |  |  ------------------
  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  148|      0|      { \
  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  ------------------
  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  ------------------
  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  152|      0|          break; \
  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  ------------------
  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  156|      0|          break; \
  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  ------------------
  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  ------------------
  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  160|      0|          break; \
  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  ------------------
  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  ------------------
  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  164|      0|          break; \
  |  |  165|      0|      } \
  |  |  166|      0|      cleanup; \
  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  ------------------
  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  ------------------
  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  169|      0|      YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  170|      0|    }
  ------------------
 3447|       |
 3448|      0|        result = yr_parser_reduce_string_identifier(
 3449|      0|            yyscanner, (yyvsp[-2].c_string), OP_FOUND_AT, (yyvsp[0].expression).value.integer);
  ------------------
  |  |   71|      0|#define OP_FOUND_AT                   23
  ------------------
 3450|       |
 3451|      0|        yr_free((yyvsp[-2].c_string));
 3452|       |
 3453|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3454|       |
 3455|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3456|      0|      }
 3457|      0|#line 3458 "libyara/grammar.c"
 3458|      0|    break;
 3459|       |
 3460|      0|  case 87: /* expression: "string identifier" "<in>" range  */
  ------------------
  |  Branch (3460:3): [True: 0, False: 6]
  ------------------
 3461|      0|#line 1457 "libyara/grammar.y"
 3462|      0|      {
 3463|      0|        int result = yr_parser_reduce_string_identifier(
 3464|      0|            yyscanner, (yyvsp[-2].c_string), OP_FOUND_IN, YR_UNDEFINED);
  ------------------
  |  |   72|      0|#define OP_FOUND_IN                   24
  ------------------
                          yyscanner, (yyvsp[-2].c_string), OP_FOUND_IN, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 3465|       |
 3466|      0|        yr_free((yyvsp[-2].c_string));
 3467|       |
 3468|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3469|       |
 3470|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3471|      0|      }
 3472|      0|#line 3473 "libyara/grammar.c"
 3473|      0|    break;
 3474|       |
 3475|      0|  case 88: /* expression: "<for>" for_expression error  */
  ------------------
  |  Branch (3475:3): [True: 0, False: 6]
  ------------------
 3476|      0|#line 1468 "libyara/grammar.y"
 3477|      0|      {
 3478|       |        // Free all the loop variable identifiers, including the variables for
 3479|       |        // the current loop (represented by loop_index), and set loop_index to
 3480|       |        // -1. This is OK even if we have nested loops. If an error occurs while
 3481|       |        // parsing the inner loop, it will be propagated to the outer loop
 3482|       |        // anyways, so it's safe to do this cleanup while processing the error
 3483|       |        // for the inner loop.
 3484|       |
 3485|      0|        for (int i = 0; i <= compiler->loop_index; i++)
  ------------------
  |  Branch (3485:25): [True: 0, False: 0]
  ------------------
 3486|      0|        {
 3487|      0|          loop_vars_cleanup(i);
  ------------------
  |  |  179|      0|    {  \
  |  |  180|      0|      YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[loop_index]; \
  |  |  181|      0|      for (int i = 0; i < loop_ctx->vars_count; i++) \
  |  |  ------------------
  |  |  |  Branch (181:23): [True: 0, False: 0]
  |  |  ------------------
  |  |  182|      0|      { \
  |  |  183|      0|        yr_free((void*) loop_ctx->vars[i].identifier.ptr); \
  |  |  184|      0|        loop_ctx->vars[i].identifier.ptr = NULL; \
  |  |  185|      0|        loop_ctx->vars[i].identifier.ref = YR_ARENA_NULL_REF; \
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |  186|      0|      } \
  |  |  187|      0|      loop_ctx->vars_count = 0; \
  |  |  188|      0|    } \
  ------------------
 3488|      0|        }
 3489|       |
 3490|      0|        compiler->loop_index = -1;
 3491|      0|        YYERROR;
  ------------------
  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  ------------------
 3492|      0|      }
 3493|      0|#line 3494 "libyara/grammar.c"
 3494|      0|    break;
 3495|       |
 3496|      0|  case 89: /* $@6: %empty  */
  ------------------
  |  Branch (3496:3): [True: 0, False: 6]
  ------------------
 3497|      0|#line 1542 "libyara/grammar.y"
 3498|      0|      {
 3499|       |        // var_frame is used for accessing local variables used in this loop.
 3500|       |        // All local variables are accessed using var_frame as a reference,
 3501|       |        // like var_frame + 0, var_frame + 1, etc. Here we initialize var_frame
 3502|       |        // with the correct value, which depends on the number of variables
 3503|       |        // defined by any outer loops.
 3504|       |
 3505|      0|        int var_frame;
 3506|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 3507|       |
 3508|      0|        if (compiler->loop_index + 1 == YR_MAX_LOOP_NESTING)
  ------------------
  |  |   96|      0|#define YR_MAX_LOOP_NESTING 4
  ------------------
  |  Branch (3508:13): [True: 0, False: 0]
  ------------------
 3509|      0|          result = ERROR_LOOP_NESTING_LIMIT_EXCEEDED;
  ------------------
  |  |   57|      0|#define ERROR_LOOP_NESTING_LIMIT_EXCEEDED    12
  ------------------
 3510|       |
 3511|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3512|       |
 3513|      0|        compiler->loop_index++;
 3514|       |
 3515|       |        // This loop uses internal variables besides the ones explicitly
 3516|       |        // defined by the user.
 3517|      0|        compiler->loop[compiler->loop_index].vars_internal_count = \
 3518|      0|            YR_INTERNAL_LOOP_VARS;
  ------------------
  |  |   76|      0|#define YR_INTERNAL_LOOP_VARS 3
  ------------------
 3519|       |
 3520|       |        // Initialize the number of variables, this number will be incremented
 3521|       |        // as variable declaration are processed by for_variables.
 3522|      0|        compiler->loop[compiler->loop_index].vars_count = 0;
 3523|       |
 3524|      0|        var_frame = _yr_compiler_get_var_frame(compiler);
 3525|       |
 3526|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3527|      0|            yyscanner, OP_CLEAR_M, var_frame + 0, NULL, NULL));
 3528|       |
 3529|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3530|      0|            yyscanner, OP_CLEAR_M, var_frame + 1, NULL, NULL));
 3531|       |
 3532|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3533|      0|            yyscanner, OP_POP_M, var_frame + 2, NULL, NULL));
 3534|      0|      }
 3535|      0|#line 3536 "libyara/grammar.c"
 3536|      0|    break;
 3537|       |
 3538|      0|  case 90: /* $@7: %empty  */
  ------------------
  |  Branch (3538:3): [True: 0, False: 6]
  ------------------
 3539|      0|#line 1580 "libyara/grammar.y"
 3540|      0|      {
 3541|      0|        YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[compiler->loop_index];
 3542|      0|        YR_FIXUP* fixup;
 3543|       |
 3544|      0|        YR_ARENA_REF loop_start_ref;
 3545|      0|        YR_ARENA_REF jmp_offset_ref;
 3546|       |
 3547|      0|        int var_frame = _yr_compiler_get_var_frame(compiler);
 3548|       |
 3549|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3550|      0|            yyscanner, OP_ITER_NEXT, &loop_start_ref));
 3551|       |
 3552|       |        // For each variable generate an instruction that pops the value from
 3553|       |        // the stack and store it into one memory slot starting at var_frame +
 3554|       |        // YR_INTERNAL_LOOP_VARS because the first YR_INTERNAL_LOOP_VARS slots
 3555|       |        // in the frame are for the internal variables.
 3556|       |
 3557|      0|        for (int i = 0; i < loop_ctx->vars_count; i++)
  ------------------
  |  Branch (3557:25): [True: 0, False: 0]
  ------------------
 3558|      0|        {
 3559|      0|          fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3560|      0|              yyscanner,
 3561|      0|              OP_POP_M,
 3562|      0|              var_frame + YR_INTERNAL_LOOP_VARS + i,
 3563|      0|              NULL,
 3564|      0|              NULL));
 3565|      0|        }
 3566|       |
 3567|      0|        fail_if_error(yr_parser_emit_with_arg_int32(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3568|      0|            yyscanner,
 3569|      0|            OP_JTRUE_P,
 3570|      0|            0,              // still don't know the jump offset, use 0 for now.
 3571|      0|            NULL,
 3572|      0|            &jmp_offset_ref));
 3573|       |
 3574|       |        // We still don't know the jump's target, so we push a fixup entry
 3575|       |        // in the stack, so that the jump's offset can be set once we know it.
 3576|       |
 3577|      0|        fixup = (YR_FIXUP*) yr_malloc(sizeof(YR_FIXUP));
 3578|       |
 3579|      0|        if (fixup == NULL)
  ------------------
  |  Branch (3579:13): [True: 0, False: 0]
  ------------------
 3580|      0|          fail_with_error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3581|       |
 3582|      0|        fixup->ref = jmp_offset_ref;
 3583|      0|        fixup->next = compiler->fixup_stack_head;
 3584|      0|        compiler->fixup_stack_head = fixup;
 3585|       |
 3586|      0|        loop_ctx->start_ref = loop_start_ref;
 3587|      0|      }
 3588|      0|#line 3589 "libyara/grammar.c"
 3589|      0|    break;
 3590|       |
 3591|      0|  case 91: /* expression: "<for>" for_expression $@6 for_iteration ':' $@7 '(' boolean_expression ')'  */
  ------------------
  |  Branch (3591:3): [True: 0, False: 6]
  ------------------
 3592|      0|#line 1629 "libyara/grammar.y"
 3593|      0|      {
 3594|      0|        int32_t jmp_offset;
 3595|      0|        YR_FIXUP* fixup;
 3596|      0|        YR_ARENA_REF pop_ref;
 3597|       |
 3598|      0|        int var_frame = _yr_compiler_get_var_frame(compiler);
 3599|       |
 3600|      0|        if ((yyvsp[-5].integer) == FOR_ITERATION_STRING_SET)
  ------------------
  |  |  113|      0|#define FOR_ITERATION_STRING_SET 2
  ------------------
  |  Branch (3600:13): [True: 0, False: 0]
  ------------------
 3601|      0|        {
 3602|      0|          compiler->loop_for_of_var_index = -1;
 3603|      0|        }
 3604|       |
 3605|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3606|      0|            yyscanner, OP_INCR_M, var_frame + 1, NULL, NULL));
 3607|       |
 3608|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3609|      0|            yyscanner, OP_PUSH_M, var_frame + 0, NULL, NULL));
 3610|       |
 3611|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3612|      0|            yyscanner, OP_PUSH_M, var_frame + 2, NULL, NULL));
 3613|       |
 3614|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_ITER_CONDITION, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3615|       |
 3616|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3617|      0|            yyscanner, OP_ADD_M, var_frame + 0, NULL, NULL));
 3618|       |
 3619|      0|        jmp_offset = \
 3620|      0|            compiler->loop[compiler->loop_index].start_ref.offset -
 3621|      0|            yr_arena_get_current_offset(compiler->arena, YR_CODE_SECTION);
  ------------------
  |  |   63|      0|#define YR_CODE_SECTION             6
  ------------------
 3622|       |
 3623|      0|        fail_if_error(yr_parser_emit_with_arg_int32(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3624|      0|            yyscanner,
 3625|      0|            OP_JTRUE_P,
 3626|      0|            jmp_offset,
 3627|      0|            NULL,
 3628|      0|            NULL));
 3629|       |
 3630|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3631|      0|            yyscanner, OP_POP, &pop_ref));
 3632|       |
 3633|       |        // Pop from the stack the fixup entry containing the reference to
 3634|       |        // the jump offset that needs to be fixed.
 3635|       |
 3636|      0|        fixup = compiler->fixup_stack_head;
 3637|      0|        compiler->fixup_stack_head = fixup->next;
 3638|       |
 3639|       |        // The fixup entry has a reference to the jump offset that need
 3640|       |        // to be fixed, convert the address into a pointer.
 3641|      0|        int32_t* jmp_offset_addr = (int32_t*) yr_arena_ref_to_ptr(
 3642|      0|            compiler->arena, &fixup->ref);
 3643|       |
 3644|       |        // The reference in the fixup entry points to the jump's offset
 3645|       |        // but the jump instruction is one byte before, that's why we add
 3646|       |        // one to the offset.
 3647|      0|        jmp_offset = pop_ref.offset - fixup->ref.offset + 1;
 3648|       |
 3649|       |        // Fix the jump's offset.
 3650|      0|        memcpy(jmp_offset_addr, &jmp_offset, sizeof(jmp_offset));
 3651|       |
 3652|      0|        yr_free(fixup);
 3653|       |
 3654|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3655|      0|            yyscanner, OP_PUSH_M, var_frame + 1, NULL, NULL));
 3656|       |
 3657|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3658|      0|            yyscanner, OP_PUSH_M, var_frame + 0, NULL, NULL));
 3659|       |
 3660|      0|        fail_if_error(yr_parser_emit_with_arg(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3661|      0|            yyscanner, OP_PUSH_M, var_frame + 2, NULL, NULL));
 3662|       |
 3663|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3664|      0|            yyscanner, OP_ITER_END, NULL));
 3665|       |
 3666|      0|        loop_vars_cleanup(compiler->loop_index);
  ------------------
  |  |  179|      0|    {  \
  |  |  180|      0|      YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[loop_index]; \
  |  |  181|      0|      for (int i = 0; i < loop_ctx->vars_count; i++) \
  |  |  ------------------
  |  |  |  Branch (181:23): [True: 0, False: 0]
  |  |  ------------------
  |  |  182|      0|      { \
  |  |  183|      0|        yr_free((void*) loop_ctx->vars[i].identifier.ptr); \
  |  |  184|      0|        loop_ctx->vars[i].identifier.ptr = NULL; \
  |  |  185|      0|        loop_ctx->vars[i].identifier.ref = YR_ARENA_NULL_REF; \
  |  |  ------------------
  |  |  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |  |  |   44|      0|  {                        \
  |  |  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|      0|  }
  |  |  ------------------
  |  |  186|      0|      } \
  |  |  187|      0|      loop_ctx->vars_count = 0; \
  |  |  188|      0|    } \
  ------------------
 3667|       |
 3668|      0|        compiler->loop_index--;
 3669|       |
 3670|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3671|      0|      }
 3672|      0|#line 3673 "libyara/grammar.c"
 3673|      0|    break;
 3674|       |
 3675|      0|  case 92: /* expression: for_expression "<of>" string_set  */
  ------------------
  |  Branch (3675:3): [True: 0, False: 6]
  ------------------
 3676|      0|#line 1709 "libyara/grammar.y"
 3677|      0|      {
 3678|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER && (yyvsp[-2].expression).value.integer > (yyvsp[0].integer))
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3678:13): [True: 0, False: 0]
  |  Branch (3678:71): [True: 0, False: 0]
  ------------------
 3679|      0|        {
 3680|      0|          yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3681|      0|            "expression always false - requesting %" PRId64 " of %" PRId64 ".", (yyvsp[-2].expression).value.integer, (yyvsp[0].integer));
 3682|      0|        }
 3683|      0|        yr_parser_emit_with_arg(yyscanner, OP_OF, OF_STRING_SET, NULL, NULL);
  ------------------
  |  |   74|      0|#define OP_OF                         26
  ------------------
                      yr_parser_emit_with_arg(yyscanner, OP_OF, OF_STRING_SET, NULL, NULL);
  ------------------
  |  |   42|      0|#define OF_STRING_SET 0
  ------------------
 3684|       |
 3685|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3686|      0|      }
 3687|      0|#line 3688 "libyara/grammar.c"
 3688|      0|    break;
 3689|       |
 3690|      0|  case 93: /* expression: for_expression "<of>" rule_set  */
  ------------------
  |  Branch (3690:3): [True: 0, False: 6]
  ------------------
 3691|      0|#line 1720 "libyara/grammar.y"
 3692|      0|      {
 3693|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER && (yyvsp[-2].expression).value.integer > (yyvsp[0].integer))
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3693:13): [True: 0, False: 0]
  |  Branch (3693:71): [True: 0, False: 0]
  ------------------
 3694|      0|        {
 3695|      0|          yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3696|      0|            "expression always false - requesting %" PRId64 " of %" PRId64 ".", (yyvsp[-2].expression).value.integer, (yyvsp[0].integer));
 3697|      0|        }
 3698|      0|        yr_parser_emit_with_arg(yyscanner, OP_OF, OF_RULE_SET, NULL, NULL);
  ------------------
  |  |   74|      0|#define OP_OF                         26
  ------------------
                      yr_parser_emit_with_arg(yyscanner, OP_OF, OF_RULE_SET, NULL, NULL);
  ------------------
  |  |   43|      0|#define OF_RULE_SET   1
  ------------------
 3699|       |
 3700|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3701|      0|      }
 3702|      0|#line 3703 "libyara/grammar.c"
 3703|      0|    break;
 3704|       |
 3705|      0|  case 94: /* expression: primary_expression '%' "<of>" string_set  */
  ------------------
  |  Branch (3705:3): [True: 0, False: 6]
  ------------------
 3706|      0|#line 1731 "libyara/grammar.y"
 3707|      0|      {
 3708|      0|        check_type((yyvsp[-3].expression), EXPRESSION_TYPE_INTEGER, "%");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3709|       |
 3710|       |        // The value of primary_expression can be undefined because
 3711|       |        // it could be a variable for which don't know the value during
 3712|       |        // compiling time. However, if the value is defined it should be
 3713|       |        // in the range [1,100].
 3714|      0|        if (!IS_UNDEFINED((yyvsp[-3].expression).value.integer) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (3714:13): [True: 0, False: 0]
  ------------------
 3715|      0|            ((yyvsp[-3].expression).value.integer < 1 || (yyvsp[-3].expression).value.integer > 100))
  ------------------
  |  Branch (3715:14): [True: 0, False: 0]
  |  Branch (3715:58): [True: 0, False: 0]
  ------------------
 3716|      0|        {
 3717|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3718|      0|              compiler, "percentage must be between 1 and 100 (inclusive)");
 3719|       |
 3720|      0|          fail_with_error(ERROR_INVALID_PERCENTAGE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3721|      0|        }
 3722|       |
 3723|      0|        yr_parser_emit_with_arg(yyscanner, OP_OF_PERCENT, OF_STRING_SET, NULL, NULL);
  ------------------
  |  |  122|      0|#define OP_OF_PERCENT                 74
  ------------------
                      yr_parser_emit_with_arg(yyscanner, OP_OF_PERCENT, OF_STRING_SET, NULL, NULL);
  ------------------
  |  |   42|      0|#define OF_STRING_SET 0
  ------------------
 3724|      0|      }
 3725|      0|#line 3726 "libyara/grammar.c"
 3726|      0|    break;
 3727|       |
 3728|      0|  case 95: /* expression: primary_expression '%' "<of>" rule_set  */
  ------------------
  |  Branch (3728:3): [True: 0, False: 6]
  ------------------
 3729|      0|#line 1750 "libyara/grammar.y"
 3730|      0|      {
 3731|      0|        check_type((yyvsp[-3].expression), EXPRESSION_TYPE_INTEGER, "%");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 3732|       |
 3733|       |        // The value of primary_expression can be undefined because
 3734|       |        // it could be a variable for which don't know the value during
 3735|       |        // compiling time. However, if the value is defined it should be
 3736|       |        // in the range [1,100].
 3737|      0|        if (!IS_UNDEFINED((yyvsp[-3].expression).value.integer) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (3737:13): [True: 0, False: 0]
  ------------------
 3738|      0|            ((yyvsp[-3].expression).value.integer < 1 || (yyvsp[-3].expression).value.integer > 100))
  ------------------
  |  Branch (3738:14): [True: 0, False: 0]
  |  Branch (3738:58): [True: 0, False: 0]
  ------------------
 3739|      0|        {
 3740|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3741|      0|              compiler, "percentage must be between 1 and 100 (inclusive)");
 3742|       |
 3743|      0|          fail_with_error(ERROR_INVALID_PERCENTAGE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3744|      0|        }
 3745|       |
 3746|      0|        yr_parser_emit_with_arg(yyscanner, OP_OF_PERCENT, OF_RULE_SET, NULL, NULL);
  ------------------
  |  |  122|      0|#define OP_OF_PERCENT                 74
  ------------------
                      yr_parser_emit_with_arg(yyscanner, OP_OF_PERCENT, OF_RULE_SET, NULL, NULL);
  ------------------
  |  |   43|      0|#define OF_RULE_SET   1
  ------------------
 3747|      0|      }
 3748|      0|#line 3749 "libyara/grammar.c"
 3749|      0|    break;
 3750|       |
 3751|      0|  case 96: /* expression: for_expression "<of>" string_set "<in>" range  */
  ------------------
  |  Branch (3751:3): [True: 0, False: 6]
  ------------------
 3752|      0|#line 1769 "libyara/grammar.y"
 3753|      0|      {
 3754|      0|        if ((yyvsp[-4].expression).type == EXPRESSION_TYPE_INTEGER && (yyvsp[-4].expression).value.integer > (yyvsp[-2].integer))
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3754:13): [True: 0, False: 0]
  |  Branch (3754:71): [True: 0, False: 0]
  ------------------
 3755|      0|        {
 3756|      0|          yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3757|      0|            "expression always false - requesting %" PRId64 " of %" PRId64 ".", (yyvsp[-4].expression).value.integer, (yyvsp[-2].integer));
 3758|      0|        }
 3759|       |
 3760|      0|        yr_parser_emit(yyscanner, OP_OF_FOUND_IN, NULL);
  ------------------
  |  |  123|      0|#define OP_OF_FOUND_IN                75
  ------------------
 3761|       |
 3762|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3763|      0|      }
 3764|      0|#line 3765 "libyara/grammar.c"
 3765|      0|    break;
 3766|       |
 3767|      0|  case 97: /* expression: for_expression "<of>" string_set "<at>" primary_expression  */
  ------------------
  |  Branch (3767:3): [True: 0, False: 6]
  ------------------
 3768|      0|#line 1781 "libyara/grammar.y"
 3769|      0|      {
 3770|      0|        if ((yyvsp[0].expression).type != EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3770:13): [True: 0, False: 0]
  ------------------
 3771|      0|        {
 3772|      0|          yr_compiler_set_error_extra_info(compiler,
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 3773|      0|              "at expression must be an integer");
 3774|       |
 3775|      0|          fail_with_error(ERROR_INVALID_VALUE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3776|      0|        }
 3777|       |
 3778|      0|        if ((yyvsp[-4].expression).type == EXPRESSION_TYPE_INTEGER && (yyvsp[-4].expression).value.integer > (yyvsp[-2].integer))
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3778:13): [True: 0, False: 0]
  |  Branch (3778:71): [True: 0, False: 0]
  ------------------
 3779|      0|        {
 3780|      0|          yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3781|      0|            "expression always false - requesting %" PRId64 " of %" PRId64 ".", (yyvsp[-4].expression).value.integer, (yyvsp[-2].integer));
 3782|      0|        }
 3783|       |
 3784|       |        // Both of these are warnings:
 3785|       |        //
 3786|       |        // "N of them at 0" where N > 1
 3787|       |        //
 3788|       |        //"all of them at 0" where there is more than 1 in "them".
 3789|       |        //
 3790|       |        // This means you can do "all of them at 0" if you only have one string
 3791|       |        // defined in the set.
 3792|      0|        if (((yyvsp[-4].expression).type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3792:14): [True: 0, False: 0]
  ------------------
 3793|      0|              !IS_UNDEFINED((yyvsp[-4].expression).value.integer) && (yyvsp[-4].expression).value.integer > 1) ||
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (3793:15): [True: 0, False: 0]
  |  Branch (3793:70): [True: 0, False: 0]
  ------------------
 3794|      0|              ((yyvsp[-4].expression).type == EXPRESSION_TYPE_QUANTIFIER &&
  ------------------
  |  |   52|      0|#define EXPRESSION_TYPE_QUANTIFIER 64
  ------------------
  |  Branch (3794:16): [True: 0, False: 0]
  ------------------
 3795|      0|              (yyvsp[-4].expression).value.integer == FOR_EXPRESSION_ALL && (yyvsp[-2].integer) > 1))
  ------------------
  |  |  108|      0|#define FOR_EXPRESSION_ALL  1
  ------------------
  |  Branch (3795:15): [True: 0, False: 0]
  |  Branch (3795:77): [True: 0, False: 0]
  ------------------
 3796|      0|        {
 3797|      0|          yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 3798|      0|            "multiple strings at an offset is usually false.");
 3799|      0|        }
 3800|       |
 3801|      0|        yr_parser_emit(yyscanner, OP_OF_FOUND_AT, NULL);
  ------------------
  |  |  127|      0|#define OP_OF_FOUND_AT                79
  ------------------
 3802|       |
 3803|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3804|      0|      }
 3805|      0|#line 3806 "libyara/grammar.c"
 3806|      0|    break;
 3807|       |
 3808|      0|  case 98: /* expression: "<not>" boolean_expression  */
  ------------------
  |  Branch (3808:3): [True: 0, False: 6]
  ------------------
 3809|      0|#line 1818 "libyara/grammar.y"
 3810|      0|      {
 3811|      0|        yr_parser_emit(yyscanner, OP_NOT, NULL);
  ------------------
  |  |   51|      0|#define OP_NOT                        3
  ------------------
 3812|       |
 3813|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3814|      0|      }
 3815|      0|#line 3816 "libyara/grammar.c"
 3816|      0|    break;
 3817|       |
 3818|      0|  case 99: /* expression: "<defined>" boolean_expression  */
  ------------------
  |  Branch (3818:3): [True: 0, False: 6]
  ------------------
 3819|      0|#line 1824 "libyara/grammar.y"
 3820|      0|      {
 3821|      0|        yr_parser_emit(yyscanner, OP_DEFINED, NULL);
  ------------------
  |  |  125|      0|#define OP_DEFINED                    77
  ------------------
 3822|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3823|      0|      }
 3824|      0|#line 3825 "libyara/grammar.c"
 3825|      0|    break;
 3826|       |
 3827|      0|  case 100: /* $@8: %empty  */
  ------------------
  |  Branch (3827:3): [True: 0, False: 6]
  ------------------
 3828|      0|#line 1829 "libyara/grammar.y"
 3829|      0|      {
 3830|      0|        YR_FIXUP* fixup;
 3831|      0|        YR_ARENA_REF jmp_offset_ref;
 3832|       |
 3833|      0|        fail_if_error(yr_parser_emit_with_arg_int32(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3834|      0|            yyscanner,
 3835|      0|            OP_JFALSE,
 3836|      0|            0,          // still don't know the jump offset, use 0 for now.
 3837|      0|            NULL,
 3838|      0|            &jmp_offset_ref));
 3839|       |
 3840|       |        // Create a fixup entry for the jump and push it in the stack.
 3841|      0|        fixup = (YR_FIXUP*) yr_malloc(sizeof(YR_FIXUP));
 3842|       |
 3843|      0|        if (fixup == NULL)
  ------------------
  |  Branch (3843:13): [True: 0, False: 0]
  ------------------
 3844|      0|          fail_with_error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3845|       |
 3846|      0|        fixup->ref = jmp_offset_ref;
 3847|      0|        fixup->next = compiler->fixup_stack_head;
 3848|      0|        compiler->fixup_stack_head = fixup;
 3849|      0|      }
 3850|      0|#line 3851 "libyara/grammar.c"
 3851|      0|    break;
 3852|       |
 3853|      0|  case 101: /* expression: boolean_expression "<and>" $@8 boolean_expression  */
  ------------------
  |  Branch (3853:3): [True: 0, False: 6]
  ------------------
 3854|      0|#line 1851 "libyara/grammar.y"
 3855|      0|      {
 3856|      0|        YR_FIXUP* fixup;
 3857|       |
 3858|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_AND, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3859|       |
 3860|      0|        fixup = compiler->fixup_stack_head;
 3861|       |
 3862|      0|        int32_t* jmp_offset_addr = (int32_t*) yr_arena_ref_to_ptr(
 3863|      0|            compiler->arena, &fixup->ref);
 3864|       |
 3865|      0|        int32_t jmp_offset = \
 3866|      0|            yr_arena_get_current_offset(compiler->arena, YR_CODE_SECTION) -
  ------------------
  |  |   63|      0|#define YR_CODE_SECTION             6
  ------------------
 3867|      0|            fixup->ref.offset + 1;
 3868|       |
 3869|      0|        memcpy(jmp_offset_addr, &jmp_offset, sizeof(jmp_offset));
 3870|       |
 3871|       |        // Remove fixup from the stack.
 3872|      0|        compiler->fixup_stack_head = fixup->next;
 3873|      0|        yr_free(fixup);
 3874|       |
 3875|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3876|      0|      }
 3877|      0|#line 3878 "libyara/grammar.c"
 3878|      0|    break;
 3879|       |
 3880|      0|  case 102: /* $@9: %empty  */
  ------------------
  |  Branch (3880:3): [True: 0, False: 6]
  ------------------
 3881|      0|#line 1874 "libyara/grammar.y"
 3882|      0|      {
 3883|      0|        YR_FIXUP* fixup;
 3884|      0|        YR_ARENA_REF jmp_offset_ref;
 3885|       |
 3886|      0|        fail_if_error(yr_parser_emit_with_arg_int32(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3887|      0|            yyscanner,
 3888|      0|            OP_JTRUE,
 3889|      0|            0,         // still don't know the jump destination, use 0 for now.
 3890|      0|            NULL,
 3891|      0|            &jmp_offset_ref));
 3892|       |
 3893|      0|        fixup = (YR_FIXUP*) yr_malloc(sizeof(YR_FIXUP));
 3894|       |
 3895|      0|        if (fixup == NULL)
  ------------------
  |  Branch (3895:13): [True: 0, False: 0]
  ------------------
 3896|      0|          fail_with_error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 3897|       |
 3898|      0|        fixup->ref = jmp_offset_ref;
 3899|      0|        fixup->next = compiler->fixup_stack_head;
 3900|      0|        compiler->fixup_stack_head = fixup;
 3901|      0|      }
 3902|      0|#line 3903 "libyara/grammar.c"
 3903|      0|    break;
 3904|       |
 3905|      0|  case 103: /* expression: boolean_expression "<or>" $@9 boolean_expression  */
  ------------------
  |  Branch (3905:3): [True: 0, False: 6]
  ------------------
 3906|      0|#line 1895 "libyara/grammar.y"
 3907|      0|      {
 3908|      0|        YR_FIXUP* fixup;
 3909|       |
 3910|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_OR, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3911|       |
 3912|      0|        fixup = compiler->fixup_stack_head;
 3913|       |
 3914|      0|        int32_t jmp_offset = \
 3915|      0|            yr_arena_get_current_offset(compiler->arena, YR_CODE_SECTION) -
  ------------------
  |  |   63|      0|#define YR_CODE_SECTION             6
  ------------------
 3916|      0|            fixup->ref.offset + 1;
 3917|       |
 3918|      0|        int32_t* jmp_offset_addr = (int32_t*) yr_arena_ref_to_ptr(
 3919|      0|            compiler->arena, &fixup->ref);
 3920|       |
 3921|      0|        memcpy(jmp_offset_addr, &jmp_offset, sizeof(jmp_offset));
 3922|       |
 3923|       |        // Remove fixup from the stack.
 3924|      0|        compiler->fixup_stack_head = fixup->next;
 3925|      0|        yr_free(fixup);
 3926|       |
 3927|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3928|      0|      }
 3929|      0|#line 3930 "libyara/grammar.c"
 3930|      0|    break;
 3931|       |
 3932|      0|  case 104: /* expression: primary_expression "<" primary_expression  */
  ------------------
  |  Branch (3932:3): [True: 0, False: 6]
  ------------------
 3933|      0|#line 1918 "libyara/grammar.y"
 3934|      0|      {
 3935|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3936|      0|            yyscanner, "<", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3937|       |
 3938|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3939|      0|      }
 3940|      0|#line 3941 "libyara/grammar.c"
 3941|      0|    break;
 3942|       |
 3943|      0|  case 105: /* expression: primary_expression ">" primary_expression  */
  ------------------
  |  Branch (3943:3): [True: 0, False: 6]
  ------------------
 3944|      0|#line 1925 "libyara/grammar.y"
 3945|      0|      {
 3946|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3947|      0|            yyscanner, ">", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3948|       |
 3949|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3950|      0|      }
 3951|      0|#line 3952 "libyara/grammar.c"
 3952|      0|    break;
 3953|       |
 3954|      0|  case 106: /* expression: primary_expression "<=" primary_expression  */
  ------------------
  |  Branch (3954:3): [True: 0, False: 6]
  ------------------
 3955|      0|#line 1932 "libyara/grammar.y"
 3956|      0|      {
 3957|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3958|      0|            yyscanner, "<=", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3959|       |
 3960|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3961|      0|      }
 3962|      0|#line 3963 "libyara/grammar.c"
 3963|      0|    break;
 3964|       |
 3965|      0|  case 107: /* expression: primary_expression ">=" primary_expression  */
  ------------------
  |  Branch (3965:3): [True: 0, False: 6]
  ------------------
 3966|      0|#line 1939 "libyara/grammar.y"
 3967|      0|      {
 3968|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3969|      0|            yyscanner, ">=", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3970|       |
 3971|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3972|      0|      }
 3973|      0|#line 3974 "libyara/grammar.c"
 3974|      0|    break;
 3975|       |
 3976|      0|  case 108: /* expression: primary_expression "==" primary_expression  */
  ------------------
  |  Branch (3976:3): [True: 0, False: 6]
  ------------------
 3977|      0|#line 1946 "libyara/grammar.y"
 3978|      0|      {
 3979|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3980|      0|            yyscanner, "==", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3981|       |
 3982|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3983|      0|      }
 3984|      0|#line 3985 "libyara/grammar.c"
 3985|      0|    break;
 3986|       |
 3987|      0|  case 109: /* expression: primary_expression "!=" primary_expression  */
  ------------------
  |  Branch (3987:3): [True: 0, False: 6]
  ------------------
 3988|      0|#line 1953 "libyara/grammar.y"
 3989|      0|      {
 3990|      0|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 3991|      0|            yyscanner, "!=", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3992|       |
 3993|      0|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3994|      0|      }
 3995|      0|#line 3996 "libyara/grammar.c"
 3996|      0|    break;
 3997|       |
 3998|      0|  case 110: /* expression: primary_expression  */
  ------------------
  |  Branch (3998:3): [True: 0, False: 6]
  ------------------
 3999|      0|#line 1960 "libyara/grammar.y"
 4000|      0|      {
 4001|      0|        (yyval.expression) = (yyvsp[0].expression);
 4002|      0|      }
 4003|      0|#line 4004 "libyara/grammar.c"
 4004|      0|    break;
 4005|       |
 4006|      0|  case 111: /* expression: '(' expression ')'  */
  ------------------
  |  Branch (4006:3): [True: 0, False: 6]
  ------------------
 4007|      0|#line 1964 "libyara/grammar.y"
 4008|      0|      {
 4009|      0|        (yyval.expression) = (yyvsp[-1].expression);
 4010|      0|      }
 4011|      0|#line 4012 "libyara/grammar.c"
 4012|      0|    break;
 4013|       |
 4014|      0|  case 112: /* for_iteration: for_variables "<in>" iterator  */
  ------------------
  |  Branch (4014:3): [True: 0, False: 6]
  ------------------
 4015|      0|#line 1971 "libyara/grammar.y"
 4016|      0|                                  { (yyval.integer) = FOR_ITERATION_ITERATOR; }
  ------------------
  |  |  112|      0|#define FOR_ITERATION_ITERATOR   1
  ------------------
 4017|      0|#line 4018 "libyara/grammar.c"
 4018|      0|    break;
 4019|       |
 4020|      0|  case 113: /* for_iteration: "<of>" string_iterator  */
  ------------------
  |  Branch (4020:3): [True: 0, False: 6]
  ------------------
 4021|      0|#line 1973 "libyara/grammar.y"
 4022|      0|      {
 4023|      0|        int var_frame;
 4024|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4025|       |
 4026|      0|        if (compiler->loop_for_of_var_index != -1)
  ------------------
  |  Branch (4026:13): [True: 0, False: 0]
  ------------------
 4027|      0|          result = ERROR_NESTED_FOR_OF_LOOP;
  ------------------
  |  |   77|      0|#define ERROR_NESTED_FOR_OF_LOOP             32
  ------------------
 4028|       |
 4029|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4030|       |
 4031|       |        // Simulate that we have 1 variable with string loops
 4032|      0|        compiler->loop[compiler->loop_index].vars_count = 1;
 4033|       |
 4034|       |        // Set where we can find our string in case $ is in
 4035|       |        // the body of the loop
 4036|      0|        var_frame = _yr_compiler_get_var_frame(compiler);
 4037|      0|        compiler->loop_for_of_var_index = var_frame +
 4038|      0|            compiler->loop[compiler->loop_index].vars_internal_count;
 4039|       |
 4040|      0|        (yyval.integer) = FOR_ITERATION_STRING_SET;
  ------------------
  |  |  113|      0|#define FOR_ITERATION_STRING_SET 2
  ------------------
 4041|      0|      }
 4042|      0|#line 4043 "libyara/grammar.c"
 4043|      0|    break;
 4044|       |
 4045|      0|  case 114: /* for_variables: "identifier"  */
  ------------------
  |  Branch (4045:3): [True: 0, False: 6]
  ------------------
 4046|      0|#line 1998 "libyara/grammar.y"
 4047|      0|      {
 4048|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4049|       |
 4050|      0|        YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[compiler->loop_index];
 4051|       |
 4052|      0|        if (yr_parser_lookup_loop_variable(yyscanner, (yyvsp[0].c_string), NULL) >= 0)
  ------------------
  |  Branch (4052:13): [True: 0, False: 0]
  ------------------
 4053|      0|        {
 4054|      0|          yr_compiler_set_error_extra_info(compiler, (yyvsp[0].c_string));
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4055|      0|          yr_free((yyvsp[0].c_string));
 4056|       |
 4057|      0|          result = ERROR_DUPLICATED_LOOP_IDENTIFIER;
  ------------------
  |  |   58|      0|#define ERROR_DUPLICATED_LOOP_IDENTIFIER     13
  ------------------
 4058|      0|        }
 4059|       |
 4060|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4061|       |
 4062|      0|        loop_ctx->vars[loop_ctx->vars_count++].identifier.ptr = (yyvsp[0].c_string);
 4063|       |
 4064|      0|        assert(loop_ctx->vars_count <= YR_MAX_LOOP_VARS);
 4065|      0|      }
 4066|      0|#line 4067 "libyara/grammar.c"
 4067|      0|    break;
 4068|       |
 4069|      0|  case 115: /* for_variables: for_variables ',' "identifier"  */
  ------------------
  |  Branch (4069:3): [True: 0, False: 6]
  ------------------
 4070|      0|#line 2018 "libyara/grammar.y"
 4071|      0|      {
 4072|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4073|       |
 4074|      0|        YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[compiler->loop_index];
 4075|       |
 4076|      0|        if (loop_ctx->vars_count == YR_MAX_LOOP_VARS)
  ------------------
  |  |  103|      0|#define YR_MAX_LOOP_VARS 2
  ------------------
  |  Branch (4076:13): [True: 0, False: 0]
  ------------------
 4077|      0|        {
 4078|      0|          yr_compiler_set_error_extra_info(compiler, "too many loop variables");
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4079|      0|          yr_free((yyvsp[0].c_string));
 4080|       |
 4081|      0|          result = ERROR_SYNTAX_ERROR;
  ------------------
  |  |   56|      0|#define ERROR_SYNTAX_ERROR                   11
  ------------------
 4082|      0|        }
 4083|      0|        else if (yr_parser_lookup_loop_variable(yyscanner, (yyvsp[0].c_string), NULL) >= 0)
  ------------------
  |  Branch (4083:18): [True: 0, False: 0]
  ------------------
 4084|      0|        {
 4085|      0|          yr_compiler_set_error_extra_info(compiler, (yyvsp[0].c_string));
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4086|      0|          yr_free((yyvsp[0].c_string));
 4087|       |
 4088|      0|          result = ERROR_DUPLICATED_LOOP_IDENTIFIER;
  ------------------
  |  |   58|      0|#define ERROR_DUPLICATED_LOOP_IDENTIFIER     13
  ------------------
 4089|      0|        }
 4090|       |
 4091|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4092|       |
 4093|      0|        loop_ctx->vars[loop_ctx->vars_count++].identifier.ptr = (yyvsp[0].c_string);
 4094|      0|      }
 4095|      0|#line 4096 "libyara/grammar.c"
 4096|      0|    break;
 4097|       |
 4098|      0|  case 116: /* iterator: identifier  */
  ------------------
  |  Branch (4098:3): [True: 0, False: 6]
  ------------------
 4099|      0|#line 2046 "libyara/grammar.y"
 4100|      0|      {
 4101|      0|        YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[compiler->loop_index];
 4102|       |
 4103|       |        // Initially we assume that the identifier is from a non-iterable type,
 4104|       |        // this will change later if it's iterable.
 4105|      0|        int result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4106|       |
 4107|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_OBJECT)
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (4107:13): [True: 0, False: 0]
  ------------------
 4108|      0|        {
 4109|      0|          switch((yyvsp[0].expression).value.object->type)
  ------------------
  |  Branch (4109:18): [True: 0, False: 0]
  ------------------
 4110|      0|          {
 4111|      0|            case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|      0|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (4111:13): [True: 0, False: 0]
  ------------------
 4112|       |              // If iterating an array the loop must define a single variable
 4113|       |              // that will hold the current item. If a different number of
 4114|       |              // variables were defined that's an error.
 4115|      0|              if (loop_ctx->vars_count == 1)
  ------------------
  |  Branch (4115:19): [True: 0, False: 0]
  ------------------
 4116|      0|              {
 4117|      0|                loop_ctx->vars[0].type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 4118|      0|                loop_ctx->vars[0].value.object = \
 4119|      0|                    object_as_array((yyvsp[0].expression).value.object)->prototype_item;
  ------------------
  |  |  903|      0|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
 4120|       |
 4121|      0|                result = yr_parser_emit(yyscanner, OP_ITER_START_ARRAY, NULL);
  ------------------
  |  |  102|      0|#define OP_ITER_START_ARRAY           54
  ------------------
 4122|      0|              }
 4123|      0|              else
 4124|      0|              {
 4125|      0|                yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  |  |  ------------------
  |  |  |  Branch (315:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4126|      0|                    compiler,
 4127|      0|                    "iterator for \"%s\" yields a single item on each iteration"
 4128|      0|                    ", but the loop expects %d",
 4129|      0|                    expression_identifier((yyvsp[0].expression)),
 4130|      0|                    loop_ctx->vars_count);
 4131|       |
 4132|      0|                result = ERROR_SYNTAX_ERROR;
  ------------------
  |  |   56|      0|#define ERROR_SYNTAX_ERROR                   11
  ------------------
 4133|      0|              }
 4134|      0|              break;
 4135|       |
 4136|      0|            case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (4136:13): [True: 0, False: 0]
  ------------------
 4137|       |              // If iterating a dictionary the loop must define exactly two
 4138|       |              // variables, one for the key and another for the value . If a
 4139|       |              // different number of variables were defined that's an error.
 4140|      0|              if (loop_ctx->vars_count == 2)
  ------------------
  |  Branch (4140:19): [True: 0, False: 0]
  ------------------
 4141|      0|              {
 4142|      0|                loop_ctx->vars[0].type = EXPRESSION_TYPE_STRING;
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
 4143|      0|                loop_ctx->vars[0].value.sized_string_ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 4144|      0|                loop_ctx->vars[1].type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 4145|      0|                loop_ctx->vars[1].value.object = \
 4146|      0|                    object_as_array((yyvsp[0].expression).value.object)->prototype_item;
  ------------------
  |  |  903|      0|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
 4147|       |
 4148|      0|                result = yr_parser_emit(yyscanner, OP_ITER_START_DICT, NULL);
  ------------------
  |  |  103|      0|#define OP_ITER_START_DICT            55
  ------------------
 4149|      0|              }
 4150|      0|              else
 4151|      0|              {
 4152|      0|                yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  |  |  ------------------
  |  |  |  Branch (315:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4153|      0|                    compiler,
 4154|      0|                    "iterator for \"%s\" yields a key,value pair item on each iteration",
 4155|      0|                    expression_identifier((yyvsp[0].expression)));
 4156|       |
 4157|      0|                result = ERROR_SYNTAX_ERROR;
  ------------------
  |  |   56|      0|#define ERROR_SYNTAX_ERROR                   11
  ------------------
 4158|      0|              }
 4159|      0|              break;
 4160|      0|          }
 4161|      0|        }
 4162|       |
 4163|      0|        if (result == ERROR_WRONG_TYPE)
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
  |  Branch (4163:13): [True: 0, False: 0]
  ------------------
 4164|      0|        {
 4165|      0|          yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  |  |  ------------------
  |  |  |  Branch (315:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4166|      0|              compiler,
 4167|      0|              "identifier \"%s\" is not iterable",
 4168|      0|              expression_identifier((yyvsp[0].expression)));
 4169|      0|        }
 4170|       |
 4171|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4172|      0|      }
 4173|      0|#line 4174 "libyara/grammar.c"
 4174|      0|    break;
 4175|       |
 4176|      0|  case 117: /* iterator: set  */
  ------------------
  |  Branch (4176:3): [True: 0, False: 6]
  ------------------
 4177|      0|#line 2120 "libyara/grammar.y"
 4178|      0|      {
 4179|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4180|       |
 4181|      0|        YR_LOOP_CONTEXT* loop_ctx = &compiler->loop[compiler->loop_index];
 4182|       |
 4183|      0|        if (loop_ctx->vars_count == 1)
  ------------------
  |  Branch (4183:13): [True: 0, False: 0]
  ------------------
 4184|      0|        {
 4185|      0|          loop_ctx->vars[0].type = (yyvsp[0].enumeration).type;
 4186|      0|          loop_ctx->vars[0].value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4187|      0|        }
 4188|      0|        else
 4189|      0|        {
 4190|      0|          yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4191|      0|              compiler,
 4192|      0|              "iterator yields one value on each iteration "
 4193|      0|              ", but the loop expects %d",
 4194|      0|              loop_ctx->vars_count);
 4195|       |
 4196|      0|          result = ERROR_SYNTAX_ERROR;
  ------------------
  |  |   56|      0|#define ERROR_SYNTAX_ERROR                   11
  ------------------
 4197|      0|        }
 4198|       |
 4199|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4200|      0|      }
 4201|      0|#line 4202 "libyara/grammar.c"
 4202|      0|    break;
 4203|       |
 4204|      0|  case 118: /* set: '(' enumeration ')'  */
  ------------------
  |  Branch (4204:3): [True: 0, False: 6]
  ------------------
 4205|      0|#line 2148 "libyara/grammar.y"
 4206|      0|      {
 4207|       |        // $2.count contains the number of items in the enumeration
 4208|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, (yyvsp[-1].enumeration).count));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4209|       |
 4210|      0|        if ((yyvsp[-1].enumeration).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4210:13): [True: 0, False: 0]
  ------------------
 4211|      0|        {
 4212|      0|          fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4213|      0|              yyscanner, OP_ITER_START_INT_ENUM, NULL));
 4214|      0|        }
 4215|      0|        else
 4216|      0|        {
 4217|      0|          fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4218|      0|              yyscanner, OP_ITER_START_TEXT_STRING_SET, NULL));
 4219|      0|        }
 4220|       |
 4221|      0|        (yyval.enumeration).type = (yyvsp[-1].enumeration).type;
 4222|       |
 4223|      0|      }
 4224|      0|#line 4225 "libyara/grammar.c"
 4225|      0|    break;
 4226|       |
 4227|      0|  case 119: /* set: range  */
  ------------------
  |  Branch (4227:3): [True: 0, False: 6]
  ------------------
 4228|      0|#line 2167 "libyara/grammar.y"
 4229|      0|      {
 4230|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4231|      0|            yyscanner, OP_ITER_START_INT_RANGE, NULL));
 4232|       |
 4233|      0|        (yyval.enumeration).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4234|      0|      }
 4235|      0|#line 4236 "libyara/grammar.c"
 4236|      0|    break;
 4237|       |
 4238|      0|  case 120: /* range: '(' primary_expression ".." primary_expression ')'  */
  ------------------
  |  Branch (4238:3): [True: 0, False: 6]
  ------------------
 4239|      0|#line 2178 "libyara/grammar.y"
 4240|      0|      {
 4241|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4242|       |
 4243|      0|        if ((yyvsp[-3].expression).type != EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4243:13): [True: 0, False: 0]
  ------------------
 4244|      0|        {
 4245|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4246|      0|              compiler, "wrong type for range's lower bound");
 4247|      0|          result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4248|      0|        }
 4249|       |
 4250|      0|        if ((yyvsp[-1].expression).type != EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4250:13): [True: 0, False: 0]
  ------------------
 4251|      0|        {
 4252|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4253|      0|              compiler, "wrong type for range's upper bound");
 4254|      0|          result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4255|      0|        }
 4256|       |
 4257|       |        // If we can statically determine lower and upper bounds, ensure
 4258|       |        // lower < upper. Check for upper bound here because some things (like
 4259|       |        // string count) are EXPRESSION_TYPE_INTEGER.
 4260|      0|        if ((yyvsp[-3].expression).value.integer != YR_UNDEFINED && (yyvsp[-1].expression).value.integer != YR_UNDEFINED)
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
                      if ((yyvsp[-3].expression).value.integer != YR_UNDEFINED && (yyvsp[-1].expression).value.integer != YR_UNDEFINED)
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (4260:13): [True: 0, False: 0]
  |  Branch (4260:69): [True: 0, False: 0]
  ------------------
 4261|      0|        {
 4262|      0|          if ((yyvsp[-3].expression).value.integer > (yyvsp[-1].expression).value.integer)
  ------------------
  |  Branch (4262:15): [True: 0, False: 0]
  ------------------
 4263|      0|          {
 4264|      0|            yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4265|      0|                compiler, "range lower bound must be less than upper bound");
 4266|      0|            result = ERROR_INVALID_VALUE;
  ------------------
  |  |  109|      0|#define ERROR_INVALID_VALUE                  64
  ------------------
 4267|      0|          }
 4268|      0|          else if ((yyvsp[-3].expression).value.integer < 0)
  ------------------
  |  Branch (4268:20): [True: 0, False: 0]
  ------------------
 4269|      0|          {
 4270|      0|            yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4271|      0|                compiler, "range lower bound can not be negative");
 4272|      0|            result = ERROR_INVALID_VALUE;
  ------------------
  |  |  109|      0|#define ERROR_INVALID_VALUE                  64
  ------------------
 4273|      0|          }
 4274|      0|        }
 4275|       |
 4276|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4277|      0|      }
 4278|      0|#line 4279 "libyara/grammar.c"
 4279|      0|    break;
 4280|       |
 4281|      0|  case 121: /* enumeration: primary_expression  */
  ------------------
  |  Branch (4281:3): [True: 0, False: 6]
  ------------------
 4282|      0|#line 2221 "libyara/grammar.y"
 4283|      0|      {
 4284|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4285|       |
 4286|      0|        if ((yyvsp[0].expression).type != EXPRESSION_TYPE_INTEGER && (yyvsp[0].expression).type != EXPRESSION_TYPE_STRING)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
                      if ((yyvsp[0].expression).type != EXPRESSION_TYPE_INTEGER && (yyvsp[0].expression).type != EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (4286:13): [True: 0, False: 0]
  |  Branch (4286:70): [True: 0, False: 0]
  ------------------
 4287|      0|        {
 4288|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4289|      0|              compiler, "wrong type for enumeration item");
 4290|      0|          result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4291|      0|        }
 4292|       |
 4293|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4294|       |
 4295|      0|        (yyval.enumeration).type = (yyvsp[0].expression).type;
 4296|      0|        (yyval.enumeration).count = 1;
 4297|      0|      }
 4298|      0|#line 4299 "libyara/grammar.c"
 4299|      0|    break;
 4300|       |
 4301|      0|  case 122: /* enumeration: enumeration ',' primary_expression  */
  ------------------
  |  Branch (4301:3): [True: 0, False: 6]
  ------------------
 4302|      0|#line 2237 "libyara/grammar.y"
 4303|      0|      {
 4304|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4305|       |
 4306|      0|        if ((yyvsp[0].expression).type != (yyvsp[-2].enumeration).type)
  ------------------
  |  Branch (4306:13): [True: 0, False: 0]
  ------------------
 4307|      0|        {
 4308|      0|          yr_compiler_set_error_extra_info(
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4309|      0|              compiler, "enumerations must be all the same type");
 4310|      0|          result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4311|      0|        }
 4312|       |
 4313|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4314|       |
 4315|      0|        (yyval.enumeration).type = (yyvsp[-2].enumeration).type;
 4316|      0|        (yyval.enumeration).count = (yyvsp[-2].enumeration).count + 1;
 4317|      0|      }
 4318|      0|#line 4319 "libyara/grammar.c"
 4319|      0|    break;
 4320|       |
 4321|      0|  case 123: /* string_iterator: string_set  */
  ------------------
  |  Branch (4321:3): [True: 0, False: 6]
  ------------------
 4322|      0|#line 2257 "libyara/grammar.y"
 4323|      0|      {
 4324|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, (yyvsp[0].integer)));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4325|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_ITER_START_STRING_SET,
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4326|      0|            NULL));
 4327|      0|      }
 4328|      0|#line 4329 "libyara/grammar.c"
 4329|      0|    break;
 4330|       |
 4331|      0|  case 124: /* $@10: %empty  */
  ------------------
  |  Branch (4331:3): [True: 0, False: 6]
  ------------------
 4332|      0|#line 2266 "libyara/grammar.y"
 4333|      0|      {
 4334|       |        // Push end-of-list marker
 4335|      0|        yr_parser_emit_push_const(yyscanner, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4336|      0|      }
 4337|      0|#line 4338 "libyara/grammar.c"
 4338|      0|    break;
 4339|       |
 4340|      0|  case 125: /* string_set: '(' $@10 string_enumeration ')'  */
  ------------------
  |  Branch (4340:3): [True: 0, False: 6]
  ------------------
 4341|      0|#line 2271 "libyara/grammar.y"
 4342|      0|      {
 4343|      0|        (yyval.integer) = (yyvsp[-1].integer);
 4344|      0|      }
 4345|      0|#line 4346 "libyara/grammar.c"
 4346|      0|    break;
 4347|       |
 4348|      0|  case 126: /* string_set: "<them>"  */
  ------------------
  |  Branch (4348:3): [True: 0, False: 6]
  ------------------
 4349|      0|#line 2275 "libyara/grammar.y"
 4350|      0|      {
 4351|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, YR_UNDEFINED));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4352|       |
 4353|      0|        int count = 0;
 4354|      0|        fail_if_error(yr_parser_emit_pushes_for_strings(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4355|      0|            yyscanner, "$*", &count));
 4356|       |
 4357|      0|        (yyval.integer) = count;
 4358|      0|      }
 4359|      0|#line 4360 "libyara/grammar.c"
 4360|      0|    break;
 4361|       |
 4362|      0|  case 127: /* string_enumeration: string_enumeration_item  */
  ------------------
  |  Branch (4362:3): [True: 0, False: 6]
  ------------------
 4363|      0|#line 2288 "libyara/grammar.y"
 4364|      0|                              { (yyval.integer) = (yyvsp[0].integer); }
 4365|      0|#line 4366 "libyara/grammar.c"
 4366|      0|    break;
 4367|       |
 4368|      0|  case 128: /* string_enumeration: string_enumeration ',' string_enumeration_item  */
  ------------------
  |  Branch (4368:3): [True: 0, False: 6]
  ------------------
 4369|      0|#line 2289 "libyara/grammar.y"
 4370|      0|                                                     { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); }
 4371|      0|#line 4372 "libyara/grammar.c"
 4372|      0|    break;
 4373|       |
 4374|      0|  case 129: /* string_enumeration_item: "string identifier"  */
  ------------------
  |  Branch (4374:3): [True: 0, False: 6]
  ------------------
 4375|      0|#line 2295 "libyara/grammar.y"
 4376|      0|      {
 4377|      0|        int count = 0;
 4378|      0|        int result = yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[0].c_string), &count);
 4379|      0|        yr_free((yyvsp[0].c_string));
 4380|       |
 4381|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4382|       |
 4383|      0|        (yyval.integer) = count;
 4384|      0|      }
 4385|      0|#line 4386 "libyara/grammar.c"
 4386|      0|    break;
 4387|       |
 4388|      0|  case 130: /* string_enumeration_item: "string identifier with wildcard"  */
  ------------------
  |  Branch (4388:3): [True: 0, False: 6]
  ------------------
 4389|      0|#line 2305 "libyara/grammar.y"
 4390|      0|      {
 4391|      0|        int count = 0;
 4392|      0|        int result = yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[0].c_string), &count);
 4393|      0|        yr_free((yyvsp[0].c_string));
 4394|       |
 4395|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4396|       |
 4397|      0|        (yyval.integer) = count;
 4398|      0|      }
 4399|      0|#line 4400 "libyara/grammar.c"
 4400|      0|    break;
 4401|       |
 4402|      0|  case 131: /* $@11: %empty  */
  ------------------
  |  Branch (4402:3): [True: 0, False: 6]
  ------------------
 4403|      0|#line 2319 "libyara/grammar.y"
 4404|      0|      {
 4405|       |        // Push end-of-list marker
 4406|      0|        yr_parser_emit_push_const(yyscanner, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4407|      0|      }
 4408|      0|#line 4409 "libyara/grammar.c"
 4409|      0|    break;
 4410|       |
 4411|      0|  case 132: /* rule_set: '(' $@11 rule_enumeration ')'  */
  ------------------
  |  Branch (4411:3): [True: 0, False: 6]
  ------------------
 4412|      0|#line 2324 "libyara/grammar.y"
 4413|      0|      {
 4414|      0|        (yyval.integer) = (yyvsp[-1].integer);
 4415|      0|      }
 4416|      0|#line 4417 "libyara/grammar.c"
 4417|      0|    break;
 4418|       |
 4419|      0|  case 133: /* rule_enumeration: rule_enumeration_item  */
  ------------------
  |  Branch (4419:3): [True: 0, False: 6]
  ------------------
 4420|      0|#line 2331 "libyara/grammar.y"
 4421|      0|                            { (yyval.integer) = (yyvsp[0].integer); }
 4422|      0|#line 4423 "libyara/grammar.c"
 4423|      0|    break;
 4424|       |
 4425|      0|  case 134: /* rule_enumeration: rule_enumeration ',' rule_enumeration_item  */
  ------------------
  |  Branch (4425:3): [True: 0, False: 6]
  ------------------
 4426|      0|#line 2332 "libyara/grammar.y"
 4427|      0|                                                 { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); }
 4428|      0|#line 4429 "libyara/grammar.c"
 4429|      0|    break;
 4430|       |
 4431|      0|  case 135: /* rule_enumeration_item: "identifier"  */
  ------------------
  |  Branch (4431:3): [True: 0, False: 6]
  ------------------
 4432|      0|#line 2338 "libyara/grammar.y"
 4433|      0|      {
 4434|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4435|       |
 4436|      0|        YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 4437|      0|            compiler->arena,
 4438|      0|            YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      0|#define YR_NAMESPACES_TABLE         0
  ------------------
 4439|      0|            compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 4440|       |
 4441|      0|        uint32_t rule_idx = yr_hash_table_lookup_uint32(
 4442|      0|            compiler->rules_table, (yyvsp[0].c_string), ns->name);
 4443|       |
 4444|      0|        if (rule_idx != UINT32_MAX)
  ------------------
  |  Branch (4444:13): [True: 0, False: 0]
  ------------------
 4445|      0|        {
 4446|      0|          result = yr_parser_emit_with_arg(
 4447|      0|              yyscanner,
 4448|      0|              OP_PUSH_RULE,
  ------------------
  |  |   75|      0|#define OP_PUSH_RULE                  27
  ------------------
 4449|      0|              rule_idx,
 4450|      0|              NULL,
 4451|      0|              NULL);
 4452|      0|        }
 4453|      0|        else
 4454|      0|        {
 4455|      0|          yr_compiler_set_error_extra_info(compiler, (yyvsp[0].c_string));
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4456|      0|          result = ERROR_UNDEFINED_IDENTIFIER;
  ------------------
  |  |   65|      0|#define ERROR_UNDEFINED_IDENTIFIER           20
  ------------------
 4457|      0|        }
 4458|       |
 4459|      0|        yr_free((yyvsp[0].c_string));
 4460|       |
 4461|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4462|       |
 4463|      0|        (yyval.integer) = 1;
 4464|      0|      }
 4465|      0|#line 4466 "libyara/grammar.c"
 4466|      0|    break;
 4467|       |
 4468|      0|  case 136: /* rule_enumeration_item: "identifier" '*'  */
  ------------------
  |  Branch (4468:3): [True: 0, False: 6]
  ------------------
 4469|      0|#line 2371 "libyara/grammar.y"
 4470|      0|      {
 4471|      0|        int count = 0;
 4472|      0|        YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 4473|      0|            compiler->arena,
 4474|      0|            YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      0|#define YR_NAMESPACES_TABLE         0
  ------------------
 4475|      0|            compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 4476|       |
 4477|      0|        yr_hash_table_add_uint32(
 4478|      0|            compiler->wildcard_identifiers_table,
 4479|      0|            (yyvsp[-1].c_string),
 4480|      0|            ns->name,
 4481|      0|            1);
 4482|       |
 4483|      0|        int result = yr_parser_emit_pushes_for_rules(yyscanner, (yyvsp[-1].c_string), &count);
 4484|      0|        yr_free((yyvsp[-1].c_string));
 4485|       |
 4486|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4487|       |
 4488|      0|        (yyval.integer) = count;
 4489|      0|      }
 4490|      0|#line 4491 "libyara/grammar.c"
 4491|      0|    break;
 4492|       |
 4493|      0|  case 137: /* for_expression: primary_expression  */
  ------------------
  |  Branch (4493:3): [True: 0, False: 6]
  ------------------
 4494|      0|#line 2396 "libyara/grammar.y"
 4495|      0|      {
 4496|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER && !IS_UNDEFINED((yyvsp[0].expression).value.integer))
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
                      if ((yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER && !IS_UNDEFINED((yyvsp[0].expression).value.integer))
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (4496:13): [True: 0, False: 0]
  |  Branch (4496:70): [True: 0, False: 0]
  ------------------
 4497|      0|        {
 4498|      0|          if ((yyvsp[0].expression).value.integer == 0)
  ------------------
  |  Branch (4498:15): [True: 0, False: 0]
  ------------------
 4499|      0|          {
 4500|      0|            yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 4501|      0|                "consider using \"none\" keyword, it is less ambiguous.");
 4502|      0|          }
 4503|       |
 4504|      0|          if ((yyvsp[0].expression).value.integer < 0)
  ------------------
  |  Branch (4504:15): [True: 0, False: 0]
  ------------------
 4505|      0|          {
 4506|      0|            yr_compiler_set_error_extra_info_fmt(compiler,
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4507|      0|                "%" PRId64, (yyvsp[0].expression).value.integer);
 4508|       |
 4509|      0|            fail_with_error(ERROR_INVALID_VALUE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 4510|      0|          }
 4511|      0|        }
 4512|       |
 4513|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_FLOAT)
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (4513:13): [True: 0, False: 0]
  ------------------
 4514|      0|        {
 4515|      0|          yr_compiler_set_error_extra_info_fmt(compiler,
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4516|      0|              "%a", (yyvsp[0].expression).value.double_);
 4517|       |
 4518|      0|          fail_with_error(ERROR_INVALID_VALUE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 4519|      0|        }
 4520|       |
 4521|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (4521:13): [True: 0, False: 0]
  ------------------
 4522|      0|        {
 4523|      0|          SIZED_STRING* ss = yr_arena_ref_to_ptr(compiler->arena,
 4524|      0|              &(yyvsp[0].expression).value.sized_string_ref);
 4525|       |          // If the expression is an external string variable we need to get
 4526|       |          // it some other way.
 4527|      0|          if (ss != NULL)
  ------------------
  |  Branch (4527:15): [True: 0, False: 0]
  ------------------
 4528|      0|          {
 4529|      0|            yr_compiler_set_error_extra_info_fmt(compiler, "%s", ss->c_string);
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4530|      0|          }
 4531|      0|          else
 4532|      0|          {
 4533|      0|            yr_compiler_set_error_extra_info(compiler,
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4534|      0|                "string in for_expression is invalid");
 4535|      0|          }
 4536|       |
 4537|      0|          fail_with_error(ERROR_INVALID_VALUE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 4538|      0|        }
 4539|       |
 4540|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_REGEXP)
  ------------------
  |  |   49|      0|#define EXPRESSION_TYPE_REGEXP     8
  ------------------
  |  Branch (4540:13): [True: 0, False: 0]
  ------------------
 4541|      0|        {
 4542|      0|          yr_compiler_set_error_extra_info(compiler,
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 4543|      0|              "regexp in for_expression is invalid");
 4544|       |
 4545|      0|          fail_with_error(ERROR_INVALID_VALUE);
  ------------------
  |  |  120|      0|    { \
  |  |  121|      0|      compiler->last_error = e; \
  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  123|      0|      switch (e) \
  |  |  124|      0|      { \
  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  ------------------
  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  ------------------
  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  126|      0|        YYABORT; \
  |  |  ------------------
  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  ------------------
  |  |  127|      0|      default: \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|        YYERROR; \
  |  |  ------------------
  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  ------------------
  |  |  129|      0|      } \
  |  |  130|      0|    }
  ------------------
 4546|      0|        }
 4547|       |
 4548|      0|        (yyval.expression).value.integer = (yyvsp[0].expression).value.integer;
 4549|      0|      }
 4550|      0|#line 4551 "libyara/grammar.c"
 4551|      0|    break;
 4552|       |
 4553|      0|  case 138: /* for_expression: for_quantifier  */
  ------------------
  |  Branch (4553:3): [True: 0, False: 6]
  ------------------
 4554|      0|#line 2452 "libyara/grammar.y"
 4555|      0|      {
 4556|      0|        (yyval.expression).value.integer = (yyvsp[0].expression).value.integer;
 4557|      0|      }
 4558|      0|#line 4559 "libyara/grammar.c"
 4559|      0|    break;
 4560|       |
 4561|      0|  case 139: /* for_quantifier: "<all>"  */
  ------------------
  |  Branch (4561:3): [True: 0, False: 6]
  ------------------
 4562|      0|#line 2459 "libyara/grammar.y"
 4563|      0|      {
 4564|      0|        yr_parser_emit_push_const(yyscanner, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4565|      0|        (yyval.expression).type = EXPRESSION_TYPE_QUANTIFIER;
  ------------------
  |  |   52|      0|#define EXPRESSION_TYPE_QUANTIFIER 64
  ------------------
 4566|      0|        (yyval.expression).value.integer = FOR_EXPRESSION_ALL;
  ------------------
  |  |  108|      0|#define FOR_EXPRESSION_ALL  1
  ------------------
 4567|      0|     }
 4568|      0|#line 4569 "libyara/grammar.c"
 4569|      0|    break;
 4570|       |
 4571|      0|  case 140: /* for_quantifier: "<any>"  */
  ------------------
  |  Branch (4571:3): [True: 0, False: 6]
  ------------------
 4572|      0|#line 2465 "libyara/grammar.y"
 4573|      0|      {
 4574|      0|        yr_parser_emit_push_const(yyscanner, 1);
 4575|      0|        (yyval.expression).type = EXPRESSION_TYPE_QUANTIFIER;
  ------------------
  |  |   52|      0|#define EXPRESSION_TYPE_QUANTIFIER 64
  ------------------
 4576|      0|        (yyval.expression).value.integer = FOR_EXPRESSION_ANY;
  ------------------
  |  |  109|      0|#define FOR_EXPRESSION_ANY  2
  ------------------
 4577|      0|      }
 4578|      0|#line 4579 "libyara/grammar.c"
 4579|      0|    break;
 4580|       |
 4581|      0|  case 141: /* for_quantifier: "<none>"  */
  ------------------
  |  Branch (4581:3): [True: 0, False: 6]
  ------------------
 4582|      0|#line 2471 "libyara/grammar.y"
 4583|      0|      {
 4584|      0|        yr_parser_emit_push_const(yyscanner, 0);
 4585|      0|        (yyval.expression).type = EXPRESSION_TYPE_QUANTIFIER;
  ------------------
  |  |   52|      0|#define EXPRESSION_TYPE_QUANTIFIER 64
  ------------------
 4586|      0|        (yyval.expression).value.integer = FOR_EXPRESSION_NONE;
  ------------------
  |  |  110|      0|#define FOR_EXPRESSION_NONE 3
  ------------------
 4587|      0|      }
 4588|      0|#line 4589 "libyara/grammar.c"
 4589|      0|    break;
 4590|       |
 4591|      0|  case 142: /* primary_expression: '(' primary_expression ')'  */
  ------------------
  |  Branch (4591:3): [True: 0, False: 6]
  ------------------
 4592|      0|#line 2481 "libyara/grammar.y"
 4593|      0|      {
 4594|      0|        (yyval.expression) = (yyvsp[-1].expression);
 4595|      0|      }
 4596|      0|#line 4597 "libyara/grammar.c"
 4597|      0|    break;
 4598|       |
 4599|      0|  case 143: /* primary_expression: "<filesize>"  */
  ------------------
  |  Branch (4599:3): [True: 0, False: 6]
  ------------------
 4600|      0|#line 2485 "libyara/grammar.y"
 4601|      0|      {
 4602|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4603|      0|            yyscanner, OP_FILESIZE, NULL));
 4604|       |
 4605|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4606|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4607|      0|      }
 4608|      0|#line 4609 "libyara/grammar.c"
 4609|      0|    break;
 4610|       |
 4611|      0|  case 144: /* primary_expression: "<entrypoint>"  */
  ------------------
  |  Branch (4611:3): [True: 0, False: 6]
  ------------------
 4612|      0|#line 2493 "libyara/grammar.y"
 4613|      0|      {
 4614|      0|        yywarning(yyscanner,
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 4615|      0|            "using deprecated \"entrypoint\" keyword. Use the \"entry_point\" "
 4616|      0|            "function from PE module instead.");
 4617|       |
 4618|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4619|      0|            yyscanner, OP_ENTRYPOINT, NULL));
 4620|       |
 4621|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4622|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4623|      0|      }
 4624|      0|#line 4625 "libyara/grammar.c"
 4625|      0|    break;
 4626|       |
 4627|      0|  case 145: /* primary_expression: "integer function" '(' primary_expression ')'  */
  ------------------
  |  Branch (4627:3): [True: 0, False: 6]
  ------------------
 4628|      0|#line 2505 "libyara/grammar.y"
 4629|      0|      {
 4630|      0|        check_type((yyvsp[-1].expression), EXPRESSION_TYPE_INTEGER, "intXXXX or uintXXXX");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 4631|       |
 4632|       |        // _INTEGER_FUNCTION_ could be any of int8, int16, int32, uint8,
 4633|       |        // uint32, etc. $1 contains an index that added to OP_READ_INT results
 4634|       |        // in the proper OP_INTXX opcode.
 4635|       |
 4636|      0|        fail_if_error(yr_parser_emit(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4637|      0|            yyscanner, (uint8_t) (OP_READ_INT + (yyvsp[-3].integer)), NULL));
 4638|       |
 4639|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4640|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4641|      0|      }
 4642|      0|#line 4643 "libyara/grammar.c"
 4643|      0|    break;
 4644|       |
 4645|      0|  case 146: /* primary_expression: "integer number"  */
  ------------------
  |  Branch (4645:3): [True: 0, False: 6]
  ------------------
 4646|      0|#line 2519 "libyara/grammar.y"
 4647|      0|      {
 4648|      0|        fail_if_error(yr_parser_emit_push_const(yyscanner, (yyvsp[0].integer)));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4649|       |
 4650|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4651|      0|        (yyval.expression).value.integer = (yyvsp[0].integer);
 4652|      0|      }
 4653|      0|#line 4654 "libyara/grammar.c"
 4654|      0|    break;
 4655|       |
 4656|      0|  case 147: /* primary_expression: "floating point number"  */
  ------------------
  |  Branch (4656:3): [True: 0, False: 6]
  ------------------
 4657|      0|#line 2526 "libyara/grammar.y"
 4658|      0|      {
 4659|      0|        fail_if_error(yr_parser_emit_with_arg_double(
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4660|      0|            yyscanner, OP_PUSH, (yyvsp[0].double_), NULL, NULL));
 4661|       |
 4662|      0|        (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4663|      0|      }
 4664|      0|#line 4665 "libyara/grammar.c"
 4665|      0|    break;
 4666|       |
 4667|      0|  case 148: /* primary_expression: "text string"  */
  ------------------
  |  Branch (4667:3): [True: 0, False: 6]
  ------------------
 4668|      0|#line 2533 "libyara/grammar.y"
 4669|      0|      {
 4670|      0|        YR_ARENA_REF ref;
 4671|       |
 4672|      0|        int result = _yr_compiler_store_data(
 4673|      0|            compiler,
 4674|      0|            (yyvsp[0].sized_string),
 4675|      0|            (yyvsp[0].sized_string)->length + sizeof(SIZED_STRING),
 4676|      0|            &ref);
 4677|       |
 4678|      0|        yr_free((yyvsp[0].sized_string));
 4679|       |
 4680|      0|        if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (4680:13): [True: 0, False: 0]
  ------------------
 4681|      0|          result = yr_parser_emit_with_arg_reloc(
 4682|      0|              yyscanner,
 4683|      0|              OP_PUSH,
  ------------------
  |  |   61|      0|#define OP_PUSH                       13
  ------------------
 4684|      0|              yr_arena_ref_to_ptr(compiler->arena, &ref),
 4685|      0|              NULL,
 4686|      0|              NULL);
 4687|       |
 4688|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4689|       |
 4690|      0|        (yyval.expression).type = EXPRESSION_TYPE_STRING;
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
 4691|      0|        (yyval.expression).value.sized_string_ref = ref;
 4692|      0|      }
 4693|      0|#line 4694 "libyara/grammar.c"
 4694|      0|    break;
 4695|       |
 4696|      0|  case 149: /* primary_expression: "string count" "<in>" range  */
  ------------------
  |  Branch (4696:3): [True: 0, False: 6]
  ------------------
 4697|      0|#line 2558 "libyara/grammar.y"
 4698|      0|      {
 4699|      0|        int result = yr_parser_reduce_string_identifier(
 4700|      0|            yyscanner, (yyvsp[-2].c_string), OP_COUNT_IN, YR_UNDEFINED);
  ------------------
  |  |  124|      0|#define OP_COUNT_IN                   76
  ------------------
                          yyscanner, (yyvsp[-2].c_string), OP_COUNT_IN, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4701|       |
 4702|      0|        yr_free((yyvsp[-2].c_string));
 4703|       |
 4704|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4705|       |
 4706|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4707|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4708|      0|      }
 4709|      0|#line 4710 "libyara/grammar.c"
 4710|      0|    break;
 4711|       |
 4712|      0|  case 150: /* primary_expression: "string count"  */
  ------------------
  |  Branch (4712:3): [True: 0, False: 6]
  ------------------
 4713|      0|#line 2570 "libyara/grammar.y"
 4714|      0|      {
 4715|      0|        int result = yr_parser_reduce_string_identifier(
 4716|      0|            yyscanner, (yyvsp[0].c_string), OP_COUNT, YR_UNDEFINED);
  ------------------
  |  |   68|      0|#define OP_COUNT                      20
  ------------------
                          yyscanner, (yyvsp[0].c_string), OP_COUNT, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4717|       |
 4718|      0|        yr_free((yyvsp[0].c_string));
 4719|       |
 4720|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4721|       |
 4722|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4723|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4724|      0|      }
 4725|      0|#line 4726 "libyara/grammar.c"
 4726|      0|    break;
 4727|       |
 4728|      0|  case 151: /* primary_expression: "string offset" '[' primary_expression ']'  */
  ------------------
  |  Branch (4728:3): [True: 0, False: 6]
  ------------------
 4729|      0|#line 2582 "libyara/grammar.y"
 4730|      0|      {
 4731|      0|        int result = yr_parser_reduce_string_identifier(
 4732|      0|            yyscanner, (yyvsp[-3].c_string), OP_OFFSET, YR_UNDEFINED);
  ------------------
  |  |   73|      0|#define OP_OFFSET                     25
  ------------------
                          yyscanner, (yyvsp[-3].c_string), OP_OFFSET, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4733|       |
 4734|      0|        yr_free((yyvsp[-3].c_string));
 4735|       |
 4736|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4737|       |
 4738|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4739|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4740|      0|      }
 4741|      0|#line 4742 "libyara/grammar.c"
 4742|      0|    break;
 4743|       |
 4744|      0|  case 152: /* primary_expression: "string offset"  */
  ------------------
  |  Branch (4744:3): [True: 0, False: 6]
  ------------------
 4745|      0|#line 2594 "libyara/grammar.y"
 4746|      0|      {
 4747|      0|        int result = yr_parser_emit_push_const(yyscanner, 1);
 4748|       |
 4749|      0|        if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (4749:13): [True: 0, False: 0]
  ------------------
 4750|      0|          result = yr_parser_reduce_string_identifier(
 4751|      0|              yyscanner, (yyvsp[0].c_string), OP_OFFSET, YR_UNDEFINED);
  ------------------
  |  |   73|      0|#define OP_OFFSET                     25
  ------------------
                            yyscanner, (yyvsp[0].c_string), OP_OFFSET, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4752|       |
 4753|      0|        yr_free((yyvsp[0].c_string));
 4754|       |
 4755|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4756|       |
 4757|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4758|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4759|      0|      }
 4760|      0|#line 4761 "libyara/grammar.c"
 4761|      0|    break;
 4762|       |
 4763|      0|  case 153: /* primary_expression: "string length" '[' primary_expression ']'  */
  ------------------
  |  Branch (4763:3): [True: 0, False: 6]
  ------------------
 4764|      0|#line 2609 "libyara/grammar.y"
 4765|      0|      {
 4766|      0|        int result = yr_parser_reduce_string_identifier(
 4767|      0|            yyscanner, (yyvsp[-3].c_string), OP_LENGTH, YR_UNDEFINED);
  ------------------
  |  |   69|      0|#define OP_LENGTH                     21
  ------------------
                          yyscanner, (yyvsp[-3].c_string), OP_LENGTH, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4768|       |
 4769|      0|        yr_free((yyvsp[-3].c_string));
 4770|       |
 4771|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4772|       |
 4773|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4774|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4775|      0|      }
 4776|      0|#line 4777 "libyara/grammar.c"
 4777|      0|    break;
 4778|       |
 4779|      0|  case 154: /* primary_expression: "string length"  */
  ------------------
  |  Branch (4779:3): [True: 0, False: 6]
  ------------------
 4780|      0|#line 2621 "libyara/grammar.y"
 4781|      0|      {
 4782|      0|        int result = yr_parser_emit_push_const(yyscanner, 1);
 4783|       |
 4784|      0|        if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (4784:13): [True: 0, False: 0]
  ------------------
 4785|      0|          result = yr_parser_reduce_string_identifier(
 4786|      0|              yyscanner, (yyvsp[0].c_string), OP_LENGTH, YR_UNDEFINED);
  ------------------
  |  |   69|      0|#define OP_LENGTH                     21
  ------------------
                            yyscanner, (yyvsp[0].c_string), OP_LENGTH, YR_UNDEFINED);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4787|       |
 4788|      0|        yr_free((yyvsp[0].c_string));
 4789|       |
 4790|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4791|       |
 4792|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4793|      0|        (yyval.expression).value.integer = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4794|      0|      }
 4795|      0|#line 4796 "libyara/grammar.c"
 4796|      0|    break;
 4797|       |
 4798|      0|  case 155: /* primary_expression: identifier  */
  ------------------
  |  Branch (4798:3): [True: 0, False: 6]
  ------------------
 4799|      0|#line 2636 "libyara/grammar.y"
 4800|      0|      {
 4801|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4802|       |
 4803|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_OBJECT)
  ------------------
  |  |   50|      0|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (4803:13): [True: 0, False: 0]
  ------------------
 4804|      0|        {
 4805|      0|          result = yr_parser_emit(
 4806|      0|              yyscanner, OP_OBJ_VALUE, NULL);
  ------------------
  |  |   65|      0|#define OP_OBJ_VALUE                  17
  ------------------
 4807|       |
 4808|      0|          switch((yyvsp[0].expression).value.object->type)
 4809|      0|          {
 4810|      0|            case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|      0|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (4810:13): [True: 0, False: 0]
  ------------------
 4811|      0|              (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4812|      0|              (yyval.expression).value.integer = (yyvsp[0].expression).value.object->value.i;
 4813|      0|              break;
 4814|      0|            case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (4814:13): [True: 0, False: 0]
  ------------------
 4815|      0|              (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4816|      0|              break;
 4817|      0|            case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|      0|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (4817:13): [True: 0, False: 0]
  ------------------
 4818|      0|              (yyval.expression).type = EXPRESSION_TYPE_STRING;
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
 4819|      0|              (yyval.expression).value.sized_string_ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      0|  (YR_ARENA_REF)           \
  |  |   44|      0|  {                        \
  |  |   45|      0|    UINT32_MAX, UINT32_MAX \
  |  |   46|      0|  }
  ------------------
 4820|      0|              break;
 4821|      0|            default:
  ------------------
  |  Branch (4821:13): [True: 0, False: 0]
  ------------------
 4822|       |              // In a primary expression any identifier that corresponds to an
 4823|       |              // object must be of type integer, float or string. If "foobar" is
 4824|       |              // either a function, structure, dictionary or array you can not
 4825|       |              // use it as:
 4826|       |              //   condition: foobar
 4827|      0|              yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  |  |  ------------------
  |  |  |  Branch (315:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4828|      0|                  compiler,
 4829|      0|                  "wrong usage of identifier \"%s\"",
 4830|      0|                  expression_identifier((yyvsp[0].expression)));
 4831|       |
 4832|      0|              result = ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 4833|      0|          }
 4834|      0|        }
 4835|      0|        else
 4836|      0|        {
 4837|      0|          (yyval.expression) = (yyvsp[0].expression);
 4838|      0|        }
 4839|       |
 4840|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4841|      0|      }
 4842|      0|#line 4843 "libyara/grammar.c"
 4843|      0|    break;
 4844|       |
 4845|      0|  case 156: /* primary_expression: '-' primary_expression  */
  ------------------
  |  Branch (4845:3): [True: 0, False: 6]
  ------------------
 4846|      0|#line 2679 "libyara/grammar.y"
 4847|      0|      {
 4848|      0|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 4849|       |
 4850|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER | EXPRESSION_TYPE_FLOAT, "-");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 4851|       |
 4852|      0|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4852:13): [True: 0, False: 0]
  ------------------
 4853|      0|        {
 4854|      0|          (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4855|      0|          (yyval.expression).value.integer = ((yyvsp[0].expression).value.integer == YR_UNDEFINED) ?
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (4855:46): [True: 0, False: 0]
  ------------------
 4856|      0|              YR_UNDEFINED : -((yyvsp[0].expression).value.integer);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 4857|      0|          result = yr_parser_emit(yyscanner, OP_INT_MINUS, NULL);
  ------------------
  |  |  152|      0|#define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  141|      0|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  139|      0|#define _OP_MINUS 10
  |  |  ------------------
  ------------------
 4858|      0|        }
 4859|      0|        else if ((yyvsp[0].expression).type == EXPRESSION_TYPE_FLOAT)
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (4859:18): [True: 0, False: 0]
  ------------------
 4860|      0|        {
 4861|      0|          (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4862|      0|          result = yr_parser_emit(yyscanner, OP_DBL_MINUS, NULL);
  ------------------
  |  |  166|      0|#define OP_DBL_MINUS (OP_DBL_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define OP_DBL_MINUS (OP_DBL_BEGIN + _OP_MINUS)
  |  |  ------------------
  |  |  |  |  139|      0|#define _OP_MINUS 10
  |  |  ------------------
  ------------------
 4863|      0|        }
 4864|       |
 4865|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4866|      0|      }
 4867|      0|#line 4868 "libyara/grammar.c"
 4868|      0|    break;
 4869|       |
 4870|      0|  case 157: /* primary_expression: primary_expression '+' primary_expression  */
  ------------------
  |  Branch (4870:3): [True: 0, False: 6]
  ------------------
 4871|      0|#line 2700 "libyara/grammar.y"
 4872|      0|      {
 4873|      0|        int result = yr_parser_reduce_operation(
 4874|      0|            yyscanner, "+", (yyvsp[-2].expression), (yyvsp[0].expression));
 4875|       |
 4876|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4876:13): [True: 0, False: 0]
  ------------------
 4877|      0|            (yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4877:13): [True: 0, False: 0]
  ------------------
 4878|      0|        {
 4879|      0|          int64_t i1 = (yyvsp[-2].expression).value.integer;
 4880|      0|          int64_t i2 = (yyvsp[0].expression).value.integer;
 4881|       |
 4882|      0|          if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
                        if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (4882:15): [True: 0, False: 0]
  |  Branch (4882:36): [True: 0, False: 0]
  ------------------
 4883|      0|              (
 4884|      0|                (i2 > 0 && i1 > INT64_MAX - i2) ||
  ------------------
  |  Branch (4884:18): [True: 0, False: 0]
  |  Branch (4884:28): [True: 0, False: 0]
  ------------------
 4885|      0|                (i2 < 0 && i1 < INT64_MIN - i2)
  ------------------
  |  Branch (4885:18): [True: 0, False: 0]
  |  Branch (4885:28): [True: 0, False: 0]
  ------------------
 4886|      0|              ))
 4887|      0|          {
 4888|      0|            yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4889|      0|                compiler, "%" PRId64 " + %" PRId64, i1, i2);
 4890|       |
 4891|      0|            result = ERROR_INTEGER_OVERFLOW;
  ------------------
  |  |   97|      0|#define ERROR_INTEGER_OVERFLOW               52
  ------------------
 4892|      0|          }
 4893|      0|          else
 4894|      0|          {
 4895|      0|            (yyval.expression).value.integer = OPERATION(+, i1, i2);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 4896|      0|            (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4897|      0|          }
 4898|      0|        }
 4899|      0|        else
 4900|      0|        {
 4901|      0|          (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4902|      0|        }
 4903|       |
 4904|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4905|      0|      }
 4906|      0|#line 4907 "libyara/grammar.c"
 4907|      0|    break;
 4908|       |
 4909|      0|  case 158: /* primary_expression: primary_expression '-' primary_expression  */
  ------------------
  |  Branch (4909:3): [True: 0, False: 6]
  ------------------
 4910|      0|#line 2735 "libyara/grammar.y"
 4911|      0|      {
 4912|      0|        int result = yr_parser_reduce_operation(
 4913|      0|            yyscanner, "-", (yyvsp[-2].expression), (yyvsp[0].expression));
 4914|       |
 4915|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4915:13): [True: 0, False: 0]
  ------------------
 4916|      0|            (yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4916:13): [True: 0, False: 0]
  ------------------
 4917|      0|        {
 4918|      0|          int64_t i1 = (yyvsp[-2].expression).value.integer;
 4919|      0|          int64_t i2 = (yyvsp[0].expression).value.integer;
 4920|       |
 4921|      0|          if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
                        if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (4921:15): [True: 0, False: 0]
  |  Branch (4921:36): [True: 0, False: 0]
  ------------------
 4922|      0|              (
 4923|      0|                (i2 < 0 && i1 > INT64_MAX + i2) ||
  ------------------
  |  Branch (4923:18): [True: 0, False: 0]
  |  Branch (4923:28): [True: 0, False: 0]
  ------------------
 4924|      0|                (i2 > 0 && i1 < INT64_MIN + i2)
  ------------------
  |  Branch (4924:18): [True: 0, False: 0]
  |  Branch (4924:28): [True: 0, False: 0]
  ------------------
 4925|      0|              ))
 4926|      0|          {
 4927|      0|            yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4928|      0|                compiler, "%" PRId64 " - %" PRId64, i1, i2);
 4929|       |
 4930|      0|            result = ERROR_INTEGER_OVERFLOW;
  ------------------
  |  |   97|      0|#define ERROR_INTEGER_OVERFLOW               52
  ------------------
 4931|      0|          }
 4932|      0|          else
 4933|      0|          {
 4934|      0|            (yyval.expression).value.integer = OPERATION(-, i1, i2);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 4935|      0|            (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4936|      0|          }
 4937|      0|        }
 4938|      0|        else
 4939|      0|        {
 4940|      0|          (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4941|      0|        }
 4942|       |
 4943|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4944|      0|      }
 4945|      0|#line 4946 "libyara/grammar.c"
 4946|      0|    break;
 4947|       |
 4948|      0|  case 159: /* primary_expression: primary_expression '*' primary_expression  */
  ------------------
  |  Branch (4948:3): [True: 0, False: 6]
  ------------------
 4949|      0|#line 2770 "libyara/grammar.y"
 4950|      0|      {
 4951|      0|        int result = yr_parser_reduce_operation(
 4952|      0|            yyscanner, "*", (yyvsp[-2].expression), (yyvsp[0].expression));
 4953|       |
 4954|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4954:13): [True: 0, False: 0]
  ------------------
 4955|      0|            (yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4955:13): [True: 0, False: 0]
  ------------------
 4956|      0|        {
 4957|      0|          int64_t i1 = (yyvsp[-2].expression).value.integer;
 4958|      0|          int64_t i2 = (yyvsp[0].expression).value.integer;
 4959|       |
 4960|      0|          if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
                        if (!IS_UNDEFINED(i1) && !IS_UNDEFINED(i2) &&
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (4960:15): [True: 0, False: 0]
  |  Branch (4960:36): [True: 0, False: 0]
  ------------------
 4961|      0|              (
 4962|      0|                i2 != 0 && llabs(i1) > INT64_MAX / llabs(i2)
  ------------------
  |  Branch (4962:17): [True: 0, False: 0]
  |  Branch (4962:28): [True: 0, False: 0]
  ------------------
 4963|      0|              ))
 4964|      0|          {
 4965|      0|            yr_compiler_set_error_extra_info_fmt(
  ------------------
  |  |  311|      0|  snprintf(                                                      \
  |  |  312|      0|      compiler->last_error_extra_info,                           \
  |  |  313|      0|      sizeof(compiler->last_error_extra_info),                   \
  |  |  314|      0|      fmt,                                                       \
  |  |  315|      0|      __VA_ARGS__);
  ------------------
 4966|      0|                compiler, "%" PRId64 " * %" PRId64, i1, i2);
 4967|       |
 4968|      0|            result = ERROR_INTEGER_OVERFLOW;
  ------------------
  |  |   97|      0|#define ERROR_INTEGER_OVERFLOW               52
  ------------------
 4969|      0|          }
 4970|      0|          else
 4971|      0|          {
 4972|      0|            (yyval.expression).value.integer = OPERATION(*, i1, i2);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 4973|      0|            (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4974|      0|          }
 4975|      0|        }
 4976|      0|        else
 4977|      0|        {
 4978|      0|          (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 4979|      0|        }
 4980|       |
 4981|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 4982|      0|      }
 4983|      0|#line 4984 "libyara/grammar.c"
 4984|      0|    break;
 4985|       |
 4986|      0|  case 160: /* primary_expression: primary_expression '\\' primary_expression  */
  ------------------
  |  Branch (4986:3): [True: 0, False: 6]
  ------------------
 4987|      0|#line 2804 "libyara/grammar.y"
 4988|      0|      {
 4989|      0|        int result = yr_parser_reduce_operation(
 4990|      0|            yyscanner, "\\", (yyvsp[-2].expression), (yyvsp[0].expression));
 4991|       |
 4992|      0|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4992:13): [True: 0, False: 0]
  ------------------
 4993|      0|            (yyvsp[0].expression).type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (4993:13): [True: 0, False: 0]
  ------------------
 4994|      0|        {
 4995|      0|          if ((yyvsp[0].expression).value.integer != 0)
  ------------------
  |  Branch (4995:15): [True: 0, False: 0]
  ------------------
 4996|      0|          {
 4997|      0|            (yyval.expression).value.integer = OPERATION(/, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 4998|      0|            (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4999|      0|          }
 5000|      0|          else
 5001|      0|          {
 5002|      0|            result = ERROR_DIVISION_BY_ZERO;
  ------------------
  |  |   89|      0|#define ERROR_DIVISION_BY_ZERO               44
  ------------------
 5003|      0|          }
 5004|      0|        }
 5005|      0|        else
 5006|      0|        {
 5007|      0|          (yyval.expression).type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 5008|      0|        }
 5009|       |
 5010|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5011|      0|      }
 5012|      0|#line 5013 "libyara/grammar.c"
 5013|      0|    break;
 5014|       |
 5015|      0|  case 161: /* primary_expression: primary_expression '%' primary_expression  */
  ------------------
  |  Branch (5015:3): [True: 0, False: 6]
  ------------------
 5016|      0|#line 2829 "libyara/grammar.y"
 5017|      0|      {
 5018|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, "%");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5019|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "%");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5020|       |
 5021|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_MOD, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5022|       |
 5023|      0|        if ((yyvsp[0].expression).value.integer != 0)
  ------------------
  |  Branch (5023:13): [True: 0, False: 0]
  ------------------
 5024|      0|        {
 5025|      0|          (yyval.expression).value.integer = OPERATION(%, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5026|      0|          (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5027|      0|        }
 5028|      0|        else
 5029|      0|        {
 5030|      0|          fail_if_error(ERROR_DIVISION_BY_ZERO);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [Folded - Ignored]
  |  |  |  Branch (135:31): [Folded - Ignored]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5031|      0|        }
 5032|      0|      }
 5033|      0|#line 5034 "libyara/grammar.c"
 5034|      0|    break;
 5035|       |
 5036|      0|  case 162: /* primary_expression: primary_expression '^' primary_expression  */
  ------------------
  |  Branch (5036:3): [True: 0, False: 6]
  ------------------
 5037|      0|#line 2846 "libyara/grammar.y"
 5038|      0|      {
 5039|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, "^");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5040|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "^");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5041|       |
 5042|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_BITWISE_XOR, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5043|       |
 5044|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5045|      0|        (yyval.expression).value.integer = OPERATION(^, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5046|      0|      }
 5047|      0|#line 5048 "libyara/grammar.c"
 5048|      0|    break;
 5049|       |
 5050|      0|  case 163: /* primary_expression: primary_expression '&' primary_expression  */
  ------------------
  |  Branch (5050:3): [True: 0, False: 6]
  ------------------
 5051|      0|#line 2856 "libyara/grammar.y"
 5052|      0|      {
 5053|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, "^");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5054|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "^");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5055|       |
 5056|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_BITWISE_AND, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5057|       |
 5058|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5059|      0|        (yyval.expression).value.integer = OPERATION(&, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5060|      0|      }
 5061|      0|#line 5062 "libyara/grammar.c"
 5062|      0|    break;
 5063|       |
 5064|      0|  case 164: /* primary_expression: primary_expression '|' primary_expression  */
  ------------------
  |  Branch (5064:3): [True: 0, False: 6]
  ------------------
 5065|      0|#line 2866 "libyara/grammar.y"
 5066|      0|      {
 5067|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, "|");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5068|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "|");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5069|       |
 5070|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_BITWISE_OR, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5071|       |
 5072|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5073|      0|        (yyval.expression).value.integer = OPERATION(|, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5074|      0|      }
 5075|      0|#line 5076 "libyara/grammar.c"
 5076|      0|    break;
 5077|       |
 5078|      0|  case 165: /* primary_expression: '~' primary_expression  */
  ------------------
  |  Branch (5078:3): [True: 0, False: 6]
  ------------------
 5079|      0|#line 2876 "libyara/grammar.y"
 5080|      0|      {
 5081|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "~");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5082|       |
 5083|      0|        fail_if_error(yr_parser_emit(yyscanner, OP_BITWISE_NOT, NULL));
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5084|       |
 5085|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5086|      0|        (yyval.expression).value.integer = ((yyvsp[0].expression).value.integer == YR_UNDEFINED) ?
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (5086:44): [True: 0, False: 0]
  ------------------
 5087|      0|            YR_UNDEFINED : ~((yyvsp[0].expression).value.integer);
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 5088|      0|      }
 5089|      0|#line 5090 "libyara/grammar.c"
 5090|      0|    break;
 5091|       |
 5092|      0|  case 166: /* primary_expression: primary_expression "<<" primary_expression  */
  ------------------
  |  Branch (5092:3): [True: 0, False: 6]
  ------------------
 5093|      0|#line 2886 "libyara/grammar.y"
 5094|      0|      {
 5095|      0|        int result;
 5096|       |
 5097|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, "<<");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5098|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, "<<");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5099|       |
 5100|      0|        result = yr_parser_emit(yyscanner, OP_SHL, NULL);
  ------------------
  |  |   56|      0|#define OP_SHL                        8
  ------------------
 5101|       |
 5102|      0|        if (!IS_UNDEFINED((yyvsp[0].expression).value.integer) && (yyvsp[0].expression).value.integer < 0)
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (5102:13): [True: 0, False: 0]
  |  Branch (5102:67): [True: 0, False: 0]
  ------------------
 5103|      0|          result = ERROR_INVALID_OPERAND;
  ------------------
  |  |   99|      0|#define ERROR_INVALID_OPERAND                54
  ------------------
 5104|      0|        else if (!IS_UNDEFINED((yyvsp[0].expression).value.integer) && (yyvsp[0].expression).value.integer >= 64)
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (5104:18): [True: 0, False: 0]
  |  Branch (5104:72): [True: 0, False: 0]
  ------------------
 5105|      0|          (yyval.expression).value.integer = 0;
 5106|      0|        else
 5107|      0|          (yyval.expression).value.integer = OPERATION(<<, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5108|       |
 5109|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5110|       |
 5111|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5112|      0|      }
 5113|      0|#line 5114 "libyara/grammar.c"
 5114|      0|    break;
 5115|       |
 5116|      0|  case 167: /* primary_expression: primary_expression ">>" primary_expression  */
  ------------------
  |  Branch (5116:3): [True: 0, False: 6]
  ------------------
 5117|      0|#line 2906 "libyara/grammar.y"
 5118|      0|      {
 5119|      0|        int result;
 5120|       |
 5121|      0|        check_type((yyvsp[-2].expression), EXPRESSION_TYPE_INTEGER, ">>");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5122|      0|        check_type((yyvsp[0].expression), EXPRESSION_TYPE_INTEGER, ">>");
  ------------------
  |  |  175|      0|    check_type_with_cleanup(expression, expected_type, op, )
  |  |  ------------------
  |  |  |  |  145|      0|    if (((expression.type) & (expected_type)) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  146|      0|    { \
  |  |  |  |  147|      0|      switch(expression.type) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (147:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  148|      0|      { \
  |  |  |  |  149|      0|        case EXPRESSION_TYPE_INTEGER: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  150|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  151|      0|              compiler, "wrong type \"integer\" for " op " operator"); \
  |  |  |  |  152|      0|          break; \
  |  |  |  |  153|      0|        case EXPRESSION_TYPE_FLOAT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  155|      0|              compiler, "wrong type \"float\" for " op " operator"); \
  |  |  |  |  156|      0|          break; \
  |  |  |  |  157|      0|        case EXPRESSION_TYPE_STRING: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (157:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  158|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  159|      0|              compiler, "wrong type \"string\" for " op " operator"); \
  |  |  |  |  160|      0|          break; \
  |  |  |  |  161|      0|        case EXPRESSION_TYPE_BOOLEAN: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define EXPRESSION_TYPE_BOOLEAN    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (161:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  162|      0|          yr_compiler_set_error_extra_info( \
  |  |  |  |  ------------------
  |  |  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  |  |  ------------------
  |  |  |  |  163|      0|              compiler, "wrong type \"boolean\" for " op " operator"); \
  |  |  |  |  164|      0|          break; \
  |  |  |  |  165|      0|      } \
  |  |  |  |  166|      0|      cleanup; \
  |  |  |  |  167|      0|      compiler->last_error = ERROR_WRONG_TYPE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  |  |  |  |  ------------------
  |  |  |  |  168|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  169|      0|      YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  170|      0|    }
  |  |  ------------------
  ------------------
 5123|       |
 5124|      0|        result = yr_parser_emit(yyscanner, OP_SHR, NULL);
  ------------------
  |  |   57|      0|#define OP_SHR                        9
  ------------------
 5125|       |
 5126|      0|        if (!IS_UNDEFINED((yyvsp[0].expression).value.integer) && (yyvsp[0].expression).value.integer < 0)
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (5126:13): [True: 0, False: 0]
  |  Branch (5126:67): [True: 0, False: 0]
  ------------------
 5127|      0|          result = ERROR_INVALID_OPERAND;
  ------------------
  |  |   99|      0|#define ERROR_INVALID_OPERAND                54
  ------------------
 5128|      0|        else if (!IS_UNDEFINED((yyvsp[0].expression).value.integer) && (yyvsp[0].expression).value.integer >= 64)
  ------------------
  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
  |  Branch (5128:18): [True: 0, False: 0]
  |  Branch (5128:72): [True: 0, False: 0]
  ------------------
 5129|      0|          (yyval.expression).value.integer = 0;
 5130|      0|        else
 5131|      0|          (yyval.expression).value.integer = OPERATION(<<, (yyvsp[-2].expression).value.integer, (yyvsp[0].expression).value.integer);
  ------------------
  |  |  197|      0|  (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   39|      0|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (YR_UNDEFINED) : (op1 operator op2)
  |  |  ------------------
  |  |  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  ------------------
 5132|       |
 5133|      0|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      0|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 5134|       |
 5135|      0|        fail_if_error(result);
  ------------------
  |  |  135|      0|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      0|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 0]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|      fail_with_error(e); \
  |  |  ------------------
  |  |  |  |  120|      0|    { \
  |  |  |  |  121|      0|      compiler->last_error = e; \
  |  |  |  |  122|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  123|      0|      switch (e) \
  |  |  |  |  124|      0|      { \
  |  |  |  |  125|      0|      case ERROR_INSUFFICIENT_MEMORY: \
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  126|      0|        YYABORT; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1310|      0|#define YYABORT         goto yyabortlab
  |  |  |  |  ------------------
  |  |  |  |  127|      0|      default: \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|        YYERROR; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  |  |  |  |  ------------------
  |  |  |  |  129|      0|      } \
  |  |  |  |  130|      0|    }
  |  |  ------------------
  |  |  138|      0|    }
  ------------------
 5136|      0|      }
 5137|      0|#line 5138 "libyara/grammar.c"
 5138|      0|    break;
 5139|       |
 5140|      0|  case 168: /* primary_expression: regexp  */
  ------------------
  |  Branch (5140:3): [True: 0, False: 6]
  ------------------
 5141|      0|#line 2926 "libyara/grammar.y"
 5142|      0|      {
 5143|      0|        (yyval.expression) = (yyvsp[0].expression);
 5144|      0|      }
 5145|      0|#line 5146 "libyara/grammar.c"
 5146|      0|    break;
 5147|       |
 5148|       |
 5149|      0|#line 5150 "libyara/grammar.c"
 5150|       |
 5151|      4|      default: break;
  ------------------
  |  Branch (5151:7): [True: 4, False: 2]
  ------------------
 5152|      6|    }
 5153|       |  /* User semantic actions sometimes alter yychar, and that requires
 5154|       |     that yytoken be updated with the new translation.  We take the
 5155|       |     approach of translating immediately before every use of yytoken.
 5156|       |     One alternative is translating here after every semantic action,
 5157|       |     but that translation would be missed if the semantic action invokes
 5158|       |     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
 5159|       |     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
 5160|       |     incorrect destructor might then be invoked immediately.  In the
 5161|       |     case of YYERROR or YYBACKUP, subsequent parser actions might lead
 5162|       |     to an incorrect destructor call or verbose syntax error message
 5163|       |     before the lookahead is translated.  */
 5164|      6|  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 5165|       |
 5166|      6|  YYPOPSTACK (yylen);
  ------------------
  |  | 1929|      6|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5167|      6|  yylen = 0;
 5168|       |
 5169|      6|  *++yyvsp = yyval;
 5170|       |
 5171|       |  /* Now 'shift' the result of the reduction.  Determine what state
 5172|       |     that goes to, based on the state we popped back to and the rule
 5173|       |     number reduced by.  */
 5174|      6|  {
 5175|      6|    const int yylhs = yyr1[yyn] - YYNTOKENS;
  ------------------
  |  |  884|      6|#define YYNTOKENS  84
  ------------------
 5176|      6|    const int yyi = yypgoto[yylhs] + *yyssp;
 5177|      6|    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
  ------------------
  |  |  881|      8|#define YYLAST   476
  ------------------
  |  Branch (5177:16): [True: 2, False: 4]
  |  Branch (5177:28): [True: 2, False: 0]
  |  Branch (5177:45): [True: 0, False: 2]
  ------------------
 5178|      6|               ? yytable[yyi]
 5179|      6|               : yydefgoto[yylhs]);
 5180|      6|  }
 5181|       |
 5182|      6|  goto yynewstate;
 5183|       |
 5184|       |
 5185|       |/*--------------------------------------.
 5186|       || yyerrlab -- here on detecting error.  |
 5187|       |`--------------------------------------*/
 5188|      0|yyerrlab:
 5189|       |  /* Make sure we have latest lookahead translation.  See comments at
 5190|       |     user semantic actions for why this is necessary.  */
 5191|      0|  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  |   52|      0|#define yychar       yara_yychar
  ------------------
                yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  |  312|      0|#define YYEMPTY -2
  ------------------
                yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  |  899|      0|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  |  893|      0|#define YYMAXUTOK   319
  |  |  ------------------
  |  |  |  Branch (899:4): [True: 0, False: 0]
  |  |  |  Branch (899:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  900|      0|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  |  901|      0|   : YYSYMBOL_YYUNDEF)
  ------------------
  |  Branch (5191:13): [True: 0, False: 0]
  ------------------
 5192|       |  /* If not already recovering from an error, report this error.  */
 5193|      0|  if (!yyerrstatus)
  ------------------
  |  Branch (5193:7): [True: 0, False: 0]
  ------------------
 5194|      0|    {
 5195|      0|      ++yynerrs;
  ------------------
  |  |   54|      0|#define yynerrs      yara_yynerrs
  ------------------
 5196|      0|      {
 5197|      0|        yypcontext_t yyctx
 5198|      0|          = {yyssp, yytoken};
 5199|      0|        char const *yymsgp = YY_("syntax error");
  ------------------
  |  |  683|      0|#  define YY_(Msgid) Msgid
  ------------------
 5200|      0|        int yysyntax_error_status;
 5201|      0|        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
 5202|      0|        if (yysyntax_error_status == 0)
  ------------------
  |  Branch (5202:13): [True: 0, False: 0]
  ------------------
 5203|      0|          yymsgp = yymsg;
 5204|      0|        else if (yysyntax_error_status == -1)
  ------------------
  |  Branch (5204:18): [True: 0, False: 0]
  ------------------
 5205|      0|          {
 5206|      0|            if (yymsg != yymsgbuf)
  ------------------
  |  Branch (5206:17): [True: 0, False: 0]
  ------------------
 5207|      0|              YYSTACK_FREE (yymsg);
  ------------------
  |  |  791|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  106|      0|#define YYFREE yr_free
  |  |  ------------------
  ------------------
 5208|      0|            yymsg = YY_CAST (char *,
  ------------------
  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 5209|      0|                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
 5210|      0|            if (yymsg)
  ------------------
  |  Branch (5210:17): [True: 0, False: 0]
  ------------------
 5211|      0|              {
 5212|      0|                yysyntax_error_status
 5213|      0|                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
 5214|      0|                yymsgp = yymsg;
 5215|      0|              }
 5216|      0|            else
 5217|      0|              {
 5218|      0|                yymsg = yymsgbuf;
 5219|      0|                yymsg_alloc = sizeof yymsgbuf;
 5220|      0|                yysyntax_error_status = YYENOMEM;
 5221|      0|              }
 5222|      0|          }
 5223|      0|        yyerror (yyscanner, compiler, yymsgp);
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
 5224|      0|        if (yysyntax_error_status == YYENOMEM)
  ------------------
  |  Branch (5224:13): [True: 0, False: 0]
  ------------------
 5225|      0|          YYNOMEM;
  ------------------
  |  | 1312|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
 5226|      0|      }
 5227|      0|    }
 5228|       |
 5229|      0|  if (yyerrstatus == 3)
  ------------------
  |  Branch (5229:7): [True: 0, False: 0]
  ------------------
 5230|      0|    {
 5231|       |      /* If just tried and failed to reuse lookahead token after an
 5232|       |         error, discard it.  */
 5233|       |
 5234|      0|      if (yychar <= _END_OF_FILE_)
  ------------------
  |  |   52|      0|#define yychar       yara_yychar
  ------------------
                    if (yychar <= _END_OF_FILE_)
  ------------------
  |  |  313|      0|#define _END_OF_FILE_ 0
  ------------------
  |  Branch (5234:11): [True: 0, False: 0]
  ------------------
 5235|      0|        {
 5236|       |          /* Return failure if at end of input.  */
 5237|      0|          if (yychar == _END_OF_FILE_)
  ------------------
  |  |   52|      0|#define yychar       yara_yychar
  ------------------
                        if (yychar == _END_OF_FILE_)
  ------------------
  |  |  313|      0|#define _END_OF_FILE_ 0
  ------------------
  |  Branch (5237:15): [True: 0, False: 0]
  ------------------
 5238|      0|            YYABORT;
  ------------------
  |  | 1310|      0|#define YYABORT         goto yyabortlab
  ------------------
 5239|      0|        }
 5240|      0|      else
 5241|      0|        {
 5242|      0|          yydestruct ("Error: discarding",
 5243|      0|                      yytoken, &yylval, yyscanner, compiler);
 5244|      0|          yychar = YYEMPTY;
  ------------------
  |  |   52|      0|#define yychar       yara_yychar
  ------------------
                        yychar = YYEMPTY;
  ------------------
  |  |  312|      0|#define YYEMPTY -2
  ------------------
 5245|      0|        }
 5246|      0|    }
 5247|       |
 5248|       |  /* Else will try to reuse lookahead token after shifting the error
 5249|       |     token.  */
 5250|      0|  goto yyerrlab1;
 5251|       |
 5252|       |
 5253|       |/*---------------------------------------------------.
 5254|       || yyerrorlab -- error raised explicitly by YYERROR.  |
 5255|       |`---------------------------------------------------*/
 5256|      0|yyerrorlab:
 5257|       |  /* Pacify compilers when the user code never invokes YYERROR and the
 5258|       |     label yyerrorlab therefore never appears in user code.  */
 5259|      0|  if (0)
  ------------------
  |  Branch (5259:7): [Folded - Ignored]
  ------------------
 5260|      0|    YYERROR;
  ------------------
  |  | 1311|      0|#define YYERROR         goto yyerrorlab
  ------------------
 5261|      0|  ++yynerrs;
  ------------------
  |  |   54|      0|#define yynerrs      yara_yynerrs
  ------------------
 5262|       |
 5263|       |  /* Do not reclaim the symbols of the rule whose action triggered
 5264|       |     this YYERROR.  */
 5265|      0|  YYPOPSTACK (yylen);
  ------------------
  |  | 1929|      0|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5266|      0|  yylen = 0;
 5267|      0|  YY_STACK_PRINT (yyss, yyssp);
 5268|      0|  yystate = *yyssp;
 5269|      0|  goto yyerrlab1;
 5270|       |
 5271|       |
 5272|       |/*-------------------------------------------------------------.
 5273|       || yyerrlab1 -- common code for both syntax error and YYERROR.  |
 5274|       |`-------------------------------------------------------------*/
 5275|      0|yyerrlab1:
 5276|      0|  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 5277|       |
 5278|       |  /* Pop stack until we find a state that shifts the error token.  */
 5279|      0|  for (;;)
 5280|      0|    {
 5281|      0|      yyn = yypact[yystate];
 5282|      0|      if (!yypact_value_is_default (yyn))
  ------------------
  |  | 1020|      0|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  | 1017|      0|#define YYPACT_NINF (-172)
  |  |  ------------------
  ------------------
  |  Branch (5282:11): [True: 0, False: 0]
  ------------------
 5283|      0|        {
 5284|      0|          yyn += YYSYMBOL_YYerror;
 5285|      0|          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
  ------------------
  |  |  881|      0|#define YYLAST   476
  ------------------
  |  Branch (5285:15): [True: 0, False: 0]
  |  Branch (5285:27): [True: 0, False: 0]
  |  Branch (5285:44): [True: 0, False: 0]
  ------------------
 5286|      0|            {
 5287|      0|              yyn = yytable[yyn];
 5288|      0|              if (0 < yyn)
  ------------------
  |  Branch (5288:19): [True: 0, False: 0]
  ------------------
 5289|      0|                break;
 5290|      0|            }
 5291|      0|        }
 5292|       |
 5293|       |      /* Pop the current state because it cannot handle the error token.  */
 5294|      0|      if (yyssp == yyss)
  ------------------
  |  Branch (5294:11): [True: 0, False: 0]
  ------------------
 5295|      0|        YYABORT;
  ------------------
  |  | 1310|      0|#define YYABORT         goto yyabortlab
  ------------------
 5296|       |
 5297|       |
 5298|      0|      yydestruct ("Error: popping",
 5299|      0|                  YY_ACCESSING_SYMBOL (yystate), yyvsp, yyscanner, compiler);
  ------------------
  |  |  966|      0|#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
  |  |  ------------------
  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
 5300|      0|      YYPOPSTACK (1);
  ------------------
  |  | 1929|      0|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5301|      0|      yystate = *yyssp;
 5302|      0|      YY_STACK_PRINT (yyss, yyssp);
 5303|      0|    }
 5304|       |
 5305|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 5306|      0|  *++yyvsp = yylval;
 5307|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 5308|       |
 5309|       |
 5310|       |  /* Shift the error token.  */
 5311|      0|  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 5312|       |
 5313|      0|  yystate = yyn;
 5314|      0|  goto yynewstate;
 5315|       |
 5316|       |
 5317|       |/*-------------------------------------.
 5318|       || yyacceptlab -- YYACCEPT comes here.  |
 5319|       |`-------------------------------------*/
 5320|      2|yyacceptlab:
 5321|      2|  yyresult = 0;
 5322|      2|  goto yyreturnlab;
 5323|       |
 5324|       |
 5325|       |/*-----------------------------------.
 5326|       || yyabortlab -- YYABORT comes here.  |
 5327|       |`-----------------------------------*/
 5328|      0|yyabortlab:
 5329|      0|  yyresult = 1;
 5330|      0|  goto yyreturnlab;
 5331|       |
 5332|       |
 5333|       |/*-----------------------------------------------------------.
 5334|       || yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
 5335|       |`-----------------------------------------------------------*/
 5336|      0|yyexhaustedlab:
 5337|      0|  yyerror (yyscanner, compiler, YY_("memory exhausted"));
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
                yyerror (yyscanner, compiler, YY_("memory exhausted"));
  ------------------
  |  |  683|      0|#  define YY_(Msgid) Msgid
  ------------------
 5338|      0|  yyresult = 2;
 5339|      0|  goto yyreturnlab;
 5340|       |
 5341|       |
 5342|       |/*----------------------------------------------------------.
 5343|       || yyreturnlab -- parsing is finished, clean up and return.  |
 5344|       |`----------------------------------------------------------*/
 5345|      2|yyreturnlab:
 5346|      2|  if (yychar != YYEMPTY)
  ------------------
  |  |   52|      2|#define yychar       yara_yychar
  ------------------
                if (yychar != YYEMPTY)
  ------------------
  |  |  312|      2|#define YYEMPTY -2
  ------------------
  |  Branch (5346:7): [True: 0, False: 2]
  ------------------
 5347|      0|    {
 5348|       |      /* Make sure we have latest lookahead translation.  See comments at
 5349|       |         user semantic actions for why this is necessary.  */
 5350|      0|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  899|      0|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  |  893|      0|#define YYMAXUTOK   319
  |  |  ------------------
  |  |  |  Branch (899:4): [True: 0, False: 0]
  |  |  |  Branch (899:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  900|      0|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  |  210|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  |  901|      0|   : YYSYMBOL_YYUNDEF)
  ------------------
 5351|      0|      yydestruct ("Cleanup: discarding lookahead",
 5352|      0|                  yytoken, &yylval, yyscanner, compiler);
 5353|      0|    }
 5354|       |  /* Do not reclaim the symbols of the rule whose action triggered
 5355|       |     this YYABORT or YYACCEPT.  */
 5356|      2|  YYPOPSTACK (yylen);
  ------------------
  |  | 1929|      2|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5357|      2|  YY_STACK_PRINT (yyss, yyssp);
 5358|      6|  while (yyssp != yyss)
  ------------------
  |  Branch (5358:10): [True: 4, False: 2]
  ------------------
 5359|      4|    {
 5360|      4|      yydestruct ("Cleanup: popping",
 5361|      4|                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yyscanner, compiler);
  ------------------
  |  |  966|      4|#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
  |  |  ------------------
  |  |  |  |  210|      4|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
 5362|      4|      YYPOPSTACK (1);
  ------------------
  |  | 1929|      4|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5363|      4|    }
 5364|      2|#ifndef yyoverflow
 5365|      2|  if (yyss != yyssa)
  ------------------
  |  Branch (5365:7): [True: 0, False: 2]
  ------------------
 5366|      0|    YYSTACK_FREE (yyss);
  ------------------
  |  |  791|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  106|      0|#define YYFREE yr_free
  |  |  ------------------
  ------------------
 5367|      2|#endif
 5368|      2|  if (yymsg != yymsgbuf)
  ------------------
  |  Branch (5368:7): [True: 0, False: 2]
  ------------------
 5369|      0|    YYSTACK_FREE (yymsg);
  ------------------
  |  |  791|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  106|      0|#define YYFREE yr_free
  |  |  ------------------
  ------------------
 5370|      2|  return yyresult;
 5371|      0|}
grammar.c:yydestruct:
 1763|      4|{
 1764|      4|  YY_USE (yyvaluep);
  ------------------
  |  |  706|      4|# define YY_USE(E) ((void) (E))
  ------------------
 1765|      4|  YY_USE (yyscanner);
  ------------------
  |  |  706|      4|# define YY_USE(E) ((void) (E))
  ------------------
 1766|      4|  YY_USE (compiler);
  ------------------
  |  |  706|      4|# define YY_USE(E) ((void) (E))
  ------------------
 1767|      4|  if (!yymsg)
  ------------------
  |  Branch (1767:7): [True: 0, False: 4]
  ------------------
 1768|      0|    yymsg = "Deleting";
 1769|      4|  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 1770|       |
 1771|      4|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 1772|      4|  switch (yykind)
 1773|      4|    {
 1774|      0|    case YYSYMBOL__IDENTIFIER_: /* "identifier"  */
  ------------------
  |  Branch (1774:5): [True: 0, False: 4]
  ------------------
 1775|      0|#line 312 "libyara/grammar.y"
 1776|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1777|      0|#line 1778 "libyara/grammar.c"
 1778|      0|        break;
 1779|       |
 1780|      0|    case YYSYMBOL__STRING_IDENTIFIER_: /* "string identifier"  */
  ------------------
  |  Branch (1780:5): [True: 0, False: 4]
  ------------------
 1781|      0|#line 316 "libyara/grammar.y"
 1782|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1783|      0|#line 1784 "libyara/grammar.c"
 1784|      0|        break;
 1785|       |
 1786|      0|    case YYSYMBOL__STRING_COUNT_: /* "string count"  */
  ------------------
  |  Branch (1786:5): [True: 0, False: 4]
  ------------------
 1787|      0|#line 313 "libyara/grammar.y"
 1788|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1789|      0|#line 1790 "libyara/grammar.c"
 1790|      0|        break;
 1791|       |
 1792|      0|    case YYSYMBOL__STRING_OFFSET_: /* "string offset"  */
  ------------------
  |  Branch (1792:5): [True: 0, False: 4]
  ------------------
 1793|      0|#line 314 "libyara/grammar.y"
 1794|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1795|      0|#line 1796 "libyara/grammar.c"
 1796|      0|        break;
 1797|       |
 1798|      0|    case YYSYMBOL__STRING_LENGTH_: /* "string length"  */
  ------------------
  |  Branch (1798:5): [True: 0, False: 4]
  ------------------
 1799|      0|#line 315 "libyara/grammar.y"
 1800|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1801|      0|#line 1802 "libyara/grammar.c"
 1802|      0|        break;
 1803|       |
 1804|      0|    case YYSYMBOL__STRING_IDENTIFIER_WITH_WILDCARD_: /* "string identifier with wildcard"  */
  ------------------
  |  Branch (1804:5): [True: 0, False: 4]
  ------------------
 1805|      0|#line 317 "libyara/grammar.y"
 1806|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1807|      0|#line 1808 "libyara/grammar.c"
 1808|      0|        break;
 1809|       |
 1810|      0|    case YYSYMBOL__TEXT_STRING_: /* "text string"  */
  ------------------
  |  Branch (1810:5): [True: 0, False: 4]
  ------------------
 1811|      0|#line 318 "libyara/grammar.y"
 1812|      0|            { yr_free(((*yyvaluep).sized_string)); ((*yyvaluep).sized_string) = NULL; }
 1813|      0|#line 1814 "libyara/grammar.c"
 1814|      0|        break;
 1815|       |
 1816|      0|    case YYSYMBOL__HEX_STRING_: /* "hex string"  */
  ------------------
  |  Branch (1816:5): [True: 0, False: 4]
  ------------------
 1817|      0|#line 319 "libyara/grammar.y"
 1818|      0|            { yr_free(((*yyvaluep).sized_string)); ((*yyvaluep).sized_string) = NULL; }
 1819|      0|#line 1820 "libyara/grammar.c"
 1820|      0|        break;
 1821|       |
 1822|      0|    case YYSYMBOL__REGEXP_: /* "regular expression"  */
  ------------------
  |  Branch (1822:5): [True: 0, False: 4]
  ------------------
 1823|      0|#line 320 "libyara/grammar.y"
 1824|      0|            { yr_free(((*yyvaluep).sized_string)); ((*yyvaluep).sized_string) = NULL; }
 1825|      0|#line 1826 "libyara/grammar.c"
 1826|      0|        break;
 1827|       |
 1828|      0|    case YYSYMBOL_string_modifiers: /* string_modifiers  */
  ------------------
  |  Branch (1828:5): [True: 0, False: 4]
  ------------------
 1829|      0|#line 333 "libyara/grammar.y"
 1830|      0|            {
 1831|      0|  if (((*yyvaluep).modifier).alphabet != NULL)
  ------------------
  |  Branch (1831:7): [True: 0, False: 0]
  ------------------
 1832|      0|  {
 1833|      0|    yr_free(((*yyvaluep).modifier).alphabet);
 1834|      0|    ((*yyvaluep).modifier).alphabet = NULL;
 1835|      0|  }
 1836|      0|}
 1837|      0|#line 1838 "libyara/grammar.c"
 1838|      0|        break;
 1839|       |
 1840|      0|    case YYSYMBOL_string_modifier: /* string_modifier  */
  ------------------
  |  Branch (1840:5): [True: 0, False: 4]
  ------------------
 1841|      0|#line 325 "libyara/grammar.y"
 1842|      0|            {
 1843|      0|  if (((*yyvaluep).modifier).alphabet != NULL)
  ------------------
  |  Branch (1843:7): [True: 0, False: 0]
  ------------------
 1844|      0|  {
 1845|      0|    yr_free(((*yyvaluep).modifier).alphabet);
 1846|      0|    ((*yyvaluep).modifier).alphabet = NULL;
 1847|      0|  }
 1848|      0|}
 1849|      0|#line 1850 "libyara/grammar.c"
 1850|      0|        break;
 1851|       |
 1852|      0|    case YYSYMBOL_arguments: /* arguments  */
  ------------------
  |  Branch (1852:5): [True: 0, False: 4]
  ------------------
 1853|      0|#line 322 "libyara/grammar.y"
 1854|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1855|      0|#line 1856 "libyara/grammar.c"
 1856|      0|        break;
 1857|       |
 1858|      0|    case YYSYMBOL_arguments_list: /* arguments_list  */
  ------------------
  |  Branch (1858:5): [True: 0, False: 4]
  ------------------
 1859|      0|#line 323 "libyara/grammar.y"
 1860|      0|            { yr_free(((*yyvaluep).c_string)); ((*yyvaluep).c_string) = NULL; }
 1861|      0|#line 1862 "libyara/grammar.c"
 1862|      0|        break;
 1863|       |
 1864|      4|      default:
  ------------------
  |  Branch (1864:7): [True: 4, False: 0]
  ------------------
 1865|      4|        break;
 1866|      4|    }
 1867|      4|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 1868|      4|}

yr_hash:
   94|  36.0k|{
   95|  36.0k|  const uint8_t* b = (uint8_t*) buffer;
   96|       |
   97|  36.0k|  uint32_t result = seed;
   98|  36.0k|  size_t i;
   99|       |
  100|  36.0k|  if (len == 0)
  ------------------
  |  Branch (100:7): [True: 0, False: 36.0k]
  ------------------
  101|      0|    return result;
  102|       |
  103|   149k|  for (i = len - 1; i > 0; i--)
  ------------------
  |  Branch (103:21): [True: 113k, False: 36.0k]
  ------------------
  104|   113k|  {
  105|   113k|    result ^= ROTATE_INT32(byte_to_int32[*b], i);
  ------------------
  |  |   46|   113k|#define ROTATE_INT32(x, shift) rotl32(x, shift % 32)
  ------------------
  106|   113k|    b++;
  107|   113k|  }
  108|       |
  109|  36.0k|  result ^= byte_to_int32[*b];
  110|  36.0k|  return result;
  111|  36.0k|}
yr_hash_table_create:
  178|  2.77k|{
  179|  2.77k|  YR_HASH_TABLE* new_table;
  180|  2.77k|  int i;
  181|       |
  182|  2.77k|  new_table = (YR_HASH_TABLE*) yr_malloc(
  183|  2.77k|      sizeof(YR_HASH_TABLE) + size * sizeof(YR_HASH_TABLE_ENTRY*));
  184|       |
  185|  2.77k|  if (new_table == NULL)
  ------------------
  |  Branch (185:7): [True: 0, False: 2.77k]
  ------------------
  186|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  187|       |
  188|  2.77k|  new_table->size = size;
  189|       |
  190|   233k|  for (i = 0; i < size; i++) new_table->buckets[i] = NULL;
  ------------------
  |  Branch (190:15): [True: 231k, False: 2.77k]
  ------------------
  191|       |
  192|  2.77k|  *table = new_table;
  193|       |
  194|  2.77k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  ------------------
  195|  2.77k|}
yr_hash_table_clean:
  200|  2.77k|{
  201|  2.77k|  YR_HASH_TABLE_ENTRY* entry;
  202|  2.77k|  YR_HASH_TABLE_ENTRY* next_entry;
  203|       |
  204|  2.77k|  int i;
  205|       |
  206|  2.77k|  if (table == NULL)
  ------------------
  |  Branch (206:7): [True: 0, False: 2.77k]
  ------------------
  207|      0|    return;
  208|       |
  209|   233k|  for (i = 0; i < table->size; i++)
  ------------------
  |  Branch (209:15): [True: 231k, False: 2.77k]
  ------------------
  210|   231k|  {
  211|   231k|    entry = table->buckets[i];
  212|       |
  213|   231k|    while (entry != NULL)
  ------------------
  |  Branch (213:12): [True: 6, False: 231k]
  ------------------
  214|      6|    {
  215|      6|      next_entry = entry->next;
  216|       |
  217|      6|      if (free_value != NULL)
  ------------------
  |  Branch (217:11): [True: 2, False: 4]
  ------------------
  218|      2|        free_value(entry->value);
  219|       |
  220|      6|      if (entry->ns != NULL)
  ------------------
  |  Branch (220:11): [True: 2, False: 4]
  ------------------
  221|      2|        yr_free(entry->ns);
  222|       |
  223|      6|      yr_free(entry->key);
  224|      6|      yr_free(entry);
  225|       |
  226|      6|      entry = next_entry;
  227|      6|    }
  228|       |
  229|   231k|    table->buckets[i] = NULL;
  230|   231k|  }
  231|  2.77k|}
yr_hash_table_destroy:
  236|  2.77k|{
  237|  2.77k|  yr_hash_table_clean(table, free_value);
  238|  2.77k|  yr_free(table);
  239|  2.77k|}
yr_hash_table_lookup_raw_key:
  278|  2.77k|{
  279|  2.77k|  return _yr_hash_table_lookup(table, key, key_length, ns, false);
  280|  2.77k|}
yr_hash_table_remove_raw_key:
  287|  30.4k|{
  288|  30.4k|  return _yr_hash_table_lookup(table, key, key_length, ns, true);
  289|  30.4k|}
yr_hash_table_add_raw_key:
  297|  2.77k|{
  298|  2.77k|  YR_HASH_TABLE_ENTRY* entry;
  299|  2.77k|  uint32_t bucket_index;
  300|       |
  301|  2.77k|  entry = (YR_HASH_TABLE_ENTRY*) yr_malloc(sizeof(YR_HASH_TABLE_ENTRY));
  302|       |
  303|  2.77k|  if (entry == NULL)
  ------------------
  |  Branch (303:7): [True: 0, False: 2.77k]
  ------------------
  304|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  305|       |
  306|  2.77k|  entry->key = yr_malloc(key_length);
  307|       |
  308|  2.77k|  if (entry->key == NULL)
  ------------------
  |  Branch (308:7): [True: 0, False: 2.77k]
  ------------------
  309|      0|  {
  310|      0|    yr_free(entry);
  311|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  312|      0|  }
  313|       |
  314|  2.77k|  if (ns != NULL)
  ------------------
  |  Branch (314:7): [True: 2, False: 2.77k]
  ------------------
  315|      2|  {
  316|      2|    entry->ns = yr_strdup(ns);
  317|       |
  318|      2|    if (entry->ns == NULL)
  ------------------
  |  Branch (318:9): [True: 0, False: 2]
  ------------------
  319|      0|    {
  320|      0|      yr_free(entry->key);
  321|      0|      yr_free(entry);
  322|       |
  323|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  324|      0|    }
  325|      2|  }
  326|  2.77k|  else
  327|  2.77k|  {
  328|  2.77k|    entry->ns = NULL;
  329|  2.77k|  }
  330|       |
  331|  2.77k|  entry->key_length = key_length;
  332|  2.77k|  entry->value = value;
  333|       |
  334|  2.77k|  memcpy(entry->key, key, key_length);
  335|       |
  336|  2.77k|  bucket_index = yr_hash(0, key, key_length);
  337|       |
  338|  2.77k|  if (ns != NULL)
  ------------------
  |  Branch (338:7): [True: 2, False: 2.77k]
  ------------------
  339|      2|    bucket_index = yr_hash(bucket_index, (uint8_t*) ns, strlen(ns));
  340|       |
  341|  2.77k|  bucket_index = bucket_index % table->size;
  342|       |
  343|  2.77k|  entry->next = table->buckets[bucket_index];
  344|  2.77k|  table->buckets[bucket_index] = entry;
  345|       |
  346|  2.77k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  ------------------
  347|  2.77k|}
yr_hash_table_lookup:
  353|  2.77k|{
  354|  2.77k|  return yr_hash_table_lookup_raw_key(table, (void*) key, strlen(key), ns);
  355|  2.77k|}
yr_hash_table_remove:
  361|  30.4k|{
  362|  30.4k|  return yr_hash_table_remove_raw_key(table, (void*) key, strlen(key), ns);
  363|  30.4k|}
yr_hash_table_add:
  370|  2.77k|{
  371|  2.77k|  return yr_hash_table_add_raw_key(table, (void*) key, strlen(key), ns, value);
  372|  2.77k|}
yr_hash_table_add_uint32_raw_key:
  399|      4|{
  400|       |  // Don't allow values equal to UINT32_MAX or UINT32_MAX - 1.
  401|      4|  if (value >= UINT32_MAX - 1)
  ------------------
  |  Branch (401:7): [True: 0, False: 4]
  ------------------
  402|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  403|       |
  404|       |  // Add +1 to the value in order to avoid putting a NULL pointer in the
  405|       |  // hash table once the integer is casted to a pointer. This is undone
  406|       |  // by yr_hash_table_lookup_uint32.
  407|      4|  return yr_hash_table_add_raw_key(
  408|      4|      table, key, key_length, ns, (void*) (size_t) (value + 1));
  409|      4|}
yr_hash_table_lookup_uint32_raw_key:
  416|      4|{
  417|      4|  void* ptr = yr_hash_table_lookup_raw_key(table, key, key_length, ns);
  418|       |
  419|      4|  if (ptr == NULL)
  ------------------
  |  Branch (419:7): [True: 4, False: 0]
  ------------------
  420|      4|    return UINT32_MAX;
  421|       |
  422|       |  // Remove one from the pointe in order to get the original value.
  423|       |  // See comment in yr_hash_table_add_uint32_raw_key.
  424|      0|  return ((uint32_t) (size_t) (uint8_t*) ptr) - 1;
  425|      4|}
hash.c:rotl32:
   41|   113k|{
   42|   113k|  assert(shift < 32);
   43|   113k|  return (x << shift) | (x >> (-shift & 31));
   44|   113k|}
hash.c:_yr_hash_table_lookup:
  124|  33.2k|{
  125|  33.2k|  YR_HASH_TABLE_ENTRY* entry;
  126|  33.2k|  YR_HASH_TABLE_ENTRY* prev_entry;
  127|       |
  128|  33.2k|  void* result;
  129|       |
  130|  33.2k|  uint32_t bucket_index = yr_hash(0, key, key_length);
  131|       |
  132|  33.2k|  if (ns != NULL)
  ------------------
  |  Branch (132:7): [True: 2, False: 33.2k]
  ------------------
  133|      2|    bucket_index = yr_hash(bucket_index, (uint8_t*) ns, strlen(ns));
  134|       |
  135|  33.2k|  bucket_index = bucket_index % table->size;
  136|  33.2k|  prev_entry = NULL;
  137|  33.2k|  entry = table->buckets[bucket_index];
  138|       |
  139|  36.0k|  while (entry != NULL)
  ------------------
  |  Branch (139:10): [True: 5.53k, False: 30.4k]
  ------------------
  140|  5.53k|  {
  141|  5.53k|    int key_match =
  142|  5.53k|        ((entry->key_length == key_length) &&
  ------------------
  |  Branch (142:10): [True: 2.76k, False: 2.76k]
  ------------------
  143|  5.53k|         (memcmp(entry->key, key, key_length) == 0));
  ------------------
  |  Branch (143:10): [True: 2.76k, False: 0]
  ------------------
  144|       |
  145|  5.53k|    int ns_match =
  146|  5.53k|        ((entry->ns == ns) ||
  ------------------
  |  Branch (146:10): [True: 5.53k, False: 0]
  ------------------
  147|  5.53k|         (entry->ns != NULL && ns != NULL && strcmp(entry->ns, ns) == 0));
  ------------------
  |  Branch (147:11): [True: 0, False: 0]
  |  Branch (147:32): [True: 0, False: 0]
  |  Branch (147:46): [True: 0, False: 0]
  ------------------
  148|       |
  149|  5.53k|    if (key_match && ns_match)
  ------------------
  |  Branch (149:9): [True: 2.76k, False: 2.76k]
  |  Branch (149:22): [True: 2.76k, False: 0]
  ------------------
  150|  2.76k|    {
  151|  2.76k|      result = entry->value;
  152|       |
  153|  2.76k|      if (remove)
  ------------------
  |  Branch (153:11): [True: 2.76k, False: 0]
  ------------------
  154|  2.76k|      {
  155|  2.76k|        if (prev_entry == NULL)
  ------------------
  |  Branch (155:13): [True: 2.76k, False: 0]
  ------------------
  156|  2.76k|          table->buckets[bucket_index] = entry->next;
  157|      0|        else
  158|      0|          prev_entry->next = entry->next;
  159|       |
  160|  2.76k|        if (entry->ns != NULL)
  ------------------
  |  Branch (160:13): [True: 0, False: 2.76k]
  ------------------
  161|      0|          yr_free(entry->ns);
  162|       |
  163|  2.76k|        yr_free(entry->key);
  164|  2.76k|        yr_free(entry);
  165|  2.76k|      }
  166|       |
  167|  2.76k|      return result;
  168|  2.76k|    }
  169|       |
  170|  2.76k|    prev_entry = entry;
  171|  2.76k|    entry = entry->next;
  172|  2.76k|  }
  173|       |
  174|  30.4k|  return NULL;
  175|  33.2k|}

exec.c:yr_unaligned_u64:
   88|  2.76k|{
   89|  2.76k|  const uint64_una_t *tmp = (const uint64_una_t *) ptr;
   90|  2.76k|  return tmp->val;
   91|  2.76k|}

yara_yylex:
 1278|      6|{
 1279|      6|	yy_state_type yy_current_state;
 1280|      6|	char *yy_cp, *yy_bp;
 1281|      6|	int yy_act;
 1282|      6|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 1283|       |
 1284|      6|    yylval = yylval_param;
  ------------------
  |  | 1097|      6|    #    define yylval yyg->yylval_r
  ------------------
 1285|       |
 1286|      6|	if ( !yyg->yy_init )
  ------------------
  |  Branch (1286:7): [True: 2, False: 4]
  ------------------
 1287|      2|		{
 1288|      2|		yyg->yy_init = 1;
 1289|       |
 1290|       |#ifdef YY_USER_INIT
 1291|       |		YY_USER_INIT;
 1292|       |#endif
 1293|       |
 1294|      2|		if ( ! yyg->yy_start )
  ------------------
  |  Branch (1294:8): [True: 2, False: 0]
  ------------------
 1295|      2|			yyg->yy_start = 1;	/* first start state */
 1296|       |
 1297|      2|		if ( ! yyin )
  ------------------
  |  |  344|      2|#define yyin yyg->yyin_r
  ------------------
  |  Branch (1297:8): [True: 2, False: 0]
  ------------------
 1298|      2|			yyin = stdin;
  ------------------
  |  |  344|      2|#define yyin yyg->yyin_r
  ------------------
 1299|       |
 1300|      2|		if ( ! yyout )
  ------------------
  |  |  345|      2|#define yyout yyg->yyout_r
  ------------------
  |  Branch (1300:8): [True: 2, False: 0]
  ------------------
 1301|      2|			yyout = stdout;
  ------------------
  |  |  345|      2|#define yyout yyg->yyout_r
  ------------------
 1302|       |
 1303|      2|		if ( ! YY_CURRENT_BUFFER ) {
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (1303:8): [True: 0, False: 2]
  ------------------
 1304|      0|			yyensure_buffer_stack (yyscanner);
  ------------------
  |  |   86|      0|#define yyensure_buffer_stack yara_yyensure_buffer_stack
  ------------------
 1305|      0|			YY_CURRENT_BUFFER_LVALUE =
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 1306|      0|				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
  ------------------
  |  |   20|      0|#define yy_create_buffer yara_yy_create_buffer
  ------------------
              				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
  ------------------
  |  |  344|      0|#define yyin yyg->yyin_r
  ------------------
              				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
  ------------------
  |  |  379|      0|#define YY_BUF_SIZE 16384
  ------------------
 1307|      0|		}
 1308|       |
 1309|      2|		yy_load_buffer_state( yyscanner );
  ------------------
  |  |   62|      2|#define yy_load_buffer_state yara_yy_load_buffer_state
  ------------------
 1310|      2|		}
 1311|       |
 1312|      6|	{
 1313|      6|#line 163 "lexer.l"
 1314|       |
 1315|       |
 1316|      6|#line 1316 "lexer.c"
 1317|       |
 1318|     12|	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
  ------------------
  |  Branch (1318:23): [Folded - Ignored]
  ------------------
 1319|     12|		{
 1320|     12|		yy_cp = yyg->yy_c_buf_p;
 1321|       |
 1322|       |		/* Support of yytext. */
 1323|     12|		*yy_cp = yyg->yy_hold_char;
 1324|       |
 1325|       |		/* yy_bp points to the position in yy_ch_buf of the start of
 1326|       |		 * the current run.
 1327|       |		 */
 1328|     12|		yy_bp = yy_cp;
 1329|       |
 1330|     12|		yy_current_state = yyg->yy_start;
 1331|     12|yy_match:
 1332|     12|		do
 1333|     40|			{
 1334|     40|			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
  ------------------
  |  |  334|     40|#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
  ------------------
 1335|     40|			if ( yy_accept[yy_current_state] )
  ------------------
  |  Branch (1335:9): [True: 28, False: 12]
  ------------------
 1336|     28|				{
 1337|     28|				yyg->yy_last_accepting_state = yy_current_state;
 1338|     28|				yyg->yy_last_accepting_cpos = yy_cp;
 1339|     28|				}
 1340|     62|			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  ------------------
  |  Branch (1340:12): [True: 22, False: 40]
  ------------------
 1341|     22|				{
 1342|     22|				yy_current_state = (int) yy_def[yy_current_state];
 1343|     22|				if ( yy_current_state >= 295 )
  ------------------
  |  Branch (1343:10): [True: 10, False: 12]
  ------------------
 1344|     10|					yy_c = yy_meta[yy_c];
 1345|     22|				}
 1346|     40|			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 1347|     40|			++yy_cp;
 1348|     40|			}
 1349|     40|		while ( yy_current_state != 294 );
  ------------------
  |  Branch (1349:11): [True: 28, False: 12]
  ------------------
 1350|     12|		yy_cp = yyg->yy_last_accepting_cpos;
 1351|     12|		yy_current_state = yyg->yy_last_accepting_state;
 1352|       |
 1353|     14|yy_find_action:
 1354|     14|		yy_act = yy_accept[yy_current_state];
 1355|       |
 1356|     14|		YY_DO_BEFORE_ACTION;
  ------------------
  |  |  578|     14|	yyg->yytext_ptr = yy_bp; \
  |  |  ------------------
  |  |  |  |  567|     14|#define yytext_ptr yytext_r
  |  |  ------------------
  |  |  579|     14|	yyleng = (int) (yy_cp - yy_bp); \
  |  |  ------------------
  |  |  |  |  347|     14|#define yyleng yyg->yyleng_r
  |  |  ------------------
  |  |  580|     14|	yyg->yy_hold_char = *yy_cp; \
  |  |  581|     14|	*yy_cp = '\0'; \
  |  |  582|     14|	yyg->yy_c_buf_p = yy_cp;
  ------------------
 1357|       |
 1358|     14|		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
  ------------------
  |  |  584|     28|#define YY_END_OF_BUFFER 87
  ------------------
  |  Branch (1358:8): [True: 10, False: 4]
  |  Branch (1358:38): [True: 2, False: 8]
  ------------------
 1359|      2|			{
 1360|      2|			int yyl;
 1361|      4|			for ( yyl = 0; yyl < yyleng; ++yyl )
  ------------------
  |  |  347|      4|#define yyleng yyg->yyleng_r
  ------------------
  |  Branch (1361:19): [True: 2, False: 2]
  ------------------
 1362|      2|				if ( yytext[yyl] == '\n' )
  ------------------
  |  |  348|      2|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1362:10): [True: 0, False: 2]
  ------------------
 1363|       |					
 1364|      0|    do{ yylineno++;
  ------------------
  |  |  349|      0|#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
  |  |  ------------------
  |  |  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  |  |  ------------------
  ------------------
 1365|      0|        yycolumn=0;
  ------------------
  |  |  350|      0|#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
  |  |  ------------------
  |  |  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  |  |  ------------------
  ------------------
 1366|      0|    }while(0)
  ------------------
  |  Branch (1366:12): [Folded - Ignored]
  ------------------
 1367|      2|;
 1368|      2|			}
 1369|       |
 1370|     16|do_action:	/* This label is used only to access EOF actions. */
 1371|       |
 1372|     16|		switch ( yy_act )
 1373|     16|	{ /* beginning of action switch */
 1374|      0|			case 0: /* must back up */
  ------------------
  |  Branch (1374:4): [True: 0, False: 16]
  ------------------
 1375|       |			/* undo the effects of YY_DO_BEFORE_ACTION */
 1376|      0|			*yy_cp = yyg->yy_hold_char;
 1377|      0|			yy_cp = yyg->yy_last_accepting_cpos;
 1378|      0|			yy_current_state = yyg->yy_last_accepting_state;
 1379|      0|			goto yy_find_action;
 1380|       |
 1381|      0|case 1:
  ------------------
  |  Branch (1381:1): [True: 0, False: 16]
  ------------------
 1382|      0|YY_RULE_SETUP
 1383|      0|#line 165 "lexer.l"
 1384|      0|{ return _DOT_DOT_;     }
  ------------------
  |  |  127|      0|#define _DOT_DOT_ 259
  ------------------
 1385|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1386|      0|case 2:
  ------------------
  |  Branch (1386:1): [True: 0, False: 16]
  ------------------
 1387|      0|YY_RULE_SETUP
 1388|      0|#line 166 "lexer.l"
 1389|      0|{ return _LT_;          }
  ------------------
  |  |  180|      0|#define _LT_ 312
  ------------------
 1390|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1391|      0|case 3:
  ------------------
  |  Branch (1391:1): [True: 0, False: 16]
  ------------------
 1392|      0|YY_RULE_SETUP
 1393|      0|#line 167 "lexer.l"
 1394|      0|{ return _GT_;          }
  ------------------
  |  |  182|      0|#define _GT_ 314
  ------------------
 1395|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1396|      0|case 4:
  ------------------
  |  Branch (1396:1): [True: 0, False: 16]
  ------------------
 1397|      0|YY_RULE_SETUP
 1398|      0|#line 168 "lexer.l"
 1399|      0|{ return _LE_;          }
  ------------------
  |  |  181|      0|#define _LE_ 313
  ------------------
 1400|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1401|      0|case 5:
  ------------------
  |  Branch (1401:1): [True: 0, False: 16]
  ------------------
 1402|      0|YY_RULE_SETUP
 1403|      0|#line 169 "lexer.l"
 1404|      0|{ return _GE_;          }
  ------------------
  |  |  183|      0|#define _GE_ 315
  ------------------
 1405|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1406|      0|case 6:
  ------------------
  |  Branch (1406:1): [True: 0, False: 16]
  ------------------
 1407|      0|YY_RULE_SETUP
 1408|      0|#line 170 "lexer.l"
 1409|      0|{ return _EQ_;          }
  ------------------
  |  |  178|      0|#define _EQ_ 310
  ------------------
 1410|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1411|      0|case 7:
  ------------------
  |  Branch (1411:1): [True: 0, False: 16]
  ------------------
 1412|      0|YY_RULE_SETUP
 1413|      0|#line 171 "lexer.l"
 1414|      0|{ return _NEQ_;         }
  ------------------
  |  |  179|      0|#define _NEQ_ 311
  ------------------
 1415|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1416|      0|case 8:
  ------------------
  |  Branch (1416:1): [True: 0, False: 16]
  ------------------
 1417|      0|YY_RULE_SETUP
 1418|      0|#line 172 "lexer.l"
 1419|      0|{ return _SHIFT_LEFT_;  }
  ------------------
  |  |  184|      0|#define _SHIFT_LEFT_ 316
  ------------------
 1420|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1421|      0|case 9:
  ------------------
  |  Branch (1421:1): [True: 0, False: 16]
  ------------------
 1422|      0|YY_RULE_SETUP
 1423|      0|#line 173 "lexer.l"
 1424|      0|{ return _SHIFT_RIGHT_; }
  ------------------
  |  |  185|      0|#define _SHIFT_RIGHT_ 317
  ------------------
 1425|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1426|      0|case 10:
  ------------------
  |  Branch (1426:1): [True: 0, False: 16]
  ------------------
 1427|      0|YY_RULE_SETUP
 1428|      0|#line 174 "lexer.l"
 1429|      0|{ return _PRIVATE_;     }
  ------------------
  |  |  129|      0|#define _PRIVATE_ 261
  ------------------
 1430|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1431|      0|case 11:
  ------------------
  |  Branch (1431:1): [True: 0, False: 16]
  ------------------
 1432|      0|YY_RULE_SETUP
 1433|      0|#line 175 "lexer.l"
 1434|      0|{ return _GLOBAL_;      }
  ------------------
  |  |  130|      0|#define _GLOBAL_ 262
  ------------------
 1435|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1436|      0|case 12:
  ------------------
  |  Branch (1436:1): [True: 0, False: 16]
  ------------------
 1437|      0|YY_RULE_SETUP
 1438|      0|#line 176 "lexer.l"
 1439|      0|{ return _RULE_;        }
  ------------------
  |  |  128|      0|#define _RULE_ 260
  ------------------
 1440|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1441|      0|case 13:
  ------------------
  |  Branch (1441:1): [True: 0, False: 16]
  ------------------
 1442|      0|YY_RULE_SETUP
 1443|      0|#line 177 "lexer.l"
 1444|      0|{ return _META_;        }
  ------------------
  |  |  131|      0|#define _META_ 263
  ------------------
 1445|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1446|      0|case 14:
  ------------------
  |  Branch (1446:1): [True: 0, False: 16]
  ------------------
 1447|      0|YY_RULE_SETUP
 1448|      0|#line 178 "lexer.l"
 1449|      0|{ return _STRINGS_;     }
  ------------------
  |  |  132|      0|#define _STRINGS_ 264
  ------------------
 1450|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1451|      0|case 15:
  ------------------
  |  Branch (1451:1): [True: 0, False: 16]
  ------------------
 1452|      0|YY_RULE_SETUP
 1453|      0|#line 179 "lexer.l"
 1454|      0|{ return _ASCII_;       }
  ------------------
  |  |  146|      0|#define _ASCII_ 278
  ------------------
 1455|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1456|      0|case 16:
  ------------------
  |  Branch (1456:1): [True: 0, False: 16]
  ------------------
 1457|      0|YY_RULE_SETUP
 1458|      0|#line 180 "lexer.l"
 1459|      0|{ return _WIDE_;        }
  ------------------
  |  |  147|      0|#define _WIDE_ 279
  ------------------
 1460|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1461|      0|case 17:
  ------------------
  |  Branch (1461:1): [True: 0, False: 16]
  ------------------
 1462|      0|YY_RULE_SETUP
 1463|      0|#line 181 "lexer.l"
 1464|      0|{ return _XOR_;         }
  ------------------
  |  |  148|      0|#define _XOR_ 280
  ------------------
 1465|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1466|      0|case 18:
  ------------------
  |  Branch (1466:1): [True: 0, False: 16]
  ------------------
 1467|      0|YY_RULE_SETUP
 1468|      0|#line 182 "lexer.l"
 1469|      0|{ return _BASE64_;      }
  ------------------
  |  |  149|      0|#define _BASE64_ 281
  ------------------
 1470|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1471|      0|case 19:
  ------------------
  |  Branch (1471:1): [True: 0, False: 16]
  ------------------
 1472|      0|YY_RULE_SETUP
 1473|      0|#line 183 "lexer.l"
 1474|      0|{ return _BASE64_WIDE_; }
  ------------------
  |  |  150|      0|#define _BASE64_WIDE_ 282
  ------------------
 1475|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1476|      0|case 20:
  ------------------
  |  Branch (1476:1): [True: 0, False: 16]
  ------------------
 1477|      0|YY_RULE_SETUP
 1478|      0|#line 184 "lexer.l"
 1479|      0|{ return _FULLWORD_;    }
  ------------------
  |  |  152|      0|#define _FULLWORD_ 284
  ------------------
 1480|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1481|      0|case 21:
  ------------------
  |  Branch (1481:1): [True: 0, False: 16]
  ------------------
 1482|      0|YY_RULE_SETUP
 1483|      0|#line 185 "lexer.l"
 1484|      0|{ return _NOCASE_;      }
  ------------------
  |  |  151|      0|#define _NOCASE_ 283
  ------------------
 1485|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1486|      0|case 22:
  ------------------
  |  Branch (1486:1): [True: 0, False: 16]
  ------------------
 1487|      0|YY_RULE_SETUP
 1488|      0|#line 186 "lexer.l"
 1489|      0|{ return _CONDITION_;   }
  ------------------
  |  |  133|      0|#define _CONDITION_ 265
  ------------------
 1490|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1491|      0|case 23:
  ------------------
  |  Branch (1491:1): [True: 0, False: 16]
  ------------------
 1492|      0|YY_RULE_SETUP
 1493|      0|#line 187 "lexer.l"
 1494|      0|{ return _TRUE_;        }
  ------------------
  |  |  172|      0|#define _TRUE_ 304
  ------------------
 1495|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1496|      0|case 24:
  ------------------
  |  Branch (1496:1): [True: 0, False: 16]
  ------------------
 1497|      0|YY_RULE_SETUP
 1498|      0|#line 188 "lexer.l"
 1499|      0|{ return _FALSE_;       }
  ------------------
  |  |  173|      0|#define _FALSE_ 305
  ------------------
 1500|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1501|      0|case 25:
  ------------------
  |  Branch (1501:1): [True: 0, False: 16]
  ------------------
 1502|      0|YY_RULE_SETUP
 1503|      0|#line 189 "lexer.l"
 1504|      0|{ return _NOT_;         }
  ------------------
  |  |  176|      0|#define _NOT_ 308
  ------------------
 1505|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1506|      0|case 26:
  ------------------
  |  Branch (1506:1): [True: 0, False: 16]
  ------------------
 1507|      0|YY_RULE_SETUP
 1508|      0|#line 190 "lexer.l"
 1509|      0|{ return _AND_;         }
  ------------------
  |  |  175|      0|#define _AND_ 307
  ------------------
 1510|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1511|      0|case 27:
  ------------------
  |  Branch (1511:1): [True: 0, False: 16]
  ------------------
 1512|      0|YY_RULE_SETUP
 1513|      0|#line 191 "lexer.l"
 1514|      0|{ return _OR_;          }
  ------------------
  |  |  174|      0|#define _OR_ 306
  ------------------
 1515|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1516|      0|case 28:
  ------------------
  |  Branch (1516:1): [True: 0, False: 16]
  ------------------
 1517|      0|YY_RULE_SETUP
 1518|      0|#line 192 "lexer.l"
 1519|      0|{ return _AT_;          }
  ------------------
  |  |  153|      0|#define _AT_ 285
  ------------------
 1520|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1521|      0|case 29:
  ------------------
  |  Branch (1521:1): [True: 0, False: 16]
  ------------------
 1522|      0|YY_RULE_SETUP
 1523|      0|#line 193 "lexer.l"
 1524|      0|{ return _IN_;          }
  ------------------
  |  |  159|      0|#define _IN_ 291
  ------------------
 1525|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1526|      0|case 30:
  ------------------
  |  Branch (1526:1): [True: 0, False: 16]
  ------------------
 1527|      0|YY_RULE_SETUP
 1528|      0|#line 194 "lexer.l"
 1529|      0|{ return _OF_;          }
  ------------------
  |  |  160|      0|#define _OF_ 292
  ------------------
 1530|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1531|      0|case 31:
  ------------------
  |  Branch (1531:1): [True: 0, False: 16]
  ------------------
 1532|      0|YY_RULE_SETUP
 1533|      0|#line 195 "lexer.l"
 1534|      0|{ return _THEM_;        }
  ------------------
  |  |  162|      0|#define _THEM_ 294
  ------------------
 1535|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1536|      0|case 32:
  ------------------
  |  Branch (1536:1): [True: 0, False: 16]
  ------------------
 1537|      0|YY_RULE_SETUP
 1538|      0|#line 196 "lexer.l"
 1539|      0|{ return _FOR_;         }
  ------------------
  |  |  161|      0|#define _FOR_ 293
  ------------------
 1540|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1541|      0|case 33:
  ------------------
  |  Branch (1541:1): [True: 0, False: 16]
  ------------------
 1542|      0|YY_RULE_SETUP
 1543|      0|#line 197 "lexer.l"
 1544|      0|{ return _ALL_;         }
  ------------------
  |  |  156|      0|#define _ALL_ 288
  ------------------
 1545|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1546|      0|case 34:
  ------------------
  |  Branch (1546:1): [True: 0, False: 16]
  ------------------
 1547|      0|YY_RULE_SETUP
 1548|      0|#line 198 "lexer.l"
 1549|      0|{ return _ANY_;         }
  ------------------
  |  |  157|      0|#define _ANY_ 289
  ------------------
 1550|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1551|      0|case 35:
  ------------------
  |  Branch (1551:1): [True: 0, False: 16]
  ------------------
 1552|      0|YY_RULE_SETUP
 1553|      0|#line 199 "lexer.l"
 1554|      0|{ return _NONE_;        }
  ------------------
  |  |  158|      0|#define _NONE_ 290
  ------------------
 1555|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1556|      0|case 36:
  ------------------
  |  Branch (1556:1): [True: 0, False: 16]
  ------------------
 1557|      0|YY_RULE_SETUP
 1558|      0|#line 200 "lexer.l"
 1559|      0|{ return _ENTRYPOINT_;  }
  ------------------
  |  |  155|      0|#define _ENTRYPOINT_ 287
  ------------------
 1560|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1561|      0|case 37:
  ------------------
  |  Branch (1561:1): [True: 0, False: 16]
  ------------------
 1562|      0|YY_RULE_SETUP
 1563|      0|#line 201 "lexer.l"
 1564|      0|{ return _FILESIZE_;    }
  ------------------
  |  |  154|      0|#define _FILESIZE_ 286
  ------------------
 1565|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1566|      0|case 38:
  ------------------
  |  Branch (1566:1): [True: 0, False: 16]
  ------------------
 1567|      0|YY_RULE_SETUP
 1568|      0|#line 202 "lexer.l"
 1569|      0|{ return _MATCHES_;     }
  ------------------
  |  |  163|      0|#define _MATCHES_ 295
  ------------------
 1570|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1571|      0|case 39:
  ------------------
  |  Branch (1571:1): [True: 0, False: 16]
  ------------------
 1572|      0|YY_RULE_SETUP
 1573|      0|#line 203 "lexer.l"
 1574|      0|{ return _CONTAINS_;    }
  ------------------
  |  |  164|      0|#define _CONTAINS_ 296
  ------------------
 1575|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1576|      0|case 40:
  ------------------
  |  Branch (1576:1): [True: 0, False: 16]
  ------------------
 1577|      0|YY_RULE_SETUP
 1578|      0|#line 204 "lexer.l"
 1579|      0|{ return _STARTSWITH_;  }
  ------------------
  |  |  165|      0|#define _STARTSWITH_ 297
  ------------------
 1580|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1581|      0|case 41:
  ------------------
  |  Branch (1581:1): [True: 0, False: 16]
  ------------------
 1582|      0|YY_RULE_SETUP
 1583|      0|#line 205 "lexer.l"
 1584|      0|{ return _ENDSWITH_;    }
  ------------------
  |  |  166|      0|#define _ENDSWITH_ 298
  ------------------
 1585|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1586|      0|case 42:
  ------------------
  |  Branch (1586:1): [True: 0, False: 16]
  ------------------
 1587|      0|YY_RULE_SETUP
 1588|      0|#line 206 "lexer.l"
 1589|      0|{ return _ICONTAINS_;   }
  ------------------
  |  |  167|      0|#define _ICONTAINS_ 299
  ------------------
 1590|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1591|      0|case 43:
  ------------------
  |  Branch (1591:1): [True: 0, False: 16]
  ------------------
 1592|      0|YY_RULE_SETUP
 1593|      0|#line 207 "lexer.l"
 1594|      0|{ return _ISTARTSWITH_; }
  ------------------
  |  |  168|      0|#define _ISTARTSWITH_ 300
  ------------------
 1595|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1596|      0|case 44:
  ------------------
  |  Branch (1596:1): [True: 0, False: 16]
  ------------------
 1597|      0|YY_RULE_SETUP
 1598|      0|#line 208 "lexer.l"
 1599|      0|{ return _IENDSWITH_;   }
  ------------------
  |  |  169|      0|#define _IENDSWITH_ 301
  ------------------
 1600|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1601|      0|case 45:
  ------------------
  |  Branch (1601:1): [True: 0, False: 16]
  ------------------
 1602|      0|YY_RULE_SETUP
 1603|      0|#line 209 "lexer.l"
 1604|      0|{ return _IEQUALS_;     }
  ------------------
  |  |  170|      0|#define _IEQUALS_ 302
  ------------------
 1605|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1606|      2|case 46:
  ------------------
  |  Branch (1606:1): [True: 2, False: 14]
  ------------------
 1607|      2|YY_RULE_SETUP
 1608|      2|#line 210 "lexer.l"
 1609|      2|{ return _IMPORT_;      }
  ------------------
  |  |  171|      2|#define _IMPORT_ 303
  ------------------
 1610|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1611|      0|case 47:
  ------------------
  |  Branch (1611:1): [True: 0, False: 16]
  ------------------
 1612|      0|YY_RULE_SETUP
 1613|      0|#line 211 "lexer.l"
 1614|      0|{ return _DEFINED_;     }
  ------------------
  |  |  177|      0|#define _DEFINED_ 309
  ------------------
 1615|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1616|      0|case 48:
  ------------------
  |  Branch (1616:1): [True: 0, False: 16]
  ------------------
 1617|      0|YY_RULE_SETUP
 1618|      0|#line 214 "lexer.l"
 1619|      0|{ BEGIN(comment);       }
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
              { BEGIN(comment);       }
  ------------------
  |  | 1043|      0|#define comment 4
  ------------------
 1620|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1621|      0|case 49:
  ------------------
  |  Branch (1621:1): [True: 0, False: 16]
  ------------------
 1622|      0|YY_RULE_SETUP
 1623|      0|#line 215 "lexer.l"
 1624|      0|{ BEGIN(INITIAL);       }
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
              { BEGIN(INITIAL);       }
  ------------------
  |  | 1039|      0|#define INITIAL 0
  ------------------
 1625|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1626|      0|case 50:
  ------------------
  |  Branch (1626:1): [True: 0, False: 16]
  ------------------
 1627|       |/* rule 50 can match eol */
 1628|      0|YY_RULE_SETUP
 1629|      0|#line 216 "lexer.l"
 1630|      0|{ /* skip comments */   }
 1631|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1632|      0|case 51:
  ------------------
  |  Branch (1632:1): [True: 0, False: 16]
  ------------------
 1633|      0|YY_RULE_SETUP
 1634|      0|#line 219 "lexer.l"
 1635|      0|{ /* skip single-line comments */ }
 1636|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1637|      0|case 52:
  ------------------
  |  Branch (1637:1): [True: 0, False: 16]
  ------------------
 1638|      0|YY_RULE_SETUP
 1639|      0|#line 222 "lexer.l"
 1640|      0|{
 1641|      0|                          yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
                                        yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1642|      0|                          yyextra->lex_buf_len = 0;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1643|      0|                          BEGIN(include);
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                                        BEGIN(include);
  ------------------
  |  | 1042|      0|#define include 3
  ------------------
 1644|      0|                        }
 1645|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1646|      0|case 53:
  ------------------
  |  Branch (1646:1): [True: 0, False: 16]
  ------------------
 1647|       |/* rule 53 can match eol */
 1648|      0|YY_RULE_SETUP
 1649|      0|#line 229 "lexer.l"
 1650|      0|{ yytext_to_buffer; }
  ------------------
  |  |  991|      0|    { \
  |  |  992|      0|      char *yptr = yytext; \
  |  |  ------------------
  |  |  |  |  348|      0|#define yytext yyg->yytext_r
  |  |  ------------------
  |  |  993|      0|      lex_check_space_ok(yptr, yyextra->lex_buf_len, YR_LEX_BUF_SIZE); \
  |  |  ------------------
  |  |  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  985|      0|    { \
  |  |  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  987|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  988|      0|    }
  |  |  ------------------
  |  |  994|      0|      while(*yptr) \
  |  |  ------------------
  |  |  |  Branch (994:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  995|      0|      { \
  |  |  996|      0|        *yyextra->lex_buf_ptr++ = *yptr++; \
  |  |  ------------------
  |  |  |  |  346|      0|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  997|      0|        yyextra->lex_buf_len++; \
  |  |  ------------------
  |  |  |  |  346|      0|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  998|      0|      } \
  |  |  999|      0|    }
  ------------------
 1651|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1652|      0|case 54:
  ------------------
  |  Branch (1652:1): [True: 0, False: 16]
  ------------------
 1653|      0|YY_RULE_SETUP
 1654|      0|#line 232 "lexer.l"
 1655|      0|{
 1656|       |
 1657|      0|  if (compiler->include_callback != NULL)
  ------------------
  |  Branch (1657:7): [True: 0, False: 0]
  ------------------
 1658|      0|  {
 1659|       |    #ifdef _MSC_VER
 1660|       |    char* b = NULL;
 1661|       |    #endif
 1662|      0|    char* s = NULL;
 1663|      0|    char* f;
 1664|       |
 1665|      0|    char buffer[1024];
 1666|      0|    const char* included_rules;
 1667|      0|    char* current_file_name;
 1668|      0|    char* include_path;
 1669|       |
 1670|      0|    *yyextra->lex_buf_ptr = '\0'; // null-terminate included file path
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1671|       |
 1672|      0|    current_file_name = yr_compiler_get_current_file_name(compiler);
 1673|       |
 1674|      0|    if (current_file_name == NULL ||
  ------------------
  |  Branch (1674:9): [True: 0, False: 0]
  ------------------
 1675|      0|        compiler->include_callback != _yr_compiler_default_include_callback ||
  ------------------
  |  Branch (1675:9): [True: 0, False: 0]
  ------------------
 1676|      0|        is_absolute_path(yyextra->lex_buf))
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
  |  Branch (1676:9): [True: 0, False: 0]
  ------------------
 1677|      0|    {
 1678|      0|      include_path = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1679|      0|    }
 1680|      0|    else
 1681|      0|    {
 1682|      0|      strlcpy(buffer, current_file_name, sizeof(buffer));
 1683|      0|      s = strrchr(buffer, '/');
 1684|       |
 1685|       |      #ifdef _MSC_VER
 1686|       |      b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted
 1687|       |      #endif
 1688|       |
 1689|       |      #ifdef _MSC_VER
 1690|       |      if (s != NULL || b != NULL)
 1691|       |      #else
 1692|      0|      if (s != NULL)
  ------------------
  |  Branch (1692:11): [True: 0, False: 0]
  ------------------
 1693|      0|      #endif
 1694|      0|      {
 1695|       |        #ifdef _MSC_VER
 1696|       |        f = (b > s) ? (b + 1) : (s + 1);
 1697|       |        #else
 1698|      0|        f = s + 1;
 1699|      0|        #endif
 1700|       |
 1701|      0|        strlcpy(f, yyextra->lex_buf, sizeof(buffer) - (f - buffer));
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1702|      0|        include_path = buffer;
 1703|      0|      }
 1704|      0|      else
 1705|      0|      {
 1706|      0|        include_path = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1707|      0|      }
 1708|      0|    }
 1709|       |
 1710|      0|    YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 1711|      0|        compiler->arena,
 1712|      0|        YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      0|#define YR_NAMESPACES_TABLE         0
  ------------------
 1713|      0|        compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 1714|       |
 1715|      0|    included_rules = compiler->include_callback(
 1716|      0|        include_path,
 1717|      0|        current_file_name,
 1718|      0|        ns->name,
 1719|      0|        compiler->incl_clbk_user_data);
 1720|       |
 1721|      0|    if (included_rules != NULL)
  ------------------
  |  Branch (1721:9): [True: 0, False: 0]
  ------------------
 1722|      0|    {
 1723|      0|      int error_code = _yr_compiler_push_file_name(compiler, include_path);
 1724|       |
 1725|      0|      if (error_code != ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1725:11): [True: 0, False: 0]
  ------------------
 1726|      0|      {
 1727|      0|        if (error_code == ERROR_INCLUDES_CIRCULAR_REFERENCE)
  ------------------
  |  |   67|      0|#define ERROR_INCLUDES_CIRCULAR_REFERENCE    22
  ------------------
  |  Branch (1727:13): [True: 0, False: 0]
  ------------------
 1728|      0|        {
 1729|      0|          yyerror(yyscanner, compiler, "includes circular reference");
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
 1730|      0|        }
 1731|      0|        else if (error_code == ERROR_INCLUDE_DEPTH_EXCEEDED)
  ------------------
  |  |   68|      0|#define ERROR_INCLUDE_DEPTH_EXCEEDED         23
  ------------------
  |  Branch (1731:18): [True: 0, False: 0]
  ------------------
 1732|      0|        {
 1733|      0|          yyerror(yyscanner, compiler, "includes depth exceeded");
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
 1734|      0|        }
 1735|       |
 1736|      0|        if (compiler->include_free != NULL)
  ------------------
  |  Branch (1736:13): [True: 0, False: 0]
  ------------------
 1737|      0|        {
 1738|      0|          compiler->include_free(included_rules, compiler->incl_clbk_user_data);
 1739|      0|        }
 1740|       |
 1741|      0|        yyterminate();
  ------------------
  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  ------------------
  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  ------------------
  ------------------
 1742|      0|      }
 1743|       |
 1744|       |      // Workaround for flex issue: https://github.com/westes/flex/issues/58
 1745|      0|      yypush_buffer_state(YY_CURRENT_BUFFER, yyscanner);
  ------------------
  |  |   74|      0|#define yypush_buffer_state yara_yypush_buffer_state
  ------------------
                    yypush_buffer_state(YY_CURRENT_BUFFER, yyscanner);
  ------------------
  |  |  509|      0|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  510|      0|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      0|                          : NULL)
  ------------------
 1746|      0|      yy_scan_string(included_rules, yyscanner);
  ------------------
  |  |   38|      0|#define yy_scan_string yara_yy_scan_string
  ------------------
 1747|      0|      yyset_lineno(1, yyscanner);
  ------------------
  |  |  188|      0|#define yyset_lineno yara_yyset_lineno
  ------------------
 1748|       |
 1749|      0|      if (compiler->include_free != NULL)
  ------------------
  |  Branch (1749:11): [True: 0, False: 0]
  ------------------
 1750|      0|      {
 1751|      0|        compiler->include_free(included_rules, compiler->incl_clbk_user_data);
 1752|      0|      }
 1753|      0|    }
 1754|      0|    else
 1755|      0|    {
 1756|      0|      char* err_msg_fmt;
 1757|      0|      char err_msg[512];
 1758|       |
 1759|      0|      if (compiler->include_callback == _yr_compiler_default_include_callback)
  ------------------
  |  Branch (1759:11): [True: 0, False: 0]
  ------------------
 1760|      0|      {
 1761|      0|        err_msg_fmt = "can't open include file: %s";
 1762|      0|      }
 1763|      0|      else
 1764|      0|      {
 1765|      0|        err_msg_fmt = "callback failed to provide include resource: %s";
 1766|      0|      }
 1767|       |
 1768|      0|      snprintf(
 1769|      0|          err_msg,
 1770|      0|          sizeof(err_msg),
 1771|      0|          err_msg_fmt,
 1772|      0|          yyextra->lex_buf);
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 1773|       |
 1774|      0|      yyerror(yyscanner, compiler, err_msg);
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
 1775|      0|    }
 1776|       |
 1777|      0|  }
 1778|      0|  else // not allowing includes
 1779|      0|  {
 1780|      0|    yyerror(yyscanner, compiler, "includes are disabled");
  ------------------
  |  |   49|      0|#define yyerror      yara_yyerror
  ------------------
 1781|      0|  }
 1782|       |
 1783|      0|  BEGIN(INITIAL);
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                BEGIN(INITIAL);
  ------------------
  |  | 1039|      0|#define INITIAL 0
  ------------------
 1784|      0|}
 1785|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1786|      2|case YY_STATE_EOF(INITIAL):
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
  |  Branch (1786:1): [True: 2, False: 14]
  ------------------
 1787|      2|case YY_STATE_EOF(str):
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
  |  Branch (1787:1): [True: 0, False: 16]
  ------------------
 1788|      2|case YY_STATE_EOF(regexp):
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
  |  Branch (1788:1): [True: 0, False: 16]
  ------------------
 1789|      2|case YY_STATE_EOF(include):
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
  |  Branch (1789:1): [True: 0, False: 16]
  ------------------
 1790|      2|case YY_STATE_EOF(comment):
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
  |  Branch (1790:1): [True: 0, False: 16]
  ------------------
 1791|      2|#line 364 "lexer.l"
 1792|      2|{
 1793|       |
 1794|      2|  yypop_buffer_state(yyscanner);
  ------------------
  |  |   80|      2|#define yypop_buffer_state yara_yypop_buffer_state
  ------------------
 1795|       |
 1796|      2|  if (!YY_CURRENT_BUFFER)
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (1796:7): [True: 2, False: 0]
  ------------------
 1797|      2|    yyterminate();
  ------------------
  |  | 1232|      2|#define yyterminate() return YY_NULL
  |  |  ------------------
  |  |  |  |  329|      2|#define YY_NULL 0
  |  |  ------------------
  ------------------
 1798|       |
 1799|      0|  return _END_OF_INCLUDED_FILE_;
  ------------------
  |  |  126|      0|#define _END_OF_INCLUDED_FILE_ 258
  ------------------
 1800|      2|}
 1801|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1802|      0|case 55:
  ------------------
  |  Branch (1802:1): [True: 0, False: 16]
  ------------------
 1803|      0|YY_RULE_SETUP
 1804|      0|#line 375 "lexer.l"
 1805|      0|{
 1806|       |
 1807|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1808|       |
 1809|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1809:7): [True: 0, False: 0]
  ------------------
 1810|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1811|       |
 1812|      0|  return _STRING_IDENTIFIER_WITH_WILDCARD_;
  ------------------
  |  |  139|      0|#define _STRING_IDENTIFIER_WITH_WILDCARD_ 271
  ------------------
 1813|      0|}
 1814|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1815|      0|case 56:
  ------------------
  |  Branch (1815:1): [True: 0, False: 16]
  ------------------
 1816|      0|YY_RULE_SETUP
 1817|      0|#line 386 "lexer.l"
 1818|      0|{
 1819|       |
 1820|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1821|       |
 1822|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1822:7): [True: 0, False: 0]
  ------------------
 1823|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1824|       |
 1825|      0|  return _STRING_IDENTIFIER_;
  ------------------
  |  |  135|      0|#define _STRING_IDENTIFIER_ 267
  ------------------
 1826|      0|}
 1827|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1828|      0|case 57:
  ------------------
  |  Branch (1828:1): [True: 0, False: 16]
  ------------------
 1829|      0|YY_RULE_SETUP
 1830|      0|#line 397 "lexer.l"
 1831|      0|{
 1832|       |
 1833|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1834|       |
 1835|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1835:7): [True: 0, False: 0]
  ------------------
 1836|      0|  {
 1837|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1838|      0|  }
 1839|      0|  else
 1840|      0|  {
 1841|      0|    yylval->c_string[0] = '$'; /* replace # by $*/
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1842|      0|  }
 1843|       |
 1844|      0|  return _STRING_COUNT_;
  ------------------
  |  |  136|      0|#define _STRING_COUNT_ 268
  ------------------
 1845|      0|}
 1846|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1847|      0|case 58:
  ------------------
  |  Branch (1847:1): [True: 0, False: 16]
  ------------------
 1848|      0|YY_RULE_SETUP
 1849|      0|#line 414 "lexer.l"
 1850|      0|{
 1851|       |
 1852|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1853|       |
 1854|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1854:7): [True: 0, False: 0]
  ------------------
 1855|      0|  {
 1856|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1857|      0|  }
 1858|      0|  else
 1859|      0|  {
 1860|      0|    yylval->c_string[0] = '$'; /* replace @ by $*/
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1861|      0|  }
 1862|       |
 1863|      0|  return _STRING_OFFSET_;
  ------------------
  |  |  137|      0|#define _STRING_OFFSET_ 269
  ------------------
 1864|      0|}
 1865|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1866|      0|case 59:
  ------------------
  |  Branch (1866:1): [True: 0, False: 16]
  ------------------
 1867|      0|YY_RULE_SETUP
 1868|      0|#line 431 "lexer.l"
 1869|      0|{
 1870|       |
 1871|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1872|       |
 1873|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1873:7): [True: 0, False: 0]
  ------------------
 1874|      0|  {
 1875|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1876|      0|  }
 1877|      0|  else
 1878|      0|  {
 1879|      0|    yylval->c_string[0] = '$'; /* replace ! by $*/
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1880|      0|  }
 1881|       |
 1882|      0|  return _STRING_LENGTH_;
  ------------------
  |  |  138|      0|#define _STRING_LENGTH_ 270
  ------------------
 1883|      0|}
 1884|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1885|      0|case 60:
  ------------------
  |  Branch (1885:1): [True: 0, False: 16]
  ------------------
 1886|      0|YY_RULE_SETUP
 1887|      0|#line 448 "lexer.l"
 1888|      0|{
 1889|       |
 1890|      0|  char* text = yytext;
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1891|       |
 1892|      0|  if (*text == 'u')
  ------------------
  |  Branch (1892:7): [True: 0, False: 0]
  ------------------
 1893|      0|  {
 1894|      0|    yylval->integer = 3;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1895|      0|    text++;
 1896|      0|  }
 1897|      0|  else
 1898|      0|  {
 1899|      0|    yylval->integer = 0;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1900|      0|  }
 1901|       |
 1902|      0|  if (strstr(text, "int8") == text)
  ------------------
  |  Branch (1902:7): [True: 0, False: 0]
  ------------------
 1903|      0|  {
 1904|      0|    yylval->integer += 0;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1905|      0|    text += 4;
 1906|      0|  }
 1907|      0|  else if (strstr(text, "int16") == text)
  ------------------
  |  Branch (1907:12): [True: 0, False: 0]
  ------------------
 1908|      0|  {
 1909|      0|    yylval->integer += 1;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1910|      0|    text += 5;
 1911|      0|  }
 1912|      0|  else if (strstr(text, "int32") == text)
  ------------------
  |  Branch (1912:12): [True: 0, False: 0]
  ------------------
 1913|      0|  {
 1914|      0|    yylval->integer += 2;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1915|      0|    text += 5;
 1916|      0|  }
 1917|       |
 1918|      0|  if (strcmp(text, "be") == 0)
  ------------------
  |  Branch (1918:7): [True: 0, False: 0]
  ------------------
 1919|      0|  {
 1920|      0|    yylval->integer += 6;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1921|      0|  }
 1922|       |
 1923|      0|  return _INTEGER_FUNCTION_;
  ------------------
  |  |  142|      0|#define _INTEGER_FUNCTION_ 274
  ------------------
 1924|      0|}
 1925|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1926|      0|case 61:
  ------------------
  |  Branch (1926:1): [True: 0, False: 16]
  ------------------
 1927|      0|YY_RULE_SETUP
 1928|      0|#line 487 "lexer.l"
 1929|      0|{
 1930|       |
 1931|      0|  if (strlen(yytext) > 128)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1931:7): [True: 0, False: 0]
  ------------------
 1932|      0|    syntax_error("identifier too long");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 1933|       |
 1934|      0|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1935|       |
 1936|      0|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1936:7): [True: 0, False: 0]
  ------------------
 1937|      0|    error(ERROR_INSUFFICIENT_MEMORY);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1938|       |
 1939|      0|  return _IDENTIFIER_;
  ------------------
  |  |  134|      0|#define _IDENTIFIER_ 266
  ------------------
 1940|      0|}
 1941|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1942|      0|case 62:
  ------------------
  |  Branch (1942:1): [True: 0, False: 16]
  ------------------
 1943|      0|YY_RULE_SETUP
 1944|      0|#line 501 "lexer.l"
 1945|      0|{
 1946|       |
 1947|      0|  char *endptr;
 1948|       |
 1949|      0|  errno = 0;
 1950|      0|  yylval->integer = strtoll(yytext, &endptr, 10);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->integer = strtoll(yytext, &endptr, 10);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1951|       |
 1952|      0|  if (yylval->integer == LLONG_MAX && errno == ERANGE)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1952:7): [True: 0, False: 0]
  |  Branch (1952:39): [True: 0, False: 0]
  ------------------
 1953|      0|  {
 1954|      0|    yr_compiler_set_error_extra_info(compiler, yytext);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1955|      0|    error(ERROR_INTEGER_OVERFLOW);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1956|      0|  }
 1957|      0|  else if (strstr(yytext, "KB") != NULL)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1957:12): [True: 0, False: 0]
  ------------------
 1958|      0|  {
 1959|      0|    if (yylval->integer > LLONG_MAX / 1024)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1959:9): [True: 0, False: 0]
  ------------------
 1960|      0|    {
 1961|      0|      yr_compiler_set_error_extra_info(compiler, yytext);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1962|      0|      error(ERROR_INTEGER_OVERFLOW);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1963|      0|    }
 1964|      0|    else
 1965|      0|    {
 1966|      0|      yylval->integer *= 1024;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1967|      0|    }
 1968|      0|  }
 1969|      0|  else if (strstr(yytext, "MB") != NULL)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1969:12): [True: 0, False: 0]
  ------------------
 1970|      0|  {
 1971|      0|    if (yylval->integer > LLONG_MAX / 1048576)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1971:9): [True: 0, False: 0]
  ------------------
 1972|      0|    {
 1973|      0|      yr_compiler_set_error_extra_info(compiler, yytext);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1974|      0|      error(ERROR_INTEGER_OVERFLOW);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 1975|      0|    }
 1976|      0|    else
 1977|      0|    {
 1978|      0|      yylval->integer *= 1048576;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 1979|      0|    }
 1980|      0|  }
 1981|       |
 1982|      0|  return _NUMBER_;
  ------------------
  |  |  140|      0|#define _NUMBER_ 272
  ------------------
 1983|      0|}
 1984|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1985|      0|case 63:
  ------------------
  |  Branch (1985:1): [True: 0, False: 16]
  ------------------
 1986|      0|YY_RULE_SETUP
 1987|      0|#line 541 "lexer.l"
 1988|      0|{
 1989|      0|  yylval->double_ = atof(yytext);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->double_ = atof(yytext);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 1990|      0|  return _DOUBLE_;
  ------------------
  |  |  141|      0|#define _DOUBLE_ 273
  ------------------
 1991|      0|}
 1992|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1993|      0|case 64:
  ------------------
  |  Branch (1993:1): [True: 0, False: 16]
  ------------------
 1994|      0|YY_RULE_SETUP
 1995|      0|#line 546 "lexer.l"
 1996|      0|{
 1997|       |
 1998|      0|  char *endptr;
 1999|       |
 2000|      0|  errno = 0;
 2001|      0|  yylval->integer = strtoll(yytext, &endptr, 16);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->integer = strtoll(yytext, &endptr, 16);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2002|       |
 2003|      0|  if (yylval->integer == LLONG_MAX && errno == ERANGE)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (2003:7): [True: 0, False: 0]
  |  Branch (2003:39): [True: 0, False: 0]
  ------------------
 2004|      0|  {
 2005|      0|    yr_compiler_set_error_extra_info(compiler, yytext);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2006|      0|    error(ERROR_INTEGER_OVERFLOW);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 2007|      0|  }
 2008|       |
 2009|      0|  return _NUMBER_;
  ------------------
  |  |  140|      0|#define _NUMBER_ 272
  ------------------
 2010|      0|}
 2011|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2012|      0|case 65:
  ------------------
  |  Branch (2012:1): [True: 0, False: 16]
  ------------------
 2013|      0|YY_RULE_SETUP
 2014|      0|#line 562 "lexer.l"
 2015|      0|{
 2016|       |
 2017|      0|  char *endptr;
 2018|       |
 2019|      0|  errno = 0;
 2020|      0|  yylval->integer = strtoll(yytext + 2, &endptr, 8);
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
                yylval->integer = strtoll(yytext + 2, &endptr, 8);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2021|       |
 2022|      0|  if (yylval->integer == LLONG_MAX && errno == ERANGE)
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (2022:7): [True: 0, False: 0]
  |  Branch (2022:39): [True: 0, False: 0]
  ------------------
 2023|      0|  {
 2024|      0|    yr_compiler_set_error_extra_info(compiler, yytext);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 2025|      0|    error(ERROR_INTEGER_OVERFLOW);
  ------------------
  |  |  971|      0|    { \
  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  974|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  975|      0|    }
  ------------------
 2026|      0|  }
 2027|       |
 2028|      0|  return _NUMBER_;
  ------------------
  |  |  140|      0|#define _NUMBER_ 272
  ------------------
 2029|      0|}
 2030|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2031|      2|case 66:
  ------------------
  |  Branch (2031:1): [True: 2, False: 14]
  ------------------
 2032|      2|YY_RULE_SETUP
 2033|      2|#line 579 "lexer.l"
 2034|      2|{     /* saw closing quote - all done */
 2035|       |
 2036|      2|  alloc_sized_string(s, yyextra->lex_buf_len);
  ------------------
  |  | 1002|      2|  SIZED_STRING* str = (SIZED_STRING*) yr_malloc( \
  |  | 1003|      2|      str_len + sizeof(SIZED_STRING)); \
  |  | 1004|      2|  if (str == NULL) \
  |  |  ------------------
  |  |  |  Branch (1004:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1005|      2|  { \
  |  | 1006|      0|    yyerror(yyscanner, compiler, "not enough memory"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  | 1007|      0|    yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1008|      0|  } \
  |  | 1009|      2|  else \
  |  | 1010|      2|  { \
  |  | 1011|      2|    str->length = (uint32_t) (str_len); \
  |  | 1012|      2|    str->flags = 0; \
  |  | 1013|      2|  } \
  ------------------
 2037|       |
 2038|      2|  *yyextra->lex_buf_ptr = '\0';
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
 2039|      2|  memcpy(s->c_string, yyextra->lex_buf, yyextra->lex_buf_len + 1);
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
                memcpy(s->c_string, yyextra->lex_buf, yyextra->lex_buf_len + 1);
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
 2040|       |
 2041|      2|  yylval->sized_string = s;
  ------------------
  |  | 1097|      2|    #    define yylval yyg->yylval_r
  ------------------
 2042|       |
 2043|      2|  BEGIN(INITIAL);
  ------------------
  |  |  357|      2|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                BEGIN(INITIAL);
  ------------------
  |  | 1039|      2|#define INITIAL 0
  ------------------
 2044|       |
 2045|      2|  return _TEXT_STRING_;
  ------------------
  |  |  143|      2|#define _TEXT_STRING_ 275
  ------------------
 2046|      2|}
 2047|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2048|      0|case 67:
  ------------------
  |  Branch (2048:1): [True: 0, False: 16]
  ------------------
 2049|      0|YY_RULE_SETUP
 2050|      0|#line 594 "lexer.l"
 2051|      0|{
 2052|       |
 2053|      0|  lex_check_space_ok("\t", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2054|      0|  *yyextra->lex_buf_ptr++ = '\t';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2055|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2056|      0|}
 2057|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2058|      0|case 68:
  ------------------
  |  Branch (2058:1): [True: 0, False: 16]
  ------------------
 2059|      0|YY_RULE_SETUP
 2060|      0|#line 602 "lexer.l"
 2061|      0|{
 2062|       |
 2063|      0|  lex_check_space_ok("\r", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2064|      0|  *yyextra->lex_buf_ptr++ = '\r';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2065|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2066|      0|}
 2067|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2068|      0|case 69:
  ------------------
  |  Branch (2068:1): [True: 0, False: 16]
  ------------------
 2069|      0|YY_RULE_SETUP
 2070|      0|#line 610 "lexer.l"
 2071|      0|{
 2072|       |
 2073|      0|  lex_check_space_ok("\n", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2074|      0|  *yyextra->lex_buf_ptr++ = '\n';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2075|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2076|      0|}
 2077|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2078|      0|case 70:
  ------------------
  |  Branch (2078:1): [True: 0, False: 16]
  ------------------
 2079|      0|YY_RULE_SETUP
 2080|      0|#line 618 "lexer.l"
 2081|      0|{
 2082|       |
 2083|      0|  lex_check_space_ok("\"", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2084|      0|  *yyextra->lex_buf_ptr++ = '\"';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2085|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2086|      0|}
 2087|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2088|      0|case 71:
  ------------------
  |  Branch (2088:1): [True: 0, False: 16]
  ------------------
 2089|      0|YY_RULE_SETUP
 2090|      0|#line 626 "lexer.l"
 2091|      0|{
 2092|       |
 2093|      0|  lex_check_space_ok("\\", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2094|      0|  *yyextra->lex_buf_ptr++ = '\\';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2095|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2096|      0|}
 2097|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2098|      0|case 72:
  ------------------
  |  Branch (2098:1): [True: 0, False: 16]
  ------------------
 2099|      0|YY_RULE_SETUP
 2100|      0|#line 634 "lexer.l"
 2101|      0|{
 2102|       |
 2103|      0|  int result;
 2104|       |
 2105|      0|  sscanf(yytext + 2, "%x", &result);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2106|      0|  lex_check_space_ok("X", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2107|      0|  *yyextra->lex_buf_ptr++ = result;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2108|      0|  yyextra->lex_buf_len++;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2109|      0|}
 2110|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2111|      2|case 73:
  ------------------
  |  Branch (2111:1): [True: 2, False: 14]
  ------------------
 2112|      2|YY_RULE_SETUP
 2113|      2|#line 645 "lexer.l"
 2114|      2|{ yytext_to_buffer; }
  ------------------
  |  |  991|      2|    { \
  |  |  992|      2|      char *yptr = yytext; \
  |  |  ------------------
  |  |  |  |  348|      2|#define yytext yyg->yytext_r
  |  |  ------------------
  |  |  993|      2|      lex_check_space_ok(yptr, yyextra->lex_buf_len, YR_LEX_BUF_SIZE); \
  |  |  ------------------
  |  |  |  |  984|      2|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (984:9): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  985|      2|    { \
  |  |  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  987|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  988|      0|    }
  |  |  ------------------
  |  |  994|      8|      while(*yptr) \
  |  |  ------------------
  |  |  |  Branch (994:13): [True: 6, False: 2]
  |  |  ------------------
  |  |  995|      6|      { \
  |  |  996|      6|        *yyextra->lex_buf_ptr++ = *yptr++; \
  |  |  ------------------
  |  |  |  |  346|      6|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  997|      6|        yyextra->lex_buf_len++; \
  |  |  ------------------
  |  |  |  |  346|      6|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  998|      6|      } \
  |  |  999|      2|    }
  ------------------
 2115|      2|	YY_BREAK
  ------------------
  |  | 1269|      2|#define YY_BREAK /*LINTED*/break;
  ------------------
 2116|      0|case 74:
  ------------------
  |  Branch (2116:1): [True: 0, False: 16]
  ------------------
 2117|       |/* rule 74 can match eol */
 2118|      0|YY_RULE_SETUP
 2119|      0|#line 648 "lexer.l"
 2120|      0|{
 2121|      0|  syntax_error("unterminated string");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2122|      0|}
 2123|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2124|      0|case 75:
  ------------------
  |  Branch (2124:1): [True: 0, False: 16]
  ------------------
 2125|       |/* rule 75 can match eol */
 2126|      0|YY_RULE_SETUP
 2127|      0|#line 653 "lexer.l"
 2128|      0|{
 2129|      0|  syntax_error("illegal escape sequence");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2130|      0|}
 2131|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2132|      0|case 76:
  ------------------
  |  Branch (2132:1): [True: 0, False: 16]
  ------------------
 2133|      0|YY_RULE_SETUP
 2134|      0|#line 658 "lexer.l"
 2135|      0|{
 2136|       |
 2137|      0|  if (yyextra->lex_buf_len > 0)
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
  |  Branch (2137:7): [True: 0, False: 0]
  ------------------
 2138|      0|  {
 2139|      0|    alloc_sized_string(s, yyextra->lex_buf_len);
  ------------------
  |  | 1002|      0|  SIZED_STRING* str = (SIZED_STRING*) yr_malloc( \
  |  | 1003|      0|      str_len + sizeof(SIZED_STRING)); \
  |  | 1004|      0|  if (str == NULL) \
  |  |  ------------------
  |  |  |  Branch (1004:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1005|      0|  { \
  |  | 1006|      0|    yyerror(yyscanner, compiler, "not enough memory"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  | 1007|      0|    yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1008|      0|  } \
  |  | 1009|      0|  else \
  |  | 1010|      0|  { \
  |  | 1011|      0|    str->length = (uint32_t) (str_len); \
  |  | 1012|      0|    str->flags = 0; \
  |  | 1013|      0|  } \
  ------------------
 2140|       |
 2141|      0|    if (yytext[1] == 'i')
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (2141:9): [True: 0, False: 0]
  ------------------
 2142|      0|      s->flags |= SIZED_STRING_FLAGS_NO_CASE;
  ------------------
  |  |   39|      0|#define SIZED_STRING_FLAGS_NO_CASE 1
  ------------------
 2143|       |
 2144|      0|    if (yytext[1] == 's' || yytext[2] == 's')
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
                  if (yytext[1] == 's' || yytext[2] == 's')
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (2144:9): [True: 0, False: 0]
  |  Branch (2144:29): [True: 0, False: 0]
  ------------------
 2145|      0|      s->flags |= SIZED_STRING_FLAGS_DOT_ALL;
  ------------------
  |  |   43|      0|#define SIZED_STRING_FLAGS_DOT_ALL 2
  ------------------
 2146|       |
 2147|      0|    *yyextra->lex_buf_ptr = '\0';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2148|      0|    strlcpy(s->c_string, yyextra->lex_buf, s->length + 1);
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2149|       |
 2150|      0|    yylval->sized_string = s;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 2151|      0|  }
 2152|      0|  else
 2153|      0|  {
 2154|      0|    syntax_error("empty regular expression");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2155|      0|  }
 2156|       |
 2157|      0|  BEGIN(INITIAL);
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                BEGIN(INITIAL);
  ------------------
  |  | 1039|      0|#define INITIAL 0
  ------------------
 2158|      0|  return _REGEXP_;
  ------------------
  |  |  145|      0|#define _REGEXP_ 277
  ------------------
 2159|      0|}
 2160|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2161|      0|case 77:
  ------------------
  |  Branch (2161:1): [True: 0, False: 16]
  ------------------
 2162|      0|YY_RULE_SETUP
 2163|      0|#line 685 "lexer.l"
 2164|      0|{
 2165|       |
 2166|      0|  lex_check_space_ok("/", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2167|      0|  *yyextra->lex_buf_ptr++ = '/';
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2168|      0|  yyextra->lex_buf_len++ ;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2169|      0|}
 2170|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2171|      0|case 78:
  ------------------
  |  Branch (2171:1): [True: 0, False: 16]
  ------------------
 2172|      0|YY_RULE_SETUP
 2173|      0|#line 693 "lexer.l"
 2174|      0|{
 2175|       |
 2176|      0|  lex_check_space_ok("\\.", yyextra->lex_buf_len, YR_LEX_BUF_SIZE);
  ------------------
  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  ------------------
  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  985|      0|    { \
  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  |  987|      0|      yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  988|      0|    }
  ------------------
 2177|       |
 2178|      0|  if (yytext[1] == 0)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (2178:7): [True: 0, False: 0]
  ------------------
 2179|      0|    syntax_error("malformed regular expression");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2180|       |
 2181|      0|  *yyextra->lex_buf_ptr++ = yytext[0];
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
                *yyextra->lex_buf_ptr++ = yytext[0];
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2182|      0|  *yyextra->lex_buf_ptr++ = yytext[1];
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
                *yyextra->lex_buf_ptr++ = yytext[1];
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2183|      0|  yyextra->lex_buf_len += 2;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2184|      0|}
 2185|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2186|      0|case 79:
  ------------------
  |  Branch (2186:1): [True: 0, False: 16]
  ------------------
 2187|      0|YY_RULE_SETUP
 2188|      0|#line 706 "lexer.l"
 2189|      0|{ yytext_to_buffer; }
  ------------------
  |  |  991|      0|    { \
  |  |  992|      0|      char *yptr = yytext; \
  |  |  ------------------
  |  |  |  |  348|      0|#define yytext yyg->yytext_r
  |  |  ------------------
  |  |  993|      0|      lex_check_space_ok(yptr, yyextra->lex_buf_len, YR_LEX_BUF_SIZE); \
  |  |  ------------------
  |  |  |  |  984|      0|    if (strlen(data) + current_size >= max_length - 1) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (984:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  985|      0|    { \
  |  |  |  |  986|      0|      yyerror(yyscanner, compiler, "out of space in lex_buf"); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  987|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  988|      0|    }
  |  |  ------------------
  |  |  994|      0|      while(*yptr) \
  |  |  ------------------
  |  |  |  Branch (994:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  995|      0|      { \
  |  |  996|      0|        *yyextra->lex_buf_ptr++ = *yptr++; \
  |  |  ------------------
  |  |  |  |  346|      0|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  997|      0|        yyextra->lex_buf_len++; \
  |  |  ------------------
  |  |  |  |  346|      0|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  998|      0|      } \
  |  |  999|      0|    }
  ------------------
 2190|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2191|      0|case 80:
  ------------------
  |  Branch (2191:1): [True: 0, False: 16]
  ------------------
 2192|       |/* rule 80 can match eol */
 2193|      0|YY_RULE_SETUP
 2194|      0|#line 709 "lexer.l"
 2195|      0|{
 2196|      0|  syntax_error("unterminated regular expression");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2197|      0|}
 2198|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2199|      2|case 81:
  ------------------
  |  Branch (2199:1): [True: 2, False: 14]
  ------------------
 2200|      2|YY_RULE_SETUP
 2201|      2|#line 714 "lexer.l"
 2202|      2|{
 2203|       |
 2204|      2|  yylval->sized_string = NULL;
  ------------------
  |  | 1097|      2|    #    define yylval yyg->yylval_r
  ------------------
 2205|      2|  yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
                yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
 2206|      2|  yyextra->lex_buf_len = 0;
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
 2207|      2|  BEGIN(str);
  ------------------
  |  |  357|      2|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                BEGIN(str);
  ------------------
  |  | 1040|      2|#define str 1
  ------------------
 2208|      2|}
 2209|      2|	YY_BREAK
  ------------------
  |  | 1269|      2|#define YY_BREAK /*LINTED*/break;
  ------------------
 2210|      0|case 82:
  ------------------
  |  Branch (2210:1): [True: 0, False: 16]
  ------------------
 2211|      0|YY_RULE_SETUP
 2212|      0|#line 723 "lexer.l"
 2213|      0|{
 2214|       |
 2215|      0|  yylval->sized_string = NULL;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 2216|      0|  yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
                yyextra->lex_buf_ptr = yyextra->lex_buf;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2217|      0|  yyextra->lex_buf_len = 0;
  ------------------
  |  |  346|      0|#define yyextra yyg->yyextra_r
  ------------------
 2218|      0|  BEGIN(regexp);
  ------------------
  |  |  357|      0|#define BEGIN yyg->yy_start = 1 + 2 *
  ------------------
                BEGIN(regexp);
  ------------------
  |  | 1041|      0|#define regexp 2
  ------------------
 2219|      0|}
 2220|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2221|      0|case 83:
  ------------------
  |  Branch (2221:1): [True: 0, False: 16]
  ------------------
 2222|       |/* rule 83 can match eol */
 2223|      0|YY_RULE_SETUP
 2224|      0|#line 732 "lexer.l"
 2225|      0|{
 2226|       |  // Match hex-digits with whitespace or comments. The latter are stripped
 2227|       |  // out by hex_lexer.l
 2228|       |  // TODO(vmalvarez): Integrate the hex string lexer and parser into this one,
 2229|       |  // by having a single lexer/parser instead of two different ones we can avoid
 2230|       |  // complex regular expressions like the one above, which is actually trying to
 2231|       |  // do some parsing in the lexer.
 2232|       |
 2233|      0|  alloc_sized_string(s, strlen(yytext));
  ------------------
  |  | 1002|      0|  SIZED_STRING* str = (SIZED_STRING*) yr_malloc( \
  |  | 1003|      0|      str_len + sizeof(SIZED_STRING)); \
  |  | 1004|      0|  if (str == NULL) \
  |  |  ------------------
  |  |  |  Branch (1004:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1005|      0|  { \
  |  | 1006|      0|    yyerror(yyscanner, compiler, "not enough memory"); \
  |  |  ------------------
  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  ------------------
  |  | 1007|      0|    yyterminate(); \
  |  |  ------------------
  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  ------------------
  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1008|      0|  } \
  |  | 1009|      0|  else \
  |  | 1010|      0|  { \
  |  | 1011|      0|    str->length = (uint32_t) (str_len); \
  |  | 1012|      0|    str->flags = 0; \
  |  | 1013|      0|  } \
  ------------------
 2234|       |
 2235|      0|  strlcpy(s->c_string, yytext, s->length + 1);
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2236|      0|  yylval->sized_string = s;
  ------------------
  |  | 1097|      0|    #    define yylval yyg->yylval_r
  ------------------
 2237|       |
 2238|      0|  return _HEX_STRING_;
  ------------------
  |  |  144|      0|#define _HEX_STRING_ 276
  ------------------
 2239|      0|}
 2240|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2241|      2|case 84:
  ------------------
  |  Branch (2241:1): [True: 2, False: 14]
  ------------------
 2242|       |/* rule 84 can match eol */
 2243|      2|YY_RULE_SETUP
 2244|      2|#line 749 "lexer.l"
 2245|       |/* skip whitespace */
 2246|      2|	YY_BREAK
  ------------------
  |  | 1269|      2|#define YY_BREAK /*LINTED*/break;
  ------------------
 2247|      0|case 85:
  ------------------
  |  Branch (2247:1): [True: 0, False: 16]
  ------------------
 2248|      0|YY_RULE_SETUP
 2249|      0|#line 751 "lexer.l"
 2250|      0|{
 2251|       |
 2252|      0|  if (yytext[0] >= 32 && yytext[0] < 127)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
                if (yytext[0] >= 32 && yytext[0] < 127)
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
  |  Branch (2252:7): [True: 0, False: 0]
  |  Branch (2252:26): [True: 0, False: 0]
  ------------------
 2253|      0|  {
 2254|      0|    return yytext[0];
  ------------------
  |  |  348|      0|#define yytext yyg->yytext_r
  ------------------
 2255|      0|  }
 2256|      0|  else
 2257|      0|  {
 2258|      0|    syntax_error("non-ascii character");
  ------------------
  |  |  978|      0|    { \
  |  |  979|      0|      yr_compiler_set_error_extra_info(compiler, error_msg); \
  |  |  ------------------
  |  |  |  |  305|      0|  strlcpy(                                               \
  |  |  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  |  |  307|      0|      info,                                              \
  |  |  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  |  |  ------------------
  |  |  980|      0|      error(ERROR_SYNTAX_ERROR); \
  |  |  ------------------
  |  |  |  |  971|      0|    { \
  |  |  |  |  972|      0|      compiler->last_error = error_code; \
  |  |  |  |  973|      0|      yyerror(yyscanner, compiler, NULL); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|#define yyerror      yara_yyerror
  |  |  |  |  ------------------
  |  |  |  |  974|      0|      yyterminate(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1232|      0|#define yyterminate() return YY_NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  329|      0|#define YY_NULL 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  975|      0|    }
  |  |  ------------------
  |  |  981|      0|    }
  ------------------
 2259|      0|  }
 2260|      0|}
 2261|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2262|      0|case 86:
  ------------------
  |  Branch (2262:1): [True: 0, False: 16]
  ------------------
 2263|      0|YY_RULE_SETUP
 2264|      0|#line 763 "lexer.l"
 2265|      0|ECHO;
  ------------------
  |  | 1188|      0|#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
  |  |  ------------------
  |  |  |  |  348|      0|#define yytext yyg->yytext_r
  |  |  ------------------
  |  |               #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
  |  |  ------------------
  |  |  |  |  347|      0|#define yyleng yyg->yyleng_r
  |  |  ------------------
  |  |               #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
  |  |  ------------------
  |  |  |  |  345|      0|#define yyout yyg->yyout_r
  |  |  ------------------
  |  |  |  Branch (1188:23): [True: 0, False: 0]
  |  |  |  Branch (1188:80): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2266|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2267|      0|#line 2267 "lexer.c"
 2268|       |
 2269|      4|	case YY_END_OF_BUFFER:
  ------------------
  |  |  584|      4|#define YY_END_OF_BUFFER 87
  ------------------
  |  Branch (2269:2): [True: 4, False: 12]
  ------------------
 2270|      4|		{
 2271|       |		/* Amount of text matched not including the EOB char. */
 2272|      4|		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
  ------------------
  |  |  567|      4|#define yytext_ptr yytext_r
  ------------------
 2273|       |
 2274|       |		/* Undo the effects of YY_DO_BEFORE_ACTION. */
 2275|      4|		*yy_cp = yyg->yy_hold_char;
 2276|      4|		YY_RESTORE_YY_MORE_OFFSET
 2277|       |
 2278|      4|		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  ------------------
  |  |  486|      4|#define YY_BUFFER_NEW 0
  ------------------
  |  Branch (2278:8): [True: 2, False: 2]
  ------------------
 2279|      2|			{
 2280|       |			/* We're scanning a new file or input source.  It's
 2281|       |			 * possible that this happened because the user
 2282|       |			 * just pointed yyin at a new source and called
 2283|       |			 * yylex().  If so, then we have to assure
 2284|       |			 * consistency between YY_CURRENT_BUFFER and our
 2285|       |			 * globals.  Here is the right place to do so, because
 2286|       |			 * this is the first action (other than possibly a
 2287|       |			 * back-up) that will match for the new input source.
 2288|       |			 */
 2289|      2|			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2290|      2|			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
  ------------------
  |  |  344|      2|#define yyin yyg->yyin_r
  ------------------
 2291|      2|			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  ------------------
  |  |  487|      2|#define YY_BUFFER_NORMAL 1
  ------------------
 2292|      2|			}
 2293|       |
 2294|       |		/* Note that here we test for yy_c_buf_p "<=" to the position
 2295|       |		 * of the first EOB in the buffer, since yy_c_buf_p will
 2296|       |		 * already have been incremented past the NUL character
 2297|       |		 * (since all states make transitions on EOB to the
 2298|       |		 * end-of-buffer state).  Contrast this with the test
 2299|       |		 * in input().
 2300|       |		 */
 2301|      4|		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
  |  Branch (2301:8): [True: 0, False: 4]
  ------------------
 2302|      0|			{ /* This was really a NUL. */
 2303|      0|			yy_state_type yy_next_state;
 2304|       |
 2305|      0|			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
 2306|       |
 2307|      0|			yy_current_state = yy_get_previous_state( yyscanner );
 2308|       |
 2309|       |			/* Okay, we're now positioned to make the NUL
 2310|       |			 * transition.  We couldn't have
 2311|       |			 * yy_get_previous_state() go ahead and do it
 2312|       |			 * for us because it doesn't know how to deal
 2313|       |			 * with the possibility of jamming (and we don't
 2314|       |			 * want to build jamming into it because then it
 2315|       |			 * will run more slowly).
 2316|       |			 */
 2317|       |
 2318|      0|			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
 2319|       |
 2320|      0|			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
              			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  895|      0|#define YY_MORE_ADJ 0
  ------------------
 2321|       |
 2322|      0|			if ( yy_next_state )
  ------------------
  |  Branch (2322:9): [True: 0, False: 0]
  ------------------
 2323|      0|				{
 2324|       |				/* Consume the NUL. */
 2325|      0|				yy_cp = ++yyg->yy_c_buf_p;
 2326|      0|				yy_current_state = yy_next_state;
 2327|      0|				goto yy_match;
 2328|      0|				}
 2329|       |
 2330|      0|			else
 2331|      0|				{
 2332|      0|				yy_cp = yyg->yy_last_accepting_cpos;
 2333|      0|				yy_current_state = yyg->yy_last_accepting_state;
 2334|      0|				goto yy_find_action;
 2335|      0|				}
 2336|      0|			}
 2337|       |
 2338|      4|		else switch ( yy_get_next_buffer( yyscanner ) )
  ------------------
  |  Branch (2338:17): [True: 0, False: 4]
  ------------------
 2339|      4|			{
 2340|      2|			case EOB_ACT_END_OF_FILE:
  ------------------
  |  |  398|      2|#define EOB_ACT_END_OF_FILE 1
  ------------------
  |  Branch (2340:4): [True: 2, False: 2]
  ------------------
 2341|      2|				{
 2342|      2|				yyg->yy_did_buffer_switch_on_eof = 0;
 2343|       |
 2344|      2|				if ( yywrap( yyscanner ) )
  ------------------
  |  |  206|      2|#define yywrap yara_yywrap
  |  |  ------------------
  |  |  |  |  561|      2|#define yara_yywrap(yyscanner) (/*CONSTCOND*/1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (561:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2345|      2|					{
 2346|       |					/* Note: because we've taken care in
 2347|       |					 * yy_get_next_buffer() to have set up
 2348|       |					 * yytext, we can now set up
 2349|       |					 * yy_c_buf_p so that if some total
 2350|       |					 * hoser (like flex itself) wants to
 2351|       |					 * call the scanner after we return the
 2352|       |					 * YY_NULL, it'll still work - another
 2353|       |					 * YY_NULL will get returned.
 2354|       |					 */
 2355|      2|					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  567|      2|#define yytext_ptr yytext_r
  ------------------
              					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  895|      2|#define YY_MORE_ADJ 0
  ------------------
 2356|       |
 2357|      2|					yy_act = YY_STATE_EOF(YY_START);
  ------------------
  |  |  365|      2|#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  |  |  ------------------
  |  |  |  |  584|      2|#define YY_END_OF_BUFFER 87
  |  |  ------------------
  ------------------
 2358|      2|					goto do_action;
 2359|      2|					}
 2360|       |
 2361|      0|				else
 2362|      0|					{
 2363|      0|					if ( ! yyg->yy_did_buffer_switch_on_eof )
  ------------------
  |  Branch (2363:11): [True: 0, False: 0]
  ------------------
 2364|      0|						YY_NEW_FILE;
  ------------------
  |  |  367|      0|#define YY_NEW_FILE yyrestart( yyin , yyscanner )
  |  |  ------------------
  |  |  |  |   98|      0|#define yyrestart yara_yyrestart
  |  |  ------------------
  |  |               #define YY_NEW_FILE yyrestart( yyin , yyscanner )
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  ------------------
 2365|      0|					}
 2366|      0|				break;
 2367|      2|				}
 2368|       |
 2369|      0|			case EOB_ACT_CONTINUE_SCAN:
  ------------------
  |  |  397|      0|#define EOB_ACT_CONTINUE_SCAN 0
  ------------------
  |  Branch (2369:4): [True: 0, False: 4]
  ------------------
 2370|      0|				yyg->yy_c_buf_p =
 2371|      0|					yyg->yytext_ptr + yy_amount_of_matched_text;
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
 2372|       |
 2373|      0|				yy_current_state = yy_get_previous_state( yyscanner );
 2374|       |
 2375|      0|				yy_cp = yyg->yy_c_buf_p;
 2376|      0|				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
              				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  895|      0|#define YY_MORE_ADJ 0
  ------------------
 2377|      0|				goto yy_match;
 2378|       |
 2379|      2|			case EOB_ACT_LAST_MATCH:
  ------------------
  |  |  399|      2|#define EOB_ACT_LAST_MATCH 2
  ------------------
  |  Branch (2379:4): [True: 2, False: 2]
  ------------------
 2380|      2|				yyg->yy_c_buf_p =
 2381|      2|				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2382|       |
 2383|      2|				yy_current_state = yy_get_previous_state( yyscanner );
 2384|       |
 2385|      2|				yy_cp = yyg->yy_c_buf_p;
 2386|      2|				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  567|      2|#define yytext_ptr yytext_r
  ------------------
              				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  ------------------
  |  |  895|      2|#define YY_MORE_ADJ 0
  ------------------
 2387|      2|				goto yy_find_action;
 2388|      4|			}
 2389|      0|		break;
 2390|      4|		}
 2391|       |
 2392|      0|	default:
  ------------------
  |  Branch (2392:2): [True: 0, False: 16]
  ------------------
 2393|      0|		YY_FATAL_ERROR(
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2394|     16|			"fatal flex scanner internal error--no action found" );
 2395|     16|	} /* end of action switch */
 2396|     16|		} /* end of scanning one token */
 2397|      6|	} /* end of user's declarations */
 2398|      6|} /* end of yylex */
yara_yy_switch_to_buffer:
 2714|      2|{
 2715|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2716|       |
 2717|       |	/* TODO. We should be able to replace this entire function body
 2718|       |	 * with
 2719|       |	 *		yypop_buffer_state();
 2720|       |	 *		yypush_buffer_state(new_buffer);
 2721|       |     */
 2722|      2|	yyensure_buffer_stack (yyscanner);
  ------------------
  |  |   86|      2|#define yyensure_buffer_stack yara_yyensure_buffer_stack
  ------------------
 2723|      2|	if ( YY_CURRENT_BUFFER == new_buffer )
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (2723:7): [True: 0, False: 2]
  ------------------
 2724|      0|		return;
 2725|       |
 2726|      2|	if ( YY_CURRENT_BUFFER )
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:27): [True: 0, False: 2]
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
 2727|      0|		{
 2728|       |		/* Flush out information for old buffer. */
 2729|      0|		*yyg->yy_c_buf_p = yyg->yy_hold_char;
 2730|      0|		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2731|      0|		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2732|      0|		}
 2733|       |
 2734|      2|	YY_CURRENT_BUFFER_LVALUE = new_buffer;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2735|      2|	yy_load_buffer_state( yyscanner );
  ------------------
  |  |   62|      2|#define yy_load_buffer_state yara_yy_load_buffer_state
  ------------------
 2736|       |
 2737|       |	/* We don't actually know whether we did this switch during
 2738|       |	 * EOF (yywrap()) processing, but the only time this flag
 2739|       |	 * is looked at is after yywrap() is called, so it's safe
 2740|       |	 * to go ahead and always set it.
 2741|       |	 */
 2742|      2|	yyg->yy_did_buffer_switch_on_eof = 1;
 2743|      2|}
yara_yy_delete_buffer:
 2789|      2|{
 2790|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2791|       |
 2792|      2|	if ( ! b )
  ------------------
  |  Branch (2792:7): [True: 0, False: 2]
  ------------------
 2793|      0|		return;
 2794|       |
 2795|      2|	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (2795:7): [True: 2, False: 0]
  ------------------
 2796|      2|		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2797|       |
 2798|      2|	if ( b->yy_is_our_buffer )
  ------------------
  |  Branch (2798:7): [True: 2, False: 0]
  ------------------
 2799|      2|		yyfree( (void *) b->yy_ch_buf , yyscanner );
  ------------------
  |  |  236|      2|#define yyfree yara_yyfree
  ------------------
 2800|       |
 2801|      2|	yyfree( (void *) b , yyscanner );
  ------------------
  |  |  236|      2|#define yyfree yara_yyfree
  ------------------
 2802|      2|}
yara_yypop_buffer_state:
 2899|      2|{
 2900|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2901|      2|	if (!YY_CURRENT_BUFFER)
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (2901:6): [True: 0, False: 2]
  ------------------
 2902|      0|		return;
 2903|       |
 2904|      2|	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
  ------------------
  |  |   26|      2|#define yy_delete_buffer yara_yy_delete_buffer
  ------------------
              	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
 2905|      2|	YY_CURRENT_BUFFER_LVALUE = NULL;
  ------------------
  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2906|      2|	if (yyg->yy_buffer_stack_top > 0)
  ------------------
  |  Branch (2906:6): [True: 0, False: 2]
  ------------------
 2907|      0|		--yyg->yy_buffer_stack_top;
 2908|       |
 2909|      2|	if (YY_CURRENT_BUFFER) {
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:27): [True: 0, False: 2]
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
 2910|      0|		yy_load_buffer_state( yyscanner );
  ------------------
  |  |   62|      0|#define yy_load_buffer_state yara_yy_load_buffer_state
  ------------------
 2911|      0|		yyg->yy_did_buffer_switch_on_eof = 1;
 2912|      0|	}
 2913|      2|}
yara_yy_scan_buffer:
 2969|      2|{
 2970|      2|	YY_BUFFER_STATE b;
 2971|       |    
 2972|      2|	if ( size < 2 ||
  ------------------
  |  Branch (2972:7): [True: 0, False: 2]
  ------------------
 2973|      2|	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
  ------------------
  |  |  368|      4|#define YY_END_OF_BUFFER_CHAR 0
  ------------------
  |  Branch (2973:7): [True: 0, False: 2]
  ------------------
 2974|      2|	     base[size-1] != YY_END_OF_BUFFER_CHAR )
  ------------------
  |  |  368|      2|#define YY_END_OF_BUFFER_CHAR 0
  ------------------
  |  Branch (2974:7): [True: 0, False: 2]
  ------------------
 2975|       |		/* They forgot to leave room for the EOB's. */
 2976|      0|		return NULL;
 2977|       |
 2978|      2|	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
  ------------------
  |  |  224|      2|#define yyalloc yara_yyalloc
  ------------------
 2979|      2|	if ( ! b )
  ------------------
  |  Branch (2979:7): [True: 0, False: 2]
  ------------------
 2980|      0|		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2981|       |
 2982|      2|	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
 2983|      2|	b->yy_buf_pos = b->yy_ch_buf = base;
 2984|      2|	b->yy_is_our_buffer = 0;
 2985|      2|	b->yy_input_file = NULL;
 2986|      2|	b->yy_n_chars = b->yy_buf_size;
 2987|      2|	b->yy_is_interactive = 0;
 2988|      2|	b->yy_at_bol = 1;
 2989|      2|	b->yy_fill_buffer = 0;
 2990|      2|	b->yy_buffer_status = YY_BUFFER_NEW;
  ------------------
  |  |  486|      2|#define YY_BUFFER_NEW 0
  ------------------
 2991|       |
 2992|      2|	yy_switch_to_buffer( b , yyscanner );
  ------------------
  |  |   68|      2|#define yy_switch_to_buffer yara_yy_switch_to_buffer
  ------------------
 2993|       |
 2994|      2|	return b;
 2995|      2|}
yara_yy_scan_string:
 3006|      2|{
 3007|       |    
 3008|      2|	return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
  ------------------
  |  |   44|      2|#define yy_scan_bytes yara_yy_scan_bytes
  ------------------
 3009|      2|}
yara_yy_scan_bytes:
 3019|      2|{
 3020|      2|	YY_BUFFER_STATE b;
 3021|      2|	char *buf;
 3022|      2|	yy_size_t n;
 3023|      2|	int i;
 3024|       |    
 3025|       |	/* Get memory for full buffer, including space for trailing EOB's. */
 3026|      2|	n = (yy_size_t) (_yybytes_len + 2);
 3027|      2|	buf = (char *) yyalloc( n , yyscanner );
  ------------------
  |  |  224|      2|#define yyalloc yara_yyalloc
  ------------------
 3028|      2|	if ( ! buf )
  ------------------
  |  Branch (3028:7): [True: 0, False: 2]
  ------------------
 3029|      0|		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 3030|       |
 3031|     26|	for ( i = 0; i < _yybytes_len; ++i )
  ------------------
  |  Branch (3031:15): [True: 24, False: 2]
  ------------------
 3032|     24|		buf[i] = yybytes[i];
 3033|       |
 3034|      2|	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
  ------------------
  |  |  368|      2|#define YY_END_OF_BUFFER_CHAR 0
  ------------------
 3035|       |
 3036|      2|	b = yy_scan_buffer( buf, n , yyscanner);
  ------------------
  |  |   32|      2|#define yy_scan_buffer yara_yy_scan_buffer
  ------------------
 3037|      2|	if ( ! b )
  ------------------
  |  Branch (3037:7): [True: 0, False: 2]
  ------------------
 3038|      0|		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 3039|       |
 3040|       |	/* It's okay to grow etc. this buffer, and we should throw it
 3041|       |	 * away when we're done.
 3042|       |	 */
 3043|      2|	b->yy_is_our_buffer = 1;
 3044|       |
 3045|      2|	return b;
 3046|      2|}
yara_yyget_extra:
 3083|      8|{
 3084|      8|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3085|      8|    return yyextra;
  ------------------
  |  |  346|      8|#define yyextra yyg->yyextra_r
  ------------------
 3086|      8|}
yara_yyset_extra:
 3156|      2|{
 3157|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3158|      2|    yyextra = user_defined ;
  ------------------
  |  |  346|      2|#define yyextra yyg->yyextra_r
  ------------------
 3159|      2|}
yara_yyset_lineno:
 3166|      2|{
 3167|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3168|       |
 3169|       |        /* lineno is only valid if an input buffer exists. */
 3170|      2|        if (! YY_CURRENT_BUFFER )
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
  |  Branch (3170:13): [True: 0, False: 2]
  ------------------
 3171|      0|           YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 3172|       |    
 3173|      2|    yylineno = _line_number;
  ------------------
  |  |  349|      2|#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
  |  |  ------------------
  |  |  |  |  515|      2|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  |  |  ------------------
  ------------------
 3174|      2|}
yara_yylex_init:
 3242|      2|{
 3243|      2|    if (ptr_yy_globals == NULL){
  ------------------
  |  Branch (3243:9): [True: 0, False: 2]
  ------------------
 3244|      0|        errno = EINVAL;
 3245|      0|        return 1;
 3246|      0|    }
 3247|       |
 3248|      2|    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
  ------------------
  |  |  224|      2|#define yyalloc yara_yyalloc
  ------------------
 3249|       |
 3250|      2|    if (*ptr_yy_globals == NULL){
  ------------------
  |  Branch (3250:9): [True: 0, False: 2]
  ------------------
 3251|      0|        errno = ENOMEM;
 3252|      0|        return 1;
 3253|      0|    }
 3254|       |
 3255|       |    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
 3256|      2|    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
 3257|       |
 3258|      2|    return yy_init_globals ( *ptr_yy_globals );
 3259|      2|}
yara_yylex_destroy:
 3330|      2|{
 3331|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3332|       |
 3333|       |    /* Pop the buffer stack, destroying each element. */
 3334|      2|	while(YY_CURRENT_BUFFER){
  ------------------
  |  |  509|      2|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:27): [True: 0, False: 2]
  |  |  |  Branch (509:29): [True: 2, False: 0]
  |  |  ------------------
  |  |  510|      2|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      2|                          : NULL)
  ------------------
 3335|      0|		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
  ------------------
  |  |   26|      0|#define yy_delete_buffer yara_yy_delete_buffer
  ------------------
              		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
  ------------------
  |  |  509|      0|#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  |  |  ------------------
  |  |  |  Branch (509:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  510|      0|                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  |  |  511|      0|                          : NULL)
  ------------------
 3336|      0|		YY_CURRENT_BUFFER_LVALUE = NULL;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 3337|      0|		yypop_buffer_state(yyscanner);
  ------------------
  |  |   80|      0|#define yypop_buffer_state yara_yypop_buffer_state
  ------------------
 3338|      0|	}
 3339|       |
 3340|       |	/* Destroy the stack itself. */
 3341|      2|	yyfree(yyg->yy_buffer_stack , yyscanner);
  ------------------
  |  |  236|      2|#define yyfree yara_yyfree
  ------------------
 3342|      2|	yyg->yy_buffer_stack = NULL;
 3343|       |
 3344|       |    /* Destroy the start condition stack. */
 3345|      2|        yyfree( yyg->yy_start_stack , yyscanner );
  ------------------
  |  |  236|      2|#define yyfree yara_yyfree
  ------------------
 3346|      2|        yyg->yy_start_stack = NULL;
 3347|       |
 3348|       |    /* Reset the globals. This is important in a non-reentrant scanner so the next time
 3349|       |     * yylex() is called, initialization will occur. */
 3350|      2|    yy_init_globals( yyscanner);
 3351|       |
 3352|       |    /* Destroy the main struct (reentrant only). */
 3353|      2|    yyfree ( yyscanner , yyscanner );
  ------------------
  |  |  236|      2|#define yyfree yara_yyfree
  ------------------
 3354|      2|    yyscanner = NULL;
 3355|      2|    return 0;
 3356|      2|}
yara_yyalloc:
 3386|      8|{
 3387|      8|	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3388|      8|	(void)yyg;
 3389|      8|	return malloc(size);
 3390|      8|}
yara_yyfree:
 3408|     10|{
 3409|     10|	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3410|     10|	(void)yyg;
 3411|     10|	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
 3412|     10|}
yr_lex_parse_rules_string:
 3579|      2|{
 3580|      2|  yyscan_t yyscanner;
 3581|       |
 3582|      2|  compiler->errors = 0;
 3583|       |
 3584|      2|  if (yylex_init(&yyscanner) != 0)
  ------------------
  |  |  104|      2|#define yylex_init yara_yylex_init
  ------------------
  |  Branch (3584:7): [True: 0, False: 2]
  ------------------
 3585|      0|  {
 3586|      0|    compiler->errors = 1;
 3587|      0|    compiler->last_error = ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 3588|      0|    return compiler->errors;
 3589|      0|  }
 3590|       |
 3591|      2|  if (setjmp(compiler->error_recovery) != 0)
  ------------------
  |  Branch (3591:7): [True: 0, False: 2]
  ------------------
 3592|      0|    return compiler->errors;
 3593|       |
 3594|       |  #if YYDEBUG
 3595|       |  yydebug = 1;
 3596|       |  #endif
 3597|       |
 3598|      2|  yyset_extra(compiler, yyscanner);
  ------------------
  |  |  140|      2|#define yyset_extra yara_yyset_extra
  ------------------
 3599|      2|  yy_scan_string(rules_string, yyscanner);
  ------------------
  |  |   38|      2|#define yy_scan_string yara_yy_scan_string
  ------------------
 3600|      2|  yyset_lineno(1, yyscanner);
  ------------------
  |  |  188|      2|#define yyset_lineno yara_yyset_lineno
  ------------------
 3601|      2|  yyparse(yyscanner, compiler);
  ------------------
  |  |   47|      2|#define yyparse      yara_yyparse
  ------------------
 3602|      2|  yylex_destroy(yyscanner);
  ------------------
  |  |  116|      2|#define yylex_destroy yara_yylex_destroy
  ------------------
 3603|       |
 3604|      2|  return compiler->errors;
 3605|      2|}
lexer.c:yy_get_next_buffer:
 2408|      4|{
 2409|      4|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2410|      4|	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2411|      4|	char *source = yyg->yytext_ptr;
  ------------------
  |  |  567|      4|#define yytext_ptr yytext_r
  ------------------
 2412|      4|	int number_to_move, i;
 2413|      4|	int ret_val;
 2414|       |
 2415|      4|	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
  |  Branch (2415:7): [True: 0, False: 4]
  ------------------
 2416|      0|		YY_FATAL_ERROR(
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2417|      4|		"fatal flex scanner internal error--end of buffer missed" );
 2418|       |
 2419|      4|	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
  |  Branch (2419:7): [True: 4, False: 0]
  ------------------
 2420|      4|		{ /* Don't try to fill the buffer, so this is an EOF. */
 2421|      4|		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
  ------------------
  |  |  567|      4|#define yytext_ptr yytext_r
  ------------------
              		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
  ------------------
  |  |  895|      4|#define YY_MORE_ADJ 0
  ------------------
  |  Branch (2421:8): [True: 2, False: 2]
  ------------------
 2422|      2|			{
 2423|       |			/* We matched a single character, the EOB, so
 2424|       |			 * treat this as a final EOF.
 2425|       |			 */
 2426|      2|			return EOB_ACT_END_OF_FILE;
  ------------------
  |  |  398|      2|#define EOB_ACT_END_OF_FILE 1
  ------------------
 2427|      2|			}
 2428|       |
 2429|      2|		else
 2430|      2|			{
 2431|       |			/* We matched some text prior to the EOB, first
 2432|       |			 * process it.
 2433|       |			 */
 2434|      2|			return EOB_ACT_LAST_MATCH;
  ------------------
  |  |  399|      2|#define EOB_ACT_LAST_MATCH 2
  ------------------
 2435|      2|			}
 2436|      4|		}
 2437|       |
 2438|       |	/* Try to read more data. */
 2439|       |
 2440|       |	/* First move last chars to start of buffer. */
 2441|      0|	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
 2442|       |
 2443|      0|	for ( i = 0; i < number_to_move; ++i )
  ------------------
  |  Branch (2443:15): [True: 0, False: 0]
  ------------------
 2444|      0|		*(dest++) = *(source++);
 2445|       |
 2446|      0|	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  ------------------
  |  |  498|      0|#define YY_BUFFER_EOF_PENDING 2
  ------------------
  |  Branch (2446:7): [True: 0, False: 0]
  ------------------
 2447|       |		/* don't do the read, it's not guaranteed to return an EOF,
 2448|       |		 * just force an EOF
 2449|       |		 */
 2450|      0|		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2451|       |
 2452|      0|	else
 2453|      0|		{
 2454|      0|			int num_to_read =
 2455|      0|			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2456|       |
 2457|      0|		while ( num_to_read <= 0 )
  ------------------
  |  Branch (2457:11): [True: 0, False: 0]
  ------------------
 2458|      0|			{ /* Not enough room in the buffer - grow it. */
 2459|       |
 2460|       |			/* just a shorter name for the current buffer */
 2461|      0|			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2462|       |
 2463|      0|			int yy_c_buf_p_offset =
 2464|      0|				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
 2465|       |
 2466|      0|			if ( b->yy_is_our_buffer )
  ------------------
  |  Branch (2466:9): [True: 0, False: 0]
  ------------------
 2467|      0|				{
 2468|      0|				int new_size = b->yy_buf_size * 2;
 2469|       |
 2470|      0|				if ( new_size <= 0 )
  ------------------
  |  Branch (2470:10): [True: 0, False: 0]
  ------------------
 2471|      0|					b->yy_buf_size += b->yy_buf_size / 8;
 2472|      0|				else
 2473|      0|					b->yy_buf_size *= 2;
 2474|       |
 2475|      0|				b->yy_ch_buf = (char *)
 2476|       |					/* Include room in for 2 EOB chars. */
 2477|      0|					yyrealloc( (void *) b->yy_ch_buf,
  ------------------
  |  |  230|      0|#define yyrealloc yara_yyrealloc
  ------------------
 2478|      0|							 (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
 2479|      0|				}
 2480|      0|			else
 2481|       |				/* Can't grow it, we don't own it. */
 2482|      0|				b->yy_ch_buf = NULL;
 2483|       |
 2484|      0|			if ( ! b->yy_ch_buf )
  ------------------
  |  Branch (2484:9): [True: 0, False: 0]
  ------------------
 2485|      0|				YY_FATAL_ERROR(
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2486|      0|				"fatal error - scanner input buffer overflow" );
 2487|       |
 2488|      0|			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
 2489|       |
 2490|      0|			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2491|      0|						number_to_move - 1;
 2492|       |
 2493|      0|			}
 2494|       |
 2495|      0|		if ( num_to_read > YY_READ_BUF_SIZE )
  ------------------
  |  | 1179|      0|#define YY_READ_BUF_SIZE 8192
  ------------------
  |  Branch (2495:8): [True: 0, False: 0]
  ------------------
 2496|      0|			num_to_read = YY_READ_BUF_SIZE;
  ------------------
  |  | 1179|      0|#define YY_READ_BUF_SIZE 8192
  ------------------
 2497|       |
 2498|       |		/* Read in more data. */
 2499|      0|		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  ------------------
  |  | 1196|      0|	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
  |  |  ------------------
  |  |  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  |  |  ------------------
  |  |  |  Branch (1196:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1197|      0|		{ \
  |  | 1198|      0|		int c = '*'; \
  |  | 1199|      0|		int n; \
  |  | 1200|      0|		for ( n = 0; n < max_size && \
  |  |  ------------------
  |  |  |  Branch (1200:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 1201|      0|			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  |  |  |  Branch (1201:9): [True: 0, False: 0]
  |  |  |  Branch (1201:38): [True: 0, False: 0]
  |  |  ------------------
  |  | 1202|      0|			buf[n] = (char) c; \
  |  | 1203|      0|		if ( c == '\n' ) \
  |  |  ------------------
  |  |  |  Branch (1203:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1204|      0|			buf[n++] = (char) c; \
  |  | 1205|      0|		if ( c == EOF && ferror( yyin ) ) \
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  |  |  |  Branch (1205:8): [True: 0, False: 0]
  |  |  |  Branch (1205:20): [True: 0, False: 0]
  |  |  ------------------
  |  | 1206|      0|			YY_FATAL_ERROR( "input in flex scanner failed" ); \
  |  |  ------------------
  |  |  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  |  |  ------------------
  |  | 1207|      0|		result = n; \
  |  | 1208|      0|		} \
  |  | 1209|      0|	else \
  |  | 1210|      0|		{ \
  |  | 1211|      0|		errno=0; \
  |  | 1212|      0|		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  |  |               		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  |  |  |  Branch (1212:11): [True: 0, False: 0]
  |  |  |  Branch (1212:78): [True: 0, False: 0]
  |  |  ------------------
  |  | 1213|      0|			{ \
  |  | 1214|      0|			if( errno != EINTR) \
  |  |  ------------------
  |  |  |  Branch (1214:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1215|      0|				{ \
  |  | 1216|      0|				YY_FATAL_ERROR( "input in flex scanner failed" ); \
  |  |  ------------------
  |  |  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  |  |  ------------------
  |  | 1217|      0|				break; \
  |  | 1218|      0|				} \
  |  | 1219|      0|			errno=0; \
  |  | 1220|      0|			clearerr(yyin); \
  |  |  ------------------
  |  |  |  |  344|      0|#define yyin yyg->yyin_r
  |  |  ------------------
  |  | 1221|      0|			} \
  |  | 1222|      0|		}\
  ------------------
 2500|      0|			yyg->yy_n_chars, num_to_read );
 2501|       |
 2502|      0|		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2503|      0|		}
 2504|       |
 2505|      0|	if ( yyg->yy_n_chars == 0 )
  ------------------
  |  Branch (2505:7): [True: 0, False: 0]
  ------------------
 2506|      0|		{
 2507|      0|		if ( number_to_move == YY_MORE_ADJ )
  ------------------
  |  |  895|      0|#define YY_MORE_ADJ 0
  ------------------
  |  Branch (2507:8): [True: 0, False: 0]
  ------------------
 2508|      0|			{
 2509|      0|			ret_val = EOB_ACT_END_OF_FILE;
  ------------------
  |  |  398|      0|#define EOB_ACT_END_OF_FILE 1
  ------------------
 2510|      0|			yyrestart( yyin  , yyscanner);
  ------------------
  |  |   98|      0|#define yyrestart yara_yyrestart
  ------------------
              			yyrestart( yyin  , yyscanner);
  ------------------
  |  |  344|      0|#define yyin yyg->yyin_r
  ------------------
 2511|      0|			}
 2512|       |
 2513|      0|		else
 2514|      0|			{
 2515|      0|			ret_val = EOB_ACT_LAST_MATCH;
  ------------------
  |  |  399|      0|#define EOB_ACT_LAST_MATCH 2
  ------------------
 2516|      0|			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2517|      0|				YY_BUFFER_EOF_PENDING;
  ------------------
  |  |  498|      0|#define YY_BUFFER_EOF_PENDING 2
  ------------------
 2518|      0|			}
 2519|      0|		}
 2520|       |
 2521|      0|	else
 2522|      0|		ret_val = EOB_ACT_CONTINUE_SCAN;
  ------------------
  |  |  397|      0|#define EOB_ACT_CONTINUE_SCAN 0
  ------------------
 2523|       |
 2524|      0|	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
  |  Branch (2524:6): [True: 0, False: 0]
  ------------------
 2525|       |		/* Extend the array by 50%, plus the number we really need. */
 2526|      0|		int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
 2527|      0|		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
  ------------------
  |  |  230|      0|#define yyrealloc yara_yyrealloc
  ------------------
 2528|      0|			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2529|      0|		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
  |  Branch (2529:8): [True: 0, False: 0]
  ------------------
 2530|      0|			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2531|       |		/* "- 2" to take care of EOB's */
 2532|      0|		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2533|      0|	}
 2534|       |
 2535|      0|	yyg->yy_n_chars += number_to_move;
 2536|      0|	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  ------------------
  |  |  368|      0|#define YY_END_OF_BUFFER_CHAR 0
  ------------------
 2537|      0|	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
              	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  ------------------
  |  |  368|      0|#define YY_END_OF_BUFFER_CHAR 0
  ------------------
 2538|       |
 2539|      0|	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  ------------------
  |  |  567|      0|#define yytext_ptr yytext_r
  ------------------
              	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  ------------------
  |  |  515|      0|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2540|       |
 2541|      0|	return ret_val;
 2542|      4|}
lexer.c:yy_get_previous_state:
 2547|      2|{
 2548|      2|	yy_state_type yy_current_state;
 2549|      2|	char *yy_cp;
 2550|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2551|       |
 2552|      2|	yy_current_state = yyg->yy_start;
 2553|       |
 2554|      4|	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
  ------------------
  |  |  567|      2|#define yytext_ptr yytext_r
  ------------------
              	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
  ------------------
  |  |  895|      2|#define YY_MORE_ADJ 0
  ------------------
  |  Branch (2554:47): [True: 2, False: 2]
  ------------------
 2555|      2|		{
 2556|      2|		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  ------------------
  |  |  334|      2|#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
  ------------------
  |  Branch (2556:19): [True: 2, False: 0]
  ------------------
 2557|      2|		if ( yy_accept[yy_current_state] )
  ------------------
  |  Branch (2557:8): [True: 0, False: 2]
  ------------------
 2558|      0|			{
 2559|      0|			yyg->yy_last_accepting_state = yy_current_state;
 2560|      0|			yyg->yy_last_accepting_cpos = yy_cp;
 2561|      0|			}
 2562|      2|		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  ------------------
  |  Branch (2562:11): [True: 0, False: 2]
  ------------------
 2563|      0|			{
 2564|      0|			yy_current_state = (int) yy_def[yy_current_state];
 2565|      0|			if ( yy_current_state >= 295 )
  ------------------
  |  Branch (2565:9): [True: 0, False: 0]
  ------------------
 2566|      0|				yy_c = yy_meta[yy_c];
 2567|      0|			}
 2568|      2|		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 2569|      2|		}
 2570|       |
 2571|      2|	return yy_current_state;
 2572|      2|}
lexer.c:yara_yy_load_buffer_state:
 2746|      4|{
 2747|      4|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2748|      4|	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2749|      4|	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  ------------------
  |  |  567|      4|#define yytext_ptr yytext_r
  ------------------
              	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2750|      4|	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  ------------------
  |  |  344|      4|#define yyin yyg->yyin_r
  ------------------
              	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  ------------------
  |  |  515|      4|#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  ------------------
 2751|      4|	yyg->yy_hold_char = *yyg->yy_c_buf_p;
 2752|      4|}
lexer.c:yara_yyensure_buffer_stack:
 2919|      2|{
 2920|      2|	yy_size_t num_to_alloc;
 2921|      2|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 2922|       |
 2923|      2|	if (!yyg->yy_buffer_stack) {
  ------------------
  |  Branch (2923:6): [True: 2, False: 0]
  ------------------
 2924|       |
 2925|       |		/* First allocation is just for 2 elements, since we don't know if this
 2926|       |		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 2927|       |		 * immediate realloc on the next call.
 2928|       |         */
 2929|      2|      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
 2930|      2|		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
  ------------------
  |  |  224|      2|#define yyalloc yara_yyalloc
  ------------------
 2931|      2|								(num_to_alloc * sizeof(struct yy_buffer_state*)
 2932|      2|								, yyscanner);
 2933|      2|		if ( ! yyg->yy_buffer_stack )
  ------------------
  |  Branch (2933:8): [True: 0, False: 2]
  ------------------
 2934|      0|			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2935|       |
 2936|      2|		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 2937|       |
 2938|      2|		yyg->yy_buffer_stack_max = num_to_alloc;
 2939|      2|		yyg->yy_buffer_stack_top = 0;
 2940|      2|		return;
 2941|      2|	}
 2942|       |
 2943|      0|	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
  ------------------
  |  Branch (2943:6): [True: 0, False: 0]
  ------------------
 2944|       |
 2945|       |		/* Increase the buffer to prepare for a possible push. */
 2946|      0|		yy_size_t grow_size = 8 /* arbitrary grow size */;
 2947|       |
 2948|      0|		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
 2949|      0|		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
  ------------------
  |  |  230|      0|#define yyrealloc yara_yyrealloc
  ------------------
 2950|      0|								(yyg->yy_buffer_stack,
 2951|      0|								num_to_alloc * sizeof(struct yy_buffer_state*)
 2952|      0|								, yyscanner);
 2953|      0|		if ( ! yyg->yy_buffer_stack )
  ------------------
  |  Branch (2953:8): [True: 0, False: 0]
  ------------------
 2954|      0|			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2955|       |
 2956|       |		/* zero only the new slots.*/
 2957|      0|		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
 2958|      0|		yyg->yy_buffer_stack_max = num_to_alloc;
 2959|      0|	}
 2960|      0|}
lexer.c:yy_init_globals:
 3296|      4|{
 3297|      4|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3298|       |    /* Initialization is the same as for the non-reentrant scanner.
 3299|       |     * This function is called from yylex_destroy(), so don't allocate here.
 3300|       |     */
 3301|       |
 3302|      4|    yyg->yy_buffer_stack = NULL;
 3303|      4|    yyg->yy_buffer_stack_top = 0;
 3304|      4|    yyg->yy_buffer_stack_max = 0;
 3305|      4|    yyg->yy_c_buf_p = NULL;
 3306|      4|    yyg->yy_init = 0;
 3307|      4|    yyg->yy_start = 0;
 3308|       |
 3309|      4|    yyg->yy_start_stack_ptr = 0;
 3310|      4|    yyg->yy_start_stack_depth = 0;
 3311|      4|    yyg->yy_start_stack =  NULL;
 3312|       |
 3313|       |/* Defined in main.c */
 3314|       |#ifdef YY_STDINIT
 3315|       |    yyin = stdin;
 3316|       |    yyout = stdout;
 3317|       |#else
 3318|      4|    yyin = NULL;
  ------------------
  |  |  344|      4|#define yyin yyg->yyin_r
  ------------------
 3319|      4|    yyout = NULL;
  ------------------
  |  |  345|      4|#define yyout yyg->yyout_r
  ------------------
 3320|      4|#endif
 3321|       |
 3322|       |    /* For future reference: Set errno on error, since we are called by
 3323|       |     * yylex_init()
 3324|       |     */
 3325|      4|    return 0;
 3326|      4|}

yr_initialize:
  232|      2|{
  233|      2|  YR_DEBUG_FPRINTF(2, stderr, "+ %s() {\n", __FUNCTION__);
  234|       |
  235|      2|  uint32_t def_stack_size = DEFAULT_STACK_SIZE;
  ------------------
  |  |   81|      2|#define DEFAULT_STACK_SIZE               16384
  ------------------
  236|      2|  uint32_t def_max_strings_per_rule = DEFAULT_MAX_STRINGS_PER_RULE;
  ------------------
  |  |   82|      2|#define DEFAULT_MAX_STRINGS_PER_RULE     10000
  ------------------
  237|      2|  uint32_t def_max_match_data = DEFAULT_MAX_MATCH_DATA;
  ------------------
  |  |   83|      2|#define DEFAULT_MAX_MATCH_DATA           512
  ------------------
  238|      2|  uint64_t def_max_process_memory_chunk = DEFAULT_MAX_PROCESS_MEMORY_CHUNK;
  ------------------
  |  |   84|      2|#define DEFAULT_MAX_PROCESS_MEMORY_CHUNK 1073741824
  ------------------
  239|       |
  240|      2|  init_count++;
  241|       |
  242|      2|  if (init_count > 1)
  ------------------
  |  Branch (242:7): [True: 0, False: 2]
  ------------------
  243|      0|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  244|       |
  245|       |  // Initialize random number generator, as it is used for generating object
  246|       |  // canaries.
  247|      2|  srand((unsigned) time(NULL));
  248|       |
  249|    514|  for (int i = 0; i < 256; i++)
  ------------------
  |  Branch (249:19): [True: 512, False: 2]
  ------------------
  250|    512|  {
  251|    512|    if (i >= 'a' && i <= 'z')
  ------------------
  |  Branch (251:9): [True: 318, False: 194]
  |  Branch (251:21): [True: 52, False: 266]
  ------------------
  252|     52|      yr_altercase[i] = i - 32;
  253|    460|    else if (i >= 'A' && i <= 'Z')
  ------------------
  |  Branch (253:14): [True: 330, False: 130]
  |  Branch (253:26): [True: 52, False: 278]
  ------------------
  254|     52|      yr_altercase[i] = i + 32;
  255|    408|    else
  256|    408|      yr_altercase[i] = i;
  257|       |
  258|    512|    yr_lowercase[i] = tolower(i);
  259|    512|  }
  260|       |
  261|      2|  FAIL_ON_ERROR(yr_heap_alloc());
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  262|      2|  FAIL_ON_ERROR(yr_thread_storage_create(&yr_yyfatal_trampoline_tls));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  263|      2|  FAIL_ON_ERROR(yr_thread_storage_create(&yr_trycatch_trampoline_tls));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  264|       |
  265|       |#if defined HAVE_LIBCRYPTO && OPENSSL_VERSION_NUMBER < 0x10100000L
  266|       |
  267|       |  openssl_locks = (YR_MUTEX *) OPENSSL_malloc(
  268|       |      CRYPTO_num_locks() * sizeof(YR_MUTEX));
  269|       |
  270|       |  for (int i = 0; i < CRYPTO_num_locks(); i++)
  271|       |    yr_mutex_create(&openssl_locks[i]);
  272|       |
  273|       |  CRYPTO_THREADID_set_callback(_thread_id);
  274|       |  CRYPTO_set_locking_callback(_locking_function);
  275|       |
  276|       |#elif defined(HAVE_WINCRYPT_H)
  277|       |
  278|       |  if (!CryptAcquireContext(
  279|       |          &yr_cryptprov, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT))
  280|       |  {
  281|       |    return ERROR_INTERNAL_FATAL_ERROR;
  282|       |  }
  283|       |
  284|       |#elif defined(HAVE_COMMON_CRYPTO)
  285|       |
  286|       |  ...
  287|       |
  288|       |#endif
  289|       |
  290|      2|  FAIL_ON_ERROR(yr_modules_initialize());
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  291|       |
  292|       |  // Initialize default configuration options
  293|       |
  294|      2|  FAIL_ON_ERROR(yr_set_configuration(YR_CONFIG_STACK_SIZE, &def_stack_size));
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  295|       |
  296|      2|  FAIL_ON_ERROR(yr_set_configuration(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  297|      2|      YR_CONFIG_MAX_STRINGS_PER_RULE, &def_max_strings_per_rule));
  298|       |
  299|      2|  FAIL_ON_ERROR(yr_set_configuration(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  300|      2|      YR_CONFIG_MAX_PROCESS_MEMORY_CHUNK, &def_max_process_memory_chunk));
  301|       |
  302|      2|  FAIL_ON_ERROR(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
  303|      2|      yr_set_configuration(YR_CONFIG_MAX_MATCH_DATA, &def_max_match_data));
  304|       |
  305|      2|  YR_DEBUG_FPRINTF(2, stderr, "} // %s()\n", __FUNCTION__);
  306|       |
  307|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  308|      2|}
yr_set_configuration:
  386|      8|{
  387|      8|  if (src == NULL)
  ------------------
  |  Branch (387:7): [True: 0, False: 8]
  ------------------
  388|      0|    return ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  389|       |
  390|      8|  switch (name)
  391|      8|  {  // lump all the cases using same types together in one cascade
  392|      2|  case YR_CONFIG_STACK_SIZE:
  ------------------
  |  Branch (392:3): [True: 2, False: 6]
  ------------------
  393|      4|  case YR_CONFIG_MAX_STRINGS_PER_RULE:
  ------------------
  |  Branch (393:3): [True: 2, False: 6]
  ------------------
  394|      6|  case YR_CONFIG_MAX_MATCH_DATA:
  ------------------
  |  Branch (394:3): [True: 2, False: 6]
  ------------------
  395|      6|    yr_cfgs[name].ui32 = *(uint32_t *) src;
  396|      6|    break;
  397|       |
  398|      2|  case YR_CONFIG_MAX_PROCESS_MEMORY_CHUNK:
  ------------------
  |  Branch (398:3): [True: 2, False: 6]
  ------------------
  399|      2|    yr_cfgs[name].ui64 = *(uint64_t *) src;
  400|      2|    break;
  401|       |
  402|      0|  default:
  ------------------
  |  Branch (402:3): [True: 0, False: 8]
  ------------------
  403|      0|    return ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  404|      8|  }
  405|       |
  406|      8|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      8|#define ERROR_SUCCESS 0
  ------------------
  407|      8|}
yr_get_configuration:
  476|  5.53k|{
  477|  5.53k|  if (dest == NULL)
  ------------------
  |  Branch (477:7): [True: 0, False: 5.53k]
  ------------------
  478|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  479|       |
  480|  5.53k|  switch (name)
  481|  5.53k|  {  // lump all the cases using same types together in one cascade
  482|  2.76k|  case YR_CONFIG_STACK_SIZE:
  ------------------
  |  Branch (482:3): [True: 2.76k, False: 2.76k]
  ------------------
  483|  2.76k|  case YR_CONFIG_MAX_STRINGS_PER_RULE:
  ------------------
  |  Branch (483:3): [True: 0, False: 5.53k]
  ------------------
  484|  5.53k|  case YR_CONFIG_MAX_MATCH_DATA:
  ------------------
  |  Branch (484:3): [True: 2.76k, False: 2.76k]
  ------------------
  485|  5.53k|    *(uint32_t *) dest = yr_cfgs[name].ui32;
  486|  5.53k|    break;
  487|       |
  488|      0|  case YR_CONFIG_MAX_PROCESS_MEMORY_CHUNK:
  ------------------
  |  Branch (488:3): [True: 0, False: 5.53k]
  ------------------
  489|      0|    *(uint64_t *) dest = yr_cfgs[name].ui64;
  490|      0|    break;
  491|       |
  492|      0|  default:
  ------------------
  |  Branch (492:3): [True: 0, False: 5.53k]
  ------------------
  493|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  494|  5.53k|  }
  495|       |
  496|  5.53k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  5.53k|#define ERROR_SUCCESS 0
  ------------------
  497|  5.53k|}
yr_get_configuration_uint32:
  512|  5.53k|{
  513|  5.53k|  switch (name)
  514|  5.53k|  {
  515|       |  // Accept only the configuration options that are of type uint32_t.
  516|  2.76k|  case YR_CONFIG_STACK_SIZE:
  ------------------
  |  Branch (516:3): [True: 2.76k, False: 2.76k]
  ------------------
  517|  2.76k|  case YR_CONFIG_MAX_STRINGS_PER_RULE:
  ------------------
  |  Branch (517:3): [True: 0, False: 5.53k]
  ------------------
  518|  5.53k|  case YR_CONFIG_MAX_MATCH_DATA:
  ------------------
  |  Branch (518:3): [True: 2.76k, False: 2.76k]
  ------------------
  519|  5.53k|    return yr_get_configuration(name, (void *) dest);
  520|      0|  default:
  ------------------
  |  Branch (520:3): [True: 0, False: 5.53k]
  ------------------
  521|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  522|  5.53k|  }
  523|  5.53k|}

yr_heap_alloc:
  116|      2|{
  117|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  118|      2|}
yr_calloc:
  126|  22.1k|{
  127|  22.1k|  return calloc(count, size);
  128|  22.1k|}
yr_malloc:
  131|  56.2M|{
  132|  56.2M|  return malloc(size);
  133|  56.2M|}
yr_realloc:
  136|  2.93k|{
  137|  2.93k|  return realloc(ptr, size);
  138|  2.93k|}
yr_strdup:
  141|  30.5M|{
  142|  30.5M|  return strdup(str);
  143|  30.5M|}
yr_free:
  151|  87.4M|{
  152|  87.4M|  free(ptr);
  153|  87.4M|}

yr_modules_initialize:
   64|      2|{
   65|     24|  for (YR_MODULE* module = yr_modules_table; module->initialize != NULL;
  ------------------
  |  Branch (65:46): [True: 22, False: 2]
  ------------------
   66|     22|       module++)
   67|     22|  {
   68|     22|    int result = module->initialize(module);
   69|       |
   70|     22|    if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|     22|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (70:9): [True: 0, False: 22]
  ------------------
   71|      0|      return result;
   72|     22|  }
   73|       |
   74|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
   75|      2|}
yr_modules_do_declarations:
   93|  2.77k|{
   94|  2.77k|  for (YR_MODULE* module = yr_modules_table;
   95|  30.4k|       module->name != NULL && module->declarations != NULL;
  ------------------
  |  Branch (95:8): [True: 30.4k, False: 0]
  |  Branch (95:32): [True: 30.4k, False: 0]
  ------------------
   96|  27.7k|       module++)
   97|  30.4k|  {
   98|  30.4k|    if (strcmp(module->name, module_name) == 0)
  ------------------
  |  Branch (98:9): [True: 2.77k, False: 27.7k]
  ------------------
   99|  2.77k|      return module->declarations(main_structure);
  100|  30.4k|  }
  101|       |
  102|      0|  return ERROR_UNKNOWN_MODULE;
  ------------------
  |  |   79|      0|#define ERROR_UNKNOWN_MODULE                 34
  ------------------
  103|  2.77k|}
yr_modules_load:
  106|  2.76k|{
  107|  2.76k|  int result;
  108|       |
  109|  2.76k|  YR_MODULE_IMPORT mi;
  110|       |
  111|  2.76k|  YR_OBJECT* module_structure = (YR_OBJECT*) yr_hash_table_lookup(
  112|  2.76k|      context->objects_table, module_name, NULL);
  113|       |
  114|       |  // if module_structure != NULL, the module was already
  115|       |  // loaded, return successfully without doing nothing.
  116|       |
  117|  2.76k|  if (module_structure != NULL)
  ------------------
  |  Branch (117:7): [True: 0, False: 2.76k]
  ------------------
  118|      0|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  119|       |
  120|       |  // not loaded yet
  121|       |
  122|  2.76k|  FAIL_ON_ERROR(yr_object_create(
  ------------------
  |  |  132|  2.76k|  {                               \
  |  |  133|  2.76k|    int __error = (x);            \
  |  |  134|  2.76k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  135|  2.76k|      return __error;             \
  |  |  136|  2.76k|  }
  ------------------
  123|  2.76k|      OBJECT_TYPE_STRUCTURE, module_name, NULL, &module_structure));
  124|       |
  125|       |  // initialize canary for module's top-level structure, every other object
  126|       |  // within the module inherits the same canary.
  127|  2.76k|  yr_object_set_canary(module_structure, context->canary);
  128|       |
  129|  2.76k|  mi.module_name = module_name;
  130|  2.76k|  mi.module_data = NULL;
  131|  2.76k|  mi.module_data_size = 0;
  132|       |
  133|  2.76k|  result = context->callback(
  134|  2.76k|      context, CALLBACK_MSG_IMPORT_MODULE, &mi, context->user_data);
  ------------------
  |  |   41|  2.76k|#define CALLBACK_MSG_IMPORT_MODULE     4
  ------------------
  135|       |
  136|  2.76k|  if (result == CALLBACK_ERROR)
  ------------------
  |  |   49|  2.76k|#define CALLBACK_ERROR    2
  ------------------
  |  Branch (136:7): [True: 0, False: 2.76k]
  ------------------
  137|      0|  {
  138|      0|    yr_object_destroy(module_structure);
  139|      0|    return ERROR_CALLBACK_ERROR;
  ------------------
  |  |   73|      0|#define ERROR_CALLBACK_ERROR                 28
  ------------------
  140|      0|  }
  141|       |
  142|  2.76k|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  2.76k|  {                                            \
  |  |  141|  2.76k|    int __error = (x);                         \
  |  |  142|  2.76k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  143|  2.76k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  2.76k|  }
  ------------------
  143|  2.76k|      yr_modules_do_declarations(module_name, module_structure),
  144|  2.76k|      yr_object_destroy(module_structure));
  145|       |
  146|  2.76k|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  2.76k|  {                                            \
  |  |  141|  2.76k|    int __error = (x);                         \
  |  |  142|  2.76k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  143|  2.76k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  2.76k|  }
  ------------------
  147|  2.76k|      yr_hash_table_add(
  148|  2.76k|          context->objects_table, module_name, NULL, module_structure),
  149|  2.76k|      yr_object_destroy(module_structure));
  150|       |
  151|  2.76k|  for (YR_MODULE* module = yr_modules_table;
  152|  33.2k|       module->name != NULL && module->load != NULL;
  ------------------
  |  Branch (152:8): [True: 30.4k, False: 2.76k]
  |  Branch (152:32): [True: 30.4k, False: 0]
  ------------------
  153|  30.4k|       module++)
  154|  30.4k|  {
  155|  30.4k|    if (strcmp(module->name, module_name) == 0)
  ------------------
  |  Branch (155:9): [True: 2.76k, False: 27.6k]
  ------------------
  156|  2.76k|    {
  157|  2.76k|      result = module->load(
  158|  2.76k|          context, module_structure, mi.module_data, mi.module_data_size);
  159|       |
  160|  2.76k|      if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (160:11): [True: 0, False: 2.76k]
  ------------------
  161|      0|        return result;
  162|  2.76k|    }
  163|  30.4k|  }
  164|       |
  165|  2.76k|  result = context->callback(
  166|  2.76k|      context,
  167|  2.76k|      CALLBACK_MSG_MODULE_IMPORTED,
  ------------------
  |  |   42|  2.76k|#define CALLBACK_MSG_MODULE_IMPORTED   5
  ------------------
  168|  2.76k|      module_structure,
  169|  2.76k|      context->user_data);
  170|       |
  171|  2.76k|  if (result == CALLBACK_ERROR)
  ------------------
  |  |   49|  2.76k|#define CALLBACK_ERROR    2
  ------------------
  |  Branch (171:7): [True: 0, False: 2.76k]
  ------------------
  172|      0|    return ERROR_CALLBACK_ERROR;
  ------------------
  |  |   73|      0|#define ERROR_CALLBACK_ERROR                 28
  ------------------
  173|       |
  174|  2.76k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  175|  2.76k|}
yr_modules_unload_all:
  178|  2.76k|{
  179|  2.76k|  for (YR_MODULE* module = yr_modules_table;
  180|  33.2k|       module->name != NULL && module->unload != NULL;
  ------------------
  |  Branch (180:8): [True: 30.4k, False: 2.76k]
  |  Branch (180:32): [True: 30.4k, False: 0]
  ------------------
  181|  30.4k|       module++)
  182|  30.4k|  {
  183|  30.4k|    YR_OBJECT* module_structure = (YR_OBJECT*) yr_hash_table_remove(
  184|  30.4k|        context->objects_table, module->name, NULL);
  185|       |
  186|  30.4k|    if (module_structure != NULL)
  ------------------
  |  Branch (186:9): [True: 2.76k, False: 27.6k]
  ------------------
  187|  2.76k|    {
  188|  2.76k|      module->unload(module_structure);
  189|  2.76k|      yr_object_destroy(module_structure);
  190|  2.76k|    }
  191|  30.4k|  }
  192|       |
  193|  2.76k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  194|  2.76k|}

console__initialize:
  251|      2|{
  252|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  253|      2|}

dex__declarations:
  193|  2.77k|begin_declarations
  ------------------
  |  |   59|  2.77k|  {                                          \
  |  |   60|  2.77k|    YR_OBJECT* stack[64];                    \
  |  |   61|  2.77k|    int stack_top = 0;                       \
  |  |   62|  2.77k|    stack[stack_top] = module;
  ------------------
  194|  2.77k|  declare_string("DEX_FILE_MAGIC_035");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  195|  2.77k|  declare_string("DEX_FILE_MAGIC_036");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  196|  2.77k|  declare_string("DEX_FILE_MAGIC_037");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  197|  2.77k|  declare_string("DEX_FILE_MAGIC_038");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  198|  2.77k|  declare_string("DEX_FILE_MAGIC_039");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  199|       |
  200|  2.77k|  declare_integer("ENDIAN_CONSTANT");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  201|  2.77k|  declare_integer("REVERSE_ENDIAN_CONSTANT");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  202|  2.77k|  declare_integer("NO_INDEX");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  203|  2.77k|  declare_integer("ACC_PUBLIC");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  204|  2.77k|  declare_integer("ACC_PRIVATE");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  205|  2.77k|  declare_integer("ACC_PROTECTED");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  206|  2.77k|  declare_integer("ACC_STATIC");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  207|  2.77k|  declare_integer("ACC_FINAL");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  208|  2.77k|  declare_integer("ACC_SYNCHRONIZED");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  209|  2.77k|  declare_integer("ACC_VOLATILE");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  210|  2.77k|  declare_integer("ACC_BRIDGE");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  211|  2.77k|  declare_integer("ACC_TRANSIENT");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  212|  2.77k|  declare_integer("ACC_VARARGS");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  213|  2.77k|  declare_integer("ACC_NATIVE");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  214|  2.77k|  declare_integer("ACC_INTERFACE");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  215|  2.77k|  declare_integer("ACC_ABSTRACT");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  216|  2.77k|  declare_integer("ACC_STRICT");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  217|  2.77k|  declare_integer("ACC_SYNTHETIC");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  218|  2.77k|  declare_integer("ACC_ANNOTATION");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  219|  2.77k|  declare_integer("ACC_ENUM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  220|  2.77k|  declare_integer("ACC_CONSTRUCTOR");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  221|  2.77k|  declare_integer("ACC_DECLARED_SYNCHRONIZED");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  222|       |
  223|  2.77k|  declare_integer("TYPE_HEADER_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  224|  2.77k|  declare_integer("TYPE_STRING_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  225|  2.77k|  declare_integer("TYPE_TYPE_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  226|  2.77k|  declare_integer("TYPE_PROTO_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  227|  2.77k|  declare_integer("TYPE_FIELD_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  228|  2.77k|  declare_integer("TYPE_METHOD_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  229|  2.77k|  declare_integer("TYPE_CLASS_DEF_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  230|  2.77k|  declare_integer("TYPE_CALL_SITE_ID_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  231|  2.77k|  declare_integer("TYPE_METHOD_HANDLE_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  232|  2.77k|  declare_integer("TYPE_MAP_LIST");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  233|  2.77k|  declare_integer("TYPE_TYPE_LIST");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  234|  2.77k|  declare_integer("TYPE_ANNOTATION_SET_REF_LIST");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  235|  2.77k|  declare_integer("TYPE_ANNOTATION_SET_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  236|  2.77k|  declare_integer("TYPE_CLASS_DATA_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  237|  2.77k|  declare_integer("TYPE_CODE_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  238|  2.77k|  declare_integer("TYPE_STRING_DATA_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  239|  2.77k|  declare_integer("TYPE_DEBUG_INFO_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  240|  2.77k|  declare_integer("TYPE_ANNOTATION_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  241|  2.77k|  declare_integer("TYPE_ENCODED_ARRAY_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  242|  2.77k|  declare_integer("TYPE_ANNOTATIONS_DIRECTORY_ITEM");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  243|       |
  244|  5.54k|  begin_struct("header")
  ------------------
  |  |   69|  2.77k|  {                                                                  \
  |  |   70|  2.77k|    YR_OBJECT* structure;                                            \
  |  |   71|  2.77k|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   72|  2.77k|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|  2.77k|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|  2.77k|        "too many nested structures");                               \
  |  |   76|  2.77k|    stack[++stack_top] = structure;                                  \
  |  |   77|  2.77k|  }
  ------------------
  245|  2.77k|    declare_string("magic");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  246|  2.77k|    declare_integer("checksum");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  247|  2.77k|    declare_string("signature");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  248|  2.77k|    declare_integer("file_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  249|  2.77k|    declare_integer("header_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  250|  2.77k|    declare_integer("endian_tag");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  251|  2.77k|    declare_integer("link_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  252|  2.77k|    declare_integer("link_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  253|  2.77k|    declare_integer("map_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  254|  2.77k|    declare_integer("string_ids_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  255|  2.77k|    declare_integer("string_ids_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  256|  2.77k|    declare_integer("type_ids_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  257|  2.77k|    declare_integer("type_ids_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  258|  2.77k|    declare_integer("proto_ids_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  259|  2.77k|    declare_integer("proto_ids_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  260|  2.77k|    declare_integer("field_ids_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  261|  2.77k|    declare_integer("field_ids_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  262|  2.77k|    declare_integer("method_ids_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  263|  2.77k|    declare_integer("method_ids_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  264|  2.77k|    declare_integer("class_defs_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  265|  2.77k|    declare_integer("class_defs_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  266|  2.77k|    declare_integer("data_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  267|  2.77k|    declare_integer("data_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  268|  5.54k|  end_struct("header")
  ------------------
  |  |  108|  2.77k|  {                                                          \
  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|  2.77k|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  114|  2.77k|  }
  ------------------
  269|       |
  270|  8.31k|  begin_struct_array("string_ids")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  271|  2.77k|    declare_integer("offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  272|  2.77k|    declare_integer("size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  273|  2.77k|    declare_string("value");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  274|  5.54k|  end_struct_array("string_ids")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  275|       |
  276|  8.31k|  begin_struct_array("type_ids")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  277|  2.77k|    declare_integer("descriptor_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  278|  5.54k|  end_struct_array("type_ids")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  279|       |
  280|  8.31k|  begin_struct_array("proto_ids")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  281|  2.77k|    declare_integer("shorty_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  282|  2.77k|    declare_integer("return_type_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  283|  2.77k|    declare_integer("parameters_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  284|  5.54k|  end_struct_array("proto_ids")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  285|       |
  286|  8.31k|  begin_struct_array("field_ids")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  287|  2.77k|    declare_integer("class_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  288|  2.77k|    declare_integer("type_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  289|  2.77k|    declare_integer("name_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  290|  5.54k|  end_struct_array("field_ids")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  291|       |
  292|  8.31k|  begin_struct_array("method_ids")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  293|  2.77k|    declare_integer("class_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  294|  2.77k|    declare_integer("proto_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  295|  2.77k|    declare_integer("name_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  296|  5.54k|  end_struct_array("method_ids")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  297|       |
  298|  8.31k|  begin_struct_array("class_defs")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  299|  2.77k|    declare_integer("class_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  300|  2.77k|    declare_integer("access_flags");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  301|  2.77k|    declare_integer("super_class_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  302|  2.77k|    declare_integer("interfaces_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  303|  2.77k|    declare_integer("source_file_idx");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  304|  2.77k|    declare_integer("annotations_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  305|  2.77k|    declare_integer("class_data_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  306|  2.77k|    declare_integer("static_values_offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  307|  5.54k|  end_struct_array("class_defs")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  308|       |
  309|  8.31k|  begin_struct_array("class_data_item")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  310|  2.77k|    declare_integer("static_fields_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  311|  2.77k|    declare_integer("instance_fields_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  312|  2.77k|    declare_integer("direct_methods_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  313|  2.77k|    declare_integer("virtual_methods_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  314|  5.54k|  end_struct_array("class_data_item")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  315|       |
  316|  5.54k|  begin_struct("map_list")
  ------------------
  |  |   69|  2.77k|  {                                                                  \
  |  |   70|  2.77k|    YR_OBJECT* structure;                                            \
  |  |   71|  2.77k|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   72|  2.77k|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|  2.77k|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|  2.77k|        "too many nested structures");                               \
  |  |   76|  2.77k|    stack[++stack_top] = structure;                                  \
  |  |   77|  2.77k|  }
  ------------------
  317|  2.77k|    declare_integer("size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  318|  8.31k|    begin_struct_array("map_item")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  319|  2.77k|      declare_integer("type");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  320|  2.77k|      declare_integer("unused");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  321|  2.77k|      declare_integer("size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  322|  2.77k|      declare_integer("offset");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  323|  5.54k|    end_struct_array("map_item");
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  324|  5.54k|  end_struct("map_list")
  ------------------
  |  |  108|  2.77k|  {                                                          \
  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|  2.77k|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  114|  2.77k|  }
  ------------------
  325|       |
  326|  2.77k|  declare_integer("number_of_fields");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  327|  8.31k|  begin_struct_array("field")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  328|  2.77k|    declare_string("class_name");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  329|  2.77k|    declare_string("name");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  330|  2.77k|    declare_string("proto");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  331|  2.77k|    declare_integer("field_idx_diff");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  332|  2.77k|    declare_integer("access_flags");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  333|  5.54k|  end_struct_array("field")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  334|       |
  335|  2.77k|  declare_function("has_method", "s", "i", has_method_string);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  336|  2.77k|  declare_function("has_method", "ss", "i", has_method_and_class_string);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  337|  2.77k|  declare_function("has_method", "r", "i", has_method_regexp);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  338|  2.77k|  declare_function("has_method", "rr", "i", has_method_and_class_regexp);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  339|  2.77k|  declare_function("has_class", "s", "i", has_class_string);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  340|  2.77k|  declare_function("has_class", "r", "i", has_class_regexp);
  ------------------
  |  |  191|  2.77k|  {                                                                   \
  |  |  192|  2.77k|    YR_OBJECT* function;                                              \
  |  |  193|  2.77k|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  194|  2.77k|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|  2.77k|  }
  ------------------
  341|       |
  342|  2.77k|  declare_integer("number_of_methods");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  343|  8.31k|  begin_struct_array("method")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  344|  2.77k|    declare_string("class_name");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  345|  2.77k|    declare_string("name");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  346|  2.77k|    declare_string("proto");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  347|  2.77k|    declare_integer("direct");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  348|  2.77k|    declare_integer("virtual");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  349|  2.77k|    declare_integer("method_idx_diff");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  350|  2.77k|    declare_integer("access_flags");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  351|  2.77k|    declare_integer("code_off");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  352|       |
  353|  5.54k|    begin_struct("code_item")
  ------------------
  |  |   69|  2.77k|  {                                                                  \
  |  |   70|  2.77k|    YR_OBJECT* structure;                                            \
  |  |   71|  2.77k|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   72|  2.77k|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|  2.77k|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|  2.77k|        "too many nested structures");                               \
  |  |   76|  2.77k|    stack[++stack_top] = structure;                                  \
  |  |   77|  2.77k|  }
  ------------------
  354|  2.77k|      declare_integer("registers_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  355|  2.77k|      declare_integer("ins_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  356|  2.77k|      declare_integer("outs_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  357|  2.77k|      declare_integer("tries_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  358|  2.77k|      declare_integer("debug_info_off");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  359|  2.77k|      declare_integer("insns_size");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  360|  2.77k|      declare_string("insns");
  ------------------
  |  |  169|  2.77k|  {                                                                          \
  |  |  170|  2.77k|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  171|  2.77k|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|  2.77k|  }
  ------------------
  361|  2.77k|      declare_integer("padding");
  ------------------
  |  |  125|  2.77k|  {                                                                           \
  |  |  126|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |  127|  2.77k|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|  2.77k|  }
  ------------------
  362|  5.54k|      begin_struct("tries")
  ------------------
  |  |   69|  2.77k|  {                                                                  \
  |  |   70|  2.77k|    YR_OBJECT* structure;                                            \
  |  |   71|  2.77k|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   72|  2.77k|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|  2.77k|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|  2.77k|        "too many nested structures");                               \
  |  |   76|  2.77k|    stack[++stack_top] = structure;                                  \
  |  |   77|  2.77k|  }
  ------------------
  363|  5.54k|      end_struct("tries");
  ------------------
  |  |  108|  2.77k|  {                                                          \
  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|  2.77k|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  114|  2.77k|  }
  ------------------
  364|  8.31k|      begin_struct_array("handlers")
  ------------------
  |  |   80|  2.77k|  {                                                                           \
  |  |   81|  2.77k|    YR_OBJECT* structure;                                                     \
  |  |   82|  2.77k|    YR_OBJECT* array;                                                         \
  |  |   83|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   84|  2.77k|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|  2.77k|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|  2.77k|  {                               \
  |  |  |  |  133|  2.77k|    int __error = (x);            \
  |  |  |  |  134|  2.77k|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  135|  2.77k|      return __error;             \
  |  |  |  |  136|  2.77k|  }
  |  |  ------------------
  |  |   86|  2.77k|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|  2.77k|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|  2.77k|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|  2.77k|        "too many nested structures");                                        \
  |  |   90|  2.77k|    stack[++stack_top] = structure;                                           \
  |  |   91|  2.77k|  }
  ------------------
  365|  5.54k|      end_struct_array("handlers");
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  366|  5.54k|    end_struct("code_item")
  ------------------
  |  |  108|  2.77k|  {                                                          \
  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|  2.77k|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  ------------------
  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  114|  2.77k|  }
  ------------------
  367|  5.54k|  end_struct_array("method")
  ------------------
  |  |  117|  2.77k|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|  2.77k|  {                                                          \
  |  |  |  |  109|  2.77k|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|  2.77k|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|  2.77k|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.77k|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|  2.77k|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|  2.77k|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|  2.77k|    stack_top--;                                             \
  |  |  |  |  114|  2.77k|  }
  |  |  ------------------
  |  |  118|  2.77k|  (name)
  ------------------
  368|  2.77k|end_declarations
  ------------------
  |  |   65|  2.77k|  return ERROR_SUCCESS;  \
  |  |  ------------------
  |  |  |  |   40|  2.77k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |   66|  2.77k|  }
  ------------------
dex_get_header:
  470|  2.76k|{
  471|  2.76k|  dex_header_t* dex_header;
  472|       |
  473|  2.76k|  if (data_size < sizeof(dex_header_t))
  ------------------
  |  Branch (473:7): [True: 1.24k, False: 1.52k]
  ------------------
  474|  1.24k|    return NULL;
  475|       |
  476|       |  // Check if we have a valid DEX file
  477|  1.52k|  dex_header = (dex_header_t*) data;
  478|       |
  479|  1.52k|  if (memcmp(dex_header->magic, DEX_FILE_MAGIC_035, 8) != 0 &&
  ------------------
  |  |    8|  1.52k|#define DEX_FILE_MAGIC_035 "dex\n035\x00"
  ------------------
  |  Branch (479:7): [True: 1.23k, False: 284]
  ------------------
  480|  1.52k|      memcmp(dex_header->magic, DEX_FILE_MAGIC_036, 8) != 0 &&
  ------------------
  |  |    9|  1.23k|#define DEX_FILE_MAGIC_036 "dex\n036\x00"
  ------------------
  |  Branch (480:7): [True: 724, False: 515]
  ------------------
  481|  1.52k|      memcmp(dex_header->magic, DEX_FILE_MAGIC_037, 8) != 0 &&
  ------------------
  |  |   10|    724|#define DEX_FILE_MAGIC_037 "dex\n037\x00"
  ------------------
  |  Branch (481:7): [True: 396, False: 328]
  ------------------
  482|  1.52k|      memcmp(dex_header->magic, DEX_FILE_MAGIC_038, 8) != 0 &&
  ------------------
  |  |   11|    396|#define DEX_FILE_MAGIC_038 "dex\n038\x00"
  ------------------
  |  Branch (482:7): [True: 291, False: 105]
  ------------------
  483|  1.52k|      memcmp(dex_header->magic, DEX_FILE_MAGIC_039, 8) != 0)
  ------------------
  |  |   12|    291|#define DEX_FILE_MAGIC_039 "dex\n039\x00"
  ------------------
  |  Branch (483:7): [True: 257, False: 34]
  ------------------
  484|    257|  {
  485|    257|    return NULL;
  486|    257|  }
  487|       |
  488|  1.26k|  return dex_header;
  489|  1.52k|}
dex_parse_header:
  493|  1.26k|{
  494|  1.26k|  yr_set_sized_string(
  ------------------
  |  |  242|  1.26k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  495|  1.26k|      (char*) dex_header->magic,
  496|  1.26k|      strnlen((char*) dex_header->magic, 8 * sizeof(char)),
  497|  1.26k|      module_object,
  498|  1.26k|      "header.magic");
  499|       |
  500|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  501|  1.26k|      yr_le32toh(dex_header->checksum), module_object, "header.checksum");
  502|       |
  503|  1.26k|  yr_set_sized_string(
  ------------------
  |  |  242|  1.26k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  504|  1.26k|      (char*) dex_header->signature,
  505|  1.26k|      strnlen((char*) dex_header->signature, 20 * sizeof(char)),
  506|  1.26k|      module_object,
  507|  1.26k|      "header.signature");
  508|       |
  509|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  510|  1.26k|      yr_le32toh(dex_header->file_size), module_object, "header.file_size");
  511|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  512|  1.26k|      yr_le32toh(dex_header->header_size), module_object, "header.header_size");
  513|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  514|  1.26k|      yr_le32toh(dex_header->endian_tag), module_object, "header.endian_tag");
  515|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  516|  1.26k|      yr_le32toh(dex_header->link_size), module_object, "header.link_size");
  517|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  518|  1.26k|      yr_le32toh(dex_header->link_offset), module_object, "header.link_offset");
  519|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  520|  1.26k|      yr_le32toh(dex_header->map_offset), module_object, "header.map_offset");
  521|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  522|  1.26k|      yr_le32toh(dex_header->string_ids_size),
  523|  1.26k|      module_object,
  524|  1.26k|      "header.string_ids_size");
  525|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  526|  1.26k|      yr_le32toh(dex_header->string_ids_offset),
  527|  1.26k|      module_object,
  528|  1.26k|      "header.string_ids_offset");
  529|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  530|  1.26k|      yr_le32toh(dex_header->type_ids_size),
  531|  1.26k|      module_object,
  532|  1.26k|      "header.type_ids_size");
  533|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  534|  1.26k|      yr_le32toh(dex_header->type_ids_offset),
  535|  1.26k|      module_object,
  536|  1.26k|      "header.type_ids_offset");
  537|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  538|  1.26k|      yr_le32toh(dex_header->proto_ids_size),
  539|  1.26k|      module_object,
  540|  1.26k|      "header.proto_ids_size");
  541|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  542|  1.26k|      yr_le32toh(dex_header->proto_ids_offset),
  543|  1.26k|      module_object,
  544|  1.26k|      "header.proto_ids_offset");
  545|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  546|  1.26k|      yr_le32toh(dex_header->field_ids_size),
  547|  1.26k|      module_object,
  548|  1.26k|      "header.field_ids_size");
  549|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  550|  1.26k|      yr_le32toh(dex_header->field_ids_offset),
  551|  1.26k|      module_object,
  552|  1.26k|      "header.field_ids_offset");
  553|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  554|  1.26k|      yr_le32toh(dex_header->method_ids_size),
  555|  1.26k|      module_object,
  556|  1.26k|      "header.method_ids_size");
  557|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  558|  1.26k|      yr_le32toh(dex_header->method_ids_offset),
  559|  1.26k|      module_object,
  560|  1.26k|      "header.method_ids_offset");
  561|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  562|  1.26k|      yr_le32toh(dex_header->class_defs_size),
  563|  1.26k|      module_object,
  564|  1.26k|      "header.class_defs_size");
  565|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  566|  1.26k|      yr_le32toh(dex_header->class_defs_offset),
  567|  1.26k|      module_object,
  568|  1.26k|      "header.class_defs_offset");
  569|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  570|  1.26k|      yr_le32toh(dex_header->data_size), module_object, "header.data_size");
  571|  1.26k|  yr_set_integer(
  ------------------
  |  |  236|  1.26k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  572|  1.26k|      yr_le32toh(dex_header->data_offset), module_object, "header.data_offset");
  573|  1.26k|}
load_encoded_field:
  583|  1.17M|{
  584|       |#ifdef DEBUG_DEX_MODULE
  585|       |  printf("[DEX] Parse encoded field start_offset:0x%zx\n", start_offset);
  586|       |#endif
  587|       |
  588|  1.17M|  const uint8_t* data_cur_start = dex->data + start_offset;
  589|  1.17M|  if (!fits_in_dex(dex, dex->data + start_offset, sizeof(uint32_t) * 2))
  ------------------
  |  |  139|  1.17M|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 1.17M, False: 0]
  |  |  |  Branch (139:39): [True: 1.17M, False: 0]
  |  |  ------------------
  |  |  140|  1.17M|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 1.17M, False: 570]
  |  |  ------------------
  ------------------
  590|    570|    return 0;
  591|       |
  592|  1.17M|  const uint8_t* data_end = dex->data + dex->data_size;
  593|  1.17M|  uint32_t current_size = 0;
  594|  1.17M|  bool error = false;
  595|  1.17M|  encoded_field_t encoded_field;
  596|       |
  597|  1.17M|  encoded_field.field_idx_diff =
  598|  1.17M|      (uint32_t) read_uleb128_bounded((dex->data + start_offset + current_size),
  599|  1.17M|                                      data_end, &current_size, &error);
  600|  1.17M|  if (error)
  ------------------
  |  Branch (600:7): [True: 0, False: 1.17M]
  ------------------
  601|      0|    return 0;
  602|       |
  603|  1.17M|  encoded_field.access_flags =
  604|  1.17M|      (uint32_t) read_uleb128_bounded((dex->data + start_offset + current_size),
  605|  1.17M|                                      data_end, &current_size, &error);
  606|  1.17M|  if (error)
  ------------------
  |  Branch (606:7): [True: 222, False: 1.17M]
  ------------------
  607|    222|    return 0;
  608|       |
  609|  1.17M|  yr_set_integer(
  ------------------
  |  |  236|  1.17M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  610|  1.17M|      encoded_field.field_idx_diff,
  611|  1.17M|      dex->object,
  612|  1.17M|      "field[%i].field_idx_diff",
  613|  1.17M|      index_encoded_field);
  614|       |
  615|  1.17M|  yr_set_integer(
  ------------------
  |  |  236|  1.17M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  616|  1.17M|      encoded_field.access_flags,
  617|  1.17M|      dex->object,
  618|  1.17M|      "field[%i].access_flags",
  619|  1.17M|      index_encoded_field);
  620|       |
  621|  1.17M|  yr_set_integer(
  ------------------
  |  |  236|  1.17M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  622|  1.17M|      static_field, dex->object, "field[%i].static", index_encoded_field);
  623|       |
  624|  1.17M|  yr_set_integer(
  ------------------
  |  |  236|  1.17M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  625|  1.17M|      instance_field, dex->object, "field[%i].instance", index_encoded_field);
  626|       |
  627|  1.17M|  *previous_field_idx = encoded_field.field_idx_diff + *previous_field_idx;
  628|       |
  629|       |#ifdef DEBUG_DEX_MODULE
  630|       |  printf(
  631|       |      "[DEX]\tEncoded field field_idx:0x%x field_idx_diff:0x%x "
  632|       |      "access_flags:0x%x\n",
  633|       |      *previous_field_idx,
  634|       |      encoded_field.field_idx_diff,
  635|       |      encoded_field.access_flags);
  636|       |#endif
  637|       |
  638|  1.17M|  int64_t name_idx = dex_get_integer(
  639|  1.17M|      dex->object, "field_ids[%i].name_idx", *previous_field_idx);
  640|       |
  641|  1.17M|  if (name_idx == YR_UNDEFINED)
  ------------------
  |  |   38|  1.17M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (641:7): [True: 6.35k, False: 1.16M]
  ------------------
  642|  6.35k|    return 0;
  643|       |
  644|  1.16M|  SIZED_STRING* field_name = dex_get_string(
  645|  1.16M|      dex->object, "string_ids[%i].value", name_idx);
  646|       |
  647|  1.16M|  if (field_name != NULL)
  ------------------
  |  Branch (647:7): [True: 13.1k, False: 1.15M]
  ------------------
  648|  13.1k|  {
  649|       |#ifdef DEBUG_DEX_MODULE
  650|       |    printf(
  651|       |        "[DEX]\tFIELD_NAME %s NAME_IDX 0x%llx\n", field_name->c_string, name_idx);
  652|       |#endif
  653|       |
  654|  13.1k|    yr_set_sized_string(
  ------------------
  |  |  242|  13.1k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  655|  13.1k|        field_name->c_string,
  656|  13.1k|        field_name->length,
  657|  13.1k|        dex->object,
  658|  13.1k|        "field[%i].name",
  659|  13.1k|        index_encoded_field);
  660|  13.1k|  }
  661|       |
  662|  1.16M|  int64_t class_idx = dex_get_integer(
  663|  1.16M|      dex->object, "field_ids[%i].class_idx", *previous_field_idx);
  664|       |
  665|  1.16M|  int64_t descriptor_idx = dex_get_integer(
  666|  1.16M|      dex->object, "type_ids[%i].descriptor_idx", class_idx);
  667|       |
  668|  1.16M|  SIZED_STRING* class_name = dex_get_string(
  669|  1.16M|      dex->object, "string_ids[%i].value", descriptor_idx);
  670|       |
  671|  1.16M|  if (class_name != NULL)
  ------------------
  |  Branch (671:7): [True: 41.7k, False: 1.12M]
  ------------------
  672|  41.7k|  {
  673|       |#ifdef DEBUG_DEX_MODULE
  674|       |    printf(
  675|       |        "[DEX]\tCLASS_NAME %s CLASS_IDX 0x%llx DESCRIPTOR_IDX 0x%llx\n",
  676|       |        class_name->c_string,
  677|       |        class_idx,
  678|       |        descriptor_idx);
  679|       |#endif
  680|       |
  681|  41.7k|    yr_set_sized_string(
  ------------------
  |  |  242|  41.7k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  682|  41.7k|        class_name->c_string,
  683|  41.7k|        class_name->length,
  684|  41.7k|        dex->object,
  685|  41.7k|        "field[%i].class_name",
  686|  41.7k|        index_encoded_field);
  687|  41.7k|  }
  688|       |
  689|  1.16M|  int type_idx = dex_get_integer(
  690|  1.16M|      dex->object, "field_ids[%i].type_idx", *previous_field_idx);
  691|       |
  692|  1.16M|  int shorty_idx = dex_get_integer(
  693|  1.16M|      dex->object, "type_ids[%i].descriptor_idx", type_idx);
  694|       |
  695|  1.16M|  SIZED_STRING* proto_name = dex_get_string(
  696|  1.16M|      dex->object, "string_ids[%i].value", shorty_idx);
  697|       |
  698|  1.16M|  if (proto_name != NULL)
  ------------------
  |  Branch (698:7): [True: 21.4k, False: 1.14M]
  ------------------
  699|  21.4k|  {
  700|       |#ifdef DEBUG_DEX_MODULE
  701|       |    printf(
  702|       |        "[DEX]\tPROTO_NAME %s TYPE_IDX 0x%x SHORTY_IDX 0x%x\n",
  703|       |        proto_name->c_string,
  704|       |        type_idx,
  705|       |        shorty_idx);
  706|       |#endif
  707|       |
  708|  21.4k|    yr_set_sized_string(
  ------------------
  |  |  242|  21.4k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  709|  21.4k|        proto_name->c_string,
  710|  21.4k|        proto_name->length,
  711|  21.4k|        dex->object,
  712|  21.4k|        "field[%i].proto",
  713|  21.4k|        index_encoded_field);
  714|  21.4k|  }
  715|       |
  716|  1.16M|  return current_size;
  717|  1.17M|}
load_encoded_method:
  727|   655k|{
  728|       |#ifdef DEBUG_DEX_MODULE
  729|       |  printf("[DEX] Parse encoded method start_offset:0x%zx\n", start_offset);
  730|       |#endif
  731|       |
  732|   655k|  const uint8_t* data_cur_start = dex->data + start_offset;
  733|   655k|  if (!fits_in_dex(dex, data_cur_start, sizeof(uint32_t) * 3))
  ------------------
  |  |  139|   655k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 655k, False: 0]
  |  |  |  Branch (139:39): [True: 655k, False: 0]
  |  |  ------------------
  |  |  140|   655k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 654k, False: 1.07k]
  |  |  ------------------
  ------------------
  734|  1.07k|    return 0;
  735|       |
  736|   654k|  const uint8_t* data_end = dex->data + dex->data_size;
  737|   654k|  uint32_t current_size = 0;
  738|   654k|  bool error = false;
  739|   654k|  encoded_method_t encoded_method;
  740|       |
  741|   654k|  encoded_method.method_idx_diff = (uint32_t) read_uleb128_bounded(
  742|   654k|      (data_cur_start + current_size), data_end, &current_size, &error);
  743|   654k|  if (error)
  ------------------
  |  Branch (743:7): [True: 0, False: 654k]
  ------------------
  744|      0|    return 0;
  745|       |
  746|   654k|  encoded_method.access_flags = (uint32_t) read_uleb128_bounded(
  747|   654k|      (data_cur_start + current_size), data_end, &current_size, &error);
  748|   654k|  if (error)
  ------------------
  |  Branch (748:7): [True: 0, False: 654k]
  ------------------
  749|      0|    return 0;
  750|       |
  751|   654k|  encoded_method.code_off = (uint32_t) read_uleb128_bounded(
  752|   654k|      (data_cur_start + current_size), data_end, &current_size, &error);
  753|   654k|  if (error)
  ------------------
  |  Branch (753:7): [True: 340, False: 654k]
  ------------------
  754|    340|    return 0;
  755|       |
  756|   654k|  yr_set_integer(
  ------------------
  |  |  236|   654k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  757|   654k|      encoded_method.method_idx_diff,
  758|   654k|      dex->object,
  759|   654k|      "method[%i].method_idx_diff",
  760|   654k|      index_encoded_method);
  761|       |
  762|   654k|  yr_set_integer(
  ------------------
  |  |  236|   654k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  763|   654k|      encoded_method.access_flags,
  764|   654k|      dex->object,
  765|   654k|      "method[%i].access_flags",
  766|   654k|      index_encoded_method);
  767|       |
  768|   654k|  yr_set_integer(
  ------------------
  |  |  236|   654k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  769|   654k|      encoded_method.code_off,
  770|   654k|      dex->object,
  771|   654k|      "method[%i].code_off",
  772|   654k|      index_encoded_method);
  773|       |
  774|   654k|  yr_set_integer(
  ------------------
  |  |  236|   654k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  775|   654k|      direct_method, dex->object, "method[%i].direct", index_encoded_method);
  776|       |
  777|   654k|  yr_set_integer(
  ------------------
  |  |  236|   654k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  778|   654k|      virtual_method, dex->object, "method[%i].virtual", index_encoded_method);
  779|       |
  780|   654k|  *previous_method_idx = encoded_method.method_idx_diff + *previous_method_idx;
  781|       |
  782|   654k|  int64_t name_idx = dex_get_integer(
  783|   654k|      dex->object, "method_ids[%i].name_idx", *previous_method_idx);
  784|       |
  785|   654k|  if (name_idx == YR_UNDEFINED)
  ------------------
  |  |   38|   654k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (785:7): [True: 5.33k, False: 649k]
  ------------------
  786|  5.33k|    return 0;
  787|       |
  788|       |#ifdef DEBUG_DEX_MODULE
  789|       |  printf("[DEX]\tNAME_IDX 0x%llx\n", name_idx);
  790|       |#endif
  791|       |
  792|       |#ifdef DEBUG_DEX_MODULE
  793|       |  printf(
  794|       |      "[DEX]\tEncoded method method_idx:0x%x method_idx_diff:0x%x "
  795|       |      "access_flags:0x%x code_off:0x%x\n",
  796|       |      *previous_method_idx,
  797|       |      encoded_method.method_idx_diff,
  798|       |      encoded_method.access_flags,
  799|       |      encoded_method.code_off);
  800|       |#endif
  801|       |
  802|   649k|  SIZED_STRING* method_name = dex_get_string(
  803|   649k|      dex->object, "string_ids[%i].value", name_idx);
  804|       |
  805|   649k|  if (method_name != NULL)
  ------------------
  |  Branch (805:7): [True: 5.61k, False: 643k]
  ------------------
  806|  5.61k|  {
  807|       |#ifdef DEBUG_DEX_MODULE
  808|       |    printf(
  809|       |        "[DEX]\tMETHOD_NAME %s NAME_IDX 0x%llx\n",
  810|       |        method_name->c_string,
  811|       |        name_idx);
  812|       |#endif
  813|       |
  814|  5.61k|    yr_set_sized_string(
  ------------------
  |  |  242|  5.61k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  815|  5.61k|        method_name->c_string,
  816|  5.61k|        method_name->length,
  817|  5.61k|        dex->object,
  818|  5.61k|        "method[%i].name",
  819|  5.61k|        index_encoded_method);
  820|  5.61k|  }
  821|       |
  822|   649k|  int64_t class_idx = dex_get_integer(
  823|   649k|      dex->object, "method_ids[%i].class_idx", *previous_method_idx);
  824|       |
  825|   649k|  int64_t descriptor_idx = dex_get_integer(
  826|   649k|      dex->object, "type_ids[%i].descriptor_idx", class_idx);
  827|       |
  828|   649k|  SIZED_STRING* class_name = dex_get_string(
  829|   649k|      dex->object, "string_ids[%i].value", descriptor_idx);
  830|       |
  831|   649k|  if (class_name != NULL)
  ------------------
  |  Branch (831:7): [True: 5.94k, False: 643k]
  ------------------
  832|  5.94k|  {
  833|       |#ifdef DEBUG_DEX_MODULE
  834|       |    printf(
  835|       |        "[DEX]\tCLASS_NAME %s CLASS_IDX 0x%llx DESCRIPTOR_IDX:0x%llx\n",
  836|       |        class_name->c_string,
  837|       |        class_idx,
  838|       |        descriptor_idx);
  839|       |#endif
  840|       |
  841|  5.94k|    yr_set_sized_string(
  ------------------
  |  |  242|  5.94k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  842|  5.94k|        class_name->c_string,
  843|  5.94k|        class_name->length,
  844|  5.94k|        dex->object,
  845|  5.94k|        "method[%i].class_name",
  846|  5.94k|        index_encoded_method);
  847|  5.94k|  }
  848|       |
  849|   649k|  int64_t proto_idx = dex_get_integer(
  850|   649k|      dex->object, "method_ids[%i].proto_idx", *previous_method_idx);
  851|       |
  852|   649k|  int64_t shorty_idx = dex_get_integer(
  853|   649k|      dex->object, "proto_ids[%i].shorty_idx", proto_idx);
  854|       |
  855|   649k|  SIZED_STRING* proto_name = dex_get_string(
  856|   649k|      dex->object, "string_ids[%i].value", shorty_idx);
  857|       |
  858|   649k|  if (proto_name != NULL)
  ------------------
  |  Branch (858:7): [True: 1.53k, False: 647k]
  ------------------
  859|  1.53k|  {
  860|       |#ifdef DEBUG_DEX_MODULE
  861|       |    printf(
  862|       |        "[DEX]\tPROTO_NAME %s CLASS_IDX 0x%llx DESCRIPTOR_IDX:0x%llx\n",
  863|       |        proto_name->c_string,
  864|       |        class_idx,
  865|       |        descriptor_idx);
  866|       |#endif
  867|       |
  868|  1.53k|    yr_set_sized_string(
  ------------------
  |  |  242|  1.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  869|  1.53k|        proto_name->c_string,
  870|  1.53k|        proto_name->length,
  871|  1.53k|        dex->object,
  872|  1.53k|        "method[%i].proto",
  873|  1.53k|        index_encoded_method);
  874|  1.53k|  }
  875|       |
  876|   649k|  if (encoded_method.code_off != 0)
  ------------------
  |  Branch (876:7): [True: 16.2k, False: 632k]
  ------------------
  877|  16.2k|  {
  878|       |#ifdef DEBUG_DEX_MODULE
  879|       |    printf("[DEX]\t\tParse CODE item\n");
  880|       |#endif
  881|       |
  882|  16.2k|    if (struct_fits_in_dex(
  ------------------
  |  |  143|  16.2k|  fits_in_dex(dex, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |  139|  16.2k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (139:4): [True: 16.2k, False: 0]
  |  |  |  |  |  Branch (139:39): [True: 16.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  140|  16.2k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (140:4): [True: 13.9k, False: 2.31k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|  16.2k|            dex, dex->data + encoded_method.code_off, code_item_t))
  884|  13.9k|    {
  885|  13.9k|      code_item_t* code_item =
  886|  13.9k|          (code_item_t*) (dex->data + encoded_method.code_off);
  887|       |
  888|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  889|  13.9k|          code_item->registers_size,
  890|  13.9k|          dex->object,
  891|  13.9k|          "method[%i].code_item.registers_size",
  892|  13.9k|          index_encoded_method);
  893|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  894|  13.9k|          code_item->ins_size,
  895|  13.9k|          dex->object,
  896|  13.9k|          "method[%i].code_item.ins_size",
  897|  13.9k|          index_encoded_method);
  898|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  899|  13.9k|          code_item->outs_size,
  900|  13.9k|          dex->object,
  901|  13.9k|          "method[%i].code_item.outs_size",
  902|  13.9k|          index_encoded_method);
  903|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  904|  13.9k|          code_item->tries_size,
  905|  13.9k|          dex->object,
  906|  13.9k|          "method[%i].code_item.tries_size",
  907|  13.9k|          index_encoded_method);
  908|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  909|  13.9k|          code_item->debug_info_off,
  910|  13.9k|          dex->object,
  911|  13.9k|          "method[%i].code_item.debug_info_off",
  912|  13.9k|          index_encoded_method);
  913|  13.9k|      yr_set_integer(
  ------------------
  |  |  236|  13.9k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  914|  13.9k|          code_item->insns_size,
  915|  13.9k|          dex->object,
  916|  13.9k|          "method[%i].code_item.insns_size",
  917|  13.9k|          index_encoded_method);
  918|       |
  919|  13.9k|      if (fits_in_dex(
  ------------------
  |  |  139|  13.9k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 3.41k, False: 10.5k]
  |  |  |  Branch (139:39): [True: 3.41k, False: 0]
  |  |  ------------------
  |  |  140|  13.9k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 3.08k, False: 332]
  |  |  ------------------
  ------------------
  920|  13.9k|              dex,
  921|  13.9k|              dex->data + encoded_method.code_off + sizeof(code_item_t),
  922|  13.9k|              code_item->insns_size * 2))
  923|  3.08k|      {
  924|  3.08k|        yr_set_sized_string(
  ------------------
  |  |  242|  3.08k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  925|  3.08k|            (const char*) (dex->data + encoded_method.code_off + sizeof(code_item_t)),
  926|  3.08k|            code_item->insns_size * 2,
  927|  3.08k|            dex->object,
  928|  3.08k|            "method[%i].code_item.insns",
  929|  3.08k|            index_encoded_method);
  930|  3.08k|      }
  931|  13.9k|    }
  932|  16.2k|  }
  933|       |
  934|   649k|  return current_size;
  935|   654k|}
dex_parse:
  939|  1.26k|{
  940|  1.26k|  dex_header_t* dex_header;
  941|       |
  942|  1.26k|  int i, j;
  943|       |
  944|  1.26k|  uint32_t uleb128_size = 0;
  945|  1.26k|  uint32_t new_size = 0;
  946|  1.26k|  uint32_t index_class_data_item = 0;
  947|  1.26k|  uint32_t index_encoded_method = 0;
  948|  1.26k|  uint32_t index_encoded_field = 0;
  949|       |
  950|  1.26k|  const uint8_t* data_end = dex->data + dex->data_size;
  951|       |
  952|  1.26k|  if (!struct_fits_in_dex(dex, dex->data, dex_header_t))
  ------------------
  |  |  143|  1.26k|  fits_in_dex(dex, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |  139|  1.26k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (139:4): [True: 1.26k, False: 0]
  |  |  |  |  |  Branch (139:39): [True: 1.26k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  140|  1.26k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (140:4): [True: 1.26k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  953|      0|    return;
  954|       |
  955|  1.26k|  dex_parse_header(dex->header, dex->object);
  956|       |
  957|  1.26k|  dex_header = dex->header;
  958|       |
  959|  1.26k|  if (!fits_in_dex(
  ------------------
  |  |  139|  1.26k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 1.21k, False: 54]
  |  |  |  Branch (139:39): [True: 1.21k, False: 0]
  |  |  ------------------
  |  |  140|  1.26k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 1.21k, False: 2]
  |  |  ------------------
  ------------------
  960|  1.26k|          dex,
  961|  1.26k|          dex->data + yr_le32toh(dex_header->string_ids_offset),
  962|  1.26k|          yr_le32toh(dex_header->string_ids_size) * sizeof(string_id_item_t)))
  963|     56|    return;
  964|       |
  965|       |#ifdef DEBUG_DEX_MODULE
  966|       |  printf("[DEX] Parse STRING ID section\n");
  967|       |#endif
  968|       |
  969|       |  // Get information about the String ID section
  970|   669k|  for (i = 0; i < yr_le32toh(dex_header->string_ids_size); i++)
  ------------------
  |  |   89|   669k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (970:15): [True: 668k, False: 1.21k]
  ------------------
  971|   668k|  {
  972|   668k|    string_id_item_t* string_id_item =
  973|   668k|        (string_id_item_t*) (dex->data + yr_le32toh(dex_header->string_ids_offset) + i * sizeof(string_id_item_t));
  ------------------
  |  |   89|   668k|#define yr_le32toh(x) (x)
  ------------------
  974|       |
  975|       |#ifdef DEBUG_DEX_MODULE
  976|       |    printf(
  977|       |        "[DEX] STRING ID item data_offset:0x%x\n",
  978|       |        yr_le32toh(string_id_item->string_data_offset));
  979|       |#endif
  980|       |
  981|   668k|    if (!fits_in_dex(
  ------------------
  |  |  139|   668k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 668k, False: 0]
  |  |  |  Branch (139:39): [True: 668k, False: 0]
  |  |  ------------------
  |  |  140|   668k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 367k, False: 300k]
  |  |  ------------------
  ------------------
  982|   668k|            dex,
  983|   668k|            dex->data + yr_le32toh(string_id_item->string_data_offset),
  984|   668k|            sizeof(uint32_t)))
  985|   300k|      continue;
  986|       |
  987|   367k|    bool error = false;
  988|   367k|    uint32_t value = (uint32_t) read_uleb128_bounded(
  989|   367k|        (dex->data + yr_le32toh(string_id_item->string_data_offset)),
  ------------------
  |  |   89|   367k|#define yr_le32toh(x) (x)
  ------------------
  990|   367k|        data_end, &uleb128_size, &error);
  991|   367k|    if (error)
  ------------------
  |  Branch (991:9): [True: 220, False: 367k]
  ------------------
  992|    220|      continue;
  993|       |
  994|       |#ifdef DEBUG_DEX_MODULE
  995|       |    printf("[DEX] STRING ID item size:0x%x\n", value);
  996|       |#endif
  997|       |
  998|   367k|    if (!fits_in_dex(
  ------------------
  |  |  139|   367k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 363k, False: 3.64k]
  |  |  |  Branch (139:39): [True: 363k, False: 0]
  |  |  ------------------
  |  |  140|   367k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 363k, False: 359]
  |  |  ------------------
  ------------------
  999|   367k|            dex,
 1000|   367k|            dex->data + yr_le32toh(string_id_item->string_data_offset) + 1,
 1001|   367k|            value))
 1002|  4.00k|      continue;
 1003|       |
 1004|   363k|    yr_set_integer(
  ------------------
  |  |  236|   363k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1005|   363k|        yr_le32toh(string_id_item->string_data_offset),
 1006|   363k|        dex->object,
 1007|   363k|        "string_ids[%i].offset",
 1008|   363k|        i);
 1009|       |
 1010|   363k|    yr_set_integer(value, dex->object, "string_ids[%i].size", i);
  ------------------
  |  |  236|   363k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1011|       |
 1012|   363k|    yr_set_sized_string(
  ------------------
  |  |  242|   363k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
 1013|   363k|        (const char*) (
 1014|   363k|            dex->data + yr_le32toh(string_id_item->string_data_offset) + 1),
 1015|   363k|        value,
 1016|   363k|        dex->object,
 1017|   363k|        "string_ids[%i].value",
 1018|   363k|        i);
 1019|   363k|  }
 1020|       |
 1021|  1.21k|  if (!fits_in_dex(
  ------------------
  |  |  139|  1.21k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 1.12k, False: 87]
  |  |  |  Branch (139:39): [True: 1.12k, False: 0]
  |  |  ------------------
  |  |  140|  1.21k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 1.11k, False: 13]
  |  |  ------------------
  ------------------
 1022|  1.21k|          dex,
 1023|  1.21k|          dex->data + yr_le32toh(dex_header->type_ids_offset),
 1024|  1.21k|          yr_le32toh(dex_header->type_ids_size) * sizeof(type_id_item_t)))
 1025|    100|    return;
 1026|       |
 1027|       |#ifdef DEBUG_DEX_MODULE
 1028|       |  printf("[DEX] Parse TYPE ID section\n");
 1029|       |#endif
 1030|       |
 1031|       |  // Get information about the Type ID section
 1032|  1.24M|  for (i = 0; i < yr_le32toh(dex_header->type_ids_size); i++)
  ------------------
  |  |   89|  1.24M|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1032:15): [True: 1.24M, False: 1.11k]
  ------------------
 1033|  1.24M|  {
 1034|  1.24M|    type_id_item_t* type_id_item =
 1035|  1.24M|        (type_id_item_t*) (dex->data + yr_le32toh(dex_header->type_ids_offset) + i * sizeof(type_id_item_t));
  ------------------
  |  |   89|  1.24M|#define yr_le32toh(x) (x)
  ------------------
 1036|       |
 1037|  1.24M|    yr_set_integer(
  ------------------
  |  |  236|  1.24M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1038|  1.24M|        yr_le32toh(type_id_item->descriptor_idx),
 1039|  1.24M|        dex->object,
 1040|  1.24M|        "type_ids[%i].descriptor_idx",
 1041|  1.24M|        i);
 1042|  1.24M|  }
 1043|       |
 1044|  1.11k|  if (!fits_in_dex(
  ------------------
  |  |  139|  1.11k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 1.04k, False: 65]
  |  |  |  Branch (139:39): [True: 1.04k, False: 0]
  |  |  ------------------
  |  |  140|  1.11k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 1.04k, False: 3]
  |  |  ------------------
  ------------------
 1045|  1.11k|          dex,
 1046|  1.11k|          dex->data + yr_le32toh(dex_header->proto_ids_offset),
 1047|  1.11k|          yr_le32toh(dex_header->proto_ids_size) * sizeof(proto_id_item_t)))
 1048|     68|    return;
 1049|       |
 1050|       |#ifdef DEBUG_DEX_MODULE
 1051|       |  printf("[DEX] Parse PROTO ID section\n");
 1052|       |#endif
 1053|       |
 1054|       |  // Get information about the Proto ID section
 1055|   307k|  for (i = 0; i < yr_le32toh(dex_header->proto_ids_size); i++)
  ------------------
  |  |   89|   307k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1055:15): [True: 306k, False: 1.04k]
  ------------------
 1056|   306k|  {
 1057|   306k|    proto_id_item_t* proto_id_item =
 1058|   306k|        (proto_id_item_t*) (dex->data + yr_le32toh(dex_header->proto_ids_offset) + i * sizeof(proto_id_item_t));
  ------------------
  |  |   89|   306k|#define yr_le32toh(x) (x)
  ------------------
 1059|       |
 1060|   306k|    yr_set_integer(
  ------------------
  |  |  236|   306k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1061|   306k|        yr_le32toh(proto_id_item->shorty_idx),
 1062|   306k|        dex->object,
 1063|   306k|        "proto_ids[%i].shorty_idx",
 1064|   306k|        i);
 1065|   306k|    yr_set_integer(
  ------------------
  |  |  236|   306k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1066|   306k|        yr_le32toh(proto_id_item->return_type_idx),
 1067|   306k|        dex->object,
 1068|   306k|        "proto_ids[%i].return_type_idx",
 1069|   306k|        i);
 1070|   306k|    yr_set_integer(
  ------------------
  |  |  236|   306k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1071|   306k|        yr_le32toh(proto_id_item->parameters_offset),
 1072|   306k|        dex->object,
 1073|   306k|        "proto_ids[%i].parameters_offset",
 1074|   306k|        i);
 1075|   306k|  }
 1076|       |
 1077|  1.04k|  if (!fits_in_dex(
  ------------------
  |  |  139|  1.04k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 979, False: 63]
  |  |  |  Branch (139:39): [True: 979, False: 0]
  |  |  ------------------
  |  |  140|  1.04k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 975, False: 4]
  |  |  ------------------
  ------------------
 1078|  1.04k|          dex,
 1079|  1.04k|          dex->data + yr_le32toh(dex_header->field_ids_offset),
 1080|  1.04k|          yr_le32toh(dex_header->field_ids_size) * sizeof(field_id_item_t)))
 1081|     67|    return;
 1082|       |
 1083|       |#ifdef DEBUG_DEX_MODULE
 1084|       |  printf("[DEX] Parse FIELD ID section\n");
 1085|       |#endif
 1086|       |
 1087|       |  // Get information about the Field ID section
 1088|   362k|  for (i = 0; i < yr_le32toh(dex_header->field_ids_size); i++)
  ------------------
  |  |   89|   362k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1088:15): [True: 361k, False: 975]
  ------------------
 1089|   361k|  {
 1090|   361k|    field_id_item_t* field_id_item =
 1091|   361k|        (field_id_item_t*) (dex->data + yr_le32toh(dex_header->field_ids_offset) + i * sizeof(field_id_item_t));
  ------------------
  |  |   89|   361k|#define yr_le32toh(x) (x)
  ------------------
 1092|       |
 1093|   361k|    yr_set_integer(
  ------------------
  |  |  236|   361k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1094|   361k|        yr_le16toh(field_id_item->class_idx),
 1095|   361k|        dex->object,
 1096|   361k|        "field_ids[%i].class_idx",
 1097|   361k|        i);
 1098|   361k|    yr_set_integer(
  ------------------
  |  |  236|   361k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1099|   361k|        yr_le16toh(field_id_item->type_idx),
 1100|   361k|        dex->object,
 1101|   361k|        "field_ids[%i].type_idx",
 1102|   361k|        i);
 1103|   361k|    yr_set_integer(
  ------------------
  |  |  236|   361k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1104|   361k|        yr_le32toh(field_id_item->name_idx),
 1105|   361k|        dex->object,
 1106|   361k|        "field_ids[%i].name_idx",
 1107|   361k|        i);
 1108|   361k|  }
 1109|       |
 1110|    975|  if (!fits_in_dex(
  ------------------
  |  |  139|    975|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 912, False: 63]
  |  |  |  Branch (139:39): [True: 912, False: 0]
  |  |  ------------------
  |  |  140|    975|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 906, False: 6]
  |  |  ------------------
  ------------------
 1111|    975|          dex,
 1112|    975|          dex->data + yr_le32toh(dex_header->method_ids_offset),
 1113|    975|          yr_le32toh(dex_header->method_ids_size) * sizeof(method_id_item_t)))
 1114|     69|    return;
 1115|       |
 1116|       |#ifdef DEBUG_DEX_MODULE
 1117|       |  printf("[DEX] Parse METHOD ID section\n");
 1118|       |#endif
 1119|       |
 1120|       |  // Get information about the Method ID section
 1121|   450k|  for (i = 0; i < yr_le32toh(dex_header->method_ids_size); i++)
  ------------------
  |  |   89|   450k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1121:15): [True: 449k, False: 906]
  ------------------
 1122|   449k|  {
 1123|   449k|    method_id_item_t* method_id_item =
 1124|   449k|        (method_id_item_t*) (dex->data + yr_le32toh(dex_header->method_ids_offset) + i * sizeof(method_id_item_t));
  ------------------
  |  |   89|   449k|#define yr_le32toh(x) (x)
  ------------------
 1125|       |
 1126|   449k|    yr_set_integer(
  ------------------
  |  |  236|   449k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1127|   449k|        yr_le16toh(method_id_item->class_idx),
 1128|   449k|        dex->object,
 1129|   449k|        "method_ids[%i].class_idx",
 1130|   449k|        i);
 1131|   449k|    yr_set_integer(
  ------------------
  |  |  236|   449k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1132|   449k|        yr_le16toh(method_id_item->proto_idx),
 1133|   449k|        dex->object,
 1134|   449k|        "method_ids[%i].proto_idx",
 1135|   449k|        i);
 1136|   449k|    yr_set_integer(
  ------------------
  |  |  236|   449k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1137|   449k|        yr_le32toh(method_id_item->name_idx),
 1138|   449k|        dex->object,
 1139|   449k|        "method_ids[%i].name_idx",
 1140|   449k|        i);
 1141|   449k|  }
 1142|       |
 1143|       |#ifdef DEBUG_DEX_MODULE
 1144|       |  printf("[DEX] Parse MAP List ID section\n");
 1145|       |#endif
 1146|       |
 1147|       |  // Get information about the Map List ID section
 1148|    906|  if (yr_le32toh(dex_header->map_offset) != 0 &&
  ------------------
  |  |   89|    906|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1148:7): [True: 767, False: 139]
  ------------------
 1149|    906|      fits_in_dex(
  ------------------
  |  |  139|    767|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 767, False: 0]
  |  |  |  Branch (139:39): [True: 767, False: 0]
  |  |  ------------------
  |  |  140|    767|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 133, False: 634]
  |  |  ------------------
  ------------------
 1150|    906|          dex,
 1151|    906|          dex->data + yr_le32toh(dex_header->map_offset),
 1152|    906|          sizeof(uint32_t)))
 1153|    133|  {
 1154|    133|    uint32_t* map_list_size =
 1155|    133|        (uint32_t*) (dex->data + yr_le32toh(dex_header->map_offset));
  ------------------
  |  |   89|    133|#define yr_le32toh(x) (x)
  ------------------
 1156|       |
 1157|    133|    yr_set_integer(yr_le32toh(*map_list_size), dex->object, "map_list.size");
  ------------------
  |  |  236|    133|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1158|       |
 1159|    133|    if (!fits_in_dex(
  ------------------
  |  |  139|    133|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 118, False: 15]
  |  |  |  Branch (139:39): [True: 118, False: 0]
  |  |  ------------------
  |  |  140|    133|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 118, False: 0]
  |  |  ------------------
  ------------------
 1160|    133|            dex,
 1161|    133|            dex->data + yr_le32toh(dex_header->map_offset),
 1162|    133|            sizeof(uint32_t) + yr_le32toh(*map_list_size) * sizeof(map_item_t)))
 1163|     15|      return;
 1164|       |
 1165|   172k|    for (i = 0; i < yr_le32toh(*map_list_size); i++)
  ------------------
  |  |   89|   172k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1165:17): [True: 172k, False: 95]
  ------------------
 1166|   172k|    {
 1167|   172k|      map_item_t* map_item =
 1168|   172k|          (map_item_t*) (dex->data + yr_le32toh(dex_header->map_offset) + sizeof(uint32_t) + i * sizeof(map_item_t));
  ------------------
  |  |   89|   172k|#define yr_le32toh(x) (x)
  ------------------
 1169|       |
 1170|   172k|      if (!struct_fits_in_dex(dex, map_item, map_item_t))
  ------------------
  |  |  143|   172k|  fits_in_dex(dex, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |  139|   172k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (139:4): [True: 172k, False: 0]
  |  |  |  |  |  Branch (139:39): [True: 172k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  140|   172k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (140:4): [True: 172k, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1171|     23|        return;
 1172|       |
 1173|   172k|      yr_set_integer(
  ------------------
  |  |  236|   172k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1174|   172k|          yr_le16toh(map_item->type),
 1175|   172k|          dex->object,
 1176|   172k|          "map_list.map_item[%i].type",
 1177|   172k|          i);
 1178|   172k|      yr_set_integer(
  ------------------
  |  |  236|   172k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1179|   172k|          yr_le16toh(map_item->unused),
 1180|   172k|          dex->object,
 1181|   172k|          "map_list.map_item[%i].unused",
 1182|   172k|          i);
 1183|   172k|      yr_set_integer(
  ------------------
  |  |  236|   172k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1184|   172k|          yr_le32toh(map_item->size),
 1185|   172k|          dex->object,
 1186|   172k|          "map_list.map_item[%i].size",
 1187|   172k|          i);
 1188|   172k|      yr_set_integer(
  ------------------
  |  |  236|   172k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1189|   172k|          yr_le32toh(map_item->offset),
 1190|   172k|          dex->object,
 1191|   172k|          "map_list.map_item[%i].offset",
 1192|   172k|          i);
 1193|   172k|    }
 1194|    118|  }
 1195|       |
 1196|    868|  if (!fits_in_dex(
  ------------------
  |  |  139|    868|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 798, False: 70]
  |  |  |  Branch (139:39): [True: 798, False: 0]
  |  |  ------------------
  |  |  140|    868|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 795, False: 3]
  |  |  ------------------
  ------------------
 1197|    868|          dex,
 1198|    868|          dex->data + yr_le32toh(dex_header->class_defs_offset),
 1199|    868|          yr_le32toh(dex_header->class_defs_size) * sizeof(class_id_item_t)))
 1200|     73|    return;
 1201|       |
 1202|       |#ifdef DEBUG_DEX_MODULE
 1203|       |  printf("[DEX] Parse CLASS ID section\n");
 1204|       |#endif
 1205|       |
 1206|       |  // Get information about the Class ID section
 1207|  22.9k|  for (i = 0; i < yr_le32toh(dex_header->class_defs_size); i++)
  ------------------
  |  |   89|  22.9k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1207:15): [True: 22.4k, False: 573]
  ------------------
 1208|  22.4k|  {
 1209|  22.4k|    class_id_item_t* class_id_item =
 1210|  22.4k|        (class_id_item_t*) (dex->data + yr_le32toh(dex_header->class_defs_offset) + i * sizeof(class_id_item_t));
  ------------------
  |  |   89|  22.4k|#define yr_le32toh(x) (x)
  ------------------
 1211|       |
 1212|       |#ifdef DEBUG_DEX_MODULE
 1213|       |    printf(
 1214|       |        "[DEX] CLASS ID item class_idx:0x%x access_flags:0x%x "
 1215|       |        "super_class_idx:0x%x interfaces_offset:0x%x source_file_idx:0x%x "
 1216|       |        "annotations_offset:0x%x class_data_offset:0x%x "
 1217|       |        "static_values_offset:0x%x\n",
 1218|       |        yr_le32toh(class_id_item->class_idx),
 1219|       |        yr_le32toh(class_id_item->access_flags),
 1220|       |        yr_le32toh(class_id_item->super_class_idx),
 1221|       |        yr_le32toh(class_id_item->interfaces_offset),
 1222|       |        yr_le32toh(class_id_item->source_file_idx),
 1223|       |        yr_le32toh(class_id_item->annotations_offset),
 1224|       |        yr_le32toh(class_id_item->class_data_offset),
 1225|       |        yr_le32toh(class_id_item->static_values_offset));
 1226|       |#endif
 1227|       |
 1228|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1229|  22.4k|        yr_le32toh(class_id_item->class_idx),
 1230|  22.4k|        dex->object,
 1231|  22.4k|        "class_defs[%i].class_idx",
 1232|  22.4k|        i);
 1233|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1234|  22.4k|        yr_le32toh(class_id_item->access_flags),
 1235|  22.4k|        dex->object,
 1236|  22.4k|        "class_defs[%i].access_flags",
 1237|  22.4k|        i);
 1238|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1239|  22.4k|        yr_le32toh(class_id_item->super_class_idx),
 1240|  22.4k|        dex->object,
 1241|  22.4k|        "class_defs[%i].super_class_idx",
 1242|  22.4k|        i);
 1243|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1244|  22.4k|        yr_le32toh(class_id_item->interfaces_offset),
 1245|  22.4k|        dex->object,
 1246|  22.4k|        "class_defs[%i].interfaces_offset",
 1247|  22.4k|        i);
 1248|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1249|  22.4k|        yr_le32toh(class_id_item->source_file_idx),
 1250|  22.4k|        dex->object,
 1251|  22.4k|        "class_defs[%i].source_file_idx",
 1252|  22.4k|        i);
 1253|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1254|  22.4k|        yr_le32toh(class_id_item->annotations_offset),
 1255|  22.4k|        dex->object,
 1256|  22.4k|        "class_defs[%i].annotations_offset",
 1257|  22.4k|        i);
 1258|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1259|  22.4k|        yr_le32toh(class_id_item->class_data_offset),
 1260|  22.4k|        dex->object,
 1261|  22.4k|        "class_defs[%i].class_data_offset",
 1262|  22.4k|        i);
 1263|  22.4k|    yr_set_integer(
  ------------------
  |  |  236|  22.4k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1264|  22.4k|        yr_le32toh(class_id_item->static_values_offset),
 1265|  22.4k|        dex->object,
 1266|  22.4k|        "class_defs[%i].static_values_offset",
 1267|  22.4k|        i);
 1268|       |
 1269|  22.4k|    if (yr_le32toh(class_id_item->class_data_offset) != 0)
  ------------------
  |  |   89|  22.4k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1269:9): [True: 5.80k, False: 16.5k]
  ------------------
 1270|  5.80k|    {
 1271|  5.80k|      class_data_item_t class_data_item;
 1272|       |
 1273|  5.80k|      if (!fits_in_dex(
  ------------------
  |  |  139|  5.80k|  ((size_t) size <= dex->data_size && (uint8_t*) (pointer) >= dex->data && \
  |  |  ------------------
  |  |  |  Branch (139:4): [True: 5.80k, False: 0]
  |  |  |  Branch (139:39): [True: 5.80k, False: 0]
  |  |  ------------------
  |  |  140|  5.80k|   (uint8_t*) (pointer) <= dex->data + dex->data_size - size)
  |  |  ------------------
  |  |  |  Branch (140:4): [True: 5.58k, False: 218]
  |  |  ------------------
  ------------------
 1274|  5.80k|              dex,
 1275|  5.80k|              dex->data + yr_le32toh(class_id_item->class_data_offset),
 1276|  5.80k|              4 * sizeof(uint32_t)))
 1277|    218|        return;
 1278|       |
 1279|  5.58k|      uleb128_size = 0;
 1280|  5.58k|      bool error = false;
 1281|       |
 1282|  5.58k|      class_data_item.static_fields_size = (uint32_t) read_uleb128_bounded(
 1283|  5.58k|          (dex->data + yr_le32toh(class_id_item->class_data_offset)),
  ------------------
  |  |   89|  5.58k|#define yr_le32toh(x) (x)
  ------------------
 1284|  5.58k|          data_end, &uleb128_size, &error);
 1285|  5.58k|      if (error)
  ------------------
  |  Branch (1285:11): [True: 0, False: 5.58k]
  ------------------
 1286|      0|        return;
 1287|       |
 1288|  5.58k|      class_data_item.instance_fields_size = (uint32_t) read_uleb128_bounded(
 1289|  5.58k|          (dex->data + yr_le32toh(class_id_item->class_data_offset) +
  ------------------
  |  |   89|  5.58k|#define yr_le32toh(x) (x)
  ------------------
 1290|  5.58k|           uleb128_size),
 1291|  5.58k|          data_end, &uleb128_size, &error);
 1292|  5.58k|      if (error)
  ------------------
  |  Branch (1292:11): [True: 0, False: 5.58k]
  ------------------
 1293|      0|        return;
 1294|       |
 1295|  5.58k|      class_data_item.direct_methods_size = (uint32_t) read_uleb128_bounded(
 1296|  5.58k|          (dex->data + yr_le32toh(class_id_item->class_data_offset) +
  ------------------
  |  |   89|  5.58k|#define yr_le32toh(x) (x)
  ------------------
 1297|  5.58k|           uleb128_size),
 1298|  5.58k|          data_end, &uleb128_size, &error);
 1299|  5.58k|      if (error)
  ------------------
  |  Branch (1299:11): [True: 0, False: 5.58k]
  ------------------
 1300|      0|        return;
 1301|       |
 1302|  5.58k|      class_data_item.virtual_methods_size = (uint32_t) read_uleb128_bounded(
 1303|  5.58k|          (dex->data + yr_le32toh(class_id_item->class_data_offset) +
  ------------------
  |  |   89|  5.58k|#define yr_le32toh(x) (x)
  ------------------
 1304|  5.58k|           uleb128_size),
 1305|  5.58k|          data_end, &uleb128_size, &error);
 1306|  5.58k|      if (error)
  ------------------
  |  Branch (1306:11): [True: 4, False: 5.58k]
  ------------------
 1307|      4|        return;
 1308|       |
 1309|  5.58k|      yr_set_integer(
  ------------------
  |  |  236|  5.58k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1310|  5.58k|          class_data_item.static_fields_size,
 1311|  5.58k|          dex->object,
 1312|  5.58k|          "class_data_item[%i].static_fields_size",
 1313|  5.58k|          index_class_data_item);
 1314|       |
 1315|  5.58k|      yr_set_integer(
  ------------------
  |  |  236|  5.58k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1316|  5.58k|          class_data_item.instance_fields_size,
 1317|  5.58k|          dex->object,
 1318|  5.58k|          "class_data_item[%i].instance_fields_size",
 1319|  5.58k|          index_class_data_item);
 1320|       |
 1321|  5.58k|      yr_set_integer(
  ------------------
  |  |  236|  5.58k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1322|  5.58k|          class_data_item.direct_methods_size,
 1323|  5.58k|          dex->object,
 1324|  5.58k|          "class_data_item[%i].direct_methods_size",
 1325|  5.58k|          index_class_data_item);
 1326|       |
 1327|  5.58k|      yr_set_integer(
  ------------------
  |  |  236|  5.58k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1328|  5.58k|          class_data_item.virtual_methods_size,
 1329|  5.58k|          dex->object,
 1330|  5.58k|          "class_data_item[%i].virtual_methods_size",
 1331|  5.58k|          index_class_data_item);
 1332|       |
 1333|       |#ifdef DEBUG_DEX_MODULE
 1334|       |      printf("[DEX] CLASS DATA item static fields\n");
 1335|       |#endif
 1336|       |
 1337|  5.58k|      uint32_t previous_field_idx = 0;
 1338|  1.13M|      for (j = 0; j < class_data_item.static_fields_size; j++)
  ------------------
  |  Branch (1338:19): [True: 1.13M, False: 1.89k]
  ------------------
 1339|  1.13M|      {
 1340|  1.13M|        new_size = load_encoded_field(
 1341|  1.13M|            dex,
 1342|  1.13M|            yr_le32toh(class_id_item->class_data_offset) + uleb128_size,
  ------------------
  |  |   89|  1.13M|#define yr_le32toh(x) (x)
  ------------------
 1343|  1.13M|            &previous_field_idx,
 1344|  1.13M|            index_encoded_field,
 1345|  1.13M|            1,
 1346|  1.13M|            0);
 1347|       |
 1348|       |        // If the current field isn't parsed the other fields aren't likely to
 1349|       |        // parse.
 1350|  1.13M|        if (new_size == 0)
  ------------------
  |  Branch (1350:13): [True: 3.69k, False: 1.13M]
  ------------------
 1351|  3.69k|          break;
 1352|       |
 1353|  1.13M|        uleb128_size += new_size;
 1354|  1.13M|        index_encoded_field += 1;
 1355|  1.13M|      }
 1356|       |
 1357|       |#ifdef DEBUG_DEX_MODULE
 1358|       |      printf("[DEX] CLASS DATA item instance fields\n");
 1359|       |#endif
 1360|       |
 1361|  5.58k|      previous_field_idx = 0;
 1362|       |
 1363|  41.4k|      for (j = 0; j < class_data_item.instance_fields_size; j++)
  ------------------
  |  Branch (1363:19): [True: 39.2k, False: 2.13k]
  ------------------
 1364|  39.2k|      {
 1365|  39.2k|        new_size = load_encoded_field(
 1366|  39.2k|            dex,
 1367|  39.2k|            yr_le32toh(class_id_item->class_data_offset) + uleb128_size,
  ------------------
  |  |   89|  39.2k|#define yr_le32toh(x) (x)
  ------------------
 1368|  39.2k|            &previous_field_idx,
 1369|  39.2k|            index_encoded_field,
 1370|  39.2k|            0,
 1371|  39.2k|            1);
 1372|       |
 1373|       |        // If the current field isn't parsed the other fields aren't likely to
 1374|       |        // parse.
 1375|  39.2k|        if (new_size == 0)
  ------------------
  |  Branch (1375:13): [True: 3.45k, False: 35.8k]
  ------------------
 1376|  3.45k|          break;
 1377|       |
 1378|  35.8k|        uleb128_size += new_size;
 1379|  35.8k|        index_encoded_field += 1;
 1380|  35.8k|      }
 1381|       |
 1382|       |#ifdef DEBUG_DEX_MODULE
 1383|       |      printf("[DEX] CLASS DATA item direct methods\n");
 1384|       |#endif
 1385|       |
 1386|  5.58k|      uint32_t previous_method_idx = 0;
 1387|       |
 1388|   638k|      for (j = 0; j < class_data_item.direct_methods_size; j++)
  ------------------
  |  Branch (1388:19): [True: 636k, False: 2.04k]
  ------------------
 1389|   636k|      {
 1390|   636k|        new_size = load_encoded_method(
 1391|   636k|            dex,
 1392|   636k|            yr_le32toh(class_id_item->class_data_offset) + uleb128_size,
  ------------------
  |  |   89|   636k|#define yr_le32toh(x) (x)
  ------------------
 1393|   636k|            &previous_method_idx,
 1394|   636k|            index_encoded_method,
 1395|   636k|            1,
 1396|   636k|            0);
 1397|       |
 1398|       |        // If the current field isn't parsed the other fields aren't likely to
 1399|       |        // parse.
 1400|   636k|        if (new_size == 0)
  ------------------
  |  Branch (1400:13): [True: 3.53k, False: 632k]
  ------------------
 1401|  3.53k|          break;
 1402|       |
 1403|   632k|        uleb128_size += new_size;
 1404|   632k|        index_encoded_method += 1;
 1405|   632k|      }
 1406|       |
 1407|       |#ifdef DEBUG_DEX_MODULE
 1408|       |      printf("[DEX] CLASS DATA item virtual methods\n");
 1409|       |#endif
 1410|       |
 1411|  5.58k|      previous_method_idx = 0;
 1412|       |
 1413|  22.1k|      for (j = 0; j < class_data_item.virtual_methods_size; j++)
  ------------------
  |  Branch (1413:19): [True: 19.8k, False: 2.37k]
  ------------------
 1414|  19.8k|      {
 1415|  19.8k|        new_size = load_encoded_method(
 1416|  19.8k|            dex,
 1417|  19.8k|            yr_le32toh(class_id_item->class_data_offset) + uleb128_size,
  ------------------
  |  |   89|  19.8k|#define yr_le32toh(x) (x)
  ------------------
 1418|  19.8k|            &previous_method_idx,
 1419|  19.8k|            index_encoded_method,
 1420|  19.8k|            0,
 1421|  19.8k|            1);
 1422|       |
 1423|       |        // If the current field isn't parsed the other fields aren't likely to
 1424|       |        // parse.
 1425|  19.8k|        if (new_size == 0)
  ------------------
  |  Branch (1425:13): [True: 3.21k, False: 16.6k]
  ------------------
 1426|  3.21k|          break;
 1427|       |
 1428|  16.6k|        uleb128_size += new_size;
 1429|  16.6k|        index_encoded_method += 1;
 1430|  16.6k|      }
 1431|       |
 1432|  5.58k|      index_class_data_item++;
 1433|  5.58k|    }
 1434|  22.4k|  }
 1435|       |
 1436|    573|  yr_set_integer(index_encoded_method, dex->object, "number_of_methods");
  ------------------
  |  |  236|    573|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1437|    573|  yr_set_integer(index_encoded_field, dex->object, "number_of_fields");
  ------------------
  |  |  236|    573|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1438|    573|}
dex__initialize:
 1442|      2|{
 1443|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1444|      2|}
dex__load:
 1458|  2.76k|{
 1459|  2.76k|  YR_MEMORY_BLOCK* block;
 1460|  2.76k|  YR_MEMORY_BLOCK_ITERATOR* iterator = context->iterator;
 1461|       |
 1462|  2.76k|  dex_header_t* dex_header;
 1463|       |
 1464|  2.76k|  yr_set_string(DEX_FILE_MAGIC_035, module_object, "DEX_FILE_MAGIC_035");
  ------------------
  |  |  245|  2.76k|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  5.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.76k|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1465|  2.76k|  yr_set_string(DEX_FILE_MAGIC_036, module_object, "DEX_FILE_MAGIC_036");
  ------------------
  |  |  245|  2.76k|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  5.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.76k|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1466|  2.76k|  yr_set_string(DEX_FILE_MAGIC_037, module_object, "DEX_FILE_MAGIC_037");
  ------------------
  |  |  245|  2.76k|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  5.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.76k|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1467|  2.76k|  yr_set_string(DEX_FILE_MAGIC_038, module_object, "DEX_FILE_MAGIC_038");
  ------------------
  |  |  245|  2.76k|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  5.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.76k|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1468|  2.76k|  yr_set_string(DEX_FILE_MAGIC_039, module_object, "DEX_FILE_MAGIC_039");
  ------------------
  |  |  245|  2.76k|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  5.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.76k|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1469|       |
 1470|  2.76k|  yr_set_integer(0x12345678, module_object, "ENDIAN_CONSTANT");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1471|  2.76k|  yr_set_integer(0x78563412, module_object, "REVERSE_ENDIAN_CONSTANT");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1472|       |
 1473|  2.76k|  yr_set_integer(0xffffffff, module_object, "NO_INDEX");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1474|  2.76k|  yr_set_integer(0x1, module_object, "ACC_PUBLIC");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1475|  2.76k|  yr_set_integer(0x2, module_object, "ACC_PRIVATE");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1476|  2.76k|  yr_set_integer(0x4, module_object, "ACC_PROTECTED");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1477|  2.76k|  yr_set_integer(0x8, module_object, "ACC_STATIC");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1478|  2.76k|  yr_set_integer(0x10, module_object, "ACC_FINAL");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1479|  2.76k|  yr_set_integer(0x20, module_object, "ACC_SYNCHRONIZED");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1480|  2.76k|  yr_set_integer(0x40, module_object, "ACC_VOLATILE");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1481|  2.76k|  yr_set_integer(0x40, module_object, "ACC_BRIDGE");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1482|  2.76k|  yr_set_integer(0x80, module_object, "ACC_TRANSIENT");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1483|  2.76k|  yr_set_integer(0x80, module_object, "ACC_VARARGS");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1484|  2.76k|  yr_set_integer(0x100, module_object, "ACC_NATIVE");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1485|  2.76k|  yr_set_integer(0x200, module_object, "ACC_INTERFACE");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1486|  2.76k|  yr_set_integer(0x400, module_object, "ACC_ABSTRACT");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1487|  2.76k|  yr_set_integer(0x800, module_object, "ACC_STRICT");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1488|  2.76k|  yr_set_integer(0x1000, module_object, "ACC_SYNTHETIC");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1489|  2.76k|  yr_set_integer(0x2000, module_object, "ACC_ANNOTATION");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1490|  2.76k|  yr_set_integer(0x4000, module_object, "ACC_ENUM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1491|  2.76k|  yr_set_integer(0x10000, module_object, "ACC_CONSTRUCTOR");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1492|  2.76k|  yr_set_integer(0x20000, module_object, "ACC_DECLARED_SYNCHRONIZED");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1493|       |
 1494|  2.76k|  yr_set_integer(0x0000, module_object, "TYPE_HEADER_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1495|  2.76k|  yr_set_integer(0x0001, module_object, "TYPE_STRING_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1496|  2.76k|  yr_set_integer(0x0002, module_object, "TYPE_TYPE_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1497|  2.76k|  yr_set_integer(0x0003, module_object, "TYPE_PROTO_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1498|  2.76k|  yr_set_integer(0x0004, module_object, "TYPE_FIELD_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1499|  2.76k|  yr_set_integer(0x0005, module_object, "TYPE_METHOD_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1500|  2.76k|  yr_set_integer(0x0006, module_object, "TYPE_CLASS_DEF_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1501|  2.76k|  yr_set_integer(0x0007, module_object, "TYPE_CALL_SITE_ID_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1502|  2.76k|  yr_set_integer(0x0008, module_object, "TYPE_METHOD_HANDLE_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1503|  2.76k|  yr_set_integer(0x1000, module_object, "TYPE_MAP_LIST");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1504|  2.76k|  yr_set_integer(0x1001, module_object, "TYPE_TYPE_LIST");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1505|  2.76k|  yr_set_integer(0x1002, module_object, "TYPE_ANNOTATION_SET_REF_LIST");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1506|  2.76k|  yr_set_integer(0x1003, module_object, "TYPE_ANNOTATION_SET_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1507|  2.76k|  yr_set_integer(0x2000, module_object, "TYPE_CLASS_DATA_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1508|  2.76k|  yr_set_integer(0x2001, module_object, "TYPE_CODE_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1509|  2.76k|  yr_set_integer(0x2002, module_object, "TYPE_STRING_DATA_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1510|  2.76k|  yr_set_integer(0x2003, module_object, "TYPE_DEBUG_INFO_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1511|  2.76k|  yr_set_integer(0x2004, module_object, "TYPE_ANNOTATION_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1512|  2.76k|  yr_set_integer(0x2005, module_object, "TYPE_ENCODED_ARRAY_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1513|  2.76k|  yr_set_integer(0x2006, module_object, "TYPE_ANNOTATIONS_DIRECTORY_ITEM");
  ------------------
  |  |  236|  2.76k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1514|       |
 1515|  2.76k|  foreach_memory_block(iterator, block)
  ------------------
  |  |  218|  4.27k|  for (block = iterator->first(iterator); block != NULL; \
  |  |  ------------------
  |  |  |  Branch (218:43): [True: 2.76k, False: 1.50k]
  |  |  ------------------
  |  |  219|  2.76k|       block = iterator->next(iterator))
  ------------------
 1516|  2.76k|  {
 1517|  2.76k|    const uint8_t* block_data = block->fetch_data(block);
 1518|       |
 1519|  2.76k|    if (block_data == NULL)
  ------------------
  |  Branch (1519:9): [True: 0, False: 2.76k]
  ------------------
 1520|      0|      continue;
 1521|       |
 1522|  2.76k|    dex_header = dex_get_header(block_data, block->size);
 1523|       |
 1524|  2.76k|    if (dex_header != NULL)
  ------------------
  |  Branch (1524:9): [True: 1.26k, False: 1.50k]
  ------------------
 1525|  1.26k|    {
 1526|  1.26k|      DEX* dex = (DEX*) yr_malloc(sizeof(DEX));
 1527|       |
 1528|  1.26k|      if (dex == NULL)
  ------------------
  |  Branch (1528:11): [True: 0, False: 1.26k]
  ------------------
 1529|      0|        return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 1530|       |
 1531|  1.26k|      dex->data = block_data;
 1532|  1.26k|      dex->data_size = block->size;
 1533|  1.26k|      dex->object = module_object;
 1534|  1.26k|      dex->header = dex_header;
 1535|       |
 1536|  1.26k|      module_object->data = dex;
 1537|       |
 1538|  1.26k|      dex_parse(dex, block->base);
 1539|  1.26k|      break;
 1540|  1.26k|    }
 1541|  2.76k|  }
 1542|       |
 1543|  2.76k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
 1544|  2.76k|}
dex__unload:
 1548|  2.76k|{
 1549|  2.76k|  DEX* dex = (DEX*) module_object->data;
 1550|       |
 1551|  2.76k|  if (dex == NULL)
  ------------------
  |  Branch (1551:7): [True: 1.50k, False: 1.26k]
  ------------------
 1552|  1.50k|    return ERROR_SUCCESS;
  ------------------
  |  |   40|  1.50k|#define ERROR_SUCCESS 0
  ------------------
 1553|       |
 1554|  1.26k|  yr_free(dex);
 1555|       |
 1556|  1.26k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  1.26k|#define ERROR_SUCCESS 0
  ------------------
 1557|  2.76k|}
dex.c:read_uleb128_bounded:
  377|  4.69M|{
  378|  4.69M|  const uint8_t* ptr = pStream;
  379|  4.69M|  int32_t result = 0;
  380|       |
  381|  4.69M|  *error = false;
  382|  4.69M|  if (ptr == pStreamEnd)
  ------------------
  |  Branch (382:7): [True: 0, False: 4.69M]
  ------------------
  383|      0|    goto error;
  384|       |
  385|  4.69M|  result = *(ptr++);
  386|  4.69M|  *size = *size + 1;
  387|       |
  388|  4.69M|  if (result > 0x7f)
  ------------------
  |  Branch (388:7): [True: 45.9k, False: 4.65M]
  ------------------
  389|  45.9k|  {
  390|  45.9k|    if (ptr == pStreamEnd)
  ------------------
  |  Branch (390:9): [True: 1, False: 45.9k]
  ------------------
  391|      1|      goto error;
  392|  45.9k|    int cur = *(ptr++);
  393|  45.9k|    *size = *size + 1;
  394|  45.9k|    result = (result & 0x7f) | ((cur & 0x7f) << 7);
  395|       |
  396|  45.9k|    if (cur > 0x7f)
  ------------------
  |  Branch (396:9): [True: 25.5k, False: 20.4k]
  ------------------
  397|  25.5k|    {
  398|  25.5k|      if (ptr == pStreamEnd)
  ------------------
  |  Branch (398:11): [True: 107, False: 25.4k]
  ------------------
  399|    107|        goto error;
  400|  25.4k|      cur = *(ptr++);
  401|  25.4k|      *size = *size + 1;
  402|  25.4k|      result |= (cur & 0x7f) << 14;
  403|       |
  404|  25.4k|      if (cur > 0x7f)
  ------------------
  |  Branch (404:11): [True: 15.2k, False: 10.2k]
  ------------------
  405|  15.2k|      {
  406|  15.2k|        if (ptr == pStreamEnd)
  ------------------
  |  Branch (406:13): [True: 244, False: 14.9k]
  ------------------
  407|    244|          goto error;
  408|  14.9k|        cur = *(ptr++);
  409|  14.9k|        *size = *size + 1;
  410|  14.9k|        result |= (cur & 0x7f) << 21;
  411|       |
  412|  14.9k|        if (cur > 0x7f)
  ------------------
  |  Branch (412:13): [True: 9.68k, False: 5.29k]
  ------------------
  413|  9.68k|        {
  414|  9.68k|          if (ptr == pStreamEnd)
  ------------------
  |  Branch (414:15): [True: 434, False: 9.24k]
  ------------------
  415|    434|            goto error;
  416|       |          /*
  417|       |           * Note: We don't check to see if cur is out of
  418|       |           * range here, meaning we tolerate garbage in the
  419|       |           * high four-order bits.
  420|       |           */
  421|  9.24k|          cur = *ptr;
  422|  9.24k|          *size = *size + 1;
  423|  9.24k|          result |= cur << 28;
  424|  9.24k|        }
  425|  14.9k|      }
  426|  25.4k|    }
  427|  45.9k|  }
  428|       |
  429|  4.69M|  return result;
  430|       |
  431|    786|error:
  432|    786|  *error = true;
  433|    786|  return result;
  434|  4.69M|}
dex.c:dex_get_integer:
  441|  9.08M|{
  442|  9.08M|  if (index == YR_UNDEFINED || index < 0)
  ------------------
  |  |   38|  18.1M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (442:7): [True: 0, False: 9.08M]
  |  Branch (442:32): [True: 0, False: 9.08M]
  ------------------
  443|      0|    return YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  444|       |
  445|       |  // Impose a reasonably large limit to table indexes.
  446|  9.08M|  if (index > 0x80000)
  ------------------
  |  Branch (446:7): [True: 2.45k, False: 9.08M]
  ------------------
  447|  2.45k|    return YR_UNDEFINED;
  ------------------
  |  |   38|  2.45k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  448|       |
  449|  9.08M|  return yr_get_integer(object, pattern, (int) index);
  ------------------
  |  |  229|  9.08M|#define yr_get_integer(object, ...) yr_object_get_integer(object, __VA_ARGS__)
  ------------------
  450|  9.08M|}
dex.c:dex_get_string:
  457|  5.44M|{
  458|  5.44M|  if (index == YR_UNDEFINED || index < 0)
  ------------------
  |  |   38|  10.8M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (458:7): [True: 341k, False: 5.10M]
  |  Branch (458:32): [True: 124k, False: 4.97M]
  ------------------
  459|   465k|    return NULL;
  460|       |
  461|       |  // Impose a reasonably large limit to table indexes.
  462|  4.97M|  if (index > 0x80000)
  ------------------
  |  Branch (462:7): [True: 1.86M, False: 3.11M]
  ------------------
  463|  1.86M|    return NULL;
  464|       |
  465|  3.11M|  return yr_get_string(object, pattern, (int) index);
  ------------------
  |  |  233|  3.11M|#define yr_get_string(object, ...) yr_object_get_string(object, __VA_ARGS__)
  ------------------
  466|  4.97M|}

dotnet__initialize:
 3495|      2|{
 3496|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 3497|      2|}

elf__initialize:
  993|      2|{
  994|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  995|      2|}

lnk__initialize:
 1854|      2|{
 1855|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1856|      2|}

macho__initialize:
 1333|      2|{
 1334|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1335|      2|}

math__initialize:
  789|      2|{
  790|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  791|      2|}

pe__initialize:
 3941|      2|{
 3942|       |#if defined(HAVE_LIBCRYPTO) && !defined(BORINGSSL)
 3943|       |  // Initialize OpenSSL global objects for the auth library before any
 3944|       |  // multithreaded environment as it is not thread-safe. This can
 3945|       |  // only be called once per process.
 3946|       |  static bool s_initialized = false;
 3947|       |
 3948|       |  if (!s_initialized)
 3949|       |  {
 3950|       |    s_initialized = true;
 3951|       |    initialize_authenticode_parser();
 3952|       |  }
 3953|       |#endif
 3954|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 3955|      2|}

string__initialize:
  103|      2|{
  104|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  105|      2|}

tests__initialize:
  158|      2|{
  159|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  160|      2|}

time__initialize:
   51|      2|{
   52|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
   53|      2|}

yr_notebook_create:
   86|  5.53k|{
   87|  5.53k|  YR_NOTEBOOK* new_notebook = yr_malloc(sizeof(YR_NOTEBOOK));
   88|       |
   89|  5.53k|  if (new_notebook == NULL)
  ------------------
  |  Branch (89:7): [True: 0, False: 5.53k]
  ------------------
   90|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   91|       |
   92|  5.53k|  new_notebook->page_list_head = yr_malloc(
   93|  5.53k|      sizeof(YR_NOTEBOOK_PAGE) + min_page_size);
   94|       |
   95|  5.53k|  if (new_notebook->page_list_head == NULL)
  ------------------
  |  Branch (95:7): [True: 0, False: 5.53k]
  ------------------
   96|      0|  {
   97|      0|    yr_free(new_notebook);
   98|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   99|      0|  }
  100|       |
  101|  5.53k|  new_notebook->min_page_size = min_page_size;
  102|  5.53k|  new_notebook->page_list_head->size = min_page_size;
  103|  5.53k|  new_notebook->page_list_head->used = 0;
  104|  5.53k|  new_notebook->page_list_head->next = NULL;
  105|       |
  106|  5.53k|  *notebook = new_notebook;
  107|       |
  108|  5.53k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  5.53k|#define ERROR_SUCCESS 0
  ------------------
  109|  5.53k|}
yr_notebook_destroy:
  121|  5.53k|{
  122|  5.53k|  YR_NOTEBOOK_PAGE* page = notebook->page_list_head;
  123|       |
  124|  11.0k|  while (page != NULL)
  ------------------
  |  Branch (124:10): [True: 5.53k, False: 5.53k]
  ------------------
  125|  5.53k|  {
  126|  5.53k|    YR_NOTEBOOK_PAGE* next = page->next;
  127|  5.53k|    yr_free(page);
  128|  5.53k|    page = next;
  129|  5.53k|  }
  130|       |
  131|  5.53k|  yr_free(notebook);
  132|       |
  133|  5.53k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  5.53k|#define ERROR_SUCCESS 0
  ------------------
  134|  5.53k|}

yr_object_create:
   56|  30.5M|{
   57|  30.5M|  YR_OBJECT* obj;
   58|  30.5M|  size_t object_size = 0;
   59|       |
   60|  30.5M|  assert(parent != NULL || object != NULL);
   61|  30.5M|  assert(identifier != NULL);
   62|       |
   63|  30.5M|  switch (type)
   64|  30.5M|  {
   65|  6.73M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  6.73M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (65:3): [True: 6.73M, False: 23.8M]
  ------------------
   66|  6.73M|    object_size = sizeof(YR_OBJECT_STRUCTURE);
   67|  6.73M|    break;
   68|   680k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|   680k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (68:3): [True: 680k, False: 29.8M]
  ------------------
   69|   680k|    object_size = sizeof(YR_OBJECT_ARRAY);
   70|   680k|    break;
   71|      0|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (71:3): [True: 0, False: 30.5M]
  ------------------
   72|      0|    object_size = sizeof(YR_OBJECT_DICTIONARY);
   73|      0|    break;
   74|  16.6M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  16.6M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (74:3): [True: 16.6M, False: 13.9M]
  ------------------
   75|  16.6M|    object_size = sizeof(YR_OBJECT);
   76|  16.6M|    break;
   77|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (77:3): [True: 0, False: 30.5M]
  ------------------
   78|      0|    object_size = sizeof(YR_OBJECT);
   79|      0|    break;
   80|  6.50M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  6.50M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (80:3): [True: 6.50M, False: 24.0M]
  ------------------
   81|  6.50M|    object_size = sizeof(YR_OBJECT);
   82|  6.50M|    break;
   83|  5.54k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  5.54k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (83:3): [True: 5.54k, False: 30.5M]
  ------------------
   84|  5.54k|    object_size = sizeof(YR_OBJECT_FUNCTION);
   85|  5.54k|    break;
   86|      0|  default:
  ------------------
  |  Branch (86:3): [True: 0, False: 30.5M]
  ------------------
   87|      0|    assert(false);
   88|  30.5M|  }
   89|       |
   90|  30.5M|  obj = (YR_OBJECT*) yr_malloc(object_size);
   91|       |
   92|  30.5M|  if (obj == NULL)
  ------------------
  |  Branch (92:7): [True: 0, False: 30.5M]
  ------------------
   93|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   94|       |
   95|  30.5M|  obj->type = type;
   96|  30.5M|  obj->identifier = yr_strdup(identifier);
   97|  30.5M|  obj->parent = parent;
   98|  30.5M|  obj->data = NULL;
   99|       |
  100|  30.5M|  switch (type)
  ------------------
  |  Branch (100:11): [True: 0, False: 30.5M]
  ------------------
  101|  30.5M|  {
  102|  16.6M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  16.6M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (102:3): [True: 16.6M, False: 13.9M]
  ------------------
  103|  16.6M|    obj->value.i = YR_UNDEFINED;
  ------------------
  |  |   38|  16.6M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  104|  16.6M|    break;
  105|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (105:3): [True: 0, False: 30.5M]
  ------------------
  106|      0|    obj->value.d = NAN;
  107|      0|    break;
  108|  6.50M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  6.50M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (108:3): [True: 6.50M, False: 24.0M]
  ------------------
  109|  6.50M|    obj->value.ss = NULL;
  110|  6.50M|    break;
  111|  6.73M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  6.73M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (111:3): [True: 6.73M, False: 23.8M]
  ------------------
  112|  6.73M|    object_as_structure(obj)->members = NULL;
  ------------------
  |  |  902|  6.73M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  113|  6.73M|    break;
  114|   680k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|   680k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (114:3): [True: 680k, False: 29.8M]
  ------------------
  115|   680k|    object_as_array(obj)->items = NULL;
  ------------------
  |  |  903|   680k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  116|   680k|    object_as_array(obj)->prototype_item = NULL;
  ------------------
  |  |  903|   680k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  117|   680k|    break;
  118|      0|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (118:3): [True: 0, False: 30.5M]
  ------------------
  119|      0|    object_as_dictionary(obj)->items = NULL;
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  120|      0|    object_as_dictionary(obj)->prototype_item = NULL;
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  121|      0|    break;
  122|  5.54k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  5.54k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (122:3): [True: 5.54k, False: 30.5M]
  ------------------
  123|  5.54k|    object_as_function(obj)->return_obj = NULL;
  ------------------
  |  |  905|  5.54k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  124|  60.9k|    for (int i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|  60.9k|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (124:21): [True: 55.4k, False: 5.54k]
  ------------------
  125|  55.4k|    {
  126|  55.4k|      object_as_function(obj)->prototypes[i].arguments_fmt = NULL;
  ------------------
  |  |  905|  55.4k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  127|  55.4k|      object_as_function(obj)->prototypes[i].code = NULL;
  ------------------
  |  |  905|  55.4k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  128|  55.4k|    }
  129|  5.54k|    break;
  130|  30.5M|  }
  131|       |
  132|  30.5M|  if (obj->identifier == NULL)
  ------------------
  |  Branch (132:7): [True: 0, False: 30.5M]
  ------------------
  133|      0|  {
  134|      0|    yr_free(obj);
  135|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  136|      0|  }
  137|       |
  138|  30.5M|  if (parent != NULL)
  ------------------
  |  Branch (138:7): [True: 423k, False: 30.1M]
  ------------------
  139|   423k|  {
  140|   423k|    assert(
  141|   423k|        parent->type == OBJECT_TYPE_STRUCTURE ||
  142|   423k|        parent->type == OBJECT_TYPE_ARRAY ||
  143|   423k|        parent->type == OBJECT_TYPE_DICTIONARY ||
  144|   423k|        parent->type == OBJECT_TYPE_FUNCTION);
  145|       |
  146|       |    // Objects with a parent take the canary from it.
  147|   423k|    obj->canary = parent->canary;
  148|       |
  149|   423k|    switch (parent->type)
  ------------------
  |  Branch (149:13): [True: 0, False: 423k]
  ------------------
  150|   423k|    {
  151|   387k|    case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|   387k|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (151:5): [True: 387k, False: 36.0k]
  ------------------
  152|   387k|      FAIL_ON_ERROR_WITH_CLEANUP(yr_object_structure_set_member(parent, obj), {
  ------------------
  |  |  140|   387k|  {                                            \
  |  |  141|   387k|    int __error = (x);                         \
  |  |  142|   387k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|   387k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 387k]
  |  |  ------------------
  |  |  143|   387k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|   387k|  }
  ------------------
  153|   387k|        yr_free((void*) obj->identifier);
  154|   387k|        yr_free(obj);
  155|   387k|      });
  156|   387k|      break;
  157|       |
  158|  30.4k|    case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  30.4k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (158:5): [True: 30.4k, False: 393k]
  ------------------
  159|  30.4k|      object_as_array(parent)->prototype_item = obj;
  ------------------
  |  |  903|  30.4k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  160|  30.4k|      break;
  161|       |
  162|      0|    case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (162:5): [True: 0, False: 423k]
  ------------------
  163|      0|      object_as_dictionary(parent)->prototype_item = obj;
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  164|      0|      break;
  165|       |
  166|  5.54k|    case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  5.54k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (166:5): [True: 5.54k, False: 418k]
  ------------------
  167|  5.54k|      object_as_function(parent)->return_obj = obj;
  ------------------
  |  |  905|  5.54k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  168|  5.54k|      break;
  169|   423k|    }
  170|   423k|  }
  171|       |
  172|  30.5M|  if (object != NULL)
  ------------------
  |  Branch (172:7): [True: 30.2M, False: 340k]
  ------------------
  173|  30.2M|    *object = obj;
  174|       |
  175|  30.5M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  30.5M|#define ERROR_SUCCESS 0
  ------------------
  176|  30.5M|}
yr_object_set_canary:
  179|  2.76k|{
  180|  2.76k|  object->canary = canary;
  181|  2.76k|}
yr_object_function_create:
  190|  16.6k|{
  191|  16.6k|  YR_OBJECT* return_obj;
  192|  16.6k|  YR_OBJECT* o = NULL;
  193|  16.6k|  YR_OBJECT_FUNCTION* f = NULL;
  194|       |
  195|  16.6k|  int8_t return_type;
  196|       |
  197|       |  // The parent of a function must be a structure.
  198|  16.6k|  assert(parent != NULL && parent->type == OBJECT_TYPE_STRUCTURE);
  199|       |
  200|  16.6k|  switch (*return_fmt)
  201|  16.6k|  {
  202|  16.6k|  case 'i':
  ------------------
  |  Branch (202:3): [True: 16.6k, False: 0]
  ------------------
  203|  16.6k|    return_type = OBJECT_TYPE_INTEGER;
  ------------------
  |  |   58|  16.6k|#define OBJECT_TYPE_INTEGER    1
  ------------------
  204|  16.6k|    break;
  205|      0|  case 's':
  ------------------
  |  Branch (205:3): [True: 0, False: 16.6k]
  ------------------
  206|      0|    return_type = OBJECT_TYPE_STRING;
  ------------------
  |  |   59|      0|#define OBJECT_TYPE_STRING     2
  ------------------
  207|      0|    break;
  208|      0|  case 'f':
  ------------------
  |  Branch (208:3): [True: 0, False: 16.6k]
  ------------------
  209|      0|    return_type = OBJECT_TYPE_FLOAT;
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  210|      0|    break;
  211|      0|  default:
  ------------------
  |  Branch (211:3): [True: 0, False: 16.6k]
  ------------------
  212|      0|    return ERROR_INVALID_FORMAT;
  ------------------
  |  |   83|      0|#define ERROR_INVALID_FORMAT                 38
  ------------------
  213|  16.6k|  }
  214|       |
  215|       |  // Try to find if the structure already has a function
  216|       |  // with that name. In that case this is a function overload.
  217|  16.6k|  f = object_as_function(yr_object_lookup_field(parent, identifier));
  ------------------
  |  |  905|  16.6k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  218|       |
  219|       |  // Overloaded functions must have the same return type.
  220|  16.6k|  if (f != NULL && return_type != f->return_obj->type)
  ------------------
  |  Branch (220:7): [True: 11.0k, False: 5.54k]
  |  Branch (220:20): [True: 0, False: 11.0k]
  ------------------
  221|      0|    return ERROR_WRONG_RETURN_TYPE;
  ------------------
  |  |   86|      0|#define ERROR_WRONG_RETURN_TYPE              41
  ------------------
  222|       |
  223|  16.6k|  if (f == NULL)  // Function doesn't exist yet
  ------------------
  |  Branch (223:7): [True: 5.54k, False: 11.0k]
  ------------------
  224|  5.54k|  {
  225|  5.54k|    FAIL_ON_ERROR(
  ------------------
  |  |  132|  5.54k|  {                               \
  |  |  133|  5.54k|    int __error = (x);            \
  |  |  134|  5.54k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  5.54k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 5.54k]
  |  |  ------------------
  |  |  135|  5.54k|      return __error;             \
  |  |  136|  5.54k|  }
  ------------------
  226|  5.54k|        yr_object_create(OBJECT_TYPE_FUNCTION, identifier, parent, &o));
  227|       |
  228|       |    // In case of failure while creating return_obj we don't need to free the
  229|       |    // previously created "o" object, as it is already associated with its
  230|       |    // parent and will be destroyed when the parent is destroyed.
  231|  5.54k|    FAIL_ON_ERROR(yr_object_create(return_type, "result", o, &return_obj));
  ------------------
  |  |  132|  5.54k|  {                               \
  |  |  133|  5.54k|    int __error = (x);            \
  |  |  134|  5.54k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  5.54k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 5.54k]
  |  |  ------------------
  |  |  135|  5.54k|      return __error;             \
  |  |  136|  5.54k|  }
  ------------------
  232|       |
  233|  5.54k|    f = object_as_function(o);
  ------------------
  |  |  905|  5.54k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  234|  5.54k|  }
  235|       |
  236|  36.0k|  for (int i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|  36.0k|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (236:19): [True: 36.0k, False: 0]
  ------------------
  237|  36.0k|  {
  238|  36.0k|    if (f->prototypes[i].arguments_fmt == NULL)
  ------------------
  |  Branch (238:9): [True: 16.6k, False: 19.3k]
  ------------------
  239|  16.6k|    {
  240|  16.6k|      f->prototypes[i].arguments_fmt = arguments_fmt;
  241|  16.6k|      f->prototypes[i].code = code;
  242|       |
  243|  16.6k|      break;
  244|  16.6k|    }
  245|  36.0k|  }
  246|       |
  247|  16.6k|  if (function != NULL)
  ------------------
  |  Branch (247:7): [True: 16.6k, False: 0]
  ------------------
  248|  16.6k|    *function = (YR_OBJECT*) f;
  249|       |
  250|  16.6k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  16.6k|#define ERROR_SUCCESS 0
  ------------------
  251|  16.6k|}
yr_object_destroy:
  321|  30.5M|{
  322|  30.5M|  YR_STRUCTURE_MEMBER* member;
  323|  30.5M|  YR_STRUCTURE_MEMBER* next_member;
  324|  30.5M|  YR_ARRAY_ITEMS* array_items;
  325|  30.5M|  YR_DICTIONARY_ITEMS* dict_items;
  326|       |
  327|  30.5M|  if (object == NULL)
  ------------------
  |  Branch (327:7): [True: 0, False: 30.5M]
  ------------------
  328|      0|    return;
  329|       |
  330|  30.5M|  switch (object->type)
  ------------------
  |  Branch (330:11): [True: 16.6M, False: 13.9M]
  ------------------
  331|  30.5M|  {
  332|  6.73M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  6.73M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (332:3): [True: 6.73M, False: 23.8M]
  ------------------
  333|  6.73M|    member = object_as_structure(object)->members;
  ------------------
  |  |  902|  6.73M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  334|       |
  335|  31.8M|    while (member != NULL)
  ------------------
  |  Branch (335:12): [True: 25.1M, False: 6.73M]
  ------------------
  336|  25.1M|    {
  337|  25.1M|      next_member = member->next;
  338|  25.1M|      yr_object_destroy(member->object);
  339|  25.1M|      yr_free(member);
  340|  25.1M|      member = next_member;
  341|  25.1M|    }
  342|  6.73M|    break;
  343|       |
  344|  6.50M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  6.50M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (344:3): [True: 6.50M, False: 24.0M]
  ------------------
  345|  6.50M|    if (object->value.ss != NULL)
  ------------------
  |  Branch (345:9): [True: 472k, False: 6.03M]
  ------------------
  346|   472k|      yr_free(object->value.ss);
  347|  6.50M|    break;
  348|       |
  349|   680k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|   680k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (349:3): [True: 680k, False: 29.8M]
  ------------------
  350|   680k|    if (object_as_array(object)->prototype_item != NULL)
  ------------------
  |  |  903|   680k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  |  Branch (350:9): [True: 680k, False: 0]
  ------------------
  351|   680k|      yr_object_destroy(object_as_array(object)->prototype_item);
  ------------------
  |  |  903|   680k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  352|       |
  353|   680k|    array_items = object_as_array(object)->items;
  ------------------
  |  |  903|   680k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  354|       |
  355|   680k|    if (array_items != NULL)
  ------------------
  |  Branch (355:9): [True: 7.41k, False: 672k]
  ------------------
  356|  7.41k|    {
  357|  5.05M|      for (int i = 0; i < array_items->length; i++)
  ------------------
  |  Branch (357:23): [True: 5.04M, False: 7.41k]
  ------------------
  358|  5.04M|        if (array_items->objects[i] != NULL)
  ------------------
  |  Branch (358:13): [True: 4.74M, False: 300k]
  ------------------
  359|  4.74M|          yr_object_destroy(array_items->objects[i]);
  360|  7.41k|    }
  361|       |
  362|   680k|    yr_free(array_items);
  363|   680k|    break;
  364|       |
  365|      0|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (365:3): [True: 0, False: 30.5M]
  ------------------
  366|      0|    if (object_as_dictionary(object)->prototype_item != NULL)
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  |  Branch (366:9): [True: 0, False: 0]
  ------------------
  367|      0|      yr_object_destroy(object_as_dictionary(object)->prototype_item);
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  368|       |
  369|      0|    dict_items = object_as_dictionary(object)->items;
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  370|       |
  371|      0|    if (dict_items != NULL)
  ------------------
  |  Branch (371:9): [True: 0, False: 0]
  ------------------
  372|      0|    {
  373|      0|      for (int i = 0; i < dict_items->used; i++)
  ------------------
  |  Branch (373:23): [True: 0, False: 0]
  ------------------
  374|      0|      {
  375|      0|        if (dict_items->objects[i].key != NULL)
  ------------------
  |  Branch (375:13): [True: 0, False: 0]
  ------------------
  376|      0|          yr_free(dict_items->objects[i].key);
  377|       |
  378|      0|        if (dict_items->objects[i].obj != NULL)
  ------------------
  |  Branch (378:13): [True: 0, False: 0]
  ------------------
  379|      0|          yr_object_destroy(dict_items->objects[i].obj);
  380|      0|      }
  381|      0|    }
  382|       |
  383|      0|    yr_free(dict_items);
  384|      0|    break;
  385|       |
  386|  5.54k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  5.54k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (386:3): [True: 5.54k, False: 30.5M]
  ------------------
  387|  5.54k|    yr_object_destroy(object_as_function(object)->return_obj);
  ------------------
  |  |  905|  5.54k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  388|  5.54k|    break;
  389|  30.5M|  }
  390|       |
  391|  30.5M|  yr_free((void*) object->identifier);
  392|  30.5M|  yr_free(object);
  393|  30.5M|}
yr_object_lookup_field:
  396|  76.4M|{
  397|  76.4M|  YR_STRUCTURE_MEMBER* member;
  398|       |
  399|  76.4M|  assert(object != NULL);
  400|  76.4M|  assert(object->type == OBJECT_TYPE_STRUCTURE);
  401|       |
  402|  76.4M|  member = object_as_structure(object)->members;
  ------------------
  |  |  902|  76.4M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  403|       |
  404|   431M|  while (member != NULL)
  ------------------
  |  Branch (404:10): [True: 403M, False: 27.4M]
  ------------------
  405|   403M|  {
  406|   403M|    if (strcmp(member->object->identifier, field_name) == 0)
  ------------------
  |  Branch (406:9): [True: 48.9M, False: 354M]
  ------------------
  407|  48.9M|      return member->object;
  408|       |
  409|   354M|    member = member->next;
  410|   354M|  }
  411|       |
  412|  27.4M|  return NULL;
  413|  76.4M|}
yr_object_copy:
  537|  30.1M|{
  538|  30.1M|  YR_OBJECT* copy;
  539|  30.1M|  YR_OBJECT* o;
  540|       |
  541|  30.1M|  YR_STRUCTURE_MEMBER* structure_member;
  542|       |
  543|  30.1M|  *object_copy = NULL;
  544|       |
  545|  30.1M|  FAIL_ON_ERROR(
  ------------------
  |  |  132|  30.1M|  {                               \
  |  |  133|  30.1M|    int __error = (x);            \
  |  |  134|  30.1M|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  30.1M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 30.1M]
  |  |  ------------------
  |  |  135|  30.1M|      return __error;             \
  |  |  136|  30.1M|  }
  ------------------
  546|  30.1M|      yr_object_create(object->type, object->identifier, NULL, &copy));
  547|       |
  548|  30.1M|  copy->canary = object->canary;
  549|       |
  550|  30.1M|  switch (object->type)
  551|  30.1M|  {
  552|  16.3M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  16.3M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (552:3): [True: 16.3M, False: 13.8M]
  ------------------
  553|  16.3M|    copy->value.i = object->value.i;
  554|  16.3M|    break;
  555|       |
  556|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (556:3): [True: 0, False: 30.1M]
  ------------------
  557|      0|    copy->value.d = object->value.d;
  558|      0|    break;
  559|       |
  560|  6.46M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  6.46M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (560:3): [True: 6.46M, False: 23.6M]
  ------------------
  561|       |
  562|  6.46M|    if (object->value.ss != NULL)
  ------------------
  |  Branch (562:9): [True: 0, False: 6.46M]
  ------------------
  563|      0|      copy->value.ss = ss_dup(object->value.ss);
  564|  6.46M|    else
  565|  6.46M|      copy->value.ss = NULL;
  566|       |
  567|  6.46M|    break;
  568|       |
  569|      0|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|      0|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (569:3): [True: 0, False: 30.1M]
  ------------------
  570|       |
  571|      0|    FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|      0|  {                                            \
  |  |  141|      0|    int __error = (x);                         \
  |  |  142|      0|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  143|      0|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|      0|  }
  ------------------
  572|      0|        yr_object_copy(
  573|      0|            object_as_function(object)->return_obj,
  574|      0|            &object_as_function(copy)->return_obj),
  575|       |        // cleanup
  576|      0|        yr_object_destroy(copy));
  577|       |
  578|      0|    for (int i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|      0|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (578:21): [True: 0, False: 0]
  ------------------
  579|      0|      object_as_function(copy)->prototypes[i] =
  ------------------
  |  |  905|      0|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  580|      0|          object_as_function(object)->prototypes[i];
  ------------------
  |  |  905|      0|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  581|       |
  582|      0|    break;
  583|       |
  584|  6.69M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  6.69M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (584:3): [True: 6.69M, False: 23.4M]
  ------------------
  585|       |
  586|  6.69M|    structure_member = object_as_structure(object)->members;
  ------------------
  |  |  902|  6.69M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  587|       |
  588|  31.4M|    while (structure_member != NULL)
  ------------------
  |  Branch (588:12): [True: 24.7M, False: 6.69M]
  ------------------
  589|  24.7M|    {
  590|  24.7M|      FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  24.7M|  {                                            \
  |  |  141|  24.7M|    int __error = (x);                         \
  |  |  142|  24.7M|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  24.7M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 24.7M]
  |  |  ------------------
  |  |  143|  24.7M|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  24.7M|  }
  ------------------
  591|  24.7M|          yr_object_copy(structure_member->object, &o),
  592|  24.7M|          yr_object_destroy(copy));
  593|       |
  594|  24.7M|      FAIL_ON_ERROR_WITH_CLEANUP(yr_object_structure_set_member(copy, o),
  ------------------
  |  |  140|  24.7M|  {                                            \
  |  |  141|  24.7M|    int __error = (x);                         \
  |  |  142|  24.7M|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  24.7M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 24.7M]
  |  |  ------------------
  |  |  143|  24.7M|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  24.7M|  }
  ------------------
  595|       |                                 // cleanup
  596|  24.7M|                                 yr_free(o);
  597|  24.7M|                                 yr_object_destroy(copy));
  598|       |
  599|  24.7M|      structure_member = structure_member->next;
  600|  24.7M|    }
  601|       |
  602|  6.69M|    break;
  603|       |
  604|  6.69M|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|   649k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (604:3): [True: 649k, False: 29.4M]
  ------------------
  605|       |
  606|   649k|    FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|   649k|  {                                            \
  |  |  141|   649k|    int __error = (x);                         \
  |  |  142|   649k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|   649k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 649k]
  |  |  ------------------
  |  |  143|   649k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|   649k|  }
  ------------------
  607|   649k|        yr_object_copy(object_as_array(object)->prototype_item, &o),
  608|   649k|        yr_object_destroy(copy));
  609|       |
  610|   649k|    object_as_array(copy)->prototype_item = o;
  ------------------
  |  |  903|   649k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  611|       |
  612|   649k|    break;
  613|       |
  614|      0|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (614:3): [True: 0, False: 30.1M]
  ------------------
  615|       |
  616|      0|    FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|      0|  {                                            \
  |  |  141|      0|    int __error = (x);                         \
  |  |  142|      0|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  143|      0|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|      0|  }
  ------------------
  617|      0|        yr_object_copy(object_as_dictionary(object)->prototype_item, &o),
  618|      0|        yr_object_destroy(copy));
  619|       |
  620|      0|    object_as_dictionary(copy)->prototype_item = o;
  ------------------
  |  |  904|      0|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  621|       |
  622|      0|    break;
  623|       |
  624|      0|  default:
  ------------------
  |  Branch (624:3): [True: 0, False: 30.1M]
  ------------------
  625|      0|    assert(false);
  626|  30.1M|  }
  627|       |
  628|  30.1M|  *object_copy = copy;
  629|       |
  630|  30.1M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  30.1M|#define ERROR_SUCCESS 0
  ------------------
  631|  30.1M|}
yr_object_structure_set_member:
  634|  25.1M|{
  635|  25.1M|  YR_STRUCTURE_MEMBER* sm;
  636|       |
  637|  25.1M|  assert(object->type == OBJECT_TYPE_STRUCTURE);
  638|       |
  639|       |  // Check if the object already have a member with the same identifier
  640|       |
  641|  25.1M|  if (yr_object_lookup_field(object, member->identifier) != NULL)
  ------------------
  |  Branch (641:7): [True: 0, False: 25.1M]
  ------------------
  642|      0|    return ERROR_DUPLICATED_STRUCTURE_MEMBER;
  ------------------
  |  |   87|      0|#define ERROR_DUPLICATED_STRUCTURE_MEMBER    42
  ------------------
  643|       |
  644|  25.1M|  sm = (YR_STRUCTURE_MEMBER*) yr_malloc(sizeof(YR_STRUCTURE_MEMBER));
  645|       |
  646|  25.1M|  if (sm == NULL)
  ------------------
  |  Branch (646:7): [True: 0, False: 25.1M]
  ------------------
  647|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  648|       |
  649|  25.1M|  member->parent = object;
  650|  25.1M|  sm->object = member;
  651|  25.1M|  sm->next = object_as_structure(object)->members;
  ------------------
  |  |  902|  25.1M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  652|       |
  653|  25.1M|  object_as_structure(object)->members = sm;
  ------------------
  |  |  902|  25.1M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  654|       |
  655|  25.1M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  25.1M|#define ERROR_SUCCESS 0
  ------------------
  656|  25.1M|}
yr_object_array_get_item:
  673|  26.9M|{
  674|  26.9M|  YR_OBJECT* result = NULL;
  675|  26.9M|  YR_OBJECT_ARRAY* array;
  676|       |
  677|  26.9M|  assert(object->type == OBJECT_TYPE_ARRAY);
  678|       |
  679|  26.9M|  if (index < 0)
  ------------------
  |  Branch (679:7): [True: 0, False: 26.9M]
  ------------------
  680|      0|    return NULL;
  681|       |
  682|  26.9M|  array = object_as_array(object);
  ------------------
  |  |  903|  26.9M|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  683|       |
  684|  26.9M|  if (array->items != NULL && array->items->capacity > index)
  ------------------
  |  Branch (684:7): [True: 26.8M, False: 24.8k]
  |  Branch (684:31): [True: 26.5M, False: 304k]
  ------------------
  685|  26.5M|    result = array->items->objects[index];
  686|       |
  687|  26.9M|  if (result == NULL && flags & OBJECT_CREATE)
  ------------------
  |  |   56|  8.23M|#define OBJECT_CREATE 1
  ------------------
  |  Branch (687:7): [True: 8.23M, False: 18.6M]
  |  Branch (687:25): [True: 4.74M, False: 3.49M]
  ------------------
  688|  4.74M|  {
  689|  4.74M|    yr_object_copy(array->prototype_item, &result);
  690|       |
  691|  4.74M|    if (result != NULL)
  ------------------
  |  Branch (691:9): [True: 4.74M, False: 0]
  ------------------
  692|  4.74M|      yr_object_array_set_item(object, result, index);
  693|  4.74M|  }
  694|       |
  695|  26.9M|  return result;
  696|  26.9M|}
yr_object_array_set_item:
  699|  4.74M|{
  700|  4.74M|  YR_OBJECT_ARRAY* array;
  701|       |
  702|  4.74M|  int capacity;
  703|       |
  704|  4.74M|  assert(index >= 0);
  705|  4.74M|  assert(object->type == OBJECT_TYPE_ARRAY);
  706|       |
  707|  4.74M|  array = object_as_array(object);
  ------------------
  |  |  903|  4.74M|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  708|       |
  709|  4.74M|  if (array->items == NULL)
  ------------------
  |  Branch (709:7): [True: 7.41k, False: 4.73M]
  ------------------
  710|  7.41k|  {
  711|  7.41k|    capacity = 64;
  712|       |
  713|  7.45k|    while (capacity <= index) capacity *= 2;
  ------------------
  |  Branch (713:12): [True: 38, False: 7.41k]
  ------------------
  714|       |
  715|  7.41k|    array->items = (YR_ARRAY_ITEMS*) yr_malloc(
  716|  7.41k|        sizeof(YR_ARRAY_ITEMS) + capacity * sizeof(YR_OBJECT*));
  717|       |
  718|  7.41k|    if (array->items == NULL)
  ------------------
  |  Branch (718:9): [True: 0, False: 7.41k]
  ------------------
  719|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  720|       |
  721|  7.41k|    memset(array->items->objects, 0, capacity * sizeof(YR_OBJECT*));
  722|       |
  723|  7.41k|    array->items->capacity = capacity;
  724|  7.41k|    array->items->length = 0;
  725|  7.41k|  }
  726|  4.73M|  else if (index >= array->items->capacity)
  ------------------
  |  Branch (726:12): [True: 2.91k, False: 4.73M]
  ------------------
  727|  2.91k|  {
  728|  2.91k|    capacity = array->items->capacity * 2;
  729|       |
  730|  2.95k|    while (capacity <= index) capacity *= 2;
  ------------------
  |  Branch (730:12): [True: 37, False: 2.91k]
  ------------------
  731|       |
  732|  2.91k|    array->items = (YR_ARRAY_ITEMS*) yr_realloc(
  733|  2.91k|        array->items, sizeof(YR_ARRAY_ITEMS) + capacity * sizeof(YR_OBJECT*));
  734|       |
  735|  2.91k|    if (array->items == NULL)
  ------------------
  |  Branch (735:9): [True: 0, False: 2.91k]
  ------------------
  736|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  737|       |
  738|  6.66M|    for (int i = array->items->capacity; i < capacity; i++)
  ------------------
  |  Branch (738:42): [True: 6.66M, False: 2.91k]
  ------------------
  739|  6.66M|      array->items->objects[i] = NULL;
  740|       |
  741|  2.91k|    array->items->capacity = capacity;
  742|  2.91k|  }
  743|       |
  744|  4.74M|  item->parent = object;
  745|  4.74M|  array->items->objects[index] = item;
  746|       |
  747|  4.74M|  if (index >= array->items->length)
  ------------------
  |  Branch (747:7): [True: 4.74M, False: 0]
  ------------------
  748|  4.74M|    array->items->length = index + 1;
  749|       |
  750|  4.74M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  4.74M|#define ERROR_SUCCESS 0
  ------------------
  751|  4.74M|}
yr_object_get_integer:
  871|  9.08M|{
  872|  9.08M|  YR_OBJECT* integer_obj;
  873|       |
  874|  9.08M|  va_list args;
  875|  9.08M|  va_start(args, field);
  876|       |
  877|  9.08M|  if (field != NULL)
  ------------------
  |  Branch (877:7): [True: 9.08M, False: 0]
  ------------------
  878|  9.08M|    integer_obj = _yr_object_lookup(object, 0, field, args);
  879|      0|  else
  880|      0|    integer_obj = object;
  881|       |
  882|  9.08M|  va_end(args);
  883|       |
  884|  9.08M|  if (integer_obj == NULL)
  ------------------
  |  Branch (884:7): [True: 468k, False: 8.61M]
  ------------------
  885|   468k|    return YR_UNDEFINED;
  ------------------
  |  |   38|   468k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  886|       |
  887|  8.61M|  assertf(
  ------------------
  |  |  127|  8.61M|  if (!(expr))                                                              \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 8.61M]
  |  |  ------------------
  |  |  128|  8.61M|  {                                                                         \
  |  |  129|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  130|      0|    abort();                                                                \
  |  |  131|      0|  }
  ------------------
  888|  8.61M|      integer_obj->type == OBJECT_TYPE_INTEGER,
  889|  8.61M|      "type of \"%s\" is not integer\n",
  890|  8.61M|      field);
  891|       |
  892|  8.61M|  return integer_obj->value.i;
  893|  8.61M|}
yr_object_get_string:
  921|  3.11M|{
  922|  3.11M|  YR_OBJECT* string_obj;
  923|       |
  924|  3.11M|  va_list args;
  925|  3.11M|  va_start(args, field);
  926|       |
  927|  3.11M|  if (field != NULL)
  ------------------
  |  Branch (927:7): [True: 3.11M, False: 0]
  ------------------
  928|  3.11M|    string_obj = _yr_object_lookup(object, 0, field, args);
  929|      0|  else
  930|      0|    string_obj = object;
  931|       |
  932|  3.11M|  va_end(args);
  933|       |
  934|  3.11M|  if (string_obj == NULL)
  ------------------
  |  Branch (934:7): [True: 3.02M, False: 89.4k]
  ------------------
  935|  3.02M|    return NULL;
  936|       |
  937|  89.4k|  assertf(
  ------------------
  |  |  127|  89.4k|  if (!(expr))                                                              \
  |  |  ------------------
  |  |  |  Branch (127:7): [True: 0, False: 89.4k]
  |  |  ------------------
  |  |  128|  89.4k|  {                                                                         \
  |  |  129|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  130|      0|    abort();                                                                \
  |  |  131|      0|  }
  ------------------
  938|  89.4k|      string_obj->type == OBJECT_TYPE_STRING,
  939|  89.4k|      "type of \"%s\" is not string\n",
  940|  89.4k|      field);
  941|       |
  942|  89.4k|  return string_obj->value.ss;
  943|  89.4k|}
yr_object_set_integer:
  950|  14.4M|{
  951|  14.4M|  YR_OBJECT* integer_obj;
  952|       |
  953|  14.4M|  va_list args;
  954|  14.4M|  va_start(args, field);
  955|       |
  956|  14.4M|  if (field != NULL)
  ------------------
  |  Branch (956:7): [True: 14.4M, False: 0]
  ------------------
  957|  14.4M|    integer_obj = _yr_object_lookup(object, OBJECT_CREATE, field, args);
  ------------------
  |  |   56|  14.4M|#define OBJECT_CREATE 1
  ------------------
  958|      0|  else
  959|      0|    integer_obj = object;
  960|       |
  961|  14.4M|  va_end(args);
  962|       |
  963|  14.4M|  if (integer_obj == NULL)
  ------------------
  |  Branch (963:7): [True: 2.34M, False: 12.0M]
  ------------------
  964|  2.34M|  {
  965|  2.34M|    if (field != NULL)
  ------------------
  |  Branch (965:9): [True: 2.34M, False: 0]
  ------------------
  966|  2.34M|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|  2.34M|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  967|      0|    else
  968|      0|      return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  969|  2.34M|  }
  970|       |
  971|  12.0M|  assert(integer_obj->type == OBJECT_TYPE_INTEGER);
  972|       |
  973|  12.0M|  integer_obj->value.i = value;
  974|       |
  975|  12.0M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  12.0M|#define ERROR_SUCCESS 0
  ------------------
  976|  12.0M|}
yr_object_set_string:
 1013|   472k|{
 1014|   472k|  YR_OBJECT* string_obj;
 1015|       |
 1016|   472k|  va_list args;
 1017|   472k|  va_start(args, field);
 1018|       |
 1019|   472k|  if (field != NULL)
  ------------------
  |  Branch (1019:7): [True: 472k, False: 0]
  ------------------
 1020|   472k|    string_obj = _yr_object_lookup(object, OBJECT_CREATE, field, args);
  ------------------
  |  |   56|   472k|#define OBJECT_CREATE 1
  ------------------
 1021|      0|  else
 1022|      0|    string_obj = object;
 1023|       |
 1024|   472k|  va_end(args);
 1025|       |
 1026|   472k|  if (string_obj == NULL)
  ------------------
  |  Branch (1026:7): [True: 0, False: 472k]
  ------------------
 1027|      0|  {
 1028|      0|    if (field != NULL)
  ------------------
  |  Branch (1028:9): [True: 0, False: 0]
  ------------------
 1029|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 1030|      0|    else
 1031|      0|      return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
 1032|      0|  }
 1033|       |
 1034|   472k|  assert(string_obj->type == OBJECT_TYPE_STRING);
 1035|       |
 1036|   472k|  if (string_obj->value.ss != NULL)
  ------------------
  |  Branch (1036:7): [True: 0, False: 472k]
  ------------------
 1037|      0|    yr_free(string_obj->value.ss);
 1038|       |
 1039|   472k|  if (value != NULL)
  ------------------
  |  Branch (1039:7): [True: 472k, False: 0]
  ------------------
 1040|   472k|  {
 1041|   472k|    string_obj->value.ss = (SIZED_STRING*) yr_malloc(
 1042|   472k|        len + sizeof(SIZED_STRING));
 1043|       |
 1044|   472k|    if (string_obj->value.ss == NULL)
  ------------------
  |  Branch (1044:9): [True: 0, False: 472k]
  ------------------
 1045|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 1046|       |
 1047|   472k|    string_obj->value.ss->length = (uint32_t) len;
 1048|   472k|    string_obj->value.ss->flags = 0;
 1049|       |
 1050|   472k|    memcpy(string_obj->value.ss->c_string, value, len);
 1051|   472k|    string_obj->value.ss->c_string[len] = '\0';
 1052|   472k|  }
 1053|      0|  else
 1054|      0|  {
 1055|      0|    string_obj->value.ss = NULL;
 1056|      0|  }
 1057|       |
 1058|   472k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|   472k|#define ERROR_SUCCESS 0
  ------------------
 1059|   472k|}
object.c:_yr_object_lookup:
  420|  27.0M|{
  421|  27.0M|  YR_OBJECT* obj = object;
  422|       |
  423|  27.0M|  const char* p = pattern;
  424|  27.0M|  const char* key = NULL;
  425|       |
  426|  27.0M|  char str[256];
  427|       |
  428|  27.0M|  int i;
  429|  27.0M|  int index = -1;
  430|       |
  431|  54.7M|  while (obj != NULL)
  ------------------
  |  Branch (431:10): [True: 51.3M, False: 3.49M]
  ------------------
  432|  51.3M|  {
  433|  51.3M|    i = 0;
  434|       |
  435|   507M|    while (*p != '\0' && *p != '.' && *p != '[' && i < sizeof(str) - 1)
  ------------------
  |  Branch (435:12): [True: 484M, False: 23.5M]
  |  Branch (435:26): [True: 483M, False: 806k]
  |  Branch (435:39): [True: 456M, False: 26.9M]
  |  Branch (435:52): [True: 456M, False: 0]
  ------------------
  436|   456M|    {
  437|   456M|      str[i++] = *p++;
  438|   456M|    }
  439|       |
  440|  51.3M|    str[i] = '\0';
  441|       |
  442|  51.3M|    if (obj->type != OBJECT_TYPE_STRUCTURE)
  ------------------
  |  |   60|  51.3M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (442:9): [True: 0, False: 51.3M]
  ------------------
  443|      0|      return NULL;
  444|       |
  445|  51.3M|    obj = yr_object_lookup_field(obj, str);
  446|       |
  447|  51.3M|    if (obj == NULL)
  ------------------
  |  Branch (447:9): [True: 2.34M, False: 48.9M]
  ------------------
  448|  2.34M|      return NULL;
  449|       |
  450|  48.9M|    if (*p == '[')
  ------------------
  |  Branch (450:9): [True: 26.9M, False: 22.0M]
  ------------------
  451|  26.9M|    {
  452|  26.9M|      p++;
  453|       |
  454|  26.9M|      if (*p == '%')
  ------------------
  |  Branch (454:11): [True: 26.9M, False: 0]
  ------------------
  455|  26.9M|      {
  456|  26.9M|        p++;
  457|       |
  458|  26.9M|        switch (*p++)
  459|  26.9M|        {
  460|  26.9M|        case 'i':
  ------------------
  |  Branch (460:9): [True: 26.9M, False: 0]
  ------------------
  461|  26.9M|          index = va_arg(args, int);
  462|  26.9M|          break;
  463|      0|        case 's':
  ------------------
  |  Branch (463:9): [True: 0, False: 26.9M]
  ------------------
  464|      0|          key = va_arg(args, const char*);
  465|      0|          break;
  466|       |
  467|      0|        default:
  ------------------
  |  Branch (467:9): [True: 0, False: 26.9M]
  ------------------
  468|      0|          return NULL;
  469|  26.9M|        }
  470|  26.9M|      }
  471|      0|      else if (*p >= '0' && *p <= '9')
  ------------------
  |  Branch (471:16): [True: 0, False: 0]
  |  Branch (471:29): [True: 0, False: 0]
  ------------------
  472|      0|      {
  473|      0|        index = (int) strtol(p, (char**) &p, 10);
  474|      0|      }
  475|      0|      else if (*p == '"')
  ------------------
  |  Branch (475:16): [True: 0, False: 0]
  ------------------
  476|      0|      {
  477|      0|        i = 0;
  478|      0|        p++;  // skip the opening quotation mark
  479|       |
  480|      0|        while (*p != '"' && *p != '\0' && i < sizeof(str) - 1) str[i++] = *p++;
  ------------------
  |  Branch (480:16): [True: 0, False: 0]
  |  Branch (480:29): [True: 0, False: 0]
  |  Branch (480:43): [True: 0, False: 0]
  ------------------
  481|       |
  482|      0|        str[i] = '\0';
  483|      0|        p++;  // skip the closing quotation mark
  484|      0|        key = str;
  485|      0|      }
  486|      0|      else
  487|      0|      {
  488|      0|        return NULL;
  489|      0|      }
  490|       |
  491|  26.9M|      assert(*p == ']');
  492|  26.9M|      p++;
  493|  26.9M|      assert(*p == '.' || *p == '\0');
  494|       |
  495|  26.9M|      switch (obj->type)
  ------------------
  |  Branch (495:15): [True: 0, False: 26.9M]
  ------------------
  496|  26.9M|      {
  497|  26.9M|      case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  26.9M|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (497:7): [True: 26.9M, False: 0]
  ------------------
  498|  26.9M|        assert(index != -1);
  499|  26.9M|        obj = yr_object_array_get_item(obj, flags, index);
  500|  26.9M|        break;
  501|       |
  502|      0|      case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (502:7): [True: 0, False: 26.9M]
  ------------------
  503|      0|        assert(key != NULL);
  504|      0|        obj = yr_object_dict_get_item(obj, flags, key);
  505|      0|        break;
  506|  26.9M|      }
  507|  26.9M|    }
  508|       |
  509|  48.9M|    if (*p == '\0')
  ------------------
  |  Branch (509:9): [True: 21.2M, False: 27.7M]
  ------------------
  510|  21.2M|      break;
  511|       |
  512|  27.7M|    p++;
  513|  27.7M|  }
  514|       |
  515|  24.7M|  return obj;
  516|  27.0M|}

yr_parser_emit_with_arg_reloc:
  145|      2|{
  146|      2|  YR_ARENA_REF ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
  147|       |
  148|      2|  DECLARE_REFERENCE(void*, ptr) arg;
  ------------------
  |  |   45|      2|  union                               \
  |  |   46|      2|  {                                   \
  |  |   47|      2|    type name;                        \
  |  |   48|      2|    YR_ARENA_REF name##_;             \
  |  |   49|      2|  } YR_ALIGN(8)
  ------------------
  149|       |
  150|      2|  memset(&arg, 0, sizeof(arg));
  151|      2|  arg.ptr = argument;
  152|       |
  153|      2|  int result = yr_arena_write_data(
  154|      2|      yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  155|      2|      YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  156|      2|      &instruction,
  157|      2|      sizeof(uint8_t),
  158|      2|      instruction_ref);
  159|       |
  160|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (160:7): [True: 2, False: 0]
  ------------------
  161|      2|    result = yr_arena_write_data(
  162|      2|        yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  163|      2|        YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  164|      2|        &arg,
  165|      2|        sizeof(arg),
  166|      2|        &ref);
  167|       |
  168|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (168:7): [True: 2, False: 0]
  ------------------
  169|      2|    result = yr_arena_make_ptr_relocatable(
  170|      2|        yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
                      yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
                      yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   38|      2|#define EOL ((size_t) -1)
  ------------------
  171|       |
  172|      2|  if (argument_ref != NULL)
  ------------------
  |  Branch (172:7): [True: 0, False: 2]
  ------------------
  173|      0|    *argument_ref = ref;
  174|       |
  175|      2|  return result;
  176|      2|}
yr_parser_reduce_import:
 1289|      2|{
 1290|      2|  int result;
 1291|       |
 1292|      2|  YR_ARENA_REF ref;
 1293|      2|  YR_COMPILER* compiler = yyget_extra(yyscanner);
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
 1294|      2|  YR_OBJECT* module_structure;
 1295|       |
 1296|      2|  if (!_yr_parser_valid_module_name(module_name))
  ------------------
  |  Branch (1296:7): [True: 0, False: 2]
  ------------------
 1297|      0|  {
 1298|      0|    yr_compiler_set_error_extra_info(compiler, module_name->c_string);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1299|       |
 1300|      0|    return ERROR_INVALID_MODULE_NAME;
  ------------------
  |  |   95|      0|#define ERROR_INVALID_MODULE_NAME            50
  ------------------
 1301|      0|  }
 1302|       |
 1303|      2|  YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 1304|      2|      compiler->arena,
 1305|      2|      YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      2|#define YR_NAMESPACES_TABLE         0
  ------------------
 1306|      2|      compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 1307|       |
 1308|      2|  module_structure = (YR_OBJECT*) yr_hash_table_lookup(
 1309|      2|      compiler->objects_table, module_name->c_string, ns->name);
 1310|       |
 1311|       |  // if module already imported, do nothing
 1312|       |
 1313|      2|  if (module_structure != NULL)
  ------------------
  |  Branch (1313:7): [True: 0, False: 2]
  ------------------
 1314|      0|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
 1315|       |
 1316|      2|  FAIL_ON_ERROR(yr_object_create(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
 1317|      2|      OBJECT_TYPE_STRUCTURE, module_name->c_string, NULL, &module_structure));
 1318|       |
 1319|      2|  FAIL_ON_ERROR(yr_hash_table_add(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
 1320|      2|      compiler->objects_table,
 1321|      2|      module_name->c_string,
 1322|      2|      ns->name,
 1323|      2|      module_structure));
 1324|       |
 1325|      2|  result = yr_modules_do_declarations(module_name->c_string, module_structure);
 1326|       |
 1327|      2|  if (result == ERROR_UNKNOWN_MODULE)
  ------------------
  |  |   79|      2|#define ERROR_UNKNOWN_MODULE                 34
  ------------------
  |  Branch (1327:7): [True: 0, False: 2]
  ------------------
 1328|      0|    yr_compiler_set_error_extra_info(compiler, module_name->c_string);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1329|       |
 1330|      2|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1330:7): [True: 0, False: 2]
  ------------------
 1331|      0|    return result;
 1332|       |
 1333|      2|  FAIL_ON_ERROR(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
 1334|      2|      _yr_compiler_store_string(compiler, module_name->c_string, &ref));
 1335|       |
 1336|      2|  FAIL_ON_ERROR(yr_parser_emit_with_arg_reloc(
  ------------------
  |  |  132|      2|  {                               \
  |  |  133|      2|    int __error = (x);            \
  |  |  134|      2|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      2|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  135|      2|      return __error;             \
  |  |  136|      2|  }
  ------------------
 1337|      2|      yyscanner,
 1338|      2|      OP_IMPORT,
 1339|      2|      yr_arena_ref_to_ptr(compiler->arena, &ref),
 1340|      2|      NULL,
 1341|      2|      NULL));
 1342|       |
 1343|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1344|      2|}
parser.c:_yr_parser_valid_module_name:
 1278|      2|{
 1279|      2|  if (module_name->length == 0)
  ------------------
  |  Branch (1279:7): [True: 0, False: 2]
  ------------------
 1280|      0|    return false;
 1281|       |
 1282|      2|  if (strlen(module_name->c_string) != module_name->length)
  ------------------
  |  Branch (1282:7): [True: 0, False: 2]
  ------------------
 1283|      0|    return false;
 1284|       |
 1285|      2|  return true;
 1286|      2|}

yr_rules_scan_mem:
  204|  2.76k|{
  205|  2.76k|  YR_DEBUG_FPRINTF(
  206|  2.76k|      2,
  207|  2.76k|      stderr,
  208|  2.76k|      "+ %s(buffer=%p buffer_size=%zu timeout=%d) {\n",
  209|  2.76k|      __FUNCTION__,
  210|  2.76k|      buffer,
  211|  2.76k|      buffer_size,
  212|  2.76k|      timeout);
  213|       |
  214|  2.76k|  YR_SCANNER* scanner;
  215|  2.76k|  int result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|  2.76k|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  216|       |
  217|  2.76k|  GOTO_EXIT_ON_ERROR(yr_scanner_create(rules, &scanner));
  ------------------
  |  |  114|  2.76k|  {                              \
  |  |  115|  2.76k|    result = (x);                \
  |  |  116|  2.76k|    if (result != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (116:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  117|  2.76k|      goto _exit;                \
  |  |  118|  2.76k|  }
  ------------------
  218|       |
  219|  2.76k|  yr_scanner_set_callback(scanner, callback, user_data);
  220|  2.76k|  yr_scanner_set_timeout(scanner, timeout);
  221|  2.76k|  yr_scanner_set_flags(scanner, flags);
  222|       |
  223|  2.76k|  result = yr_scanner_scan_mem(scanner, buffer, buffer_size);
  224|       |
  225|  2.76k|  yr_scanner_destroy(scanner);
  226|       |
  227|  2.76k|_exit:
  228|       |
  229|  2.76k|  YR_DEBUG_FPRINTF(
  230|  2.76k|      2,
  231|  2.76k|      stderr,
  232|  2.76k|      ""
  233|  2.76k|      "} = %d AKA %s // %s()\n",
  234|  2.76k|      result,
  235|  2.76k|      yr_debug_error_as_string(result),
  236|  2.76k|      __FUNCTION__);
  237|       |
  238|  2.76k|  return result;
  239|  2.76k|}
yr_rules_from_arena:
  327|      2|{
  328|      2|  YR_SUMMARY* summary = (YR_SUMMARY*) yr_arena_get_ptr(
  329|      2|      arena, YR_SUMMARY_SECTION, 0);
  ------------------
  |  |   68|      2|#define YR_SUMMARY_SECTION          11
  ------------------
  330|       |
  331|      2|  if (summary == NULL)
  ------------------
  |  Branch (331:7): [True: 0, False: 2]
  ------------------
  332|      0|    return ERROR_CORRUPT_FILE;
  ------------------
  |  |   52|      0|#define ERROR_CORRUPT_FILE                   7
  ------------------
  333|       |
  334|      2|  YR_RULES* new_rules = (YR_RULES*) yr_malloc(sizeof(YR_RULES));
  335|       |
  336|      2|  if (new_rules == NULL)
  ------------------
  |  Branch (336:7): [True: 0, False: 2]
  ------------------
  337|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  338|       |
  339|      2|  new_rules->rule_evaluate_condition_flags = (YR_BITMASK*) yr_calloc(
  340|      2|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(summary->num_rules));
  ------------------
  |  |   57|      2|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|      2|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  341|      2|  if (new_rules->rule_evaluate_condition_flags == NULL)
  ------------------
  |  Branch (341:7): [True: 0, False: 2]
  ------------------
  342|      0|  {
  343|      0|    yr_free(new_rules);
  344|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  345|      0|  }
  346|       |
  347|       |  // Now YR_RULES relies on this arena, let's increment the arena's
  348|       |  // reference count so that if the original owner of the arena calls
  349|       |  // yr_arena_destroy the arena is not destroyed.
  350|      2|  yr_arena_acquire(arena);
  351|       |
  352|      2|  new_rules->arena = arena;
  353|      2|  new_rules->num_rules = summary->num_rules;
  354|      2|  new_rules->num_strings = summary->num_strings;
  355|      2|  new_rules->num_namespaces = summary->num_namespaces;
  356|       |
  357|      2|  new_rules->rules_table = yr_arena_get_ptr(arena, YR_RULES_TABLE, 0);
  ------------------
  |  |   58|      2|#define YR_RULES_TABLE              1
  ------------------
  358|       |
  359|      2|  new_rules->strings_table = yr_arena_get_ptr(arena, YR_STRINGS_TABLE, 0);
  ------------------
  |  |   60|      2|#define YR_STRINGS_TABLE            3
  ------------------
  360|       |
  361|      2|  new_rules->ext_vars_table = yr_arena_get_ptr(
  362|      2|      arena, YR_EXTERNAL_VARIABLES_TABLE, 0);
  ------------------
  |  |   61|      2|#define YR_EXTERNAL_VARIABLES_TABLE 4
  ------------------
  363|       |
  364|      2|  new_rules->ac_transition_table = yr_arena_get_ptr(
  365|      2|      arena, YR_AC_TRANSITION_TABLE, 0);
  ------------------
  |  |   65|      2|#define YR_AC_TRANSITION_TABLE      8
  ------------------
  366|       |
  367|      2|  new_rules->ac_match_table = yr_arena_get_ptr(
  368|      2|      arena, YR_AC_STATE_MATCHES_TABLE, 0);
  ------------------
  |  |   66|      2|#define YR_AC_STATE_MATCHES_TABLE   9
  ------------------
  369|       |
  370|      2|  new_rules->ac_match_pool = yr_arena_get_ptr(
  371|      2|      arena, YR_AC_STATE_MATCHES_POOL, 0);
  ------------------
  |  |   67|      2|#define YR_AC_STATE_MATCHES_POOL    10
  ------------------
  372|       |
  373|      2|  new_rules->code_start = yr_arena_get_ptr(arena, YR_CODE_SECTION, 0);
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  374|       |
  375|       |  // If a rule has no required_strings, this means that the condition might
  376|       |  // evaluate to true without any matching strings, and we therefore have to
  377|       |  // mark it as "to be evaluated" from the beginning.
  378|      2|  for (int i = 0; i < new_rules->num_rules; i++)
  ------------------
  |  Branch (378:19): [True: 0, False: 2]
  ------------------
  379|      0|  {
  380|      0|    if (new_rules->rules_table[i].required_strings == 0)
  ------------------
  |  Branch (380:9): [True: 0, False: 0]
  ------------------
  381|      0|    {
  382|      0|      yr_bitmask_set(new_rules->rule_evaluate_condition_flags, i);
  ------------------
  |  |   60|      0|  do                                                                         \
  |  |   61|      0|  {                                                                          \
  |  |   62|      0|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  383|      0|    }
  384|      0|  }
  385|       |
  386|      2|  *rules = new_rules;
  387|       |
  388|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  389|      2|}

yr_scanner_create:
  240|  2.76k|{
  241|  2.76k|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  242|       |
  243|  2.76k|  YR_EXTERNAL_VARIABLE* external;
  244|  2.76k|  YR_SCANNER* new_scanner;
  245|       |
  246|  2.76k|  new_scanner = (YR_SCANNER*) yr_calloc(1, sizeof(YR_SCANNER));
  247|       |
  248|  2.76k|  if (new_scanner == NULL)
  ------------------
  |  Branch (248:7): [True: 0, False: 2.76k]
  ------------------
  249|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  250|       |
  251|  2.76k|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  2.76k|  {                                            \
  |  |  141|  2.76k|    int __error = (x);                         \
  |  |  142|  2.76k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  143|  2.76k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  2.76k|  }
  ------------------
  252|  2.76k|      yr_hash_table_create(64, &new_scanner->objects_table),
  253|  2.76k|      yr_free(new_scanner));
  254|       |
  255|  2.76k|  new_scanner->rules = rules;
  256|  2.76k|  new_scanner->entry_point = YR_UNDEFINED;
  ------------------
  |  |   38|  2.76k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  257|  2.76k|  new_scanner->file_size = YR_UNDEFINED;
  ------------------
  |  |   38|  2.76k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  258|  2.76k|  new_scanner->canary = rand();
  259|       |
  260|       |  // By default report both matching and non-matching rules.
  261|  2.76k|  new_scanner->flags = SCAN_FLAGS_REPORT_RULES_MATCHING |
  ------------------
  |  |   41|  2.76k|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  262|  2.76k|                       SCAN_FLAGS_REPORT_RULES_NOT_MATCHING;
  ------------------
  |  |   42|  2.76k|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  263|       |
  264|  2.76k|  new_scanner->rule_matches_flags = (YR_BITMASK*) yr_calloc(
  265|  2.76k|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  266|       |
  267|  2.76k|  new_scanner->rule_evaluate_condition_flags = (YR_BITMASK*) yr_calloc(
  268|  2.76k|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  269|       |
  270|  2.76k|  new_scanner->ns_unsatisfied_flags = (YR_BITMASK*) yr_calloc(
  271|  2.76k|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_namespaces));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  272|       |
  273|  2.76k|  new_scanner->strings_temp_disabled = (YR_BITMASK*) yr_calloc(
  274|  2.76k|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_strings));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  275|       |
  276|  2.76k|  new_scanner->matches = (YR_MATCHES*) yr_calloc(
  277|  2.76k|      rules->num_strings, sizeof(YR_MATCHES));
  278|       |
  279|  2.76k|  new_scanner->unconfirmed_matches = (YR_MATCHES*) yr_calloc(
  280|  2.76k|      rules->num_strings, sizeof(YR_MATCHES));
  281|       |
  282|  2.76k|  if (new_scanner->rule_matches_flags == NULL ||
  ------------------
  |  Branch (282:7): [True: 0, False: 2.76k]
  ------------------
  283|  2.76k|      new_scanner->rule_evaluate_condition_flags == NULL ||
  ------------------
  |  Branch (283:7): [True: 0, False: 2.76k]
  ------------------
  284|  2.76k|      new_scanner->ns_unsatisfied_flags == NULL ||
  ------------------
  |  Branch (284:7): [True: 0, False: 2.76k]
  ------------------
  285|  2.76k|      new_scanner->strings_temp_disabled == NULL ||
  ------------------
  |  Branch (285:7): [True: 0, False: 2.76k]
  ------------------
  286|  2.76k|      new_scanner->matches == NULL ||  //
  ------------------
  |  Branch (286:7): [True: 0, False: 2.76k]
  ------------------
  287|  2.76k|      new_scanner->unconfirmed_matches == NULL)
  ------------------
  |  Branch (287:7): [True: 0, False: 2.76k]
  ------------------
  288|      0|  {
  289|      0|    yr_scanner_destroy(new_scanner);
  290|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  291|      0|  }
  292|       |
  293|       |#ifdef YR_PROFILING_ENABLED
  294|       |  new_scanner->profiling_info = yr_calloc(
  295|       |      rules->num_rules, sizeof(YR_PROFILING_INFO));
  296|       |
  297|       |  if (new_scanner->profiling_info == NULL)
  298|       |  {
  299|       |    yr_scanner_destroy(new_scanner);
  300|       |    return ERROR_INSUFFICIENT_MEMORY;
  301|       |  }
  302|       |#else
  303|  2.76k|  new_scanner->profiling_info = NULL;
  304|  2.76k|#endif
  305|       |
  306|  2.76k|  external = rules->ext_vars_table;
  307|       |
  308|  2.76k|  while (!EXTERNAL_VARIABLE_IS_NULL(external))
  ------------------
  |  |  152|  2.76k|  ((x) != NULL ? (x)->type == EXTERNAL_VARIABLE_TYPE_NULL : true)
  |  |  ------------------
  |  |  |  |  144|  2.76k|#define EXTERNAL_VARIABLE_TYPE_NULL          0
  |  |  ------------------
  |  |  |  Branch (152:4): [True: 2.76k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (308:10): [True: 0, False: 2.76k]
  ------------------
  309|      0|  {
  310|      0|    YR_OBJECT* object;
  311|       |
  312|      0|    FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|      0|  {                                            \
  |  |  141|      0|    int __error = (x);                         \
  |  |  142|      0|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  143|      0|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|      0|  }
  ------------------
  313|      0|        yr_object_from_external_variable(external, &object),
  314|       |        // cleanup
  315|      0|        yr_scanner_destroy(new_scanner));
  316|       |
  317|      0|    FAIL_ON_ERROR_WITH_CLEANUP(yr_hash_table_add(
  ------------------
  |  |  140|      0|  {                                            \
  |  |  141|      0|    int __error = (x);                         \
  |  |  142|      0|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  143|      0|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|      0|  }
  ------------------
  318|      0|                                   new_scanner->objects_table,
  319|      0|                                   external->identifier,
  320|      0|                                   NULL,
  321|      0|                                   (void*) object),
  322|       |                               // cleanup
  323|      0|                               yr_object_destroy(object);
  324|      0|                               yr_scanner_destroy(new_scanner));
  325|       |
  326|      0|    yr_object_set_canary(object, new_scanner->canary);
  327|      0|    external++;
  328|      0|  }
  329|       |
  330|  2.76k|  *scanner = new_scanner;
  331|       |
  332|  2.76k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  333|  2.76k|}
yr_scanner_destroy:
  336|  2.76k|{
  337|  2.76k|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  338|       |
  339|  2.76k|  RE_FIBER* fiber = scanner->re_fiber_pool.fibers.head;
  340|       |
  341|  2.76k|  while (fiber != NULL)
  ------------------
  |  Branch (341:10): [True: 0, False: 2.76k]
  ------------------
  342|      0|  {
  343|      0|    RE_FIBER* next = fiber->next;
  344|      0|    yr_free(fiber);
  345|      0|    fiber = next;
  346|      0|  }
  347|       |
  348|  2.76k|  RE_FAST_EXEC_POSITION* position = scanner->re_fast_exec_position_pool.head;
  349|       |
  350|  2.76k|  while (position != NULL)
  ------------------
  |  Branch (350:10): [True: 0, False: 2.76k]
  ------------------
  351|      0|  {
  352|      0|    RE_FAST_EXEC_POSITION* next = position->next;
  353|      0|    yr_free(position);
  354|      0|    position = next;
  355|      0|  }
  356|       |
  357|  2.76k|  if (scanner->objects_table != NULL)
  ------------------
  |  Branch (357:7): [True: 2.76k, False: 0]
  ------------------
  358|  2.76k|  {
  359|  2.76k|    yr_hash_table_destroy(
  360|  2.76k|        scanner->objects_table,
  361|  2.76k|        (YR_HASH_TABLE_FREE_VALUE_FUNC) yr_object_destroy);
  362|  2.76k|  }
  363|       |
  364|       |#ifdef YR_PROFILING_ENABLED
  365|       |  yr_free(scanner->profiling_info);
  366|       |#endif
  367|       |
  368|  2.76k|  yr_free(scanner->rule_matches_flags);
  369|  2.76k|  yr_free(scanner->ns_unsatisfied_flags);
  370|  2.76k|  yr_free(scanner->rule_evaluate_condition_flags);
  371|  2.76k|  yr_free(scanner->strings_temp_disabled);
  372|  2.76k|  yr_free(scanner->matches);
  373|  2.76k|  yr_free(scanner->unconfirmed_matches);
  374|  2.76k|  yr_free(scanner);
  375|  2.76k|}
yr_scanner_set_callback:
  381|  2.76k|{
  382|  2.76k|  scanner->callback = callback;
  383|  2.76k|  scanner->user_data = user_data;
  384|  2.76k|}
yr_scanner_set_timeout:
  387|  2.76k|{
  388|       |  // Convert timeout from seconds to nanoseconds.
  389|  2.76k|  scanner->timeout = timeout * 1000000000ULL;
  390|  2.76k|}
yr_scanner_set_flags:
  393|  2.76k|{
  394|       |  // For backward compatibility, if neither SCAN_FLAGS_REPORT_RULES_MATCHING
  395|       |  // nor SCAN_FLAGS_REPORT_RULES_NOT_MATCHING are specified, both are assumed.
  396|       |
  397|  2.76k|  if (!(flags & SCAN_FLAGS_REPORT_RULES_MATCHING) &&
  ------------------
  |  |   41|  2.76k|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  |  Branch (397:7): [True: 2.76k, False: 0]
  ------------------
  398|  2.76k|      !(flags & SCAN_FLAGS_REPORT_RULES_NOT_MATCHING))
  ------------------
  |  |   42|  2.76k|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  |  Branch (398:7): [True: 2.76k, False: 0]
  ------------------
  399|  2.76k|  {
  400|  2.76k|    flags |= SCAN_FLAGS_REPORT_RULES_MATCHING |
  ------------------
  |  |   41|  2.76k|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  401|  2.76k|             SCAN_FLAGS_REPORT_RULES_NOT_MATCHING;
  ------------------
  |  |   42|  2.76k|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  402|  2.76k|  }
  403|       |
  404|  2.76k|  scanner->flags = flags;
  405|  2.76k|}
yr_scanner_scan_mem_blocks:
  469|  2.76k|{
  470|  2.76k|  YR_DEBUG_FPRINTF(2, stderr, "+ %s() {\n", __FUNCTION__);
  471|       |
  472|  2.76k|  YR_RULES* rules;
  473|  2.76k|  YR_RULE* rule;
  474|  2.76k|  YR_MEMORY_BLOCK* block;
  475|       |
  476|  2.76k|  int i, result = ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  477|       |
  478|  2.76k|  if (scanner->callback == NULL)
  ------------------
  |  Branch (478:7): [True: 0, False: 2.76k]
  ------------------
  479|      0|  {
  480|      0|    result = ERROR_CALLBACK_REQUIRED;
  ------------------
  |  |   98|      0|#define ERROR_CALLBACK_REQUIRED              53
  ------------------
  481|      0|    goto _exit;
  482|      0|  }
  483|       |
  484|  2.76k|  scanner->iterator = iterator;
  485|  2.76k|  rules = scanner->rules;
  486|       |
  487|  2.76k|  if (iterator->last_error == ERROR_BLOCK_NOT_READY)
  ------------------
  |  |  106|  2.76k|#define ERROR_BLOCK_NOT_READY                61
  ------------------
  |  Branch (487:7): [True: 0, False: 2.76k]
  ------------------
  488|      0|  {
  489|       |    // The caller is invoking yr_scanner_scan_mem_blocks again because the
  490|       |    // previous call returned ERROR_BLOCK_NOT_READY.
  491|      0|    block = iterator->next(iterator);
  492|      0|  }
  493|  2.76k|  else
  494|  2.76k|  {
  495|       |    // Create the notebook that will hold the YR_MATCH structures representing
  496|       |    // each match found. This notebook will also contain snippets of the
  497|       |    // matching data (the "data" field in YR_MATCH points to the snippet
  498|       |    // corresponding to the match). Each notebook's page can store up to 1024
  499|       |    // matches.
  500|  2.76k|    uint32_t max_match_data;
  501|       |
  502|  2.76k|    FAIL_ON_ERROR(
  ------------------
  |  |  132|  2.76k|  {                               \
  |  |  133|  2.76k|    int __error = (x);            \
  |  |  134|  2.76k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  135|  2.76k|      return __error;             \
  |  |  136|  2.76k|  }
  ------------------
  503|  2.76k|        yr_get_configuration_uint32(YR_CONFIG_MAX_MATCH_DATA, &max_match_data));
  504|       |
  505|  2.76k|    result = yr_notebook_create(
  506|  2.76k|        1024 * (sizeof(YR_MATCH) + max_match_data), &scanner->matches_notebook);
  507|       |
  508|  2.76k|    if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (508:9): [True: 0, False: 2.76k]
  ------------------
  509|      0|      goto _exit;
  510|       |
  511|  2.76k|    memcpy(
  512|  2.76k|      scanner->rule_evaluate_condition_flags,
  513|  2.76k|      scanner->rules->rule_evaluate_condition_flags,
  514|  2.76k|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  515|       |
  516|  2.76k|    yr_stopwatch_start(&scanner->stopwatch);
  517|       |
  518|  2.76k|    block = iterator->first(iterator);
  519|  2.76k|  }
  520|       |
  521|  5.53k|  while (block != NULL)
  ------------------
  |  Branch (521:10): [True: 2.76k, False: 2.76k]
  ------------------
  522|  2.76k|  {
  523|  2.76k|    const uint8_t* data = block->fetch_data(block);
  524|       |
  525|       |    // fetch_data may fail and return NULL.
  526|  2.76k|    if (data == NULL)
  ------------------
  |  Branch (526:9): [True: 0, False: 2.76k]
  ------------------
  527|      0|    {
  528|      0|      block = iterator->next(iterator);
  529|      0|      continue;
  530|      0|    }
  531|       |
  532|  2.76k|    if (scanner->entry_point == YR_UNDEFINED)
  ------------------
  |  |   38|  2.76k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (532:9): [True: 2.76k, False: 0]
  ------------------
  533|  2.76k|    {
  534|  2.76k|      YR_TRYCATCH(
  ------------------
  |  |  151|  2.76k|  do                                                                  \
  |  |  152|  2.76k|  {                                                                   \
  |  |  153|  2.76k|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  154|  2.76k|    {                                                                 \
  |  |  155|      0|      struct sigaction old_sigbus_act;                                \
  |  |  156|      0|      struct sigaction old_sigsegv_act;                               \
  |  |  157|      0|      struct sigaction act;                                           \
  |  |  158|      0|      sigjmp_buf jb;                                                  \
  |  |  159|      0|      /* Store pointer to sigjmp_buf in TLS */                        \
  |  |  160|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, &jb);  \
  |  |  161|      0|      /* Set exception handler for SIGBUS and SIGSEGV*/               \
  |  |  162|      0|      act.sa_handler = exception_handler;                             \
  |  |  163|      0|      act.sa_flags = 0; /* SA_ONSTACK? */                             \
  |  |  164|      0|      sigfillset(&act.sa_mask);                                       \
  |  |  165|      0|      sigaction(SIGBUS, &act, &old_sigbus_act);                       \
  |  |  166|      0|      sigaction(SIGSEGV, &act, &old_sigsegv_act);                     \
  |  |  167|      0|      if (sigsetjmp(jb, 1) == 0)                                      \
  |  |  ------------------
  |  |  |  Branch (167:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  168|      0|      {                                                               \
  |  |  169|      0|        _try_clause_                                                  \
  |  |  ------------------
  |  |  |  Branch (169:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  170|      0|      }                                                               \
  |  |  171|      0|      else                                                            \
  |  |  172|      0|      {                                                               \
  |  |  173|      0|        _catch_clause_                                                \
  |  |  174|      0|      }                                                               \
  |  |  175|      0|      /* Stop capturing SIGBUS and SIGSEGV */                         \
  |  |  176|      0|      sigaction(SIGBUS, &old_sigbus_act, NULL);                       \
  |  |  177|      0|      sigaction(SIGSEGV, &old_sigsegv_act, NULL);                     \
  |  |  178|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, NULL); \
  |  |  179|      0|    }                                                                 \
  |  |  180|  2.76k|    else                                                              \
  |  |  181|  2.76k|    {                                                                 \
  |  |  182|  5.53k|      _try_clause_                                                    \
  |  |  ------------------
  |  |  |  Branch (182:7): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  183|  2.76k|    }                                                                 \
  |  |  184|  2.76k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  535|  2.76k|          !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  536|  2.76k|          {
  537|  2.76k|            if (scanner->flags & SCAN_FLAGS_PROCESS_MEMORY)
  538|  2.76k|              scanner->entry_point = yr_get_entry_point_address(
  539|  2.76k|                  data, block->size, block->base);
  540|  2.76k|            else
  541|  2.76k|              scanner->entry_point = yr_get_entry_point_offset(
  542|  2.76k|                  data, block->size);
  543|  2.76k|          },
  544|  2.76k|          {});
  545|  2.76k|    }
  546|       |
  547|  2.76k|    YR_TRYCATCH(
  ------------------
  |  |  151|  2.76k|  do                                                                  \
  |  |  152|  2.76k|  {                                                                   \
  |  |  153|  2.76k|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  154|  2.76k|    {                                                                 \
  |  |  155|      0|      struct sigaction old_sigbus_act;                                \
  |  |  156|      0|      struct sigaction old_sigsegv_act;                               \
  |  |  157|      0|      struct sigaction act;                                           \
  |  |  158|      0|      sigjmp_buf jb;                                                  \
  |  |  159|      0|      /* Store pointer to sigjmp_buf in TLS */                        \
  |  |  160|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, &jb);  \
  |  |  161|      0|      /* Set exception handler for SIGBUS and SIGSEGV*/               \
  |  |  162|      0|      act.sa_handler = exception_handler;                             \
  |  |  163|      0|      act.sa_flags = 0; /* SA_ONSTACK? */                             \
  |  |  164|      0|      sigfillset(&act.sa_mask);                                       \
  |  |  165|      0|      sigaction(SIGBUS, &act, &old_sigbus_act);                       \
  |  |  166|      0|      sigaction(SIGSEGV, &act, &old_sigsegv_act);                     \
  |  |  167|      0|      if (sigsetjmp(jb, 1) == 0)                                      \
  |  |  ------------------
  |  |  |  Branch (167:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  168|      0|      {                                                               \
  |  |  169|      0|        _try_clause_                                                  \
  |  |  170|      0|      }                                                               \
  |  |  171|      0|      else                                                            \
  |  |  172|      0|      {                                                               \
  |  |  173|      0|        _catch_clause_                                                \
  |  |  174|      0|      }                                                               \
  |  |  175|      0|      /* Stop capturing SIGBUS and SIGSEGV */                         \
  |  |  176|      0|      sigaction(SIGBUS, &old_sigbus_act, NULL);                       \
  |  |  177|      0|      sigaction(SIGSEGV, &old_sigsegv_act, NULL);                     \
  |  |  178|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, NULL); \
  |  |  179|      0|    }                                                                 \
  |  |  180|  2.76k|    else                                                              \
  |  |  181|  2.76k|    {                                                                 \
  |  |  182|  2.76k|      _try_clause_                                                    \
  |  |  183|  2.76k|    }                                                                 \
  |  |  184|  2.76k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  548|  2.76k|        !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  549|  2.76k|        { result = _yr_scanner_scan_mem_block(scanner, data, block); },
  550|  2.76k|        { result = ERROR_COULD_NOT_MAP_FILE; });
  551|       |
  552|  2.76k|    if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (552:9): [True: 0, False: 2.76k]
  ------------------
  553|      0|      goto _exit;
  554|       |
  555|  2.76k|    block = iterator->next(iterator);
  556|  2.76k|  }
  557|       |
  558|  2.76k|  result = iterator->last_error;
  559|       |
  560|  2.76k|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (560:7): [True: 0, False: 2.76k]
  ------------------
  561|      0|    goto _exit;
  562|       |
  563|       |  // If the iterator has a file_size function, ask the function for the file's
  564|       |  // size, if not file size is undefined.
  565|  2.76k|  if (iterator->file_size != NULL)
  ------------------
  |  Branch (565:7): [True: 2.76k, False: 0]
  ------------------
  566|  2.76k|    scanner->file_size = iterator->file_size(iterator);
  567|      0|  else
  568|      0|    scanner->file_size = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  569|       |
  570|  2.76k|  YR_TRYCATCH(
  ------------------
  |  |  151|  2.76k|  do                                                                  \
  |  |  152|  2.76k|  {                                                                   \
  |  |  153|  2.76k|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 2.76k]
  |  |  ------------------
  |  |  154|  2.76k|    {                                                                 \
  |  |  155|      0|      struct sigaction old_sigbus_act;                                \
  |  |  156|      0|      struct sigaction old_sigsegv_act;                               \
  |  |  157|      0|      struct sigaction act;                                           \
  |  |  158|      0|      sigjmp_buf jb;                                                  \
  |  |  159|      0|      /* Store pointer to sigjmp_buf in TLS */                        \
  |  |  160|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, &jb);  \
  |  |  161|      0|      /* Set exception handler for SIGBUS and SIGSEGV*/               \
  |  |  162|      0|      act.sa_handler = exception_handler;                             \
  |  |  163|      0|      act.sa_flags = 0; /* SA_ONSTACK? */                             \
  |  |  164|      0|      sigfillset(&act.sa_mask);                                       \
  |  |  165|      0|      sigaction(SIGBUS, &act, &old_sigbus_act);                       \
  |  |  166|      0|      sigaction(SIGSEGV, &act, &old_sigsegv_act);                     \
  |  |  167|      0|      if (sigsetjmp(jb, 1) == 0)                                      \
  |  |  ------------------
  |  |  |  Branch (167:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  168|      0|      {                                                               \
  |  |  169|      0|        _try_clause_                                                  \
  |  |  170|      0|      }                                                               \
  |  |  171|      0|      else                                                            \
  |  |  172|      0|      {                                                               \
  |  |  173|      0|        _catch_clause_                                                \
  |  |  174|      0|      }                                                               \
  |  |  175|      0|      /* Stop capturing SIGBUS and SIGSEGV */                         \
  |  |  176|      0|      sigaction(SIGBUS, &old_sigbus_act, NULL);                       \
  |  |  177|      0|      sigaction(SIGSEGV, &old_sigsegv_act, NULL);                     \
  |  |  178|      0|      yr_thread_storage_set_value(&yr_trycatch_trampoline_tls, NULL); \
  |  |  179|      0|    }                                                                 \
  |  |  180|  2.76k|    else                                                              \
  |  |  181|  2.76k|    {                                                                 \
  |  |  182|  2.76k|      _try_clause_                                                    \
  |  |  183|  2.76k|    }                                                                 \
  |  |  184|  2.76k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  571|  2.76k|      !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  572|  2.76k|      { result = yr_execute_code(scanner); },
  573|  2.76k|      { result = ERROR_COULD_NOT_MAP_FILE; });
  574|       |
  575|  2.76k|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (575:7): [True: 0, False: 2.76k]
  ------------------
  576|      0|    goto _exit;
  577|       |
  578|  2.76k|  for (i = 0, rule = rules->rules_table; !RULE_IS_NULL(rule); i++, rule++)
  ------------------
  |  |   61|  2.76k|#define RULE_IS_NULL(x) (((x)->flags) & RULE_FLAGS_NULL)
  |  |  ------------------
  |  |  |  |   54|  2.76k|#define RULE_FLAGS_NULL     0x04
  |  |  ------------------
  ------------------
  |  Branch (578:42): [True: 0, False: 2.76k]
  ------------------
  579|      0|  {
  580|      0|    int message = 0;
  581|       |
  582|      0|    if (yr_bitmask_is_set(scanner->rule_matches_flags, i) &&
  ------------------
  |  |   75|      0|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |  |  Branch (75:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  583|      0|        yr_bitmask_is_not_set(scanner->ns_unsatisfied_flags, rule->ns->idx))
  ------------------
  |  |   77|      0|#define yr_bitmask_is_not_set(bm, i) (!yr_bitmask_is_set(bm, i))
  |  |  ------------------
  |  |  |  |   75|      0|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (77:38): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  584|      0|    {
  585|      0|      if (scanner->flags & SCAN_FLAGS_REPORT_RULES_MATCHING)
  ------------------
  |  |   41|      0|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  |  Branch (585:11): [True: 0, False: 0]
  ------------------
  586|      0|        message = CALLBACK_MSG_RULE_MATCHING;
  ------------------
  |  |   38|      0|#define CALLBACK_MSG_RULE_MATCHING     1
  ------------------
  587|      0|    }
  588|      0|    else
  589|      0|    {
  590|      0|      if (scanner->flags & SCAN_FLAGS_REPORT_RULES_NOT_MATCHING)
  ------------------
  |  |   42|      0|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  |  Branch (590:11): [True: 0, False: 0]
  ------------------
  591|      0|        message = CALLBACK_MSG_RULE_NOT_MATCHING;
  ------------------
  |  |   39|      0|#define CALLBACK_MSG_RULE_NOT_MATCHING 2
  ------------------
  592|      0|    }
  593|       |
  594|      0|    if (message != 0 && !RULE_IS_PRIVATE(rule))
  ------------------
  |  |   57|      0|#define RULE_IS_PRIVATE(x) (((x)->flags) & RULE_FLAGS_PRIVATE)
  |  |  ------------------
  |  |  |  |   52|      0|#define RULE_FLAGS_PRIVATE  0x01
  |  |  ------------------
  ------------------
  |  Branch (594:9): [True: 0, False: 0]
  |  Branch (594:25): [True: 0, False: 0]
  ------------------
  595|      0|    {
  596|      0|      switch (scanner->callback(scanner, message, rule, scanner->user_data))
  ------------------
  |  Branch (596:15): [True: 0, False: 0]
  ------------------
  597|      0|      {
  598|      0|      case CALLBACK_ABORT:
  ------------------
  |  |   48|      0|#define CALLBACK_ABORT    1
  ------------------
  |  Branch (598:7): [True: 0, False: 0]
  ------------------
  599|      0|        result = ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  600|      0|        goto _exit;
  601|       |
  602|      0|      case CALLBACK_ERROR:
  ------------------
  |  |   49|      0|#define CALLBACK_ERROR    2
  ------------------
  |  Branch (602:7): [True: 0, False: 0]
  ------------------
  603|      0|        result = ERROR_CALLBACK_ERROR;
  ------------------
  |  |   73|      0|#define ERROR_CALLBACK_ERROR                 28
  ------------------
  604|      0|        goto _exit;
  605|      0|      }
  606|      0|    }
  607|      0|  }
  608|       |
  609|  2.76k|  scanner->callback(
  610|  2.76k|      scanner, CALLBACK_MSG_SCAN_FINISHED, NULL, scanner->user_data);
  ------------------
  |  |   40|  2.76k|#define CALLBACK_MSG_SCAN_FINISHED     3
  ------------------
  611|       |
  612|  2.76k|_exit:
  613|       |
  614|       |  // If error is ERROR_BLOCK_NOT_READY we don't clean the matches and don't
  615|       |  // destroy the notebook yet. ERROR_BLOCK_NOT_READY is not a permament error,
  616|       |  // the caller can still call this function again for a retry.
  617|  2.76k|  if (result != ERROR_BLOCK_NOT_READY)
  ------------------
  |  |  106|  2.76k|#define ERROR_BLOCK_NOT_READY                61
  ------------------
  |  Branch (617:7): [True: 2.76k, False: 0]
  ------------------
  618|  2.76k|  {
  619|  2.76k|    _yr_scanner_clean_matches(scanner);
  620|       |
  621|  2.76k|    if (scanner->matches_notebook != NULL)
  ------------------
  |  Branch (621:9): [True: 2.76k, False: 0]
  ------------------
  622|  2.76k|    {
  623|  2.76k|      yr_notebook_destroy(scanner->matches_notebook);
  624|  2.76k|      scanner->matches_notebook = NULL;
  625|  2.76k|    }
  626|  2.76k|  }
  627|       |
  628|  2.76k|  YR_DEBUG_FPRINTF(
  629|  2.76k|      2,
  630|  2.76k|      stderr,
  631|  2.76k|      "} = %d AKA %s // %s()\n",
  632|  2.76k|      result,
  633|  2.76k|      yr_debug_error_as_string(result),
  634|  2.76k|      __FUNCTION__);
  635|       |
  636|  2.76k|  return result;
  637|  2.76k|}
yr_scanner_scan_mem:
  691|  2.76k|{
  692|  2.76k|  YR_DEBUG_FPRINTF(
  693|  2.76k|      2,
  694|  2.76k|      stderr,
  695|  2.76k|      "+ %s(buffer=%p buffer_size=%zu) {\n",
  696|  2.76k|      __FUNCTION__,
  697|  2.76k|      buffer,
  698|  2.76k|      buffer_size);
  699|       |
  700|  2.76k|  YR_MEMORY_BLOCK block;
  701|  2.76k|  YR_MEMORY_BLOCK_ITERATOR iterator;
  702|  2.76k|  int result;
  703|       |
  704|  2.76k|  block.size = buffer_size;
  705|  2.76k|  block.base = 0;
  706|  2.76k|  block.fetch_data = _yr_fetch_block_data;
  707|  2.76k|  block.context = (void*) buffer;
  708|       |
  709|  2.76k|  iterator.context = &block;
  710|  2.76k|  iterator.first = _yr_get_first_block;
  711|  2.76k|  iterator.next = _yr_get_next_block;
  712|  2.76k|  iterator.file_size = _yr_get_file_size;
  713|  2.76k|  iterator.last_error = ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
  714|       |
  715|       |  // Detect cases where every byte of input is checked for match and input size is bigger then 0.2 MB
  716|  2.76k|  if (scanner->rules->ac_match_table[YR_AC_ROOT_STATE] != 0 && buffer_size > YR_FILE_SIZE_THRESHOLD)
  ------------------
  |  |   45|  2.76k|#define YR_AC_ROOT_STATE               0
  ------------------
                if (scanner->rules->ac_match_table[YR_AC_ROOT_STATE] != 0 && buffer_size > YR_FILE_SIZE_THRESHOLD)
  ------------------
  |  |  126|      0|#define YR_FILE_SIZE_THRESHOLD 200000
  ------------------
  |  Branch (716:7): [True: 0, False: 2.76k]
  |  Branch (716:64): [True: 0, False: 0]
  ------------------
  717|      0|  {
  718|      0|    YR_STRING* report_string = scanner->rules->ac_match_pool[YR_AC_ROOT_STATE].string;
  ------------------
  |  |   45|      0|#define YR_AC_ROOT_STATE               0
  ------------------
  719|      0|    result = scanner->callback(
  720|      0|          scanner,
  721|      0|          CALLBACK_MSG_TOO_SLOW_SCANNING,
  ------------------
  |  |   45|      0|#define CALLBACK_MSG_TOO_SLOW_SCANNING 8
  ------------------
  722|      0|          (void*) report_string,
  723|      0|          scanner->user_data);
  724|      0|    if (result != CALLBACK_CONTINUE)
  ------------------
  |  |   47|      0|#define CALLBACK_CONTINUE 0
  ------------------
  |  Branch (724:9): [True: 0, False: 0]
  ------------------
  725|      0|      return ERROR_TOO_SLOW_SCANNING;
  ------------------
  |  |  110|      0|#define ERROR_TOO_SLOW_SCANNING              65
  ------------------
  726|      0|  }
  727|       |
  728|  2.76k|  result = yr_scanner_scan_mem_blocks(scanner, &iterator);
  729|       |
  730|  2.76k|  YR_DEBUG_FPRINTF(
  731|  2.76k|      2,
  732|  2.76k|      stderr,
  733|  2.76k|      "} = %d AKA %s // %s()\n",
  734|  2.76k|      result,
  735|  2.76k|      yr_debug_error_as_string(result),
  736|  2.76k|      __FUNCTION__);
  737|       |
  738|  2.76k|  return result;
  739|  2.76k|}
scanner.c:_yr_scanner_scan_mem_block:
   49|  2.76k|{
   50|  2.76k|  YR_DEBUG_FPRINTF(
   51|  2.76k|      2,
   52|  2.76k|      stderr,
   53|  2.76k|      "+ %s(block_data=%p block->base=0x%" PRIx64 " block->size=%zu) {\n",
   54|  2.76k|      __FUNCTION__,
   55|  2.76k|      block_data,
   56|  2.76k|      block->base,
   57|  2.76k|      block->size);
   58|       |
   59|  2.76k|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|  2.76k|#define ERROR_SUCCESS 0
  ------------------
   60|       |
   61|  2.76k|  YR_RULES* rules = scanner->rules;
   62|  2.76k|  YR_AC_TRANSITION* transition_table = rules->ac_transition_table;
   63|  2.76k|  uint32_t* match_table = rules->ac_match_table;
   64|       |
   65|  2.76k|  YR_AC_MATCH* match;
   66|  2.76k|  YR_AC_TRANSITION transition;
   67|       |
   68|  2.76k|  size_t i = 0;
   69|  2.76k|  uint32_t state = YR_AC_ROOT_STATE;
  ------------------
  |  |   45|  2.76k|#define YR_AC_ROOT_STATE               0
  ------------------
   70|  2.76k|  uint16_t index;
   71|  2.76k|  YR_STRING* report_string = NULL;
   72|  2.76k|  YR_RULE* rule = NULL;
   73|       |
   74|  36.1M|  while (i < block->size)
  ------------------
  |  Branch (74:10): [True: 36.1M, False: 2.76k]
  ------------------
   75|  36.1M|  {
   76|  36.1M|    if (i % 4096 == 0 && scanner->timeout > 0)
  ------------------
  |  Branch (76:9): [True: 11.3k, False: 36.1M]
  |  Branch (76:26): [True: 0, False: 11.3k]
  ------------------
   77|      0|    {
   78|      0|      if (yr_stopwatch_elapsed_ns(&scanner->stopwatch) > scanner->timeout)
  ------------------
  |  Branch (78:11): [True: 0, False: 0]
  ------------------
   79|      0|      {
   80|      0|        result = ERROR_SCAN_TIMEOUT;
  ------------------
  |  |   71|      0|#define ERROR_SCAN_TIMEOUT                   26
  ------------------
   81|      0|        goto _exit;
   82|      0|      }
   83|      0|    }
   84|       |
   85|       |#if 2 == YR_DEBUG_VERBOSITY
   86|       |    if (0 != state)
   87|       |      YR_DEBUG_FPRINTF(
   88|       |          2,
   89|       |          stderr,
   90|       |          "- match_table[state=%u]=%'u i=%'ld "
   91|       |          "block_data=%p block->base=0x%" PRIx64 " // %s()\n",
   92|       |          state,
   93|       |          match_table[state],
   94|       |          i,
   95|       |          block_data,
   96|       |          block->base,
   97|       |          __FUNCTION__);
   98|       |#endif
   99|       |
  100|  36.1M|    if (match_table[state] != 0)
  ------------------
  |  Branch (100:9): [True: 0, False: 36.1M]
  ------------------
  101|      0|    {
  102|       |      // If the entry corresponding to state N in the match table is zero, it
  103|       |      // means that there's no match associated to the state. If it's non-zero,
  104|       |      // its value is the 1-based index within ac_match_pool where the first
  105|       |      // match resides.
  106|       |
  107|      0|      match = &rules->ac_match_pool[match_table[state] - 1];
  108|       |
  109|      0|      if (scanner->matches->count >= YR_SLOW_STRING_MATCHES)
  ------------------
  |  |  120|      0|#define YR_SLOW_STRING_MATCHES 600000
  ------------------
  |  Branch (109:11): [True: 0, False: 0]
  ------------------
  110|      0|      {
  111|      0|        report_string = match->string;
  112|      0|        rule = report_string
  ------------------
  |  Branch (112:16): [True: 0, False: 0]
  ------------------
  113|      0|                   ? &scanner->rules->rules_table[report_string->rule_idx]
  114|      0|                   : NULL;
  115|      0|      }
  116|       |
  117|      0|      while (match != NULL)
  ------------------
  |  Branch (117:14): [True: 0, False: 0]
  ------------------
  118|      0|      {
  119|      0|        if (match->backtrack <= i)
  ------------------
  |  Branch (119:13): [True: 0, False: 0]
  ------------------
  120|      0|        {
  121|      0|          GOTO_EXIT_ON_ERROR(yr_scan_verify_match(
  ------------------
  |  |  114|      0|  {                              \
  |  |  115|      0|    result = (x);                \
  |  |  116|      0|    if (result != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (116:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  117|      0|      goto _exit;                \
  |  |  118|      0|  }
  ------------------
  122|      0|              scanner,
  123|      0|              match,
  124|      0|              block_data,
  125|      0|              block->size,
  126|      0|              block->base,
  127|      0|              i - match->backtrack));
  128|      0|        }
  129|       |
  130|      0|        match = match->next;
  131|      0|      }
  132|      0|    }
  133|       |
  134|  36.1M|    index = block_data[i++] + 1;
  135|  36.1M|    transition = transition_table[state + index];
  136|       |
  137|  36.1M|    while (YR_AC_INVALID_TRANSITION(transition, index))
  ------------------
  |  |   47|  36.1M|#define YR_AC_INVALID_TRANSITION(t, c) (((t) &0x1FF) != c)
  |  |  ------------------
  |  |  |  Branch (47:40): [True: 36.1M, False: 0]
  |  |  ------------------
  ------------------
  138|  36.1M|    {
  139|  36.1M|      if (state != YR_AC_ROOT_STATE)
  ------------------
  |  |   45|  36.1M|#define YR_AC_ROOT_STATE               0
  ------------------
  |  Branch (139:11): [True: 0, False: 36.1M]
  ------------------
  140|      0|      {
  141|      0|        state = YR_AC_NEXT_STATE(transition_table[state]);
  ------------------
  |  |   46|      0|#define YR_AC_NEXT_STATE(t)            (t >> YR_AC_SLOT_OFFSET_BITS)
  |  |  ------------------
  |  |  |  |   39|      0|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  142|      0|        transition = transition_table[state + index];
  143|      0|      }
  144|  36.1M|      else
  145|  36.1M|      {
  146|  36.1M|        transition = 0;
  147|  36.1M|        break;
  148|  36.1M|      }
  149|  36.1M|    }
  150|       |
  151|  36.1M|    state = YR_AC_NEXT_STATE(transition);
  ------------------
  |  |   46|  36.1M|#define YR_AC_NEXT_STATE(t)            (t >> YR_AC_SLOT_OFFSET_BITS)
  |  |  ------------------
  |  |  |  |   39|  36.1M|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  152|  36.1M|  }
  153|       |
  154|  2.76k|  if (match_table[state] != 0)
  ------------------
  |  Branch (154:7): [True: 0, False: 2.76k]
  ------------------
  155|      0|  {
  156|      0|    match = &rules->ac_match_pool[match_table[state] - 1];
  157|       |
  158|      0|    while (match != NULL)
  ------------------
  |  Branch (158:12): [True: 0, False: 0]
  ------------------
  159|      0|    {
  160|      0|      if (match->backtrack <= i)
  ------------------
  |  Branch (160:11): [True: 0, False: 0]
  ------------------
  161|      0|      {
  162|      0|        GOTO_EXIT_ON_ERROR(yr_scan_verify_match(
  ------------------
  |  |  114|      0|  {                              \
  |  |  115|      0|    result = (x);                \
  |  |  116|      0|    if (result != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|      0|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (116:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  117|      0|      goto _exit;                \
  |  |  118|      0|  }
  ------------------
  163|      0|            scanner,
  164|      0|            match,
  165|      0|            block_data,
  166|      0|            block->size,
  167|      0|            block->base,
  168|      0|            i - match->backtrack));
  169|      0|      }
  170|       |
  171|      0|      match = match->next;
  172|      0|    }
  173|      0|  }
  174|       |
  175|  2.76k|  if (rule != NULL &&
  ------------------
  |  Branch (175:7): [True: 0, False: 2.76k]
  ------------------
  176|  2.76k|      scanner->matches->count >= YR_SLOW_STRING_MATCHES &&
  ------------------
  |  |  120|  2.76k|#define YR_SLOW_STRING_MATCHES 600000
  ------------------
  |  Branch (176:7): [True: 0, False: 0]
  ------------------
  177|  2.76k|      scanner->matches->count < YR_MAX_STRING_MATCHES)
  ------------------
  |  |  114|      0|#define YR_MAX_STRING_MATCHES 1000000
  ------------------
  |  Branch (177:7): [True: 0, False: 0]
  ------------------
  178|      0|  {
  179|      0|    if (rule != NULL && report_string != NULL)
  ------------------
  |  Branch (179:9): [True: 0, False: 0]
  |  Branch (179:25): [True: 0, False: 0]
  ------------------
  180|      0|    {
  181|      0|      result = scanner->callback(
  182|      0|        scanner,
  183|      0|        CALLBACK_MSG_TOO_SLOW_SCANNING,
  ------------------
  |  |   45|      0|#define CALLBACK_MSG_TOO_SLOW_SCANNING 8
  ------------------
  184|      0|        (void*) report_string,
  185|      0|        scanner->user_data);
  186|      0|      if (result != CALLBACK_CONTINUE)
  ------------------
  |  |   47|      0|#define CALLBACK_CONTINUE 0
  ------------------
  |  Branch (186:11): [True: 0, False: 0]
  ------------------
  187|      0|      {
  188|      0|        result = ERROR_TOO_SLOW_SCANNING;
  ------------------
  |  |  110|      0|#define ERROR_TOO_SLOW_SCANNING              65
  ------------------
  189|      0|        goto _exit;
  190|      0|      }
  191|      0|    }
  192|      0|  }
  193|       |
  194|  2.76k|_exit:
  195|       |
  196|  2.76k|  YR_DEBUG_FPRINTF(
  197|  2.76k|      2,
  198|  2.76k|      stderr,
  199|  2.76k|      "} = %d AKA %s // %s()\n",
  200|  2.76k|      result,
  201|  2.76k|      yr_debug_error_as_string(result),
  202|  2.76k|      __FUNCTION__);
  203|       |
  204|  2.76k|  return result;
  205|  2.76k|}
scanner.c:_yr_scanner_clean_matches:
  208|  2.76k|{
  209|  2.76k|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  210|       |
  211|  2.76k|  memset(
  212|  2.76k|      scanner->rule_matches_flags,
  213|  2.76k|      0,
  214|  2.76k|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_rules));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  215|       |
  216|  2.76k|  memset(
  217|  2.76k|      scanner->rule_evaluate_condition_flags,
  218|  2.76k|      0,
  219|  2.76k|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_rules));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  220|       |
  221|  2.76k|  memset(
  222|  2.76k|      scanner->ns_unsatisfied_flags,
  223|  2.76k|      0,
  224|  2.76k|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_namespaces));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  225|       |
  226|  2.76k|  memset(
  227|  2.76k|      scanner->strings_temp_disabled,
  228|  2.76k|      0,
  229|  2.76k|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_strings));
  ------------------
  |  |   57|  2.76k|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|  2.76k|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  230|       |
  231|  2.76k|  memset(scanner->matches, 0, sizeof(YR_MATCHES) * scanner->rules->num_strings);
  232|       |
  233|  2.76k|  memset(
  234|  2.76k|      scanner->unconfirmed_matches,
  235|  2.76k|      0,
  236|  2.76k|      sizeof(YR_MATCHES) * scanner->rules->num_strings);
  237|  2.76k|}
scanner.c:_yr_fetch_block_data:
  683|  5.53k|{
  684|  5.53k|  return (const uint8_t*) block->context;
  685|  5.53k|}
scanner.c:_yr_get_first_block:
  640|  5.53k|{
  641|  5.53k|  YR_MEMORY_BLOCK* result = (YR_MEMORY_BLOCK*) iterator->context;
  642|       |
  643|  5.53k|  YR_DEBUG_FPRINTF(
  644|  5.53k|      2,
  645|  5.53k|      stderr,
  646|  5.53k|      "- %s() {} = %p // default iterator; single memory block, blocking\n",
  647|  5.53k|      __FUNCTION__,
  648|  5.53k|      result);
  649|       |
  650|  5.53k|  return result;
  651|  5.53k|}
scanner.c:_yr_get_next_block:
  654|  4.27k|{
  655|  4.27k|  YR_MEMORY_BLOCK* result = NULL;
  656|       |
  657|  4.27k|  YR_DEBUG_FPRINTF(
  658|  4.27k|      2,
  659|  4.27k|      stderr,
  660|  4.27k|      "- %s() {} = %p // default iterator; single memory block, blocking\n",
  661|  4.27k|      __FUNCTION__,
  662|  4.27k|      result);
  663|       |
  664|  4.27k|  return result;
  665|  4.27k|}
scanner.c:_yr_get_file_size:
  668|  2.76k|{
  669|  2.76k|  uint64_t file_size = ((YR_MEMORY_BLOCK*) iterator->context)->size;
  670|       |
  671|  2.76k|  YR_DEBUG_FPRINTF(
  672|  2.76k|      2,
  673|  2.76k|      stderr,
  674|  2.76k|      "- %s() {} = %" PRIu64
  675|  2.76k|      "  // default iterator; single memory block, blocking\n",
  676|  2.76k|      __FUNCTION__,
  677|  2.76k|      file_size);
  678|       |
  679|  2.76k|  return file_size;
  680|  2.76k|}

yr_stopwatch_start:
   84|  2.76k|{
   85|  2.76k|  clock_gettime(CLOCK_MONOTONIC, &stopwatch->ts_start);
   86|  2.76k|}

yr_thread_storage_create:
  160|      4|{
  161|      4|  if (pthread_key_create(storage, NULL) != 0)
  ------------------
  |  Branch (161:7): [True: 0, False: 4]
  ------------------
  162|      0|    return ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  163|       |
  164|      4|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      4|#define ERROR_SUCCESS 0
  ------------------
  165|      4|}

LLVMFuzzerInitialize:
   10|      2|{
   11|      2|  YR_COMPILER* compiler;
   12|       |
   13|      2|  if (yr_initialize() != ERROR_SUCCESS)
  ------------------
  |  Branch (13:7): [True: 0, False: 2]
  ------------------
   14|      0|    return 0;
   15|       |
   16|      2|  if (yr_compiler_create(&compiler) != ERROR_SUCCESS)
  ------------------
  |  Branch (16:7): [True: 0, False: 2]
  ------------------
   17|      0|    return 0;
   18|       |
   19|      2|  if (yr_compiler_add_string(compiler, "import \"dex\"", NULL) == 0)
  ------------------
  |  Branch (19:7): [True: 2, False: 0]
  ------------------
   20|      2|    yr_compiler_get_rules(compiler, &rules);
   21|       |
   22|      2|  yr_compiler_destroy(compiler);
   23|       |
   24|      2|  return 0;
   25|      2|}
_Z8callbackP15YR_SCAN_CONTEXTiPvS1_:
   33|  8.30k|{
   34|  8.30k|  return CALLBACK_CONTINUE;
   35|  8.30k|}
LLVMFuzzerTestOneInput:
   39|  2.76k|{
   40|  2.76k|  if (rules == NULL)
  ------------------
  |  Branch (40:7): [True: 0, False: 2.76k]
  ------------------
   41|      0|    return 0;
   42|       |
   43|  2.76k|  yr_rules_scan_mem(
   44|  2.76k|      rules, data, size, SCAN_FLAGS_NO_TRYCATCH, callback, NULL, 0);
   45|       |
   46|  2.76k|  return 0;
   47|  2.76k|}

