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|    112|{
  238|    112|  YR_ARENA* new_arena = (YR_ARENA*) yr_calloc(1, sizeof(YR_ARENA));
  239|       |
  240|    112|  if (new_arena == NULL)
  ------------------
  |  Branch (240:7): [True: 0, False: 112]
  ------------------
  241|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  242|       |
  243|    112|  new_arena->xrefs = 1;
  244|    112|  new_arena->num_buffers = num_buffers;
  245|    112|  new_arena->initial_buffer_size = initial_buffer_size;
  246|       |
  247|    112|  *arena = new_arena;
  248|       |
  249|    112|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    112|#define ERROR_SUCCESS 0
  ------------------
  250|    112|}
yr_arena_acquire:
  253|      2|{
  254|      2|  arena->xrefs++;
  255|      2|}
yr_arena_release:
  272|    112|{
  273|    112|  arena->xrefs--;
  274|       |
  275|    112|  if (arena->xrefs > 0)
  ------------------
  |  Branch (275:7): [True: 2, False: 110]
  ------------------
  276|      2|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  277|       |
  278|    220|  for (uint32_t i = 0; i < arena->num_buffers; i++)
  ------------------
  |  Branch (278:24): [True: 110, False: 110]
  ------------------
  279|    110|  {
  280|    110|    if (arena->buffers[i].data != NULL)
  ------------------
  |  Branch (280:9): [True: 82, False: 28]
  ------------------
  281|     82|      yr_free(arena->buffers[i].data);
  282|    110|  }
  283|       |
  284|    110|  YR_RELOC* reloc = arena->reloc_list_head;
  285|       |
  286|    110|  while (reloc != NULL)
  ------------------
  |  Branch (286:10): [True: 0, False: 110]
  ------------------
  287|      0|  {
  288|      0|    YR_RELOC* next = reloc->next;
  289|      0|    yr_free(reloc);
  290|      0|    reloc = next;
  291|      0|  }
  292|       |
  293|    110|  yr_free(arena);
  294|       |
  295|    110|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  296|    112|}
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|      6|{
  387|      6|  YR_ARENA_REF r;
  388|       |
  389|      6|  int result = _yr_arena_allocate_memory(
  390|      6|      arena, YR_ARENA_ZERO_MEMORY, buffer_id, size, &r);
  ------------------
  |  |  114|      6|#define YR_ARENA_ZERO_MEMORY 1
  ------------------
  391|       |
  392|      6|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      6|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (392:7): [True: 0, False: 6]
  ------------------
  393|      0|    return result;
  394|       |
  395|      6|  va_list field_offsets;
  396|      6|  va_start(field_offsets, ref);
  397|       |
  398|      6|  result = _yr_arena_make_ptr_relocatable(
  399|      6|      arena, buffer_id, r.offset, field_offsets);
  400|       |
  401|      6|  va_end(field_offsets);
  402|       |
  403|      6|  if (result == ERROR_SUCCESS && ref != NULL)
  ------------------
  |  |   40|     12|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (403:7): [True: 6, False: 0]
  |  Branch (403:34): [True: 6, False: 0]
  ------------------
  404|      6|  {
  405|      6|    ref->buffer_id = r.buffer_id;
  406|      6|    ref->offset = r.offset;
  407|      6|  }
  408|       |
  409|      6|  return result;
  410|      6|}
yr_arena_get_ptr:
  416|    178|{
  417|    178|  assert(buffer_id < arena->num_buffers);
  418|    178|  assert(offset <= arena->buffers[buffer_id].used);
  419|       |
  420|    178|  if (arena->buffers[buffer_id].data == NULL)
  ------------------
  |  Branch (420:7): [True: 34, False: 144]
  ------------------
  421|     34|    return NULL;
  422|       |
  423|    144|  return arena->buffers[buffer_id].data + offset;
  424|    178|}
yr_arena_get_current_offset:
  427|      2|{
  428|      2|  assert(buffer_id < arena->num_buffers);
  429|       |
  430|      2|  return (yr_arena_off_t) arena->buffers[buffer_id].used;
  431|      2|}
yr_arena_ptr_to_ref:
  434|  1.10k|{
  435|  1.10k|  *ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|  1.10k|  (YR_ARENA_REF)           \
  |  |   44|  1.10k|  {                        \
  |  |   45|  1.10k|    UINT32_MAX, UINT32_MAX \
  |  |   46|  1.10k|  }
  ------------------
  436|       |
  437|  1.10k|  if (address == NULL)
  ------------------
  |  Branch (437:7): [True: 0, False: 1.10k]
  ------------------
  438|      0|    return 1;
  439|       |
  440|  6.16k|  for (uint32_t i = 0; i < arena->num_buffers; ++i)
  ------------------
  |  Branch (440:24): [True: 6.16k, False: 0]
  ------------------
  441|  6.16k|  {
  442|       |    // If the buffer is completetly empty, skip it.
  443|  6.16k|    if (arena->buffers[i].data == NULL)
  ------------------
  |  Branch (443:9): [True: 1.98k, False: 4.18k]
  ------------------
  444|  1.98k|      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|  4.18k|    if ((uint8_t*) address >= arena->buffers[i].data &&
  ------------------
  |  Branch (448:9): [True: 3.08k, False: 1.10k]
  ------------------
  449|  4.18k|        (uint8_t*) address < arena->buffers[i].data + arena->buffers[i].used)
  ------------------
  |  Branch (449:9): [True: 1.10k, False: 1.98k]
  ------------------
  450|  1.10k|    {
  451|  1.10k|      ref->buffer_id = i;
  452|  1.10k|      ref->offset =
  453|  1.10k|          (yr_arena_off_t) ((uint8_t*) address - arena->buffers[i].data);
  454|       |
  455|  1.10k|      return 1;
  456|  1.10k|    }
  457|  4.18k|  }
  458|       |
  459|      0|  return 0;
  460|  1.10k|}
yr_arena_ref_to_ptr:
  463|     42|{
  464|     42|  if (YR_ARENA_IS_NULL_REF(*ref))
  ------------------
  |  |   49|     42|  (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|     42|  (YR_ARENA_REF)           \
  |  |  |  |   44|     42|  {                        \
  |  |  |  |   45|     42|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|     42|  }
  |  |  ------------------
  |  |                 (memcmp(&(ref), &YR_ARENA_NULL_REF, sizeof(YR_ARENA_NULL_REF)) == 0)
  |  |  ------------------
  |  |  |  |   43|     42|  (YR_ARENA_REF)           \
  |  |  |  |   44|     42|  {                        \
  |  |  |  |   45|     42|    UINT32_MAX, UINT32_MAX \
  |  |  |  |   46|     42|  }
  |  |  ------------------
  |  |  |  Branch (49:3): [True: 6, False: 36]
  |  |  ------------------
  ------------------
  465|      6|    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|     36|  return yr_arena_get_ptr(arena, ref->buffer_id, ref->offset);
  474|     42|}
yr_arena_make_ptr_relocatable:
  488|     20|{
  489|     20|  int result;
  490|       |
  491|     20|  va_list offsets;
  492|     20|  va_start(offsets, buffer_id);
  493|       |
  494|     20|  result = _yr_arena_make_ptr_relocatable(arena, buffer_id, 0, offsets);
  495|       |
  496|     20|  va_end(offsets);
  497|       |
  498|     20|  return result;
  499|     20|}
yr_arena_write_data:
  507|    170|{
  508|    170|  YR_ARENA_REF r;
  509|       |
  510|       |  // Allocate space in the buffer.
  511|    170|  FAIL_ON_ERROR(_yr_arena_allocate_memory(arena, 0, buffer_id, size, &r));
  ------------------
  |  |  132|    170|  {                               \
  |  |  133|    170|    int __error = (x);            \
  |  |  134|    170|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|    170|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 170]
  |  |  ------------------
  |  |  135|    170|      return __error;             \
  |  |  136|    170|  }
  ------------------
  512|       |
  513|       |  // Copy the data into the allocated space.
  514|    170|  memcpy(arena->buffers[buffer_id].data + r.offset, data, size);
  515|       |
  516|    170|  if (ref != NULL)
  ------------------
  |  Branch (516:7): [True: 38, False: 132]
  ------------------
  517|     38|  {
  518|     38|    ref->buffer_id = r.buffer_id;
  519|     38|    ref->offset = r.offset;
  520|     38|  }
  521|       |
  522|    170|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    170|#define ERROR_SUCCESS 0
  ------------------
  523|    170|}
arena.c:_yr_arena_allocate_memory:
  138|    180|{
  139|    180|  if (buffer_id > arena->num_buffers)
  ------------------
  |  Branch (139:7): [True: 0, False: 180]
  ------------------
  140|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  141|       |
  142|    180|  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|    180|  if (b->size - b->used < size)
  ------------------
  |  Branch (148:7): [True: 98, False: 82]
  ------------------
  149|     98|  {
  150|     98|    size_t new_size = (b->size == 0) ? arena->initial_buffer_size : b->size * 2;
  ------------------
  |  Branch (150:23): [True: 98, False: 0]
  ------------------
  151|       |
  152|     98|    while (new_size < b->used + size) new_size *= 2;
  ------------------
  |  Branch (152:12): [True: 0, False: 98]
  ------------------
  153|       |
  154|       |    // Make sure that buffer size if not larger than 4GB.
  155|     98|    if (new_size > 1ULL << 32)
  ------------------
  |  Branch (155:9): [True: 0, False: 98]
  ------------------
  156|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  157|       |
  158|     98|    uint8_t* new_data = yr_realloc(b->data, new_size);
  159|       |
  160|     98|    if (new_data == NULL)
  ------------------
  |  Branch (160:9): [True: 0, False: 98]
  ------------------
  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|     98|#if !defined(_WIN32) && !defined(__CYGWIN__)
  167|     98|    if (flags & YR_ARENA_ZERO_MEMORY)
  ------------------
  |  |  114|     98|#define YR_ARENA_ZERO_MEMORY 1
  ------------------
  |  Branch (167:9): [True: 10, False: 88]
  ------------------
  168|     10|      memset(new_data + b->used, 0, new_size - b->used);
  169|     98|#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|     98|    if (b->data != NULL && b->data != new_data)
  ------------------
  |  Branch (173:9): [True: 0, False: 98]
  |  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|     98|    b->size = new_size;
  207|     98|    b->data = new_data;
  208|     98|  }
  209|       |
  210|    180|  if (ref != NULL)
  ------------------
  |  Branch (210:7): [True: 176, False: 4]
  ------------------
  211|    176|  {
  212|    176|    ref->buffer_id = buffer_id;
  213|    176|    ref->offset = (uint32_t) b->used;
  214|    176|  }
  215|       |
  216|    180|  b->used += size;
  217|       |
  218|    180|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    180|#define ERROR_SUCCESS 0
  ------------------
  219|    180|}
arena.c:_yr_arena_make_ptr_relocatable:
   80|     26|{
   81|     26|  size_t offset;
   82|       |
   83|     26|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|     26|#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|     26|  offset = va_arg(offsets, size_t);
   88|       |
   89|     58|  while (offset != EOL)
  ------------------
  |  |   38|     58|#define EOL ((size_t) -1)
  ------------------
  |  Branch (89:10): [True: 32, False: 26]
  ------------------
   90|     32|  {
   91|     32|    YR_RELOC* reloc = (YR_RELOC*) yr_malloc(sizeof(YR_RELOC));
   92|       |
   93|     32|    if (reloc == NULL)
  ------------------
  |  Branch (93:9): [True: 0, False: 32]
  ------------------
   94|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   95|       |
   96|     32|    reloc->buffer_id = buffer_id;
   97|     32|    reloc->offset = base_offset + (yr_arena_off_t) offset;
   98|     32|    reloc->next = NULL;
   99|       |
  100|     32|    if (arena->reloc_list_head == NULL)
  ------------------
  |  Branch (100:9): [True: 2, False: 30]
  ------------------
  101|      2|      arena->reloc_list_head = reloc;
  102|       |
  103|     32|    if (arena->reloc_list_tail != NULL)
  ------------------
  |  Branch (103:9): [True: 30, False: 2]
  ------------------
  104|     30|      arena->reloc_list_tail->next = reloc;
  105|       |
  106|     32|    arena->reloc_list_tail = reloc;
  107|     32|    offset = va_arg(offsets, size_t);
  108|     32|  }
  109|       |
  110|     26|  return result;
  111|     26|}

_yr_compiler_store_data:
  177|     24|{
  178|       |  // Check if the data is already in YR_SZ_POOL by using a hash table.
  179|     24|  uint32_t offset = yr_hash_table_lookup_uint32_raw_key(
  180|     24|      compiler->sz_table, data, data_length, NULL);
  181|       |
  182|     24|  if (offset == UINT32_MAX)
  ------------------
  |  Branch (182:7): [True: 16, False: 8]
  ------------------
  183|     16|  {
  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|     16|    FAIL_ON_ERROR(yr_arena_write_data(
  ------------------
  |  |  132|     16|  {                               \
  |  |  133|     16|    int __error = (x);            \
  |  |  134|     16|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|     16|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 16]
  |  |  ------------------
  |  |  135|     16|      return __error;             \
  |  |  136|     16|  }
  ------------------
  188|     16|        compiler->arena, YR_SZ_POOL, data, data_length, ref));
  189|       |
  190|     16|    FAIL_ON_ERROR(yr_hash_table_add_uint32_raw_key(
  ------------------
  |  |  132|     16|  {                               \
  |  |  133|     16|    int __error = (x);            \
  |  |  134|     16|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|     16|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 16]
  |  |  ------------------
  |  |  135|     16|      return __error;             \
  |  |  136|     16|  }
  ------------------
  191|     16|        compiler->sz_table, data, data_length, NULL, ref->offset));
  192|     16|  }
  193|      8|  else
  194|      8|  {
  195|      8|    ref->buffer_id = YR_SZ_POOL;
  ------------------
  |  |   62|      8|#define YR_SZ_POOL                  5
  ------------------
  196|      8|    ref->offset = offset;
  197|      8|  }
  198|       |
  199|     24|  return ERROR_SUCCESS;
  ------------------
  |  |   40|     24|#define ERROR_SUCCESS 0
  ------------------
  200|     24|}
_yr_compiler_store_string:
  209|     24|{
  210|     24|  return _yr_compiler_store_data(
  211|     24|      compiler,
  212|     24|      (void*) string,
  213|     24|      strlen(string) + 1,  // include the null terminator
  214|     24|      ref);
  215|     24|}
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|    110|{
  420|    110|  YR_DEBUG_FPRINTF(2, stderr, "+ %s() {\n", __FUNCTION__);
  421|       |
  422|    110|  const uint8_t* ip = context->rules->code_start;
  423|       |
  424|    110|  YR_VALUE mem[MEM_SIZE];
  425|    110|  YR_VALUE args[YR_MAX_FUNCTION_ARGS];
  426|    110|  YR_VALUE r1;
  427|    110|  YR_VALUE r2;
  428|    110|  YR_VALUE r3;
  429|    110|  YR_VALUE r4;
  430|       |
  431|    110|  YR_VALUE_STACK stack;
  432|       |
  433|    110|  uint64_t elapsed_time;
  434|       |
  435|       |#ifdef YR_PROFILING_ENABLED
  436|       |  uint64_t start_time;
  437|       |#endif
  438|       |
  439|    110|  uint32_t current_rule_idx = 0;
  440|    110|  YR_RULE* current_rule = NULL;
  441|    110|  YR_RULE* rule;
  442|    110|  YR_MATCH* match;
  443|    110|  YR_OBJECT_FUNCTION* function;
  444|    110|  YR_OBJECT** obj_ptr;
  445|    110|  YR_ARENA* obj_arena;
  446|    110|  YR_NOTEBOOK* it_notebook;
  447|       |
  448|    110|  char* identifier;
  449|    110|  char* args_fmt;
  450|       |
  451|    110|  int found;
  452|    110|  int count;
  453|    110|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  454|    110|  int cycle = 0;
  455|    110|  int obj_count = 0;
  456|       |
  457|    110|  bool stop = false;
  458|       |
  459|    110|  uint8_t opcode;
  460|       |
  461|    110|  yr_get_configuration_uint32(YR_CONFIG_STACK_SIZE, &stack.capacity);
  462|       |
  463|    110|  stack.sp = 0;
  464|    110|  stack.items = (YR_VALUE*) yr_malloc(stack.capacity * sizeof(YR_VALUE));
  465|       |
  466|    110|  if (stack.items == NULL)
  ------------------
  |  Branch (466:7): [True: 0, False: 110]
  ------------------
  467|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  468|       |
  469|    110|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    110|  {                                            \
  |  |  141|    110|    int __error = (x);                         \
  |  |  142|    110|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  143|    110|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    110|  }
  ------------------
  470|    110|      yr_arena_create(1, 512 * sizeof(YR_OBJECT*), &obj_arena),
  471|    110|      yr_free(stack.items));
  472|       |
  473|    110|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    110|  {                                            \
  |  |  141|    110|    int __error = (x);                         \
  |  |  142|    110|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  143|    110|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    110|  }
  ------------------
  474|    110|      yr_notebook_create(512 * sizeof(YR_ITERATOR), &it_notebook),
  475|    110|      yr_arena_release(obj_arena);
  476|    110|      yr_free(stack.items));
  477|       |
  478|       |#ifdef YR_PROFILING_ENABLED
  479|       |  start_time = yr_stopwatch_elapsed_ns(&context->stopwatch);
  480|       |#endif
  481|       |
  482|    110|#if YR_PARANOID_EXEC
  483|    110|  memset(mem, 0, MEM_SIZE * sizeof(mem[0]));
  ------------------
  |  |   51|    110|#define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |   96|    110|#define YR_MAX_LOOP_NESTING 4
  |  |  ------------------
  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |  103|    110|#define YR_MAX_LOOP_VARS 2
  |  |  ------------------
  |  |               #define MEM_SIZE YR_MAX_LOOP_NESTING*(YR_MAX_LOOP_VARS + YR_INTERNAL_LOOP_VARS)
  |  |  ------------------
  |  |  |  |   76|    110|#define YR_INTERNAL_LOOP_VARS 3
  |  |  ------------------
  ------------------
  484|    110|#endif
  485|       |
  486|  2.42k|  while (!stop)
  ------------------
  |  Branch (486:10): [True: 2.31k, False: 110]
  ------------------
  487|  2.31k|  {
  488|       |    // Read the opcode from the address indicated by the instruction pointer.
  489|  2.31k|    opcode = *ip;
  490|       |
  491|       |    // Advance the instruction pointer, which now points past the opcode.
  492|  2.31k|    ip++;
  493|       |
  494|  2.31k|    switch (opcode)
  495|  2.31k|    {
  496|      0|    case OP_NOP:
  ------------------
  |  |   47|      0|#define OP_NOP   254
  ------------------
  |  Branch (496:5): [True: 0, False: 2.31k]
  ------------------
  497|      0|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_NOP: // %s()\n", __FUNCTION__);
  498|      0|      break;
  499|       |
  500|    110|    case OP_HALT:
  ------------------
  |  |   46|    110|#define OP_HALT  255
  ------------------
  |  Branch (500:5): [True: 110, False: 2.20k]
  ------------------
  501|    110|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_HALT: // %s()\n", __FUNCTION__);
  502|    110|      assert(stack.sp == 0);  // When HALT is reached the stack should be empty.
  503|    110|      stop = true;
  504|    110|      break;
  505|       |
  506|      0|    case OP_ITER_START_ARRAY:
  ------------------
  |  |  102|      0|#define OP_ITER_START_ARRAY           54
  ------------------
  |  Branch (506:5): [True: 0, False: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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|    220|    case OP_PUSH_8:
  ------------------
  |  |  111|    220|#define OP_PUSH_8                     63
  ------------------
  |  Branch (777:5): [True: 220, False: 2.09k]
  ------------------
  778|    220|      r1.i = *ip;
  779|    220|      YR_DEBUG_FPRINTF(
  780|    220|          2,
  781|    220|          stderr,
  782|    220|          "- case OP_PUSH_8: r1.i=%" PRId64 " // %s()\n",
  783|    220|          r1.i,
  784|    220|          __FUNCTION__);
  785|    220|      ip += sizeof(uint8_t);
  786|    220|      push(r1);
  ------------------
  |  |   54|    220|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 220, False: 0]
  |  |  ------------------
  |  |   55|    220|  {                                     \
  |  |   56|    220|    stack.items[stack.sp++] = (x);      \
  |  |   57|    220|  }                                     \
  |  |   58|    220|  else                                  \
  |  |   59|    220|  {                                     \
  |  |   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|    220|      break;
  788|       |
  789|      0|    case OP_PUSH_16:
  ------------------
  |  |  112|      0|#define OP_PUSH_16                    64
  ------------------
  |  Branch (789:5): [True: 0, False: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
  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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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|    110|    case OP_INIT_RULE:
  ------------------
  |  |   76|    110|#define OP_INIT_RULE                  28
  ------------------
  |  Branch (1156:5): [True: 110, False: 2.20k]
  ------------------
 1157|    110|      YR_DEBUG_FPRINTF(
 1158|    110|          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|    110|      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|    110|      assert(current_rule_idx < context->rules->num_rules);
 1166|       |
 1167|    110|      current_rule = &context->rules->rules_table[current_rule_idx];
 1168|       |
 1169|       |      // If the rule is disabled let's skip its code.
 1170|    110|      bool disabled = RULE_IS_DISABLED(current_rule) || yr_bitmask_is_not_set(context->rule_evaluate_condition_flags, current_rule_idx);
  ------------------
  |  |   63|    220|#define RULE_IS_DISABLED(x) (((x)->flags) & RULE_FLAGS_DISABLED)
  |  |  ------------------
  |  |  |  |   55|    110|#define RULE_FLAGS_DISABLED 0x08
  |  |  ------------------
  |  |  |  Branch (63:29): [True: 0, False: 110]
  |  |  ------------------
  ------------------
                    bool disabled = RULE_IS_DISABLED(current_rule) || yr_bitmask_is_not_set(context->rule_evaluate_condition_flags, current_rule_idx);
  ------------------
  |  |   77|    220|#define yr_bitmask_is_not_set(bm, i) (!yr_bitmask_is_set(bm, i))
  |  |  ------------------
  |  |  |  |   75|    110|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (77:38): [True: 0, False: 110]
  |  |  ------------------
  ------------------
 1171|    110|      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|    110|      if (!disabled)
  ------------------
  |  Branch (1175:11): [True: 110, False: 0]
  ------------------
 1176|    110|        ip += sizeof(uint32_t);
 1177|       |
 1178|    110|      break;
 1179|       |
 1180|    110|    case OP_MATCH_RULE:
  ------------------
  |  |   77|    110|#define OP_MATCH_RULE                 29
  ------------------
  |  Branch (1180:5): [True: 110, False: 2.20k]
  ------------------
 1181|    110|      YR_DEBUG_FPRINTF(
 1182|    110|          2, stderr, "- case OP_MATCH_RULE: // %s()\n", __FUNCTION__);
 1183|    110|      pop(r1);
  ------------------
  |  |   66|    110|  {                              \
  |  |   67|    110|    assert(stack.sp > 0);        \
  |  |   68|    110|    x = stack.items[--stack.sp]; \
  |  |   69|    110|  }
  ------------------
 1184|       |
 1185|    110|      r2.i = yr_unaligned_u64(ip);
 1186|    110|      ip += sizeof(uint64_t);
 1187|       |
 1188|    110|      rule = &context->rules->rules_table[r2.i];
 1189|       |
 1190|    110|#if YR_PARANOID_EXEC
 1191|    110|      ensure_within_rules_arena(rule);
  ------------------
  |  |   91|    110|  {                                                               \
  |  |   92|    110|    YR_ARENA_REF ref;                                             \
  |  |   93|    110|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 110]
  |  |  ------------------
  |  |   94|    110|    {                                                             \
  |  |   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|    110|  }
  ------------------
 1192|    110|#endif
 1193|       |
 1194|    110|      if (!is_undef(r1) && r1.i)
  ------------------
  |  |   71|    110|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|    220|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1194:11): [True: 35, False: 75]
  |  Branch (1194:28): [True: 10, False: 25]
  ------------------
 1195|     10|        yr_bitmask_set(context->rule_matches_flags, r2.i);
  ------------------
  |  |   60|     10|  do                                                                         \
  |  |   61|     10|  {                                                                          \
  |  |   62|     10|    (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|     10|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                   (bm)[(i) / YR_BITMASK_SLOT_BITS] |= 1UL << ((i) % YR_BITMASK_SLOT_BITS); \
  |  |  ------------------
  |  |  |  |   56|     10|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |   63|     10|  } while (0)
  |  |  ------------------
  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1196|    100|      else if (RULE_IS_GLOBAL(rule))
  ------------------
  |  |   59|    100|#define RULE_IS_GLOBAL(x) (((x)->flags) & RULE_FLAGS_GLOBAL)
  |  |  ------------------
  |  |  |  |   53|    100|#define RULE_FLAGS_GLOBAL   0x02
  |  |  ------------------
  |  |  |  Branch (59:27): [True: 0, False: 100]
  |  |  ------------------
  ------------------
 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|    110|      assert(stack.sp == 0);  // at this point the stack should be empty.
 1206|    110|      break;
 1207|       |
 1208|    330|    case OP_OBJ_LOAD:
  ------------------
  |  |   64|    330|#define OP_OBJ_LOAD                   16
  ------------------
  |  Branch (1208:5): [True: 330, False: 1.98k]
  ------------------
 1209|    330|      YR_DEBUG_FPRINTF(
 1210|    330|          2, stderr, "- case OP_OBJ_LOAD: // %s()\n", __FUNCTION__);
 1211|       |
 1212|    330|      identifier = yr_unaligned_char_ptr(ip);
 1213|    330|      ip += sizeof(uint64_t);
 1214|       |
 1215|    330|#if YR_PARANOID_EXEC
 1216|    330|      ensure_within_rules_arena(identifier);
  ------------------
  |  |   91|    330|  {                                                               \
  |  |   92|    330|    YR_ARENA_REF ref;                                             \
  |  |   93|    330|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 330]
  |  |  ------------------
  |  |   94|    330|    {                                                             \
  |  |   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|    330|  }
  ------------------
 1217|    330|#endif
 1218|       |
 1219|    330|      r1.o = (YR_OBJECT*) yr_hash_table_lookup(
 1220|    330|          context->objects_table, identifier, NULL);
 1221|       |
 1222|    330|      assert(r1.o != NULL);
 1223|    330|      push(r1);
  ------------------
  |  |   54|    330|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 330, False: 0]
  |  |  ------------------
  |  |   55|    330|  {                                     \
  |  |   56|    330|    stack.items[stack.sp++] = (x);      \
  |  |   57|    330|  }                                     \
  |  |   58|    330|  else                                  \
  |  |   59|    330|  {                                     \
  |  |   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|    330|      break;
 1225|       |
 1226|    550|    case OP_OBJ_FIELD:
  ------------------
  |  |   66|    550|#define OP_OBJ_FIELD                  18
  ------------------
  |  Branch (1226:5): [True: 550, False: 1.76k]
  ------------------
 1227|    550|      YR_DEBUG_FPRINTF(
 1228|    550|          2, stderr, "- case OP_OBJ_FIELD: // %s()\n", __FUNCTION__);
 1229|       |
 1230|    550|      identifier = yr_unaligned_char_ptr(ip);
 1231|    550|      ip += sizeof(uint64_t);
 1232|       |
 1233|    550|#if YR_PARANOID_EXEC
 1234|    550|      ensure_within_rules_arena(identifier);
  ------------------
  |  |   91|    550|  {                                                               \
  |  |   92|    550|    YR_ARENA_REF ref;                                             \
  |  |   93|    550|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 550]
  |  |  ------------------
  |  |   94|    550|    {                                                             \
  |  |   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|    550|  }
  ------------------
 1235|    550|#endif
 1236|       |
 1237|    550|      pop(r1);
  ------------------
  |  |   66|    550|  {                              \
  |  |   67|    550|    assert(stack.sp > 0);        \
  |  |   68|    550|    x = stack.items[--stack.sp]; \
  |  |   69|    550|  }
  ------------------
 1238|    550|      ensure_defined(r1);
  ------------------
  |  |   74|    550|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    550|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    550|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    550|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 56, False: 494]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    550|  {                       \
  |  |   76|     56|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|     56|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|     56|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|     56|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 56, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     56|  {                                     \
  |  |  |  |   56|     56|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|     56|  }                                     \
  |  |  |  |   58|     56|  else                                  \
  |  |  |  |   59|     56|  {                                     \
  |  |  |  |   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|     56|    break;                \
  |  |   79|     56|  }
  ------------------
 1239|       |
 1240|    494|      r1.o = yr_object_lookup_field(r1.o, identifier);
 1241|       |
 1242|    494|      if (r1.o == NULL)
  ------------------
  |  Branch (1242:11): [True: 0, False: 494]
  ------------------
 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|    494|      push(r1);
  ------------------
  |  |   54|    494|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 494, False: 0]
  |  |  ------------------
  |  |   55|    494|  {                                     \
  |  |   56|    494|    stack.items[stack.sp++] = (x);      \
  |  |   57|    494|  }                                     \
  |  |   58|    494|  else                                  \
  |  |   59|    494|  {                                     \
  |  |   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|    494|      break;
 1251|       |
 1252|    330|    case OP_OBJ_VALUE:
  ------------------
  |  |   65|    330|#define OP_OBJ_VALUE                  17
  ------------------
  |  Branch (1252:5): [True: 330, False: 1.98k]
  ------------------
 1253|    330|      YR_DEBUG_FPRINTF(
 1254|    330|          2, stderr, "- case OP_OBJ_VALUE: // %s()\n", __FUNCTION__);
 1255|    330|      pop(r1);
  ------------------
  |  |   66|    330|  {                              \
  |  |   67|    330|    assert(stack.sp > 0);        \
  |  |   68|    330|    x = stack.items[--stack.sp]; \
  |  |   69|    330|  }
  ------------------
 1256|    330|      ensure_defined(r1);
  ------------------
  |  |   74|    330|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    330|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    330|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    330|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 84, False: 246]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    330|  {                       \
  |  |   76|     84|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|     84|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|     84|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|     84|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 84, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     84|  {                                     \
  |  |  |  |   56|     84|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|     84|  }                                     \
  |  |  |  |   58|     84|  else                                  \
  |  |  |  |   59|     84|  {                                     \
  |  |  |  |   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|     84|    break;                \
  |  |   79|     84|  }
  ------------------
 1257|       |
 1258|    246|#if YR_PARANOID_EXEC
 1259|    246|      check_object_canary(r1.o);
  ------------------
  |  |  102|    246|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 246]
  |  |  ------------------
  |  |  103|    246|  {                                      \
  |  |  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|    246|#endif
 1261|       |
 1262|    246|      switch (r1.o->type)
 1263|    246|      {
 1264|    246|      case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|    246|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (1264:7): [True: 246, False: 0]
  ------------------
 1265|    246|        r1.i = r1.o->value.i;
 1266|    246|        break;
 1267|       |
 1268|      0|      case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (1268:7): [True: 0, False: 246]
  ------------------
 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: 246]
  ------------------
 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: 246]
  ------------------
 1283|      0|        assert(false);
 1284|    246|      }
 1285|       |
 1286|    246|      push(r1);
  ------------------
  |  |   54|    246|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 246, False: 0]
  |  |  ------------------
  |  |   55|    246|  {                                     \
  |  |   56|    246|    stack.items[stack.sp++] = (x);      \
  |  |   57|    246|  }                                     \
  |  |   58|    246|  else                                  \
  |  |   59|    246|  {                                     \
  |  |   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|    246|      break;
 1288|       |
 1289|    220|    case OP_INDEX_ARRAY:
  ------------------
  |  |   67|    220|#define OP_INDEX_ARRAY                19
  ------------------
  |  Branch (1289:5): [True: 220, False: 2.09k]
  ------------------
 1290|    220|      YR_DEBUG_FPRINTF(
 1291|    220|          2, stderr, "- case OP_INDEX_ARRAY: // %s()\n", __FUNCTION__);
 1292|    220|      pop(r1);  // index
  ------------------
  |  |   66|    220|  {                              \
  |  |   67|    220|    assert(stack.sp > 0);        \
  |  |   68|    220|    x = stack.items[--stack.sp]; \
  |  |   69|    220|  }
  ------------------
 1293|    220|      pop(r2);  // array
  ------------------
  |  |   66|    220|  {                              \
  |  |   67|    220|    assert(stack.sp > 0);        \
  |  |   68|    220|    x = stack.items[--stack.sp]; \
  |  |   69|    220|  }
  ------------------
 1294|       |
 1295|    220|      ensure_defined(r1);
  ------------------
  |  |   74|    220|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    220|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    220|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    220|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 220]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    220|  {                       \
  |  |   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|    220|      ensure_defined(r2);
  ------------------
  |  |   74|    220|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    220|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    220|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    220|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 220]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    220|  {                       \
  |  |   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|    220|      assert(r2.o->type == OBJECT_TYPE_ARRAY);
 1299|       |
 1300|    220|#if YR_PARANOID_EXEC
 1301|    220|      check_object_canary(r2.o);
  ------------------
  |  |  102|    220|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 220]
  |  |  ------------------
  |  |  103|    220|  {                                      \
  |  |  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|    220|#endif
 1303|       |
 1304|    220|      r1.o = yr_object_array_get_item(r2.o, 0, (int) r1.i);
 1305|       |
 1306|    220|      if (r1.o == NULL)
  ------------------
  |  Branch (1306:11): [True: 56, False: 164]
  ------------------
 1307|     56|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|     56|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1308|       |
 1309|    220|      push(r1);
  ------------------
  |  |   54|    220|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 220, False: 0]
  |  |  ------------------
  |  |   55|    220|  {                                     \
  |  |   56|    220|    stack.items[stack.sp++] = (x);      \
  |  |   57|    220|  }                                     \
  |  |   58|    220|  else                                  \
  |  |   59|    220|  {                                     \
  |  |   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|    220|      break;
 1311|       |
 1312|      0|    case OP_LOOKUP_DICT:
  ------------------
  |  |   90|      0|#define OP_LOOKUP_DICT                42
  ------------------
  |  Branch (1312:5): [True: 0, False: 2.31k]
  ------------------
 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|    110|    case OP_CALL:
  ------------------
  |  |   63|    110|#define OP_CALL                       15
  ------------------
  |  Branch (1335:5): [True: 110, False: 2.20k]
  ------------------
 1336|    110|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_CALL: // %s()\n", __FUNCTION__);
 1337|       |
 1338|    110|      args_fmt = yr_unaligned_char_ptr(ip);
 1339|    110|      ip += sizeof(uint64_t);
 1340|       |
 1341|    110|      int i = (int) strlen(args_fmt);
 1342|    110|      count = 0;
 1343|       |
 1344|    110|#if YR_PARANOID_EXEC
 1345|    110|      if (i > YR_MAX_FUNCTION_ARGS)
  ------------------
  |  |  131|    110|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
  |  Branch (1345:11): [True: 0, False: 110]
  ------------------
 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|    110|#endif
 1352|       |
 1353|       |      // pop arguments from stack and copy them to args array
 1354|       |
 1355|    220|      while (i > 0)
  ------------------
  |  Branch (1355:14): [True: 110, False: 110]
  ------------------
 1356|    110|      {
 1357|    110|        pop(r1);
  ------------------
  |  |   66|    110|  {                              \
  |  |   67|    110|    assert(stack.sp > 0);        \
  |  |   68|    110|    x = stack.items[--stack.sp]; \
  |  |   69|    110|  }
  ------------------
 1358|       |
 1359|    110|        if (is_undef(r1))  // count the number of undefined args
  ------------------
  |  |   71|    110|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  ------------------
  |  |  |  |   39|    110|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:25): [True: 28, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1360|     28|          count++;
 1361|       |
 1362|    110|        args[i - 1] = r1;
 1363|    110|        i--;
 1364|    110|      }
 1365|       |
 1366|    220|      pop(r2);
  ------------------
  |  |   66|    110|  {                              \
  |  |   67|    110|    assert(stack.sp > 0);        \
  |  |   68|    110|    x = stack.items[--stack.sp]; \
  |  |   69|    110|  }
  ------------------
 1367|    220|      ensure_defined(r2);
  ------------------
  |  |   74|    110|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    110|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    110|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 0, False: 110]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    110|  {                       \
  |  |   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|    110|#if YR_PARANOID_EXEC
 1370|    110|      check_object_canary(r2.o);
  ------------------
  |  |  102|    110|  if (o->canary != context->canary)      \
  |  |  ------------------
  |  |  |  Branch (102:7): [True: 0, False: 110]
  |  |  ------------------
  |  |  103|    110|  {                                      \
  |  |  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|    110|#endif
 1372|       |
 1373|    110|      if (count > 0)
  ------------------
  |  Branch (1373:11): [True: 28, False: 82]
  ------------------
 1374|     28|      {
 1375|       |        // If there are undefined args, result for function call
 1376|       |        // is undefined as well.
 1377|       |
 1378|     28|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|     28|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1379|     28|        push(r1);
  ------------------
  |  |   54|     28|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 28, False: 0]
  |  |  ------------------
  |  |   55|     28|  {                                     \
  |  |   56|     28|    stack.items[stack.sp++] = (x);      \
  |  |   57|     28|  }                                     \
  |  |   58|     28|  else                                  \
  |  |   59|     28|  {                                     \
  |  |   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|     28|        break;
 1381|     28|      }
 1382|       |
 1383|     82|      function = object_as_function(r2.o);
  ------------------
  |  |  905|     82|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
 1384|     82|      result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|     82|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
 1385|       |
 1386|     82|      for (i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|     82|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (1386:19): [True: 82, False: 0]
  ------------------
 1387|     82|      {
 1388|     82|        if (function->prototypes[i].arguments_fmt == NULL)
  ------------------
  |  Branch (1388:13): [True: 0, False: 82]
  ------------------
 1389|      0|          break;
 1390|       |
 1391|     82|        if (strcmp(function->prototypes[i].arguments_fmt, args_fmt) == 0)
  ------------------
  |  Branch (1391:13): [True: 82, False: 0]
  ------------------
 1392|     82|        {
 1393|     82|          result = function->prototypes[i].code(args, context, function);
 1394|     82|          break;
 1395|     82|        }
 1396|     82|      }
 1397|       |
 1398|       |      // If i == YR_MAX_OVERLOADED_FUNCTIONS at this point no matching
 1399|       |      // prototype was found, but this shouldn't happen.
 1400|     82|      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|     82|      if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|     82|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1405:11): [True: 82, False: 0]
  ------------------
 1406|     82|        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|     82|      if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|     82|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1411:11): [True: 82, False: 0]
  ------------------
 1412|     82|      {
 1413|     82|        result = yr_arena_write_data(obj_arena, 0, &r1.o, sizeof(r1.o), NULL);
 1414|     82|        obj_count++;
 1415|     82|      }
 1416|      0|      else
 1417|      0|      {
 1418|      0|        r1.i = YR_UNDEFINED;
  ------------------
  |  |   38|      0|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1419|      0|      }
 1420|       |
 1421|     82|      stop = (result != ERROR_SUCCESS);
  ------------------
  |  |   40|     82|#define ERROR_SUCCESS 0
  ------------------
 1422|     82|      push(r1);
  ------------------
  |  |   54|     82|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 82, False: 0]
  |  |  ------------------
  |  |   55|     82|  {                                     \
  |  |   56|     82|    stack.items[stack.sp++] = (x);      \
  |  |   57|     82|  }                                     \
  |  |   58|     82|  else                                  \
  |  |   59|     82|  {                                     \
  |  |   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|     82|      break;
 1424|       |
 1425|      0|    case OP_FOUND:
  ------------------
  |  |   70|      0|#define OP_FOUND                      22
  ------------------
  |  Branch (1425:5): [True: 0, False: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 1606|      0|    case OP_OF_PERCENT:
  ------------------
  |  |  122|      0|#define OP_OF_PERCENT                 74
  ------------------
  |  Branch (1606:5): [True: 0, False: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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|    110|    case OP_IMPORT:
  ------------------
  |  |   89|    110|#define OP_IMPORT                     41
  ------------------
  |  Branch (1932:5): [True: 110, False: 2.20k]
  ------------------
 1933|    110|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_IMPORT: // %s()\n", __FUNCTION__);
 1934|    110|      r1.i = yr_unaligned_u64(ip);
 1935|    110|      ip += sizeof(uint64_t);
 1936|       |
 1937|    110|#if YR_PARANOID_EXEC
 1938|    110|      ensure_within_rules_arena(r1.p);
  ------------------
  |  |   91|    110|  {                                                               \
  |  |   92|    110|    YR_ARENA_REF ref;                                             \
  |  |   93|    110|    if (yr_arena_ptr_to_ref(context->rules->arena, x, &ref) == 0) \
  |  |  ------------------
  |  |  |  Branch (93:9): [True: 0, False: 110]
  |  |  ------------------
  |  |   94|    110|    {                                                             \
  |  |   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|    110|  }
  ------------------
 1939|    110|#endif
 1940|       |
 1941|    110|      result = yr_modules_load((char*) r1.p, context);
 1942|       |
 1943|    110|      if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (1943:11): [True: 0, False: 110]
  ------------------
 1944|      0|        stop = true;
 1945|       |
 1946|    110|      break;
 1947|       |
 1948|      0|    case OP_MATCHES:
  ------------------
  |  |   88|      0|#define OP_MATCHES                    40
  ------------------
  |  Branch (1948:5): [True: 0, False: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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|    110|    case OP_INT_EQ:
  ------------------
  |  |  142|    110|#define OP_INT_EQ    (OP_INT_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  141|    110|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define OP_INT_EQ    (OP_INT_BEGIN + _OP_EQ)
  |  |  ------------------
  |  |  |  |  129|    110|#define _OP_EQ    0
  |  |  ------------------
  ------------------
  |  Branch (2013:5): [True: 110, False: 2.20k]
  ------------------
 2014|    110|      YR_DEBUG_FPRINTF(2, stderr, "- case OP_INT_EQ: // %s()\n", __FUNCTION__);
 2015|    110|      pop(r2);
  ------------------
  |  |   66|    110|  {                              \
  |  |   67|    110|    assert(stack.sp > 0);        \
  |  |   68|    110|    x = stack.items[--stack.sp]; \
  |  |   69|    110|  }
  ------------------
 2016|    110|      pop(r1);
  ------------------
  |  |   66|    110|  {                              \
  |  |   67|    110|    assert(stack.sp > 0);        \
  |  |   68|    110|    x = stack.items[--stack.sp]; \
  |  |   69|    110|  }
  ------------------
 2017|    110|      ensure_defined(r2);
  ------------------
  |  |   74|    110|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|    110|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    110|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 28, False: 82]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    110|  {                       \
  |  |   76|     28|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|     28|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|     28|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|     28|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 28, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     28|  {                                     \
  |  |  |  |   56|     28|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|     28|  }                                     \
  |  |  |  |   58|     28|  else                                  \
  |  |  |  |   59|     28|  {                                     \
  |  |  |  |   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|     28|    break;                \
  |  |   79|     28|  }
  ------------------
 2018|     82|      ensure_defined(r1);
  ------------------
  |  |   74|     82|  if (is_undef(x))        \
  |  |  ------------------
  |  |  |  |   71|     82|#define is_undef(x) IS_UNDEFINED((x).i)
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|     82|#define IS_UNDEFINED(x) ((size_t)(x) == (size_t) YR_UNDEFINED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     82|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:25): [True: 47, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|     82|  {                       \
  |  |   76|     47|    r1.i = YR_UNDEFINED;  \
  |  |  ------------------
  |  |  |  |   38|     47|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  |  |  ------------------
  |  |   77|     47|    push(r1);             \
  |  |  ------------------
  |  |  |  |   54|     47|  if (stack.sp < stack.capacity)        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:7): [True: 47, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     47|  {                                     \
  |  |  |  |   56|     47|    stack.items[stack.sp++] = (x);      \
  |  |  |  |   57|     47|  }                                     \
  |  |  |  |   58|     47|  else                                  \
  |  |  |  |   59|     47|  {                                     \
  |  |  |  |   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|     47|    break;                \
  |  |   79|     47|  }
  ------------------
 2019|     35|      r1.i = r1.i == r2.i;
 2020|     35|      push(r1);
  ------------------
  |  |   54|     35|  if (stack.sp < stack.capacity)        \
  |  |  ------------------
  |  |  |  Branch (54:7): [True: 35, False: 0]
  |  |  ------------------
  |  |   55|     35|  {                                     \
  |  |   56|     35|    stack.items[stack.sp++] = (x);      \
  |  |   57|     35|  }                                     \
  |  |   58|     35|  else                                  \
  |  |   59|     35|  {                                     \
  |  |   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|     35|      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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 2287|      0|    case OP_ICONTAINS:
  ------------------
  |  |  118|      0|#define OP_ICONTAINS                  70
  ------------------
  |  Branch (2287:5): [True: 0, False: 2.31k]
  ------------------
 2288|      0|    case OP_STARTSWITH:
  ------------------
  |  |  116|      0|#define OP_STARTSWITH                 68
  ------------------
  |  Branch (2288:5): [True: 0, False: 2.31k]
  ------------------
 2289|      0|    case OP_ISTARTSWITH:
  ------------------
  |  |  119|      0|#define OP_ISTARTSWITH                71
  ------------------
  |  Branch (2289:5): [True: 0, False: 2.31k]
  ------------------
 2290|      0|    case OP_ENDSWITH:
  ------------------
  |  |  117|      0|#define OP_ENDSWITH                   69
  ------------------
  |  Branch (2290:5): [True: 0, False: 2.31k]
  ------------------
 2291|      0|    case OP_IENDSWITH:
  ------------------
  |  |  120|      0|#define OP_IENDSWITH                  72
  ------------------
  |  Branch (2291:5): [True: 0, False: 2.31k]
  ------------------
 2292|      0|    case OP_IEQUALS:
  ------------------
  |  |  121|      0|#define OP_IEQUALS                    73
  ------------------
  |  Branch (2292:5): [True: 0, False: 2.31k]
  ------------------
 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: 2.31k]
  ------------------
 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|  2.31k|    }
 2347|       |
 2348|       |    // Check for timeout every 100 instruction cycles. If timeout == 0 it means
 2349|       |    // no timeout at all.
 2350|       |
 2351|  2.31k|    if (context->timeout > 0ULL && ++cycle == 100)
  ------------------
  |  Branch (2351:9): [True: 0, False: 2.31k]
  |  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|  2.31k|  }
 2368|       |
 2369|    110|  obj_ptr = yr_arena_get_ptr(obj_arena, 0, 0);
 2370|       |
 2371|    192|  for (int i = 0; i < obj_count; i++) yr_object_destroy(obj_ptr[i]);
  ------------------
  |  Branch (2371:19): [True: 82, False: 110]
  ------------------
 2372|       |
 2373|    110|  yr_arena_release(obj_arena);
 2374|    110|  yr_notebook_destroy(it_notebook);
 2375|    110|  yr_modules_unload_all(context);
 2376|    110|  yr_free(stack.items);
 2377|       |
 2378|    110|  YR_DEBUG_FPRINTF(
 2379|    110|      2,
 2380|    110|      stderr,
 2381|    110|      "} = %d AKA %s // %s()\n",
 2382|    110|      result,
 2383|    110|      yr_debug_error_as_string(result),
 2384|    110|      __FUNCTION__);
 2385|       |
 2386|    110|  return result;
 2387|    110|}
exec.c:jmp_if:
  160|    110|{
  161|    110|  int32_t off = 0;
  162|       |
  163|    110|  if (condition)
  ------------------
  |  Branch (163:7): [True: 0, False: 110]
  ------------------
  164|      0|  {
  165|       |    // The condition is true, the instruction pointer (ip) is incremented in
  166|       |    // the amount specified by the jump's offset, which is a int32_t following
  167|       |    // the jump opcode. The ip is currently past the opcode and pointing to
  168|       |    // the offset.
  169|       |
  170|       |    // Copy the offset from the instruction stream to a local variable.
  171|      0|    off = yr_unaligned_u32(ip);
  172|       |
  173|       |    // The offset is relative to the jump opcode, but now the ip is one byte
  174|       |    // past the opcode, so we need to decrement it by one.
  175|      0|    off -= 1;
  176|      0|  }
  177|    110|  else
  178|    110|  {
  179|       |    // The condition is false, the execution flow proceeds with the instruction
  180|       |    // right after the jump.
  181|    110|    off = sizeof(int32_t);
  182|    110|  }
  183|       |
  184|    110|  return ip + off;
  185|    110|}

yr_get_pe_header:
   48|    110|{
   49|    110|  PIMAGE_DOS_HEADER mz_header;
   50|    110|  PIMAGE_NT_HEADERS32 pe_header;
   51|       |
   52|    110|  size_t headers_size = 0;
   53|       |
   54|    110|  if (buffer_length < sizeof(IMAGE_DOS_HEADER))
  ------------------
  |  Branch (54:7): [True: 0, False: 110]
  ------------------
   55|      0|    return NULL;
   56|       |
   57|    110|  mz_header = (PIMAGE_DOS_HEADER) buffer;
   58|       |
   59|    110|  if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   88|    110|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   81|    110|#define IMAGE_DOS_SIGNATURE    0x5A4D      // MZ
  ------------------
  |  Branch (59:7): [True: 2, False: 108]
  ------------------
   60|      2|    return NULL;
   61|       |
   62|    108|  if ((int32_t) yr_le32toh(mz_header->e_lfanew) < 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (62:7): [True: 0, False: 108]
  ------------------
   63|      0|    return NULL;
   64|       |
   65|    108|  headers_size = yr_le32toh(mz_header->e_lfanew) +
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
   66|    108|                 sizeof(pe_header->Signature) + sizeof(IMAGE_FILE_HEADER);
   67|       |
   68|    108|  if (buffer_length < headers_size)
  ------------------
  |  Branch (68:7): [True: 0, False: 108]
  ------------------
   69|      0|    return NULL;
   70|       |
   71|    108|  pe_header = (PIMAGE_NT_HEADERS32)(buffer + yr_le32toh(mz_header->e_lfanew));
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
   72|       |
   73|    108|  headers_size += sizeof(IMAGE_OPTIONAL_HEADER32);
   74|       |
   75|    108|  if (yr_le32toh(pe_header->Signature) == IMAGE_NT_SIGNATURE &&
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(pe_header->Signature) == IMAGE_NT_SIGNATURE &&
  ------------------
  |  |   85|    216|#define IMAGE_NT_SIGNATURE     0x00004550  // PE00
  ------------------
  |  Branch (75:7): [True: 108, False: 0]
  ------------------
   76|    108|      (yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_I386 ||
  ------------------
  |  |   88|    108|#define yr_le16toh(x) (x)
  ------------------
                    (yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_I386 ||
  ------------------
  |  |  172|    216|#define IMAGE_FILE_MACHINE_I386          0x014c
  ------------------
  |  Branch (76:8): [True: 0, False: 108]
  ------------------
   77|    108|       yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_AMD64) &&
  ------------------
  |  |   88|    108|#define yr_le16toh(x) (x)
  ------------------
                     yr_le16toh(pe_header->FileHeader.Machine) == IMAGE_FILE_MACHINE_AMD64) &&
  ------------------
  |  |  167|    108|#define IMAGE_FILE_MACHINE_AMD64         0x8664
  ------------------
  |  Branch (77:8): [True: 61, False: 47]
  ------------------
   78|    108|      buffer_length > headers_size)
  ------------------
  |  Branch (78:7): [True: 61, False: 0]
  ------------------
   79|     61|  {
   80|     61|    return pe_header;
   81|     61|  }
   82|     47|  else
   83|     47|  {
   84|     47|    return NULL;
   85|     47|  }
   86|    108|}
yr_pe_rva_to_offset:
   92|     61|{
   93|     61|  int i = 0;
   94|     61|  PIMAGE_SECTION_HEADER section;
   95|     61|  DWORD section_rva;
   96|     61|  DWORD section_offset;
   97|       |
   98|     61|  section = IMAGE_FIRST_SECTION(pe_header);
  ------------------
  |  |  369|     61|  ((PIMAGE_SECTION_HEADER)(                                             \
  |  |  370|     61|      (BYTE*) ntheader + offsetof(IMAGE_NT_HEADERS32, OptionalHeader) + \
  |  |  371|     61|      yr_le16toh(((PIMAGE_NT_HEADERS32)(ntheader))                      \
  |  |  ------------------
  |  |  |  |   88|     61|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  372|     61|                     ->FileHeader.SizeOfOptionalHeader)))
  ------------------
   99|     61|  section_rva = 0;
  100|     61|  section_offset = 0;
  101|       |
  102|    122|  while (i < MIN(yr_le16toh(pe_header->FileHeader.NumberOfSections), 60))
  ------------------
  |  |   42|    122|#define MIN(x, y) ((x < y) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (42:20): [True: 122, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (102:10): [True: 61, False: 61]
  ------------------
  103|     61|  {
  104|     61|    if ((uint8_t*) section - (uint8_t*) pe_header +
  ------------------
  |  Branch (104:9): [True: 61, False: 0]
  ------------------
  105|     61|            sizeof(IMAGE_SECTION_HEADER) <
  106|     61|        buffer_length)
  107|     61|    {
  108|     61|      if (rva >= yr_le32toh(section->VirtualAddress) &&
  ------------------
  |  |   89|    122|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (108:11): [True: 18, False: 43]
  ------------------
  109|     61|          section_rva <= yr_le32toh(section->VirtualAddress))
  ------------------
  |  |   89|     18|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (109:11): [True: 18, False: 0]
  ------------------
  110|     18|      {
  111|     18|        section_rva = yr_le32toh(section->VirtualAddress);
  ------------------
  |  |   89|     18|#define yr_le32toh(x) (x)
  ------------------
  112|     18|        section_offset = yr_le32toh(section->PointerToRawData);
  ------------------
  |  |   89|     18|#define yr_le32toh(x) (x)
  ------------------
  113|     18|      }
  114|       |
  115|     61|      section++;
  116|     61|      i++;
  117|     61|    }
  118|      0|    else
  119|      0|    {
  120|      0|      return 0;
  121|      0|    }
  122|     61|  }
  123|       |
  124|     61|  return section_offset + (rva - section_rva);
  125|     61|}
yr_get_elf_type:
  128|     49|{
  129|     49|  elf_ident_t* elf_ident;
  130|       |
  131|     49|  if (buffer_length < sizeof(elf_ident_t))
  ------------------
  |  Branch (131:7): [True: 0, False: 49]
  ------------------
  132|      0|    return 0;
  133|       |
  134|     49|  elf_ident = (elf_ident_t*) buffer;
  135|       |
  136|     49|  if (yr_le32toh(elf_ident->magic) != ELF_MAGIC)
  ------------------
  |  |   89|     49|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(elf_ident->magic) != ELF_MAGIC)
  ------------------
  |  |   50|     49|#define ELF_MAGIC 0x464C457F
  ------------------
  |  Branch (136:7): [True: 49, False: 0]
  ------------------
  137|     49|  {
  138|     49|    return 0;
  139|     49|  }
  140|       |
  141|      0|  switch (elf_ident->_class)
  142|      0|  {
  143|      0|  case ELF_CLASS_32:
  ------------------
  |  |   76|      0|#define ELF_CLASS_32   0x0001  // 32bit file
  ------------------
  |  Branch (143:3): [True: 0, False: 0]
  ------------------
  144|      0|    if (buffer_length < sizeof(elf32_header_t))
  ------------------
  |  Branch (144:9): [True: 0, False: 0]
  ------------------
  145|      0|    {
  146|      0|      return 0;
  147|      0|    }
  148|      0|    break;
  149|      0|  case ELF_CLASS_64:
  ------------------
  |  |   77|      0|#define ELF_CLASS_64   0x0002  // 64bit file
  ------------------
  |  Branch (149:3): [True: 0, False: 0]
  ------------------
  150|      0|    if (buffer_length < sizeof(elf64_header_t))
  ------------------
  |  Branch (150:9): [True: 0, False: 0]
  ------------------
  151|      0|    {
  152|      0|      return 0;
  153|      0|    }
  154|      0|    break;
  155|      0|  default:
  ------------------
  |  Branch (155:3): [True: 0, False: 0]
  ------------------
  156|       |    /* Unexpected class */
  157|      0|    return 0;
  158|      0|  }
  159|       |
  160|      0|  return elf_ident->_class;
  161|      0|}
yr_get_entry_point_offset:
  351|    110|{
  352|    110|  PIMAGE_NT_HEADERS32 pe_header;
  353|    110|  elf32_header_t* elf_header32;
  354|    110|  elf64_header_t* elf_header64;
  355|       |
  356|    110|  pe_header = yr_get_pe_header(buffer, buffer_length);
  357|       |
  358|    110|  if (pe_header != NULL)
  ------------------
  |  Branch (358:7): [True: 61, False: 49]
  ------------------
  359|     61|  {
  360|     61|    return yr_pe_rva_to_offset(
  361|     61|        pe_header,
  362|     61|        yr_le32toh(pe_header->OptionalHeader.AddressOfEntryPoint),
  ------------------
  |  |   89|     61|#define yr_le32toh(x) (x)
  ------------------
  363|     61|        buffer_length - ((uint8_t*) pe_header - buffer));
  364|     61|  }
  365|       |
  366|     49|  switch (yr_get_elf_type(buffer, buffer_length))
  ------------------
  |  Branch (366:11): [True: 49, False: 0]
  ------------------
  367|     49|  {
  368|      0|  case ELF_CLASS_32:
  ------------------
  |  |   76|      0|#define ELF_CLASS_32   0x0001  // 32bit file
  ------------------
  |  Branch (368:3): [True: 0, False: 49]
  ------------------
  369|      0|    elf_header32 = (elf32_header_t*) buffer;
  370|      0|    return yr_elf_rva_to_offset_32(
  371|      0|        elf_header32, yr_le32toh(elf_header32->entry), buffer_length);
  ------------------
  |  |   89|      0|#define yr_le32toh(x) (x)
  ------------------
  372|       |
  373|      0|  case ELF_CLASS_64:
  ------------------
  |  |   77|      0|#define ELF_CLASS_64   0x0002  // 64bit file
  ------------------
  |  Branch (373:3): [True: 0, False: 49]
  ------------------
  374|      0|    elf_header64 = (elf64_header_t*) buffer;
  375|      0|    return yr_elf_rva_to_offset_64(
  376|      0|        elf_header64, yr_le64toh(elf_header64->entry), buffer_length);
  ------------------
  |  |   90|      0|#define yr_le64toh(x) (x)
  ------------------
  377|     49|  }
  378|       |
  379|     49|  return YR_UNDEFINED;
  ------------------
  |  |   38|     49|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  380|     49|}

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|    128|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|    128|  yyssp++;
 1949|       |
 1950|       |
 1951|       |/*--------------------------------------------------------------------.
 1952|       || yysetstate -- set current state (the top of the stack) to yystate.  |
 1953|       |`--------------------------------------------------------------------*/
 1954|    130|yysetstate:
 1955|    130|  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  ------------------
  |  | 1461|    130|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 1956|    130|  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  ------------------
  |  |  749|    130|#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|    130|  YY_IGNORE_USELESS_CAST_BEGIN
 1958|    130|  *yyssp = YY_CAST (yy_state_t, yystate);
  ------------------
  |  |  210|    130|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 1959|    130|  YY_IGNORE_USELESS_CAST_END
 1960|    130|  YY_STACK_PRINT (yyss, yyssp);
 1961|       |
 1962|    130|  if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (1962:7): [True: 0, False: 130]
  ------------------
 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|    130|#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 2024|       |
 2025|       |
 2026|    130|  if (yystate == YYFINAL)
  ------------------
  |  |  879|    130|#define YYFINAL  2
  ------------------
  |  Branch (2026:7): [True: 2, False: 128]
  ------------------
 2027|      2|    YYACCEPT;
  ------------------
  |  | 1309|      2|#define YYACCEPT        goto yyacceptlab
  ------------------
 2028|       |
 2029|    128|  goto yybackup;
 2030|       |
 2031|       |
 2032|       |/*-----------.
 2033|       || yybackup.  |
 2034|       |`-----------*/
 2035|    128|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|    128|  yyn = yypact[yystate];
 2041|    128|  if (yypact_value_is_default (yyn))
  ------------------
  |  | 1020|    128|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  | 1017|    128|#define YYPACT_NINF (-172)
  |  |  ------------------
  |  |  |  Branch (1020:3): [True: 42, False: 86]
  |  |  ------------------
  ------------------
 2042|     42|    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|     86|  if (yychar == YYEMPTY)
  ------------------
  |  |   52|     86|#define yychar       yara_yychar
  ------------------
                if (yychar == YYEMPTY)
  ------------------
  |  |  312|     86|#define YYEMPTY -2
  ------------------
  |  Branch (2047:7): [True: 62, False: 24]
  ------------------
 2048|     62|    {
 2049|     62|      YYDPRINTF ((stderr, "Reading a token\n"));
  ------------------
  |  | 1461|     62|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 2050|     62|      yychar = yylex (&yylval, yyscanner, compiler);
  ------------------
  |  |   52|     62|#define yychar       yara_yychar
  ------------------
                    yychar = yylex (&yylval, yyscanner, compiler);
  ------------------
  |  |   48|     62|#define yylex        yara_yylex
  ------------------
 2051|     62|    }
 2052|       |
 2053|     86|  if (yychar <= _END_OF_FILE_)
  ------------------
  |  |   52|     86|#define yychar       yara_yychar
  ------------------
                if (yychar <= _END_OF_FILE_)
  ------------------
  |  |  313|     86|#define _END_OF_FILE_ 0
  ------------------
  |  Branch (2053:7): [True: 2, False: 84]
  ------------------
 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|     84|  else if (yychar == YYerror)
  ------------------
  |  |   52|     84|#define yychar       yara_yychar
  ------------------
                else if (yychar == YYerror)
  ------------------
  |  |  314|     84|#define YYerror 256
  ------------------
  |  Branch (2059:12): [True: 0, False: 84]
  ------------------
 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|     84|  else
 2070|     84|    {
 2071|     84|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  899|     84|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  |  893|     84|#define YYMAXUTOK   319
  |  |  ------------------
  |  |  |  Branch (899:4): [True: 84, False: 0]
  |  |  |  Branch (899:18): [True: 84, False: 0]
  |  |  ------------------
  |  |  900|     84|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  |  210|     84|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  |  901|     84|   : YYSYMBOL_YYUNDEF)
  ------------------
 2072|     84|      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 2073|     84|    }
 2074|       |
 2075|       |  /* If the proper action on seeing token YYTOKEN is to reduce or to
 2076|       |     detect an error, take that action.  */
 2077|     86|  yyn += yytoken;
 2078|     86|  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  ------------------
  |  |  881|     86|#define YYLAST   476
  ------------------
  |  Branch (2078:7): [True: 0, False: 86]
  |  Branch (2078:18): [True: 0, False: 86]
  |  Branch (2078:34): [True: 22, False: 64]
  ------------------
 2079|     22|    goto yydefault;
 2080|     64|  yyn = yytable[yyn];
 2081|     64|  if (yyn <= 0)
  ------------------
  |  Branch (2081:7): [True: 2, False: 62]
  ------------------
 2082|      2|    {
 2083|      2|      if (yytable_value_is_error (yyn))
  ------------------
  |  | 1025|      2|  0
  |  |  ------------------
  |  |  |  Branch (1025:3): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2084|      0|        goto yyerrlab;
 2085|      2|      yyn = -yyn;
 2086|      2|      goto yyreduce;
 2087|      2|    }
 2088|       |
 2089|       |  /* Count tokens shifted since error; after three, turn off error
 2090|       |     status.  */
 2091|     62|  if (yyerrstatus)
  ------------------
  |  Branch (2091:7): [True: 0, False: 62]
  ------------------
 2092|      0|    yyerrstatus--;
 2093|       |
 2094|       |  /* Shift the lookahead token.  */
 2095|     62|  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 2096|     62|  yystate = yyn;
 2097|     62|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 2098|     62|  *++yyvsp = yylval;
 2099|     62|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 2100|       |
 2101|       |  /* Discard the shifted token.  */
 2102|     62|  yychar = YYEMPTY;
  ------------------
  |  |   52|     62|#define yychar       yara_yychar
  ------------------
                yychar = YYEMPTY;
  ------------------
  |  |  312|     62|#define YYEMPTY -2
  ------------------
 2103|     62|  goto yynewstate;
 2104|       |
 2105|       |
 2106|       |/*-----------------------------------------------------------.
 2107|       || yydefault -- do the default action for the current state.  |
 2108|       |`-----------------------------------------------------------*/
 2109|     64|yydefault:
 2110|     64|  yyn = yydefact[yystate];
 2111|     64|  if (yyn == 0)
  ------------------
  |  Branch (2111:7): [True: 0, False: 64]
  ------------------
 2112|      0|    goto yyerrlab;
 2113|     64|  goto yyreduce;
 2114|       |
 2115|       |
 2116|       |/*-----------------------------.
 2117|       || yyreduce -- do a reduction.  |
 2118|       |`-----------------------------*/
 2119|     66|yyreduce:
 2120|       |  /* yyn is the number of a rule to reduce with.  */
 2121|     66|  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|     66|  yyval = yyvsp[1-yylen];
 2132|       |
 2133|       |
 2134|     66|  YY_REDUCE_PRINT (yyn);
 2135|     66|  switch (yyn)
 2136|     66|    {
 2137|      0|  case 8: /* rules: rules "end of included file"  */
  ------------------
  |  Branch (2137:3): [True: 0, False: 66]
  ------------------
 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: 64]
  ------------------
 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|      2|  case 10: /* @1: %empty  */
  ------------------
  |  Branch (2157:3): [True: 2, False: 64]
  ------------------
 2158|      2|#line 388 "libyara/grammar.y"
 2159|      2|      {
 2160|      2|        fail_if_error(yr_parser_reduce_rule_declaration_phase_1(
  ------------------
  |  |  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|    }
  ------------------
 2161|      2|            yyscanner, (int32_t) (yyvsp[-2].integer), (yyvsp[0].c_string), &(yyval.rule)));
 2162|      2|      }
 2163|      0|#line 2164 "libyara/grammar.c"
 2164|      0|    break;
 2165|       |
 2166|      2|  case 11: /* $@2: %empty  */
  ------------------
  |  Branch (2166:3): [True: 2, False: 64]
  ------------------
 2167|      2|#line 393 "libyara/grammar.y"
 2168|      2|      {
 2169|      2|        YR_RULE* rule = (YR_RULE*) yr_arena_ref_to_ptr(
 2170|      2|            compiler->arena, &(yyvsp[-4].rule));
 2171|       |
 2172|      2|        rule->tags = (char*) yr_arena_ref_to_ptr(
 2173|      2|            compiler->arena, &(yyvsp[-3].tag));
 2174|       |
 2175|      2|        rule->metas = (YR_META*) yr_arena_ref_to_ptr(
 2176|      2|            compiler->arena, &(yyvsp[-1].meta));
 2177|       |
 2178|      2|        rule->strings = (YR_STRING*) yr_arena_ref_to_ptr(
 2179|      2|            compiler->arena, &(yyvsp[0].string));
 2180|      2|      }
 2181|      2|#line 2182 "libyara/grammar.c"
 2182|      2|    break;
 2183|       |
 2184|      2|  case 12: /* rule: rule_modifiers "<rule>" "identifier" @1 tags '{' meta strings $@2 condition '}'  */
  ------------------
  |  Branch (2184:3): [True: 2, False: 64]
  ------------------
 2185|      2|#line 407 "libyara/grammar.y"
 2186|      2|      {
 2187|      2|        int result = yr_parser_reduce_rule_declaration_phase_2(
 2188|      2|            yyscanner, &(yyvsp[-7].rule)); // rule created in phase 1
 2189|       |
 2190|      2|        yr_free((yyvsp[-8].c_string));
 2191|       |
 2192|      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|    }
  ------------------
 2193|      2|      }
 2194|      0|#line 2195 "libyara/grammar.c"
 2195|      0|    break;
 2196|       |
 2197|      2|  case 13: /* meta: %empty  */
  ------------------
  |  Branch (2197:3): [True: 2, False: 64]
  ------------------
 2198|      2|#line 420 "libyara/grammar.y"
 2199|      2|      {
 2200|      2|        (yyval.meta) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
 2201|      2|      }
 2202|      2|#line 2203 "libyara/grammar.c"
 2203|      2|    break;
 2204|       |
 2205|      0|  case 14: /* meta: "<meta>" ':' meta_declarations  */
  ------------------
  |  Branch (2205:3): [True: 0, False: 66]
  ------------------
 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|      2|  case 15: /* strings: %empty  */
  ------------------
  |  Branch (2220:3): [True: 2, False: 64]
  ------------------
 2221|      2|#line 439 "libyara/grammar.y"
 2222|      2|      {
 2223|      2|        (yyval.string) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
 2224|      2|      }
 2225|      2|#line 2226 "libyara/grammar.c"
 2226|      2|    break;
 2227|       |
 2228|      0|  case 16: /* strings: "<strings>" ':' string_declarations  */
  ------------------
  |  Branch (2228:3): [True: 0, False: 66]
  ------------------
 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|      2|  case 18: /* rule_modifiers: %empty  */
  ------------------
  |  Branch (2243:3): [True: 2, False: 64]
  ------------------
 2244|      2|#line 462 "libyara/grammar.y"
 2245|      2|                                       { (yyval.integer) = 0;  }
 2246|      2|#line 2247 "libyara/grammar.c"
 2247|      2|    break;
 2248|       |
 2249|      0|  case 19: /* rule_modifiers: rule_modifiers rule_modifier  */
  ------------------
  |  Branch (2249:3): [True: 0, False: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      2|  case 22: /* tags: %empty  */
  ------------------
  |  Branch (2267:3): [True: 2, False: 64]
  ------------------
 2268|      2|#line 475 "libyara/grammar.y"
 2269|      2|      {
 2270|      2|        (yyval.tag) = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
 2271|      2|      }
 2272|      2|#line 2273 "libyara/grammar.c"
 2273|      2|    break;
 2274|       |
 2275|      0|  case 23: /* tags: ':' tag_list  */
  ------------------
  |  Branch (2275:3): [True: 0, False: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      6|  case 65: /* identifier: "identifier"  */
  ------------------
  |  Branch (2846:3): [True: 6, False: 60]
  ------------------
 2847|      6|#line 914 "libyara/grammar.y"
 2848|      6|      {
 2849|      6|        YR_EXPRESSION expr;
 2850|       |
 2851|      6|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      6|#define ERROR_SUCCESS 0
  ------------------
 2852|      6|        int var_index = yr_parser_lookup_loop_variable(yyscanner, (yyvsp[0].c_string), &expr);
 2853|       |
 2854|      6|        if (var_index >= 0)
  ------------------
  |  Branch (2854:13): [True: 0, False: 6]
  ------------------
 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|      6|        else
 2869|      6|        {
 2870|       |          // Search for identifier within the global namespace, where the
 2871|       |          // externals variables reside.
 2872|       |
 2873|      6|          YR_OBJECT* object = (YR_OBJECT*) yr_hash_table_lookup(
 2874|      6|              compiler->objects_table, (yyvsp[0].c_string), NULL);
 2875|       |
 2876|      6|          YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
 2877|      6|              compiler->arena,
 2878|      6|              YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      6|#define YR_NAMESPACES_TABLE         0
  ------------------
 2879|      6|              compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
 2880|       |
 2881|      6|          if (object == NULL)
  ------------------
  |  Branch (2881:15): [True: 6, False: 0]
  ------------------
 2882|      6|          {
 2883|       |            // If not found, search within the current namespace.
 2884|      6|            object = (YR_OBJECT*) yr_hash_table_lookup(
 2885|      6|                compiler->objects_table, (yyvsp[0].c_string), ns->name);
 2886|      6|          }
 2887|       |
 2888|      6|          if (object != NULL)
  ------------------
  |  Branch (2888:15): [True: 6, False: 0]
  ------------------
 2889|      6|          {
 2890|      6|            YR_ARENA_REF ref;
 2891|       |
 2892|      6|            result = _yr_compiler_store_string(
 2893|      6|                compiler, (yyvsp[0].c_string), &ref);
 2894|       |
 2895|      6|            if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      6|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (2895:17): [True: 6, False: 0]
  ------------------
 2896|      6|              result = yr_parser_emit_with_arg_reloc(
 2897|      6|                  yyscanner,
 2898|      6|                  OP_OBJ_LOAD,
  ------------------
  |  |   64|      6|#define OP_OBJ_LOAD                   16
  ------------------
 2899|      6|                  yr_arena_ref_to_ptr(compiler->arena, &ref),
 2900|      6|                  NULL,
 2901|      6|                  NULL);
 2902|       |
 2903|      6|            (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      6|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 2904|      6|            (yyval.expression).value.object = object;
 2905|      6|            (yyval.expression).identifier.ptr = NULL;
 2906|      6|            (yyval.expression).identifier.ref = ref;
 2907|      6|          }
 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|      6|        }
 2937|       |
 2938|      6|        yr_free((yyvsp[0].c_string));
 2939|       |
 2940|      6|        fail_if_error(result);
  ------------------
  |  |  135|      6|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|     12|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      6|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 6]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      6|    { \
  |  |  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|      6|      }
 2942|      0|#line 2943 "libyara/grammar.c"
 2943|      0|    break;
 2944|       |
 2945|     10|  case 66: /* identifier: identifier '.' "identifier"  */
  ------------------
  |  Branch (2945:3): [True: 10, False: 56]
  ------------------
 2946|     10|#line 1009 "libyara/grammar.y"
 2947|     10|      {
 2948|     10|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|     10|#define ERROR_SUCCESS 0
  ------------------
 2949|     10|        YR_OBJECT* field = NULL;
 2950|       |
 2951|     10|        if ((yyvsp[-2].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|     20|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (2951:13): [True: 10, False: 0]
  ------------------
 2952|     10|            (yyvsp[-2].expression).value.object->type == OBJECT_TYPE_STRUCTURE)
  ------------------
  |  |   60|     10|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (2952:13): [True: 10, False: 0]
  ------------------
 2953|     10|        {
 2954|     10|          field = yr_object_lookup_field((yyvsp[-2].expression).value.object, (yyvsp[0].c_string));
 2955|       |
 2956|     10|          if (field != NULL)
  ------------------
  |  Branch (2956:15): [True: 10, False: 0]
  ------------------
 2957|     10|          {
 2958|     10|            YR_ARENA_REF ref;
 2959|       |
 2960|     10|            result = _yr_compiler_store_string(
 2961|     10|                compiler, (yyvsp[0].c_string), &ref);
 2962|       |
 2963|     10|            if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|     10|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (2963:17): [True: 10, False: 0]
  ------------------
 2964|     10|              result = yr_parser_emit_with_arg_reloc(
 2965|     10|                  yyscanner,
 2966|     10|                  OP_OBJ_FIELD,
  ------------------
  |  |   66|     10|#define OP_OBJ_FIELD                  18
  ------------------
 2967|     10|                  yr_arena_ref_to_ptr(compiler->arena, &ref),
 2968|     10|                  NULL,
 2969|     10|                  NULL);
 2970|       |
 2971|     10|            (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|     10|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 2972|     10|            (yyval.expression).value.object = field;
 2973|     10|            (yyval.expression).identifier.ref = ref;
 2974|     10|            (yyval.expression).identifier.ptr = NULL;
 2975|     10|          }
 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|     10|        }
 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|     10|        yr_free((yyvsp[0].c_string));
 2991|       |
 2992|     10|        fail_if_error(result);
  ------------------
  |  |  135|     10|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|     20|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|     10|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 10]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|     10|    { \
  |  |  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|     10|      }
 2994|      0|#line 2995 "libyara/grammar.c"
 2995|      0|    break;
 2996|       |
 2997|      4|  case 67: /* identifier: identifier '[' primary_expression ']'  */
  ------------------
  |  Branch (2997:3): [True: 4, False: 62]
  ------------------
 2998|      4|#line 1057 "libyara/grammar.y"
 2999|      4|      {
 3000|      4|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      4|#define ERROR_SUCCESS 0
  ------------------
 3001|      4|        YR_OBJECT_ARRAY* array;
 3002|      4|        YR_OBJECT_DICTIONARY* dict;
 3003|       |
 3004|      4|        if ((yyvsp[-3].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      8|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (3004:13): [True: 4, False: 0]
  ------------------
 3005|      4|            (yyvsp[-3].expression).value.object->type == OBJECT_TYPE_ARRAY)
  ------------------
  |  |   61|      4|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (3005:13): [True: 4, False: 0]
  ------------------
 3006|      4|        {
 3007|      4|          if ((yyvsp[-1].expression).type != EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      4|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3007:15): [True: 0, False: 4]
  ------------------
 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|      4|          fail_if_error(result);
  ------------------
  |  |  135|      4|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      8|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      4|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 4]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      4|    { \
  |  |  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|      4|          result = yr_parser_emit(
 3017|      4|              yyscanner, OP_INDEX_ARRAY, NULL);
  ------------------
  |  |   67|      4|#define OP_INDEX_ARRAY                19
  ------------------
 3018|       |
 3019|      4|          array = object_as_array((yyvsp[-3].expression).value.object);
  ------------------
  |  |  903|      4|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
 3020|       |
 3021|      4|          (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      4|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 3022|      4|          (yyval.expression).value.object = array->prototype_item;
 3023|      4|          (yyval.expression).identifier.ptr = array->identifier;
 3024|      4|          (yyval.expression).identifier.ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      4|  (YR_ARENA_REF)           \
  |  |   44|      4|  {                        \
  |  |   45|      4|    UINT32_MAX, UINT32_MAX \
  |  |   46|      4|  }
  ------------------
 3025|      4|        }
 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|      4|        fail_if_error(result);
  ------------------
  |  |  135|      4|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      8|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      4|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 4]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      4|    { \
  |  |  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|      4|      }
 3058|      0|#line 3059 "libyara/grammar.c"
 3059|      0|    break;
 3060|       |
 3061|      2|  case 68: /* identifier: identifier '(' arguments ')'  */
  ------------------
  |  Branch (3061:3): [True: 2, False: 64]
  ------------------
 3062|      2|#line 1118 "libyara/grammar.y"
 3063|      2|      {
 3064|      2|        YR_ARENA_REF ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|      2|  (YR_ARENA_REF)           \
  |  |   44|      2|  {                        \
  |  |   45|      2|    UINT32_MAX, UINT32_MAX \
  |  |   46|      2|  }
  ------------------
 3065|      2|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 3066|       |
 3067|      2|        if ((yyvsp[-3].expression).type == EXPRESSION_TYPE_OBJECT &&
  ------------------
  |  |   50|      4|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (3067:13): [True: 2, False: 0]
  ------------------
 3068|      2|            (yyvsp[-3].expression).value.object->type == OBJECT_TYPE_FUNCTION)
  ------------------
  |  |   62|      2|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (3068:13): [True: 2, False: 0]
  ------------------
 3069|      2|        {
 3070|      2|          YR_OBJECT_FUNCTION* function = object_as_function((yyvsp[-3].expression).value.object);
  ------------------
  |  |  905|      2|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
 3071|       |
 3072|      2|          result = yr_parser_check_types(compiler, function, (yyvsp[-1].c_string));
 3073|       |
 3074|      2|          if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (3074:15): [True: 2, False: 0]
  ------------------
 3075|      2|            result = _yr_compiler_store_string(
 3076|      2|                compiler, (yyvsp[-1].c_string), &ref);
 3077|       |
 3078|      2|          if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (3078:15): [True: 2, False: 0]
  ------------------
 3079|      2|            result = yr_parser_emit_with_arg_reloc(
 3080|      2|                yyscanner,
 3081|      2|                OP_CALL,
  ------------------
  |  |   63|      2|#define OP_CALL                       15
  ------------------
 3082|      2|                yr_arena_ref_to_ptr(compiler->arena, &ref),
 3083|      2|                NULL,
 3084|      2|                NULL);
 3085|       |
 3086|      2|          (yyval.expression).type = EXPRESSION_TYPE_OBJECT;
  ------------------
  |  |   50|      2|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
 3087|      2|          (yyval.expression).value.object = function->return_obj;
 3088|      2|          (yyval.expression).identifier.ref = ref;
 3089|      2|          (yyval.expression).identifier.ptr = NULL;
 3090|      2|        }
 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|      2|        yr_free((yyvsp[-1].c_string));
 3100|       |
 3101|      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|    }
  ------------------
 3102|      2|      }
 3103|      0|#line 3104 "libyara/grammar.c"
 3104|      0|    break;
 3105|       |
 3106|      0|  case 69: /* arguments: %empty  */
  ------------------
  |  Branch (3106:3): [True: 0, False: 66]
  ------------------
 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|      2|  case 70: /* arguments: arguments_list  */
  ------------------
  |  Branch (3112:3): [True: 2, False: 64]
  ------------------
 3113|      2|#line 1163 "libyara/grammar.y"
 3114|      2|                      { (yyval.c_string) = (yyvsp[0].c_string); }
 3115|      2|#line 3116 "libyara/grammar.c"
 3116|      2|    break;
 3117|       |
 3118|      2|  case 71: /* arguments_list: expression  */
  ------------------
  |  Branch (3118:3): [True: 2, False: 64]
  ------------------
 3119|      2|#line 1168 "libyara/grammar.y"
 3120|      2|      {
 3121|      2|        (yyval.c_string) = (char*) yr_malloc(YR_MAX_FUNCTION_ARGS + 1);
  ------------------
  |  |  131|      2|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3122|       |
 3123|      2|        if ((yyval.c_string) == NULL)
  ------------------
  |  Branch (3123:13): [True: 0, False: 2]
  ------------------
 3124|      2|          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|      2|        switch((yyvsp[0].expression).type)
 3127|      2|        {
 3128|      2|          case EXPRESSION_TYPE_INTEGER:
  ------------------
  |  |   47|      2|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (3128:11): [True: 2, False: 0]
  ------------------
 3129|      2|            strlcpy((yyval.c_string), "i", YR_MAX_FUNCTION_ARGS);
  ------------------
  |  |  131|      2|#define YR_MAX_FUNCTION_ARGS 128
  ------------------
 3130|      2|            break;
 3131|      0|          case EXPRESSION_TYPE_FLOAT:
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (3131:11): [True: 0, False: 2]
  ------------------
 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: 2]
  ------------------
 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: 2]
  ------------------
 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: 2]
  ------------------
 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: 2]
  ------------------
 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: 2]
  ------------------
 3150|       |            // An unknown expression type is OK iff an error ocurred.
 3151|      0|            assert(compiler->last_error != ERROR_SUCCESS);
 3152|      2|        }
 3153|      2|      }
 3154|      2|#line 3155 "libyara/grammar.c"
 3155|      2|    break;
 3156|       |
 3157|      2|  case 72: /* arguments_list: arguments_list ',' expression  */
  ------------------
  |  Branch (3157:3): [True: 0, False: 66]
  ------------------
 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: 66]
  ------------------
 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|      2|  case 74: /* boolean_expression: expression  */
  ------------------
  |  Branch (3265:3): [True: 2, False: 64]
  ------------------
 3266|      2|#line 1311 "libyara/grammar.y"
 3267|      2|      {
 3268|      2|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      2|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (3268:13): [True: 0, False: 2]
  ------------------
 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|      2|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      2|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3285|      2|      }
 3286|      0|#line 3287 "libyara/grammar.c"
 3287|      0|    break;
 3288|       |
 3289|      0|  case 75: /* expression: "<true>"  */
  ------------------
  |  Branch (3289:3): [True: 0, False: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      2|  case 108: /* expression: primary_expression "==" primary_expression  */
  ------------------
  |  Branch (3976:3): [True: 2, False: 64]
  ------------------
 3977|      2|#line 1946 "libyara/grammar.y"
 3978|      2|      {
 3979|      2|        fail_if_error(yr_parser_reduce_operation(
  ------------------
  |  |  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|    }
  ------------------
 3980|      2|            yyscanner, "==", (yyvsp[-2].expression), (yyvsp[0].expression)));
 3981|       |
 3982|      2|        (yyval.expression).type = EXPRESSION_TYPE_BOOLEAN;
  ------------------
  |  |   46|      2|#define EXPRESSION_TYPE_BOOLEAN    1
  ------------------
 3983|      2|      }
 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: 66]
  ------------------
 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|      2|  case 110: /* expression: primary_expression  */
  ------------------
  |  Branch (3998:3): [True: 2, False: 64]
  ------------------
 3999|      2|#line 1960 "libyara/grammar.y"
 4000|      2|      {
 4001|      2|        (yyval.expression) = (yyvsp[0].expression);
 4002|      2|      }
 4003|      2|#line 4004 "libyara/grammar.c"
 4004|      2|    break;
 4005|       |
 4006|      0|  case 111: /* expression: '(' expression ')'  */
  ------------------
  |  Branch (4006:3): [True: 0, False: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      4|  case 146: /* primary_expression: "integer number"  */
  ------------------
  |  Branch (4645:3): [True: 4, False: 62]
  ------------------
 4646|      4|#line 2519 "libyara/grammar.y"
 4647|      4|      {
 4648|      4|        fail_if_error(yr_parser_emit_push_const(yyscanner, (yyvsp[0].integer)));
  ------------------
  |  |  135|      4|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|      8|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      4|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 4]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      4|    { \
  |  |  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|      4|        (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      4|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4651|      4|        (yyval.expression).value.integer = (yyvsp[0].integer);
 4652|      4|      }
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      6|  case 155: /* primary_expression: identifier  */
  ------------------
  |  Branch (4798:3): [True: 6, False: 60]
  ------------------
 4799|      6|#line 2636 "libyara/grammar.y"
 4800|      6|      {
 4801|      6|        int result = ERROR_SUCCESS;
  ------------------
  |  |   40|      6|#define ERROR_SUCCESS 0
  ------------------
 4802|       |
 4803|      6|        if ((yyvsp[0].expression).type == EXPRESSION_TYPE_OBJECT)
  ------------------
  |  |   50|      6|#define EXPRESSION_TYPE_OBJECT     16
  ------------------
  |  Branch (4803:13): [True: 6, False: 0]
  ------------------
 4804|      6|        {
 4805|      6|          result = yr_parser_emit(
 4806|      6|              yyscanner, OP_OBJ_VALUE, NULL);
  ------------------
  |  |   65|      6|#define OP_OBJ_VALUE                  17
  ------------------
 4807|       |
 4808|      6|          switch((yyvsp[0].expression).value.object->type)
 4809|      6|          {
 4810|      6|            case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|      6|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (4810:13): [True: 6, False: 0]
  ------------------
 4811|      6|              (yyval.expression).type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      6|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 4812|      6|              (yyval.expression).value.integer = (yyvsp[0].expression).value.object->value.i;
 4813|      6|              break;
 4814|      0|            case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (4814:13): [True: 0, False: 6]
  ------------------
 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: 6]
  ------------------
 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: 6]
  ------------------
 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|      6|          }
 4834|      6|        }
 4835|      0|        else
 4836|      0|        {
 4837|      0|          (yyval.expression) = (yyvsp[0].expression);
 4838|      0|        }
 4839|       |
 4840|      6|        fail_if_error(result);
  ------------------
  |  |  135|      6|    if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |   40|     12|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |                   if (e != ERROR_SUCCESS && e != ERROR_UNKNOWN_ESCAPE_SEQUENCE) \
  |  |  ------------------
  |  |  |  |  111|      6|#define ERROR_UNKNOWN_ESCAPE_SEQUENCE        66
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 0, False: 6]
  |  |  |  Branch (135:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  136|      6|    { \
  |  |  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|      6|      }
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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: 66]
  ------------------
 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|      8|      default: break;
  ------------------
  |  Branch (5151:7): [True: 8, False: 58]
  ------------------
 5152|     66|    }
 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|     66|  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 5165|       |
 5166|     66|  YYPOPSTACK (yylen);
  ------------------
  |  | 1929|     66|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 5167|     66|  yylen = 0;
 5168|       |
 5169|     66|  *++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|     66|  {
 5175|     66|    const int yylhs = yyr1[yyn] - YYNTOKENS;
  ------------------
  |  |  884|     66|#define YYNTOKENS  84
  ------------------
 5176|     66|    const int yyi = yypgoto[yylhs] + *yyssp;
 5177|     66|    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
  ------------------
  |  |  881|    104|#define YYLAST   476
  ------------------
  |  Branch (5177:16): [True: 38, False: 28]
  |  Branch (5177:28): [True: 38, False: 0]
  |  Branch (5177:45): [True: 10, False: 28]
  ------------------
 5178|     66|               ? yytable[yyi]
 5179|     66|               : yydefgoto[yylhs]);
 5180|     66|  }
 5181|       |
 5182|     66|  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|  1.83k|{
   95|  1.83k|  const uint8_t* b = (uint8_t*) buffer;
   96|       |
   97|  1.83k|  uint32_t result = seed;
   98|  1.83k|  size_t i;
   99|       |
  100|  1.83k|  if (len == 0)
  ------------------
  |  Branch (100:7): [True: 0, False: 1.83k]
  ------------------
  101|      0|    return result;
  102|       |
  103|  6.86k|  for (i = len - 1; i > 0; i--)
  ------------------
  |  Branch (103:21): [True: 5.02k, False: 1.83k]
  ------------------
  104|  5.02k|  {
  105|  5.02k|    result ^= ROTATE_INT32(byte_to_int32[*b], i);
  ------------------
  |  |   46|  5.02k|#define ROTATE_INT32(x, shift) rotl32(x, shift % 32)
  ------------------
  106|  5.02k|    b++;
  107|  5.02k|  }
  108|       |
  109|  1.83k|  result ^= byte_to_int32[*b];
  110|  1.83k|  return result;
  111|  1.83k|}
yr_hash_table_create:
  178|    228|{
  179|    228|  YR_HASH_TABLE* new_table;
  180|    228|  int i;
  181|       |
  182|    228|  new_table = (YR_HASH_TABLE*) yr_malloc(
  183|    228|      sizeof(YR_HASH_TABLE) + size * sizeof(YR_HASH_TABLE_ENTRY*));
  184|       |
  185|    228|  if (new_table == NULL)
  ------------------
  |  Branch (185:7): [True: 0, False: 228]
  ------------------
  186|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  187|       |
  188|    228|  new_table->size = size;
  189|       |
  190|  63.1k|  for (i = 0; i < size; i++) new_table->buckets[i] = NULL;
  ------------------
  |  Branch (190:15): [True: 62.8k, False: 228]
  ------------------
  191|       |
  192|    228|  *table = new_table;
  193|       |
  194|    228|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    228|#define ERROR_SUCCESS 0
  ------------------
  195|    228|}
yr_hash_table_clean:
  200|    230|{
  201|    230|  YR_HASH_TABLE_ENTRY* entry;
  202|    230|  YR_HASH_TABLE_ENTRY* next_entry;
  203|       |
  204|    230|  int i;
  205|       |
  206|    230|  if (table == NULL)
  ------------------
  |  Branch (206:7): [True: 0, False: 230]
  ------------------
  207|      0|    return;
  208|       |
  209|  83.1k|  for (i = 0; i < table->size; i++)
  ------------------
  |  Branch (209:15): [True: 82.8k, False: 230]
  ------------------
  210|  82.8k|  {
  211|  82.8k|    entry = table->buckets[i];
  212|       |
  213|  82.8k|    while (entry != NULL)
  ------------------
  |  Branch (213:12): [True: 20, False: 82.8k]
  ------------------
  214|     20|    {
  215|     20|      next_entry = entry->next;
  216|       |
  217|     20|      if (free_value != NULL)
  ------------------
  |  Branch (217:11): [True: 2, False: 18]
  ------------------
  218|      2|        free_value(entry->value);
  219|       |
  220|     20|      if (entry->ns != NULL)
  ------------------
  |  Branch (220:11): [True: 4, False: 16]
  ------------------
  221|      4|        yr_free(entry->ns);
  222|       |
  223|     20|      yr_free(entry->key);
  224|     20|      yr_free(entry);
  225|       |
  226|     20|      entry = next_entry;
  227|     20|    }
  228|       |
  229|  82.8k|    table->buckets[i] = NULL;
  230|  82.8k|  }
  231|    230|}
yr_hash_table_destroy:
  236|    228|{
  237|    228|  yr_hash_table_clean(table, free_value);
  238|    228|  yr_free(table);
  239|    228|}
yr_hash_table_iterate:
  246|      2|{
  247|      2|  int result;
  248|      2|  YR_HASH_TABLE_ENTRY* entry;
  249|       |
  250|      2|  if (table == NULL)
  ------------------
  |  Branch (250:7): [True: 0, False: 2]
  ------------------
  251|      0|    return ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|      0|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  252|       |
  253|  2.00k|  for (int i = 0; i < table->size; i++)
  ------------------
  |  Branch (253:19): [True: 2.00k, False: 2]
  ------------------
  254|  2.00k|  {
  255|  2.00k|    entry = table->buckets[i];
  256|  2.00k|    while (entry != NULL)
  ------------------
  |  Branch (256:12): [True: 0, False: 2.00k]
  ------------------
  257|      0|    {
  258|      0|      if ((entry->ns == NULL && ns == NULL)
  ------------------
  |  Branch (258:12): [True: 0, False: 0]
  |  Branch (258:33): [True: 0, False: 0]
  ------------------
  259|      0|          || (entry->ns != NULL && ns != NULL && !strcmp(entry->ns, ns)))
  ------------------
  |  Branch (259:15): [True: 0, False: 0]
  |  Branch (259:36): [True: 0, False: 0]
  |  Branch (259:50): [True: 0, False: 0]
  ------------------
  260|      0|      {
  261|      0|        result = iterate_func(
  262|      0|            entry->key, entry->key_length, entry->value, data);
  263|       |
  264|      0|        if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (264:13): [True: 0, False: 0]
  ------------------
  265|      0|          return result;
  266|      0|      }
  267|      0|      entry = entry->next;
  268|      0|    }
  269|  2.00k|  }
  270|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  271|      2|}
yr_hash_table_lookup_raw_key:
  278|    482|{
  279|    482|  return _yr_hash_table_lookup(table, key, key_length, ns, false);
  280|    482|}
yr_hash_table_remove_raw_key:
  287|  1.21k|{
  288|  1.21k|  return _yr_hash_table_lookup(table, key, key_length, ns, true);
  289|  1.21k|}
yr_hash_table_add_raw_key:
  297|    130|{
  298|    130|  YR_HASH_TABLE_ENTRY* entry;
  299|    130|  uint32_t bucket_index;
  300|       |
  301|    130|  entry = (YR_HASH_TABLE_ENTRY*) yr_malloc(sizeof(YR_HASH_TABLE_ENTRY));
  302|       |
  303|    130|  if (entry == NULL)
  ------------------
  |  Branch (303:7): [True: 0, False: 130]
  ------------------
  304|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  305|       |
  306|    130|  entry->key = yr_malloc(key_length);
  307|       |
  308|    130|  if (entry->key == NULL)
  ------------------
  |  Branch (308:7): [True: 0, False: 130]
  ------------------
  309|      0|  {
  310|      0|    yr_free(entry);
  311|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  312|      0|  }
  313|       |
  314|    130|  if (ns != NULL)
  ------------------
  |  Branch (314:7): [True: 4, False: 126]
  ------------------
  315|      4|  {
  316|      4|    entry->ns = yr_strdup(ns);
  317|       |
  318|      4|    if (entry->ns == NULL)
  ------------------
  |  Branch (318:9): [True: 0, False: 4]
  ------------------
  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|      4|  }
  326|    126|  else
  327|    126|  {
  328|    126|    entry->ns = NULL;
  329|    126|  }
  330|       |
  331|    130|  entry->key_length = key_length;
  332|    130|  entry->value = value;
  333|       |
  334|    130|  memcpy(entry->key, key, key_length);
  335|       |
  336|    130|  bucket_index = yr_hash(0, key, key_length);
  337|       |
  338|    130|  if (ns != NULL)
  ------------------
  |  Branch (338:7): [True: 4, False: 126]
  ------------------
  339|      4|    bucket_index = yr_hash(bucket_index, (uint8_t*) ns, strlen(ns));
  340|       |
  341|    130|  bucket_index = bucket_index % table->size;
  342|       |
  343|    130|  entry->next = table->buckets[bucket_index];
  344|    130|  table->buckets[bucket_index] = entry;
  345|       |
  346|    130|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    130|#define ERROR_SUCCESS 0
  ------------------
  347|    130|}
yr_hash_table_lookup:
  353|    456|{
  354|    456|  return yr_hash_table_lookup_raw_key(table, (void*) key, strlen(key), ns);
  355|    456|}
yr_hash_table_remove:
  361|  1.21k|{
  362|  1.21k|  return yr_hash_table_remove_raw_key(table, (void*) key, strlen(key), ns);
  363|  1.21k|}
yr_hash_table_add:
  370|    112|{
  371|    112|  return yr_hash_table_add_raw_key(table, (void*) key, strlen(key), ns, value);
  372|    112|}
yr_hash_table_add_uint32:
  379|      2|{
  380|      2|  return yr_hash_table_add_uint32_raw_key(
  381|      2|      table, (void*) key, strlen(key), ns, value);
  382|      2|}
yr_hash_table_lookup_uint32:
  388|      2|{
  389|      2|  return yr_hash_table_lookup_uint32_raw_key(
  390|      2|      table, (void*) key, strlen(key), ns);
  391|      2|}
yr_hash_table_add_uint32_raw_key:
  399|     18|{
  400|       |  // Don't allow values equal to UINT32_MAX or UINT32_MAX - 1.
  401|     18|  if (value >= UINT32_MAX - 1)
  ------------------
  |  Branch (401:7): [True: 0, False: 18]
  ------------------
  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|     18|  return yr_hash_table_add_raw_key(
  408|     18|      table, key, key_length, ns, (void*) (size_t) (value + 1));
  409|     18|}
yr_hash_table_lookup_uint32_raw_key:
  416|     26|{
  417|     26|  void* ptr = yr_hash_table_lookup_raw_key(table, key, key_length, ns);
  418|       |
  419|     26|  if (ptr == NULL)
  ------------------
  |  Branch (419:7): [True: 18, False: 8]
  ------------------
  420|     18|    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|      8|  return ((uint32_t) (size_t) (uint8_t*) ptr) - 1;
  425|     26|}
hash.c:rotl32:
   41|  5.02k|{
   42|  5.02k|  assert(shift < 32);
   43|  5.02k|  return (x << shift) | (x >> (-shift & 31));
   44|  5.02k|}
hash.c:_yr_hash_table_lookup:
  124|  1.69k|{
  125|  1.69k|  YR_HASH_TABLE_ENTRY* entry;
  126|  1.69k|  YR_HASH_TABLE_ENTRY* prev_entry;
  127|       |
  128|  1.69k|  void* result;
  129|       |
  130|  1.69k|  uint32_t bucket_index = yr_hash(0, key, key_length);
  131|       |
  132|  1.69k|  if (ns != NULL)
  ------------------
  |  Branch (132:7): [True: 10, False: 1.68k]
  ------------------
  133|     10|    bucket_index = yr_hash(bucket_index, (uint8_t*) ns, strlen(ns));
  134|       |
  135|  1.69k|  bucket_index = bucket_index % table->size;
  136|  1.69k|  prev_entry = NULL;
  137|  1.69k|  entry = table->buckets[bucket_index];
  138|       |
  139|  1.69k|  while (entry != NULL)
  ------------------
  |  Branch (139:10): [True: 454, False: 1.23k]
  ------------------
  140|    454|  {
  141|    454|    int key_match =
  142|    454|        ((entry->key_length == key_length) &&
  ------------------
  |  Branch (142:10): [True: 454, False: 0]
  ------------------
  143|    454|         (memcmp(entry->key, key, key_length) == 0));
  ------------------
  |  Branch (143:10): [True: 454, False: 0]
  ------------------
  144|       |
  145|    454|    int ns_match =
  146|    454|        ((entry->ns == ns) ||
  ------------------
  |  Branch (146:10): [True: 448, False: 6]
  ------------------
  147|    454|         (entry->ns != NULL && ns != NULL && strcmp(entry->ns, ns) == 0));
  ------------------
  |  Branch (147:11): [True: 6, False: 0]
  |  Branch (147:32): [True: 6, False: 0]
  |  Branch (147:46): [True: 6, False: 0]
  ------------------
  148|       |
  149|    454|    if (key_match && ns_match)
  ------------------
  |  Branch (149:9): [True: 454, False: 0]
  |  Branch (149:22): [True: 454, False: 0]
  ------------------
  150|    454|    {
  151|    454|      result = entry->value;
  152|       |
  153|    454|      if (remove)
  ------------------
  |  Branch (153:11): [True: 110, False: 344]
  ------------------
  154|    110|      {
  155|    110|        if (prev_entry == NULL)
  ------------------
  |  Branch (155:13): [True: 110, False: 0]
  ------------------
  156|    110|          table->buckets[bucket_index] = entry->next;
  157|      0|        else
  158|      0|          prev_entry->next = entry->next;
  159|       |
  160|    110|        if (entry->ns != NULL)
  ------------------
  |  Branch (160:13): [True: 0, False: 110]
  ------------------
  161|      0|          yr_free(entry->ns);
  162|       |
  163|    110|        yr_free(entry->key);
  164|    110|        yr_free(entry);
  165|    110|      }
  166|       |
  167|    454|      return result;
  168|    454|    }
  169|       |
  170|      0|    prev_entry = entry;
  171|      0|    entry = entry->next;
  172|      0|  }
  173|       |
  174|  1.23k|  return NULL;
  175|  1.69k|}

exec.c:yr_unaligned_u64:
   88|    220|{
   89|    220|  const uint64_una_t *tmp = (const uint64_una_t *) ptr;
   90|    220|  return tmp->val;
   91|    220|}
exec.c:yr_unaligned_u32:
   82|    110|{
   83|    110|  const uint32_una_t *tmp = (const uint32_una_t *) ptr;
   84|    110|  return tmp->val;
   85|    110|}
exec.c:yr_unaligned_char_ptr:
  112|    990|{
  113|    990|  const charp_una_t *tmp = (const charp_una_t *) ptr;
  114|    990|  return tmp->val;
  115|    990|}

yara_yylex:
 1278|     62|{
 1279|     62|	yy_state_type yy_current_state;
 1280|     62|	char *yy_cp, *yy_bp;
 1281|     62|	int yy_act;
 1282|     62|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 1283|       |
 1284|     62|    yylval = yylval_param;
  ------------------
  |  | 1097|     62|    #    define yylval yyg->yylval_r
  ------------------
 1285|       |
 1286|     62|	if ( !yyg->yy_init )
  ------------------
  |  Branch (1286:7): [True: 2, False: 60]
  ------------------
 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|     62|	{
 1313|     62|#line 163 "lexer.l"
 1314|       |
 1315|       |
 1316|     62|#line 1316 "lexer.c"
 1317|       |
 1318|     84|	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
  ------------------
  |  Branch (1318:23): [Folded - Ignored]
  ------------------
 1319|     84|		{
 1320|     84|		yy_cp = yyg->yy_c_buf_p;
 1321|       |
 1322|       |		/* Support of yytext. */
 1323|     84|		*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|     84|		yy_bp = yy_cp;
 1329|       |
 1330|     84|		yy_current_state = yyg->yy_start;
 1331|     84|yy_match:
 1332|     84|		do
 1333|    330|			{
 1334|    330|			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
  ------------------
  |  |  334|    330|#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
  ------------------
 1335|    330|			if ( yy_accept[yy_current_state] )
  ------------------
  |  Branch (1335:9): [True: 242, False: 88]
  ------------------
 1336|    242|				{
 1337|    242|				yyg->yy_last_accepting_state = yy_current_state;
 1338|    242|				yyg->yy_last_accepting_cpos = yy_cp;
 1339|    242|				}
 1340|    574|			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  ------------------
  |  Branch (1340:12): [True: 244, False: 330]
  ------------------
 1341|    244|				{
 1342|    244|				yy_current_state = (int) yy_def[yy_current_state];
 1343|    244|				if ( yy_current_state >= 295 )
  ------------------
  |  Branch (1343:10): [True: 160, False: 84]
  ------------------
 1344|    160|					yy_c = yy_meta[yy_c];
 1345|    244|				}
 1346|    330|			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 1347|    330|			++yy_cp;
 1348|    330|			}
 1349|    330|		while ( yy_current_state != 294 );
  ------------------
  |  Branch (1349:11): [True: 246, False: 84]
  ------------------
 1350|     84|		yy_cp = yyg->yy_last_accepting_cpos;
 1351|     84|		yy_current_state = yyg->yy_last_accepting_state;
 1352|       |
 1353|     86|yy_find_action:
 1354|     86|		yy_act = yy_accept[yy_current_state];
 1355|       |
 1356|     86|		YY_DO_BEFORE_ACTION;
  ------------------
  |  |  578|     86|	yyg->yytext_ptr = yy_bp; \
  |  |  ------------------
  |  |  |  |  567|     86|#define yytext_ptr yytext_r
  |  |  ------------------
  |  |  579|     86|	yyleng = (int) (yy_cp - yy_bp); \
  |  |  ------------------
  |  |  |  |  347|     86|#define yyleng yyg->yyleng_r
  |  |  ------------------
  |  |  580|     86|	yyg->yy_hold_char = *yy_cp; \
  |  |  581|     86|	*yy_cp = '\0'; \
  |  |  582|     86|	yyg->yy_c_buf_p = yy_cp;
  ------------------
 1357|       |
 1358|     86|		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
  ------------------
  |  |  584|    172|#define YY_END_OF_BUFFER 87
  ------------------
  |  Branch (1358:8): [True: 82, False: 4]
  |  Branch (1358:38): [True: 18, False: 64]
  ------------------
 1359|     18|			{
 1360|     18|			int yyl;
 1361|     36|			for ( yyl = 0; yyl < yyleng; ++yyl )
  ------------------
  |  |  347|     36|#define yyleng yyg->yyleng_r
  ------------------
  |  Branch (1361:19): [True: 18, False: 18]
  ------------------
 1362|     18|				if ( yytext[yyl] == '\n' )
  ------------------
  |  |  348|     18|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1362:10): [True: 0, False: 18]
  ------------------
 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|     18|;
 1368|     18|			}
 1369|       |
 1370|     88|do_action:	/* This label is used only to access EOF actions. */
 1371|       |
 1372|     88|		switch ( yy_act )
 1373|     88|	{ /* beginning of action switch */
 1374|      0|			case 0: /* must back up */
  ------------------
  |  Branch (1374:4): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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|      2|case 6:
  ------------------
  |  Branch (1406:1): [True: 2, False: 86]
  ------------------
 1407|      2|YY_RULE_SETUP
 1408|      2|#line 170 "lexer.l"
 1409|      2|{ return _EQ_;          }
  ------------------
  |  |  178|      2|#define _EQ_ 310
  ------------------
 1410|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1411|      0|case 7:
  ------------------
  |  Branch (1411:1): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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|      2|case 12:
  ------------------
  |  Branch (1436:1): [True: 2, False: 86]
  ------------------
 1437|      2|YY_RULE_SETUP
 1438|      2|#line 176 "lexer.l"
 1439|      2|{ return _RULE_;        }
  ------------------
  |  |  128|      2|#define _RULE_ 260
  ------------------
 1440|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1441|      0|case 13:
  ------------------
  |  Branch (1441:1): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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|      2|case 22:
  ------------------
  |  Branch (1486:1): [True: 2, False: 86]
  ------------------
 1487|      2|YY_RULE_SETUP
 1488|      2|#line 186 "lexer.l"
 1489|      2|{ return _CONDITION_;   }
  ------------------
  |  |  133|      2|#define _CONDITION_ 265
  ------------------
 1490|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1491|      0|case 23:
  ------------------
  |  Branch (1491:1): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 86]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 86]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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|     18|case 61:
  ------------------
  |  Branch (1926:1): [True: 18, False: 70]
  ------------------
 1927|     18|YY_RULE_SETUP
 1928|     18|#line 487 "lexer.l"
 1929|     18|{
 1930|       |
 1931|     18|  if (strlen(yytext) > 128)
  ------------------
  |  |  348|     18|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1931:7): [True: 0, False: 18]
  ------------------
 1932|     18|    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|     18|  yylval->c_string = yr_strdup(yytext);
  ------------------
  |  | 1097|     18|    #    define yylval yyg->yylval_r
  ------------------
                yylval->c_string = yr_strdup(yytext);
  ------------------
  |  |  348|     18|#define yytext yyg->yytext_r
  ------------------
 1935|       |
 1936|     18|  if (yylval->c_string == NULL)
  ------------------
  |  | 1097|     18|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1936:7): [True: 0, False: 18]
  ------------------
 1937|     18|    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|     18|  return _IDENTIFIER_;
  ------------------
  |  |  134|     18|#define _IDENTIFIER_ 266
  ------------------
 1940|     18|}
 1941|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1942|      4|case 62:
  ------------------
  |  Branch (1942:1): [True: 4, False: 84]
  ------------------
 1943|      4|YY_RULE_SETUP
 1944|      4|#line 501 "lexer.l"
 1945|      4|{
 1946|       |
 1947|      4|  char *endptr;
 1948|       |
 1949|      4|  errno = 0;
 1950|      4|  yylval->integer = strtoll(yytext, &endptr, 10);
  ------------------
  |  | 1097|      4|    #    define yylval yyg->yylval_r
  ------------------
                yylval->integer = strtoll(yytext, &endptr, 10);
  ------------------
  |  |  348|      4|#define yytext yyg->yytext_r
  ------------------
 1951|       |
 1952|      4|  if (yylval->integer == LLONG_MAX && errno == ERANGE)
  ------------------
  |  | 1097|      4|    #    define yylval yyg->yylval_r
  ------------------
  |  Branch (1952:7): [True: 0, False: 4]
  |  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|      4|  else if (strstr(yytext, "KB") != NULL)
  ------------------
  |  |  348|      4|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1957:12): [True: 0, False: 4]
  ------------------
 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|      4|  else if (strstr(yytext, "MB") != NULL)
  ------------------
  |  |  348|      4|#define yytext yyg->yytext_r
  ------------------
  |  Branch (1969:12): [True: 0, False: 4]
  ------------------
 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|      4|  return _NUMBER_;
  ------------------
  |  |  140|      4|#define _NUMBER_ 272
  ------------------
 1983|      4|}
 1984|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1985|      0|case 63:
  ------------------
  |  Branch (1985:1): [True: 0, False: 88]
  ------------------
 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|      4|}
 1992|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 1993|      0|case 64:
  ------------------
  |  Branch (1993:1): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 86]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 86]
  ------------------
 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|      6|      while(*yptr) \
  |  |  ------------------
  |  |  |  Branch (994:13): [True: 4, False: 2]
  |  |  ------------------
  |  |  995|      4|      { \
  |  |  996|      4|        *yyextra->lex_buf_ptr++ = *yptr++; \
  |  |  ------------------
  |  |  |  |  346|      4|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  997|      4|        yyextra->lex_buf_len++; \
  |  |  ------------------
  |  |  |  |  346|      4|#define yyextra yyg->yyextra_r
  |  |  ------------------
  |  |  998|      4|      } \
  |  |  999|      2|    }
  ------------------
 2115|      2|	YY_BREAK
  ------------------
  |  | 1269|      2|#define YY_BREAK /*LINTED*/break;
  ------------------
 2116|      0|case 74:
  ------------------
  |  Branch (2116:1): [True: 0, False: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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: 86]
  ------------------
 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: 88]
  ------------------
 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: 88]
  ------------------
 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|     18|case 84:
  ------------------
  |  Branch (2241:1): [True: 18, False: 70]
  ------------------
 2242|       |/* rule 84 can match eol */
 2243|     18|YY_RULE_SETUP
 2244|     18|#line 749 "lexer.l"
 2245|       |/* skip whitespace */
 2246|     18|	YY_BREAK
  ------------------
  |  | 1269|     18|#define YY_BREAK /*LINTED*/break;
  ------------------
 2247|     28|case 85:
  ------------------
  |  Branch (2247:1): [True: 28, False: 60]
  ------------------
 2248|     28|YY_RULE_SETUP
 2249|     28|#line 751 "lexer.l"
 2250|     28|{
 2251|       |
 2252|     28|  if (yytext[0] >= 32 && yytext[0] < 127)
  ------------------
  |  |  348|     28|#define yytext yyg->yytext_r
  ------------------
                if (yytext[0] >= 32 && yytext[0] < 127)
  ------------------
  |  |  348|     28|#define yytext yyg->yytext_r
  ------------------
  |  Branch (2252:7): [True: 28, False: 0]
  |  Branch (2252:26): [True: 28, False: 0]
  ------------------
 2253|     28|  {
 2254|     28|    return yytext[0];
  ------------------
  |  |  348|     28|#define yytext yyg->yytext_r
  ------------------
 2255|     28|  }
 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|     28|}
 2261|      0|	YY_BREAK
  ------------------
  |  | 1269|      0|#define YY_BREAK /*LINTED*/break;
  ------------------
 2262|      0|case 86:
  ------------------
  |  Branch (2262:1): [True: 0, False: 88]
  ------------------
 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: 84]
  ------------------
 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: 88]
  ------------------
 2393|      0|		YY_FATAL_ERROR(
  ------------------
  |  |   71|      0|#define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg)
  ------------------
 2394|     88|			"fatal flex scanner internal error--no action found" );
 2395|     88|	} /* end of action switch */
 2396|     88|		} /* end of scanning one token */
 2397|     62|	} /* end of user's declarations */
 2398|     62|} /* 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|    240|	for ( i = 0; i < _yybytes_len; ++i )
  ------------------
  |  Branch (3031:15): [True: 238, False: 2]
  ------------------
 3032|    238|		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|     98|{
 3084|     98|    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 3085|     98|    return yyextra;
  ------------------
  |  |  346|     98|#define yyextra yyg->yyextra_r
  ------------------
 3086|     98|}
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|    222|{
  477|    222|  if (dest == NULL)
  ------------------
  |  Branch (477:7): [True: 0, False: 222]
  ------------------
  478|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  479|       |
  480|    222|  switch (name)
  481|    222|  {  // lump all the cases using same types together in one cascade
  482|    110|  case YR_CONFIG_STACK_SIZE:
  ------------------
  |  Branch (482:3): [True: 110, False: 112]
  ------------------
  483|    112|  case YR_CONFIG_MAX_STRINGS_PER_RULE:
  ------------------
  |  Branch (483:3): [True: 2, False: 220]
  ------------------
  484|    222|  case YR_CONFIG_MAX_MATCH_DATA:
  ------------------
  |  Branch (484:3): [True: 110, False: 112]
  ------------------
  485|    222|    *(uint32_t *) dest = yr_cfgs[name].ui32;
  486|    222|    break;
  487|       |
  488|      0|  case YR_CONFIG_MAX_PROCESS_MEMORY_CHUNK:
  ------------------
  |  Branch (488:3): [True: 0, False: 222]
  ------------------
  489|      0|    *(uint64_t *) dest = yr_cfgs[name].ui64;
  490|      0|    break;
  491|       |
  492|      0|  default:
  ------------------
  |  Branch (492:3): [True: 0, False: 222]
  ------------------
  493|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  494|    222|  }
  495|       |
  496|    222|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    222|#define ERROR_SUCCESS 0
  ------------------
  497|    222|}
yr_get_configuration_uint32:
  512|    222|{
  513|    222|  switch (name)
  514|    222|  {
  515|       |  // Accept only the configuration options that are of type uint32_t.
  516|    110|  case YR_CONFIG_STACK_SIZE:
  ------------------
  |  Branch (516:3): [True: 110, False: 112]
  ------------------
  517|    112|  case YR_CONFIG_MAX_STRINGS_PER_RULE:
  ------------------
  |  Branch (517:3): [True: 2, False: 220]
  ------------------
  518|    222|  case YR_CONFIG_MAX_MATCH_DATA:
  ------------------
  |  Branch (518:3): [True: 110, False: 112]
  ------------------
  519|    222|    return yr_get_configuration(name, (void *) dest);
  520|      0|  default:
  ------------------
  |  Branch (520:3): [True: 0, False: 222]
  ------------------
  521|      0|    return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  522|    222|  }
  523|    222|}

yr_heap_alloc:
  116|      2|{
  117|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  118|      2|}
yr_calloc:
  126|   384k|{
  127|   384k|  return calloc(count, size);
  128|   384k|}
yr_malloc:
  131|  22.8M|{
  132|  22.8M|  return malloc(size);
  133|  22.8M|}
yr_realloc:
  136|  1.23k|{
  137|  1.23k|  return realloc(ptr, size);
  138|  1.23k|}
yr_strdup:
  141|  11.5M|{
  142|  11.5M|  return strdup(str);
  143|  11.5M|}
yr_strndup:
  146|  1.32M|{
  147|  1.32M|  return strndup(str, n);
  148|  1.32M|}
yr_free:
  151|  36.0M|{
  152|  36.0M|  free(ptr);
  153|  36.0M|}

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|    112|{
   94|    112|  for (YR_MODULE* module = yr_modules_table;
   95|    224|       module->name != NULL && module->declarations != NULL;
  ------------------
  |  Branch (95:8): [True: 224, False: 0]
  |  Branch (95:32): [True: 224, False: 0]
  ------------------
   96|    112|       module++)
   97|    224|  {
   98|    224|    if (strcmp(module->name, module_name) == 0)
  ------------------
  |  Branch (98:9): [True: 112, False: 112]
  ------------------
   99|    112|      return module->declarations(main_structure);
  100|    224|  }
  101|       |
  102|      0|  return ERROR_UNKNOWN_MODULE;
  ------------------
  |  |   79|      0|#define ERROR_UNKNOWN_MODULE                 34
  ------------------
  103|    112|}
yr_modules_load:
  106|    110|{
  107|    110|  int result;
  108|       |
  109|    110|  YR_MODULE_IMPORT mi;
  110|       |
  111|    110|  YR_OBJECT* module_structure = (YR_OBJECT*) yr_hash_table_lookup(
  112|    110|      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|    110|  if (module_structure != NULL)
  ------------------
  |  Branch (117:7): [True: 0, False: 110]
  ------------------
  118|      0|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      0|#define ERROR_SUCCESS 0
  ------------------
  119|       |
  120|       |  // not loaded yet
  121|       |
  122|    110|  FAIL_ON_ERROR(yr_object_create(
  ------------------
  |  |  132|    110|  {                               \
  |  |  133|    110|    int __error = (x);            \
  |  |  134|    110|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  135|    110|      return __error;             \
  |  |  136|    110|  }
  ------------------
  123|    110|      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|    110|  yr_object_set_canary(module_structure, context->canary);
  128|       |
  129|    110|  mi.module_name = module_name;
  130|    110|  mi.module_data = NULL;
  131|    110|  mi.module_data_size = 0;
  132|       |
  133|    110|  result = context->callback(
  134|    110|      context, CALLBACK_MSG_IMPORT_MODULE, &mi, context->user_data);
  ------------------
  |  |   41|    110|#define CALLBACK_MSG_IMPORT_MODULE     4
  ------------------
  135|       |
  136|    110|  if (result == CALLBACK_ERROR)
  ------------------
  |  |   49|    110|#define CALLBACK_ERROR    2
  ------------------
  |  Branch (136:7): [True: 0, False: 110]
  ------------------
  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|    110|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    110|  {                                            \
  |  |  141|    110|    int __error = (x);                         \
  |  |  142|    110|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  143|    110|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    110|  }
  ------------------
  143|    110|      yr_modules_do_declarations(module_name, module_structure),
  144|    110|      yr_object_destroy(module_structure));
  145|       |
  146|    110|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    110|  {                                            \
  |  |  141|    110|    int __error = (x);                         \
  |  |  142|    110|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  143|    110|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    110|  }
  ------------------
  147|    110|      yr_hash_table_add(
  148|    110|          context->objects_table, module_name, NULL, module_structure),
  149|    110|      yr_object_destroy(module_structure));
  150|       |
  151|    110|  for (YR_MODULE* module = yr_modules_table;
  152|  1.32k|       module->name != NULL && module->load != NULL;
  ------------------
  |  Branch (152:8): [True: 1.21k, False: 110]
  |  Branch (152:32): [True: 1.21k, False: 0]
  ------------------
  153|  1.21k|       module++)
  154|  1.21k|  {
  155|  1.21k|    if (strcmp(module->name, module_name) == 0)
  ------------------
  |  Branch (155:9): [True: 110, False: 1.10k]
  ------------------
  156|    110|    {
  157|    110|      result = module->load(
  158|    110|          context, module_structure, mi.module_data, mi.module_data_size);
  159|       |
  160|    110|      if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (160:11): [True: 0, False: 110]
  ------------------
  161|      0|        return result;
  162|    110|    }
  163|  1.21k|  }
  164|       |
  165|    110|  result = context->callback(
  166|    110|      context,
  167|    110|      CALLBACK_MSG_MODULE_IMPORTED,
  ------------------
  |  |   42|    110|#define CALLBACK_MSG_MODULE_IMPORTED   5
  ------------------
  168|    110|      module_structure,
  169|    110|      context->user_data);
  170|       |
  171|    110|  if (result == CALLBACK_ERROR)
  ------------------
  |  |   49|    110|#define CALLBACK_ERROR    2
  ------------------
  |  Branch (171:7): [True: 0, False: 110]
  ------------------
  172|      0|    return ERROR_CALLBACK_ERROR;
  ------------------
  |  |   73|      0|#define ERROR_CALLBACK_ERROR                 28
  ------------------
  173|       |
  174|    110|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  175|    110|}
yr_modules_unload_all:
  178|    110|{
  179|    110|  for (YR_MODULE* module = yr_modules_table;
  180|  1.32k|       module->name != NULL && module->unload != NULL;
  ------------------
  |  Branch (180:8): [True: 1.21k, False: 110]
  |  Branch (180:32): [True: 1.21k, False: 0]
  ------------------
  181|  1.21k|       module++)
  182|  1.21k|  {
  183|  1.21k|    YR_OBJECT* module_structure = (YR_OBJECT*) yr_hash_table_remove(
  184|  1.21k|        context->objects_table, module->name, NULL);
  185|       |
  186|  1.21k|    if (module_structure != NULL)
  ------------------
  |  Branch (186:9): [True: 110, False: 1.10k]
  ------------------
  187|    110|    {
  188|    110|      module->unload(module_structure);
  189|    110|      yr_object_destroy(module_structure);
  190|    110|    }
  191|  1.21k|  }
  192|       |
  193|    110|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  194|    110|}

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

dex__initialize:
 1442|      2|{
 1443|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1444|      2|}

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_set_imports:
 1087|    116|{
 1088|    116|  int dll_cnt = 0;
 1089|       |
 1090|    882|  for (; dll != NULL; dll = dll->next, dll_cnt++)
  ------------------
  |  Branch (1090:10): [True: 766, False: 116]
  ------------------
 1091|    766|  {
 1092|    766|    int fun_cnt = 0;
 1093|       |
 1094|  2.20M|    for (IMPORT_FUNCTION* func = dll->functions; func != NULL;
  ------------------
  |  Branch (1094:50): [True: 2.20M, False: 766]
  ------------------
 1095|  2.20M|         func = func->next, fun_cnt++)
 1096|  2.20M|    {
 1097|  2.20M|      yr_set_string(func->name, pe->object, fun_name, dll_cnt, fun_cnt);
  ------------------
  |  |  245|  2.20M|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  4.40M|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [True: 0, False: 2.20M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|  2.20M|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1098|       |
 1099|  2.20M|      if (func->has_ordinal)
  ------------------
  |  Branch (1099:11): [True: 879k, False: 1.32M]
  ------------------
 1100|   879k|        yr_set_integer(
  ------------------
  |  |  236|   879k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1101|  2.20M|            func->ordinal, pe->object, fun_ordinal, dll_cnt, fun_cnt);
 1102|  1.32M|      else
 1103|  1.32M|        yr_set_integer(YR_UNDEFINED, pe->object, fun_ordinal, dll_cnt, fun_cnt);
  ------------------
  |  |  236|  1.32M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1104|       |
 1105|  2.20M|      if (func->rva)
  ------------------
  |  Branch (1105:11): [True: 2.20M, False: 8]
  ------------------
 1106|  2.20M|        yr_set_integer(func->rva, pe->object, rva, dll_cnt, fun_cnt);
  ------------------
  |  |  236|  2.20M|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1107|      8|      else
 1108|      8|        yr_set_integer(YR_UNDEFINED, pe->object, rva, dll_cnt, fun_cnt);
  ------------------
  |  |  236|      8|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1109|  2.20M|    }
 1110|    766|    yr_set_string(dll->name, pe->object, dll_name, dll_cnt);
  ------------------
  |  |  245|    766|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|  1.53k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [True: 0, False: 766]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|    766|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
 1111|    766|    yr_set_integer(fun_cnt, pe->object, dll_number_of_functions, dll_cnt);
  ------------------
  |  |  236|    766|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1112|    766|  }
 1113|    116|}
pe_normalize_delay_import_value:
 1227|  1.31M|{
 1228|       |  // Ignore zero items
 1229|  1.31M|  if (virtual_address != 0)
  ------------------
  |  Branch (1229:7): [True: 1.31M, False: 1]
  ------------------
 1230|  1.31M|  {
 1231|       |    // Sample: 0fc4cb0620f95bdd624f2c78eea4d2b59594244c6671cf249526adf2f2cb71ec
 1232|       |    // Contains artificially created delay import directory with incorrect
 1233|       |    // values:
 1234|       |    //
 1235|       |    //  Attributes                      0x00000000 <-- Old MS delay import
 1236|       |    //  record, contains VAs NameRva                         0x004010e6
 1237|       |    //  ModuleHandleRva                 0x00000000
 1238|       |    //  DelayImportAddressTableRva      0x00001140 <-- WRONG! This is an RVA
 1239|       |    //  DelayImportNameTableRva         0x004010c0
 1240|       |    //  BoundDelayImportTableRva        0x00000000
 1241|       |    //  ...
 1242|       |
 1243|  1.31M|    if (virtual_address > image_base)
  ------------------
  |  Branch (1243:9): [True: 685k, False: 633k]
  ------------------
 1244|   685k|    {
 1245|   685k|      virtual_address = virtual_address - image_base;
 1246|   685k|    }
 1247|  1.31M|  }
 1248|       |
 1249|  1.31M|  return virtual_address;
 1250|  1.31M|}
pe_is_termination_delay_import_entry:
 1254|     74|{
 1255|     74|  return (
 1256|     74|      importDescriptor->Attributes.AllAttributes == 0 &&
  ------------------
  |  Branch (1256:7): [True: 48, False: 26]
  ------------------
 1257|     74|      importDescriptor->DllNameRVA == 0 &&
  ------------------
  |  Branch (1257:7): [True: 0, False: 48]
  ------------------
 1258|     74|      importDescriptor->ModuleHandleRVA == 0 &&
  ------------------
  |  Branch (1258:7): [True: 0, False: 0]
  ------------------
 1259|     74|      importDescriptor->ImportAddressTableRVA == 0 &&
  ------------------
  |  Branch (1259:7): [True: 0, False: 0]
  ------------------
 1260|     74|      importDescriptor->ImportNameTableRVA == 0 &&
  ------------------
  |  Branch (1260:7): [True: 0, False: 0]
  ------------------
 1261|     74|      importDescriptor->BoundImportAddressTableRVA == 0 &&
  ------------------
  |  Branch (1261:7): [True: 0, False: 0]
  ------------------
 1262|     74|      importDescriptor->UnloadInformationTableRVA == 0 &&
  ------------------
  |  Branch (1262:7): [True: 0, False: 0]
  ------------------
 1263|     74|      importDescriptor->TimeDateStamp == 0);
  ------------------
  |  Branch (1263:7): [True: 0, False: 0]
  ------------------
 1264|     74|}
pe_parse_delay_import_dll_name:
 1267|     48|{
 1268|     48|  const int64_t offset = pe_rva_to_offset(pe, rva);
 1269|       |
 1270|     48|  if (offset < 0)
  ------------------
  |  Branch (1270:7): [True: 0, False: 48]
  ------------------
 1271|      0|    return NULL;
 1272|       |
 1273|     48|  char* dll_name = (char*) (pe->data + offset);
 1274|       |
 1275|     48|  if (!pe_valid_dll_name(dll_name, pe->data_size - (size_t) offset))
  ------------------
  |  Branch (1275:7): [True: 1, False: 47]
  ------------------
 1276|      1|    return NULL;
 1277|       |
 1278|     47|  return yr_strdup(dll_name);
 1279|     48|}
pe_parse_delay_import_pointer:
 1285|  3.63M|{
 1286|  3.63M|  const int64_t offset = pe_rva_to_offset(pe, rva);
 1287|  3.63M|  const uint8_t* data = pe->data + offset;
 1288|       |
 1289|  3.63M|  if (!fits_in_pe(pe, data, pointerSize))
  ------------------
  |  |   73|  3.63M|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 3.63M, False: 0]
  |  |  |  Branch (73:39): [True: 3.63M, False: 6]
  |  |  ------------------
  |  |   74|  3.63M|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 3.63M, False: 10]
  |  |  ------------------
  ------------------
 1290|     16|    return YR_UNDEFINED;
  ------------------
  |  |   38|     16|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1291|       |
 1292|  3.63M|  if (IS_64BITS_PE(pe))
  ------------------
  |  |    9|  3.63M|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|  3.63M|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (9:3): [True: 3.35M, False: 279k]
  |  |  ------------------
  |  |   10|  3.63M|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|  3.63M|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
 1293|  3.35M|    return yr_le64toh(*(uint64_t*) data);
  ------------------
  |  |   90|  3.35M|#define yr_le64toh(x) (x)
  ------------------
 1294|   279k|  else
 1295|   279k|    return yr_le32toh(*(uint32_t*) data);
  ------------------
  |  |   89|   279k|#define yr_le32toh(x) (x)
  ------------------
 1296|  3.63M|}
pe_get_section_full_name:
 1984|  1.61k|{
 1985|       |  // section_name is an 8-byte, null-padded UTF-8 encoded string. If the string
 1986|       |  // is exactly 8 characters long, there is no terminating null. For longer
 1987|       |  // names, this field contains a slash (/) that is followed by an ASCII
 1988|       |  // representation of a decimal number that is an offset into the string table.
 1989|       |
 1990|       |  // Sample: 2e9c671b8a0411f2b397544b368c44d7f095eb395779de0ad1ac946914dfa34c
 1991|       |
 1992|       |  // Check if any param is NULL
 1993|  1.61k|  if (pe == NULL || section_name == NULL || section_full_name_length == NULL)
  ------------------
  |  Branch (1993:7): [True: 0, False: 1.61k]
  |  Branch (1993:21): [True: 0, False: 1.61k]
  |  Branch (1993:45): [True: 0, False: 1.61k]
  ------------------
 1994|      0|    return NULL;
 1995|       |
 1996|       |  // Set length to zero
 1997|  1.61k|  *section_full_name_length = 0;
 1998|       |
 1999|       |  // Offset and number of records in coff table
 2000|  1.61k|  uint64_t coff_offset = yr_le32toh(
  ------------------
  |  |   89|  1.61k|#define yr_le32toh(x) (x)
  ------------------
 2001|  1.61k|      pe->header->FileHeader.PointerToSymbolTable);
 2002|  1.61k|  uint64_t coff_number = yr_le32toh(pe->header->FileHeader.NumberOfSymbols);
  ------------------
  |  |   89|  1.61k|#define yr_le32toh(x) (x)
  ------------------
 2003|       |
 2004|       |  // If section name start with '/' and file contain coff table then section
 2005|       |  // name is stored in string table
 2006|  1.61k|  if (coff_offset == 0 || section_name[0] != '/')
  ------------------
  |  Branch (2006:7): [True: 11, False: 1.60k]
  |  Branch (2006:27): [True: 1.59k, False: 5]
  ------------------
 2007|  1.60k|  {
 2008|  1.60k|    *section_full_name_length = section_name_length;
 2009|  1.60k|    return section_name;
 2010|  1.60k|  }
 2011|       |
 2012|       |  // Calculate offset of string table (String table is immediately after coff
 2013|       |  // table)
 2014|      5|  uint64_t string_offset = coff_offset + coff_number * sizeof(IMAGE_SYMBOL);
 2015|      5|  uint64_t string_index = 0;
 2016|       |
 2017|       |  // Calculate string index/offset in string table
 2018|      5|  for (int i = 1; i < IMAGE_SIZEOF_SHORT_NAME && isdigit(section_name[i]); i++)
  ------------------
  |  |  409|     10|#define IMAGE_SIZEOF_SHORT_NAME 8
  ------------------
  |  Branch (2018:19): [True: 5, False: 0]
  ------------------
 2019|      0|    string_index = (string_index * 10) + (section_name[i] - '0');
 2020|       |
 2021|       |  // Calculate string pointer
 2022|      5|  const char* string = (char*) (pe->data + string_offset + string_index);
 2023|       |
 2024|       |  // Check string
 2025|      5|  for (uint64_t len = 0; fits_in_pe(pe, string, len + 1); len++)
  ------------------
  |  |   73|      5|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 5, False: 0]
  |  |  |  Branch (73:39): [True: 5, False: 0]
  |  |  ------------------
  |  |   74|      5|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2026|      0|  {
 2027|       |    // Valid string
 2028|      0|    if (string[len] == 0)
  ------------------
  |  Branch (2028:9): [True: 0, False: 0]
  ------------------
 2029|      0|    {
 2030|      0|      *section_full_name_length = len;
 2031|      0|      return string;
 2032|      0|    }
 2033|       |
 2034|       |    // string contain unprintable character
 2035|      0|    if (!isprint(string[len]))
  ------------------
  |  Branch (2035:9): [True: 0, False: 0]
  ------------------
 2036|      0|      return NULL;
 2037|      0|  }
 2038|       |
 2039|       |  // String do not fit into pe file
 2040|      5|  return NULL;
 2041|      5|}
rva_to_offset:
 3463|     82|{
 3464|     82|  YR_OBJECT* module = yr_module();
  ------------------
  |  |  213|     82|#define yr_module()       yr_object_get_root((YR_OBJECT*) __function_obj)
  ------------------
 3465|     82|  PE* pe = (PE*) module->data;
 3466|       |
 3467|     82|  uint64_t rva;
 3468|     82|  int64_t offset;
 3469|       |
 3470|     82|  if (pe == NULL)
  ------------------
  |  Branch (3470:7): [True: 0, False: 82]
  ------------------
 3471|     82|    return_integer(YR_UNDEFINED);
  ------------------
  |  |  249|      0|  {                                                                            \
  |  |  250|      0|    assertf(                                                                   \
  |  |  ------------------
  |  |  |  |  162|      0|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  163|      0|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  251|      0|        __function_obj->return_obj->type == OBJECT_TYPE_INTEGER,               \
  |  |  252|      0|        "return type differs from function declaration");                      \
  |  |  253|      0|    return yr_object_set_integer((integer), __function_obj->return_obj, NULL); \
  |  |  254|      0|  }
  ------------------
 3472|       |
 3473|     82|  rva = integer_argument(1);
  ------------------
  |  |  207|     82|#define integer_argument(n) (__args[n - 1].i)
  ------------------
 3474|     82|  offset = pe_rva_to_offset(pe, rva);
 3475|       |
 3476|     82|  if (offset == -1)
  ------------------
  |  Branch (3476:7): [True: 47, False: 35]
  ------------------
 3477|     47|    return_integer(YR_UNDEFINED);
  ------------------
  |  |  249|     47|  {                                                                            \
  |  |  250|     47|    assertf(                                                                   \
  |  |  ------------------
  |  |  |  |  162|     47|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 47]
  |  |  |  |  ------------------
  |  |  |  |  163|     47|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  251|     47|        __function_obj->return_obj->type == OBJECT_TYPE_INTEGER,               \
  |  |  252|     47|        "return type differs from function declaration");                      \
  |  |  253|     47|    return yr_object_set_integer((integer), __function_obj->return_obj, NULL); \
  |  |  254|     47|  }
  ------------------
 3478|       |
 3479|     35|  return_integer(offset);
  ------------------
  |  |  249|     35|  {                                                                            \
  |  |  250|     35|    assertf(                                                                   \
  |  |  ------------------
  |  |  |  |  162|     35|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 35]
  |  |  |  |  ------------------
  |  |  |  |  163|     35|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  251|     35|        __function_obj->return_obj->type == OBJECT_TYPE_INTEGER,               \
  |  |  252|     35|        "return type differs from function declaration");                      \
  |  |  253|     35|    return yr_object_set_integer((integer), __function_obj->return_obj, NULL); \
  |  |  254|     35|  }
  ------------------
 3480|      0|}
pe__declarations:
 3482|    112|begin_declarations
  ------------------
  |  |   59|    112|  {                                          \
  |  |   60|    112|    YR_OBJECT* stack[64];                    \
  |  |   61|    112|    int stack_top = 0;                       \
  |  |   62|    112|    stack[stack_top] = module;
  ------------------
 3483|    112|  declare_integer("MACHINE_UNKNOWN");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3484|    112|  declare_integer("MACHINE_AM33");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3485|    112|  declare_integer("MACHINE_AMD64");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3486|    112|  declare_integer("MACHINE_ARM");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3487|    112|  declare_integer("MACHINE_ARMNT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3488|    112|  declare_integer("MACHINE_ARM64");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3489|    112|  declare_integer("MACHINE_EBC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3490|    112|  declare_integer("MACHINE_I386");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3491|    112|  declare_integer("MACHINE_IA64");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3492|    112|  declare_integer("MACHINE_M32R");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3493|    112|  declare_integer("MACHINE_MIPS16");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3494|    112|  declare_integer("MACHINE_MIPSFPU");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3495|    112|  declare_integer("MACHINE_MIPSFPU16");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3496|    112|  declare_integer("MACHINE_POWERPC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3497|    112|  declare_integer("MACHINE_POWERPCFP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3498|    112|  declare_integer("MACHINE_R4000");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3499|    112|  declare_integer("MACHINE_SH3");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3500|    112|  declare_integer("MACHINE_SH3DSP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3501|    112|  declare_integer("MACHINE_SH4");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3502|    112|  declare_integer("MACHINE_SH5");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3503|    112|  declare_integer("MACHINE_THUMB");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3504|    112|  declare_integer("MACHINE_WCEMIPSV2");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3505|    112|  declare_integer("MACHINE_TARGET_HOST");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3506|    112|  declare_integer("MACHINE_R3000");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3507|    112|  declare_integer("MACHINE_R10000");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3508|    112|  declare_integer("MACHINE_ALPHA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3509|    112|  declare_integer("MACHINE_SH3E");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3510|    112|  declare_integer("MACHINE_ALPHA64");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3511|    112|  declare_integer("MACHINE_AXP64");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3512|    112|  declare_integer("MACHINE_TRICORE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3513|    112|  declare_integer("MACHINE_CEF");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3514|    112|  declare_integer("MACHINE_CEE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3515|       |
 3516|    112|  declare_integer("SUBSYSTEM_UNKNOWN");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3517|    112|  declare_integer("SUBSYSTEM_NATIVE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3518|    112|  declare_integer("SUBSYSTEM_WINDOWS_GUI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3519|    112|  declare_integer("SUBSYSTEM_WINDOWS_CUI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3520|    112|  declare_integer("SUBSYSTEM_OS2_CUI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3521|    112|  declare_integer("SUBSYSTEM_POSIX_CUI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3522|    112|  declare_integer("SUBSYSTEM_NATIVE_WINDOWS");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3523|    112|  declare_integer("SUBSYSTEM_WINDOWS_CE_GUI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3524|    112|  declare_integer("SUBSYSTEM_EFI_APPLICATION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3525|    112|  declare_integer("SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3526|    112|  declare_integer("SUBSYSTEM_EFI_RUNTIME_DRIVER");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3527|    112|  declare_integer("SUBSYSTEM_EFI_ROM_IMAGE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3528|    112|  declare_integer("SUBSYSTEM_XBOX");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3529|    112|  declare_integer("SUBSYSTEM_WINDOWS_BOOT_APPLICATION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3530|       |
 3531|    112|  declare_integer("HIGH_ENTROPY_VA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3532|    112|  declare_integer("DYNAMIC_BASE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3533|    112|  declare_integer("FORCE_INTEGRITY");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3534|    112|  declare_integer("NX_COMPAT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3535|    112|  declare_integer("NO_ISOLATION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3536|    112|  declare_integer("NO_SEH");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3537|    112|  declare_integer("NO_BIND");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3538|    112|  declare_integer("APPCONTAINER");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3539|    112|  declare_integer("WDM_DRIVER");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3540|    112|  declare_integer("GUARD_CF");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3541|    112|  declare_integer("TERMINAL_SERVER_AWARE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3542|       |
 3543|    112|  declare_integer("RELOCS_STRIPPED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3544|    112|  declare_integer("EXECUTABLE_IMAGE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3545|    112|  declare_integer("LINE_NUMS_STRIPPED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3546|    112|  declare_integer("LOCAL_SYMS_STRIPPED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3547|    112|  declare_integer("AGGRESIVE_WS_TRIM");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3548|    112|  declare_integer("LARGE_ADDRESS_AWARE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3549|    112|  declare_integer("BYTES_REVERSED_LO");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3550|    112|  declare_integer("MACHINE_32BIT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3551|    112|  declare_integer("DEBUG_STRIPPED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3552|    112|  declare_integer("REMOVABLE_RUN_FROM_SWAP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3553|    112|  declare_integer("NET_RUN_FROM_SWAP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3554|    112|  declare_integer("SYSTEM");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3555|    112|  declare_integer("DLL");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3556|    112|  declare_integer("UP_SYSTEM_ONLY");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3557|    112|  declare_integer("BYTES_REVERSED_HI");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3558|       |
 3559|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_EXPORT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3560|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_IMPORT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3561|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_RESOURCE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3562|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_EXCEPTION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3563|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_SECURITY");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3564|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_BASERELOC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3565|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_DEBUG");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3566|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_ARCHITECTURE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3567|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_COPYRIGHT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3568|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_GLOBALPTR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3569|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_TLS");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3570|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3571|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3572|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_IAT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3573|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3574|    112|  declare_integer("IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3575|       |
 3576|    112|  declare_integer("IMAGE_NT_OPTIONAL_HDR32_MAGIC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3577|    112|  declare_integer("IMAGE_NT_OPTIONAL_HDR64_MAGIC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3578|    112|  declare_integer("IMAGE_ROM_OPTIONAL_HDR_MAGIC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3579|       |
 3580|    112|  declare_integer("SECTION_NO_PAD");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3581|    112|  declare_integer("SECTION_CNT_CODE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3582|    112|  declare_integer("SECTION_CNT_INITIALIZED_DATA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3583|    112|  declare_integer("SECTION_CNT_UNINITIALIZED_DATA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3584|    112|  declare_integer("SECTION_LNK_OTHER");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3585|    112|  declare_integer("SECTION_LNK_INFO");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3586|    112|  declare_integer("SECTION_LNK_REMOVE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3587|    112|  declare_integer("SECTION_LNK_COMDAT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3588|    112|  declare_integer("SECTION_NO_DEFER_SPEC_EXC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3589|    112|  declare_integer("SECTION_GPREL");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3590|    112|  declare_integer("SECTION_MEM_FARDATA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3591|    112|  declare_integer("SECTION_MEM_PURGEABLE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3592|    112|  declare_integer("SECTION_MEM_16BIT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3593|    112|  declare_integer("SECTION_MEM_LOCKED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3594|    112|  declare_integer("SECTION_MEM_PRELOAD");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3595|    112|  declare_integer("SECTION_ALIGN_1BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3596|    112|  declare_integer("SECTION_ALIGN_2BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3597|    112|  declare_integer("SECTION_ALIGN_4BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3598|    112|  declare_integer("SECTION_ALIGN_8BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3599|    112|  declare_integer("SECTION_ALIGN_16BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3600|    112|  declare_integer("SECTION_ALIGN_32BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3601|    112|  declare_integer("SECTION_ALIGN_64BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3602|    112|  declare_integer("SECTION_ALIGN_128BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3603|    112|  declare_integer("SECTION_ALIGN_256BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3604|    112|  declare_integer("SECTION_ALIGN_512BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3605|    112|  declare_integer("SECTION_ALIGN_1024BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3606|    112|  declare_integer("SECTION_ALIGN_2048BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3607|    112|  declare_integer("SECTION_ALIGN_4096BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3608|    112|  declare_integer("SECTION_ALIGN_8192BYTES");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3609|    112|  declare_integer("SECTION_ALIGN_MASK");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3610|    112|  declare_integer("SECTION_LNK_NRELOC_OVFL");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3611|    112|  declare_integer("SECTION_MEM_DISCARDABLE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3612|    112|  declare_integer("SECTION_MEM_NOT_CACHED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3613|    112|  declare_integer("SECTION_MEM_NOT_PAGED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3614|    112|  declare_integer("SECTION_MEM_SHARED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3615|    112|  declare_integer("SECTION_MEM_EXECUTE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3616|    112|  declare_integer("SECTION_MEM_READ");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3617|    112|  declare_integer("SECTION_MEM_WRITE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3618|    112|  declare_integer("SECTION_SCALE_INDEX");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3619|       |
 3620|    112|  declare_integer("RESOURCE_TYPE_CURSOR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3621|    112|  declare_integer("RESOURCE_TYPE_BITMAP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3622|    112|  declare_integer("RESOURCE_TYPE_ICON");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3623|    112|  declare_integer("RESOURCE_TYPE_MENU");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3624|    112|  declare_integer("RESOURCE_TYPE_DIALOG");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3625|    112|  declare_integer("RESOURCE_TYPE_STRING");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3626|    112|  declare_integer("RESOURCE_TYPE_FONTDIR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3627|    112|  declare_integer("RESOURCE_TYPE_FONT");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3628|    112|  declare_integer("RESOURCE_TYPE_ACCELERATOR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3629|    112|  declare_integer("RESOURCE_TYPE_RCDATA");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3630|    112|  declare_integer("RESOURCE_TYPE_MESSAGETABLE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3631|    112|  declare_integer("RESOURCE_TYPE_GROUP_CURSOR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3632|    112|  declare_integer("RESOURCE_TYPE_GROUP_ICON");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3633|    112|  declare_integer("RESOURCE_TYPE_VERSION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3634|    112|  declare_integer("RESOURCE_TYPE_DLGINCLUDE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3635|    112|  declare_integer("RESOURCE_TYPE_PLUGPLAY");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3636|    112|  declare_integer("RESOURCE_TYPE_VXD");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3637|    112|  declare_integer("RESOURCE_TYPE_ANICURSOR");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3638|    112|  declare_integer("RESOURCE_TYPE_ANIICON");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3639|    112|  declare_integer("RESOURCE_TYPE_HTML");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3640|    112|  declare_integer("RESOURCE_TYPE_MANIFEST");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3641|       |
 3642|    112|  declare_integer("IMAGE_DEBUG_TYPE_UNKNOWN");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3643|    112|  declare_integer("IMAGE_DEBUG_TYPE_COFF");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3644|    112|  declare_integer("IMAGE_DEBUG_TYPE_CODEVIEW");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3645|    112|  declare_integer("IMAGE_DEBUG_TYPE_FPO");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3646|    112|  declare_integer("IMAGE_DEBUG_TYPE_MISC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3647|    112|  declare_integer("IMAGE_DEBUG_TYPE_EXCEPTION");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3648|    112|  declare_integer("IMAGE_DEBUG_TYPE_FIXUP");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3649|    112|  declare_integer("IMAGE_DEBUG_TYPE_OMAP_TO_SRC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3650|    112|  declare_integer("IMAGE_DEBUG_TYPE_OMAP_FROM_SRC");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3651|    112|  declare_integer("IMAGE_DEBUG_TYPE_BORLAND");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3652|    112|  declare_integer("IMAGE_DEBUG_TYPE_RESERVED10");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3653|    112|  declare_integer("IMAGE_DEBUG_TYPE_CLSID");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3654|    112|  declare_integer("IMAGE_DEBUG_TYPE_VC_FEATURE");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3655|    112|  declare_integer("IMAGE_DEBUG_TYPE_POGO");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3656|    112|  declare_integer("IMAGE_DEBUG_TYPE_ILTCG");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3657|    112|  declare_integer("IMAGE_DEBUG_TYPE_MPX");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3658|    112|  declare_integer("IMAGE_DEBUG_TYPE_REPRO");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3659|       |
 3660|    112|  declare_integer("IMPORT_DELAYED");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3661|    112|  declare_integer("IMPORT_STANDARD");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3662|    112|  declare_integer("IMPORT_ANY");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3663|       |
 3664|    112|  declare_integer("is_pe");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3665|    112|  declare_integer("machine");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3666|    112|  declare_integer("number_of_sections");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3667|    112|  declare_integer("timestamp");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3668|    112|  declare_integer("pointer_to_symbol_table");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3669|    112|  declare_integer("number_of_symbols");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3670|    112|  declare_integer("size_of_optional_header");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3671|    112|  declare_integer("characteristics");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3672|       |
 3673|    112|  declare_integer("entry_point");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3674|    112|  declare_integer("entry_point_raw");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3675|    112|  declare_integer("image_base");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3676|    112|  declare_integer("number_of_rva_and_sizes");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3677|    112|  declare_integer("number_of_version_infos");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3678|       |
 3679|    224|  declare_string_dictionary("version_info");
  ------------------
  |  |  183|    112|  {                                                                        \
  |  |  184|    112|    YR_OBJECT* dict;                                                       \
  |  |  185|    112|    FAIL_ON_ERROR(yr_object_create(                                        \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  186|    112|        OBJECT_TYPE_DICTIONARY, name, stack[stack_top], &dict));           \
  |  |  187|    112|    FAIL_ON_ERROR(yr_object_create(OBJECT_TYPE_STRING, name, dict, NULL)); \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  188|    112|  }
  ------------------
 3680|       |
 3681|    336|  begin_struct_array("version_info_list")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3682|    112|    declare_string("key");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3683|    112|    declare_string("value");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3684|    224|  end_struct_array("version_info_list");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3685|       |
 3686|    224|  declare_integer("opthdr_magic");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3687|    112|  declare_integer("size_of_code");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3688|    112|  declare_integer("size_of_initialized_data");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3689|    112|  declare_integer("size_of_uninitialized_data");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3690|    112|  declare_integer("base_of_code");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3691|    112|  declare_integer("base_of_data");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3692|    112|  declare_integer("section_alignment");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3693|    112|  declare_integer("file_alignment");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3694|       |
 3695|    224|  begin_struct("linker_version")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3696|    112|    declare_integer("major");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3697|    112|    declare_integer("minor");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3698|    224|  end_struct("linker_version");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3699|       |
 3700|    224|  begin_struct("os_version")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3701|    112|    declare_integer("major");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3702|    112|    declare_integer("minor");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3703|    224|  end_struct("os_version");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3704|       |
 3705|    224|  begin_struct("image_version")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3706|    112|    declare_integer("major");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3707|    112|    declare_integer("minor");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3708|    224|  end_struct("image_version");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3709|       |
 3710|    224|  begin_struct("subsystem_version")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3711|    112|    declare_integer("major");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3712|    112|    declare_integer("minor");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3713|    224|  end_struct("subsystem_version");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3714|       |
 3715|    224|  declare_integer("win32_version_value");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3716|    112|  declare_integer("size_of_image");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3717|    112|  declare_integer("size_of_headers");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3718|       |
 3719|    112|  declare_integer("checksum");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3720|    112|  declare_function("calculate_checksum", "", "i", calculate_checksum);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3721|    112|  declare_integer("subsystem");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3722|       |
 3723|    112|  declare_integer("dll_characteristics");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3724|    112|  declare_integer("size_of_stack_reserve");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3725|    112|  declare_integer("size_of_stack_commit");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3726|    112|  declare_integer("size_of_heap_reserve");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3727|    112|  declare_integer("size_of_heap_commit");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3728|    112|  declare_integer("loader_flags");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3729|       |
 3730|    336|  begin_struct_array("data_directories")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3731|    112|    declare_integer("virtual_address");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3732|    112|    declare_integer("size");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3733|    224|  end_struct_array("data_directories");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3734|       |
 3735|    336|  begin_struct_array("sections")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3736|    112|    declare_string("name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3737|    112|    declare_string("full_name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3738|    112|    declare_integer("characteristics");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3739|    112|    declare_integer("virtual_address");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3740|    112|    declare_integer("virtual_size");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3741|    112|    declare_integer("raw_data_offset");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3742|    112|    declare_integer("raw_data_size");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3743|    112|    declare_integer("pointer_to_relocations");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3744|    112|    declare_integer("pointer_to_line_numbers");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3745|    112|    declare_integer("number_of_relocations");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3746|    112|    declare_integer("number_of_line_numbers");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3747|    224|  end_struct_array("sections");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3748|       |
 3749|    224|  begin_struct("overlay")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3750|    112|    declare_integer("offset");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3751|    112|    declare_integer("size");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3752|    224|  end_struct("overlay");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3753|       |
 3754|    224|  begin_struct("rich_signature")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3755|    112|    declare_integer("offset");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3756|    112|    declare_integer("length");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3757|    112|    declare_integer("key");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3758|    112|    declare_string("raw_data");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3759|    112|    declare_string("clear_data");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3760|    112|    declare_string("version_data");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3761|    112|    declare_function("version", "i", "i", rich_version);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3762|    112|    declare_function("version", "ii", "i", rich_version_toolid);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3763|    112|    declare_function("toolid", "i", "i", rich_toolid);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3764|    112|    declare_function("toolid", "ii", "i", rich_toolid_version);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3765|    224|  end_struct("rich_signature");
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3766|       |
 3767|       |#if defined(HAVE_LIBCRYPTO) || defined(HAVE_WINCRYPT_H) || \
 3768|       |    defined(HAVE_COMMONCRYPTO_COMMONCRYPTO_H)
 3769|       |  declare_function("imphash", "", "s", imphash);
 3770|       |#endif
 3771|       |
 3772|    224|  declare_function("section_index", "s", "i", section_index_name);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3773|    112|  declare_function("section_index", "i", "i", section_index_addr);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3774|    112|  declare_function("exports", "s", "i", exports);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3775|    112|  declare_function("exports", "r", "i", exports_regexp);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3776|    112|  declare_function("exports", "i", "i", exports_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3777|    112|  declare_function("exports_index", "s", "i", exports_index_name);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3778|    112|  declare_function("exports_index", "i", "i", exports_index_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3779|    112|  declare_function("exports_index", "r", "i", exports_index_regex);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3780|    112|  declare_function("imports", "ss", "i", imports_standard);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3781|    112|  declare_function("imports", "si", "i", imports_standard_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3782|    112|  declare_function("imports", "s", "i", imports_standard_dll);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3783|    112|  declare_function("imports", "rr", "i", imports_standard_regex);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3784|    112|  declare_function("imports", "iss", "i", imports);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3785|    112|  declare_function("imports", "isi", "i", imports_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3786|    112|  declare_function("imports", "is", "i", imports_dll);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3787|    112|  declare_function("imports", "irr", "i", imports_regex);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3788|    112|  declare_function("import_rva", "ss", "i", import_rva);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3789|    112|  declare_function("import_rva", "si", "i", import_rva_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3790|    112|  declare_function("delayed_import_rva", "ss", "i", delayed_import_rva);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3791|    112|  declare_function("delayed_import_rva", "si", "i", delayed_import_rva_ordinal);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3792|    112|  declare_function("locale", "i", "i", locale);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3793|    112|  declare_function("language", "i", "i", language);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3794|    112|  declare_function("is_dll", "", "i", is_dll);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3795|    112|  declare_function("is_32bit", "", "i", is_32bit);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3796|    112|  declare_function("is_64bit", "", "i", is_64bit);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3797|       |
 3798|    112|  declare_integer("number_of_imports");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3799|    112|  declare_integer("number_of_imported_functions");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3800|    112|  declare_integer("number_of_delayed_imports");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3801|    112|  declare_integer("number_of_delayed_imported_functions");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3802|    112|  declare_integer("number_of_exports");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3803|       |
 3804|    112|  declare_string("dll_name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3805|    112|  declare_integer("export_timestamp");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3806|    336|  begin_struct_array("export_details")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3807|    112|    declare_integer("offset");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3808|    112|    declare_string("name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3809|    112|    declare_string("forward_name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3810|    112|    declare_integer("ordinal");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3811|    112|    declare_integer("rva");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3812|    224|  end_struct_array("export_details")
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3813|       |
 3814|    336|  begin_struct_array("import_details")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3815|    112|    declare_string("library_name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3816|    112|    declare_integer("number_of_functions");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3817|    336|    begin_struct_array("functions")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3818|    112|      declare_string("name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3819|    112|      declare_integer("ordinal");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3820|    112|      declare_integer("rva");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3821|    224|    end_struct_array("functions");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3822|    224|  end_struct_array("import_details");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3823|       |
 3824|    336|  begin_struct_array("delayed_import_details")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3825|    112|    declare_string("library_name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3826|    112|    declare_integer("number_of_functions");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3827|    336|    begin_struct_array("functions")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3828|    112|      declare_string("name");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3829|    112|      declare_integer("ordinal");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3830|    112|      declare_integer("rva");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3831|    224|    end_struct_array("functions");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3832|    224|  end_struct_array("delayed_import_details");
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3833|       |
 3834|    224|  declare_integer("resource_timestamp");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3835|       |
 3836|    224|  begin_struct("resource_version")
  ------------------
  |  |   69|    112|  {                                                                  \
  |  |   70|    112|    YR_OBJECT* structure;                                            \
  |  |   71|    112|    FAIL_ON_ERROR(yr_object_create(                                  \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   72|    112|        OBJECT_TYPE_STRUCTURE, name, stack[stack_top], &structure)); \
  |  |   73|    112|    assertf(                                                         \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   74|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,            \
  |  |   75|    112|        "too many nested structures");                               \
  |  |   76|    112|    stack[++stack_top] = structure;                                  \
  |  |   77|    112|  }
  ------------------
 3837|    112|    declare_integer("major");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3838|    112|    declare_integer("minor");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3839|    224|  end_struct("resource_version")
  ------------------
  |  |  108|    112|  {                                                          \
  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  110|    112|    assertf(                                                 \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  113|    112|    stack_top--;                                             \
  |  |  114|    112|  }
  ------------------
 3840|       |
 3841|    336|  begin_struct_array("resources")
  ------------------
  |  |   80|    112|  {                                                                           \
  |  |   81|    112|    YR_OBJECT* structure;                                                     \
  |  |   82|    112|    YR_OBJECT* array;                                                         \
  |  |   83|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   84|    112|        yr_object_create(OBJECT_TYPE_ARRAY, name, stack[stack_top], &array)); \
  |  |   85|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |   86|    112|        yr_object_create(OBJECT_TYPE_STRUCTURE, name, array, &structure));    \
  |  |   87|    112|    assertf(                                                                  \
  |  |  ------------------
  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  166|      0|  }
  |  |  ------------------
  |  |   88|    112|        stack_top < sizeof(stack) / sizeof(stack[0]) - 1,                     \
  |  |   89|    112|        "too many nested structures");                                        \
  |  |   90|    112|    stack[++stack_top] = structure;                                           \
  |  |   91|    112|  }
  ------------------
 3842|    112|    declare_integer("rva");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3843|    112|    declare_integer("offset");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3844|    112|    declare_integer("length");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3845|    112|    declare_integer("type");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3846|    112|    declare_integer("id");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3847|    112|    declare_integer("language");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3848|    112|    declare_string("type_string");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3849|    112|    declare_string("name_string");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3850|    112|    declare_string("language_string");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3851|    224|  end_struct_array("resources")
  ------------------
  |  |  117|    112|  end_struct                   \
  |  |  ------------------
  |  |  |  |  108|    112|  {                                                          \
  |  |  |  |  109|    112|    assert(stack[stack_top]->type == OBJECT_TYPE_STRUCTURE); \
  |  |  |  |  110|    112|    assertf(                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    112|  if (!(expr))                                                              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (162:7): [True: 0, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|    112|  {                                                                         \
  |  |  |  |  |  |  164|      0|    fprintf(stderr, "%s:%d: " msg "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
  |  |  |  |  |  |  165|      0|    abort();                                                                \
  |  |  |  |  |  |  166|      0|  }
  |  |  |  |  ------------------
  |  |  |  |  111|    112|        strcmp(stack[stack_top]->identifier, name) == 0,     \
  |  |  |  |  112|    112|        "unbalanced begin_struct/end_struct");               \
  |  |  |  |  113|    112|    stack_top--;                                             \
  |  |  |  |  114|    112|  }
  |  |  ------------------
  |  |  118|    112|  (name)
  ------------------
 3852|       |
 3853|    112|  declare_integer("number_of_resources");
  ------------------
  |  |  125|    112|  {                                                                           \
  |  |  126|    112|    FAIL_ON_ERROR(                                                            \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  127|    112|        yr_object_create(OBJECT_TYPE_INTEGER, name, stack[stack_top], NULL)); \
  |  |  128|    112|  }
  ------------------
 3854|    112|  declare_string("pdb_path");
  ------------------
  |  |  169|    112|  {                                                                          \
  |  |  170|    112|    FAIL_ON_ERROR(                                                           \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  171|    112|        yr_object_create(OBJECT_TYPE_STRING, name, stack[stack_top], NULL)); \
  |  |  172|    112|  }
  ------------------
 3855|       |
 3856|       |#if defined(HAVE_LIBCRYPTO) && !defined(BORINGSSL)
 3857|       |  begin_struct_array("signatures")
 3858|       |    declare_string("thumbprint");
 3859|       |    declare_string("issuer");
 3860|       |    declare_string("subject");
 3861|       |    declare_integer("version");
 3862|       |    declare_string("algorithm");
 3863|       |    declare_string("algorithm_oid");
 3864|       |    declare_string("serial");
 3865|       |    declare_integer("not_before");
 3866|       |    declare_integer("not_after");
 3867|       |
 3868|       |    declare_integer("verified");
 3869|       |    declare_string("digest_alg");
 3870|       |    declare_string("digest");
 3871|       |    declare_string("file_digest");
 3872|       |    declare_integer("number_of_certificates");
 3873|       |    begin_struct_array("certificates")
 3874|       |      ;
 3875|       |      declare_string("thumbprint");
 3876|       |      declare_string("issuer");
 3877|       |      declare_string("subject");
 3878|       |      declare_integer("version");
 3879|       |      declare_string("algorithm");
 3880|       |      declare_string("algorithm_oid");
 3881|       |      declare_string("serial");
 3882|       |      declare_integer("not_before");
 3883|       |      declare_integer("not_after");
 3884|       |    end_struct_array("certificates");
 3885|       |
 3886|       |    begin_struct("signer_info")
 3887|       |      ;
 3888|       |      declare_string("program_name");
 3889|       |      declare_string("digest");
 3890|       |      declare_string("digest_alg");
 3891|       |      declare_integer("length_of_chain");
 3892|       |      begin_struct_array("chain")
 3893|       |        ;
 3894|       |        declare_string("thumbprint");
 3895|       |        declare_string("issuer");
 3896|       |        declare_string("subject");
 3897|       |        declare_integer("version");
 3898|       |        declare_string("algorithm");
 3899|       |        declare_string("algorithm_oid");
 3900|       |        declare_string("serial");
 3901|       |        declare_integer("not_before");
 3902|       |        declare_integer("not_after");
 3903|       |      end_struct_array("chain");
 3904|       |    end_struct("signer_info");
 3905|       |
 3906|       |    declare_integer("number_of_countersignatures");
 3907|       |    begin_struct_array("countersignatures")
 3908|       |      ;
 3909|       |      declare_integer("verified");
 3910|       |      declare_integer("sign_time");
 3911|       |      declare_string("digest_alg");
 3912|       |      declare_string("digest");
 3913|       |      declare_integer("length_of_chain");
 3914|       |      begin_struct_array("chain")
 3915|       |        ;
 3916|       |        declare_string("thumbprint");
 3917|       |        declare_string("issuer");
 3918|       |        declare_string("subject");
 3919|       |        declare_integer("version");
 3920|       |        declare_string("algorithm");
 3921|       |        declare_string("algorithm_oid");
 3922|       |        declare_string("serial");
 3923|       |        declare_integer("not_before");
 3924|       |        declare_integer("not_after");
 3925|       |      end_struct_array("chain");
 3926|       |    end_struct_array("countersignatures")
 3927|       |
 3928|       |    declare_function("valid_on", "i", "i", valid_on);
 3929|       |
 3930|       |  end_struct_array("signatures")
 3931|       |
 3932|       |  // If any of the signatures correctly signs the binary
 3933|       |  declare_integer("is_signed");
 3934|       |  declare_integer("number_of_signatures");
 3935|       |#endif
 3936|       |
 3937|    112|  declare_function("rva_to_offset", "i", "i", rva_to_offset);
  ------------------
  |  |  191|    112|  {                                                                   \
  |  |  192|    112|    YR_OBJECT* function;                                              \
  |  |  193|    112|    FAIL_ON_ERROR(yr_object_function_create(                          \
  |  |  ------------------
  |  |  |  |  132|    112|  {                               \
  |  |  |  |  133|    112|    int __error = (x);            \
  |  |  |  |  134|    112|    if (__error != ERROR_SUCCESS) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:9): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  |  |  135|    112|      return __error;             \
  |  |  |  |  136|    112|  }
  |  |  ------------------
  |  |  194|    112|        name, args_fmt, ret_fmt, func, stack[stack_top], &function)); \
  |  |  195|    112|  }
  ------------------
 3938|    112|end_declarations
  ------------------
  |  |   65|    112|  return ERROR_SUCCESS;  \
  |  |  ------------------
  |  |  |  |   40|    112|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |   66|    112|  }
  ------------------
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|}
pe__load:
 3967|    110|{
 3968|    110|  YR_MEMORY_BLOCK* block;
 3969|    110|  YR_MEMORY_BLOCK_ITERATOR* iterator = context->iterator;
 3970|       |
 3971|    110|  PIMAGE_NT_HEADERS32 pe_header;
 3972|    110|  const uint8_t* block_data = NULL;
 3973|    110|  PE* pe = NULL;
 3974|       |
 3975|    110|  yr_set_integer(IMPORT_DELAYED, module_object, "IMPORT_DELAYED");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3976|    110|  yr_set_integer(IMPORT_STANDARD, module_object, "IMPORT_STANDARD");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3977|    110|  yr_set_integer(IMPORT_ANY, module_object, "IMPORT_ANY");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3978|       |
 3979|    110|  yr_set_integer(IMAGE_FILE_MACHINE_UNKNOWN, module_object, "MACHINE_UNKNOWN");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3980|    110|  yr_set_integer(IMAGE_FILE_MACHINE_AM33, module_object, "MACHINE_AM33");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3981|    110|  yr_set_integer(IMAGE_FILE_MACHINE_AMD64, module_object, "MACHINE_AMD64");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3982|    110|  yr_set_integer(IMAGE_FILE_MACHINE_ARM, module_object, "MACHINE_ARM");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3983|    110|  yr_set_integer(IMAGE_FILE_MACHINE_ARMNT, module_object, "MACHINE_ARMNT");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3984|    110|  yr_set_integer(IMAGE_FILE_MACHINE_ARM64, module_object, "MACHINE_ARM64");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3985|    110|  yr_set_integer(IMAGE_FILE_MACHINE_EBC, module_object, "MACHINE_EBC");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3986|    110|  yr_set_integer(IMAGE_FILE_MACHINE_I386, module_object, "MACHINE_I386");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3987|    110|  yr_set_integer(IMAGE_FILE_MACHINE_IA64, module_object, "MACHINE_IA64");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3988|    110|  yr_set_integer(IMAGE_FILE_MACHINE_M32R, module_object, "MACHINE_M32R");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3989|    110|  yr_set_integer(IMAGE_FILE_MACHINE_MIPS16, module_object, "MACHINE_MIPS16");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3990|    110|  yr_set_integer(IMAGE_FILE_MACHINE_MIPSFPU, module_object, "MACHINE_MIPSFPU");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3991|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3992|    110|      IMAGE_FILE_MACHINE_MIPSFPU16, module_object, "MACHINE_MIPSFPU16");
 3993|    110|  yr_set_integer(IMAGE_FILE_MACHINE_POWERPC, module_object, "MACHINE_POWERPC");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3994|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3995|    110|      IMAGE_FILE_MACHINE_POWERPCFP, module_object, "MACHINE_POWERPCFP");
 3996|    110|  yr_set_integer(IMAGE_FILE_MACHINE_R4000, module_object, "MACHINE_R4000");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3997|    110|  yr_set_integer(IMAGE_FILE_MACHINE_SH3, module_object, "MACHINE_SH3");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3998|    110|  yr_set_integer(IMAGE_FILE_MACHINE_SH3DSP, module_object, "MACHINE_SH3DSP");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 3999|    110|  yr_set_integer(IMAGE_FILE_MACHINE_SH4, module_object, "MACHINE_SH4");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4000|    110|  yr_set_integer(IMAGE_FILE_MACHINE_SH5, module_object, "MACHINE_SH5");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4001|    110|  yr_set_integer(IMAGE_FILE_MACHINE_THUMB, module_object, "MACHINE_THUMB");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4002|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4003|    110|      IMAGE_FILE_MACHINE_WCEMIPSV2, module_object, "MACHINE_WCEMIPSV2");
 4004|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4005|    110|      IMAGE_FILE_MACHINE_TARGET_HOST, module_object, "MACHINE_TARGET_HOST");
 4006|    110|  yr_set_integer(IMAGE_FILE_MACHINE_R3000, module_object, "MACHINE_R3000");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4007|    110|  yr_set_integer(IMAGE_FILE_MACHINE_R10000, module_object, "MACHINE_R10000");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4008|    110|  yr_set_integer(IMAGE_FILE_MACHINE_ALPHA, module_object, "MACHINE_ALPHA");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4009|    110|  yr_set_integer(IMAGE_FILE_MACHINE_SH3E, module_object, "MACHINE_SH3E");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4010|    110|  yr_set_integer(IMAGE_FILE_MACHINE_ALPHA64, module_object, "MACHINE_ALPHA64");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4011|    110|  yr_set_integer(IMAGE_FILE_MACHINE_AXP64, module_object, "MACHINE_AXP64");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4012|    110|  yr_set_integer(IMAGE_FILE_MACHINE_TRICORE, module_object, "MACHINE_TRICORE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4013|    110|  yr_set_integer(IMAGE_FILE_MACHINE_CEF, module_object, "MACHINE_CEF");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4014|    110|  yr_set_integer(IMAGE_FILE_MACHINE_CEE, module_object, "MACHINE_CEE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4015|       |
 4016|    110|  yr_set_integer(IMAGE_SUBSYSTEM_UNKNOWN, module_object, "SUBSYSTEM_UNKNOWN");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4017|    110|  yr_set_integer(IMAGE_SUBSYSTEM_NATIVE, module_object, "SUBSYSTEM_NATIVE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4018|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4019|    110|      IMAGE_SUBSYSTEM_WINDOWS_GUI, module_object, "SUBSYSTEM_WINDOWS_GUI");
 4020|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4021|    110|      IMAGE_SUBSYSTEM_WINDOWS_CUI, module_object, "SUBSYSTEM_WINDOWS_CUI");
 4022|    110|  yr_set_integer(IMAGE_SUBSYSTEM_OS2_CUI, module_object, "SUBSYSTEM_OS2_CUI");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4023|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4024|    110|      IMAGE_SUBSYSTEM_POSIX_CUI, module_object, "SUBSYSTEM_POSIX_CUI");
 4025|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4026|    110|      IMAGE_SUBSYSTEM_NATIVE_WINDOWS,
 4027|    110|      module_object,
 4028|    110|      "SUBSYSTEM_NATIVE_WINDOWS");
 4029|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4030|    110|      IMAGE_SUBSYSTEM_WINDOWS_CE_GUI,
 4031|    110|      module_object,
 4032|    110|      "SUBSYSTEM_WINDOWS_CE_GUI");
 4033|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4034|    110|      IMAGE_SUBSYSTEM_EFI_APPLICATION,
 4035|    110|      module_object,
 4036|    110|      "SUBSYSTEM_EFI_APPLICATION");
 4037|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4038|    110|      IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER,
 4039|    110|      module_object,
 4040|    110|      "SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER");
 4041|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4042|    110|      IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER,
 4043|    110|      module_object,
 4044|    110|      "SUBSYSTEM_EFI_RUNTIME_DRIVER");
 4045|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4046|    110|      IMAGE_SUBSYSTEM_EFI_ROM_IMAGE, module_object, "SUBSYSTEM_EFI_ROM_IMAGE");
 4047|    110|  yr_set_integer(IMAGE_SUBSYSTEM_XBOX, module_object, "SUBSYSTEM_XBOX");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4048|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4049|    110|      IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION,
 4050|    110|      module_object,
 4051|    110|      "SUBSYSTEM_WINDOWS_BOOT_APPLICATION");
 4052|       |
 4053|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4054|    110|      IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA,
 4055|    110|      module_object,
 4056|    110|      "HIGH_ENTROPY_VA");
 4057|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4058|    110|      IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE, module_object, "DYNAMIC_BASE");
 4059|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4060|    110|      IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY,
 4061|    110|      module_object,
 4062|    110|      "FORCE_INTEGRITY");
 4063|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4064|    110|      IMAGE_DLLCHARACTERISTICS_NX_COMPAT, module_object, "NX_COMPAT");
 4065|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4066|    110|      IMAGE_DLLCHARACTERISTICS_NO_ISOLATION, module_object, "NO_ISOLATION");
 4067|    110|  yr_set_integer(IMAGE_DLLCHARACTERISTICS_NO_SEH, module_object, "NO_SEH");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4068|    110|  yr_set_integer(IMAGE_DLLCHARACTERISTICS_NO_BIND, module_object, "NO_BIND");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4069|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4070|    110|      IMAGE_DLLCHARACTERISTICS_APPCONTAINER, module_object, "APPCONTAINER");
 4071|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4072|    110|      IMAGE_DLLCHARACTERISTICS_WDM_DRIVER, module_object, "WDM_DRIVER");
 4073|    110|  yr_set_integer(IMAGE_DLLCHARACTERISTICS_GUARD_CF, module_object, "GUARD_CF");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4074|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4075|    110|      IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE,
 4076|    110|      module_object,
 4077|    110|      "TERMINAL_SERVER_AWARE");
 4078|       |
 4079|    110|  yr_set_integer(IMAGE_FILE_RELOCS_STRIPPED, module_object, "RELOCS_STRIPPED");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4080|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4081|    110|      IMAGE_FILE_EXECUTABLE_IMAGE, module_object, "EXECUTABLE_IMAGE");
 4082|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4083|    110|      IMAGE_FILE_LINE_NUMS_STRIPPED, module_object, "LINE_NUMS_STRIPPED");
 4084|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4085|    110|      IMAGE_FILE_LOCAL_SYMS_STRIPPED, module_object, "LOCAL_SYMS_STRIPPED");
 4086|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4087|    110|      IMAGE_FILE_AGGRESIVE_WS_TRIM, module_object, "AGGRESIVE_WS_TRIM");
 4088|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4089|    110|      IMAGE_FILE_LARGE_ADDRESS_AWARE, module_object, "LARGE_ADDRESS_AWARE");
 4090|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4091|    110|      IMAGE_FILE_BYTES_REVERSED_LO, module_object, "BYTES_REVERSED_LO");
 4092|    110|  yr_set_integer(IMAGE_FILE_32BIT_MACHINE, module_object, "MACHINE_32BIT");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4093|    110|  yr_set_integer(IMAGE_FILE_DEBUG_STRIPPED, module_object, "DEBUG_STRIPPED");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4094|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4095|    110|      IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP,
 4096|    110|      module_object,
 4097|    110|      "REMOVABLE_RUN_FROM_SWAP");
 4098|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4099|    110|      IMAGE_FILE_NET_RUN_FROM_SWAP, module_object, "NET_RUN_FROM_SWAP");
 4100|    110|  yr_set_integer(IMAGE_FILE_SYSTEM, module_object, "SYSTEM");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4101|    110|  yr_set_integer(IMAGE_FILE_DLL, module_object, "DLL");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4102|    110|  yr_set_integer(IMAGE_FILE_UP_SYSTEM_ONLY, module_object, "UP_SYSTEM_ONLY");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4103|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4104|    110|      IMAGE_FILE_BYTES_REVERSED_HI, module_object, "BYTES_REVERSED_HI");
 4105|       |
 4106|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4107|    110|      IMAGE_DIRECTORY_ENTRY_EXPORT,
 4108|    110|      module_object,
 4109|    110|      "IMAGE_DIRECTORY_ENTRY_EXPORT");
 4110|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4111|    110|      IMAGE_DIRECTORY_ENTRY_IMPORT,
 4112|    110|      module_object,
 4113|    110|      "IMAGE_DIRECTORY_ENTRY_IMPORT");
 4114|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4115|    110|      IMAGE_DIRECTORY_ENTRY_RESOURCE,
 4116|    110|      module_object,
 4117|    110|      "IMAGE_DIRECTORY_ENTRY_RESOURCE");
 4118|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4119|    110|      IMAGE_DIRECTORY_ENTRY_EXCEPTION,
 4120|    110|      module_object,
 4121|    110|      "IMAGE_DIRECTORY_ENTRY_EXCEPTION");
 4122|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4123|    110|      IMAGE_DIRECTORY_ENTRY_SECURITY,
 4124|    110|      module_object,
 4125|    110|      "IMAGE_DIRECTORY_ENTRY_SECURITY");
 4126|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4127|    110|      IMAGE_DIRECTORY_ENTRY_BASERELOC,
 4128|    110|      module_object,
 4129|    110|      "IMAGE_DIRECTORY_ENTRY_BASERELOC");
 4130|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4131|    110|      IMAGE_DIRECTORY_ENTRY_DEBUG,
 4132|    110|      module_object,
 4133|    110|      "IMAGE_DIRECTORY_ENTRY_DEBUG");
 4134|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4135|    110|      IMAGE_DIRECTORY_ENTRY_ARCHITECTURE,
 4136|    110|      module_object,
 4137|    110|      "IMAGE_DIRECTORY_ENTRY_ARCHITECTURE");
 4138|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4139|    110|      IMAGE_DIRECTORY_ENTRY_COPYRIGHT,
 4140|    110|      module_object,
 4141|    110|      "IMAGE_DIRECTORY_ENTRY_COPYRIGHT");
 4142|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4143|    110|      IMAGE_DIRECTORY_ENTRY_GLOBALPTR,
 4144|    110|      module_object,
 4145|    110|      "IMAGE_DIRECTORY_ENTRY_GLOBALPTR");
 4146|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4147|    110|      IMAGE_DIRECTORY_ENTRY_TLS, module_object, "IMAGE_DIRECTORY_ENTRY_TLS");
 4148|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4149|    110|      IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG,
 4150|    110|      module_object,
 4151|    110|      "IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG");
 4152|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4153|    110|      IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT,
 4154|    110|      module_object,
 4155|    110|      "IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT");
 4156|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4157|    110|      IMAGE_DIRECTORY_ENTRY_IAT, module_object, "IMAGE_DIRECTORY_ENTRY_IAT");
 4158|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4159|    110|      IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT,
 4160|    110|      module_object,
 4161|    110|      "IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT");
 4162|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4163|    110|      IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR,
 4164|    110|      module_object,
 4165|    110|      "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR");
 4166|       |
 4167|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4168|    110|      IMAGE_NT_OPTIONAL_HDR32_MAGIC,
 4169|    110|      module_object,
 4170|    110|      "IMAGE_NT_OPTIONAL_HDR32_MAGIC");
 4171|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4172|    110|      IMAGE_NT_OPTIONAL_HDR64_MAGIC,
 4173|    110|      module_object,
 4174|    110|      "IMAGE_NT_OPTIONAL_HDR64_MAGIC");
 4175|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4176|    110|      IMAGE_ROM_OPTIONAL_HDR_MAGIC,
 4177|    110|      module_object,
 4178|    110|      "IMAGE_ROM_OPTIONAL_HDR_MAGIC");
 4179|       |
 4180|    110|  yr_set_integer(IMAGE_SCN_TYPE_NO_PAD, module_object, "SECTION_NO_PAD");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4181|    110|  yr_set_integer(IMAGE_SCN_CNT_CODE, module_object, "SECTION_CNT_CODE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4182|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4183|    110|      IMAGE_SCN_CNT_INITIALIZED_DATA,
 4184|    110|      module_object,
 4185|    110|      "SECTION_CNT_INITIALIZED_DATA");
 4186|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4187|    110|      IMAGE_SCN_CNT_UNINITIALIZED_DATA,
 4188|    110|      module_object,
 4189|    110|      "SECTION_CNT_UNINITIALIZED_DATA");
 4190|    110|  yr_set_integer(IMAGE_SCN_LNK_OTHER, module_object, "SECTION_LNK_OTHER");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4191|    110|  yr_set_integer(IMAGE_SCN_LNK_INFO, module_object, "SECTION_LNK_INFO");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4192|    110|  yr_set_integer(IMAGE_SCN_LNK_REMOVE, module_object, "SECTION_LNK_REMOVE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4193|    110|  yr_set_integer(IMAGE_SCN_LNK_COMDAT, module_object, "SECTION_LNK_COMDAT");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4194|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4195|    110|      IMAGE_SCN_NO_DEFER_SPEC_EXC, module_object, "SECTION_NO_DEFER_SPEC_EXC");
 4196|    110|  yr_set_integer(IMAGE_SCN_GPREL, module_object, "SECTION_GPREL");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4197|    110|  yr_set_integer(IMAGE_SCN_MEM_FARDATA, module_object, "SECTION_MEM_FARDATA");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4198|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4199|    110|      IMAGE_SCN_MEM_PURGEABLE, module_object, "SECTION_MEM_PURGEABLE");
 4200|    110|  yr_set_integer(IMAGE_SCN_MEM_16BIT, module_object, "SECTION_MEM_16BIT");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4201|    110|  yr_set_integer(IMAGE_SCN_MEM_LOCKED, module_object, "SECTION_MEM_LOCKED");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4202|    110|  yr_set_integer(IMAGE_SCN_MEM_PRELOAD, module_object, "SECTION_MEM_PRELOAD");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4203|    110|  yr_set_integer(IMAGE_SCN_ALIGN_1BYTES, module_object, "SECTION_ALIGN_1BYTES");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4204|    110|  yr_set_integer(IMAGE_SCN_ALIGN_2BYTES, module_object, "SECTION_ALIGN_2BYTES");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4205|    110|  yr_set_integer(IMAGE_SCN_ALIGN_4BYTES, module_object, "SECTION_ALIGN_4BYTES");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4206|    110|  yr_set_integer(IMAGE_SCN_ALIGN_8BYTES, module_object, "SECTION_ALIGN_8BYTES");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4207|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4208|    110|      IMAGE_SCN_ALIGN_16BYTES, module_object, "SECTION_ALIGN_16BYTES");
 4209|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4210|    110|      IMAGE_SCN_ALIGN_32BYTES, module_object, "SECTION_ALIGN_32BYTES");
 4211|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4212|    110|      IMAGE_SCN_ALIGN_64BYTES, module_object, "SECTION_ALIGN_64BYTES");
 4213|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4214|    110|      IMAGE_SCN_ALIGN_128BYTES, module_object, "SECTION_ALIGN_128BYTES");
 4215|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4216|    110|      IMAGE_SCN_ALIGN_256BYTES, module_object, "SECTION_ALIGN_256BYTES");
 4217|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4218|    110|      IMAGE_SCN_ALIGN_512BYTES, module_object, "SECTION_ALIGN_512BYTES");
 4219|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4220|    110|      IMAGE_SCN_ALIGN_1024BYTES, module_object, "SECTION_ALIGN_1024BYTES");
 4221|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4222|    110|      IMAGE_SCN_ALIGN_2048BYTES, module_object, "SECTION_ALIGN_2048BYTES");
 4223|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4224|    110|      IMAGE_SCN_ALIGN_4096BYTES, module_object, "SECTION_ALIGN_4096BYTES");
 4225|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4226|    110|      IMAGE_SCN_ALIGN_8192BYTES, module_object, "SECTION_ALIGN_8192BYTES");
 4227|    110|  yr_set_integer(IMAGE_SCN_ALIGN_MASK, module_object, "SECTION_ALIGN_MASK");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4228|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4229|    110|      IMAGE_SCN_LNK_NRELOC_OVFL, module_object, "SECTION_LNK_NRELOC_OVFL");
 4230|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4231|    110|      IMAGE_SCN_MEM_DISCARDABLE, module_object, "SECTION_MEM_DISCARDABLE");
 4232|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4233|    110|      IMAGE_SCN_MEM_NOT_CACHED, module_object, "SECTION_MEM_NOT_CACHED");
 4234|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4235|    110|      IMAGE_SCN_MEM_NOT_PAGED, module_object, "SECTION_MEM_NOT_PAGED");
 4236|    110|  yr_set_integer(IMAGE_SCN_MEM_SHARED, module_object, "SECTION_MEM_SHARED");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4237|    110|  yr_set_integer(IMAGE_SCN_MEM_EXECUTE, module_object, "SECTION_MEM_EXECUTE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4238|    110|  yr_set_integer(IMAGE_SCN_MEM_READ, module_object, "SECTION_MEM_READ");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4239|    110|  yr_set_integer(IMAGE_SCN_MEM_WRITE, module_object, "SECTION_MEM_WRITE");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4240|    110|  yr_set_integer(IMAGE_SCN_SCALE_INDEX, module_object, "SECTION_SCALE_INDEX");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4241|       |
 4242|    110|  yr_set_integer(RESOURCE_TYPE_CURSOR, module_object, "RESOURCE_TYPE_CURSOR");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4243|    110|  yr_set_integer(RESOURCE_TYPE_BITMAP, module_object, "RESOURCE_TYPE_BITMAP");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4244|    110|  yr_set_integer(RESOURCE_TYPE_ICON, module_object, "RESOURCE_TYPE_ICON");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4245|    110|  yr_set_integer(RESOURCE_TYPE_MENU, module_object, "RESOURCE_TYPE_MENU");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4246|    110|  yr_set_integer(RESOURCE_TYPE_DIALOG, module_object, "RESOURCE_TYPE_DIALOG");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4247|    110|  yr_set_integer(RESOURCE_TYPE_STRING, module_object, "RESOURCE_TYPE_STRING");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4248|    110|  yr_set_integer(RESOURCE_TYPE_FONTDIR, module_object, "RESOURCE_TYPE_FONTDIR");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4249|    110|  yr_set_integer(RESOURCE_TYPE_FONT, module_object, "RESOURCE_TYPE_FONT");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4250|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4251|    110|      RESOURCE_TYPE_ACCELERATOR, module_object, "RESOURCE_TYPE_ACCELERATOR");
 4252|    110|  yr_set_integer(RESOURCE_TYPE_RCDATA, module_object, "RESOURCE_TYPE_RCDATA");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4253|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4254|    110|      RESOURCE_TYPE_MESSAGETABLE, module_object, "RESOURCE_TYPE_MESSAGETABLE");
 4255|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4256|    110|      RESOURCE_TYPE_GROUP_CURSOR, module_object, "RESOURCE_TYPE_GROUP_CURSOR");
 4257|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4258|    110|      RESOURCE_TYPE_GROUP_ICON, module_object, "RESOURCE_TYPE_GROUP_ICON");
 4259|    110|  yr_set_integer(RESOURCE_TYPE_VERSION, module_object, "RESOURCE_TYPE_VERSION");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4260|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4261|    110|      RESOURCE_TYPE_DLGINCLUDE, module_object, "RESOURCE_TYPE_DLGINCLUDE");
 4262|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4263|    110|      RESOURCE_TYPE_PLUGPLAY, module_object, "RESOURCE_TYPE_PLUGPLAY");
 4264|    110|  yr_set_integer(RESOURCE_TYPE_VXD, module_object, "RESOURCE_TYPE_VXD");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4265|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4266|    110|      RESOURCE_TYPE_ANICURSOR, module_object, "RESOURCE_TYPE_ANICURSOR");
 4267|    110|  yr_set_integer(RESOURCE_TYPE_ANIICON, module_object, "RESOURCE_TYPE_ANIICON");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4268|    110|  yr_set_integer(RESOURCE_TYPE_HTML, module_object, "RESOURCE_TYPE_HTML");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4269|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4270|    110|      RESOURCE_TYPE_MANIFEST, module_object, "RESOURCE_TYPE_MANIFEST");
 4271|       |
 4272|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4273|    110|      IMAGE_DEBUG_TYPE_UNKNOWN, module_object, "IMAGE_DEBUG_TYPE_UNKNOWN");
 4274|    110|  yr_set_integer(IMAGE_DEBUG_TYPE_COFF, module_object, "IMAGE_DEBUG_TYPE_COFF");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4275|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4276|    110|      IMAGE_DEBUG_TYPE_CODEVIEW, module_object, "IMAGE_DEBUG_TYPE_CODEVIEW");
 4277|    110|  yr_set_integer(IMAGE_DEBUG_TYPE_FPO, module_object, "IMAGE_DEBUG_TYPE_FPO");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4278|    110|  yr_set_integer(IMAGE_DEBUG_TYPE_MISC, module_object, "IMAGE_DEBUG_TYPE_MISC");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4279|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4280|    110|      IMAGE_DEBUG_TYPE_EXCEPTION, module_object, "IMAGE_DEBUG_TYPE_EXCEPTION");
 4281|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4282|    110|      IMAGE_DEBUG_TYPE_FIXUP, module_object, "IMAGE_DEBUG_TYPE_FIXUP");
 4283|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4284|    110|      IMAGE_DEBUG_TYPE_OMAP_TO_SRC,
 4285|    110|      module_object,
 4286|    110|      "IMAGE_DEBUG_TYPE_OMAP_TO_SRC");
 4287|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4288|    110|      IMAGE_DEBUG_TYPE_OMAP_FROM_SRC,
 4289|    110|      module_object,
 4290|    110|      "IMAGE_DEBUG_TYPE_OMAP_FROM_SRC");
 4291|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4292|    110|      IMAGE_DEBUG_TYPE_BORLAND, module_object, "IMAGE_DEBUG_TYPE_BORLAND");
 4293|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4294|    110|      IMAGE_DEBUG_TYPE_RESERVED10,
 4295|    110|      module_object,
 4296|    110|      "IMAGE_DEBUG_TYPE_RESERVED10");
 4297|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4298|    110|      IMAGE_DEBUG_TYPE_CLSID, module_object, "IMAGE_DEBUG_TYPE_CLSID");
 4299|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4300|    110|      IMAGE_DEBUG_TYPE_VC_FEATURE,
 4301|    110|      module_object,
 4302|    110|      "IMAGE_DEBUG_TYPE_VC_FEATURE");
 4303|    110|  yr_set_integer(IMAGE_DEBUG_TYPE_POGO, module_object, "IMAGE_DEBUG_TYPE_POGO");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4304|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4305|    110|      IMAGE_DEBUG_TYPE_ILTCG, module_object, "IMAGE_DEBUG_TYPE_ILTCG");
 4306|    110|  yr_set_integer(IMAGE_DEBUG_TYPE_MPX, module_object, "IMAGE_DEBUG_TYPE_MPX");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4307|    110|  yr_set_integer(
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4308|    110|      IMAGE_DEBUG_TYPE_REPRO, module_object, "IMAGE_DEBUG_TYPE_REPRO");
 4309|       |
 4310|    110|  yr_set_integer(0, module_object, "is_pe");
  ------------------
  |  |  236|    110|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 4311|       |
 4312|    110|  foreach_memory_block(iterator, block)
  ------------------
  |  |  218|    112|  for (block = iterator->first(iterator); block != NULL; \
  |  |  ------------------
  |  |  |  Branch (218:43): [True: 110, False: 2]
  |  |  ------------------
  |  |  219|    110|       block = iterator->next(iterator))
  ------------------
 4313|    110|  {
 4314|    110|    block_data = block->fetch_data(block);
 4315|       |
 4316|    110|    if (block_data == NULL)
  ------------------
  |  Branch (4316:9): [True: 0, False: 110]
  ------------------
 4317|      0|      continue;
 4318|       |
 4319|    110|    pe_header = pe_get_header(block_data, block->size);
 4320|       |
 4321|    110|    if (pe_header != NULL)
  ------------------
  |  Branch (4321:9): [True: 108, False: 2]
  ------------------
 4322|    108|    {
 4323|       |      // Ignore DLLs while scanning a process
 4324|       |
 4325|    108|      if (!(context->flags & SCAN_FLAGS_PROCESS_MEMORY) ||
  ------------------
  |  |   39|    108|#define SCAN_FLAGS_PROCESS_MEMORY            2
  ------------------
  |  Branch (4325:11): [True: 108, False: 0]
  ------------------
 4326|    108|          !(yr_le16toh(pe_header->FileHeader.Characteristics) & IMAGE_FILE_DLL))
  ------------------
  |  |   88|      0|#define yr_le16toh(x) (x)
  ------------------
                        !(yr_le16toh(pe_header->FileHeader.Characteristics) & IMAGE_FILE_DLL))
  ------------------
  |  |  159|      0|#define IMAGE_FILE_DLL                     0x2000
  ------------------
  |  Branch (4326:11): [True: 0, False: 0]
  ------------------
 4327|    108|      {
 4328|    108|        pe = (PE*) yr_malloc(sizeof(PE));
 4329|       |
 4330|    108|        if (pe == NULL)
  ------------------
  |  Branch (4330:13): [True: 0, False: 108]
  ------------------
 4331|      0|          return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 4332|       |
 4333|    108|        FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    108|  {                                            \
  |  |  141|    108|    int __error = (x);                         \
  |  |  142|    108|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    108|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 108]
  |  |  ------------------
  |  |  143|    108|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    108|  }
  ------------------
 4334|    108|            yr_hash_table_create(17, &pe->hash_table), yr_free(pe));
 4335|       |
 4336|    108|        pe->data = block_data;
 4337|    108|        pe->data_size = block->size;
 4338|    108|        pe->header = pe_header;
 4339|    108|        pe->object = module_object;
 4340|    108|        pe->resources = 0;
 4341|    108|        pe->version_infos = 0;
 4342|       |
 4343|    108|        module_object->data = pe;
 4344|       |
 4345|    108|        pe_parse_header(pe, block->base, context->flags);
 4346|    108|        pe_parse_rich_signature(pe, block->base);
 4347|    108|        pe_parse_debug_directory(pe);
 4348|       |
 4349|       |#if defined(HAVE_LIBCRYPTO) && !defined(BORINGSSL)
 4350|       |        pe_parse_certificates(pe);
 4351|       |#endif
 4352|       |
 4353|    108|        pe->imported_dlls = pe_parse_imports(pe);
 4354|    108|        pe->delay_imported_dlls = pe_parse_delayed_imports(pe);
 4355|    108|        pe_parse_exports(pe);
 4356|       |
 4357|    108|        break;
 4358|    108|      }
 4359|    108|    }
 4360|    110|  }
 4361|       |
 4362|    110|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
 4363|    110|}
free_dlls:
 4366|    216|{
 4367|    216|  IMPORTED_DLL* next_dll = NULL;
 4368|    216|  IMPORT_FUNCTION* func = NULL;
 4369|    216|  IMPORT_FUNCTION* next_func = NULL;
 4370|       |
 4371|    982|  while (dll)
  ------------------
  |  Branch (4371:10): [True: 766, False: 216]
  ------------------
 4372|    766|  {
 4373|    766|    if (dll->name)
  ------------------
  |  Branch (4373:9): [True: 766, False: 0]
  ------------------
 4374|    766|      yr_free(dll->name);
 4375|       |
 4376|    766|    func = dll->functions;
 4377|       |
 4378|  2.20M|    while (func)
  ------------------
  |  Branch (4378:12): [True: 2.20M, False: 766]
  ------------------
 4379|  2.20M|    {
 4380|  2.20M|      if (func->name)
  ------------------
  |  Branch (4380:11): [True: 2.20M, False: 0]
  ------------------
 4381|  2.20M|        yr_free(func->name);
 4382|       |
 4383|  2.20M|      next_func = func->next;
 4384|  2.20M|      yr_free(func);
 4385|  2.20M|      func = next_func;
 4386|  2.20M|    }
 4387|       |
 4388|    766|    next_dll = dll->next;
 4389|    766|    yr_free(dll);
 4390|    766|    dll = next_dll;
 4391|    766|  }
 4392|    216|}
pe__unload:
 4395|    110|{
 4396|    110|  PE* pe = (PE*) module_object->data;
 4397|       |
 4398|    110|  if (pe == NULL)
  ------------------
  |  Branch (4398:7): [True: 2, False: 108]
  ------------------
 4399|      2|    return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 4400|       |
 4401|    108|  if (pe->hash_table != NULL)
  ------------------
  |  Branch (4401:7): [True: 108, False: 0]
  ------------------
 4402|    108|    yr_hash_table_destroy(
 4403|    108|        pe->hash_table, (YR_HASH_TABLE_FREE_VALUE_FUNC) yr_free);
 4404|       |
 4405|    108|  free_dlls(pe->imported_dlls);
 4406|    108|  free_dlls(pe->delay_imported_dlls);
 4407|       |
 4408|    108|  yr_free(pe);
 4409|       |
 4410|    108|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    108|#define ERROR_SUCCESS 0
  ------------------
 4411|    110|}
pe.c:pe_valid_dll_name:
 1060|  2.28k|{
 1061|  2.28k|  const unsigned char* c = (const unsigned char*) dll_name;
 1062|  2.28k|  size_t l = 0;
 1063|       |
 1064|  1.66M|  while (l < n && *c != '\0')
  ------------------
  |  Branch (1064:10): [True: 1.66M, False: 2]
  |  Branch (1064:19): [True: 1.66M, False: 1.28k]
  ------------------
 1065|  1.66M|  {
 1066|  1.66M|    if (*c < ' ' || *c == '\"' || *c == '*' || *c == '<' || *c == '>' ||
  ------------------
  |  Branch (1066:9): [True: 807, False: 1.65M]
  |  Branch (1066:21): [True: 72, False: 1.65M]
  |  Branch (1066:35): [True: 5, False: 1.65M]
  |  Branch (1066:48): [True: 2, False: 1.65M]
  |  Branch (1066:61): [True: 2, False: 1.65M]
  ------------------
 1067|  1.66M|        *c == '?' || *c == '|')
  ------------------
  |  Branch (1067:9): [True: 105, False: 1.65M]
  |  Branch (1067:22): [True: 11, False: 1.65M]
  ------------------
 1068|  1.00k|    {
 1069|  1.00k|      return false;
 1070|  1.00k|    }
 1071|       |
 1072|  1.65M|    c++;
 1073|  1.65M|    l++;
 1074|  1.65M|  }
 1075|       |
 1076|  1.28k|  return (l > 0 && l < n);
  ------------------
  |  Branch (1076:11): [True: 997, False: 285]
  |  Branch (1076:20): [True: 995, False: 2]
  ------------------
 1077|  2.28k|}
pe.c:pe_parse_header:
 2044|    108|{
 2045|    108|  PIMAGE_SECTION_HEADER section;
 2046|    108|  PIMAGE_DATA_DIRECTORY data_dir;
 2047|       |
 2048|    108|  char section_name[IMAGE_SIZEOF_SHORT_NAME + 1];
 2049|    108|  int sect_name_length, scount, ddcount;
 2050|       |
 2051|    108|  uint64_t highest_sec_siz = 0;
 2052|    108|  uint64_t highest_sec_ofs = 0;
 2053|    108|  uint64_t section_end;
 2054|    108|  uint64_t last_section_end;
 2055|       |
 2056|    108|  yr_set_integer(1, pe->object, "is_pe");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2057|       |
 2058|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2059|    108|      yr_le16toh(pe->header->FileHeader.Machine), pe->object, "machine");
 2060|       |
 2061|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2062|    108|      yr_le16toh(pe->header->FileHeader.NumberOfSections),
 2063|    108|      pe->object,
 2064|    108|      "number_of_sections");
 2065|       |
 2066|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2067|    108|      yr_le32toh(pe->header->FileHeader.TimeDateStamp),
 2068|    108|      pe->object,
 2069|    108|      "timestamp");
 2070|       |
 2071|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2072|    108|      yr_le32toh(pe->header->FileHeader.PointerToSymbolTable),
 2073|    108|      pe->object,
 2074|    108|      "pointer_to_symbol_table");
 2075|       |
 2076|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2077|    108|      yr_le32toh(pe->header->FileHeader.NumberOfSymbols),
 2078|    108|      pe->object,
 2079|    108|      "number_of_symbols");
 2080|       |
 2081|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2082|    108|      yr_le16toh(pe->header->FileHeader.SizeOfOptionalHeader),
 2083|    108|      pe->object,
 2084|    108|      "size_of_optional_header");
 2085|       |
 2086|    108|  yr_set_integer(
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2087|    108|      yr_le16toh(pe->header->FileHeader.Characteristics),
 2088|    108|      pe->object,
 2089|    108|      "characteristics");
 2090|       |
 2091|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 0, False: 0]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  |  Branch (236:25): [True: 0, False: 108]
  |  |  ------------------
  ------------------
 2092|    108|      flags & SCAN_FLAGS_PROCESS_MEMORY
 2093|    108|          ? base_address + yr_le32toh(OptionalHeader(pe, AddressOfEntryPoint))
 2094|    108|          : pe_rva_to_offset(
 2095|    108|                pe, yr_le32toh(OptionalHeader(pe, AddressOfEntryPoint))),
 2096|    108|      pe->object,
 2097|    108|      "entry_point");
 2098|       |
 2099|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2100|    108|      yr_le32toh(OptionalHeader(pe, AddressOfEntryPoint)),
 2101|    108|      pe->object,
 2102|    108|      "entry_point_raw");
 2103|       |
 2104|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 0]
  |  |  |  Branch (236:25): [True: 0, False: 45]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2105|    108|      IS_64BITS_PE(pe) ? yr_le64toh(OptionalHeader(pe, ImageBase))
 2106|    108|                       : yr_le32toh(OptionalHeader(pe, ImageBase)),
 2107|    108|      pe->object,
 2108|    108|      "image_base");
 2109|       |
 2110|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2111|    108|      yr_le32toh(OptionalHeader(pe, NumberOfRvaAndSizes)),
 2112|    108|      pe->object,
 2113|    108|      "number_of_rva_and_sizes");
 2114|       |
 2115|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2116|    108|      yr_le16toh(OptionalHeader(pe, Magic)), pe->object, "opthdr_magic");
 2117|       |
 2118|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2119|    108|      OptionalHeader(pe, MajorLinkerVersion),
 2120|    108|      pe->object,
 2121|    108|      "linker_version.major");
 2122|       |
 2123|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2124|    108|      OptionalHeader(pe, MinorLinkerVersion),
 2125|    108|      pe->object,
 2126|    108|      "linker_version.minor");
 2127|       |
 2128|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2129|    108|      yr_le32toh(OptionalHeader(pe, SizeOfCode)), pe->object, "size_of_code");
 2130|       |
 2131|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2132|    108|      yr_le32toh(OptionalHeader(pe, SizeOfInitializedData)),
 2133|    108|      pe->object,
 2134|    108|      "size_of_initialized_data");
 2135|       |
 2136|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2137|    108|      yr_le32toh(OptionalHeader(pe, SizeOfUninitializedData)),
 2138|    108|      pe->object,
 2139|    108|      "size_of_uninitialized_data");
 2140|       |
 2141|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2142|    108|      yr_le32toh(OptionalHeader(pe, BaseOfCode)), pe->object, "base_of_code");
 2143|       |
 2144|    108|  if (!IS_64BITS_PE(pe))
  ------------------
  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
  |  Branch (2144:7): [True: 45, False: 63]
  ------------------
 2145|     45|  {
 2146|     45|    yr_set_integer(
  ------------------
  |  |  236|     45|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2147|     45|        yr_le32toh(pe->header->OptionalHeader.BaseOfData),
 2148|     45|        pe->object,
 2149|     45|        "base_of_data");
 2150|     45|  }
 2151|       |
 2152|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2153|    108|      yr_le32toh(OptionalHeader(pe, SectionAlignment)),
 2154|    108|      pe->object,
 2155|    108|      "section_alignment");
 2156|       |
 2157|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2158|    108|      yr_le32toh(OptionalHeader(pe, FileAlignment)),
 2159|    108|      pe->object,
 2160|    108|      "file_alignment");
 2161|       |
 2162|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2163|    108|      yr_le16toh(OptionalHeader(pe, MajorOperatingSystemVersion)),
 2164|    108|      pe->object,
 2165|    108|      "os_version.major");
 2166|       |
 2167|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2168|    108|      yr_le16toh(OptionalHeader(pe, MinorOperatingSystemVersion)),
 2169|    108|      pe->object,
 2170|    108|      "os_version.minor");
 2171|       |
 2172|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2173|    108|      yr_le16toh(OptionalHeader(pe, MajorImageVersion)),
 2174|    108|      pe->object,
 2175|    108|      "image_version.major");
 2176|       |
 2177|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2178|    108|      yr_le16toh(OptionalHeader(pe, MinorImageVersion)),
 2179|    108|      pe->object,
 2180|    108|      "image_version.minor");
 2181|       |
 2182|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2183|    108|      yr_le16toh(OptionalHeader(pe, MajorSubsystemVersion)),
 2184|    108|      pe->object,
 2185|    108|      "subsystem_version.major");
 2186|       |
 2187|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2188|    108|      yr_le16toh(OptionalHeader(pe, MinorSubsystemVersion)),
 2189|    108|      pe->object,
 2190|    108|      "subsystem_version.minor");
 2191|       |
 2192|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2193|    108|      yr_le32toh(OptionalHeader(pe, Win32VersionValue)),
 2194|    108|      pe->object,
 2195|    108|      "win32_version_value");
 2196|       |
 2197|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2198|    108|      yr_le32toh(OptionalHeader(pe, SizeOfImage)), pe->object, "size_of_image");
 2199|       |
 2200|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2201|    108|      yr_le32toh(OptionalHeader(pe, SizeOfHeaders)),
 2202|    108|      pe->object,
 2203|    108|      "size_of_headers");
 2204|       |
 2205|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2206|    108|      yr_le32toh(OptionalHeader(pe, CheckSum)), pe->object, "checksum");
 2207|       |
 2208|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2209|    108|      yr_le16toh(OptionalHeader(pe, Subsystem)), pe->object, "subsystem");
 2210|       |
 2211|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2212|    108|      yr_le16toh(OptionalHeader(pe, DllCharacteristics)),
 2213|    108|      pe->object,
 2214|    108|      "dll_characteristics");
 2215|       |
 2216|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 0]
  |  |  |  Branch (236:25): [True: 0, False: 45]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2217|    108|      IS_64BITS_PE(pe) ? yr_le64toh(OptionalHeader(pe, SizeOfStackReserve))
 2218|    108|                       : yr_le32toh(OptionalHeader(pe, SizeOfStackReserve)),
 2219|    108|      pe->object,
 2220|    108|      "size_of_stack_reserve");
 2221|       |
 2222|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 0]
  |  |  |  Branch (236:25): [True: 0, False: 45]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2223|    108|      IS_64BITS_PE(pe) ? yr_le64toh(OptionalHeader(pe, SizeOfStackCommit))
 2224|    108|                       : yr_le32toh(OptionalHeader(pe, SizeOfStackCommit)),
 2225|    108|      pe->object,
 2226|    108|      "size_of_stack_commit");
 2227|       |
 2228|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 0]
  |  |  |  Branch (236:25): [True: 0, False: 45]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2229|    108|      IS_64BITS_PE(pe) ? yr_le64toh(OptionalHeader(pe, SizeOfHeapReserve))
 2230|    108|                       : yr_le32toh(OptionalHeader(pe, SizeOfHeapReserve)),
 2231|    108|      pe->object,
 2232|    108|      "size_of_heap_reserve");
 2233|       |
 2234|    108|  yr_set_integer(
  ------------------
  |  |  236|    432|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 0]
  |  |  |  Branch (236:25): [True: 0, False: 45]
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2235|    108|      IS_64BITS_PE(pe) ? yr_le64toh(OptionalHeader(pe, SizeOfHeapCommit))
 2236|    108|                       : yr_le32toh(OptionalHeader(pe, SizeOfHeapCommit)),
 2237|    108|      pe->object,
 2238|    108|      "size_of_heap_commit");
 2239|       |
 2240|    108|  yr_set_integer(
  ------------------
  |  |  236|    216|  yr_object_set_integer(value, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (236:25): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2241|    108|      yr_le32toh(OptionalHeader(pe, LoaderFlags)), pe->object, "loader_flags");
 2242|       |
 2243|    108|  data_dir = IS_64BITS_PE(pe) ? pe->header64->OptionalHeader.DataDirectory
  ------------------
  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (9:3): [True: 63, False: 45]
  |  |  ------------------
  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
 2244|    108|                              : pe->header->OptionalHeader.DataDirectory;
 2245|       |
 2246|    108|  ddcount = yr_le32toh(OptionalHeader(pe, NumberOfRvaAndSizes));
  ------------------
  |  |   89|    216|#define yr_le32toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (89:24): [True: 63, False: 45]
  |  |  ------------------
  ------------------
 2247|    108|  ddcount = yr_min(ddcount, IMAGE_NUMBEROF_DIRECTORY_ENTRIES);
  ------------------
  |  |  107|    108|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 4, False: 104]
  |  |  ------------------
  ------------------
 2248|       |
 2249|  1.77k|  for (int i = 0; i < ddcount; i++)
  ------------------
  |  Branch (2249:19): [True: 1.66k, False: 108]
  ------------------
 2250|  1.66k|  {
 2251|  1.66k|    if (!struct_fits_in_pe(pe, data_dir, IMAGE_DATA_DIRECTORY))
  ------------------
  |  |   77|  1.66k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  1.66k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1.66k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  1.66k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2252|      0|      break;
 2253|       |
 2254|  1.66k|    yr_set_integer(
  ------------------
  |  |  236|  1.66k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2255|  1.66k|        yr_le32toh(data_dir->VirtualAddress),
 2256|  1.66k|        pe->object,
 2257|  1.66k|        "data_directories[%i].virtual_address",
 2258|  1.66k|        i);
 2259|       |
 2260|  1.66k|    yr_set_integer(
  ------------------
  |  |  236|  1.66k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2261|  1.66k|        yr_le32toh(data_dir->Size), pe->object, "data_directories[%i].size", i);
 2262|       |
 2263|  1.66k|    data_dir++;
 2264|  1.66k|  }
 2265|       |
 2266|    108|  pe_iterate_resources(
 2267|    108|      pe, (RESOURCE_CALLBACK_FUNC) pe_collect_resources, (void*) pe);
 2268|       |
 2269|    108|  yr_set_integer(pe->resources, pe->object, "number_of_resources");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2270|    108|  yr_set_integer(pe->version_infos, pe->object, "number_of_version_infos");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2271|       |
 2272|    108|  section = IMAGE_FIRST_SECTION(pe->header);
  ------------------
  |  |  369|    108|  ((PIMAGE_SECTION_HEADER)(                                             \
  |  |  370|    108|      (BYTE*) ntheader + offsetof(IMAGE_NT_HEADERS32, OptionalHeader) + \
  |  |  371|    108|      yr_le16toh(((PIMAGE_NT_HEADERS32)(ntheader))                      \
  |  |  ------------------
  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  372|    108|                     ->FileHeader.SizeOfOptionalHeader)))
  ------------------
 2273|       |
 2274|    108|  scount = yr_min(
  ------------------
  |  |  107|    108|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 94, False: 14]
  |  |  ------------------
  ------------------
 2275|    108|      yr_le16toh(pe->header->FileHeader.NumberOfSections), MAX_PE_SECTIONS);
 2276|       |
 2277|  1.72k|  for (int i = 0; i < scount; i++)
  ------------------
  |  Branch (2277:19): [True: 1.61k, False: 108]
  ------------------
 2278|  1.61k|  {
 2279|  1.61k|    if (!struct_fits_in_pe(pe, section, IMAGE_SECTION_HEADER))
  ------------------
  |  |   77|  1.61k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  1.61k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1.61k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1.61k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  1.61k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1.61k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2280|      0|      break;
 2281|       |
 2282|  1.61k|    memcpy(section_name, section->Name, IMAGE_SIZEOF_SHORT_NAME);
  ------------------
  |  |  409|  1.61k|#define IMAGE_SIZEOF_SHORT_NAME 8
  ------------------
 2283|  1.61k|    section_name[IMAGE_SIZEOF_SHORT_NAME] = '\0';
  ------------------
  |  |  409|  1.61k|#define IMAGE_SIZEOF_SHORT_NAME 8
  ------------------
 2284|       |
 2285|       |    // Basically do rstrip('\0'), find the rightmost non-null character.
 2286|       |    // Samples like
 2287|       |    // 0043812838495a45449a0ac61a81b9c16eddca1ad249fb4f7fdb1c4505e9bb34 contain
 2288|       |    // sections with additional characters after the first null.
 2289|  1.93k|    for (sect_name_length = IMAGE_SIZEOF_SHORT_NAME - 1; sect_name_length >= 0;
  ------------------
  |  |  409|  1.61k|#define IMAGE_SIZEOF_SHORT_NAME 8
  ------------------
  |  Branch (2289:58): [True: 1.93k, False: 0]
  ------------------
 2290|  1.61k|         --sect_name_length)
 2291|  1.93k|    {
 2292|  1.93k|      if (section_name[sect_name_length] != '\0')
  ------------------
  |  Branch (2292:11): [True: 1.61k, False: 323]
  ------------------
 2293|  1.61k|        break;
 2294|  1.93k|    }
 2295|       |
 2296|  1.61k|    uint64_t sect_full_name_length = 0;
 2297|  1.61k|    const char* full_section_name = pe_get_section_full_name(
 2298|  1.61k|        pe, section_name, sect_name_length + 1, &sect_full_name_length);
 2299|       |
 2300|  1.61k|    yr_set_sized_string(
  ------------------
  |  |  242|  1.61k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
 2301|  1.61k|        (char*) section_name,
 2302|  1.61k|        sect_name_length + 1,
 2303|  1.61k|        pe->object,
 2304|  1.61k|        "sections[%i].name",
 2305|  1.61k|        i);
 2306|       |
 2307|  1.61k|    yr_set_sized_string(
  ------------------
  |  |  242|  1.61k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
 2308|  1.61k|        full_section_name,
 2309|  1.61k|        sect_full_name_length,
 2310|  1.61k|        pe->object,
 2311|  1.61k|        "sections[%i].full_name",
 2312|  1.61k|        i);
 2313|       |
 2314|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2315|  1.61k|        yr_le32toh(section->Characteristics),
 2316|  1.61k|        pe->object,
 2317|  1.61k|        "sections[%i].characteristics",
 2318|  1.61k|        i);
 2319|       |
 2320|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2321|  1.61k|        yr_le32toh(section->SizeOfRawData),
 2322|  1.61k|        pe->object,
 2323|  1.61k|        "sections[%i].raw_data_size",
 2324|  1.61k|        i);
 2325|       |
 2326|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2327|  1.61k|        yr_le32toh(section->PointerToRawData),
 2328|  1.61k|        pe->object,
 2329|  1.61k|        "sections[%i].raw_data_offset",
 2330|  1.61k|        i);
 2331|       |
 2332|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2333|  1.61k|        yr_le32toh(section->VirtualAddress),
 2334|  1.61k|        pe->object,
 2335|  1.61k|        "sections[%i].virtual_address",
 2336|  1.61k|        i);
 2337|       |
 2338|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2339|  1.61k|        yr_le32toh(section->Misc.VirtualSize),
 2340|  1.61k|        pe->object,
 2341|  1.61k|        "sections[%i].virtual_size",
 2342|  1.61k|        i);
 2343|       |
 2344|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2345|  1.61k|        yr_le32toh(section->PointerToRelocations),
 2346|  1.61k|        pe->object,
 2347|  1.61k|        "sections[%i].pointer_to_relocations",
 2348|  1.61k|        i);
 2349|       |
 2350|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2351|  1.61k|        yr_le32toh(section->PointerToLinenumbers),
 2352|  1.61k|        pe->object,
 2353|  1.61k|        "sections[%i].pointer_to_line_numbers",
 2354|  1.61k|        i);
 2355|       |
 2356|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2357|  1.61k|        yr_le32toh(section->NumberOfRelocations),
 2358|  1.61k|        pe->object,
 2359|  1.61k|        "sections[%i].number_of_relocations",
 2360|  1.61k|        i);
 2361|       |
 2362|  1.61k|    yr_set_integer(
  ------------------
  |  |  236|  1.61k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2363|  1.61k|        yr_le32toh(section->NumberOfLinenumbers),
 2364|  1.61k|        pe->object,
 2365|  1.61k|        "sections[%i].number_of_line_numbers",
 2366|  1.61k|        i);
 2367|       |
 2368|       |    // This will catch the section with the highest raw offset to help checking
 2369|       |    // if overlay data is present. If two sections have the same raw pointer
 2370|       |    // but different raw sizes the largest one is used. An example of this case
 2371|       |    // is file: cf62bf1815a93e68e6c5189f689286b66c4088b9507cf3ecf835e4ac3f9ededa
 2372|       |
 2373|  1.61k|    section_end = yr_le32toh(section->PointerToRawData) +
  ------------------
  |  |   89|  1.61k|#define yr_le32toh(x) (x)
  ------------------
 2374|  1.61k|                  yr_le32toh(section->SizeOfRawData);
  ------------------
  |  |   89|  1.61k|#define yr_le32toh(x) (x)
  ------------------
 2375|       |
 2376|  1.61k|    if (section_end > highest_sec_ofs + highest_sec_siz)
  ------------------
  |  Branch (2376:9): [True: 105, False: 1.50k]
  ------------------
 2377|    105|    {
 2378|    105|      highest_sec_ofs = yr_le32toh(section->PointerToRawData);
  ------------------
  |  |   89|    105|#define yr_le32toh(x) (x)
  ------------------
 2379|    105|      highest_sec_siz = yr_le32toh(section->SizeOfRawData);
  ------------------
  |  |   89|    105|#define yr_le32toh(x) (x)
  ------------------
 2380|    105|    }
 2381|       |
 2382|  1.61k|    section++;
 2383|  1.61k|  }
 2384|       |
 2385|       |  // An overlay is data appended to a PE file. Its location is at
 2386|       |  // RawData + RawOffset of the last section on the physical file
 2387|    108|  last_section_end = highest_sec_siz + highest_sec_ofs;
 2388|       |
 2389|       |  // For PE files that have overlaid data overlay.offset contains the offset
 2390|       |  // within the file where the overlay starts and overlay.size contains the
 2391|       |  // size. If the PE file doesn't have an overlay both fields are 0, if the
 2392|       |  // file is not a PE file (or is a malformed PE) both fields are YR_UNDEFINED.
 2393|    108|  if (last_section_end && (pe->data_size > last_section_end))
  ------------------
  |  Branch (2393:7): [True: 82, False: 26]
  |  Branch (2393:27): [True: 15, False: 67]
  ------------------
 2394|     15|  {
 2395|     15|    yr_set_integer(last_section_end, pe->object, "overlay.offset");
  ------------------
  |  |  236|     15|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2396|     15|    yr_set_integer(
  ------------------
  |  |  236|     15|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2397|     15|        pe->data_size - last_section_end, pe->object, "overlay.size");
 2398|     15|  }
 2399|     93|  else
 2400|     93|  {
 2401|     93|    yr_set_integer(0, pe->object, "overlay.offset");
  ------------------
  |  |  236|     93|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2402|     93|    yr_set_integer(0, pe->object, "overlay.size");
  ------------------
  |  |  236|     93|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 2403|     93|  }
 2404|    108|}
pe.c:pe_iterate_resources:
  560|    108|{
  561|    108|  int64_t offset;
  562|       |
  563|    108|  int type = -1;
  564|    108|  int id = -1;
  565|    108|  int language = -1;
  566|       |
  567|    108|  IMAGE_RESOURCE_DIR_STRING_U* type_string = NULL;
  568|    108|  IMAGE_RESOURCE_DIR_STRING_U* name_string = NULL;
  569|    108|  IMAGE_RESOURCE_DIR_STRING_U* lang_string = NULL;
  570|       |
  571|    108|  PIMAGE_DATA_DIRECTORY directory = pe_get_directory_entry(
  572|    108|      pe, IMAGE_DIRECTORY_ENTRY_RESOURCE);
  ------------------
  |  |  255|    108|#define IMAGE_DIRECTORY_ENTRY_RESOURCE       2
  ------------------
  573|       |
  574|    108|  if (directory == NULL)
  ------------------
  |  Branch (574:7): [True: 0, False: 108]
  ------------------
  575|      0|    return 0;
  576|       |
  577|    108|  if (yr_le32toh(directory->VirtualAddress) != 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (577:7): [True: 105, False: 3]
  ------------------
  578|    105|  {
  579|    105|    PIMAGE_RESOURCE_DIRECTORY rsrc_dir;
  580|       |
  581|    105|    offset = pe_rva_to_offset(pe, yr_le32toh(directory->VirtualAddress));
  ------------------
  |  |   89|    105|#define yr_le32toh(x) (x)
  ------------------
  582|       |
  583|    105|    if (offset < 0)
  ------------------
  |  Branch (583:9): [True: 50, False: 55]
  ------------------
  584|     50|      return 0;
  585|       |
  586|     55|    rsrc_dir = (PIMAGE_RESOURCE_DIRECTORY) (pe->data + offset);
  587|       |
  588|     55|    if (struct_fits_in_pe(pe, rsrc_dir, IMAGE_RESOURCE_DIRECTORY))
  ------------------
  |  |   77|     55|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|     55|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 55, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 55, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|     55|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 55, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|     55|    {
  590|     55|      yr_set_integer(
  ------------------
  |  |  236|     55|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  591|     55|          yr_le32toh(rsrc_dir->TimeDateStamp),
  592|     55|          pe->object,
  593|     55|          "resource_timestamp");
  594|       |
  595|     55|      yr_set_integer(
  ------------------
  |  |  236|     55|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  596|     55|          yr_le16toh(rsrc_dir->MajorVersion),
  597|     55|          pe->object,
  598|     55|          "resource_version.major");
  599|       |
  600|     55|      yr_set_integer(
  ------------------
  |  |  236|     55|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  601|     55|          yr_le16toh(rsrc_dir->MinorVersion),
  602|     55|          pe->object,
  603|     55|          "resource_version.minor");
  604|       |
  605|     55|      _pe_iterate_resources(
  606|     55|          pe,
  607|     55|          rsrc_dir,
  608|     55|          pe->data + offset,
  609|     55|          0,
  610|     55|          &type,
  611|     55|          &id,
  612|     55|          &language,
  613|     55|          type_string,
  614|     55|          name_string,
  615|     55|          lang_string,
  616|     55|          callback,
  617|     55|          callback_data);
  618|       |
  619|     55|      return 1;
  620|     55|    }
  621|     55|  }
  622|       |
  623|      3|  return 0;
  624|    108|}
pe.c:_pe_iterate_resources:
  447|    143|{
  448|    143|  int i, result = RESOURCE_ITERATOR_FINISHED;
  ------------------
  |  |   83|    143|#define RESOURCE_ITERATOR_FINISHED 0
  ------------------
  449|    143|  int total_entries;
  450|       |
  451|    143|  PIMAGE_RESOURCE_DIRECTORY_ENTRY entry;
  452|       |
  453|       |  // A few sanity checks to avoid corrupt files
  454|       |
  455|    143|  if (yr_le32toh(resource_dir->Characteristics) != 0 ||
  ------------------
  |  |   89|    143|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (455:7): [True: 23, False: 120]
  ------------------
  456|    143|      yr_le16toh(resource_dir->NumberOfNamedEntries) > 32768 ||
  ------------------
  |  |   88|    120|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (456:7): [True: 0, False: 120]
  ------------------
  457|    143|      yr_le16toh(resource_dir->NumberOfIdEntries) > 32768)
  ------------------
  |  |   88|    120|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (457:7): [True: 0, False: 120]
  ------------------
  458|     23|  {
  459|     23|    return result;
  460|     23|  }
  461|       |
  462|    120|  total_entries = yr_le16toh(resource_dir->NumberOfNamedEntries) +
  ------------------
  |  |   88|    120|#define yr_le16toh(x) (x)
  ------------------
  463|    120|                  yr_le16toh(resource_dir->NumberOfIdEntries);
  ------------------
  |  |   88|    120|#define yr_le16toh(x) (x)
  ------------------
  464|       |
  465|       |  // The first directory entry is just after the resource directory,
  466|       |  // by incrementing resource_dir we skip sizeof(resource_dir) bytes
  467|       |  // and get a pointer to the end of the resource directory.
  468|       |
  469|    120|  entry = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (resource_dir + 1);
  470|       |
  471|  1.07k|  for (i = 0; i < total_entries; i++)
  ------------------
  |  Branch (471:15): [True: 1.03k, False: 42]
  ------------------
  472|  1.03k|  {
  473|  1.03k|    if (!struct_fits_in_pe(pe, entry, IMAGE_RESOURCE_DIRECTORY_ENTRY))
  ------------------
  |  |   77|  1.03k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  1.03k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1.03k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1.03k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  1.03k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  474|      0|    {
  475|      0|      result = RESOURCE_ITERATOR_ABORTED;
  ------------------
  |  |   84|      0|#define RESOURCE_ITERATOR_ABORTED  1
  ------------------
  476|      0|      break;
  477|      0|    }
  478|       |
  479|  1.03k|    switch (rsrc_tree_level)
  ------------------
  |  Branch (479:13): [True: 0, False: 1.03k]
  ------------------
  480|  1.03k|    {
  481|    168|    case 0:
  ------------------
  |  Branch (481:5): [True: 168, False: 869]
  ------------------
  482|    168|      *type = yr_le32toh(entry->Name);
  ------------------
  |  |   89|    168|#define yr_le32toh(x) (x)
  ------------------
  483|    168|      type_string = parse_resource_name(pe, rsrc_data, entry);
  484|    168|      break;
  485|    264|    case 1:
  ------------------
  |  Branch (485:5): [True: 264, False: 773]
  ------------------
  486|    264|      *id = yr_le32toh(entry->Name);
  ------------------
  |  |   89|    264|#define yr_le32toh(x) (x)
  ------------------
  487|    264|      name_string = parse_resource_name(pe, rsrc_data, entry);
  488|    264|      break;
  489|    605|    case 2:
  ------------------
  |  Branch (489:5): [True: 605, False: 432]
  ------------------
  490|    605|      *language = yr_le32toh(entry->Name);
  ------------------
  |  |   89|    605|#define yr_le32toh(x) (x)
  ------------------
  491|    605|      lang_string = parse_resource_name(pe, rsrc_data, entry);
  492|    605|      break;
  493|  1.03k|    }
  494|       |
  495|  1.03k|    if (IS_RESOURCE_SUBDIRECTORY(entry) && rsrc_tree_level < 2)
  ------------------
  |  |   92|  2.07k|  (yr_le32toh((entry)->OffsetToData) & 0x80000000)
  |  |  ------------------
  |  |  |  |   89|  1.03k|#define yr_le32toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (92:3): [True: 186, False: 851]
  |  |  ------------------
  ------------------
  |  Branch (495:44): [True: 88, False: 98]
  ------------------
  496|     88|    {
  497|     88|      PIMAGE_RESOURCE_DIRECTORY directory =
  498|     88|          (PIMAGE_RESOURCE_DIRECTORY) (rsrc_data + RESOURCE_OFFSET(entry));
  ------------------
  |  |   94|     88|#define RESOURCE_OFFSET(entry) (yr_le32toh((entry)->OffsetToData) & 0x7FFFFFFF)
  |  |  ------------------
  |  |  |  |   89|     88|#define yr_le32toh(x) (x)
  |  |  ------------------
  ------------------
  499|       |
  500|     88|      if (struct_fits_in_pe(pe, directory, IMAGE_RESOURCE_DIRECTORY))
  ------------------
  |  |   77|     88|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|     88|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 88, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|     88|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|     88|      {
  502|     88|        result = _pe_iterate_resources(
  503|     88|            pe,
  504|     88|            directory,
  505|     88|            rsrc_data,
  506|     88|            rsrc_tree_level + 1,
  507|     88|            type,
  508|     88|            id,
  509|     88|            language,
  510|     88|            type_string,
  511|     88|            name_string,
  512|     88|            lang_string,
  513|     88|            callback,
  514|     88|            callback_data);
  515|     88|      }
  516|      0|      else
  517|      0|      {
  518|      0|        result = RESOURCE_ITERATOR_ABORTED;
  ------------------
  |  |   84|      0|#define RESOURCE_ITERATOR_ABORTED  1
  ------------------
  519|      0|      }
  520|     88|    }
  521|    949|    else
  522|    949|    {
  523|    949|      PIMAGE_RESOURCE_DATA_ENTRY data_entry =
  524|    949|          (PIMAGE_RESOURCE_DATA_ENTRY) (rsrc_data + RESOURCE_OFFSET(entry));
  ------------------
  |  |   94|    949|#define RESOURCE_OFFSET(entry) (yr_le32toh((entry)->OffsetToData) & 0x7FFFFFFF)
  |  |  ------------------
  |  |  |  |   89|    949|#define yr_le32toh(x) (x)
  |  |  ------------------
  ------------------
  525|       |
  526|    949|      if (struct_fits_in_pe(pe, data_entry, IMAGE_RESOURCE_DATA_ENTRY))
  ------------------
  |  |   77|    949|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    949|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 949, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 949, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    949|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 923, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|    923|      {
  528|    923|        if (callback(
  ------------------
  |  Branch (528:13): [True: 0, False: 923]
  ------------------
  529|    923|                data_entry,
  530|    923|                *type,
  531|    923|                *id,
  532|    923|                *language,
  533|    923|                type_string,
  534|    923|                name_string,
  535|    923|                lang_string,
  536|    923|                callback_data) == RESOURCE_CALLBACK_ABORT)
  ------------------
  |  |   81|    923|#define RESOURCE_CALLBACK_ABORT    1
  ------------------
  537|      0|        {
  538|      0|          result = RESOURCE_ITERATOR_ABORTED;
  ------------------
  |  |   84|      0|#define RESOURCE_ITERATOR_ABORTED  1
  ------------------
  539|      0|        }
  540|    923|      }
  541|     26|      else
  542|     26|      {
  543|     26|        result = RESOURCE_ITERATOR_ABORTED;
  ------------------
  |  |   84|     26|#define RESOURCE_ITERATOR_ABORTED  1
  ------------------
  544|     26|      }
  545|    949|    }
  546|       |
  547|  1.03k|    if (result == RESOURCE_ITERATOR_ABORTED)
  ------------------
  |  |   84|  1.03k|#define RESOURCE_ITERATOR_ABORTED  1
  ------------------
  |  Branch (547:9): [True: 78, False: 959]
  ------------------
  548|     78|      break;
  549|       |
  550|    959|    entry++;
  551|    959|  }
  552|       |
  553|    120|  return result;
  554|    120|}
pe.c:parse_resource_name:
  405|  1.03k|{
  406|       |  // If high bit is set it is an offset relative to rsrc_data, which contains
  407|       |  // a resource directory string.
  408|       |
  409|  1.03k|  if (yr_le32toh(entry->Name) & 0x80000000)
  ------------------
  |  |   89|  1.03k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (409:7): [True: 347, False: 690]
  ------------------
  410|    347|  {
  411|    347|    const PIMAGE_RESOURCE_DIR_STRING_U pNameString =
  412|    347|        (PIMAGE_RESOURCE_DIR_STRING_U) (rsrc_data +
  413|    347|                                        (yr_le32toh(entry->Name) & 0x7FFFFFFF));
  ------------------
  |  |   89|    347|#define yr_le32toh(x) (x)
  ------------------
  414|       |
  415|       |    // A resource directory string is 2 bytes for the length and then a variable
  416|       |    // length Unicode string. Make sure we have at least 2 bytes.
  417|       |
  418|    347|    if (!fits_in_pe(pe, pNameString, 2))
  ------------------
  |  |   73|    347|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 347, False: 0]
  |  |  |  Branch (73:39): [True: 347, False: 0]
  |  |  ------------------
  |  |   74|    347|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 87, False: 260]
  |  |  ------------------
  ------------------
  419|    260|      return NULL;
  420|       |
  421|       |    // Move past the length and make sure we have enough bytes for the string.
  422|     87|    if (!fits_in_pe(
  ------------------
  |  |   73|     87|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 87, False: 0]
  |  |  |  Branch (73:39): [True: 87, False: 0]
  |  |  ------------------
  |  |   74|     87|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 87, False: 0]
  |  |  ------------------
  ------------------
  423|     87|            pe,
  424|     87|            pNameString,
  425|     87|            sizeof(uint16_t) + yr_le16toh(pNameString->Length) * 2))
  426|      0|      return NULL;
  427|       |
  428|     87|    return pNameString;
  429|     87|  }
  430|       |
  431|    690|  return NULL;
  432|  1.03k|}
pe.c:pe_collect_resources:
  759|    923|{
  760|       |  // Don't collect too many resources.
  761|    923|  if (pe->resources > MAX_RESOURCES)
  ------------------
  |  |   89|    923|#define MAX_RESOURCES          65536
  ------------------
  |  Branch (761:7): [True: 0, False: 923]
  ------------------
  762|      0|    return RESOURCE_CALLBACK_CONTINUE;
  ------------------
  |  |   80|      0|#define RESOURCE_CALLBACK_CONTINUE 0
  ------------------
  763|       |
  764|    923|  yr_set_integer(
  ------------------
  |  |  236|    923|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  765|    923|      yr_le32toh(rsrc_data->OffsetToData),
  766|    923|      pe->object,
  767|    923|      "resources[%i].rva",
  768|    923|      pe->resources);
  769|       |
  770|    923|  int64_t offset = pe_rva_to_offset(pe, yr_le32toh(rsrc_data->OffsetToData));
  ------------------
  |  |   89|    923|#define yr_le32toh(x) (x)
  ------------------
  771|       |
  772|    923|  if (offset < 0)
  ------------------
  |  Branch (772:7): [True: 356, False: 567]
  ------------------
  773|    356|    offset = YR_UNDEFINED;
  ------------------
  |  |   38|    356|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  774|       |
  775|    923|  yr_set_integer(offset, pe->object, "resources[%i].offset", pe->resources);
  ------------------
  |  |  236|    923|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  776|       |
  777|    923|  yr_set_integer(
  ------------------
  |  |  236|    923|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  778|    923|      yr_le32toh(rsrc_data->Size),
  779|    923|      pe->object,
  780|    923|      "resources[%i].length",
  781|    923|      pe->resources);
  782|       |
  783|    923|  pe_set_resource_string_or_id(
  784|    923|      type_string,
  785|    923|      rsrc_type,
  786|    923|      "resources[%i].type_string",
  787|    923|      "resources[%i].type",
  788|    923|      pe);
  789|       |
  790|    923|  pe_set_resource_string_or_id(
  791|    923|      name_string,
  792|    923|      rsrc_id,
  793|    923|      "resources[%i].name_string",
  794|    923|      "resources[%i].id",
  795|    923|      pe);
  796|       |
  797|    923|  pe_set_resource_string_or_id(
  798|    923|      lang_string,
  799|    923|      rsrc_language,
  800|    923|      "resources[%i].language_string",
  801|    923|      "resources[%i].language",
  802|    923|      pe);
  803|       |
  804|       |  // Resources we do extra parsing on
  805|    923|  if (rsrc_type == RESOURCE_TYPE_VERSION)
  ------------------
  |  |   71|    923|#define RESOURCE_TYPE_VERSION    16
  ------------------
  |  Branch (805:7): [True: 517, False: 406]
  ------------------
  806|    517|    pe_parse_version_info(rsrc_data, pe);
  807|       |
  808|    923|  pe->resources += 1;
  809|    923|  return RESOURCE_CALLBACK_CONTINUE;
  ------------------
  |  |   80|    923|#define RESOURCE_CALLBACK_CONTINUE 0
  ------------------
  810|    923|}
pe.c:pe_set_resource_string_or_id:
  726|  2.76k|{
  727|  2.76k|  if (rsrc_string)
  ------------------
  |  Branch (727:7): [True: 87, False: 2.68k]
  ------------------
  728|     87|  {
  729|       |    // Multiply by 2 because it is a Unicode string.
  730|     87|    size_t length = yr_le16toh(rsrc_string->Length) * 2;
  ------------------
  |  |   88|     87|#define yr_le16toh(x) (x)
  ------------------
  731|       |
  732|       |    // Check if the whole string fits in the PE image.
  733|       |    // If not, the name becomes UNDEFINED by default.
  734|     87|    if (fits_in_pe(pe, rsrc_string->NameString, length))
  ------------------
  |  |   73|     87|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 87, False: 0]
  |  |  |  Branch (73:39): [True: 87, False: 0]
  |  |  ------------------
  |  |   74|     87|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 87, False: 0]
  |  |  ------------------
  ------------------
  735|     87|    {
  736|     87|      yr_set_sized_string(
  ------------------
  |  |  242|     87|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  737|     87|          (char*) rsrc_string->NameString,
  738|     87|          length,
  739|     87|          pe->object,
  740|     87|          string_description,
  741|     87|          pe->resources);
  742|     87|    }
  743|     87|  }
  744|  2.68k|  else
  745|  2.68k|  {
  746|  2.68k|    yr_set_integer(rsrc_int, pe->object, int_description, pe->resources);
  ------------------
  |  |  236|  2.68k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  747|  2.68k|  }
  748|  2.76k|}
pe.c:pe_parse_version_info:
  632|    517|{
  633|    517|  PVERSION_INFO version_info;
  634|       |
  635|    517|  int64_t version_info_offset = pe_rva_to_offset(
  636|    517|      pe, yr_le32toh(rsrc_data->OffsetToData));
  ------------------
  |  |   89|    517|#define yr_le32toh(x) (x)
  ------------------
  637|       |
  638|    517|  if (version_info_offset < 0)
  ------------------
  |  Branch (638:7): [True: 216, False: 301]
  ------------------
  639|    216|    return;
  640|       |
  641|    301|  version_info = (PVERSION_INFO) (pe->data + version_info_offset);
  642|       |
  643|    301|  if (!struct_fits_in_pe(pe, version_info, VERSION_INFO))
  ------------------
  |  |   77|    301|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    301|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 301, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 301, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    301|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 301, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|      0|    return;
  645|       |
  646|    301|  if (!fits_in_pe(pe, version_info->Key, sizeof("VS_VERSION_INFO") * 2))
  ------------------
  |  |   73|    301|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 301, False: 0]
  |  |  |  Branch (73:39): [True: 301, False: 0]
  |  |  ------------------
  |  |   74|    301|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 301, False: 0]
  |  |  ------------------
  ------------------
  647|      0|    return;
  648|       |
  649|    301|  if (strcmp_w(version_info->Key, "VS_VERSION_INFO") != 0)
  ------------------
  |  Branch (649:7): [True: 282, False: 19]
  ------------------
  650|    282|    return;
  651|       |
  652|     19|  version_info = ADD_OFFSET(version_info, sizeof(VERSION_INFO) + 86);
  ------------------
  |  |  629|     19|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  653|       |
  654|     19|  while (fits_in_pe(pe, version_info->Key, sizeof("VarFileInfo") * 2) &&
  ------------------
  |  |   73|     38|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 19, False: 0]
  |  |  |  Branch (73:39): [True: 19, False: 0]
  |  |  ------------------
  |  |   74|     38|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 19, False: 0]
  |  |  ------------------
  ------------------
  655|     19|         strcmp_w(version_info->Key, "VarFileInfo") == 0 &&
  ------------------
  |  Branch (655:10): [True: 0, False: 19]
  ------------------
  656|     19|         yr_le16toh(version_info->Length) != 0)
  ------------------
  |  |   88|      0|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (656:10): [True: 0, False: 0]
  ------------------
  657|      0|  {
  658|      0|    version_info = ADD_OFFSET(version_info, yr_le16toh(version_info->Length));
  ------------------
  |  |  629|      0|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  659|      0|  }
  660|       |
  661|     38|  while (fits_in_pe(pe, version_info->Key, sizeof("StringFileInfo") * 2) &&
  ------------------
  |  |   73|     76|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  ------------------
  |  |  |  Branch (73:4): [True: 38, False: 0]
  |  |  |  Branch (73:39): [True: 38, False: 0]
  |  |  ------------------
  |  |   74|     76|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  ------------------
  |  |  |  Branch (74:4): [True: 38, False: 0]
  |  |  ------------------
  ------------------
  662|     38|         strcmp_w(version_info->Key, "StringFileInfo") == 0 &&
  ------------------
  |  Branch (662:10): [True: 19, False: 19]
  ------------------
  663|     38|         yr_le16toh(version_info->Length) != 0)
  ------------------
  |  |   88|     19|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (663:10): [True: 19, False: 0]
  ------------------
  664|     19|  {
  665|     19|    PVERSION_INFO string_table = ADD_OFFSET(
  ------------------
  |  |  629|     19|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  666|     19|        version_info, sizeof(VERSION_INFO) + 30);
  667|       |
  668|     19|    version_info = ADD_OFFSET(version_info, yr_le16toh(version_info->Length));
  ------------------
  |  |  629|     19|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  669|       |
  670|    207|    while (struct_fits_in_pe(pe, string_table, VERSION_INFO) &&
  ------------------
  |  |   77|    207|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    414|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 207, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 207, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    414|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 207, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  671|    207|           wide_string_fits_in_pe(pe, string_table->Key) &&
  ------------------
  |  Branch (671:12): [True: 207, False: 0]
  ------------------
  672|    207|           yr_le16toh(string_table->Length) != 0 && string_table < version_info)
  ------------------
  |  |   88|    207|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (672:12): [True: 201, False: 6]
  |  Branch (672:53): [True: 188, False: 13]
  ------------------
  673|    188|    {
  674|    188|      PVERSION_INFO string = ADD_OFFSET(
  ------------------
  |  |  629|    188|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  675|    188|          string_table,
  676|    188|          sizeof(VERSION_INFO) + 2 * (strnlen_w(string_table->Key) + 1));
  677|       |
  678|    188|      string_table = ADD_OFFSET(string_table, yr_le16toh(string_table->Length));
  ------------------
  |  |  629|    188|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  679|       |
  680|    438|      while (struct_fits_in_pe(pe, string, VERSION_INFO) &&
  ------------------
  |  |   77|    438|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    876|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 438, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 438, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    876|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 438, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  681|    438|             wide_string_fits_in_pe(pe, string->Key) &&
  ------------------
  |  Branch (681:14): [True: 438, False: 0]
  ------------------
  682|    438|             yr_le16toh(string->Length) != 0 && string < string_table)
  ------------------
  |  |   88|    438|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (682:14): [True: 400, False: 38]
  |  Branch (682:49): [True: 250, False: 150]
  ------------------
  683|    250|      {
  684|    250|        char* string_value = (char*) ADD_OFFSET(
  ------------------
  |  |  629|    250|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  685|    250|            string, sizeof(VERSION_INFO) + 2 * (strnlen_w(string->Key) + 1));
  686|       |
  687|    250|        if (wide_string_fits_in_pe(pe, string_value))
  ------------------
  |  Branch (687:13): [True: 250, False: 0]
  ------------------
  688|    250|        {
  689|    250|          char key[64];
  690|    250|          char value[256];
  691|       |
  692|    250|          strlcpy_w(key, string->Key, sizeof(key));
  693|    250|          strlcpy_w(value, string_value, sizeof(value));
  694|       |
  695|       |          // null terminator of string is not included in version value when
  696|       |          // ValueLength is zero
  697|    250|          if (yr_le16toh(string->ValueLength) == 0)
  ------------------
  |  |   88|    250|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (697:15): [True: 24, False: 226]
  ------------------
  698|     24|            value[yr_le16toh(string->ValueLength)] = '\0';
  ------------------
  |  |   88|     24|#define yr_le16toh(x) (x)
  ------------------
  699|       |
  700|    250|          yr_set_string(value, pe->object, "version_info[%s]", key);
  ------------------
  |  |  245|    250|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|    500|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|    250|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
  701|       |
  702|    250|          yr_set_string(
  ------------------
  |  |  245|    250|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|    500|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|    250|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
  703|    250|              key, pe->object, "version_info_list[%i].key", pe->version_infos);
  704|       |
  705|    250|          yr_set_string(
  ------------------
  |  |  245|    250|  yr_set_sized_string(                    \
  |  |  ------------------
  |  |  |  |  242|    500|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:31): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|    250|      value, (value == NULL) ? 0 : strlen(value), object, __VA_ARGS__)
  ------------------
  706|    250|              value,
  707|    250|              pe->object,
  708|    250|              "version_info_list[%i].value",
  709|    250|              pe->version_infos);
  710|       |
  711|    250|          pe->version_infos += 1;
  712|    250|        }
  713|       |
  714|    250|        string = ADD_OFFSET(string, yr_le16toh(string->Length));
  ------------------
  |  |  629|    250|  (PVERSION_INFO)((uint8_t*) (ptr) + ((offset + 3) & ~3))
  ------------------
  715|    250|      }
  716|    188|    }
  717|     19|  }
  718|     19|}
pe.c:wide_string_fits_in_pe:
  118|    895|{
  119|    895|  size_t i = 0;
  120|    895|  size_t space_left = available_space(pe, data);
  121|       |
  122|   135k|  while (space_left >= 2)
  ------------------
  |  Branch (122:10): [True: 135k, False: 0]
  ------------------
  123|   135k|  {
  124|   135k|    if (data[i] == 0 && data[i + 1] == 0)
  ------------------
  |  Branch (124:9): [True: 50.2k, False: 84.9k]
  |  Branch (124:25): [True: 895, False: 49.3k]
  ------------------
  125|    895|      return 1;
  126|   134k|    space_left -= 2;
  127|   134k|    i += 2;
  128|   134k|  }
  129|       |
  130|      0|  return 0;
  131|    895|}
pe.c:available_space:
  107|  2.58M|{
  108|  2.58M|  if ((uint8_t*) pointer < pe->data)
  ------------------
  |  Branch (108:7): [True: 2.49M, False: 89.7k]
  ------------------
  109|  2.49M|    return 0;
  110|       |
  111|  89.7k|  if ((uint8_t*) pointer >= pe->data + pe->data_size)
  ------------------
  |  Branch (111:7): [True: 0, False: 89.7k]
  ------------------
  112|      0|    return 0;
  113|       |
  114|  89.7k|  return pe->data + pe->data_size - (uint8_t*) pointer;
  115|  89.7k|}
pe.c:pe_parse_rich_signature:
  137|    108|{
  138|    108|  PIMAGE_DOS_HEADER mz_header;
  139|    108|  PRICH_SIGNATURE rich_signature = NULL;
  140|       |
  141|    108|  DWORD* rich_ptr = NULL;
  142|    108|  BYTE* raw_data = NULL;
  143|    108|  BYTE* clear_data = NULL;
  144|    108|  BYTE* version_data = NULL;
  145|    108|  DWORD* p = NULL;
  146|    108|  uint32_t nthdr_offset = 0;
  147|    108|  uint32_t key = 0;
  148|    108|  size_t rich_len = 0;
  149|    108|  int64_t rich_count = 0;
  150|       |
  151|    108|  if (pe->data_size < sizeof(IMAGE_DOS_HEADER))
  ------------------
  |  Branch (151:7): [True: 0, False: 108]
  ------------------
  152|      0|    return;
  153|       |
  154|    108|  mz_header = (PIMAGE_DOS_HEADER) pe->data;
  155|       |
  156|    108|  if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   88|    108|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   81|    108|#define IMAGE_DOS_SIGNATURE    0x5A4D      // MZ
  ------------------
  |  Branch (156:7): [True: 0, False: 108]
  ------------------
  157|      0|    return;
  158|       |
  159|       |  // To find the Rich marker we start at the NT header and work backwards, so
  160|       |  // make sure we have at least enough data to get to the NT header.
  161|    108|  nthdr_offset = yr_le32toh(mz_header->e_lfanew);
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  162|    108|  if (nthdr_offset > pe->data_size + sizeof(uint32_t) || nthdr_offset < 4)
  ------------------
  |  Branch (162:7): [True: 0, False: 108]
  |  Branch (162:58): [True: 24, False: 84]
  ------------------
  163|     24|    return;
  164|       |
  165|       |  // Most files have the Rich header at offset 0x80, but that is not always
  166|       |  // true. 582ce3eea9c97d5e89f7d83953a6d518b16770e635a19a456c0225449c6967a4 is
  167|       |  // one sample which has a Rich header starting at offset 0x200. To properly
  168|       |  // find the Rich header we need to start at the NT header and work backwards.
  169|     84|  p = (DWORD*) (pe->data + nthdr_offset - 4);
  170|       |
  171|  1.78k|  while (p >= (DWORD*) (pe->data + sizeof(IMAGE_DOS_HEADER)))
  ------------------
  |  Branch (171:10): [True: 1.71k, False: 73]
  ------------------
  172|  1.71k|  {
  173|  1.71k|    if (yr_le32toh(*p) == RICH_RICH)
  ------------------
  |  |   89|  1.71k|#define yr_le32toh(x) (x)
  ------------------
                  if (yr_le32toh(*p) == RICH_RICH)
  ------------------
  |  |  875|  1.71k|#define RICH_RICH 0x68636952  // "Rich"
  ------------------
  |  Branch (173:9): [True: 11, False: 1.70k]
  ------------------
  174|     11|    {
  175|       |      // The XOR key is the dword following the Rich value. We  use this to find
  176|       |      // DanS header only.
  177|     11|      key = *(p + 1);
  178|     11|      rich_ptr = p;
  179|     11|      --p;
  180|     11|      break;
  181|     11|    }
  182|       |
  183|       |    // The NT header is 8 byte aligned so we can move back in 4 byte increments.
  184|  1.70k|    --p;
  185|  1.70k|  }
  186|       |
  187|       |  // If we haven't found a key we can skip processing the rest.
  188|     84|  if (key == 0)
  ------------------
  |  Branch (188:7): [True: 73, False: 11]
  ------------------
  189|     73|    return;
  190|       |
  191|       |  // If we have found the key we need to now find the start (DanS).
  192|     88|  while (p >= (DWORD*) (pe->data + sizeof(IMAGE_DOS_HEADER)))
  ------------------
  |  Branch (192:10): [True: 88, False: 0]
  ------------------
  193|     88|  {
  194|     88|    if (yr_le32toh((*(p) ^ key)) == RICH_DANS)
  ------------------
  |  |   89|     88|#define yr_le32toh(x) (x)
  ------------------
                  if (yr_le32toh((*(p) ^ key)) == RICH_DANS)
  ------------------
  |  |  874|     88|#define RICH_DANS 0x536e6144  // "DanS"
  ------------------
  |  Branch (194:9): [True: 11, False: 77]
  ------------------
  195|     11|    {
  196|     11|      rich_signature = (PRICH_SIGNATURE) p;
  197|     11|      break;
  198|     11|    }
  199|       |
  200|     77|    --p;
  201|     77|  }
  202|       |
  203|     11|  if (rich_signature == NULL)
  ------------------
  |  Branch (203:7): [True: 0, False: 11]
  ------------------
  204|      0|    return;
  205|       |
  206|       |  // The three key values must all be equal and the first dword
  207|       |  // XORs to "DanS". Then walk the buffer looking for "Rich" which marks the
  208|       |  // end. Technically the XOR key should be right after "Rich" but it's not
  209|       |  // important.
  210|       |
  211|     11|  if (yr_le32toh(rich_signature->key1) != yr_le32toh(rich_signature->key2) ||
  ------------------
  |  |   89|     11|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(rich_signature->key1) != yr_le32toh(rich_signature->key2) ||
  ------------------
  |  |   89|     22|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (211:7): [True: 8, False: 3]
  ------------------
  212|     11|      yr_le32toh(rich_signature->key2) != yr_le32toh(rich_signature->key3) ||
  ------------------
  |  |   89|      3|#define yr_le32toh(x) (x)
  ------------------
                    yr_le32toh(rich_signature->key2) != yr_le32toh(rich_signature->key3) ||
  ------------------
  |  |   89|     14|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (212:7): [True: 0, False: 3]
  ------------------
  213|     11|      (yr_le32toh(rich_signature->dans) ^ yr_le32toh(rich_signature->key1)) !=
  ------------------
  |  |   89|      3|#define yr_le32toh(x) (x)
  ------------------
                    (yr_le32toh(rich_signature->dans) ^ yr_le32toh(rich_signature->key1)) !=
  ------------------
  |  |   89|      3|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (213:7): [True: 0, False: 3]
  ------------------
  214|      3|          RICH_DANS)
  ------------------
  |  |  874|      3|#define RICH_DANS 0x536e6144  // "DanS"
  ------------------
  215|      8|  {
  216|      8|    return;
  217|      8|  }
  218|       |
  219|       |  // Multiply by 4 because we are counting in DWORDs.
  220|      3|  rich_len = (rich_ptr - (DWORD*) rich_signature) * 4;
  221|      3|  raw_data = (BYTE*) yr_malloc(rich_len);
  222|       |
  223|      3|  if (!raw_data)
  ------------------
  |  Branch (223:7): [True: 0, False: 3]
  ------------------
  224|      0|    return;
  225|       |
  226|      3|  memcpy(raw_data, rich_signature, rich_len);
  227|       |
  228|      3|  yr_set_integer(
  ------------------
  |  |  236|      3|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  229|      3|      base_address + ((uint8_t*) rich_signature - pe->data),
  230|      3|      pe->object,
  231|      3|      "rich_signature.offset");
  232|       |
  233|      3|  yr_set_integer(rich_len, pe->object, "rich_signature.length");
  ------------------
  |  |  236|      3|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  234|       |
  235|      3|  yr_set_integer(
  ------------------
  |  |  236|      3|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
  236|      3|      yr_le32toh(rich_signature->key1), pe->object, "rich_signature.key");
  237|       |
  238|      3|  clear_data = (BYTE*) yr_malloc(rich_len);
  239|       |
  240|      3|  if (!clear_data)
  ------------------
  |  Branch (240:7): [True: 0, False: 3]
  ------------------
  241|      0|  {
  242|      0|    yr_free(raw_data);
  243|      0|    return;
  244|      0|  }
  245|       |
  246|       |  // Copy the entire block here to be XORed.
  247|      3|  memcpy(clear_data, raw_data, rich_len);
  248|       |
  249|      3|  for (rich_ptr = (DWORD*) clear_data;
  250|     27|       rich_ptr < (DWORD*) (clear_data + rich_len);
  ------------------
  |  Branch (250:8): [True: 24, False: 3]
  ------------------
  251|     24|       rich_ptr++)
  252|     24|  {
  253|     24|    *rich_ptr ^= rich_signature->key1;
  254|     24|  }
  255|       |
  256|      3|  yr_set_sized_string(
  ------------------
  |  |  242|      3|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  257|      3|      (char*) raw_data, rich_len, pe->object, "rich_signature.raw_data");
  258|       |
  259|      3|  yr_free(raw_data);
  260|       |
  261|      3|  yr_set_sized_string(
  ------------------
  |  |  242|      3|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  262|      3|      (char*) clear_data, rich_len, pe->object, "rich_signature.clear_data");
  263|       |
  264|       |  // Allocate space for just the version data. This is a series of every other
  265|       |  // dword from the clear data. This is useful to be able to hash alone.
  266|       |  // We need to skip the first 3 DWORDs of the RICH_SIGNATURE, which are DanS
  267|       |  // and XOR keys.
  268|      3|  rich_count = (rich_len - sizeof(RICH_SIGNATURE)) / sizeof(RICH_VERSION_INFO);
  269|      3|  version_data = (BYTE*) yr_malloc(rich_count * sizeof(DWORD));
  270|      3|  if (!version_data)
  ------------------
  |  Branch (270:7): [True: 0, False: 3]
  ------------------
  271|      0|  {
  272|      0|    yr_free(clear_data);
  273|      0|    return;
  274|      0|  }
  275|       |
  276|      3|  rich_signature = (PRICH_SIGNATURE) clear_data;
  277|      9|  for (int i = 0; i < rich_count; i++)
  ------------------
  |  Branch (277:19): [True: 6, False: 3]
  ------------------
  278|      6|  {
  279|      6|    memcpy(
  280|      6|        version_data + (i * sizeof(DWORD)),
  281|      6|        &rich_signature->versions[i],
  282|      6|        sizeof(DWORD));
  283|      6|  }
  284|       |
  285|      3|  yr_set_sized_string(
  ------------------
  |  |  242|      3|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  286|      3|      (char*) version_data,
  287|      3|      rich_count * sizeof(DWORD),
  288|      3|      pe->object,
  289|      3|      "rich_signature.version_data");
  290|       |
  291|      3|  yr_free(clear_data);
  292|      3|  yr_free(version_data);
  293|      3|}
pe.c:pe_parse_debug_directory:
  296|    108|{
  297|    108|  PIMAGE_DATA_DIRECTORY data_dir;
  298|    108|  PIMAGE_DEBUG_DIRECTORY debug_dir;
  299|    108|  int64_t debug_dir_offset;
  300|    108|  int i, dcount;
  301|    108|  size_t pdb_path_len;
  302|    108|  char* pdb_path = NULL;
  303|       |
  304|    108|  data_dir = pe_get_directory_entry(pe, IMAGE_DIRECTORY_ENTRY_DEBUG);
  ------------------
  |  |  259|    108|#define IMAGE_DIRECTORY_ENTRY_DEBUG          6
  ------------------
  305|       |
  306|    108|  if (data_dir == NULL)
  ------------------
  |  Branch (306:7): [True: 0, False: 108]
  ------------------
  307|      0|    return;
  308|       |
  309|    108|  if (yr_le32toh(data_dir->Size) == 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (309:7): [True: 0, False: 108]
  ------------------
  310|      0|    return;
  311|       |
  312|    108|  if (yr_le32toh(data_dir->Size) % sizeof(IMAGE_DEBUG_DIRECTORY) != 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (312:7): [True: 57, False: 51]
  ------------------
  313|     57|    return;
  314|       |
  315|     51|  if (yr_le32toh(data_dir->VirtualAddress) == 0)
  ------------------
  |  |   89|     51|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (315:7): [True: 0, False: 51]
  ------------------
  316|      0|    return;
  317|       |
  318|     51|  debug_dir_offset = pe_rva_to_offset(pe, yr_le32toh(data_dir->VirtualAddress));
  ------------------
  |  |   89|     51|#define yr_le32toh(x) (x)
  ------------------
  319|       |
  320|     51|  if (debug_dir_offset < 0)
  ------------------
  |  Branch (320:7): [True: 4, False: 47]
  ------------------
  321|      4|    return;
  322|       |
  323|     47|  dcount = yr_le32toh(data_dir->Size) / sizeof(IMAGE_DEBUG_DIRECTORY);
  ------------------
  |  |   89|     47|#define yr_le32toh(x) (x)
  ------------------
  324|       |
  325|  1.07M|  for (i = 0; i < dcount; i++)
  ------------------
  |  Branch (325:15): [True: 1.07M, False: 0]
  ------------------
  326|  1.07M|  {
  327|  1.07M|    int64_t pcv_hdr_offset = 0;
  328|       |
  329|  1.07M|    debug_dir = (PIMAGE_DEBUG_DIRECTORY) (pe->data + debug_dir_offset +
  330|  1.07M|                                          i * sizeof(IMAGE_DEBUG_DIRECTORY));
  331|       |
  332|  1.07M|    if (!struct_fits_in_pe(pe, debug_dir, IMAGE_DEBUG_DIRECTORY))
  ------------------
  |  |   77|  1.07M|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  1.07M|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1.07M, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1.07M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  1.07M|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1.07M, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  333|     46|      break;
  334|       |
  335|  1.07M|    if (yr_le32toh(debug_dir->Type) != IMAGE_DEBUG_TYPE_CODEVIEW)
  ------------------
  |  |   89|  1.07M|#define yr_le32toh(x) (x)
  ------------------
                  if (yr_le32toh(debug_dir->Type) != IMAGE_DEBUG_TYPE_CODEVIEW)
  ------------------
  |  |  842|  1.07M|#define IMAGE_DEBUG_TYPE_CODEVIEW        2
  ------------------
  |  Branch (335:9): [True: 1.06M, False: 12.2k]
  ------------------
  336|  1.06M|      continue;
  337|       |
  338|       |    // The debug info offset may be present either as RVA or as raw offset
  339|       |    // Sample: 0249e00b6d46bee5a17096559f18e671cd0ceee36373e8708f614a9a6c7c079e
  340|  12.2k|    if (debug_dir->AddressOfRawData != 0)
  ------------------
  |  Branch (340:9): [True: 8.88k, False: 3.40k]
  ------------------
  341|  8.88k|    {
  342|  8.88k|      pcv_hdr_offset = pe_rva_to_offset(
  343|  8.88k|          pe, yr_le32toh(debug_dir->AddressOfRawData));
  ------------------
  |  |   89|  8.88k|#define yr_le32toh(x) (x)
  ------------------
  344|  8.88k|    }
  345|       |
  346|       |    // Give it chance to read it from the RAW offset
  347|       |    // Sample: 735f72b3fcd72789f01e923c9de2a9ab5b5ffbece23633da81d976ad0ad159e3
  348|  12.2k|    if (pcv_hdr_offset <= 0 && debug_dir->PointerToRawData != 0)
  ------------------
  |  Branch (348:9): [True: 6.40k, False: 5.88k]
  |  Branch (348:32): [True: 5.37k, False: 1.03k]
  ------------------
  349|  5.37k|    {
  350|  5.37k|      pcv_hdr_offset = yr_le32toh(debug_dir->PointerToRawData);
  ------------------
  |  |   89|  5.37k|#define yr_le32toh(x) (x)
  ------------------
  351|  5.37k|    }
  352|       |
  353|  12.2k|    if (pcv_hdr_offset <= 0)
  ------------------
  |  Branch (353:9): [True: 1.03k, False: 11.2k]
  ------------------
  354|  1.03k|      continue;
  355|       |
  356|  11.2k|    PCV_HEADER cv_hdr = (PCV_HEADER) (pe->data + pcv_hdr_offset);
  357|       |
  358|  11.2k|    if (!struct_fits_in_pe(pe, cv_hdr, CV_HEADER))
  ------------------
  |  |   77|  11.2k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  11.2k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 11.2k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 11.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  11.2k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 8.13k, False: 3.12k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|  3.12k|      continue;
  360|       |
  361|  8.13k|    if (yr_le32toh(cv_hdr->dwSignature) == CVINFO_PDB20_CVSIGNATURE)
  ------------------
  |  |   89|  8.13k|#define yr_le32toh(x) (x)
  ------------------
                  if (yr_le32toh(cv_hdr->dwSignature) == CVINFO_PDB20_CVSIGNATURE)
  ------------------
  |  |  769|  8.13k|#define CVINFO_PDB20_CVSIGNATURE 0x3031424e  // "NB10"
  ------------------
  |  Branch (361:9): [True: 128, False: 8.00k]
  ------------------
  362|    128|    {
  363|    128|      PCV_INFO_PDB20 pdb20 = (PCV_INFO_PDB20) cv_hdr;
  364|       |
  365|    128|      if (struct_fits_in_pe(pe, pdb20, CV_INFO_PDB20))
  ------------------
  |  |   77|    128|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    128|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 128, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 128, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    128|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 128, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  366|    128|        pdb_path = (char*) (pdb20->PdbFileName);
  367|    128|    }
  368|  8.00k|    else if (yr_le32toh(cv_hdr->dwSignature) == CVINFO_PDB70_CVSIGNATURE)
  ------------------
  |  |   89|  8.00k|#define yr_le32toh(x) (x)
  ------------------
                  else if (yr_le32toh(cv_hdr->dwSignature) == CVINFO_PDB70_CVSIGNATURE)
  ------------------
  |  |  768|  8.00k|#define CVINFO_PDB70_CVSIGNATURE 0x53445352  // "RSDS"
  ------------------
  |  Branch (368:14): [True: 2.88k, False: 5.11k]
  ------------------
  369|  2.88k|    {
  370|  2.88k|      PCV_INFO_PDB70 pdb70 = (PCV_INFO_PDB70) cv_hdr;
  371|       |
  372|  2.88k|      if (struct_fits_in_pe(pe, pdb70, CV_INFO_PDB70))
  ------------------
  |  |   77|  2.88k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  2.88k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 2.88k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 2.88k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  2.88k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 2.88k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  373|  2.88k|        pdb_path = (char*) (pdb70->PdbFileName);
  374|  2.88k|    }
  375|  5.11k|    else if (yr_le32toh(cv_hdr->dwSignature) == CODEVIEW_SIGNATURE_MTOC)
  ------------------
  |  |   89|  5.11k|#define yr_le32toh(x) (x)
  ------------------
                  else if (yr_le32toh(cv_hdr->dwSignature) == CODEVIEW_SIGNATURE_MTOC)
  ------------------
  |  |  770|  5.11k|#define CODEVIEW_SIGNATURE_MTOC  0x434f544d  // "MTOC"
  ------------------
  |  Branch (375:14): [True: 1, False: 5.11k]
  ------------------
  376|      1|    {
  377|      1|      PMTOC_ENTRY mtoc = (PMTOC_ENTRY) cv_hdr;
  378|       |
  379|      1|      if (struct_fits_in_pe(pe, mtoc, MTOC_ENTRY))
  ------------------
  |  |   77|      1|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|      1|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|      1|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  380|      1|        pdb_path = (char*) (mtoc->PdbFileName);
  381|      1|    }
  382|       |
  383|  8.13k|    if (pdb_path != NULL)
  ------------------
  |  Branch (383:9): [True: 6.59k, False: 1.53k]
  ------------------
  384|  6.59k|    {
  385|  6.59k|      pdb_path_len = strnlen(
  386|  6.59k|          pdb_path, yr_min(available_space(pe, pdb_path), MAX_PATH));
  ------------------
  |  |  107|  6.59k|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 0, False: 6.59k]
  |  |  ------------------
  ------------------
  387|       |
  388|  6.59k|      if (pdb_path_len > 0 && pdb_path_len < MAX_PATH)
  ------------------
  |  |   42|      1|#define MAX_PATH 1024
  ------------------
  |  Branch (388:11): [True: 1, False: 6.59k]
  |  Branch (388:31): [True: 1, False: 0]
  ------------------
  389|      1|      {
  390|      1|        yr_set_sized_string(pdb_path, pdb_path_len, pe->object, "pdb_path");
  ------------------
  |  |  242|      1|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
  391|      1|        break;
  392|      1|      }
  393|  6.59k|    }
  394|  8.13k|  }
  395|     47|}
pe.c:pe_parse_imports:
 1122|    108|{
 1123|    108|  int64_t offset;
 1124|    108|  int parsed_imports = 0;        // Number of parsed DLLs
 1125|    108|  int num_imports = 0;           // Number of imported DLLs
 1126|    108|  int num_function_imports = 0;  // Total number of functions imported
 1127|       |
 1128|    108|  IMPORTED_DLL* head = NULL;
 1129|    108|  IMPORTED_DLL* tail = NULL;
 1130|       |
 1131|    108|  PIMAGE_IMPORT_DESCRIPTOR imports;
 1132|    108|  PIMAGE_DATA_DIRECTORY directory;
 1133|       |
 1134|       |  // Default to 0 imports until we know there are any
 1135|    108|  yr_set_integer(0, pe->object, "number_of_imports");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1136|    108|  yr_set_integer(0, pe->object, "number_of_imported_functions");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1137|       |
 1138|    108|  directory = pe_get_directory_entry(pe, IMAGE_DIRECTORY_ENTRY_IMPORT);
  ------------------
  |  |  254|    108|#define IMAGE_DIRECTORY_ENTRY_IMPORT         1
  ------------------
 1139|       |
 1140|    108|  if (directory == NULL)
  ------------------
  |  Branch (1140:7): [True: 0, False: 108]
  ------------------
 1141|      0|    return NULL;
 1142|       |
 1143|    108|  if (yr_le32toh(directory->VirtualAddress) == 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1143:7): [True: 0, False: 108]
  ------------------
 1144|      0|    return NULL;
 1145|       |
 1146|    108|  offset = pe_rva_to_offset(pe, yr_le32toh(directory->VirtualAddress));
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
 1147|       |
 1148|    108|  if (offset < 0)
  ------------------
  |  Branch (1148:7): [True: 18, False: 90]
  ------------------
 1149|     18|    return NULL;
 1150|       |
 1151|     90|  imports = (PIMAGE_IMPORT_DESCRIPTOR) (pe->data + offset);
 1152|       |
 1153|  97.0k|  while (struct_fits_in_pe(pe, imports, IMAGE_IMPORT_DESCRIPTOR) &&
  ------------------
  |  |   77|  97.0k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|   194k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 97.0k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 97.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|   194k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 97.0k, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1154|  97.0k|         yr_le32toh(imports->Name) != 0 && parsed_imports < MAX_PE_IMPORTS)
  ------------------
  |  |   89|  97.0k|#define yr_le32toh(x) (x)
  ------------------
                       yr_le32toh(imports->Name) != 0 && parsed_imports < MAX_PE_IMPORTS)
  ------------------
  |  |   86|  96.9k|#define MAX_PE_IMPORTS         16384
  ------------------
  |  Branch (1154:10): [True: 96.9k, False: 86]
  |  Branch (1154:44): [True: 96.9k, False: 3]
  ------------------
 1155|  96.9k|  {
 1156|  96.9k|    parsed_imports++;
 1157|       |
 1158|  96.9k|    int64_t offset = pe_rva_to_offset(pe, yr_le32toh(imports->Name));
  ------------------
  |  |   89|  96.9k|#define yr_le32toh(x) (x)
  ------------------
 1159|       |
 1160|  96.9k|    if (offset >= 0)
  ------------------
  |  Branch (1160:9): [True: 2.23k, False: 94.6k]
  ------------------
 1161|  2.23k|    {
 1162|  2.23k|      IMPORTED_DLL* imported_dll;
 1163|       |
 1164|  2.23k|      char* dll_name = (char*) (pe->data + offset);
 1165|       |
 1166|  2.23k|      if (!pe_valid_dll_name(dll_name, pe->data_size - (size_t) offset))
  ------------------
  |  Branch (1166:11): [True: 1.29k, False: 948]
  ------------------
 1167|  1.29k|      {
 1168|  1.29k|        imports++;
 1169|  1.29k|        continue;
 1170|  1.29k|      }
 1171|       |
 1172|    948|      imported_dll = (IMPORTED_DLL*) yr_calloc(1, sizeof(IMPORTED_DLL));
 1173|       |
 1174|    948|      if (imported_dll != NULL)
  ------------------
  |  Branch (1174:11): [True: 948, False: 0]
  ------------------
 1175|    948|      {
 1176|    948|        IMPORT_FUNCTION* functions = pe_parse_import_descriptor(
 1177|    948|            pe, imports, dll_name, &num_function_imports);
 1178|       |
 1179|    948|        if (functions != NULL)
  ------------------
  |  Branch (1179:13): [True: 719, False: 229]
  ------------------
 1180|    719|        {
 1181|    719|          imported_dll->name = yr_strdup(dll_name);
 1182|    719|          imported_dll->functions = functions;
 1183|    719|          imported_dll->next = NULL;
 1184|       |
 1185|    719|          if (head == NULL)
  ------------------
  |  Branch (1185:15): [True: 56, False: 663]
  ------------------
 1186|     56|            head = imported_dll;
 1187|       |
 1188|    719|          if (tail != NULL)
  ------------------
  |  Branch (1188:15): [True: 663, False: 56]
  ------------------
 1189|    663|            tail->next = imported_dll;
 1190|       |
 1191|    719|          tail = imported_dll;
 1192|    719|          num_imports++;
 1193|    719|        }
 1194|    229|        else
 1195|    229|        {
 1196|    229|          yr_free(imported_dll);
 1197|    229|        }
 1198|    948|      }
 1199|    948|    }
 1200|       |
 1201|  95.6k|    imports++;
 1202|  95.6k|  }
 1203|       |
 1204|     90|  yr_set_integer(num_imports, pe->object, "number_of_imports");
  ------------------
  |  |  236|     90|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1205|     90|  yr_set_integer(
  ------------------
  |  |  236|     90|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1206|     90|      num_function_imports, pe->object, "number_of_imported_functions");
 1207|     90|  pe_set_imports(
 1208|     90|      pe,
 1209|     90|      head,
 1210|     90|      "import_details[%i].library_name",
 1211|     90|      "import_details[%i].number_of_functions",
 1212|     90|      "import_details[%i].functions[%i].name",
 1213|     90|      "import_details[%i].functions[%i].ordinal",
 1214|     90|      "import_details[%i].functions[%i].rva");
 1215|       |
 1216|     90|  return head;
 1217|    108|}
pe.c:pe_parse_import_descriptor:
  836|    948|{
  837|    948|  IMPORT_FUNCTION* head = NULL;
  838|    948|  IMPORT_FUNCTION* tail = NULL;
  839|       |  // This is tracked separately from num_function_imports because that is the
  840|       |  // number of successfully parsed imports, while this is the number of imports
  841|       |  // attempted to be parsed. This allows us to stop parsing on too many imports
  842|       |  // while still accurately recording the number of successfully parsed imports.
  843|    948|  int parsed_imports = 0;
  844|       |
  845|    948|  int64_t offset = pe_rva_to_offset(
  846|    948|      pe, yr_le32toh(import_descriptor->OriginalFirstThunk));
  ------------------
  |  |   89|    948|#define yr_le32toh(x) (x)
  ------------------
  847|       |
  848|       |  // I've seen binaries where OriginalFirstThunk is zero. In this case
  849|       |  // use FirstThunk.
  850|       |
  851|    948|  if (offset <= 0)
  ------------------
  |  Branch (851:7): [True: 348, False: 600]
  ------------------
  852|    348|    offset = pe_rva_to_offset(pe, yr_le32toh(import_descriptor->FirstThunk));
  ------------------
  |  |   89|    348|#define yr_le32toh(x) (x)
  ------------------
  853|       |
  854|    948|  if (offset < 0)
  ------------------
  |  Branch (854:7): [True: 146, False: 802]
  ------------------
  855|    146|    return NULL;
  856|       |
  857|    802|  if (IS_64BITS_PE(pe))
  ------------------
  |  |    9|    802|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|    802|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (9:3): [True: 96, False: 706]
  |  |  ------------------
  |  |   10|    802|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|    802|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
  858|     96|  {
  859|     96|    PIMAGE_THUNK_DATA64 thunks64 = (PIMAGE_THUNK_DATA64) (pe->data + offset);
  860|     96|    uint64_t func_idx = 0;
  861|       |
  862|  1.04M|    while (struct_fits_in_pe(pe, thunks64, IMAGE_THUNK_DATA64) &&
  ------------------
  |  |   77|  1.04M|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  2.09M|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 1.04M, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 1.04M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  2.09M|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 1.04M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  863|  1.04M|           yr_le64toh(thunks64->u1.Ordinal) != 0 &&
  ------------------
  |  |   90|  1.04M|#define yr_le64toh(x) (x)
  ------------------
  |  Branch (863:12): [True: 1.04M, False: 43]
  ------------------
  864|  1.04M|           parsed_imports < MAX_PE_IMPORTS)
  ------------------
  |  |   86|  1.04M|#define MAX_PE_IMPORTS         16384
  ------------------
  |  Branch (864:12): [True: 1.04M, False: 53]
  ------------------
  865|  1.04M|    {
  866|  1.04M|      char* name = NULL;
  867|  1.04M|      uint16_t ordinal = 0;
  868|  1.04M|      uint8_t has_ordinal = 0;
  869|  1.04M|      uint64_t rva_address = 0;
  870|       |
  871|  1.04M|      parsed_imports++;
  872|       |
  873|  1.04M|      if (!(yr_le64toh(thunks64->u1.Ordinal) & IMAGE_ORDINAL_FLAG64))
  ------------------
  |  |   90|  1.04M|#define yr_le64toh(x) (x)
  ------------------
                    if (!(yr_le64toh(thunks64->u1.Ordinal) & IMAGE_ORDINAL_FLAG64))
  ------------------
  |  |  481|  1.04M|#define IMAGE_ORDINAL_FLAG64 0x8000000000000000L
  ------------------
  |  Branch (873:11): [True: 706k, False: 341k]
  ------------------
  874|   706k|      {
  875|       |        // If imported by name
  876|   706k|        offset = pe_rva_to_offset(pe, yr_le64toh(thunks64->u1.Function));
  ------------------
  |  |   90|   706k|#define yr_le64toh(x) (x)
  ------------------
  877|       |
  878|   706k|        if (offset >= 0)
  ------------------
  |  Branch (878:13): [True: 2.67k, False: 703k]
  ------------------
  879|  2.67k|        {
  880|  2.67k|          PIMAGE_IMPORT_BY_NAME import = (PIMAGE_IMPORT_BY_NAME) (pe->data +
  881|  2.67k|                                                                  offset);
  882|       |
  883|  2.67k|          if (struct_fits_in_pe(pe, import, IMAGE_IMPORT_BY_NAME))
  ------------------
  |  |   77|  2.67k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  2.67k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 2.67k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 2.67k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  2.67k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 2.67k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|  2.67k|          {
  885|  2.67k|            name = (char*) yr_strndup(
  886|  2.67k|                (char*) import->Name,
  887|  2.67k|                yr_min(available_space(pe, import->Name), 512));
  ------------------
  |  |  107|  2.67k|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 0, False: 2.67k]
  |  |  ------------------
  ------------------
  888|  2.67k|          }
  889|  2.67k|        }
  890|   706k|      }
  891|   341k|      else
  892|   341k|      {
  893|       |        // If imported by ordinal. Lookup the ordinal.
  894|   341k|        name = ord_lookup(dll_name, yr_le64toh(thunks64->u1.Ordinal) & 0xFFFF);
  ------------------
  |  |   90|   341k|#define yr_le64toh(x) (x)
  ------------------
  895|       |        // Also store the ordinal.
  896|   341k|        ordinal = yr_le64toh(thunks64->u1.Ordinal) & 0xFFFF;
  ------------------
  |  |   90|   341k|#define yr_le64toh(x) (x)
  ------------------
  897|   341k|        has_ordinal = 1;
  898|   341k|      }
  899|       |
  900|  1.04M|      rva_address = yr_le32toh(import_descriptor->FirstThunk) +
  ------------------
  |  |   89|  1.04M|#define yr_le32toh(x) (x)
  ------------------
  901|  1.04M|                    (sizeof(uint64_t) * func_idx);
  902|       |
  903|  1.04M|      if (name != NULL && !valid_function_name(name))
  ------------------
  |  Branch (903:11): [True: 344k, False: 703k]
  |  Branch (903:27): [True: 2.52k, False: 341k]
  ------------------
  904|  2.52k|      {
  905|  2.52k|        yr_free(name);
  906|  2.52k|        thunks64++;
  907|  2.52k|        func_idx++;
  908|  2.52k|        continue;
  909|  2.52k|      }
  910|       |
  911|  1.04M|      if (name != NULL || has_ordinal == 1)
  ------------------
  |  Branch (911:11): [True: 341k, False: 703k]
  |  Branch (911:27): [True: 0, False: 703k]
  ------------------
  912|   341k|      {
  913|   341k|        IMPORT_FUNCTION* imported_func = (IMPORT_FUNCTION*) yr_calloc(
  914|   341k|            1, sizeof(IMPORT_FUNCTION));
  915|       |
  916|   341k|        if (imported_func == NULL)
  ------------------
  |  Branch (916:13): [True: 0, False: 341k]
  ------------------
  917|      0|        {
  918|      0|          yr_free(name);
  919|      0|        }
  920|   341k|        else
  921|   341k|        {
  922|   341k|          imported_func->name = name;
  923|   341k|          imported_func->ordinal = ordinal;
  924|   341k|          imported_func->has_ordinal = has_ordinal;
  925|   341k|          imported_func->rva = rva_address;
  926|   341k|          imported_func->next = NULL;
  927|       |
  928|   341k|          if (head == NULL)
  ------------------
  |  Branch (928:15): [True: 94, False: 341k]
  ------------------
  929|     94|            head = imported_func;
  930|       |
  931|   341k|          if (tail != NULL)
  ------------------
  |  Branch (931:15): [True: 341k, False: 94]
  ------------------
  932|   341k|            tail->next = imported_func;
  933|       |
  934|   341k|          tail = imported_func;
  935|   341k|          (*num_function_imports)++;
  936|   341k|        }
  937|   341k|      }
  938|       |
  939|  1.04M|      thunks64++;
  940|  1.04M|      func_idx++;
  941|  1.04M|    }
  942|     96|  }
  943|    706|  else
  944|    706|  {
  945|    706|    PIMAGE_THUNK_DATA32 thunks32 = (PIMAGE_THUNK_DATA32) (pe->data + offset);
  946|    706|    uint32_t func_idx = 0;
  947|       |
  948|   465k|    while (struct_fits_in_pe(pe, thunks32, IMAGE_THUNK_DATA32) &&
  ------------------
  |  |   77|   465k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|   930k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 465k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 465k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|   930k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 465k, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|   465k|           yr_le32toh(thunks32->u1.Ordinal) != 0 &&
  ------------------
  |  |   89|   465k|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (949:12): [True: 464k, False: 627]
  ------------------
  950|   465k|           *num_function_imports < MAX_PE_IMPORTS)
  ------------------
  |  |   86|   464k|#define MAX_PE_IMPORTS         16384
  ------------------
  |  Branch (950:12): [True: 464k, False: 77]
  ------------------
  951|   464k|    {
  952|   464k|      char* name = NULL;
  953|   464k|      uint16_t ordinal = 0;
  954|   464k|      uint8_t has_ordinal = 0;
  955|   464k|      uint32_t rva_address = 0;
  956|       |
  957|   464k|      parsed_imports++;
  958|       |
  959|   464k|      if (!(yr_le32toh(thunks32->u1.Ordinal) & IMAGE_ORDINAL_FLAG32))
  ------------------
  |  |   89|   464k|#define yr_le32toh(x) (x)
  ------------------
                    if (!(yr_le32toh(thunks32->u1.Ordinal) & IMAGE_ORDINAL_FLAG32))
  ------------------
  |  |  480|   464k|#define IMAGE_ORDINAL_FLAG32 0x80000000
  ------------------
  |  Branch (959:11): [True: 425k, False: 39.0k]
  ------------------
  960|   425k|      {
  961|       |        // If imported by name
  962|   425k|        offset = pe_rva_to_offset(pe, yr_le32toh(thunks32->u1.Function));
  ------------------
  |  |   89|   425k|#define yr_le32toh(x) (x)
  ------------------
  963|       |
  964|   425k|        if (offset >= 0)
  ------------------
  |  Branch (964:13): [True: 6.65k, False: 419k]
  ------------------
  965|  6.65k|        {
  966|  6.65k|          PIMAGE_IMPORT_BY_NAME import = (PIMAGE_IMPORT_BY_NAME) (pe->data +
  967|  6.65k|                                                                  offset);
  968|       |
  969|  6.65k|          if (struct_fits_in_pe(pe, import, IMAGE_IMPORT_BY_NAME))
  ------------------
  |  |   77|  6.65k|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  6.65k|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 6.65k, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 6.65k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  6.65k|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 6.65k, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  970|  6.65k|          {
  971|  6.65k|            name = (char*) yr_strndup(
  972|  6.65k|                (char*) import->Name,
  973|  6.65k|                yr_min(available_space(pe, import->Name), 512));
  ------------------
  |  |  107|  6.65k|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 17, False: 6.64k]
  |  |  ------------------
  ------------------
  974|  6.65k|          }
  975|  6.65k|        }
  976|   425k|      }
  977|  39.0k|      else
  978|  39.0k|      {
  979|       |        // If imported by ordinal. Lookup the ordinal.
  980|  39.0k|        name = ord_lookup(dll_name, yr_le32toh(thunks32->u1.Ordinal) & 0xFFFF);
  ------------------
  |  |   89|  39.0k|#define yr_le32toh(x) (x)
  ------------------
  981|       |        // Also store the ordinal.
  982|  39.0k|        ordinal = yr_le32toh(thunks32->u1.Ordinal) & 0xFFFF;
  ------------------
  |  |   89|  39.0k|#define yr_le32toh(x) (x)
  ------------------
  983|  39.0k|        has_ordinal = 1;
  984|  39.0k|      }
  985|       |
  986|   464k|      rva_address = yr_le32toh(import_descriptor->FirstThunk) +
  ------------------
  |  |   89|   464k|#define yr_le32toh(x) (x)
  ------------------
  987|   464k|                    (sizeof(uint32_t) * func_idx);
  988|       |
  989|   464k|      if (name != NULL && !valid_function_name(name))
  ------------------
  |  Branch (989:11): [True: 45.7k, False: 419k]
  |  Branch (989:27): [True: 4.22k, False: 41.4k]
  ------------------
  990|  4.22k|      {
  991|  4.22k|        yr_free(name);
  992|  4.22k|        thunks32++;
  993|  4.22k|        func_idx++;
  994|  4.22k|        continue;
  995|  4.22k|      }
  996|       |
  997|   460k|      if (name != NULL || has_ordinal == 1)
  ------------------
  |  Branch (997:11): [True: 41.4k, False: 419k]
  |  Branch (997:27): [True: 0, False: 419k]
  ------------------
  998|  41.4k|      {
  999|  41.4k|        IMPORT_FUNCTION* imported_func = (IMPORT_FUNCTION*) yr_calloc(
 1000|  41.4k|            1, sizeof(IMPORT_FUNCTION));
 1001|       |
 1002|  41.4k|        if (imported_func == NULL)
  ------------------
  |  Branch (1002:13): [True: 0, False: 41.4k]
  ------------------
 1003|      0|        {
 1004|      0|          yr_free(name);
 1005|      0|        }
 1006|  41.4k|        else
 1007|  41.4k|        {
 1008|  41.4k|          imported_func->name = name;
 1009|  41.4k|          imported_func->ordinal = ordinal;
 1010|  41.4k|          imported_func->has_ordinal = has_ordinal;
 1011|  41.4k|          imported_func->rva = rva_address;
 1012|  41.4k|          imported_func->next = NULL;
 1013|       |
 1014|  41.4k|          if (head == NULL)
  ------------------
  |  Branch (1014:15): [True: 625, False: 40.8k]
  ------------------
 1015|    625|            head = imported_func;
 1016|       |
 1017|  41.4k|          if (tail != NULL)
  ------------------
  |  Branch (1017:15): [True: 40.8k, False: 625]
  ------------------
 1018|  40.8k|            tail->next = imported_func;
 1019|       |
 1020|  41.4k|          tail = imported_func;
 1021|  41.4k|          (*num_function_imports)++;
 1022|  41.4k|        }
 1023|  41.4k|      }
 1024|       |
 1025|   460k|      thunks32++;
 1026|   460k|      func_idx++;
 1027|   460k|    }
 1028|    706|  }
 1029|       |
 1030|    802|  return head;
 1031|    948|}
pe.c:valid_function_name:
  816|   389k|{
  817|   389k|  if (!strcmp(name, ""))
  ------------------
  |  Branch (817:7): [True: 2.18k, False: 387k]
  ------------------
  818|  2.18k|    return 0;
  819|       |
  820|   387k|  size_t i = 0;
  821|  4.02M|  for (char c = name[i]; c != '\x00'; c = name[++i])
  ------------------
  |  Branch (821:26): [True: 3.63M, False: 383k]
  ------------------
  822|  3.63M|  {
  823|  3.63M|    if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') &&
  ------------------
  |  Branch (823:11): [True: 1.30M, False: 2.33M]
  |  Branch (823:23): [True: 1.30M, False: 128]
  |  Branch (823:38): [True: 19.1k, False: 2.31M]
  |  Branch (823:50): [True: 18.3k, False: 746]
  ------------------
  824|  3.63M|        !(c >= '0' && c <= '9') && c != '.' && c != '_' && c != '?' &&
  ------------------
  |  Branch (824:11): [True: 2.30M, False: 5.49k]
  |  Branch (824:23): [True: 1.63M, False: 674k]
  |  Branch (824:36): [True: 678k, False: 867]
  |  Branch (824:48): [True: 678k, False: 545]
  |  Branch (824:60): [True: 672k, False: 6.41k]
  ------------------
  825|  3.63M|        c != '@' && c != '$' && c != '(' && c != ')' && c != '<' && c != '>')
  ------------------
  |  Branch (825:9): [True: 4.85k, False: 667k]
  |  Branch (825:21): [True: 4.70k, False: 149]
  |  Branch (825:33): [True: 4.62k, False: 82]
  |  Branch (825:45): [True: 4.58k, False: 43]
  |  Branch (825:57): [True: 4.56k, False: 16]
  |  Branch (825:69): [True: 4.56k, False: 3]
  ------------------
  826|  4.56k|      return 0;
  827|  3.63M|  }
  828|   383k|  return 1;
  829|   387k|}
pe.c:pe_parse_delayed_imports:
 1299|    108|{
 1300|    108|  int64_t offset;
 1301|    108|  uint64_t num_imports = 0;           // Number of imported DLLs
 1302|    108|  uint64_t num_function_imports = 0;  // Total number of functions imported
 1303|    108|  uint64_t image_base = OptionalHeader(pe, ImageBase);
  ------------------
  |  |   13|    108|  (IS_64BITS_PE(pe) ? pe->header64->OptionalHeader.field \
  |  |  ------------------
  |  |  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9:3): [True: 63, False: 45]
  |  |  |  |  ------------------
  |  |  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   14|    108|                    : pe->header->OptionalHeader.field)
  ------------------
 1304|    108|  uint64_t size_of_image = OptionalHeader(pe, SizeOfImage);
  ------------------
  |  |   13|    108|  (IS_64BITS_PE(pe) ? pe->header64->OptionalHeader.field \
  |  |  ------------------
  |  |  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9:3): [True: 63, False: 45]
  |  |  |  |  ------------------
  |  |  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   14|    108|                    : pe->header->OptionalHeader.field)
  ------------------
 1305|    108|  uint64_t pointer_size = (IS_64BITS_PE(pe)) ? 8 : 4;
  ------------------
  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
  |  Branch (1305:27): [True: 63, False: 45]
  ------------------
 1306|    108|  uint64_t ordinal_mask = (IS_64BITS_PE(pe)) ? IMAGE_ORDINAL_FLAG64
  ------------------
  |  |    9|    108|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|    108|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |   10|    108|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
                uint64_t ordinal_mask = (IS_64BITS_PE(pe)) ? IMAGE_ORDINAL_FLAG64
  ------------------
  |  |  481|     63|#define IMAGE_ORDINAL_FLAG64 0x8000000000000000L
  ------------------
  |  Branch (1306:27): [True: 63, False: 45]
  ------------------
 1307|    108|                                             : IMAGE_ORDINAL_FLAG32;
  ------------------
  |  |  480|     45|#define IMAGE_ORDINAL_FLAG32 0x80000000
  ------------------
 1308|       |
 1309|    108|  IMPORTED_DLL* head_dll = NULL;
 1310|    108|  IMPORTED_DLL* tail_dll = NULL;
 1311|       |
 1312|    108|  IMPORT_FUNCTION* head_fun = NULL;
 1313|    108|  IMPORT_FUNCTION* tail_fun = NULL;
 1314|       |
 1315|    108|  PIMAGE_DELAYLOAD_DESCRIPTOR import_descriptor = NULL;
 1316|    108|  PIMAGE_DATA_DIRECTORY directory = NULL;
 1317|       |
 1318|       |  // Default to 0 imports until we know there are any
 1319|    108|  yr_set_integer(0, pe->object, "number_of_delayed_imports");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1320|    108|  yr_set_integer(0, pe->object, "number_of_delayed_imported_functions");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1321|       |
 1322|    108|  directory = pe_get_directory_entry(pe, IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT);
  ------------------
  |  |  267|    108|#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   13
  ------------------
 1323|       |
 1324|    108|  if (directory == NULL)
  ------------------
  |  Branch (1324:7): [True: 0, False: 108]
  ------------------
 1325|      0|    return NULL;
 1326|       |
 1327|    108|  if (yr_le32toh(directory->VirtualAddress) == 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1327:7): [True: 0, False: 108]
  ------------------
 1328|      0|    return NULL;
 1329|       |
 1330|    108|  offset = pe_rva_to_offset(pe, yr_le32toh(directory->VirtualAddress));
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
 1331|       |
 1332|    108|  if (offset < 0)
  ------------------
  |  Branch (1332:7): [True: 82, False: 26]
  ------------------
 1333|     82|    return NULL;
 1334|       |
 1335|     26|  import_descriptor = (PIMAGE_DELAYLOAD_DESCRIPTOR) (pe->data + offset);
 1336|       |
 1337|     26|  for (; struct_fits_in_pe(pe, import_descriptor, IMAGE_DELAYLOAD_DESCRIPTOR);
 1338|     48|       import_descriptor++)
 1339|     74|  {
 1340|       |    // Check for the termination entry
 1341|     74|    if (pe_is_termination_delay_import_entry(import_descriptor))
  ------------------
  |  Branch (1341:9): [True: 0, False: 74]
  ------------------
 1342|      0|      break;
 1343|       |
 1344|     74|    DWORD Attributes = yr_le32toh(import_descriptor->Attributes.AllAttributes);
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1345|     74|    DWORD DllNameRVA = yr_le32toh(import_descriptor->DllNameRVA);
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1346|     74|    DWORD ModuleHandleRVA = yr_le32toh(import_descriptor->ModuleHandleRVA);
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1347|     74|    DWORD ImportAddressTableRVA = yr_le32toh(
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1348|     74|        import_descriptor->ImportAddressTableRVA);
 1349|     74|    DWORD ImportNameTableRVA = yr_le32toh(
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1350|     74|        import_descriptor->ImportNameTableRVA);
 1351|     74|    DWORD BoundImportAddressTableRVA = yr_le32toh(
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1352|     74|        import_descriptor->BoundImportAddressTableRVA);
 1353|     74|    DWORD UnloadInformationTableRVA = yr_le32toh(
  ------------------
  |  |   89|     74|#define yr_le32toh(x) (x)
  ------------------
 1354|     74|        import_descriptor->UnloadInformationTableRVA);
 1355|       |
 1356|       |    // Valid delayed import entry starts either with 0 or 0x01.
 1357|       |    // We strict require one of the valid values here
 1358|     74|    if (Attributes > 0x1)
  ------------------
  |  Branch (1358:9): [True: 26, False: 48]
  ------------------
 1359|     26|      break;
 1360|       |
 1361|       |    // Convert older (MS Visual C++ 6.0) delay-import descriptor to newer one.
 1362|       |    // These delay-import descriptors are distinguishable by lowest bit in
 1363|       |    // rec.Attributes to be zero. Sample:
 1364|       |    // 2775d97f8bdb3311ace960a42eee35dbec84b9d71a6abbacb26c14e83f5897e4
 1365|     48|    if (!IS_64BITS_PE(pe) && !Attributes)
  ------------------
  |  |    9|     96|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|     48|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |   10|     96|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|     48|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
  |  Branch (1365:9): [True: 2, False: 46]
  |  Branch (1365:30): [True: 2, False: 0]
  ------------------
 1366|      2|    {
 1367|      2|      DllNameRVA = (DWORD) pe_normalize_delay_import_value(
 1368|      2|          image_base, DllNameRVA);
 1369|      2|      ModuleHandleRVA = (DWORD) pe_normalize_delay_import_value(
 1370|      2|          image_base, ModuleHandleRVA);
 1371|      2|      ImportAddressTableRVA = (DWORD) pe_normalize_delay_import_value(
 1372|      2|          image_base, ImportAddressTableRVA);
 1373|      2|      ImportNameTableRVA = (DWORD) pe_normalize_delay_import_value(
 1374|      2|          image_base, ImportNameTableRVA);
 1375|      2|      BoundImportAddressTableRVA = (DWORD) pe_normalize_delay_import_value(
 1376|      2|          image_base, BoundImportAddressTableRVA);
 1377|      2|      UnloadInformationTableRVA = (DWORD) pe_normalize_delay_import_value(
 1378|      2|          image_base, UnloadInformationTableRVA);
 1379|      2|    }
 1380|       |
 1381|       |    // Stop on blatantly invalid delay import entries (old PELIB behavior)
 1382|     48|    if (ImportNameTableRVA >= size_of_image ||
  ------------------
  |  Branch (1382:9): [True: 0, False: 48]
  ------------------
 1383|     48|        ImportAddressTableRVA >= size_of_image ||
  ------------------
  |  Branch (1383:9): [True: 0, False: 48]
  ------------------
 1384|     48|        DllNameRVA < sizeof(IMAGE_DOS_HEADER) ||
  ------------------
  |  Branch (1384:9): [True: 0, False: 48]
  ------------------
 1385|     48|        ImportNameTableRVA < sizeof(IMAGE_DOS_HEADER))
  ------------------
  |  Branch (1385:9): [True: 0, False: 48]
  ------------------
 1386|      0|      break;
 1387|       |
 1388|     48|    char* dll_name = pe_parse_delay_import_dll_name(pe, DllNameRVA);
 1389|       |
 1390|     48|    if (dll_name == NULL)
  ------------------
  |  Branch (1390:9): [True: 1, False: 47]
  ------------------
 1391|      1|      continue;
 1392|       |
 1393|     47|    IMPORTED_DLL* imported_dll = (IMPORTED_DLL*) yr_calloc(
 1394|     47|        1, sizeof(IMPORTED_DLL));
 1395|       |
 1396|     47|    if (imported_dll == NULL)
  ------------------
  |  Branch (1396:9): [True: 0, False: 47]
  ------------------
 1397|      0|    {
 1398|      0|      yr_free(dll_name);
 1399|      0|      continue;
 1400|      0|    }
 1401|       |
 1402|     47|    imported_dll->name = dll_name;
 1403|     47|    imported_dll->next = NULL;
 1404|     47|    imported_dll->functions = NULL;
 1405|       |
 1406|     47|    head_fun = tail_fun = NULL;
 1407|       |
 1408|     47|    uint64_t name_rva = ImportNameTableRVA;
 1409|     47|    uint64_t func_rva = ImportAddressTableRVA;
 1410|       |
 1411|     47|    for (;;)
 1412|  1.81M|    {
 1413|  1.81M|      uint64_t nameAddress = pe_parse_delay_import_pointer(
 1414|  1.81M|          pe, pointer_size, name_rva);
 1415|       |
 1416|  1.81M|      uint64_t funcAddress = pe_parse_delay_import_pointer(
 1417|  1.81M|          pe, pointer_size, func_rva);
 1418|       |
 1419|       |      // Value of YR_UNDEFINED means that value is outside of pe->data
 1420|  1.81M|      if (nameAddress == YR_UNDEFINED || funcAddress == YR_UNDEFINED)
  ------------------
  |  |   38|  3.63M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
                    if (nameAddress == YR_UNDEFINED || funcAddress == YR_UNDEFINED)
  ------------------
  |  |   38|  1.81M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (1420:11): [True: 14, False: 1.81M]
  |  Branch (1420:42): [True: 0, False: 1.81M]
  ------------------
 1421|     14|        break;
 1422|       |
 1423|       |      // Value of zero means that this is the end of the bound import name table
 1424|  1.81M|      if (nameAddress == 0 || funcAddress == 0)
  ------------------
  |  Branch (1424:11): [True: 19, False: 1.81M]
  |  Branch (1424:31): [True: 14, False: 1.81M]
  ------------------
 1425|     33|        break;
 1426|       |
 1427|  1.81M|      IMPORT_FUNCTION* imported_func = (IMPORT_FUNCTION*) yr_malloc(
 1428|  1.81M|          sizeof(IMPORT_FUNCTION));
 1429|       |
 1430|  1.81M|      if (imported_func == NULL)
  ------------------
  |  Branch (1430:11): [True: 0, False: 1.81M]
  ------------------
 1431|      0|        continue;
 1432|       |
 1433|  1.81M|      imported_func->name = NULL;
 1434|  1.81M|      imported_func->has_ordinal = 0;
 1435|  1.81M|      imported_func->ordinal = 0;
 1436|  1.81M|      imported_func->rva = 0;
 1437|  1.81M|      imported_func->next = NULL;
 1438|       |
 1439|       |      // Check name address. It could be ordinal, VA or RVA
 1440|  1.81M|      if (!(nameAddress & ordinal_mask))
  ------------------
  |  Branch (1440:11): [True: 1.31M, False: 498k]
  ------------------
 1441|  1.31M|      {
 1442|       |        // Convert name address to RVA, if needed
 1443|  1.31M|        if (!Attributes)
  ------------------
  |  Branch (1443:13): [True: 1.31M, False: 0]
  ------------------
 1444|  1.31M|          nameAddress = pe_normalize_delay_import_value(
 1445|  1.31M|              image_base, nameAddress);
 1446|       |
 1447|  1.31M|        offset = pe_rva_to_offset(pe, nameAddress + sizeof(uint16_t));
 1448|       |
 1449|  1.31M|        imported_func->name = (char*) yr_strndup(
 1450|  1.31M|            (char*) (pe->data + offset),
 1451|  1.31M|            yr_min(available_space(pe, (char*) (pe->data + offset)), 512));
  ------------------
  |  |  107|  1.31M|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 1.24M, False: 72.7k]
  |  |  ------------------
  ------------------
 1452|  1.31M|      }
 1453|   498k|      else
 1454|   498k|      {
 1455|       |        // If imported by ordinal. Lookup the ordinal.
 1456|   498k|        imported_func->name = ord_lookup(dll_name, nameAddress & 0xFFFF);
 1457|       |
 1458|       |        // Also store the ordinal.
 1459|   498k|        imported_func->ordinal = nameAddress & 0xFFFF;
 1460|   498k|        imported_func->has_ordinal = 1;
 1461|   498k|      }
 1462|       |
 1463|  1.81M|      imported_func->rva = func_rva;
 1464|       |
 1465|  1.81M|      num_function_imports++;
 1466|  1.81M|      name_rva += pointer_size;
 1467|  1.81M|      func_rva += pointer_size;
 1468|       |
 1469|  1.81M|      if (head_fun == NULL)
  ------------------
  |  Branch (1469:11): [True: 45, False: 1.81M]
  ------------------
 1470|     45|        head_fun = imported_func;
 1471|       |
 1472|  1.81M|      if (tail_fun != NULL)
  ------------------
  |  Branch (1472:11): [True: 1.81M, False: 45]
  ------------------
 1473|  1.81M|        tail_fun->next = imported_func;
 1474|       |
 1475|  1.81M|      tail_fun = imported_func;
 1476|  1.81M|    }
 1477|       |
 1478|     47|    num_imports++;
 1479|       |
 1480|     47|    imported_dll->functions = head_fun;
 1481|       |
 1482|     47|    if (head_dll == NULL)
  ------------------
  |  Branch (1482:9): [True: 15, False: 32]
  ------------------
 1483|     15|      head_dll = imported_dll;
 1484|       |
 1485|     47|    if (tail_dll != NULL)
  ------------------
  |  Branch (1485:9): [True: 32, False: 15]
  ------------------
 1486|     32|      tail_dll->next = imported_dll;
 1487|       |
 1488|     47|    tail_dll = imported_dll;
 1489|     47|  }
 1490|       |
 1491|     26|  yr_set_integer(num_imports, pe->object, "number_of_delayed_imports");
  ------------------
  |  |  236|     26|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1492|     26|  yr_set_integer(
  ------------------
  |  |  236|     26|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1493|     26|      num_function_imports, pe->object, "number_of_delayed_imported_functions");
 1494|       |
 1495|     26|  pe_set_imports(
 1496|     26|      pe,
 1497|     26|      head_dll,
 1498|     26|      "delayed_import_details[%i].library_name",
 1499|     26|      "delayed_import_details[%i].number_of_functions",
 1500|     26|      "delayed_import_details[%i].functions[%i].name",
 1501|     26|      "delayed_import_details[%i].functions[%i].ordinal",
 1502|     26|      "delayed_import_details[%i].functions[%i].rva");
 1503|       |
 1504|     26|  return head_dll;
 1505|    108|}
pe.c:pe_parse_exports:
 1513|    108|{
 1514|    108|  PIMAGE_DATA_DIRECTORY directory;
 1515|    108|  PIMAGE_EXPORT_DIRECTORY exports;
 1516|       |
 1517|    108|  int64_t offset;
 1518|    108|  int64_t export_start;
 1519|       |
 1520|    108|  uint32_t i, j;
 1521|    108|  uint32_t number_of_exports;
 1522|    108|  uint32_t number_of_names;
 1523|    108|  uint32_t ordinal_base;
 1524|       |
 1525|    108|  size_t export_size;
 1526|    108|  size_t remaining;
 1527|    108|  size_t name_len;
 1528|       |
 1529|    108|  uint32_t exp_sz = 0;
 1530|    108|  DWORD* names = NULL;
 1531|    108|  WORD* ordinals = NULL;
 1532|    108|  DWORD* function_addrs = NULL;
 1533|       |
 1534|       |  // If not a PE file, return YR_UNDEFINED
 1535|       |
 1536|    108|  if (pe == NULL)
  ------------------
  |  Branch (1536:7): [True: 0, False: 108]
  ------------------
 1537|      0|    return;
 1538|       |
 1539|       |  // Default to 0 exports until we know there are any
 1540|    108|  yr_set_integer(0, pe->object, "number_of_exports");
  ------------------
  |  |  236|    108|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1541|       |
 1542|    108|  directory = pe_get_directory_entry(pe, IMAGE_DIRECTORY_ENTRY_EXPORT);
  ------------------
  |  |  253|    108|#define IMAGE_DIRECTORY_ENTRY_EXPORT         0
  ------------------
 1543|       |
 1544|    108|  if (directory == NULL)
  ------------------
  |  Branch (1544:7): [True: 0, False: 108]
  ------------------
 1545|      0|    return;
 1546|       |
 1547|    108|  if (yr_le32toh(directory->VirtualAddress) == 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1547:7): [True: 0, False: 108]
  ------------------
 1548|      0|    return;
 1549|       |
 1550|    108|  offset = pe_rva_to_offset(pe, yr_le32toh(directory->VirtualAddress));
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
 1551|       |
 1552|    108|  if (offset < 0)
  ------------------
  |  Branch (1552:7): [True: 32, False: 76]
  ------------------
 1553|     32|    return;
 1554|       |
 1555|     76|  export_start = offset;
 1556|     76|  export_size = yr_le32toh(directory->Size);
  ------------------
  |  |   89|     76|#define yr_le32toh(x) (x)
  ------------------
 1557|       |
 1558|     76|  exports = (PIMAGE_EXPORT_DIRECTORY) (pe->data + offset);
 1559|       |
 1560|     76|  if (!struct_fits_in_pe(pe, exports, IMAGE_EXPORT_DIRECTORY))
  ------------------
  |  |   77|     76|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|     76|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 76, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 76, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|     76|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 76, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1561|      0|    return;
 1562|       |
 1563|     76|  number_of_exports = yr_min(
  ------------------
  |  |  107|     76|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 26, False: 50]
  |  |  ------------------
  ------------------
 1564|     76|      yr_le32toh(exports->NumberOfFunctions), MAX_PE_EXPORTS);
 1565|       |
 1566|     76|  ordinal_base = yr_le32toh(exports->Base);
  ------------------
  |  |   89|     76|#define yr_le32toh(x) (x)
  ------------------
 1567|       |
 1568|     76|  yr_set_integer(
  ------------------
  |  |  236|     76|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1569|     76|      yr_le32toh(exports->TimeDateStamp), pe->object, "export_timestamp");
 1570|       |
 1571|     76|  offset = pe_rva_to_offset(pe, yr_le32toh(exports->Name));
  ------------------
  |  |   89|     76|#define yr_le32toh(x) (x)
  ------------------
 1572|       |
 1573|     76|  if (offset > 0)
  ------------------
  |  Branch (1573:7): [True: 20, False: 56]
  ------------------
 1574|     20|  {
 1575|     20|    remaining = pe->data_size - (size_t) offset;
 1576|     20|    name_len = strnlen((char*) (pe->data + offset), remaining);
 1577|     20|    yr_set_sized_string(
  ------------------
  |  |  242|     20|  yr_object_set_string(value, len, object, __VA_ARGS__)
  ------------------
 1578|     20|        (char*) (pe->data + offset), name_len, pe->object, "dll_name");
 1579|     20|  }
 1580|       |
 1581|     76|  if (number_of_exports * sizeof(DWORD) > pe->data_size - offset)
  ------------------
  |  Branch (1581:7): [True: 1, False: 75]
  ------------------
 1582|      1|    return;
 1583|       |
 1584|     75|  if (yr_le32toh(exports->NumberOfNames) > 0)
  ------------------
  |  |   89|     75|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1584:7): [True: 66, False: 9]
  ------------------
 1585|     66|  {
 1586|     66|    offset = pe_rva_to_offset(pe, yr_le32toh(exports->AddressOfNames));
  ------------------
  |  |   89|     66|#define yr_le32toh(x) (x)
  ------------------
 1587|       |
 1588|     66|    if (offset < 0)
  ------------------
  |  Branch (1588:9): [True: 7, False: 59]
  ------------------
 1589|      7|      return;
 1590|       |
 1591|     59|    if (yr_le32toh(exports->NumberOfNames) * sizeof(DWORD) >
  ------------------
  |  |   89|     59|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (1591:9): [True: 8, False: 51]
  ------------------
 1592|     59|        pe->data_size - offset)
 1593|      8|      return;
 1594|       |
 1595|     51|    names = (DWORD*) (pe->data + offset);
 1596|     51|  }
 1597|       |
 1598|     60|  offset = pe_rva_to_offset(pe, yr_le32toh(exports->AddressOfNameOrdinals));
  ------------------
  |  |   89|     60|#define yr_le32toh(x) (x)
  ------------------
 1599|       |
 1600|     60|  if (offset < 0)
  ------------------
  |  Branch (1600:7): [True: 1, False: 59]
  ------------------
 1601|      1|    return;
 1602|       |
 1603|     59|  ordinals = (WORD*) (pe->data + offset);
 1604|       |
 1605|     59|  if (available_space(pe, ordinals) < sizeof(WORD) * number_of_exports)
  ------------------
  |  Branch (1605:7): [True: 0, False: 59]
  ------------------
 1606|      0|    return;
 1607|       |
 1608|     59|  offset = pe_rva_to_offset(pe, yr_le32toh(exports->AddressOfFunctions));
  ------------------
  |  |   89|     59|#define yr_le32toh(x) (x)
  ------------------
 1609|       |
 1610|     59|  if (offset < 0)
  ------------------
  |  Branch (1610:7): [True: 18, False: 41]
  ------------------
 1611|     18|    return;
 1612|       |
 1613|     41|  function_addrs = (DWORD*) (pe->data + offset);
 1614|       |
 1615|     41|  if (available_space(pe, function_addrs) < sizeof(DWORD) * number_of_exports)
  ------------------
  |  Branch (1615:7): [True: 0, False: 41]
  ------------------
 1616|      0|    return;
 1617|       |
 1618|     41|  number_of_names = yr_min(
  ------------------
  |  |  107|     41|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 14, False: 27]
  |  |  ------------------
  ------------------
 1619|     41|      yr_le32toh(yr_le32toh(exports->NumberOfNames)), number_of_exports);
 1620|       |
 1621|       |  // Mapping out the exports is a bit janky. We start with the export address
 1622|       |  // array. The index from that array plus the ordinal base is the ordinal for
 1623|       |  // that export. To find the name we walk the ordinal array looking for a value
 1624|       |  // that matches our index. If one exists we look up the corresponding RVA from
 1625|       |  // the names array and follow it to get the name. If one does not exist then
 1626|       |  // the export has no name.
 1627|       |  //
 1628|       |  // Ordinal base: 5
 1629|       |  //                       0            1            2
 1630|       |  // Address array: [ 0x00000011 | 0x00000022 | 0x00000033 ]
 1631|       |  //                     0        1        2
 1632|       |  // Ordinal array: [ 0x0000 | 0x0002 | 0x0001 ]
 1633|       |  //                       0            1
 1634|       |  // Names array:   [ 0x00000044 | 0x00000055 ]
 1635|       |  //
 1636|       |  // The function at RVA 0x00000011 (index 0) has ordinal 5 (base + index). The
 1637|       |  // index can be found in position 0 in the ordinal array. Using 0 to index
 1638|       |  // into the name array gives us an RVA (0x00000044) which we can follow to get
 1639|       |  // the name.
 1640|       |  //
 1641|       |  // The function at RVA 0x00000022 (index 1) has ordinal 6 (base + index). The
 1642|       |  // index can be found in position 2 in the ordinal array. 2 is out of bounds
 1643|       |  // for the names array so this function is exported without a name.
 1644|       |  //
 1645|       |  // The function at RVA 0x00000033 (index 2) has ordinal 7 (base + index). The
 1646|       |  // index can be found in position 1 in the ordinal array. Using 1 to index
 1647|       |  // into the name array gives us an RVA (0x00000055) which we can follow to get
 1648|       |  // the name.
 1649|       |  //
 1650|       |  // If the RVA from the address array is within the export directory it is a
 1651|       |  // forwarder RVA and points to a NULL terminated ASCII string.
 1652|       |
 1653|   295k|  for (i = 0; i < number_of_exports; i++)
  ------------------
  |  Branch (1653:15): [True: 295k, False: 41]
  ------------------
 1654|   295k|  {
 1655|   295k|    yr_set_integer(
  ------------------
  |  |  236|   295k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1656|   295k|        ordinal_base + i, pe->object, "export_details[%i].ordinal", exp_sz);
 1657|       |
 1658|   295k|    yr_set_integer(
  ------------------
  |  |  236|   295k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1659|   295k|        yr_le32toh(function_addrs[i]), pe->object, "export_details[%i].rva", exp_sz);
 1660|       |
 1661|       |    // Don't check for a failure here since some packers make this an invalid
 1662|       |    // value.
 1663|   295k|    offset = pe_rva_to_offset(pe, yr_le32toh(function_addrs[i]));
  ------------------
  |  |   89|   295k|#define yr_le32toh(x) (x)
  ------------------
 1664|       |
 1665|   295k|    if (offset > export_start && offset < export_start + export_size)
  ------------------
  |  Branch (1665:9): [True: 13.3k, False: 281k]
  |  Branch (1665:34): [True: 10.5k, False: 2.77k]
  ------------------
 1666|  10.5k|    {
 1667|  10.5k|      remaining = pe->data_size - (size_t) offset;
 1668|  10.5k|      name_len = strnlen((char*) (pe->data + offset), remaining);
 1669|       |
 1670|  10.5k|      yr_set_sized_string(
  ------------------
  |  |  242|  21.1k|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (242:31): [True: 8.19k, False: 2.36k]
  |  |  ------------------
  ------------------
 1671|  10.5k|          (char*) (pe->data + offset),
 1672|  10.5k|          yr_min(name_len, MAX_EXPORT_NAME_LENGTH),
 1673|  10.5k|          pe->object,
 1674|  10.5k|          "export_details[%i].forward_name",
 1675|  10.5k|          exp_sz);
 1676|  10.5k|    }
 1677|   284k|    else
 1678|   284k|    {
 1679|   284k|      if (offset < 0)
  ------------------
  |  Branch (1679:11): [True: 253k, False: 31.3k]
  ------------------
 1680|   253k|        offset = YR_UNDEFINED;
  ------------------
  |  |   38|   253k|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
 1681|   284k|      yr_set_integer(offset, pe->object, "export_details[%i].offset", exp_sz);
  ------------------
  |  |  236|   284k|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1682|   284k|    }
 1683|       |
 1684|   295k|    if (names != NULL)
  ------------------
  |  Branch (1684:9): [True: 262k, False: 32.8k]
  ------------------
 1685|   262k|    {
 1686|  4.26G|      for (j = 0; j < number_of_exports; j++)
  ------------------
  |  Branch (1686:19): [True: 4.26G, False: 259k]
  ------------------
 1687|  4.26G|      {
 1688|  4.26G|        if (yr_le16toh(ordinals[j]) == i && j < number_of_names)
  ------------------
  |  |   88|  4.26G|#define yr_le16toh(x) (x)
  ------------------
  |  Branch (1688:13): [True: 15.6k, False: 4.26G]
  |  Branch (1688:45): [True: 2.45k, False: 13.2k]
  ------------------
 1689|  2.45k|        {
 1690|  2.45k|          offset = pe_rva_to_offset(pe, yr_le32toh(names[j]));
  ------------------
  |  |   89|  2.45k|#define yr_le32toh(x) (x)
  ------------------
 1691|       |
 1692|  2.45k|          if (offset > 0)
  ------------------
  |  Branch (1692:15): [True: 271, False: 2.18k]
  ------------------
 1693|    271|          {
 1694|    271|            remaining = pe->data_size - (size_t) offset;
 1695|    271|            name_len = strnlen((char*) (pe->data + offset), remaining);
 1696|       |
 1697|    271|            yr_set_sized_string(
  ------------------
  |  |  242|    542|  yr_object_set_string(value, len, object, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (242:31): [True: 218, False: 53]
  |  |  ------------------
  ------------------
 1698|    271|                (char*) (pe->data + offset),
 1699|    271|                yr_min(name_len, MAX_EXPORT_NAME_LENGTH),
 1700|    271|                pe->object,
 1701|    271|                "export_details[%i].name",
 1702|    271|                exp_sz);
 1703|    271|          }
 1704|  2.45k|          break;
 1705|  2.45k|        }
 1706|  4.26G|      }
 1707|   262k|    }
 1708|   295k|    exp_sz++;
 1709|   295k|  }
 1710|       |
 1711|     41|  yr_set_integer(exp_sz, pe->object, "number_of_exports");
  ------------------
  |  |  236|     41|  yr_object_set_integer(value, object, __VA_ARGS__)
  ------------------
 1712|     41|}

pe_get_header:
   42|    110|{
   43|    110|  PIMAGE_DOS_HEADER mz_header;
   44|    110|  PIMAGE_NT_HEADERS32 pe_header;
   45|       |
   46|    110|  size_t headers_size = 0;
   47|       |
   48|    110|  if (data_size < sizeof(IMAGE_DOS_HEADER))
  ------------------
  |  Branch (48:7): [True: 0, False: 110]
  ------------------
   49|      0|    return NULL;
   50|       |
   51|    110|  mz_header = (PIMAGE_DOS_HEADER) data;
   52|       |
   53|    110|  if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   88|    110|#define yr_le16toh(x) (x)
  ------------------
                if (yr_le16toh(mz_header->e_magic) != IMAGE_DOS_SIGNATURE)
  ------------------
  |  |   81|    110|#define IMAGE_DOS_SIGNATURE    0x5A4D      // MZ
  ------------------
  |  Branch (53:7): [True: 2, False: 108]
  ------------------
   54|      2|    return NULL;
   55|       |
   56|    108|  if (yr_le32toh(mz_header->e_lfanew) < 0)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (56:7): [True: 0, False: 108]
  ------------------
   57|      0|    return NULL;
   58|       |
   59|    108|  headers_size = yr_le32toh(mz_header->e_lfanew) +
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
   60|    108|                 sizeof(pe_header->Signature) + sizeof(IMAGE_FILE_HEADER);
   61|       |
   62|    108|  if (data_size < headers_size)
  ------------------
  |  Branch (62:7): [True: 0, False: 108]
  ------------------
   63|      0|    return NULL;
   64|       |
   65|    108|  pe_header = (PIMAGE_NT_HEADERS32)(data + yr_le32toh(mz_header->e_lfanew));
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
   66|       |
   67|    108|  if (yr_le32toh(pe_header->Signature) != IMAGE_NT_SIGNATURE)
  ------------------
  |  |   89|    108|#define yr_le32toh(x) (x)
  ------------------
                if (yr_le32toh(pe_header->Signature) != IMAGE_NT_SIGNATURE)
  ------------------
  |  |   85|    108|#define IMAGE_NT_SIGNATURE     0x00004550  // PE00
  ------------------
  |  Branch (67:7): [True: 0, False: 108]
  ------------------
   68|      0|    return NULL;
   69|       |
   70|    108|  if (data_size < headers_size + sizeof(IMAGE_OPTIONAL_HEADER32))
  ------------------
  |  Branch (70:7): [True: 0, False: 108]
  ------------------
   71|      0|    return NULL;
   72|       |
   73|    108|  if (pe_header->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  ------------------
  |  |  346|    108|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  ------------------
  |  Branch (73:7): [True: 63, False: 45]
  ------------------
   74|     63|    headers_size += sizeof(IMAGE_OPTIONAL_HEADER64);
   75|     45|  else
   76|     45|    headers_size += sizeof(IMAGE_OPTIONAL_HEADER32);
   77|       |
   78|    108|  if (data_size < headers_size)
  ------------------
  |  Branch (78:7): [True: 0, False: 108]
  ------------------
   79|      0|    return NULL;
   80|       |
   81|    108|  return pe_header;
   82|    108|}
pe_get_directory_entry:
   86|    540|{
   87|       |  // Explanation
   88|       |  // https://github.com/VirusTotal/yara/issues/1525
   89|       |
   90|       |  // In Windows, any access to data directories is controlled by the
   91|       |  // RtlImageDirectoryEntryToData function. This is one of the first checks
   92|       |  // whether the desired directory entry is smaller than NumberOfRvaAndSizes.
   93|       |  // If it's not, it means that the requested directory entry is not there.
   94|       |  //
   95|       |  //  1. Must NOT check whether NumberOfRvaAndSizes > 0x10
   96|       |  //
   97|       |  //  2. Must check for NumberOfRvaAndSizes < DataDirectory except for 
   98|       |  //     IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR for 32-bit binary
   99|       |  //
  100|       |  //  3. The function must NOT check for SizeOfOptionalHeader
  101|       |
  102|       |
  103|    540|  if ((entry != IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR || IS_64BITS_PE(pe)) &&
  ------------------
  |  |  268|  1.08k|#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
  ------------------
                if ((entry != IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR || IS_64BITS_PE(pe)) &&
  ------------------
  |  |    9|      0|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  ------------------
  |  |  |  |   88|      0|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (9:3): [True: 0, False: 0]
  |  |  ------------------
  |  |   10|      0|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  ------------------
  |  |  |  |  346|      0|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  ------------------
  ------------------
  |  Branch (103:8): [True: 540, False: 0]
  ------------------
  104|    540|      OptionalHeader(pe, NumberOfRvaAndSizes) < entry)
  ------------------
  |  |   13|    540|  (IS_64BITS_PE(pe) ? pe->header64->OptionalHeader.field \
  |  |  ------------------
  |  |  |  |    9|    540|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|    540|#define yr_le16toh(x) (x)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9:3): [True: 315, False: 225]
  |  |  |  |  ------------------
  |  |  |  |   10|    540|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  346|    540|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   14|    540|                    : pe->header->OptionalHeader.field)
  ------------------
  |  Branch (104:7): [True: 0, False: 540]
  ------------------
  105|      0|    return NULL;
  106|       |
  107|    540|  PIMAGE_DATA_DIRECTORY result = &OptionalHeader(pe, DataDirectory)[entry];
  ------------------
  |  |   13|    540|  (IS_64BITS_PE(pe) ? pe->header64->OptionalHeader.field \
  |  |  ------------------
  |  |  |  |    9|    540|  (yr_le16toh(pe->header64->OptionalHeader.Magic) == \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|    540|#define yr_le16toh(x) (x)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9:3): [True: 315, False: 225]
  |  |  |  |  ------------------
  |  |  |  |   10|    540|   IMAGE_NT_OPTIONAL_HDR64_MAGIC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  346|    540|#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   14|    540|                    : pe->header->OptionalHeader.field)
  ------------------
  108|       |
  109|       |  // Check that directory is in file
  110|    540|  if (!struct_fits_in_pe(pe, result, IMAGE_DATA_DIRECTORY))
  ------------------
  |  |   77|    540|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|    540|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 540, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 540, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|    540|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 540, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|      0|    return NULL;
  112|       |
  113|    540|  return result;
  114|    540|}
pe_rva_to_offset:
  118|  6.49M|{
  119|  6.49M|  PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pe->header);
  ------------------
  |  |  369|  6.49M|  ((PIMAGE_SECTION_HEADER)(                                             \
  |  |  370|  6.49M|      (BYTE*) ntheader + offsetof(IMAGE_NT_HEADERS32, OptionalHeader) + \
  |  |  371|  6.49M|      yr_le16toh(((PIMAGE_NT_HEADERS32)(ntheader))                      \
  |  |  ------------------
  |  |  |  |   88|  6.49M|#define yr_le16toh(x) (x)
  |  |  ------------------
  |  |  372|  6.49M|                     ->FileHeader.SizeOfOptionalHeader)))
  ------------------
  120|       |
  121|  6.49M|  DWORD lowest_section_rva = 0xffffffff;
  122|  6.49M|  DWORD section_rva = 0;
  123|  6.49M|  DWORD section_offset = 0;
  124|  6.49M|  DWORD section_raw_size = 0;
  125|       |
  126|  6.49M|  int64_t result;
  127|       |
  128|  6.49M|  int i = 0;
  129|       |
  130|  6.49M|  int alignment = 0;
  131|  6.49M|  int rest = 0;
  132|       |
  133|  33.5M|  while (i < yr_min(
  ------------------
  |  |  107|  33.5M|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 17.7M, False: 15.8M]
  |  |  ------------------
  ------------------
  |  Branch (133:10): [True: 27.0M, False: 6.49M]
  ------------------
  134|  6.49M|                 yr_le16toh(pe->header->FileHeader.NumberOfSections),
  135|  6.49M|                 MAX_PE_SECTIONS))
  136|  27.0M|  {
  137|  27.0M|    if (struct_fits_in_pe(pe, section, IMAGE_SECTION_HEADER))
  ------------------
  |  |   77|  27.0M|  fits_in_pe(pe, pointer, sizeof(struct_type))
  |  |  ------------------
  |  |  |  |   73|  27.0M|  ((size_t)(size) <= pe->data_size && (uint8_t*) (pointer) >= pe->data && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:4): [True: 27.0M, False: 0]
  |  |  |  |  |  Branch (73:39): [True: 27.0M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   74|  27.0M|   (uint8_t*) (pointer) <= pe->data + pe->data_size - (size))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:4): [True: 27.0M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|  27.0M|    {
  139|  27.0M|      if (lowest_section_rva > yr_le32toh(section->VirtualAddress))
  ------------------
  |  |   89|  27.0M|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (139:11): [True: 5.64M, False: 21.4M]
  ------------------
  140|  5.64M|      {
  141|  5.64M|        lowest_section_rva = yr_le32toh(section->VirtualAddress);
  ------------------
  |  |   89|  5.64M|#define yr_le32toh(x) (x)
  ------------------
  142|  5.64M|      }
  143|       |
  144|  27.0M|      uint32_t virtualSize = yr_le32toh(
  ------------------
  |  |   89|  54.1M|#define yr_le32toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (89:24): [True: 27.0M, False: 40.7k]
  |  |  ------------------
  ------------------
  145|  27.0M|          section->Misc.VirtualSize != 0 ?
  146|  27.0M|          section->Misc.VirtualSize :
  147|  27.0M|          section->SizeOfRawData);
  148|       |
  149|  27.0M|      if (rva >= yr_le32toh(section->VirtualAddress) &&
  ------------------
  |  |   89|  54.1M|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (149:11): [True: 21.3M, False: 5.72M]
  ------------------
  150|  27.0M|          rva - yr_le32toh(section->VirtualAddress) < virtualSize &&
  ------------------
  |  |   89|  21.3M|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (150:11): [True: 19.0M, False: 2.31M]
  ------------------
  151|  27.0M|          section_rva <= yr_le32toh(section->VirtualAddress))
  ------------------
  |  |   89|  19.0M|#define yr_le32toh(x) (x)
  ------------------
  |  Branch (151:11): [True: 19.0M, False: 497]
  ------------------
  152|  19.0M|      {
  153|       |        // Round section_offset
  154|       |        //
  155|       |        // Rounding everything less than 0x200 to 0 as discussed in
  156|       |        // https://code.google.com/archive/p/corkami/wikis/PE.wiki#PointerToRawData
  157|       |        // does not work for PE32_FILE from the test suite and for
  158|       |        // some tinype samples where File Alignment = 4
  159|       |        // (http://www.phreedom.org/research/tinype/).
  160|       |        //
  161|       |        // If FileAlignment is >= 0x200, it is apparently ignored (see
  162|       |        // Ero Carreras's pefile.py, PE.adjust_FileAlignment).
  163|       |
  164|  19.0M|        alignment = yr_min(
  ------------------
  |  |  107|  38.0M|#define yr_min(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (107:23): [True: 19.0M, False: 10.8k]
  |  |  |  Branch (107:25): [True: 25.6k, False: 18.9M]
  |  |  |  Branch (107:38): [True: 14.9k, False: 18.9M]
  |  |  ------------------
  ------------------
  165|  19.0M|            yr_le32toh(OptionalHeader(pe, FileAlignment)), 0x200);
  166|       |
  167|  19.0M|        section_rva = yr_le32toh(section->VirtualAddress);
  ------------------
  |  |   89|  19.0M|#define yr_le32toh(x) (x)
  ------------------
  168|  19.0M|        section_offset = yr_le32toh(section->PointerToRawData);
  ------------------
  |  |   89|  19.0M|#define yr_le32toh(x) (x)
  ------------------
  169|  19.0M|        section_raw_size = yr_le32toh(section->SizeOfRawData);
  ------------------
  |  |   89|  19.0M|#define yr_le32toh(x) (x)
  ------------------
  170|       |
  171|  19.0M|        if (alignment)
  ------------------
  |  Branch (171:13): [True: 25.8k, False: 18.9M]
  ------------------
  172|  25.8k|        {
  173|  25.8k|          rest = section_offset % alignment;
  174|       |
  175|  25.8k|          if (rest)
  ------------------
  |  Branch (175:15): [True: 25.1k, False: 660]
  ------------------
  176|  25.1k|            section_offset -= rest;
  177|  25.8k|        }
  178|       |
  179|       |        // For multi-section images, real pointer to raw data is aligned down to sector size
  180|  19.0M|        if (yr_le32toh(OptionalHeader(pe, SectionAlignment)) >= PE_PAGE_SIZE)
  ------------------
  |  |   89|  38.0M|#define yr_le32toh(x) (x)
  |  |  ------------------
  |  |  |  Branch (89:24): [True: 25.6k, False: 18.9M]
  |  |  ------------------
  ------------------
                      if (yr_le32toh(OptionalHeader(pe, SectionAlignment)) >= PE_PAGE_SIZE)
  ------------------
  |  |  877|  19.0M|#define PE_PAGE_SIZE   0x1000
  ------------------
  |  Branch (180:13): [True: 13.5k, False: 18.9M]
  ------------------
  181|  13.5k|          section_offset = section_offset & ~(PE_SECTOR_SIZE - 1);
  ------------------
  |  |  878|  13.5k|#define PE_SECTOR_SIZE 0x0200
  ------------------
  182|       |
  183|  19.0M|      }
  184|       |
  185|  27.0M|      section++;
  186|  27.0M|      i++;
  187|  27.0M|    }
  188|      0|    else
  189|      0|    {
  190|      0|      return -1;
  191|      0|    }
  192|  27.0M|  }
  193|       |
  194|       |  // Everything before the first section seems to get mapped straight
  195|       |  // relative to ImageBase.
  196|       |
  197|  6.49M|  if (rva < lowest_section_rva)
  ------------------
  |  Branch (197:7): [True: 4.34M, False: 2.14M]
  ------------------
  198|  4.34M|  {
  199|  4.34M|    section_rva = 0;
  200|  4.34M|    section_offset = 0;
  201|  4.34M|    section_raw_size = (DWORD) pe->data_size;
  202|  4.34M|  }
  203|       |
  204|       |  // Many sections, have a raw (on disk) size smaller than their in-memory size.
  205|       |  // Check for rva's that map to this sparse space, and therefore have no valid
  206|       |  // associated file offset.
  207|       |
  208|  6.49M|  if ((rva - section_rva) >= section_raw_size)
  ------------------
  |  Branch (208:7): [True: 2.49M, False: 4.00M]
  ------------------
  209|  2.49M|    return -1;
  210|       |
  211|  4.00M|  result = section_offset + (rva - section_rva);
  212|       |
  213|       |  // Check that the offset fits within the file.
  214|  4.00M|  if (result >= pe->data_size)
  ------------------
  |  Branch (214:7): [True: 231k, False: 3.77M]
  ------------------
  215|   231k|    return -1;
  216|       |
  217|  3.77M|  return result;
  218|  4.00M|}
ord_lookup:
  268|   879k|{
  269|   879k|  char name[64];
  270|   879k|  name[0] = '\0';
  271|       |
  272|   879k|  if (strncasecmp(dll, "WS2_32.dll", 10) == 0 ||
  ------------------
  |  Branch (272:7): [True: 505k, False: 373k]
  ------------------
  273|   879k|      strncasecmp(dll, "wsock32.dll", 11) == 0)
  ------------------
  |  Branch (273:7): [True: 124, False: 373k]
  ------------------
  274|   506k|  {
  275|   506k|    switch (ord)
  276|   506k|    {
  277|  7.44k|    case 1:
  ------------------
  |  Branch (277:5): [True: 7.44k, False: 498k]
  ------------------
  278|  7.44k|      sprintf(name, "accept");
  279|  7.44k|      break;
  280|    496|    case 2:
  ------------------
  |  Branch (280:5): [True: 496, False: 505k]
  ------------------
  281|    496|      sprintf(name, "bind");
  282|    496|      break;
  283|    428|    case 3:
  ------------------
  |  Branch (283:5): [True: 428, False: 505k]
  ------------------
  284|    428|      sprintf(name, "closesocket");
  285|    428|      break;
  286|    119|    case 4:
  ------------------
  |  Branch (286:5): [True: 119, False: 505k]
  ------------------
  287|    119|      sprintf(name, "connect");
  288|    119|      break;
  289|    705|    case 5:
  ------------------
  |  Branch (289:5): [True: 705, False: 505k]
  ------------------
  290|    705|      sprintf(name, "getpeername");
  291|    705|      break;
  292|      9|    case 6:
  ------------------
  |  Branch (292:5): [True: 9, False: 506k]
  ------------------
  293|      9|      sprintf(name, "getsockname");
  294|      9|      break;
  295|     76|    case 7:
  ------------------
  |  Branch (295:5): [True: 76, False: 505k]
  ------------------
  296|     76|      sprintf(name, "getsockopt");
  297|     76|      break;
  298|    463|    case 8:
  ------------------
  |  Branch (298:5): [True: 463, False: 505k]
  ------------------
  299|    463|      sprintf(name, "htonl");
  300|    463|      break;
  301|     97|    case 9:
  ------------------
  |  Branch (301:5): [True: 97, False: 505k]
  ------------------
  302|     97|      sprintf(name, "htons");
  303|     97|      break;
  304|     76|    case 10:
  ------------------
  |  Branch (304:5): [True: 76, False: 505k]
  ------------------
  305|     76|      sprintf(name, "ioctlsocket");
  306|     76|      break;
  307|  6.23k|    case 11:
  ------------------
  |  Branch (307:5): [True: 6.23k, False: 499k]
  ------------------
  308|  6.23k|      sprintf(name, "inet_addr");
  309|  6.23k|      break;
  310|      0|    case 12:
  ------------------
  |  Branch (310:5): [True: 0, False: 506k]
  ------------------
  311|      0|      sprintf(name, "inet_ntoa");
  312|      0|      break;
  313|      0|    case 13:
  ------------------
  |  Branch (313:5): [True: 0, False: 506k]
  ------------------
  314|      0|      sprintf(name, "listen");
  315|      0|      break;
  316|    126|    case 14:
  ------------------
  |  Branch (316:5): [True: 126, False: 505k]
  ------------------
  317|    126|      sprintf(name, "ntohl");
  318|    126|      break;
  319|    131|    case 15:
  ------------------
  |  Branch (319:5): [True: 131, False: 505k]
  ------------------
  320|    131|      sprintf(name, "ntohs");
  321|    131|      break;
  322|  1.14k|    case 16:
  ------------------
  |  Branch (322:5): [True: 1.14k, False: 504k]
  ------------------
  323|  1.14k|      sprintf(name, "recv");
  324|  1.14k|      break;
  325|    104|    case 17:
  ------------------
  |  Branch (325:5): [True: 104, False: 505k]
  ------------------
  326|    104|      sprintf(name, "recvfrom");
  327|    104|      break;
  328|      0|    case 18:
  ------------------
  |  Branch (328:5): [True: 0, False: 506k]
  ------------------
  329|      0|      sprintf(name, "select");
  330|      0|      break;
  331|      0|    case 19:
  ------------------
  |  Branch (331:5): [True: 0, False: 506k]
  ------------------
  332|      0|      sprintf(name, "send");
  333|      0|      break;
  334|    177|    case 20:
  ------------------
  |  Branch (334:5): [True: 177, False: 505k]
  ------------------
  335|    177|      sprintf(name, "sendto");
  336|    177|      break;
  337|  2.83k|    case 21:
  ------------------
  |  Branch (337:5): [True: 2.83k, False: 503k]
  ------------------
  338|  2.83k|      sprintf(name, "setsockopt");
  339|  2.83k|      break;
  340|     38|    case 22:
  ------------------
  |  Branch (340:5): [True: 38, False: 506k]
  ------------------
  341|     38|      sprintf(name, "shutdown");
  342|     38|      break;
  343|      0|    case 23:
  ------------------
  |  Branch (343:5): [True: 0, False: 506k]
  ------------------
  344|      0|      sprintf(name, "socket");
  345|      0|      break;
  346|    216|    case 24:
  ------------------
  |  Branch (346:5): [True: 216, False: 505k]
  ------------------
  347|    216|      sprintf(name, "GetAddrInfoW");
  348|    216|      break;
  349|     24|    case 25:
  ------------------
  |  Branch (349:5): [True: 24, False: 506k]
  ------------------
  350|     24|      sprintf(name, "GetNameInfoW");
  351|     24|      break;
  352|      0|    case 26:
  ------------------
  |  Branch (352:5): [True: 0, False: 506k]
  ------------------
  353|      0|      sprintf(name, "WSApSetPostRoutine");
  354|      0|      break;
  355|      0|    case 27:
  ------------------
  |  Branch (355:5): [True: 0, False: 506k]
  ------------------
  356|      0|      sprintf(name, "FreeAddrInfoW");
  357|      0|      break;
  358|    143|    case 28:
  ------------------
  |  Branch (358:5): [True: 143, False: 505k]
  ------------------
  359|    143|      sprintf(name, "WPUCompleteOverlappedRequest");
  360|    143|      break;
  361|    625|    case 29:
  ------------------
  |  Branch (361:5): [True: 625, False: 505k]
  ------------------
  362|    625|      sprintf(name, "WSAAccept");
  363|    625|      break;
  364|     22|    case 30:
  ------------------
  |  Branch (364:5): [True: 22, False: 506k]
  ------------------
  365|     22|      sprintf(name, "WSAAddressToStringA");
  366|     22|      break;
  367|     36|    case 31:
  ------------------
  |  Branch (367:5): [True: 36, False: 506k]
  ------------------
  368|     36|      sprintf(name, "WSAAddressToStringW");
  369|     36|      break;
  370|    217|    case 32:
  ------------------
  |  Branch (370:5): [True: 217, False: 505k]
  ------------------
  371|    217|      sprintf(name, "WSACloseEvent");
  372|    217|      break;
  373|    100|    case 33:
  ------------------
  |  Branch (373:5): [True: 100, False: 505k]
  ------------------
  374|    100|      sprintf(name, "WSAConnect");
  375|    100|      break;
  376|    143|    case 34:
  ------------------
  |  Branch (376:5): [True: 143, False: 505k]
  ------------------
  377|    143|      sprintf(name, "WSACreateEvent");
  378|    143|      break;
  379|      1|    case 35:
  ------------------
  |  Branch (379:5): [True: 1, False: 506k]
  ------------------
  380|      1|      sprintf(name, "WSADuplicateSocketA");
  381|      1|      break;
  382|     55|    case 36:
  ------------------
  |  Branch (382:5): [True: 55, False: 506k]
  ------------------
  383|     55|      sprintf(name, "WSADuplicateSocketW");
  384|     55|      break;
  385|      0|    case 37:
  ------------------
  |  Branch (385:5): [True: 0, False: 506k]
  ------------------
  386|      0|      sprintf(name, "WSAEnumNameSpaceProvidersA");
  387|      0|      break;
  388|     45|    case 38:
  ------------------
  |  Branch (388:5): [True: 45, False: 506k]
  ------------------
  389|     45|      sprintf(name, "WSAEnumNameSpaceProvidersW");
  390|     45|      break;
  391|    131|    case 39:
  ------------------
  |  Branch (391:5): [True: 131, False: 505k]
  ------------------
  392|    131|      sprintf(name, "WSAEnumNetworkEvents");
  393|    131|      break;
  394|    209|    case 40:
  ------------------
  |  Branch (394:5): [True: 209, False: 505k]
  ------------------
  395|    209|      sprintf(name, "WSAEnumProtocolsA");
  396|    209|      break;
  397|     22|    case 41:
  ------------------
  |  Branch (397:5): [True: 22, False: 506k]
  ------------------
  398|     22|      sprintf(name, "WSAEnumProtocolsW");
  399|     22|      break;
  400|     13|    case 42:
  ------------------
  |  Branch (400:5): [True: 13, False: 506k]
  ------------------
  401|     13|      sprintf(name, "WSAEventSelect");
  402|     13|      break;
  403|      0|    case 43:
  ------------------
  |  Branch (403:5): [True: 0, False: 506k]
  ------------------
  404|      0|      sprintf(name, "WSAGetOverlappedResult");
  405|      0|      break;
  406|      0|    case 44:
  ------------------
  |  Branch (406:5): [True: 0, False: 506k]
  ------------------
  407|      0|      sprintf(name, "WSAGetQOSByName");
  408|      0|      break;
  409|      0|    case 45:
  ------------------
  |  Branch (409:5): [True: 0, False: 506k]
  ------------------
  410|      0|      sprintf(name, "WSAGetServiceClassInfoA");
  411|      0|      break;
  412|      8|    case 46:
  ------------------
  |  Branch (412:5): [True: 8, False: 506k]
  ------------------
  413|      8|      sprintf(name, "WSAGetServiceClassInfoW");
  414|      8|      break;
  415|     40|    case 47:
  ------------------
  |  Branch (415:5): [True: 40, False: 506k]
  ------------------
  416|     40|      sprintf(name, "WSAGetServiceClassNameByClassIdA");
  417|     40|      break;
  418|    512|    case 48:
  ------------------
  |  Branch (418:5): [True: 512, False: 505k]
  ------------------
  419|    512|      sprintf(name, "WSAGetServiceClassNameByClassIdW");
  420|    512|      break;
  421|    327|    case 49:
  ------------------
  |  Branch (421:5): [True: 327, False: 505k]
  ------------------
  422|    327|      sprintf(name, "WSAHtonl");
  423|    327|      break;
  424|    114|    case 50:
  ------------------
  |  Branch (424:5): [True: 114, False: 505k]
  ------------------
  425|    114|      sprintf(name, "WSAHtons");
  426|    114|      break;
  427|    243|    case 51:
  ------------------
  |  Branch (427:5): [True: 243, False: 505k]
  ------------------
  428|    243|      sprintf(name, "gethostbyaddr");
  429|    243|      break;
  430|     60|    case 52:
  ------------------
  |  Branch (430:5): [True: 60, False: 505k]
  ------------------
  431|     60|      sprintf(name, "gethostbyname");
  432|     60|      break;
  433|     50|    case 53:
  ------------------
  |  Branch (433:5): [True: 50, False: 506k]
  ------------------
  434|     50|      sprintf(name, "getprotobyname");
  435|     50|      break;
  436|     47|    case 54:
  ------------------
  |  Branch (436:5): [True: 47, False: 506k]
  ------------------
  437|     47|      sprintf(name, "getprotobynumber");
  438|     47|      break;
  439|      0|    case 55:
  ------------------
  |  Branch (439:5): [True: 0, False: 506k]
  ------------------
  440|      0|      sprintf(name, "getservbyname");
  441|      0|      break;
  442|     78|    case 56:
  ------------------
  |  Branch (442:5): [True: 78, False: 505k]
  ------------------
  443|     78|      sprintf(name, "getservbyport");
  444|     78|      break;
  445|     60|    case 57:
  ------------------
  |  Branch (445:5): [True: 60, False: 505k]
  ------------------
  446|     60|      sprintf(name, "gethostname");
  447|     60|      break;
  448|      2|    case 58:
  ------------------
  |  Branch (448:5): [True: 2, False: 506k]
  ------------------
  449|      2|      sprintf(name, "WSAInstallServiceClassA");
  450|      2|      break;
  451|    105|    case 59:
  ------------------
  |  Branch (451:5): [True: 105, False: 505k]
  ------------------
  452|    105|      sprintf(name, "WSAInstallServiceClassW");
  453|    105|      break;
  454|      7|    case 60:
  ------------------
  |  Branch (454:5): [True: 7, False: 506k]
  ------------------
  455|      7|      sprintf(name, "WSAIoctl");
  456|      7|      break;
  457|      0|    case 61:
  ------------------
  |  Branch (457:5): [True: 0, False: 506k]
  ------------------
  458|      0|      sprintf(name, "WSAJoinLeaf");
  459|      0|      break;
  460|     12|    case 62:
  ------------------
  |  Branch (460:5): [True: 12, False: 506k]
  ------------------
  461|     12|      sprintf(name, "WSALookupServiceBeginA");
  462|     12|      break;
  463|     64|    case 63:
  ------------------
  |  Branch (463:5): [True: 64, False: 505k]
  ------------------
  464|     64|      sprintf(name, "WSALookupServiceBeginW");
  465|     64|      break;
  466|      0|    case 64:
  ------------------
  |  Branch (466:5): [True: 0, False: 506k]
  ------------------
  467|      0|      sprintf(name, "WSALookupServiceEnd");
  468|      0|      break;
  469|      8|    case 65:
  ------------------
  |  Branch (469:5): [True: 8, False: 506k]
  ------------------
  470|      8|      sprintf(name, "WSALookupServiceNextA");
  471|      8|      break;
  472|     82|    case 66:
  ------------------
  |  Branch (472:5): [True: 82, False: 505k]
  ------------------
  473|     82|      sprintf(name, "WSALookupServiceNextW");
  474|     82|      break;
  475|     96|    case 67:
  ------------------
  |  Branch (475:5): [True: 96, False: 505k]
  ------------------
  476|     96|      sprintf(name, "WSANSPIoctl");
  477|     96|      break;
  478|    194|    case 68:
  ------------------
  |  Branch (478:5): [True: 194, False: 505k]
  ------------------
  479|    194|      sprintf(name, "WSANtohl");
  480|    194|      break;
  481|    567|    case 69:
  ------------------
  |  Branch (481:5): [True: 567, False: 505k]
  ------------------
  482|    567|      sprintf(name, "WSANtohs");
  483|    567|      break;
  484|    404|    case 70:
  ------------------
  |  Branch (484:5): [True: 404, False: 505k]
  ------------------
  485|    404|      sprintf(name, "WSAProviderConfigChange");
  486|    404|      break;
  487|    277|    case 71:
  ------------------
  |  Branch (487:5): [True: 277, False: 505k]
  ------------------
  488|    277|      sprintf(name, "WSARecv");
  489|    277|      break;
  490|     12|    case 72:
  ------------------
  |  Branch (490:5): [True: 12, False: 506k]
  ------------------
  491|     12|      sprintf(name, "WSARecvDisconnect");
  492|     12|      break;
  493|      6|    case 73:
  ------------------
  |  Branch (493:5): [True: 6, False: 506k]
  ------------------
  494|      6|      sprintf(name, "WSARecvFrom");
  495|      6|      break;
  496|      0|    case 74:
  ------------------
  |  Branch (496:5): [True: 0, False: 506k]
  ------------------
  497|      0|      sprintf(name, "WSARemoveServiceClass");
  498|      0|      break;
  499|     88|    case 75:
  ------------------
  |  Branch (499:5): [True: 88, False: 505k]
  ------------------
  500|     88|      sprintf(name, "WSAResetEvent");
  501|     88|      break;
  502|    133|    case 76:
  ------------------
  |  Branch (502:5): [True: 133, False: 505k]
  ------------------
  503|    133|      sprintf(name, "WSASend");
  504|    133|      break;
  505|     58|    case 77:
  ------------------
  |  Branch (505:5): [True: 58, False: 506k]
  ------------------
  506|     58|      sprintf(name, "WSASendDisconnect");
  507|     58|      break;
  508|     18|    case 78:
  ------------------
  |  Branch (508:5): [True: 18, False: 506k]
  ------------------
  509|     18|      sprintf(name, "WSASendTo");
  510|     18|      break;
  511|      1|    case 79:
  ------------------
  |  Branch (511:5): [True: 1, False: 506k]
  ------------------
  512|      1|      sprintf(name, "WSASetEvent");
  513|      1|      break;
  514|      3|    case 80:
  ------------------
  |  Branch (514:5): [True: 3, False: 506k]
  ------------------
  515|      3|      sprintf(name, "WSASetServiceA");
  516|      3|      break;
  517|     67|    case 81:
  ------------------
  |  Branch (517:5): [True: 67, False: 505k]
  ------------------
  518|     67|      sprintf(name, "WSASetServiceW");
  519|     67|      break;
  520|    165|    case 82:
  ------------------
  |  Branch (520:5): [True: 165, False: 505k]
  ------------------
  521|    165|      sprintf(name, "WSASocketA");
  522|    165|      break;
  523|     12|    case 83:
  ------------------
  |  Branch (523:5): [True: 12, False: 506k]
  ------------------
  524|     12|      sprintf(name, "WSASocketW");
  525|     12|      break;
  526|     84|    case 84:
  ------------------
  |  Branch (526:5): [True: 84, False: 505k]
  ------------------
  527|     84|      sprintf(name, "WSAStringToAddressA");
  528|     84|      break;
  529|    130|    case 85:
  ------------------
  |  Branch (529:5): [True: 130, False: 505k]
  ------------------
  530|    130|      sprintf(name, "WSAStringToAddressW");
  531|    130|      break;
  532|     27|    case 86:
  ------------------
  |  Branch (532:5): [True: 27, False: 506k]
  ------------------
  533|     27|      sprintf(name, "WSAWaitForMultipleEvents");
  534|     27|      break;
  535|     37|    case 87:
  ------------------
  |  Branch (535:5): [True: 37, False: 506k]
  ------------------
  536|     37|      sprintf(name, "WSCDeinstallProvider");
  537|     37|      break;
  538|     49|    case 88:
  ------------------
  |  Branch (538:5): [True: 49, False: 506k]
  ------------------
  539|     49|      sprintf(name, "WSCEnableNSProvider");
  540|     49|      break;
  541|    666|    case 89:
  ------------------
  |  Branch (541:5): [True: 666, False: 505k]
  ------------------
  542|    666|      sprintf(name, "WSCEnumProtocols");
  543|    666|      break;
  544|     23|    case 90:
  ------------------
  |  Branch (544:5): [True: 23, False: 506k]
  ------------------
  545|     23|      sprintf(name, "WSCGetProviderPath");
  546|     23|      break;
  547|      3|    case 91:
  ------------------
  |  Branch (547:5): [True: 3, False: 506k]
  ------------------
  548|      3|      sprintf(name, "WSCInstallNameSpace");
  549|      3|      break;
  550|     74|    case 92:
  ------------------
  |  Branch (550:5): [True: 74, False: 505k]
  ------------------
  551|     74|      sprintf(name, "WSCInstallProvider");
  552|     74|      break;
  553|      8|    case 93:
  ------------------
  |  Branch (553:5): [True: 8, False: 506k]
  ------------------
  554|      8|      sprintf(name, "WSCUnInstallNameSpace");
  555|      8|      break;
  556|     30|    case 94:
  ------------------
  |  Branch (556:5): [True: 30, False: 506k]
  ------------------
  557|     30|      sprintf(name, "WSCUpdateProvider");
  558|     30|      break;
  559|     38|    case 95:
  ------------------
  |  Branch (559:5): [True: 38, False: 506k]
  ------------------
  560|     38|      sprintf(name, "WSCWriteNameSpaceOrder");
  561|     38|      break;
  562|      0|    case 96:
  ------------------
  |  Branch (562:5): [True: 0, False: 506k]
  ------------------
  563|      0|      sprintf(name, "WSCWriteProviderOrder");
  564|      0|      break;
  565|    109|    case 97:
  ------------------
  |  Branch (565:5): [True: 109, False: 505k]
  ------------------
  566|    109|      sprintf(name, "freeaddrinfo");
  567|    109|      break;
  568|      0|    case 98:
  ------------------
  |  Branch (568:5): [True: 0, False: 506k]
  ------------------
  569|      0|      sprintf(name, "getaddrinfo");
  570|      0|      break;
  571|      0|    case 99:
  ------------------
  |  Branch (571:5): [True: 0, False: 506k]
  ------------------
  572|      0|      sprintf(name, "getnameinfo");
  573|      0|      break;
  574|     54|    case 101:
  ------------------
  |  Branch (574:5): [True: 54, False: 506k]
  ------------------
  575|     54|      sprintf(name, "WSAAsyncSelect");
  576|     54|      break;
  577|      0|    case 102:
  ------------------
  |  Branch (577:5): [True: 0, False: 506k]
  ------------------
  578|      0|      sprintf(name, "WSAAsyncGetHostByAddr");
  579|      0|      break;
  580|     29|    case 103:
  ------------------
  |  Branch (580:5): [True: 29, False: 506k]
  ------------------
  581|     29|      sprintf(name, "WSAAsyncGetHostByName");
  582|     29|      break;
  583|     44|    case 104:
  ------------------
  |  Branch (583:5): [True: 44, False: 506k]
  ------------------
  584|     44|      sprintf(name, "WSAAsyncGetProtoByNumber");
  585|     44|      break;
  586|      0|    case 105:
  ------------------
  |  Branch (586:5): [True: 0, False: 506k]
  ------------------
  587|      0|      sprintf(name, "WSAAsyncGetProtoByName");
  588|      0|      break;
  589|      2|    case 106:
  ------------------
  |  Branch (589:5): [True: 2, False: 506k]
  ------------------
  590|      2|      sprintf(name, "WSAAsyncGetServByPort");
  591|      2|      break;
  592|     72|    case 107:
  ------------------
  |  Branch (592:5): [True: 72, False: 505k]
  ------------------
  593|     72|      sprintf(name, "WSAAsyncGetServByName");
  594|     72|      break;
  595|     90|    case 108:
  ------------------
  |  Branch (595:5): [True: 90, False: 505k]
  ------------------
  596|     90|      sprintf(name, "WSACancelAsyncRequest");
  597|     90|      break;
  598|      0|    case 109:
  ------------------
  |  Branch (598:5): [True: 0, False: 506k]
  ------------------
  599|      0|      sprintf(name, "WSASetBlockingHook");
  600|      0|      break;
  601|    251|    case 110:
  ------------------
  |  Branch (601:5): [True: 251, False: 505k]
  ------------------
  602|    251|      sprintf(name, "WSAUnhookBlockingHook");
  603|    251|      break;
  604|    288|    case 111:
  ------------------
  |  Branch (604:5): [True: 288, False: 505k]
  ------------------
  605|    288|      sprintf(name, "WSAGetLastError");
  606|    288|      break;
  607|      8|    case 112:
  ------------------
  |  Branch (607:5): [True: 8, False: 506k]
  ------------------
  608|      8|      sprintf(name, "WSASetLastError");
  609|      8|      break;
  610|    174|    case 113:
  ------------------
  |  Branch (610:5): [True: 174, False: 505k]
  ------------------
  611|    174|      sprintf(name, "WSACancelBlockingCall");
  612|    174|      break;
  613|      1|    case 114:
  ------------------
  |  Branch (613:5): [True: 1, False: 506k]
  ------------------
  614|      1|      sprintf(name, "WSAIsBlocking");
  615|      1|      break;
  616|     80|    case 115:
  ------------------
  |  Branch (616:5): [True: 80, False: 505k]
  ------------------
  617|     80|      sprintf(name, "WSAStartup");
  618|     80|      break;
  619|     69|    case 116:
  ------------------
  |  Branch (619:5): [True: 69, False: 505k]
  ------------------
  620|     69|      sprintf(name, "WSACleanup");
  621|     69|      break;
  622|    633|    case 151:
  ------------------
  |  Branch (622:5): [True: 633, False: 505k]
  ------------------
  623|    633|      sprintf(name, "__WSAFDIsSet");
  624|    633|      break;
  625|      0|    case 500:
  ------------------
  |  Branch (625:5): [True: 0, False: 506k]
  ------------------
  626|      0|      sprintf(name, "WEP");
  627|      0|      break;
  628|   476k|    default:
  ------------------
  |  Branch (628:5): [True: 476k, False: 29.6k]
  ------------------
  629|   476k|      break;
  630|   506k|    }
  631|   506k|  }
  632|   373k|  else if (strncasecmp(dll, "oleaut32.dll", 12) == 0)
  ------------------
  |  Branch (632:12): [True: 31.4k, False: 341k]
  ------------------
  633|  31.4k|  {
  634|  31.4k|    switch (ord)
  635|  31.4k|    {
  636|     33|    case 2:
  ------------------
  |  Branch (636:5): [True: 33, False: 31.3k]
  ------------------
  637|     33|      sprintf(name, "SysAllocString");
  638|     33|      break;
  639|      0|    case 3:
  ------------------
  |  Branch (639:5): [True: 0, False: 31.4k]
  ------------------
  640|      0|      sprintf(name, "SysReAllocString");
  641|      0|      break;
  642|      0|    case 4:
  ------------------
  |  Branch (642:5): [True: 0, False: 31.4k]
  ------------------
  643|      0|      sprintf(name, "SysAllocStringLen");
  644|      0|      break;
  645|     12|    case 5:
  ------------------
  |  Branch (645:5): [True: 12, False: 31.4k]
  ------------------
  646|     12|      sprintf(name, "SysReAllocStringLen");
  647|     12|      break;
  648|      2|    case 6:
  ------------------
  |  Branch (648:5): [True: 2, False: 31.4k]
  ------------------
  649|      2|      sprintf(name, "SysFreeString");
  650|      2|      break;
  651|      0|    case 7:
  ------------------
  |  Branch (651:5): [True: 0, False: 31.4k]
  ------------------
  652|      0|      sprintf(name, "SysStringLen");
  653|      0|      break;
  654|     87|    case 8:
  ------------------
  |  Branch (654:5): [True: 87, False: 31.3k]
  ------------------
  655|     87|      sprintf(name, "VariantInit");
  656|     87|      break;
  657|      1|    case 9:
  ------------------
  |  Branch (657:5): [True: 1, False: 31.4k]
  ------------------
  658|      1|      sprintf(name, "VariantClear");
  659|      1|      break;
  660|      0|    case 10:
  ------------------
  |  Branch (660:5): [True: 0, False: 31.4k]
  ------------------
  661|      0|      sprintf(name, "VariantCopy");
  662|      0|      break;
  663|      0|    case 11:
  ------------------
  |  Branch (663:5): [True: 0, False: 31.4k]
  ------------------
  664|      0|      sprintf(name, "VariantCopyInd");
  665|      0|      break;
  666|      0|    case 12:
  ------------------
  |  Branch (666:5): [True: 0, False: 31.4k]
  ------------------
  667|      0|      sprintf(name, "VariantChangeType");
  668|      0|      break;
  669|     35|    case 13:
  ------------------
  |  Branch (669:5): [True: 35, False: 31.3k]
  ------------------
  670|     35|      sprintf(name, "VariantTimeToDosDateTime");
  671|     35|      break;
  672|      0|    case 14:
  ------------------
  |  Branch (672:5): [True: 0, False: 31.4k]
  ------------------
  673|      0|      sprintf(name, "DosDateTimeToVariantTime");
  674|      0|      break;
  675|      0|    case 15:
  ------------------
  |  Branch (675:5): [True: 0, False: 31.4k]
  ------------------
  676|      0|      sprintf(name, "SafeArrayCreate");
  677|      0|      break;
  678|      0|    case 16:
  ------------------
  |  Branch (678:5): [True: 0, False: 31.4k]
  ------------------
  679|      0|      sprintf(name, "SafeArrayDestroy");
  680|      0|      break;
  681|      0|    case 17:
  ------------------
  |  Branch (681:5): [True: 0, False: 31.4k]
  ------------------
  682|      0|      sprintf(name, "SafeArrayGetDim");
  683|      0|      break;
  684|      4|    case 18:
  ------------------
  |  Branch (684:5): [True: 4, False: 31.4k]
  ------------------
  685|      4|      sprintf(name, "SafeArrayGetElemsize");
  686|      4|      break;
  687|     27|    case 19:
  ------------------
  |  Branch (687:5): [True: 27, False: 31.3k]
  ------------------
  688|     27|      sprintf(name, "SafeArrayGetUBound");
  689|     27|      break;
  690|      0|    case 20:
  ------------------
  |  Branch (690:5): [True: 0, False: 31.4k]
  ------------------
  691|      0|      sprintf(name, "SafeArrayGetLBound");
  692|      0|      break;
  693|     72|    case 21:
  ------------------
  |  Branch (693:5): [True: 72, False: 31.3k]
  ------------------
  694|     72|      sprintf(name, "SafeArrayLock");
  695|     72|      break;
  696|      0|    case 22:
  ------------------
  |  Branch (696:5): [True: 0, False: 31.4k]
  ------------------
  697|      0|      sprintf(name, "SafeArrayUnlock");
  698|      0|      break;
  699|      2|    case 23:
  ------------------
  |  Branch (699:5): [True: 2, False: 31.4k]
  ------------------
  700|      2|      sprintf(name, "SafeArrayAccessData");
  701|      2|      break;
  702|      0|    case 24:
  ------------------
  |  Branch (702:5): [True: 0, False: 31.4k]
  ------------------
  703|      0|      sprintf(name, "SafeArrayUnaccessData");
  704|      0|      break;
  705|      0|    case 25:
  ------------------
  |  Branch (705:5): [True: 0, False: 31.4k]
  ------------------
  706|      0|      sprintf(name, "SafeArrayGetElement");
  707|      0|      break;
  708|      0|    case 26:
  ------------------
  |  Branch (708:5): [True: 0, False: 31.4k]
  ------------------
  709|      0|      sprintf(name, "SafeArrayPutElement");
  710|      0|      break;
  711|      8|    case 27:
  ------------------
  |  Branch (711:5): [True: 8, False: 31.4k]
  ------------------
  712|      8|      sprintf(name, "SafeArrayCopy");
  713|      8|      break;
  714|      0|    case 28:
  ------------------
  |  Branch (714:5): [True: 0, False: 31.4k]
  ------------------
  715|      0|      sprintf(name, "DispGetParam");
  716|      0|      break;
  717|      0|    case 29:
  ------------------
  |  Branch (717:5): [True: 0, False: 31.4k]
  ------------------
  718|      0|      sprintf(name, "DispGetIDsOfNames");
  719|      0|      break;
  720|      0|    case 30:
  ------------------
  |  Branch (720:5): [True: 0, False: 31.4k]
  ------------------
  721|      0|      sprintf(name, "DispInvoke");
  722|      0|      break;
  723|      0|    case 31:
  ------------------
  |  Branch (723:5): [True: 0, False: 31.4k]
  ------------------
  724|      0|      sprintf(name, "CreateDispTypeInfo");
  725|      0|      break;
  726|      2|    case 32:
  ------------------
  |  Branch (726:5): [True: 2, False: 31.4k]
  ------------------
  727|      2|      sprintf(name, "CreateStdDispatch");
  728|      2|      break;
  729|     15|    case 33:
  ------------------
  |  Branch (729:5): [True: 15, False: 31.4k]
  ------------------
  730|     15|      sprintf(name, "RegisterActiveObject");
  731|     15|      break;
  732|      0|    case 34:
  ------------------
  |  Branch (732:5): [True: 0, False: 31.4k]
  ------------------
  733|      0|      sprintf(name, "RevokeActiveObject");
  734|      0|      break;
  735|      0|    case 35:
  ------------------
  |  Branch (735:5): [True: 0, False: 31.4k]
  ------------------
  736|      0|      sprintf(name, "GetActiveObject");
  737|      0|      break;
  738|      0|    case 36:
  ------------------
  |  Branch (738:5): [True: 0, False: 31.4k]
  ------------------
  739|      0|      sprintf(name, "SafeArrayAllocDescriptor");
  740|      0|      break;
  741|      0|    case 37:
  ------------------
  |  Branch (741:5): [True: 0, False: 31.4k]
  ------------------
  742|      0|      sprintf(name, "SafeArrayAllocData");
  743|      0|      break;
  744|      4|    case 38:
  ------------------
  |  Branch (744:5): [True: 4, False: 31.4k]
  ------------------
  745|      4|      sprintf(name, "SafeArrayDestroyDescriptor");
  746|      4|      break;
  747|      2|    case 39:
  ------------------
  |  Branch (747:5): [True: 2, False: 31.4k]
  ------------------
  748|      2|      sprintf(name, "SafeArrayDestroyData");
  749|      2|      break;
  750|     52|    case 40:
  ------------------
  |  Branch (750:5): [True: 52, False: 31.3k]
  ------------------
  751|     52|      sprintf(name, "SafeArrayRedim");
  752|     52|      break;
  753|     12|    case 41:
  ------------------
  |  Branch (753:5): [True: 12, False: 31.4k]
  ------------------
  754|     12|      sprintf(name, "SafeArrayAllocDescriptorEx");
  755|     12|      break;
  756|      0|    case 42:
  ------------------
  |  Branch (756:5): [True: 0, False: 31.4k]
  ------------------
  757|      0|      sprintf(name, "SafeArrayCreateEx");
  758|      0|      break;
  759|      6|    case 43:
  ------------------
  |  Branch (759:5): [True: 6, False: 31.4k]
  ------------------
  760|      6|      sprintf(name, "SafeArrayCreateVectorEx");
  761|      6|      break;
  762|      0|    case 44:
  ------------------
  |  Branch (762:5): [True: 0, False: 31.4k]
  ------------------
  763|      0|      sprintf(name, "SafeArraySetRecordInfo");
  764|      0|      break;
  765|      0|    case 45:
  ------------------
  |  Branch (765:5): [True: 0, False: 31.4k]
  ------------------
  766|      0|      sprintf(name, "SafeArrayGetRecordInfo");
  767|      0|      break;
  768|      0|    case 46:
  ------------------
  |  Branch (768:5): [True: 0, False: 31.4k]
  ------------------
  769|      0|      sprintf(name, "VarParseNumFromStr");
  770|      0|      break;
  771|      0|    case 47:
  ------------------
  |  Branch (771:5): [True: 0, False: 31.4k]
  ------------------
  772|      0|      sprintf(name, "VarNumFromParseNum");
  773|      0|      break;
  774|     26|    case 48:
  ------------------
  |  Branch (774:5): [True: 26, False: 31.3k]
  ------------------
  775|     26|      sprintf(name, "VarI2FromUI1");
  776|     26|      break;
  777|     13|    case 49:
  ------------------
  |  Branch (777:5): [True: 13, False: 31.4k]
  ------------------
  778|     13|      sprintf(name, "VarI2FromI4");
  779|     13|      break;
  780|      0|    case 50:
  ------------------
  |  Branch (780:5): [True: 0, False: 31.4k]
  ------------------
  781|      0|      sprintf(name, "VarI2FromR4");
  782|      0|      break;
  783|     15|    case 51:
  ------------------
  |  Branch (783:5): [True: 15, False: 31.4k]
  ------------------
  784|     15|      sprintf(name, "VarI2FromR8");
  785|     15|      break;
  786|      0|    case 52:
  ------------------
  |  Branch (786:5): [True: 0, False: 31.4k]
  ------------------
  787|      0|      sprintf(name, "VarI2FromCy");
  788|      0|      break;
  789|      0|    case 53:
  ------------------
  |  Branch (789:5): [True: 0, False: 31.4k]
  ------------------
  790|      0|      sprintf(name, "VarI2FromDate");
  791|      0|      break;
  792|      0|    case 54:
  ------------------
  |  Branch (792:5): [True: 0, False: 31.4k]
  ------------------
  793|      0|      sprintf(name, "VarI2FromStr");
  794|      0|      break;
  795|      0|    case 55:
  ------------------
  |  Branch (795:5): [True: 0, False: 31.4k]
  ------------------
  796|      0|      sprintf(name, "VarI2FromDisp");
  797|      0|      break;
  798|      0|    case 56:
  ------------------
  |  Branch (798:5): [True: 0, False: 31.4k]
  ------------------
  799|      0|      sprintf(name, "VarI2FromBool");
  800|      0|      break;
  801|      0|    case 57:
  ------------------
  |  Branch (801:5): [True: 0, False: 31.4k]
  ------------------
  802|      0|      sprintf(name, "SafeArraySetIID");
  803|      0|      break;
  804|     32|    case 58:
  ------------------
  |  Branch (804:5): [True: 32, False: 31.3k]
  ------------------
  805|     32|      sprintf(name, "VarI4FromUI1");
  806|     32|      break;
  807|     13|    case 59:
  ------------------
  |  Branch (807:5): [True: 13, False: 31.4k]
  ------------------
  808|     13|      sprintf(name, "VarI4FromI2");
  809|     13|      break;
  810|      2|    case 60:
  ------------------
  |  Branch (810:5): [True: 2, False: 31.4k]
  ------------------
  811|      2|      sprintf(name, "VarI4FromR4");
  812|      2|      break;
  813|     39|    case 61:
  ------------------
  |  Branch (813:5): [True: 39, False: 31.3k]
  ------------------
  814|     39|      sprintf(name, "VarI4FromR8");
  815|     39|      break;
  816|     15|    case 62:
  ------------------
  |  Branch (816:5): [True: 15, False: 31.4k]
  ------------------
  817|     15|      sprintf(name, "VarI4FromCy");
  818|     15|      break;
  819|      0|    case 63:
  ------------------
  |  Branch (819:5): [True: 0, False: 31.4k]
  ------------------
  820|      0|      sprintf(name, "VarI4FromDate");
  821|      0|      break;
  822|     39|    case 64:
  ------------------
  |  Branch (822:5): [True: 39, False: 31.3k]
  ------------------
  823|     39|      sprintf(name, "VarI4FromStr");
  824|     39|      break;
  825|      0|    case 65:
  ------------------
  |  Branch (825:5): [True: 0, False: 31.4k]
  ------------------
  826|      0|      sprintf(name, "VarI4FromDisp");
  827|      0|      break;
  828|      0|    case 66:
  ------------------
  |  Branch (828:5): [True: 0, False: 31.4k]
  ------------------
  829|      0|      sprintf(name, "VarI4FromBool");
  830|      0|      break;
  831|      2|    case 67:
  ------------------
  |  Branch (831:5): [True: 2, False: 31.4k]
  ------------------
  832|      2|      sprintf(name, "SafeArrayGetIID");
  833|      2|      break;
  834|      0|    case 68:
  ------------------
  |  Branch (834:5): [True: 0, False: 31.4k]
  ------------------
  835|      0|      sprintf(name, "VarR4FromUI1");
  836|      0|      break;
  837|     27|    case 69:
  ------------------
  |  Branch (837:5): [True: 27, False: 31.3k]
  ------------------
  838|     27|      sprintf(name, "VarR4FromI2");
  839|     27|      break;
  840|      0|    case 70:
  ------------------
  |  Branch (840:5): [True: 0, False: 31.4k]
  ------------------
  841|      0|      sprintf(name, "VarR4FromI4");
  842|      0|      break;
  843|     28|    case 71:
  ------------------
  |  Branch (843:5): [True: 28, False: 31.3k]
  ------------------
  844|     28|      sprintf(name, "VarR4FromR8");
  845|     28|      break;
  846|     15|    case 72:
  ------------------
  |  Branch (846:5): [True: 15, False: 31.4k]
  ------------------
  847|     15|      sprintf(name, "VarR4FromCy");
  848|     15|      break;
  849|      0|    case 73:
  ------------------
  |  Branch (849:5): [True: 0, False: 31.4k]
  ------------------
  850|      0|      sprintf(name, "VarR4FromDate");
  851|      0|      break;
  852|     13|    case 74:
  ------------------
  |  Branch (852:5): [True: 13, False: 31.4k]
  ------------------
  853|     13|      sprintf(name, "VarR4FromStr");
  854|     13|      break;
  855|      6|    case 75:
  ------------------
  |  Branch (855:5): [True: 6, False: 31.4k]
  ------------------
  856|      6|      sprintf(name, "VarR4FromDisp");
  857|      6|      break;
  858|      0|    case 76:
  ------------------
  |  Branch (858:5): [True: 0, False: 31.4k]
  ------------------
  859|      0|      sprintf(name, "VarR4FromBool");
  860|      0|      break;
  861|      0|    case 77:
  ------------------
  |  Branch (861:5): [True: 0, False: 31.4k]
  ------------------
  862|      0|      sprintf(name, "SafeArrayGetVartype");
  863|      0|      break;
  864|      2|    case 78:
  ------------------
  |  Branch (864:5): [True: 2, False: 31.4k]
  ------------------
  865|      2|      sprintf(name, "VarR8FromUI1");
  866|      2|      break;
  867|      0|    case 79:
  ------------------
  |  Branch (867:5): [True: 0, False: 31.4k]
  ------------------
  868|      0|      sprintf(name, "VarR8FromI2");
  869|      0|      break;
  870|      0|    case 80:
  ------------------
  |  Branch (870:5): [True: 0, False: 31.4k]
  ------------------
  871|      0|      sprintf(name, "VarR8FromI4");
  872|      0|      break;
  873|      0|    case 81:
  ------------------
  |  Branch (873:5): [True: 0, False: 31.4k]
  ------------------
  874|      0|      sprintf(name, "VarR8FromR4");
  875|      0|      break;
  876|      2|    case 82:
  ------------------
  |  Branch (876:5): [True: 2, False: 31.4k]
  ------------------
  877|      2|      sprintf(name, "VarR8FromCy");
  878|      2|      break;
  879|      0|    case 83:
  ------------------
  |  Branch (879:5): [True: 0, False: 31.4k]
  ------------------
  880|      0|      sprintf(name, "VarR8FromDate");
  881|      0|      break;
  882|      0|    case 84:
  ------------------
  |  Branch (882:5): [True: 0, False: 31.4k]
  ------------------
  883|      0|      sprintf(name, "VarR8FromStr");
  884|      0|      break;
  885|      0|    case 85:
  ------------------
  |  Branch (885:5): [True: 0, False: 31.4k]
  ------------------
  886|      0|      sprintf(name, "VarR8FromDisp");
  887|      0|      break;
  888|      0|    case 86:
  ------------------
  |  Branch (888:5): [True: 0, False: 31.4k]
  ------------------
  889|      0|      sprintf(name, "VarR8FromBool");
  890|      0|      break;
  891|      4|    case 87:
  ------------------
  |  Branch (891:5): [True: 4, False: 31.4k]
  ------------------
  892|      4|      sprintf(name, "VarFormat");
  893|      4|      break;
  894|     74|    case 88:
  ------------------
  |  Branch (894:5): [True: 74, False: 31.3k]
  ------------------
  895|     74|      sprintf(name, "VarDateFromUI1");
  896|     74|      break;
  897|     25|    case 89:
  ------------------
  |  Branch (897:5): [True: 25, False: 31.4k]
  ------------------
  898|     25|      sprintf(name, "VarDateFromI2");
  899|     25|      break;
  900|      0|    case 90:
  ------------------
  |  Branch (900:5): [True: 0, False: 31.4k]
  ------------------
  901|      0|      sprintf(name, "VarDateFromI4");
  902|      0|      break;
  903|      0|    case 91:
  ------------------
  |  Branch (903:5): [True: 0, False: 31.4k]
  ------------------
  904|      0|      sprintf(name, "VarDateFromR4");
  905|      0|      break;
  906|      0|    case 92:
  ------------------
  |  Branch (906:5): [True: 0, False: 31.4k]
  ------------------
  907|      0|      sprintf(name, "VarDateFromR8");
  908|      0|      break;
  909|      0|    case 93:
  ------------------
  |  Branch (909:5): [True: 0, False: 31.4k]
  ------------------
  910|      0|      sprintf(name, "VarDateFromCy");
  911|      0|      break;
  912|      0|    case 94:
  ------------------
  |  Branch (912:5): [True: 0, False: 31.4k]
  ------------------
  913|      0|      sprintf(name, "VarDateFromStr");
  914|      0|      break;
  915|      2|    case 95:
  ------------------
  |  Branch (915:5): [True: 2, False: 31.4k]
  ------------------
  916|      2|      sprintf(name, "VarDateFromDisp");
  917|      2|      break;
  918|     13|    case 96:
  ------------------
  |  Branch (918:5): [True: 13, False: 31.4k]
  ------------------
  919|     13|      sprintf(name, "VarDateFromBool");
  920|     13|      break;
  921|      2|    case 97:
  ------------------
  |  Branch (921:5): [True: 2, False: 31.4k]
  ------------------
  922|      2|      sprintf(name, "VarFormatDateTime");
  923|      2|      break;
  924|    145|    case 98:
  ------------------
  |  Branch (924:5): [True: 145, False: 31.2k]
  ------------------
  925|    145|      sprintf(name, "VarCyFromUI1");
  926|    145|      break;
  927|     40|    case 99:
  ------------------
  |  Branch (927:5): [True: 40, False: 31.3k]
  ------------------
  928|     40|      sprintf(name, "VarCyFromI2");
  929|     40|      break;
  930|      4|    case 100:
  ------------------
  |  Branch (930:5): [True: 4, False: 31.4k]
  ------------------
  931|      4|      sprintf(name, "VarCyFromI4");
  932|      4|      break;
  933|      0|    case 101:
  ------------------
  |  Branch (933:5): [True: 0, False: 31.4k]
  ------------------
  934|      0|      sprintf(name, "VarCyFromR4");
  935|      0|      break;
  936|      8|    case 102:
  ------------------
  |  Branch (936:5): [True: 8, False: 31.4k]
  ------------------
  937|      8|      sprintf(name, "VarCyFromR8");
  938|      8|      break;
  939|      2|    case 103:
  ------------------
  |  Branch (939:5): [True: 2, False: 31.4k]
  ------------------
  940|      2|      sprintf(name, "VarCyFromDate");
  941|      2|      break;
  942|      0|    case 104:
  ------------------
  |  Branch (942:5): [True: 0, False: 31.4k]
  ------------------
  943|      0|      sprintf(name, "VarCyFromStr");
  944|      0|      break;
  945|      0|    case 105:
  ------------------
  |  Branch (945:5): [True: 0, False: 31.4k]
  ------------------
  946|      0|      sprintf(name, "VarCyFromDisp");
  947|      0|      break;
  948|     15|    case 106:
  ------------------
  |  Branch (948:5): [True: 15, False: 31.4k]
  ------------------
  949|     15|      sprintf(name, "VarCyFromBool");
  950|     15|      break;
  951|      0|    case 107:
  ------------------
  |  Branch (951:5): [True: 0, False: 31.4k]
  ------------------
  952|      0|      sprintf(name, "VarFormatNumber");
  953|      0|      break;
  954|     79|    case 108:
  ------------------
  |  Branch (954:5): [True: 79, False: 31.3k]
  ------------------
  955|     79|      sprintf(name, "VarBstrFromUI1");
  956|     79|      break;
  957|      0|    case 109:
  ------------------
  |  Branch (957:5): [True: 0, False: 31.4k]
  ------------------
  958|      0|      sprintf(name, "VarBstrFromI2");
  959|      0|      break;
  960|      0|    case 110:
  ------------------
  |  Branch (960:5): [True: 0, False: 31.4k]
  ------------------
  961|      0|      sprintf(name, "VarBstrFromI4");
  962|      0|      break;
  963|      0|    case 111:
  ------------------
  |  Branch (963:5): [True: 0, False: 31.4k]
  ------------------
  964|      0|      sprintf(name, "VarBstrFromR4");
  965|      0|      break;
  966|     34|    case 112:
  ------------------
  |  Branch (966:5): [True: 34, False: 31.3k]
  ------------------
  967|     34|      sprintf(name, "VarBstrFromR8");
  968|     34|      break;
  969|     13|    case 113:
  ------------------
  |  Branch (969:5): [True: 13, False: 31.4k]
  ------------------
  970|     13|      sprintf(name, "VarBstrFromCy");
  971|     13|      break;
  972|      2|    case 114:
  ------------------
  |  Branch (972:5): [True: 2, False: 31.4k]
  ------------------
  973|      2|      sprintf(name, "VarBstrFromDate");
  974|      2|      break;
  975|      0|    case 115:
  ------------------
  |  Branch (975:5): [True: 0, False: 31.4k]
  ------------------
  976|      0|      sprintf(name, "VarBstrFromDisp");
  977|      0|      break;
  978|      0|    case 116:
  ------------------
  |  Branch (978:5): [True: 0, False: 31.4k]
  ------------------
  979|      0|      sprintf(name, "VarBstrFromBool");
  980|      0|      break;
  981|      0|    case 117:
  ------------------
  |  Branch (981:5): [True: 0, False: 31.4k]
  ------------------
  982|      0|      sprintf(name, "VarFormatPercent");
  983|      0|      break;
  984|      0|    case 118:
  ------------------
  |  Branch (984:5): [True: 0, False: 31.4k]
  ------------------
  985|      0|      sprintf(name, "VarBoolFromUI1");
  986|      0|      break;
  987|      0|    case 119:
  ------------------
  |  Branch (987:5): [True: 0, False: 31.4k]
  ------------------
  988|      0|      sprintf(name, "VarBoolFromI2");
  989|      0|      break;
  990|      2|    case 120:
  ------------------
  |  Branch (990:5): [True: 2, False: 31.4k]
  ------------------
  991|      2|      sprintf(name, "VarBoolFromI4");
  992|      2|      break;
  993|      0|    case 121:
  ------------------
  |  Branch (993:5): [True: 0, False: 31.4k]
  ------------------
  994|      0|      sprintf(name, "VarBoolFromR4");
  995|      0|      break;
  996|      0|    case 122:
  ------------------
  |  Branch (996:5): [True: 0, False: 31.4k]
  ------------------
  997|      0|      sprintf(name, "VarBoolFromR8");
  998|      0|      break;
  999|      0|    case 123:
  ------------------
  |  Branch (999:5): [True: 0, False: 31.4k]
  ------------------
 1000|      0|      sprintf(name, "VarBoolFromDate");
 1001|      0|      break;
 1002|      0|    case 124:
  ------------------
  |  Branch (1002:5): [True: 0, False: 31.4k]
  ------------------
 1003|      0|      sprintf(name, "VarBoolFromCy");
 1004|      0|      break;
 1005|      2|    case 125:
  ------------------
  |  Branch (1005:5): [True: 2, False: 31.4k]
  ------------------
 1006|      2|      sprintf(name, "VarBoolFromStr");
 1007|      2|      break;
 1008|      0|    case 126:
  ------------------
  |  Branch (1008:5): [True: 0, False: 31.4k]
  ------------------
 1009|      0|      sprintf(name, "VarBoolFromDisp");
 1010|      0|      break;
 1011|     13|    case 127:
  ------------------
  |  Branch (1011:5): [True: 13, False: 31.4k]
  ------------------
 1012|     13|      sprintf(name, "VarFormatCurrency");
 1013|     13|      break;
 1014|      2|    case 128:
  ------------------
  |  Branch (1014:5): [True: 2, False: 31.4k]
  ------------------
 1015|      2|      sprintf(name, "VarWeekdayName");
 1016|      2|      break;
 1017|      0|    case 129:
  ------------------
  |  Branch (1017:5): [True: 0, False: 31.4k]
  ------------------
 1018|      0|      sprintf(name, "VarMonthName");
 1019|      0|      break;
 1020|      0|    case 130:
  ------------------
  |  Branch (1020:5): [True: 0, False: 31.4k]
  ------------------
 1021|      0|      sprintf(name, "VarUI1FromI2");
 1022|      0|      break;
 1023|      0|    case 131:
  ------------------
  |  Branch (1023:5): [True: 0, False: 31.4k]
  ------------------
 1024|      0|      sprintf(name, "VarUI1FromI4");
 1025|      0|      break;
 1026|      0|    case 132:
  ------------------
  |  Branch (1026:5): [True: 0, False: 31.4k]
  ------------------
 1027|      0|      sprintf(name, "VarUI1FromR4");
 1028|      0|      break;
 1029|      2|    case 133:
  ------------------
  |  Branch (1029:5): [True: 2, False: 31.4k]
  ------------------
 1030|      2|      sprintf(name, "VarUI1FromR8");
 1031|      2|      break;
 1032|      2|    case 134:
  ------------------
  |  Branch (1032:5): [True: 2, False: 31.4k]
  ------------------
 1033|      2|      sprintf(name, "VarUI1FromCy");
 1034|      2|      break;
 1035|      0|    case 135:
  ------------------
  |  Branch (1035:5): [True: 0, False: 31.4k]
  ------------------
 1036|      0|      sprintf(name, "VarUI1FromDate");
 1037|      0|      break;
 1038|      2|    case 136:
  ------------------
  |  Branch (1038:5): [True: 2, False: 31.4k]
  ------------------
 1039|      2|      sprintf(name, "VarUI1FromStr");
 1040|      2|      break;
 1041|      2|    case 137:
  ------------------
  |  Branch (1041:5): [True: 2, False: 31.4k]
  ------------------
 1042|      2|      sprintf(name, "VarUI1FromDisp");
 1043|      2|      break;
 1044|      0|    case 138:
  ------------------
  |  Branch (1044:5): [True: 0, False: 31.4k]
  ------------------
 1045|      0|      sprintf(name, "VarUI1FromBool");
 1046|      0|      break;
 1047|      2|    case 139:
  ------------------
  |  Branch (1047:5): [True: 2, False: 31.4k]
  ------------------
 1048|      2|      sprintf(name, "VarFormatFromTokens");
 1049|      2|      break;
 1050|      0|    case 140:
  ------------------
  |  Branch (1050:5): [True: 0, False: 31.4k]
  ------------------
 1051|      0|      sprintf(name, "VarTokenizeFormatString");
 1052|      0|      break;
 1053|      0|    case 141:
  ------------------
  |  Branch (1053:5): [True: 0, False: 31.4k]
  ------------------
 1054|      0|      sprintf(name, "VarAdd");
 1055|      0|      break;
 1056|      0|    case 142:
  ------------------
  |  Branch (1056:5): [True: 0, False: 31.4k]
  ------------------
 1057|      0|      sprintf(name, "VarAnd");
 1058|      0|      break;
 1059|      0|    case 143:
  ------------------
  |  Branch (1059:5): [True: 0, False: 31.4k]
  ------------------
 1060|      0|      sprintf(name, "VarDiv");
 1061|      0|      break;
 1062|      0|    case 144:
  ------------------
  |  Branch (1062:5): [True: 0, False: 31.4k]
  ------------------
 1063|      0|      sprintf(name, "DllCanUnloadNow");
 1064|      0|      break;
 1065|      0|    case 145:
  ------------------
  |  Branch (1065:5): [True: 0, False: 31.4k]
  ------------------
 1066|      0|      sprintf(name, "DllGetClassObject");
 1067|      0|      break;
 1068|      0|    case 146:
  ------------------
  |  Branch (1068:5): [True: 0, False: 31.4k]
  ------------------
 1069|      0|      sprintf(name, "DispCallFunc");
 1070|      0|      break;
 1071|      0|    case 147:
  ------------------
  |  Branch (1071:5): [True: 0, False: 31.4k]
  ------------------
 1072|      0|      sprintf(name, "VariantChangeTypeEx");
 1073|      0|      break;
 1074|      0|    case 148:
  ------------------
  |  Branch (1074:5): [True: 0, False: 31.4k]
  ------------------
 1075|      0|      sprintf(name, "SafeArrayPtrOfIndex");
 1076|      0|      break;
 1077|      0|    case 149:
  ------------------
  |  Branch (1077:5): [True: 0, False: 31.4k]
  ------------------
 1078|      0|      sprintf(name, "SysStringByteLen");
 1079|      0|      break;
 1080|      0|    case 150:
  ------------------
  |  Branch (1080:5): [True: 0, False: 31.4k]
  ------------------
 1081|      0|      sprintf(name, "SysAllocStringByteLen");
 1082|      0|      break;
 1083|      2|    case 151:
  ------------------
  |  Branch (1083:5): [True: 2, False: 31.4k]
  ------------------
 1084|      2|      sprintf(name, "DllRegisterServer");
 1085|      2|      break;
 1086|      0|    case 152:
  ------------------
  |  Branch (1086:5): [True: 0, False: 31.4k]
  ------------------
 1087|      0|      sprintf(name, "VarEqv");
 1088|      0|      break;
 1089|      0|    case 153:
  ------------------
  |  Branch (1089:5): [True: 0, False: 31.4k]
  ------------------
 1090|      0|      sprintf(name, "VarIdiv");
 1091|      0|      break;
 1092|      0|    case 154:
  ------------------
  |  Branch (1092:5): [True: 0, False: 31.4k]
  ------------------
 1093|      0|      sprintf(name, "VarImp");
 1094|      0|      break;
 1095|      0|    case 155:
  ------------------
  |  Branch (1095:5): [True: 0, False: 31.4k]
  ------------------
 1096|      0|      sprintf(name, "VarMod");
 1097|      0|      break;
 1098|      0|    case 156:
  ------------------
  |  Branch (1098:5): [True: 0, False: 31.4k]
  ------------------
 1099|      0|      sprintf(name, "VarMul");
 1100|      0|      break;
 1101|      4|    case 157:
  ------------------
  |  Branch (1101:5): [True: 4, False: 31.4k]
  ------------------
 1102|      4|      sprintf(name, "VarOr");
 1103|      4|      break;
 1104|     25|    case 158:
  ------------------
  |  Branch (1104:5): [True: 25, False: 31.4k]
  ------------------
 1105|     25|      sprintf(name, "VarPow");
 1106|     25|      break;
 1107|     13|    case 159:
  ------------------
  |  Branch (1107:5): [True: 13, False: 31.4k]
  ------------------
 1108|     13|      sprintf(name, "VarSub");
 1109|     13|      break;
 1110|      0|    case 160:
  ------------------
  |  Branch (1110:5): [True: 0, False: 31.4k]
  ------------------
 1111|      0|      sprintf(name, "CreateTypeLib");
 1112|      0|      break;
 1113|      0|    case 161:
  ------------------
  |  Branch (1113:5): [True: 0, False: 31.4k]
  ------------------
 1114|      0|      sprintf(name, "LoadTypeLib");
 1115|      0|      break;
 1116|      0|    case 162:
  ------------------
  |  Branch (1116:5): [True: 0, False: 31.4k]
  ------------------
 1117|      0|      sprintf(name, "LoadRegTypeLib");
 1118|      0|      break;
 1119|      0|    case 163:
  ------------------
  |  Branch (1119:5): [True: 0, False: 31.4k]
  ------------------
 1120|      0|      sprintf(name, "RegisterTypeLib");
 1121|      0|      break;
 1122|      6|    case 164:
  ------------------
  |  Branch (1122:5): [True: 6, False: 31.4k]
  ------------------
 1123|      6|      sprintf(name, "QueryPathOfRegTypeLib");
 1124|      6|      break;
 1125|      0|    case 165:
  ------------------
  |  Branch (1125:5): [True: 0, False: 31.4k]
  ------------------
 1126|      0|      sprintf(name, "LHashValOfNameSys");
 1127|      0|      break;
 1128|      0|    case 166:
  ------------------
  |  Branch (1128:5): [True: 0, False: 31.4k]
  ------------------
 1129|      0|      sprintf(name, "LHashValOfNameSysA");
 1130|      0|      break;
 1131|      2|    case 167:
  ------------------
  |  Branch (1131:5): [True: 2, False: 31.4k]
  ------------------
 1132|      2|      sprintf(name, "VarXor");
 1133|      2|      break;
 1134|      0|    case 168:
  ------------------
  |  Branch (1134:5): [True: 0, False: 31.4k]
  ------------------
 1135|      0|      sprintf(name, "VarAbs");
 1136|      0|      break;
 1137|     13|    case 169:
  ------------------
  |  Branch (1137:5): [True: 13, False: 31.4k]
  ------------------
 1138|     13|      sprintf(name, "VarFix");
 1139|     13|      break;
 1140|      4|    case 170:
  ------------------
  |  Branch (1140:5): [True: 4, False: 31.4k]
  ------------------
 1141|      4|      sprintf(name, "OaBuildVersion");
 1142|      4|      break;
 1143|      6|    case 171:
  ------------------
  |  Branch (1143:5): [True: 6, False: 31.4k]
  ------------------
 1144|      6|      sprintf(name, "ClearCustData");
 1145|      6|      break;
 1146|      0|    case 172:
  ------------------
  |  Branch (1146:5): [True: 0, False: 31.4k]
  ------------------
 1147|      0|      sprintf(name, "VarInt");
 1148|      0|      break;
 1149|     13|    case 173:
  ------------------
  |  Branch (1149:5): [True: 13, False: 31.4k]
  ------------------
 1150|     13|      sprintf(name, "VarNeg");
 1151|     13|      break;
 1152|      0|    case 174:
  ------------------
  |  Branch (1152:5): [True: 0, False: 31.4k]
  ------------------
 1153|      0|      sprintf(name, "VarNot");
 1154|      0|      break;
 1155|      0|    case 175:
  ------------------
  |  Branch (1155:5): [True: 0, False: 31.4k]
  ------------------
 1156|      0|      sprintf(name, "VarRound");
 1157|      0|      break;
 1158|      0|    case 176:
  ------------------
  |  Branch (1158:5): [True: 0, False: 31.4k]
  ------------------
 1159|      0|      sprintf(name, "VarCmp");
 1160|      0|      break;
 1161|      0|    case 177:
  ------------------
  |  Branch (1161:5): [True: 0, False: 31.4k]
  ------------------
 1162|      0|      sprintf(name, "VarDecAdd");
 1163|      0|      break;
 1164|      0|    case 178:
  ------------------
  |  Branch (1164:5): [True: 0, False: 31.4k]
  ------------------
 1165|      0|      sprintf(name, "VarDecDiv");
 1166|      0|      break;
 1167|     13|    case 179:
  ------------------
  |  Branch (1167:5): [True: 13, False: 31.4k]
  ------------------
 1168|     13|      sprintf(name, "VarDecMul");
 1169|     13|      break;
 1170|     28|    case 180:
  ------------------
  |  Branch (1170:5): [True: 28, False: 31.3k]
  ------------------
 1171|     28|      sprintf(name, "CreateTypeLib2");
 1172|     28|      break;
 1173|      0|    case 181:
  ------------------
  |  Branch (1173:5): [True: 0, False: 31.4k]
  ------------------
 1174|      0|      sprintf(name, "VarDecSub");
 1175|      0|      break;
 1176|      0|    case 182:
  ------------------
  |  Branch (1176:5): [True: 0, False: 31.4k]
  ------------------
 1177|      0|      sprintf(name, "VarDecAbs");
 1178|      0|      break;
 1179|      0|    case 183:
  ------------------
  |  Branch (1179:5): [True: 0, False: 31.4k]
  ------------------
 1180|      0|      sprintf(name, "LoadTypeLibEx");
 1181|      0|      break;
 1182|      0|    case 184:
  ------------------
  |  Branch (1182:5): [True: 0, False: 31.4k]
  ------------------
 1183|      0|      sprintf(name, "SystemTimeToVariantTime");
 1184|      0|      break;
 1185|      0|    case 185:
  ------------------
  |  Branch (1185:5): [True: 0, False: 31.4k]
  ------------------
 1186|      0|      sprintf(name, "VariantTimeToSystemTime");
 1187|      0|      break;
 1188|      0|    case 186:
  ------------------
  |  Branch (1188:5): [True: 0, False: 31.4k]
  ------------------
 1189|      0|      sprintf(name, "UnRegisterTypeLib");
 1190|      0|      break;
 1191|      2|    case 187:
  ------------------
  |  Branch (1191:5): [True: 2, False: 31.4k]
  ------------------
 1192|      2|      sprintf(name, "VarDecFix");
 1193|      2|      break;
 1194|      0|    case 188:
  ------------------
  |  Branch (1194:5): [True: 0, False: 31.4k]
  ------------------
 1195|      0|      sprintf(name, "VarDecInt");
 1196|      0|      break;
 1197|     31|    case 189:
  ------------------
  |  Branch (1197:5): [True: 31, False: 31.3k]
  ------------------
 1198|     31|      sprintf(name, "VarDecNeg");
 1199|     31|      break;
 1200|     50|    case 190:
  ------------------
  |  Branch (1200:5): [True: 50, False: 31.3k]
  ------------------
 1201|     50|      sprintf(name, "VarDecFromUI1");
 1202|     50|      break;
 1203|      2|    case 191:
  ------------------
  |  Branch (1203:5): [True: 2, False: 31.4k]
  ------------------
 1204|      2|      sprintf(name, "VarDecFromI2");
 1205|      2|      break;
 1206|      2|    case 192:
  ------------------
  |  Branch (1206:5): [True: 2, False: 31.4k]
  ------------------
 1207|      2|      sprintf(name, "VarDecFromI4");
 1208|      2|      break;
 1209|      0|    case 193:
  ------------------
  |  Branch (1209:5): [True: 0, False: 31.4k]
  ------------------
 1210|      0|      sprintf(name, "VarDecFromR4");
 1211|      0|      break;
 1212|      0|    case 194:
  ------------------
  |  Branch (1212:5): [True: 0, False: 31.4k]
  ------------------
 1213|      0|      sprintf(name, "VarDecFromR8");
 1214|      0|      break;
 1215|     34|    case 195:
  ------------------
  |  Branch (1215:5): [True: 34, False: 31.3k]
  ------------------
 1216|     34|      sprintf(name, "VarDecFromDate");
 1217|     34|      break;
 1218|      0|    case 196:
  ------------------
  |  Branch (1218:5): [True: 0, False: 31.4k]
  ------------------
 1219|      0|      sprintf(name, "VarDecFromCy");
 1220|      0|      break;
 1221|      2|    case 197:
  ------------------
  |  Branch (1221:5): [True: 2, False: 31.4k]
  ------------------
 1222|      2|      sprintf(name, "VarDecFromStr");
 1223|      2|      break;
 1224|      2|    case 198:
  ------------------
  |  Branch (1224:5): [True: 2, False: 31.4k]
  ------------------
 1225|      2|      sprintf(name, "VarDecFromDisp");
 1226|      2|      break;
 1227|      0|    case 199:
  ------------------
  |  Branch (1227:5): [True: 0, False: 31.4k]
  ------------------
 1228|      0|      sprintf(name, "VarDecFromBool");
 1229|      0|      break;
 1230|      0|    case 200:
  ------------------
  |  Branch (1230:5): [True: 0, False: 31.4k]
  ------------------
 1231|      0|      sprintf(name, "GetErrorInfo");
 1232|      0|      break;
 1233|      2|    case 201:
  ------------------
  |  Branch (1233:5): [True: 2, False: 31.4k]
  ------------------
 1234|      2|      sprintf(name, "SetErrorInfo");
 1235|      2|      break;
 1236|      0|    case 202:
  ------------------
  |  Branch (1236:5): [True: 0, False: 31.4k]
  ------------------
 1237|      0|      sprintf(name, "CreateErrorInfo");
 1238|      0|      break;
 1239|      0|    case 203:
  ------------------
  |  Branch (1239:5): [True: 0, False: 31.4k]
  ------------------
 1240|      0|      sprintf(name, "VarDecRound");
 1241|      0|      break;
 1242|      0|    case 204:
  ------------------
  |  Branch (1242:5): [True: 0, False: 31.4k]
  ------------------
 1243|      0|      sprintf(name, "VarDecCmp");
 1244|      0|      break;
 1245|      2|    case 205:
  ------------------
  |  Branch (1245:5): [True: 2, False: 31.4k]
  ------------------
 1246|      2|      sprintf(name, "VarI2FromI1");
 1247|      2|      break;
 1248|      0|    case 206:
  ------------------
  |  Branch (1248:5): [True: 0, False: 31.4k]
  ------------------
 1249|      0|      sprintf(name, "VarI2FromUI2");
 1250|      0|      break;
 1251|      0|    case 207:
  ------------------
  |  Branch (1251:5): [True: 0, False: 31.4k]
  ------------------
 1252|      0|      sprintf(name, "VarI2FromUI4");
 1253|      0|      break;
 1254|     13|    case 208:
  ------------------
  |  Branch (1254:5): [True: 13, False: 31.4k]
  ------------------
 1255|     13|      sprintf(name, "VarI2FromDec");
 1256|     13|      break;
 1257|      0|    case 209:
  ------------------
  |  Branch (1257:5): [True: 0, False: 31.4k]
  ------------------
 1258|      0|      sprintf(name, "VarI4FromI1");
 1259|      0|      break;
 1260|      0|    case 210:
  ------------------
  |  Branch (1260:5): [True: 0, False: 31.4k]
  ------------------
 1261|      0|      sprintf(name, "VarI4FromUI2");
 1262|      0|      break;
 1263|      0|    case 211:
  ------------------
  |  Branch (1263:5): [True: 0, False: 31.4k]
  ------------------
 1264|      0|      sprintf(name, "VarI4FromUI4");
 1265|      0|      break;
 1266|      0|    case 212:
  ------------------
  |  Branch (1266:5): [True: 0, False: 31.4k]
  ------------------
 1267|      0|      sprintf(name, "VarI4FromDec");
 1268|      0|      break;
 1269|      0|    case 213:
  ------------------
  |  Branch (1269:5): [True: 0, False: 31.4k]
  ------------------
 1270|      0|      sprintf(name, "VarR4FromI1");
 1271|      0|      break;
 1272|     41|    case 214:
  ------------------
  |  Branch (1272:5): [True: 41, False: 31.3k]
  ------------------
 1273|     41|      sprintf(name, "VarR4FromUI2");
 1274|     41|      break;
 1275|      0|    case 215:
  ------------------
  |  Branch (1275:5): [True: 0, False: 31.4k]
  ------------------
 1276|      0|      sprintf(name, "VarR4FromUI4");
 1277|      0|      break;
 1278|      0|    case 216:
  ------------------
  |  Branch (1278:5): [True: 0, False: 31.4k]
  ------------------
 1279|      0|      sprintf(name, "VarR4FromDec");
 1280|      0|      break;
 1281|      0|    case 217:
  ------------------
  |  Branch (1281:5): [True: 0, False: 31.4k]
  ------------------
 1282|      0|      sprintf(name, "VarR8FromI1");
 1283|      0|      break;
 1284|      0|    case 218:
  ------------------
  |  Branch (1284:5): [True: 0, False: 31.4k]
  ------------------
 1285|      0|      sprintf(name, "VarR8FromUI2");
 1286|      0|      break;
 1287|      0|    case 219:
  ------------------
  |  Branch (1287:5): [True: 0, False: 31.4k]
  ------------------
 1288|      0|      sprintf(name, "VarR8FromUI4");
 1289|      0|      break;
 1290|      0|    case 220:
  ------------------
  |  Branch (1290:5): [True: 0, False: 31.4k]
  ------------------
 1291|      0|      sprintf(name, "VarR8FromDec");
 1292|      0|      break;
 1293|      0|    case 221:
  ------------------
  |  Branch (1293:5): [True: 0, False: 31.4k]
  ------------------
 1294|      0|      sprintf(name, "VarDateFromI1");
 1295|      0|      break;
 1296|      0|    case 222:
  ------------------
  |  Branch (1296:5): [True: 0, False: 31.4k]
  ------------------
 1297|      0|      sprintf(name, "VarDateFromUI2");
 1298|      0|      break;
 1299|      2|    case 223:
  ------------------
  |  Branch (1299:5): [True: 2, False: 31.4k]
  ------------------
 1300|      2|      sprintf(name, "VarDateFromUI4");
 1301|      2|      break;
 1302|      0|    case 224:
  ------------------
  |  Branch (1302:5): [True: 0, False: 31.4k]
  ------------------
 1303|      0|      sprintf(name, "VarDateFromDec");
 1304|      0|      break;
 1305|      0|    case 225:
  ------------------
  |  Branch (1305:5): [True: 0, False: 31.4k]
  ------------------
 1306|      0|      sprintf(name, "VarCyFromI1");
 1307|      0|      break;
 1308|     13|    case 226:
  ------------------
  |  Branch (1308:5): [True: 13, False: 31.4k]
  ------------------
 1309|     13|      sprintf(name, "VarCyFromUI2");
 1310|     13|      break;
 1311|     13|    case 227:
  ------------------
  |  Branch (1311:5): [True: 13, False: 31.4k]
  ------------------
 1312|     13|      sprintf(name, "VarCyFromUI4");
 1313|     13|      break;
 1314|      4|    case 228:
  ------------------
  |  Branch (1314:5): [True: 4, False: 31.4k]
  ------------------
 1315|      4|      sprintf(name, "VarCyFromDec");
 1316|      4|      break;
 1317|      0|    case 229:
  ------------------
  |  Branch (1317:5): [True: 0, False: 31.4k]
  ------------------
 1318|      0|      sprintf(name, "VarBstrFromI1");
 1319|      0|      break;
 1320|      0|    case 230:
  ------------------
  |  Branch (1320:5): [True: 0, False: 31.4k]
  ------------------
 1321|      0|      sprintf(name, "VarBstrFromUI2");
 1322|      0|      break;
 1323|      0|    case 231:
  ------------------
  |  Branch (1323:5): [True: 0, False: 31.4k]
  ------------------
 1324|      0|      sprintf(name, "VarBstrFromUI4");
 1325|      0|      break;
 1326|      0|    case 232:
  ------------------
  |  Branch (1326:5): [True: 0, False: 31.4k]
  ------------------
 1327|      0|      sprintf(name, "VarBstrFromDec");
 1328|      0|      break;
 1329|     13|    case 233:
  ------------------
  |  Branch (1329:5): [True: 13, False: 31.4k]
  ------------------
 1330|     13|      sprintf(name, "VarBoolFromI1");
 1331|     13|      break;
 1332|      0|    case 234:
  ------------------
  |  Branch (1332:5): [True: 0, False: 31.4k]
  ------------------
 1333|      0|      sprintf(name, "VarBoolFromUI2");
 1334|      0|      break;
 1335|      0|    case 235:
  ------------------
  |  Branch (1335:5): [True: 0, False: 31.4k]
  ------------------
 1336|      0|      sprintf(name, "VarBoolFromUI4");
 1337|      0|      break;
 1338|      0|    case 236:
  ------------------
  |  Branch (1338:5): [True: 0, False: 31.4k]
  ------------------
 1339|      0|      sprintf(name, "VarBoolFromDec");
 1340|      0|      break;
 1341|      2|    case 237:
  ------------------
  |  Branch (1341:5): [True: 2, False: 31.4k]
  ------------------
 1342|      2|      sprintf(name, "VarUI1FromI1");
 1343|      2|      break;
 1344|      2|    case 238:
  ------------------
  |  Branch (1344:5): [True: 2, False: 31.4k]
  ------------------
 1345|      2|      sprintf(name, "VarUI1FromUI2");
 1346|      2|      break;
 1347|      0|    case 239:
  ------------------
  |  Branch (1347:5): [True: 0, False: 31.4k]
  ------------------
 1348|      0|      sprintf(name, "VarUI1FromUI4");
 1349|      0|      break;
 1350|     15|    case 240:
  ------------------
  |  Branch (1350:5): [True: 15, False: 31.4k]
  ------------------
 1351|     15|      sprintf(name, "VarUI1FromDec");
 1352|     15|      break;
 1353|      4|    case 241:
  ------------------
  |  Branch (1353:5): [True: 4, False: 31.4k]
  ------------------
 1354|      4|      sprintf(name, "VarDecFromI1");
 1355|      4|      break;
 1356|      0|    case 242:
  ------------------
  |  Branch (1356:5): [True: 0, False: 31.4k]
  ------------------
 1357|      0|      sprintf(name, "VarDecFromUI2");
 1358|      0|      break;
 1359|      0|    case 243:
  ------------------
  |  Branch (1359:5): [True: 0, False: 31.4k]
  ------------------
 1360|      0|      sprintf(name, "VarDecFromUI4");
 1361|      0|      break;
 1362|      0|    case 244:
  ------------------
  |  Branch (1362:5): [True: 0, False: 31.4k]
  ------------------
 1363|      0|      sprintf(name, "VarI1FromUI1");
 1364|      0|      break;
 1365|      4|    case 245:
  ------------------
  |  Branch (1365:5): [True: 4, False: 31.4k]
  ------------------
 1366|      4|      sprintf(name, "VarI1FromI2");
 1367|      4|      break;
 1368|      2|    case 246:
  ------------------
  |  Branch (1368:5): [True: 2, False: 31.4k]
  ------------------
 1369|      2|      sprintf(name, "VarI1FromI4");
 1370|      2|      break;
 1371|      0|    case 247:
  ------------------
  |  Branch (1371:5): [True: 0, False: 31.4k]
  ------------------
 1372|      0|      sprintf(name, "VarI1FromR4");
 1373|      0|      break;
 1374|      4|    case 248:
  ------------------
  |  Branch (1374:5): [True: 4, False: 31.4k]
  ------------------
 1375|      4|      sprintf(name, "VarI1FromR8");
 1376|      4|      break;
 1377|      0|    case 249:
  ------------------
  |  Branch (1377:5): [True: 0, False: 31.4k]
  ------------------
 1378|      0|      sprintf(name, "VarI1FromDate");
 1379|      0|      break;
 1380|      2|    case 250:
  ------------------
  |  Branch (1380:5): [True: 2, False: 31.4k]
  ------------------
 1381|      2|      sprintf(name, "VarI1FromCy");
 1382|      2|      break;
 1383|     25|    case 251:
  ------------------
  |  Branch (1383:5): [True: 25, False: 31.4k]
  ------------------
 1384|     25|      sprintf(name, "VarI1FromStr");
 1385|     25|      break;
 1386|      8|    case 252:
  ------------------
  |  Branch (1386:5): [True: 8, False: 31.4k]
  ------------------
 1387|      8|      sprintf(name, "VarI1FromDisp");
 1388|      8|      break;
 1389|      0|    case 253:
  ------------------
  |  Branch (1389:5): [True: 0, False: 31.4k]
  ------------------
 1390|      0|      sprintf(name, "VarI1FromBool");
 1391|      0|      break;
 1392|      2|    case 254:
  ------------------
  |  Branch (1392:5): [True: 2, False: 31.4k]
  ------------------
 1393|      2|      sprintf(name, "VarI1FromUI2");
 1394|      2|      break;
 1395|     15|    case 255:
  ------------------
  |  Branch (1395:5): [True: 15, False: 31.4k]
  ------------------
 1396|     15|      sprintf(name, "VarI1FromUI4");
 1397|     15|      break;
 1398|     26|    case 256:
  ------------------
  |  Branch (1398:5): [True: 26, False: 31.3k]
  ------------------
 1399|     26|      sprintf(name, "VarI1FromDec");
 1400|     26|      break;
 1401|      0|    case 257:
  ------------------
  |  Branch (1401:5): [True: 0, False: 31.4k]
  ------------------
 1402|      0|      sprintf(name, "VarUI2FromUI1");
 1403|      0|      break;
 1404|     18|    case 258:
  ------------------
  |  Branch (1404:5): [True: 18, False: 31.4k]
  ------------------
 1405|     18|      sprintf(name, "VarUI2FromI2");
 1406|     18|      break;
 1407|      0|    case 259:
  ------------------
  |  Branch (1407:5): [True: 0, False: 31.4k]
  ------------------
 1408|      0|      sprintf(name, "VarUI2FromI4");
 1409|      0|      break;
 1410|     50|    case 260:
  ------------------
  |  Branch (1410:5): [True: 50, False: 31.3k]
  ------------------
 1411|     50|      sprintf(name, "VarUI2FromR4");
 1412|     50|      break;
 1413|      0|    case 261:
  ------------------
  |  Branch (1413:5): [True: 0, False: 31.4k]
  ------------------
 1414|      0|      sprintf(name, "VarUI2FromR8");
 1415|      0|      break;
 1416|      0|    case 262:
  ------------------
  |  Branch (1416:5): [True: 0, False: 31.4k]
  ------------------
 1417|      0|      sprintf(name, "VarUI2FromDate");
 1418|      0|      break;
 1419|      0|    case 263:
  ------------------
  |  Branch (1419:5): [True: 0, False: 31.4k]
  ------------------
 1420|      0|      sprintf(name, "VarUI2FromCy");
 1421|      0|      break;
 1422|      0|    case 264:
  ------------------
  |  Branch (1422:5): [True: 0, False: 31.4k]
  ------------------
 1423|      0|      sprintf(name, "VarUI2FromStr");
 1424|      0|      break;
 1425|     21|    case 265:
  ------------------
  |  Branch (1425:5): [True: 21, False: 31.4k]
  ------------------
 1426|     21|      sprintf(name, "VarUI2FromDisp");
 1427|     21|      break;
 1428|     26|    case 266:
  ------------------
  |  Branch (1428:5): [True: 26, False: 31.3k]
  ------------------
 1429|     26|      sprintf(name, "VarUI2FromBool");
 1430|     26|      break;
 1431|     13|    case 267:
  ------------------
  |  Branch (1431:5): [True: 13, False: 31.4k]
  ------------------
 1432|     13|      sprintf(name, "VarUI2FromI1");
 1433|     13|      break;
 1434|      0|    case 268:
  ------------------
  |  Branch (1434:5): [True: 0, False: 31.4k]
  ------------------
 1435|      0|      sprintf(name, "VarUI2FromUI4");
 1436|      0|      break;
 1437|     15|    case 269:
  ------------------
  |  Branch (1437:5): [True: 15, False: 31.4k]
  ------------------
 1438|     15|      sprintf(name, "VarUI2FromDec");
 1439|     15|      break;
 1440|      0|    case 270:
  ------------------
  |  Branch (1440:5): [True: 0, False: 31.4k]
  ------------------
 1441|      0|      sprintf(name, "VarUI4FromUI1");
 1442|      0|      break;
 1443|      0|    case 271:
  ------------------
  |  Branch (1443:5): [True: 0, False: 31.4k]
  ------------------
 1444|      0|      sprintf(name, "VarUI4FromI2");
 1445|      0|      break;
 1446|      0|    case 272:
  ------------------
  |  Branch (1446:5): [True: 0, False: 31.4k]
  ------------------
 1447|      0|      sprintf(name, "VarUI4FromI4");
 1448|      0|      break;
 1449|      0|    case 273:
  ------------------
  |  Branch (1449:5): [True: 0, False: 31.4k]
  ------------------
 1450|      0|      sprintf(name, "VarUI4FromR4");
 1451|      0|      break;
 1452|      0|    case 274:
  ------------------
  |  Branch (1452:5): [True: 0, False: 31.4k]
  ------------------
 1453|      0|      sprintf(name, "VarUI4FromR8");
 1454|      0|      break;
 1455|      0|    case 275:
  ------------------
  |  Branch (1455:5): [True: 0, False: 31.4k]
  ------------------
 1456|      0|      sprintf(name, "VarUI4FromDate");
 1457|      0|      break;
 1458|      0|    case 276:
  ------------------
  |  Branch (1458:5): [True: 0, False: 31.4k]
  ------------------
 1459|      0|      sprintf(name, "VarUI4FromCy");
 1460|      0|      break;
 1461|      0|    case 277:
  ------------------
  |  Branch (1461:5): [True: 0, False: 31.4k]
  ------------------
 1462|      0|      sprintf(name, "VarUI4FromStr");
 1463|      0|      break;
 1464|      0|    case 278:
  ------------------
  |  Branch (1464:5): [True: 0, False: 31.4k]
  ------------------
 1465|      0|      sprintf(name, "VarUI4FromDisp");
 1466|      0|      break;
 1467|      0|    case 279:
  ------------------
  |  Branch (1467:5): [True: 0, False: 31.4k]
  ------------------
 1468|      0|      sprintf(name, "VarUI4FromBool");
 1469|      0|      break;
 1470|      0|    case 280:
  ------------------
  |  Branch (1470:5): [True: 0, False: 31.4k]
  ------------------
 1471|      0|      sprintf(name, "VarUI4FromI1");
 1472|      0|      break;
 1473|      0|    case 281:
  ------------------
  |  Branch (1473:5): [True: 0, False: 31.4k]
  ------------------
 1474|      0|      sprintf(name, "VarUI4FromUI2");
 1475|      0|      break;
 1476|      0|    case 282:
  ------------------
  |  Branch (1476:5): [True: 0, False: 31.4k]
  ------------------
 1477|      0|      sprintf(name, "VarUI4FromDec");
 1478|      0|      break;
 1479|      2|    case 283:
  ------------------
  |  Branch (1479:5): [True: 2, False: 31.4k]
  ------------------
 1480|      2|      sprintf(name, "BSTR_UserSize");
 1481|      2|      break;
 1482|      0|    case 284:
  ------------------
  |  Branch (1482:5): [True: 0, False: 31.4k]
  ------------------
 1483|      0|      sprintf(name, "BSTR_UserMarshal");
 1484|      0|      break;
 1485|      6|    case 285:
  ------------------
  |  Branch (1485:5): [True: 6, False: 31.4k]
  ------------------
 1486|      6|      sprintf(name, "BSTR_UserUnmarshal");
 1487|      6|      break;
 1488|      0|    case 286:
  ------------------
  |  Branch (1488:5): [True: 0, False: 31.4k]
  ------------------
 1489|      0|      sprintf(name, "BSTR_UserFree");
 1490|      0|      break;
 1491|     31|    case 287:
  ------------------
  |  Branch (1491:5): [True: 31, False: 31.3k]
  ------------------
 1492|     31|      sprintf(name, "VARIANT_UserSize");
 1493|     31|      break;
 1494|      0|    case 288:
  ------------------
  |  Branch (1494:5): [True: 0, False: 31.4k]
  ------------------
 1495|      0|      sprintf(name, "VARIANT_UserMarshal");
 1496|      0|      break;
 1497|      0|    case 289:
  ------------------
  |  Branch (1497:5): [True: 0, False: 31.4k]
  ------------------
 1498|      0|      sprintf(name, "VARIANT_UserUnmarshal");
 1499|      0|      break;
 1500|      0|    case 290:
  ------------------
  |  Branch (1500:5): [True: 0, False: 31.4k]
  ------------------
 1501|      0|      sprintf(name, "VARIANT_UserFree");
 1502|      0|      break;
 1503|      0|    case 291:
  ------------------
  |  Branch (1503:5): [True: 0, False: 31.4k]
  ------------------
 1504|      0|      sprintf(name, "LPSAFEARRAY_UserSize");
 1505|      0|      break;
 1506|      0|    case 292:
  ------------------
  |  Branch (1506:5): [True: 0, False: 31.4k]
  ------------------
 1507|      0|      sprintf(name, "LPSAFEARRAY_UserMarshal");
 1508|      0|      break;
 1509|      0|    case 293:
  ------------------
  |  Branch (1509:5): [True: 0, False: 31.4k]
  ------------------
 1510|      0|      sprintf(name, "LPSAFEARRAY_UserUnmarshal");
 1511|      0|      break;
 1512|      0|    case 294:
  ------------------
  |  Branch (1512:5): [True: 0, False: 31.4k]
  ------------------
 1513|      0|      sprintf(name, "LPSAFEARRAY_UserFree");
 1514|      0|      break;
 1515|      0|    case 295:
  ------------------
  |  Branch (1515:5): [True: 0, False: 31.4k]
  ------------------
 1516|      0|      sprintf(name, "LPSAFEARRAY_Size");
 1517|      0|      break;
 1518|      2|    case 296:
  ------------------
  |  Branch (1518:5): [True: 2, False: 31.4k]
  ------------------
 1519|      2|      sprintf(name, "LPSAFEARRAY_Marshal");
 1520|      2|      break;
 1521|      4|    case 297:
  ------------------
  |  Branch (1521:5): [True: 4, False: 31.4k]
  ------------------
 1522|      4|      sprintf(name, "LPSAFEARRAY_Unmarshal");
 1523|      4|      break;
 1524|      2|    case 298:
  ------------------
  |  Branch (1524:5): [True: 2, False: 31.4k]
  ------------------
 1525|      2|      sprintf(name, "VarDecCmpR8");
 1526|      2|      break;
 1527|      0|    case 299:
  ------------------
  |  Branch (1527:5): [True: 0, False: 31.4k]
  ------------------
 1528|      0|      sprintf(name, "VarCyAdd");
 1529|      0|      break;
 1530|      0|    case 300:
  ------------------
  |  Branch (1530:5): [True: 0, False: 31.4k]
  ------------------
 1531|      0|      sprintf(name, "DllUnregisterServer");
 1532|      0|      break;
 1533|      0|    case 301:
  ------------------
  |  Branch (1533:5): [True: 0, False: 31.4k]
  ------------------
 1534|      0|      sprintf(name, "OACreateTypeLib2");
 1535|      0|      break;
 1536|      0|    case 303:
  ------------------
  |  Branch (1536:5): [True: 0, False: 31.4k]
  ------------------
 1537|      0|      sprintf(name, "VarCyMul");
 1538|      0|      break;
 1539|     65|    case 304:
  ------------------
  |  Branch (1539:5): [True: 65, False: 31.3k]
  ------------------
 1540|     65|      sprintf(name, "VarCyMulI4");
 1541|     65|      break;
 1542|      0|    case 305:
  ------------------
  |  Branch (1542:5): [True: 0, False: 31.4k]
  ------------------
 1543|      0|      sprintf(name, "VarCySub");
 1544|      0|      break;
 1545|     27|    case 306:
  ------------------
  |  Branch (1545:5): [True: 27, False: 31.3k]
  ------------------
 1546|     27|      sprintf(name, "VarCyAbs");
 1547|     27|      break;
 1548|     13|    case 307:
  ------------------
  |  Branch (1548:5): [True: 13, False: 31.4k]
  ------------------
 1549|     13|      sprintf(name, "VarCyFix");
 1550|     13|      break;
 1551|      0|    case 308:
  ------------------
  |  Branch (1551:5): [True: 0, False: 31.4k]
  ------------------
 1552|      0|      sprintf(name, "VarCyInt");
 1553|      0|      break;
 1554|      0|    case 309:
  ------------------
  |  Branch (1554:5): [True: 0, False: 31.4k]
  ------------------
 1555|      0|      sprintf(name, "VarCyNeg");
 1556|      0|      break;
 1557|      0|    case 310:
  ------------------
  |  Branch (1557:5): [True: 0, False: 31.4k]
  ------------------
 1558|      0|      sprintf(name, "VarCyRound");
 1559|      0|      break;
 1560|      0|    case 311:
  ------------------
  |  Branch (1560:5): [True: 0, False: 31.4k]
  ------------------
 1561|      0|      sprintf(name, "VarCyCmp");
 1562|      0|      break;
 1563|      0|    case 312:
  ------------------
  |  Branch (1563:5): [True: 0, False: 31.4k]
  ------------------
 1564|      0|      sprintf(name, "VarCyCmpR8");
 1565|      0|      break;
 1566|      0|    case 313:
  ------------------
  |  Branch (1566:5): [True: 0, False: 31.4k]
  ------------------
 1567|      0|      sprintf(name, "VarBstrCat");
 1568|      0|      break;
 1569|      0|    case 314:
  ------------------
  |  Branch (1569:5): [True: 0, False: 31.4k]
  ------------------
 1570|      0|      sprintf(name, "VarBstrCmp");
 1571|      0|      break;
 1572|      6|    case 315:
  ------------------
  |  Branch (1572:5): [True: 6, False: 31.4k]
  ------------------
 1573|      6|      sprintf(name, "VarR8Pow");
 1574|      6|      break;
 1575|     13|    case 316:
  ------------------
  |  Branch (1575:5): [True: 13, False: 31.4k]
  ------------------
 1576|     13|      sprintf(name, "VarR4CmpR8");
 1577|     13|      break;
 1578|      0|    case 317:
  ------------------
  |  Branch (1578:5): [True: 0, False: 31.4k]
  ------------------
 1579|      0|      sprintf(name, "VarR8Round");
 1580|      0|      break;
 1581|      0|    case 318:
  ------------------
  |  Branch (1581:5): [True: 0, False: 31.4k]
  ------------------
 1582|      0|      sprintf(name, "VarCat");
 1583|      0|      break;
 1584|      4|    case 319:
  ------------------
  |  Branch (1584:5): [True: 4, False: 31.4k]
  ------------------
 1585|      4|      sprintf(name, "VarDateFromUdateEx");
 1586|      4|      break;
 1587|      0|    case 322:
  ------------------
  |  Branch (1587:5): [True: 0, False: 31.4k]
  ------------------
 1588|      0|      sprintf(name, "GetRecordInfoFromGuids");
 1589|      0|      break;
 1590|      0|    case 323:
  ------------------
  |  Branch (1590:5): [True: 0, False: 31.4k]
  ------------------
 1591|      0|      sprintf(name, "GetRecordInfoFromTypeInfo");
 1592|      0|      break;
 1593|     13|    case 325:
  ------------------
  |  Branch (1593:5): [True: 13, False: 31.4k]
  ------------------
 1594|     13|      sprintf(name, "SetVarConversionLocaleSetting");
 1595|     13|      break;
 1596|      2|    case 326:
  ------------------
  |  Branch (1596:5): [True: 2, False: 31.4k]
  ------------------
 1597|      2|      sprintf(name, "GetVarConversionLocaleSetting");
 1598|      2|      break;
 1599|      2|    case 327:
  ------------------
  |  Branch (1599:5): [True: 2, False: 31.4k]
  ------------------
 1600|      2|      sprintf(name, "SetOaNoCache");
 1601|      2|      break;
 1602|      0|    case 329:
  ------------------
  |  Branch (1602:5): [True: 0, False: 31.4k]
  ------------------
 1603|      0|      sprintf(name, "VarCyMulI8");
 1604|      0|      break;
 1605|      0|    case 330:
  ------------------
  |  Branch (1605:5): [True: 0, False: 31.4k]
  ------------------
 1606|      0|      sprintf(name, "VarDateFromUdate");
 1607|      0|      break;
 1608|      0|    case 331:
  ------------------
  |  Branch (1608:5): [True: 0, False: 31.4k]
  ------------------
 1609|      0|      sprintf(name, "VarUdateFromDate");
 1610|      0|      break;
 1611|      2|    case 332:
  ------------------
  |  Branch (1611:5): [True: 2, False: 31.4k]
  ------------------
 1612|      2|      sprintf(name, "GetAltMonthNames");
 1613|      2|      break;
 1614|     13|    case 333:
  ------------------
  |  Branch (1614:5): [True: 13, False: 31.4k]
  ------------------
 1615|     13|      sprintf(name, "VarI8FromUI1");
 1616|     13|      break;
 1617|     13|    case 334:
  ------------------
  |  Branch (1617:5): [True: 13, False: 31.4k]
  ------------------
 1618|     13|      sprintf(name, "VarI8FromI2");
 1619|     13|      break;
 1620|      0|    case 335:
  ------------------
  |  Branch (1620:5): [True: 0, False: 31.4k]
  ------------------
 1621|      0|      sprintf(name, "VarI8FromR4");
 1622|      0|      break;
 1623|      0|    case 336:
  ------------------
  |  Branch (1623:5): [True: 0, False: 31.4k]
  ------------------
 1624|      0|      sprintf(name, "VarI8FromR8");
 1625|      0|      break;
 1626|      2|    case 337:
  ------------------
  |  Branch (1626:5): [True: 2, False: 31.4k]
  ------------------
 1627|      2|      sprintf(name, "VarI8FromCy");
 1628|      2|      break;
 1629|      0|    case 338:
  ------------------
  |  Branch (1629:5): [True: 0, False: 31.4k]
  ------------------
 1630|      0|      sprintf(name, "VarI8FromDate");
 1631|      0|      break;
 1632|      0|    case 339:
  ------------------
  |  Branch (1632:5): [True: 0, False: 31.4k]
  ------------------
 1633|      0|      sprintf(name, "VarI8FromStr");
 1634|      0|      break;
 1635|      0|    case 340:
  ------------------
  |  Branch (1635:5): [True: 0, False: 31.4k]
  ------------------
 1636|      0|      sprintf(name, "VarI8FromDisp");
 1637|      0|      break;
 1638|      0|    case 341:
  ------------------
  |  Branch (1638:5): [True: 0, False: 31.4k]
  ------------------
 1639|      0|      sprintf(name, "VarI8FromBool");
 1640|      0|      break;
 1641|      0|    case 342:
  ------------------
  |  Branch (1641:5): [True: 0, False: 31.4k]
  ------------------
 1642|      0|      sprintf(name, "VarI8FromI1");
 1643|      0|      break;
 1644|      0|    case 343:
  ------------------
  |  Branch (1644:5): [True: 0, False: 31.4k]
  ------------------
 1645|      0|      sprintf(name, "VarI8FromUI2");
 1646|      0|      break;
 1647|      0|    case 344:
  ------------------
  |  Branch (1647:5): [True: 0, False: 31.4k]
  ------------------
 1648|      0|      sprintf(name, "VarI8FromUI4");
 1649|      0|      break;
 1650|      0|    case 345:
  ------------------
  |  Branch (1650:5): [True: 0, False: 31.4k]
  ------------------
 1651|      0|      sprintf(name, "VarI8FromDec");
 1652|      0|      break;
 1653|      2|    case 346:
  ------------------
  |  Branch (1653:5): [True: 2, False: 31.4k]
  ------------------
 1654|      2|      sprintf(name, "VarI2FromI8");
 1655|      2|      break;
 1656|      0|    case 347:
  ------------------
  |  Branch (1656:5): [True: 0, False: 31.4k]
  ------------------
 1657|      0|      sprintf(name, "VarI2FromUI8");
 1658|      0|      break;
 1659|      2|    case 348:
  ------------------
  |  Branch (1659:5): [True: 2, False: 31.4k]
  ------------------
 1660|      2|      sprintf(name, "VarI4FromI8");
 1661|      2|      break;
 1662|      2|    case 349:
  ------------------
  |  Branch (1662:5): [True: 2, False: 31.4k]
  ------------------
 1663|      2|      sprintf(name, "VarI4FromUI8");
 1664|      2|      break;
 1665|      2|    case 360:
  ------------------
  |  Branch (1665:5): [True: 2, False: 31.4k]
  ------------------
 1666|      2|      sprintf(name, "VarR4FromI8");
 1667|      2|      break;
 1668|     13|    case 361:
  ------------------
  |  Branch (1668:5): [True: 13, False: 31.4k]
  ------------------
 1669|     13|      sprintf(name, "VarR4FromUI8");
 1670|     13|      break;
 1671|      0|    case 362:
  ------------------
  |  Branch (1671:5): [True: 0, False: 31.4k]
  ------------------
 1672|      0|      sprintf(name, "VarR8FromI8");
 1673|      0|      break;
 1674|      0|    case 363:
  ------------------
  |  Branch (1674:5): [True: 0, False: 31.4k]
  ------------------
 1675|      0|      sprintf(name, "VarR8FromUI8");
 1676|      0|      break;
 1677|      0|    case 364:
  ------------------
  |  Branch (1677:5): [True: 0, False: 31.4k]
  ------------------
 1678|      0|      sprintf(name, "VarDateFromI8");
 1679|      0|      break;
 1680|      0|    case 365:
  ------------------
  |  Branch (1680:5): [True: 0, False: 31.4k]
  ------------------
 1681|      0|      sprintf(name, "VarDateFromUI8");
 1682|      0|      break;
 1683|      0|    case 366:
  ------------------
  |  Branch (1683:5): [True: 0, False: 31.4k]
  ------------------
 1684|      0|      sprintf(name, "VarCyFromI8");
 1685|      0|      break;
 1686|     50|    case 367:
  ------------------
  |  Branch (1686:5): [True: 50, False: 31.3k]
  ------------------
 1687|     50|      sprintf(name, "VarCyFromUI8");
 1688|     50|      break;
 1689|      0|    case 368:
  ------------------
  |  Branch (1689:5): [True: 0, False: 31.4k]
  ------------------
 1690|      0|      sprintf(name, "VarBstrFromI8");
 1691|      0|      break;
 1692|     50|    case 369:
  ------------------
  |  Branch (1692:5): [True: 50, False: 31.3k]
  ------------------
 1693|     50|      sprintf(name, "VarBstrFromUI8");
 1694|     50|      break;
 1695|      0|    case 370:
  ------------------
  |  Branch (1695:5): [True: 0, False: 31.4k]
  ------------------
 1696|      0|      sprintf(name, "VarBoolFromI8");
 1697|      0|      break;
 1698|      0|    case 371:
  ------------------
  |  Branch (1698:5): [True: 0, False: 31.4k]
  ------------------
 1699|      0|      sprintf(name, "VarBoolFromUI8");
 1700|      0|      break;
 1701|      0|    case 372:
  ------------------
  |  Branch (1701:5): [True: 0, False: 31.4k]
  ------------------
 1702|      0|      sprintf(name, "VarUI1FromI8");
 1703|      0|      break;
 1704|      0|    case 373:
  ------------------
  |  Branch (1704:5): [True: 0, False: 31.4k]
  ------------------
 1705|      0|      sprintf(name, "VarUI1FromUI8");
 1706|      0|      break;
 1707|      0|    case 374:
  ------------------
  |  Branch (1707:5): [True: 0, False: 31.4k]
  ------------------
 1708|      0|      sprintf(name, "VarDecFromI8");
 1709|      0|      break;
 1710|      0|    case 375:
  ------------------
  |  Branch (1710:5): [True: 0, False: 31.4k]
  ------------------
 1711|      0|      sprintf(name, "VarDecFromUI8");
 1712|      0|      break;
 1713|      0|    case 376:
  ------------------
  |  Branch (1713:5): [True: 0, False: 31.4k]
  ------------------
 1714|      0|      sprintf(name, "VarI1FromI8");
 1715|      0|      break;
 1716|      0|    case 377:
  ------------------
  |  Branch (1716:5): [True: 0, False: 31.4k]
  ------------------
 1717|      0|      sprintf(name, "VarI1FromUI8");
 1718|      0|      break;
 1719|     60|    case 378:
  ------------------
  |  Branch (1719:5): [True: 60, False: 31.3k]
  ------------------
 1720|     60|      sprintf(name, "VarUI2FromI8");
 1721|     60|      break;
 1722|      0|    case 379:
  ------------------
  |  Branch (1722:5): [True: 0, False: 31.4k]
  ------------------
 1723|      0|      sprintf(name, "VarUI2FromUI8");
 1724|      0|      break;
 1725|      0|    case 401:
  ------------------
  |  Branch (1725:5): [True: 0, False: 31.4k]
  ------------------
 1726|      0|      sprintf(name, "OleLoadPictureEx");
 1727|      0|      break;
 1728|     80|    case 402:
  ------------------
  |  Branch (1728:5): [True: 80, False: 31.3k]
  ------------------
 1729|     80|      sprintf(name, "OleLoadPictureFileEx");
 1730|     80|      break;
 1731|      0|    case 411:
  ------------------
  |  Branch (1731:5): [True: 0, False: 31.4k]
  ------------------
 1732|      0|      sprintf(name, "SafeArrayCreateVector");
 1733|      0|      break;
 1734|      0|    case 412:
  ------------------
  |  Branch (1734:5): [True: 0, False: 31.4k]
  ------------------
 1735|      0|      sprintf(name, "SafeArrayCopyData");
 1736|      0|      break;
 1737|      0|    case 413:
  ------------------
  |  Branch (1737:5): [True: 0, False: 31.4k]
  ------------------
 1738|      0|      sprintf(name, "VectorFromBstr");
 1739|      0|      break;
 1740|      2|    case 414:
  ------------------
  |  Branch (1740:5): [True: 2, False: 31.4k]
  ------------------
 1741|      2|      sprintf(name, "BstrFromVector");
 1742|      2|      break;
 1743|      2|    case 415:
  ------------------
  |  Branch (1743:5): [True: 2, False: 31.4k]
  ------------------
 1744|      2|      sprintf(name, "OleIconToCursor");
 1745|      2|      break;
 1746|      0|    case 416:
  ------------------
  |  Branch (1746:5): [True: 0, False: 31.4k]
  ------------------
 1747|      0|      sprintf(name, "OleCreatePropertyFrameIndirect");
 1748|      0|      break;
 1749|      0|    case 417:
  ------------------
  |  Branch (1749:5): [True: 0, False: 31.4k]
  ------------------
 1750|      0|      sprintf(name, "OleCreatePropertyFrame");
 1751|      0|      break;
 1752|      0|    case 418:
  ------------------
  |  Branch (1752:5): [True: 0, False: 31.4k]
  ------------------
 1753|      0|      sprintf(name, "OleLoadPicture");
 1754|      0|      break;
 1755|      0|    case 419:
  ------------------
  |  Branch (1755:5): [True: 0, False: 31.4k]
  ------------------
 1756|      0|      sprintf(name, "OleCreatePictureIndirect");
 1757|      0|      break;
 1758|     13|    case 420:
  ------------------
  |  Branch (1758:5): [True: 13, False: 31.4k]
  ------------------
 1759|     13|      sprintf(name, "OleCreateFontIndirect");
 1760|     13|      break;
 1761|      0|    case 421:
  ------------------
  |  Branch (1761:5): [True: 0, False: 31.4k]
  ------------------
 1762|      0|      sprintf(name, "OleTranslateColor");
 1763|      0|      break;
 1764|      2|    case 422:
  ------------------
  |  Branch (1764:5): [True: 2, False: 31.4k]
  ------------------
 1765|      2|      sprintf(name, "OleLoadPictureFile");
 1766|      2|      break;
 1767|      2|    case 423:
  ------------------
  |  Branch (1767:5): [True: 2, False: 31.4k]
  ------------------
 1768|      2|      sprintf(name, "OleSavePictureFile");
 1769|      2|      break;
 1770|      0|    case 424:
  ------------------
  |  Branch (1770:5): [True: 0, False: 31.4k]
  ------------------
 1771|      0|      sprintf(name, "OleLoadPicturePath");
 1772|      0|      break;
 1773|      0|    case 425:
  ------------------
  |  Branch (1773:5): [True: 0, False: 31.4k]
  ------------------
 1774|      0|      sprintf(name, "VarUI4FromI8");
 1775|      0|      break;
 1776|      0|    case 426:
  ------------------
  |  Branch (1776:5): [True: 0, False: 31.4k]
  ------------------
 1777|      0|      sprintf(name, "VarUI4FromUI8");
 1778|      0|      break;
 1779|      2|    case 427:
  ------------------
  |  Branch (1779:5): [True: 2, False: 31.4k]
  ------------------
 1780|      2|      sprintf(name, "VarI8FromUI8");
 1781|      2|      break;
 1782|      0|    case 428:
  ------------------
  |  Branch (1782:5): [True: 0, False: 31.4k]
  ------------------
 1783|      0|      sprintf(name, "VarUI8FromI8");
 1784|      0|      break;
 1785|      0|    case 429:
  ------------------
  |  Branch (1785:5): [True: 0, False: 31.4k]
  ------------------
 1786|      0|      sprintf(name, "VarUI8FromUI1");
 1787|      0|      break;
 1788|      0|    case 430:
  ------------------
  |  Branch (1788:5): [True: 0, False: 31.4k]
  ------------------
 1789|      0|      sprintf(name, "VarUI8FromI2");
 1790|      0|      break;
 1791|      0|    case 431:
  ------------------
  |  Branch (1791:5): [True: 0, False: 31.4k]
  ------------------
 1792|      0|      sprintf(name, "VarUI8FromR4");
 1793|      0|      break;
 1794|      0|    case 432:
  ------------------
  |  Branch (1794:5): [True: 0, False: 31.4k]
  ------------------
 1795|      0|      sprintf(name, "VarUI8FromR8");
 1796|      0|      break;
 1797|      0|    case 433:
  ------------------
  |  Branch (1797:5): [True: 0, False: 31.4k]
  ------------------
 1798|      0|      sprintf(name, "VarUI8FromCy");
 1799|      0|      break;
 1800|      0|    case 434:
  ------------------
  |  Branch (1800:5): [True: 0, False: 31.4k]
  ------------------
 1801|      0|      sprintf(name, "VarUI8FromDate");
 1802|      0|      break;
 1803|      2|    case 435:
  ------------------
  |  Branch (1803:5): [True: 2, False: 31.4k]
  ------------------
 1804|      2|      sprintf(name, "VarUI8FromStr");
 1805|      2|      break;
 1806|      0|    case 436:
  ------------------
  |  Branch (1806:5): [True: 0, False: 31.4k]
  ------------------
 1807|      0|      sprintf(name, "VarUI8FromDisp");
 1808|      0|      break;
 1809|     39|    case 437:
  ------------------
  |  Branch (1809:5): [True: 39, False: 31.3k]
  ------------------
 1810|     39|      sprintf(name, "VarUI8FromBool");
 1811|     39|      break;
 1812|      0|    case 438:
  ------------------
  |  Branch (1812:5): [True: 0, False: 31.4k]
  ------------------
 1813|      0|      sprintf(name, "VarUI8FromI1");
 1814|      0|      break;
 1815|      0|    case 439:
  ------------------
  |  Branch (1815:5): [True: 0, False: 31.4k]
  ------------------
 1816|      0|      sprintf(name, "VarUI8FromUI2");
 1817|      0|      break;
 1818|      0|    case 440:
  ------------------
  |  Branch (1818:5): [True: 0, False: 31.4k]
  ------------------
 1819|      0|      sprintf(name, "VarUI8FromUI4");
 1820|      0|      break;
 1821|      0|    case 441:
  ------------------
  |  Branch (1821:5): [True: 0, False: 31.4k]
  ------------------
 1822|      0|      sprintf(name, "VarUI8FromDec");
 1823|      0|      break;
 1824|      0|    case 442:
  ------------------
  |  Branch (1824:5): [True: 0, False: 31.4k]
  ------------------
 1825|      0|      sprintf(name, "RegisterTypeLibForUser");
 1826|      0|      break;
 1827|      0|    case 443:
  ------------------
  |  Branch (1827:5): [True: 0, False: 31.4k]
  ------------------
 1828|      0|      sprintf(name, "UnRegisterTypeLibForUser");
 1829|      0|      break;
 1830|  29.1k|    default:
  ------------------
  |  Branch (1830:5): [True: 29.1k, False: 2.31k]
  ------------------
 1831|  29.1k|      break;
 1832|  31.4k|    }
 1833|  31.4k|  }
 1834|       |
 1835|   879k|  if (name[0] == '\0')
  ------------------
  |  Branch (1835:7): [True: 847k, False: 32.0k]
  ------------------
 1836|   847k|    sprintf(name, "ord%u", ord);
 1837|       |
 1838|   879k|  return yr_strdup(name);
 1839|   879k|}

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

yr_object_create:
   56|  10.6M|{
   57|  10.6M|  YR_OBJECT* obj;
   58|  10.6M|  size_t object_size = 0;
   59|       |
   60|  10.6M|  assert(parent != NULL || object != NULL);
   61|  10.6M|  assert(identifier != NULL);
   62|       |
   63|  10.6M|  switch (type)
   64|  10.6M|  {
   65|  2.50M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  2.50M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (65:3): [True: 2.50M, False: 8.14M]
  ------------------
   66|  2.50M|    object_size = sizeof(YR_OBJECT_STRUCTURE);
   67|  2.50M|    break;
   68|  1.77k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  1.77k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (68:3): [True: 1.77k, False: 10.6M]
  ------------------
   69|  1.77k|    object_size = sizeof(YR_OBJECT_ARRAY);
   70|  1.77k|    break;
   71|    112|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|    112|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (71:3): [True: 112, False: 10.6M]
  ------------------
   72|    112|    object_size = sizeof(YR_OBJECT_DICTIONARY);
   73|    112|    break;
   74|  5.34M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  5.34M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (74:3): [True: 5.34M, False: 5.30M]
  ------------------
   75|  5.34M|    object_size = sizeof(YR_OBJECT);
   76|  5.34M|    break;
   77|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (77:3): [True: 0, False: 10.6M]
  ------------------
   78|      0|    object_size = sizeof(YR_OBJECT);
   79|      0|    break;
   80|  2.80M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  2.80M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (80:3): [True: 2.80M, False: 7.85M]
  ------------------
   81|  2.80M|    object_size = sizeof(YR_OBJECT);
   82|  2.80M|    break;
   83|  1.68k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  1.68k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (83:3): [True: 1.68k, False: 10.6M]
  ------------------
   84|  1.68k|    object_size = sizeof(YR_OBJECT_FUNCTION);
   85|  1.68k|    break;
   86|      0|  default:
  ------------------
  |  Branch (86:3): [True: 0, False: 10.6M]
  ------------------
   87|      0|    assert(false);
   88|  10.6M|  }
   89|       |
   90|  10.6M|  obj = (YR_OBJECT*) yr_malloc(object_size);
   91|       |
   92|  10.6M|  if (obj == NULL)
  ------------------
  |  Branch (92:7): [True: 0, False: 10.6M]
  ------------------
   93|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
   94|       |
   95|  10.6M|  obj->type = type;
   96|  10.6M|  obj->identifier = yr_strdup(identifier);
   97|  10.6M|  obj->parent = parent;
   98|  10.6M|  obj->data = NULL;
   99|       |
  100|  10.6M|  switch (type)
  ------------------
  |  Branch (100:11): [True: 0, False: 10.6M]
  ------------------
  101|  10.6M|  {
  102|  5.34M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  5.34M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (102:3): [True: 5.34M, False: 5.30M]
  ------------------
  103|  5.34M|    obj->value.i = YR_UNDEFINED;
  ------------------
  |  |   38|  5.34M|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  104|  5.34M|    break;
  105|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (105:3): [True: 0, False: 10.6M]
  ------------------
  106|      0|    obj->value.d = NAN;
  107|      0|    break;
  108|  2.80M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  2.80M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (108:3): [True: 2.80M, False: 7.85M]
  ------------------
  109|  2.80M|    obj->value.ss = NULL;
  110|  2.80M|    break;
  111|  2.50M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  2.50M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (111:3): [True: 2.50M, False: 8.14M]
  ------------------
  112|  2.50M|    object_as_structure(obj)->members = NULL;
  ------------------
  |  |  902|  2.50M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  113|  2.50M|    break;
  114|  1.77k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  1.77k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (114:3): [True: 1.77k, False: 10.6M]
  ------------------
  115|  1.77k|    object_as_array(obj)->items = NULL;
  ------------------
  |  |  903|  1.77k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  116|  1.77k|    object_as_array(obj)->prototype_item = NULL;
  ------------------
  |  |  903|  1.77k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  117|  1.77k|    break;
  118|    112|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|    112|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (118:3): [True: 112, False: 10.6M]
  ------------------
  119|    112|    object_as_dictionary(obj)->items = NULL;
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  120|    112|    object_as_dictionary(obj)->prototype_item = NULL;
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  121|    112|    break;
  122|  1.68k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  1.68k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (122:3): [True: 1.68k, False: 10.6M]
  ------------------
  123|  1.68k|    object_as_function(obj)->return_obj = NULL;
  ------------------
  |  |  905|  1.68k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  124|  18.4k|    for (int i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|  18.4k|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (124:21): [True: 16.8k, False: 1.68k]
  ------------------
  125|  16.8k|    {
  126|  16.8k|      object_as_function(obj)->prototypes[i].arguments_fmt = NULL;
  ------------------
  |  |  905|  16.8k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  127|  16.8k|      object_as_function(obj)->prototypes[i].code = NULL;
  ------------------
  |  |  905|  16.8k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  128|  16.8k|    }
  129|  1.68k|    break;
  130|  10.6M|  }
  131|       |
  132|  10.6M|  if (obj->identifier == NULL)
  ------------------
  |  Branch (132:7): [True: 0, False: 10.6M]
  ------------------
  133|      0|  {
  134|      0|    yr_free(obj);
  135|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  136|      0|  }
  137|       |
  138|  10.6M|  if (parent != NULL)
  ------------------
  |  Branch (138:7): [True: 36.6k, False: 10.6M]
  ------------------
  139|  36.6k|  {
  140|  36.6k|    assert(
  141|  36.6k|        parent->type == OBJECT_TYPE_STRUCTURE ||
  142|  36.6k|        parent->type == OBJECT_TYPE_ARRAY ||
  143|  36.6k|        parent->type == OBJECT_TYPE_DICTIONARY ||
  144|  36.6k|        parent->type == OBJECT_TYPE_FUNCTION);
  145|       |
  146|       |    // Objects with a parent take the canary from it.
  147|  36.6k|    obj->canary = parent->canary;
  148|       |
  149|  36.6k|    switch (parent->type)
  ------------------
  |  Branch (149:13): [True: 0, False: 36.6k]
  ------------------
  150|  36.6k|    {
  151|  33.8k|    case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  33.8k|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (151:5): [True: 33.8k, False: 2.80k]
  ------------------
  152|  33.8k|      FAIL_ON_ERROR_WITH_CLEANUP(yr_object_structure_set_member(parent, obj), {
  ------------------
  |  |  140|  33.8k|  {                                            \
  |  |  141|  33.8k|    int __error = (x);                         \
  |  |  142|  33.8k|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  33.8k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 33.8k]
  |  |  ------------------
  |  |  143|  33.8k|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  33.8k|  }
  ------------------
  153|  33.8k|        yr_free((void*) obj->identifier);
  154|  33.8k|        yr_free(obj);
  155|  33.8k|      });
  156|  33.8k|      break;
  157|       |
  158|  1.00k|    case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  1.00k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (158:5): [True: 1.00k, False: 35.6k]
  ------------------
  159|  1.00k|      object_as_array(parent)->prototype_item = obj;
  ------------------
  |  |  903|  1.00k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  160|  1.00k|      break;
  161|       |
  162|    112|    case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|    112|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (162:5): [True: 112, False: 36.5k]
  ------------------
  163|    112|      object_as_dictionary(parent)->prototype_item = obj;
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  164|    112|      break;
  165|       |
  166|  1.68k|    case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  1.68k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (166:5): [True: 1.68k, False: 34.9k]
  ------------------
  167|  1.68k|      object_as_function(parent)->return_obj = obj;
  ------------------
  |  |  905|  1.68k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  168|  1.68k|      break;
  169|  36.6k|    }
  170|  36.6k|  }
  171|       |
  172|  10.6M|  if (object != NULL)
  ------------------
  |  Branch (172:7): [True: 10.6M, False: 30.3k]
  ------------------
  173|  10.6M|    *object = obj;
  174|       |
  175|  10.6M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  10.6M|#define ERROR_SUCCESS 0
  ------------------
  176|  10.6M|}
yr_object_set_canary:
  179|    110|{
  180|    110|  object->canary = canary;
  181|    110|}
yr_object_function_create:
  190|  3.47k|{
  191|  3.47k|  YR_OBJECT* return_obj;
  192|  3.47k|  YR_OBJECT* o = NULL;
  193|  3.47k|  YR_OBJECT_FUNCTION* f = NULL;
  194|       |
  195|  3.47k|  int8_t return_type;
  196|       |
  197|       |  // The parent of a function must be a structure.
  198|  3.47k|  assert(parent != NULL && parent->type == OBJECT_TYPE_STRUCTURE);
  199|       |
  200|  3.47k|  switch (*return_fmt)
  201|  3.47k|  {
  202|  3.47k|  case 'i':
  ------------------
  |  Branch (202:3): [True: 3.47k, False: 0]
  ------------------
  203|  3.47k|    return_type = OBJECT_TYPE_INTEGER;
  ------------------
  |  |   58|  3.47k|#define OBJECT_TYPE_INTEGER    1
  ------------------
  204|  3.47k|    break;
  205|      0|  case 's':
  ------------------
  |  Branch (205:3): [True: 0, False: 3.47k]
  ------------------
  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: 3.47k]
  ------------------
  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: 3.47k]
  ------------------
  212|      0|    return ERROR_INVALID_FORMAT;
  ------------------
  |  |   83|      0|#define ERROR_INVALID_FORMAT                 38
  ------------------
  213|  3.47k|  }
  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|  3.47k|  f = object_as_function(yr_object_lookup_field(parent, identifier));
  ------------------
  |  |  905|  3.47k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  218|       |
  219|       |  // Overloaded functions must have the same return type.
  220|  3.47k|  if (f != NULL && return_type != f->return_obj->type)
  ------------------
  |  Branch (220:7): [True: 1.79k, False: 1.68k]
  |  Branch (220:20): [True: 0, False: 1.79k]
  ------------------
  221|      0|    return ERROR_WRONG_RETURN_TYPE;
  ------------------
  |  |   86|      0|#define ERROR_WRONG_RETURN_TYPE              41
  ------------------
  222|       |
  223|  3.47k|  if (f == NULL)  // Function doesn't exist yet
  ------------------
  |  Branch (223:7): [True: 1.68k, False: 1.79k]
  ------------------
  224|  1.68k|  {
  225|  1.68k|    FAIL_ON_ERROR(
  ------------------
  |  |  132|  1.68k|  {                               \
  |  |  133|  1.68k|    int __error = (x);            \
  |  |  134|  1.68k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  1.68k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 1.68k]
  |  |  ------------------
  |  |  135|  1.68k|      return __error;             \
  |  |  136|  1.68k|  }
  ------------------
  226|  1.68k|        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|  1.68k|    FAIL_ON_ERROR(yr_object_create(return_type, "result", o, &return_obj));
  ------------------
  |  |  132|  1.68k|  {                               \
  |  |  133|  1.68k|    int __error = (x);            \
  |  |  134|  1.68k|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  1.68k|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 1.68k]
  |  |  ------------------
  |  |  135|  1.68k|      return __error;             \
  |  |  136|  1.68k|  }
  ------------------
  232|       |
  233|  1.68k|    f = object_as_function(o);
  ------------------
  |  |  905|  1.68k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  234|  1.68k|  }
  235|       |
  236|  7.84k|  for (int i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|  7.84k|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (236:19): [True: 7.84k, False: 0]
  ------------------
  237|  7.84k|  {
  238|  7.84k|    if (f->prototypes[i].arguments_fmt == NULL)
  ------------------
  |  Branch (238:9): [True: 3.47k, False: 4.36k]
  ------------------
  239|  3.47k|    {
  240|  3.47k|      f->prototypes[i].arguments_fmt = arguments_fmt;
  241|  3.47k|      f->prototypes[i].code = code;
  242|       |
  243|  3.47k|      break;
  244|  3.47k|    }
  245|  7.84k|  }
  246|       |
  247|  3.47k|  if (function != NULL)
  ------------------
  |  Branch (247:7): [True: 3.47k, False: 0]
  ------------------
  248|  3.47k|    *function = (YR_OBJECT*) f;
  249|       |
  250|  3.47k|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  3.47k|#define ERROR_SUCCESS 0
  ------------------
  251|  3.47k|}
yr_object_destroy:
  321|  10.6M|{
  322|  10.6M|  YR_STRUCTURE_MEMBER* member;
  323|  10.6M|  YR_STRUCTURE_MEMBER* next_member;
  324|  10.6M|  YR_ARRAY_ITEMS* array_items;
  325|  10.6M|  YR_DICTIONARY_ITEMS* dict_items;
  326|       |
  327|  10.6M|  if (object == NULL)
  ------------------
  |  Branch (327:7): [True: 0, False: 10.6M]
  ------------------
  328|      0|    return;
  329|       |
  330|  10.6M|  switch (object->type)
  ------------------
  |  Branch (330:11): [True: 5.34M, False: 5.30M]
  ------------------
  331|  10.6M|  {
  332|  2.50M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  2.50M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (332:3): [True: 2.50M, False: 8.14M]
  ------------------
  333|  2.50M|    member = object_as_structure(object)->members;
  ------------------
  |  |  902|  2.50M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  334|       |
  335|  10.6M|    while (member != NULL)
  ------------------
  |  Branch (335:12): [True: 8.14M, False: 2.50M]
  ------------------
  336|  8.14M|    {
  337|  8.14M|      next_member = member->next;
  338|  8.14M|      yr_object_destroy(member->object);
  339|  8.14M|      yr_free(member);
  340|  8.14M|      member = next_member;
  341|  8.14M|    }
  342|  2.50M|    break;
  343|       |
  344|  2.80M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  2.80M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (344:3): [True: 2.80M, False: 7.85M]
  ------------------
  345|  2.80M|    if (object->value.ss != NULL)
  ------------------
  |  Branch (345:9): [True: 2.21M, False: 584k]
  ------------------
  346|  2.21M|      yr_free(object->value.ss);
  347|  2.80M|    break;
  348|       |
  349|  1.77k|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  1.77k|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (349:3): [True: 1.77k, False: 10.6M]
  ------------------
  350|  1.77k|    if (object_as_array(object)->prototype_item != NULL)
  ------------------
  |  |  903|  1.77k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  |  Branch (350:9): [True: 1.77k, False: 0]
  ------------------
  351|  1.77k|      yr_object_destroy(object_as_array(object)->prototype_item);
  ------------------
  |  |  903|  1.77k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  352|       |
  353|  1.77k|    array_items = object_as_array(object)->items;
  ------------------
  |  |  903|  1.77k|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  354|       |
  355|  1.77k|    if (array_items != NULL)
  ------------------
  |  Branch (355:9): [True: 1.10k, False: 674]
  ------------------
  356|  1.10k|    {
  357|  2.50M|      for (int i = 0; i < array_items->length; i++)
  ------------------
  |  Branch (357:23): [True: 2.50M, False: 1.10k]
  ------------------
  358|  2.50M|        if (array_items->objects[i] != NULL)
  ------------------
  |  Branch (358:13): [True: 2.50M, False: 0]
  ------------------
  359|  2.50M|          yr_object_destroy(array_items->objects[i]);
  360|  1.10k|    }
  361|       |
  362|  1.77k|    yr_free(array_items);
  363|  1.77k|    break;
  364|       |
  365|    112|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|    112|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (365:3): [True: 112, False: 10.6M]
  ------------------
  366|    112|    if (object_as_dictionary(object)->prototype_item != NULL)
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  |  Branch (366:9): [True: 112, False: 0]
  ------------------
  367|    112|      yr_object_destroy(object_as_dictionary(object)->prototype_item);
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  368|       |
  369|    112|    dict_items = object_as_dictionary(object)->items;
  ------------------
  |  |  904|    112|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  370|       |
  371|    112|    if (dict_items != NULL)
  ------------------
  |  Branch (371:9): [True: 19, False: 93]
  ------------------
  372|     19|    {
  373|    245|      for (int i = 0; i < dict_items->used; i++)
  ------------------
  |  Branch (373:23): [True: 226, False: 19]
  ------------------
  374|    226|      {
  375|    226|        if (dict_items->objects[i].key != NULL)
  ------------------
  |  Branch (375:13): [True: 226, False: 0]
  ------------------
  376|    226|          yr_free(dict_items->objects[i].key);
  377|       |
  378|    226|        if (dict_items->objects[i].obj != NULL)
  ------------------
  |  Branch (378:13): [True: 226, False: 0]
  ------------------
  379|    226|          yr_object_destroy(dict_items->objects[i].obj);
  380|    226|      }
  381|     19|    }
  382|       |
  383|    112|    yr_free(dict_items);
  384|    112|    break;
  385|       |
  386|  1.68k|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|  1.68k|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (386:3): [True: 1.68k, False: 10.6M]
  ------------------
  387|  1.68k|    yr_object_destroy(object_as_function(object)->return_obj);
  ------------------
  |  |  905|  1.68k|#define object_as_function(obj)   ((YR_OBJECT_FUNCTION*) (obj))
  ------------------
  388|  1.68k|    break;
  389|  10.6M|  }
  390|       |
  391|  10.6M|  yr_free((void*) object->identifier);
  392|  10.6M|  yr_free(object);
  393|  10.6M|}
yr_object_lookup_field:
  396|  29.8M|{
  397|  29.8M|  YR_STRUCTURE_MEMBER* member;
  398|       |
  399|  29.8M|  assert(object != NULL);
  400|  29.8M|  assert(object->type == OBJECT_TYPE_STRUCTURE);
  401|       |
  402|  29.8M|  member = object_as_structure(object)->members;
  ------------------
  |  |  902|  29.8M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  403|       |
  404|   116M|  while (member != NULL)
  ------------------
  |  Branch (404:10): [True: 108M, False: 8.14M]
  ------------------
  405|   108M|  {
  406|   108M|    if (strcmp(member->object->identifier, field_name) == 0)
  ------------------
  |  Branch (406:9): [True: 21.6M, False: 86.9M]
  ------------------
  407|  21.6M|      return member->object;
  408|       |
  409|  86.9M|    member = member->next;
  410|  86.9M|  }
  411|       |
  412|  8.14M|  return NULL;
  413|  29.8M|}
yr_object_copy:
  537|  10.6M|{
  538|  10.6M|  YR_OBJECT* copy;
  539|  10.6M|  YR_OBJECT* o;
  540|       |
  541|  10.6M|  YR_STRUCTURE_MEMBER* structure_member;
  542|       |
  543|  10.6M|  *object_copy = NULL;
  544|       |
  545|  10.6M|  FAIL_ON_ERROR(
  ------------------
  |  |  132|  10.6M|  {                               \
  |  |  133|  10.6M|    int __error = (x);            \
  |  |  134|  10.6M|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|  10.6M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 10.6M]
  |  |  ------------------
  |  |  135|  10.6M|      return __error;             \
  |  |  136|  10.6M|  }
  ------------------
  546|  10.6M|      yr_object_create(object->type, object->identifier, NULL, &copy));
  547|       |
  548|  10.6M|  copy->canary = object->canary;
  549|       |
  550|  10.6M|  switch (object->type)
  551|  10.6M|  {
  552|  5.31M|  case OBJECT_TYPE_INTEGER:
  ------------------
  |  |   58|  5.31M|#define OBJECT_TYPE_INTEGER    1
  ------------------
  |  Branch (552:3): [True: 5.31M, False: 5.30M]
  ------------------
  553|  5.31M|    copy->value.i = object->value.i;
  554|  5.31M|    break;
  555|       |
  556|      0|  case OBJECT_TYPE_FLOAT:
  ------------------
  |  |   64|      0|#define OBJECT_TYPE_FLOAT      7
  ------------------
  |  Branch (556:3): [True: 0, False: 10.6M]
  ------------------
  557|      0|    copy->value.d = object->value.d;
  558|      0|    break;
  559|       |
  560|  2.79M|  case OBJECT_TYPE_STRING:
  ------------------
  |  |   59|  2.79M|#define OBJECT_TYPE_STRING     2
  ------------------
  |  Branch (560:3): [True: 2.79M, False: 7.81M]
  ------------------
  561|       |
  562|  2.79M|    if (object->value.ss != NULL)
  ------------------
  |  Branch (562:9): [True: 0, False: 2.79M]
  ------------------
  563|      0|      copy->value.ss = ss_dup(object->value.ss);
  564|  2.79M|    else
  565|  2.79M|      copy->value.ss = NULL;
  566|       |
  567|  2.79M|    break;
  568|       |
  569|      0|  case OBJECT_TYPE_FUNCTION:
  ------------------
  |  |   62|      0|#define OBJECT_TYPE_FUNCTION   5
  ------------------
  |  Branch (569:3): [True: 0, False: 10.6M]
  ------------------
  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|  2.50M|  case OBJECT_TYPE_STRUCTURE:
  ------------------
  |  |   60|  2.50M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (584:3): [True: 2.50M, False: 8.11M]
  ------------------
  585|       |
  586|  2.50M|    structure_member = object_as_structure(object)->members;
  ------------------
  |  |  902|  2.50M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  587|       |
  588|  10.6M|    while (structure_member != NULL)
  ------------------
  |  Branch (588:12): [True: 8.11M, False: 2.50M]
  ------------------
  589|  8.11M|    {
  590|  8.11M|      FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|  8.11M|  {                                            \
  |  |  141|  8.11M|    int __error = (x);                         \
  |  |  142|  8.11M|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  8.11M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 8.11M]
  |  |  ------------------
  |  |  143|  8.11M|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  8.11M|  }
  ------------------
  591|  8.11M|          yr_object_copy(structure_member->object, &o),
  592|  8.11M|          yr_object_destroy(copy));
  593|       |
  594|  8.11M|      FAIL_ON_ERROR_WITH_CLEANUP(yr_object_structure_set_member(copy, o),
  ------------------
  |  |  140|  8.11M|  {                                            \
  |  |  141|  8.11M|    int __error = (x);                         \
  |  |  142|  8.11M|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|  8.11M|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 8.11M]
  |  |  ------------------
  |  |  143|  8.11M|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|  8.11M|  }
  ------------------
  595|       |                                 // cleanup
  596|  8.11M|                                 yr_free(o);
  597|  8.11M|                                 yr_object_destroy(copy));
  598|       |
  599|  8.11M|      structure_member = structure_member->next;
  600|  8.11M|    }
  601|       |
  602|  2.50M|    break;
  603|       |
  604|  2.50M|  case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|    766|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (604:3): [True: 766, False: 10.6M]
  ------------------
  605|       |
  606|    766|    FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    766|  {                                            \
  |  |  141|    766|    int __error = (x);                         \
  |  |  142|    766|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    766|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 766]
  |  |  ------------------
  |  |  143|    766|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    766|  }
  ------------------
  607|    766|        yr_object_copy(object_as_array(object)->prototype_item, &o),
  608|    766|        yr_object_destroy(copy));
  609|       |
  610|    766|    object_as_array(copy)->prototype_item = o;
  ------------------
  |  |  903|    766|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  611|       |
  612|    766|    break;
  613|       |
  614|      0|  case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|      0|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (614:3): [True: 0, False: 10.6M]
  ------------------
  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: 10.6M]
  ------------------
  625|      0|    assert(false);
  626|  10.6M|  }
  627|       |
  628|  10.6M|  *object_copy = copy;
  629|       |
  630|  10.6M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  10.6M|#define ERROR_SUCCESS 0
  ------------------
  631|  10.6M|}
yr_object_structure_set_member:
  634|  8.14M|{
  635|  8.14M|  YR_STRUCTURE_MEMBER* sm;
  636|       |
  637|  8.14M|  assert(object->type == OBJECT_TYPE_STRUCTURE);
  638|       |
  639|       |  // Check if the object already have a member with the same identifier
  640|       |
  641|  8.14M|  if (yr_object_lookup_field(object, member->identifier) != NULL)
  ------------------
  |  Branch (641:7): [True: 0, False: 8.14M]
  ------------------
  642|      0|    return ERROR_DUPLICATED_STRUCTURE_MEMBER;
  ------------------
  |  |   87|      0|#define ERROR_DUPLICATED_STRUCTURE_MEMBER    42
  ------------------
  643|       |
  644|  8.14M|  sm = (YR_STRUCTURE_MEMBER*) yr_malloc(sizeof(YR_STRUCTURE_MEMBER));
  645|       |
  646|  8.14M|  if (sm == NULL)
  ------------------
  |  Branch (646:7): [True: 0, False: 8.14M]
  ------------------
  647|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  648|       |
  649|  8.14M|  member->parent = object;
  650|  8.14M|  sm->object = member;
  651|  8.14M|  sm->next = object_as_structure(object)->members;
  ------------------
  |  |  902|  8.14M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  652|       |
  653|  8.14M|  object_as_structure(object)->members = sm;
  ------------------
  |  |  902|  8.14M|#define object_as_structure(obj)  ((YR_OBJECT_STRUCTURE*) (obj))
  ------------------
  654|       |
  655|  8.14M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  8.14M|#define ERROR_SUCCESS 0
  ------------------
  656|  8.14M|}
yr_object_array_get_item:
  673|  14.1M|{
  674|  14.1M|  YR_OBJECT* result = NULL;
  675|  14.1M|  YR_OBJECT_ARRAY* array;
  676|       |
  677|  14.1M|  assert(object->type == OBJECT_TYPE_ARRAY);
  678|       |
  679|  14.1M|  if (index < 0)
  ------------------
  |  Branch (679:7): [True: 0, False: 14.1M]
  ------------------
  680|      0|    return NULL;
  681|       |
  682|  14.1M|  array = object_as_array(object);
  ------------------
  |  |  903|  14.1M|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  683|       |
  684|  14.1M|  if (array->items != NULL && array->items->capacity > index)
  ------------------
  |  Branch (684:7): [True: 14.1M, False: 1.15k]
  |  Branch (684:31): [True: 14.1M, False: 1.13k]
  ------------------
  685|  14.1M|    result = array->items->objects[index];
  686|       |
  687|  14.1M|  if (result == NULL && flags & OBJECT_CREATE)
  ------------------
  |  |   56|  2.50M|#define OBJECT_CREATE 1
  ------------------
  |  Branch (687:7): [True: 2.50M, False: 11.6M]
  |  Branch (687:25): [True: 2.50M, False: 56]
  ------------------
  688|  2.50M|  {
  689|  2.50M|    yr_object_copy(array->prototype_item, &result);
  690|       |
  691|  2.50M|    if (result != NULL)
  ------------------
  |  Branch (691:9): [True: 2.50M, False: 0]
  ------------------
  692|  2.50M|      yr_object_array_set_item(object, result, index);
  693|  2.50M|  }
  694|       |
  695|  14.1M|  return result;
  696|  14.1M|}
yr_object_array_set_item:
  699|  2.50M|{
  700|  2.50M|  YR_OBJECT_ARRAY* array;
  701|       |
  702|  2.50M|  int capacity;
  703|       |
  704|  2.50M|  assert(index >= 0);
  705|  2.50M|  assert(object->type == OBJECT_TYPE_ARRAY);
  706|       |
  707|  2.50M|  array = object_as_array(object);
  ------------------
  |  |  903|  2.50M|#define object_as_array(obj)      ((YR_OBJECT_ARRAY*) (obj))
  ------------------
  708|       |
  709|  2.50M|  if (array->items == NULL)
  ------------------
  |  Branch (709:7): [True: 1.10k, False: 2.50M]
  ------------------
  710|  1.10k|  {
  711|  1.10k|    capacity = 64;
  712|       |
  713|  1.10k|    while (capacity <= index) capacity *= 2;
  ------------------
  |  Branch (713:12): [True: 0, False: 1.10k]
  ------------------
  714|       |
  715|  1.10k|    array->items = (YR_ARRAY_ITEMS*) yr_malloc(
  716|  1.10k|        sizeof(YR_ARRAY_ITEMS) + capacity * sizeof(YR_OBJECT*));
  717|       |
  718|  1.10k|    if (array->items == NULL)
  ------------------
  |  Branch (718:9): [True: 0, False: 1.10k]
  ------------------
  719|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  720|       |
  721|  1.10k|    memset(array->items->objects, 0, capacity * sizeof(YR_OBJECT*));
  722|       |
  723|  1.10k|    array->items->capacity = capacity;
  724|  1.10k|    array->items->length = 0;
  725|  1.10k|  }
  726|  2.50M|  else if (index >= array->items->capacity)
  ------------------
  |  Branch (726:12): [True: 1.13k, False: 2.49M]
  ------------------
  727|  1.13k|  {
  728|  1.13k|    capacity = array->items->capacity * 2;
  729|       |
  730|  1.13k|    while (capacity <= index) capacity *= 2;
  ------------------
  |  Branch (730:12): [True: 0, False: 1.13k]
  ------------------
  731|       |
  732|  1.13k|    array->items = (YR_ARRAY_ITEMS*) yr_realloc(
  733|  1.13k|        array->items, sizeof(YR_ARRAY_ITEMS) + capacity * sizeof(YR_OBJECT*));
  734|       |
  735|  1.13k|    if (array->items == NULL)
  ------------------
  |  Branch (735:9): [True: 0, False: 1.13k]
  ------------------
  736|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  737|       |
  738|  3.44M|    for (int i = array->items->capacity; i < capacity; i++)
  ------------------
  |  Branch (738:42): [True: 3.44M, False: 1.13k]
  ------------------
  739|  3.44M|      array->items->objects[i] = NULL;
  740|       |
  741|  1.13k|    array->items->capacity = capacity;
  742|  1.13k|  }
  743|       |
  744|  2.50M|  item->parent = object;
  745|  2.50M|  array->items->objects[index] = item;
  746|       |
  747|  2.50M|  if (index >= array->items->length)
  ------------------
  |  Branch (747:7): [True: 2.50M, False: 0]
  ------------------
  748|  2.50M|    array->items->length = index + 1;
  749|       |
  750|  2.50M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.50M|#define ERROR_SUCCESS 0
  ------------------
  751|  2.50M|}
yr_object_dict_get_item:
  757|    250|{
  758|    250|  YR_OBJECT* result = NULL;
  759|    250|  YR_OBJECT_DICTIONARY* dict;
  760|       |
  761|    250|  assert(object->type == OBJECT_TYPE_DICTIONARY);
  762|       |
  763|    250|  dict = object_as_dictionary(object);
  ------------------
  |  |  904|    250|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  764|       |
  765|    250|  if (dict->items != NULL)
  ------------------
  |  Branch (765:7): [True: 231, False: 19]
  ------------------
  766|    231|  {
  767|  5.45k|    for (int i = 0; i < dict->items->used; i++)
  ------------------
  |  Branch (767:21): [True: 5.22k, False: 231]
  ------------------
  768|  5.22k|    {
  769|  5.22k|      if (strcmp(dict->items->objects[i].key->c_string, key) == 0)
  ------------------
  |  Branch (769:11): [True: 24, False: 5.19k]
  ------------------
  770|     24|        result = dict->items->objects[i].obj;
  771|  5.22k|    }
  772|    231|  }
  773|       |
  774|    250|  if (result == NULL && flags & OBJECT_CREATE)
  ------------------
  |  |   56|    226|#define OBJECT_CREATE 1
  ------------------
  |  Branch (774:7): [True: 226, False: 24]
  |  Branch (774:25): [True: 226, False: 0]
  ------------------
  775|    226|  {
  776|    226|    yr_object_copy(dict->prototype_item, &result);
  777|       |
  778|    226|    if (result != NULL)
  ------------------
  |  Branch (778:9): [True: 226, False: 0]
  ------------------
  779|    226|      yr_object_dict_set_item(object, result, key);
  780|    226|  }
  781|       |
  782|    250|  return result;
  783|    250|}
yr_object_dict_set_item:
  786|    226|{
  787|    226|  YR_OBJECT_DICTIONARY* dict;
  788|       |
  789|    226|  int count;
  790|       |
  791|    226|  assert(object->type == OBJECT_TYPE_DICTIONARY);
  792|       |
  793|    226|  dict = object_as_dictionary(object);
  ------------------
  |  |  904|    226|#define object_as_dictionary(obj) ((YR_OBJECT_DICTIONARY*) (obj))
  ------------------
  794|       |
  795|    226|  if (dict->items == NULL)
  ------------------
  |  Branch (795:7): [True: 19, False: 207]
  ------------------
  796|     19|  {
  797|     19|    count = 64;
  798|       |
  799|     19|    dict->items = (YR_DICTIONARY_ITEMS*) yr_malloc(
  800|     19|        sizeof(YR_DICTIONARY_ITEMS) + count * sizeof(dict->items->objects[0]));
  801|       |
  802|     19|    if (dict->items == NULL)
  ------------------
  |  Branch (802:9): [True: 0, False: 19]
  ------------------
  803|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  804|       |
  805|     19|    memset(dict->items->objects, 0, count * sizeof(dict->items->objects[0]));
  806|       |
  807|     19|    dict->items->free = count;
  808|     19|    dict->items->used = 0;
  809|     19|  }
  810|    207|  else if (dict->items->free == 0)
  ------------------
  |  Branch (810:12): [True: 0, False: 207]
  ------------------
  811|      0|  {
  812|      0|    count = dict->items->used * 2;
  813|      0|    dict->items = (YR_DICTIONARY_ITEMS*) yr_realloc(
  814|      0|        dict->items,
  815|      0|        sizeof(YR_DICTIONARY_ITEMS) + count * sizeof(dict->items->objects[0]));
  816|       |
  817|      0|    if (dict->items == NULL)
  ------------------
  |  Branch (817:9): [True: 0, False: 0]
  ------------------
  818|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  819|       |
  820|      0|    for (int i = dict->items->used; i < count; i++)
  ------------------
  |  Branch (820:37): [True: 0, False: 0]
  ------------------
  821|      0|    {
  822|      0|      dict->items->objects[i].key = NULL;
  823|      0|      dict->items->objects[i].obj = NULL;
  824|      0|    }
  825|       |
  826|      0|    dict->items->free = dict->items->used;
  827|      0|  }
  828|       |
  829|    226|  item->parent = object;
  830|       |
  831|    226|  dict->items->objects[dict->items->used].key = ss_new(key);
  832|    226|  dict->items->objects[dict->items->used].obj = item;
  833|       |
  834|    226|  dict->items->used++;
  835|    226|  dict->items->free--;
  836|       |
  837|    226|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    226|#define ERROR_SUCCESS 0
  ------------------
  838|    226|}
yr_object_set_integer:
  950|  5.32M|{
  951|  5.32M|  YR_OBJECT* integer_obj;
  952|       |
  953|  5.32M|  va_list args;
  954|  5.32M|  va_start(args, field);
  955|       |
  956|  5.32M|  if (field != NULL)
  ------------------
  |  Branch (956:7): [True: 5.32M, False: 82]
  ------------------
  957|  5.32M|    integer_obj = _yr_object_lookup(object, OBJECT_CREATE, field, args);
  ------------------
  |  |   56|  5.32M|#define OBJECT_CREATE 1
  ------------------
  958|     82|  else
  959|     82|    integer_obj = object;
  960|       |
  961|  5.32M|  va_end(args);
  962|       |
  963|  5.32M|  if (integer_obj == NULL)
  ------------------
  |  Branch (963:7): [True: 0, False: 5.32M]
  ------------------
  964|      0|  {
  965|      0|    if (field != NULL)
  ------------------
  |  Branch (965:9): [True: 0, False: 0]
  ------------------
  966|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  967|      0|    else
  968|      0|      return ERROR_INVALID_ARGUMENT;
  ------------------
  |  |   74|      0|#define ERROR_INVALID_ARGUMENT               29
  ------------------
  969|      0|  }
  970|       |
  971|  5.32M|  assert(integer_obj->type == OBJECT_TYPE_INTEGER);
  972|       |
  973|  5.32M|  integer_obj->value.i = value;
  974|       |
  975|  5.32M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  5.32M|#define ERROR_SUCCESS 0
  ------------------
  976|  5.32M|}
yr_object_set_string:
 1013|  2.21M|{
 1014|  2.21M|  YR_OBJECT* string_obj;
 1015|       |
 1016|  2.21M|  va_list args;
 1017|  2.21M|  va_start(args, field);
 1018|       |
 1019|  2.21M|  if (field != NULL)
  ------------------
  |  Branch (1019:7): [True: 2.21M, False: 0]
  ------------------
 1020|  2.21M|    string_obj = _yr_object_lookup(object, OBJECT_CREATE, field, args);
  ------------------
  |  |   56|  2.21M|#define OBJECT_CREATE 1
  ------------------
 1021|      0|  else
 1022|      0|    string_obj = object;
 1023|       |
 1024|  2.21M|  va_end(args);
 1025|       |
 1026|  2.21M|  if (string_obj == NULL)
  ------------------
  |  Branch (1026:7): [True: 0, False: 2.21M]
  ------------------
 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|  2.21M|  assert(string_obj->type == OBJECT_TYPE_STRING);
 1035|       |
 1036|  2.21M|  if (string_obj->value.ss != NULL)
  ------------------
  |  Branch (1036:7): [True: 24, False: 2.21M]
  ------------------
 1037|     24|    yr_free(string_obj->value.ss);
 1038|       |
 1039|  2.21M|  if (value != NULL)
  ------------------
  |  Branch (1039:7): [True: 2.21M, False: 5]
  ------------------
 1040|  2.21M|  {
 1041|  2.21M|    string_obj->value.ss = (SIZED_STRING*) yr_malloc(
 1042|  2.21M|        len + sizeof(SIZED_STRING));
 1043|       |
 1044|  2.21M|    if (string_obj->value.ss == NULL)
  ------------------
  |  Branch (1044:9): [True: 0, False: 2.21M]
  ------------------
 1045|      0|      return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 1046|       |
 1047|  2.21M|    string_obj->value.ss->length = (uint32_t) len;
 1048|  2.21M|    string_obj->value.ss->flags = 0;
 1049|       |
 1050|  2.21M|    memcpy(string_obj->value.ss->c_string, value, len);
 1051|  2.21M|    string_obj->value.ss->c_string[len] = '\0';
 1052|  2.21M|  }
 1053|      5|  else
 1054|      5|  {
 1055|      5|    string_obj->value.ss = NULL;
 1056|      5|  }
 1057|       |
 1058|  2.21M|  return ERROR_SUCCESS;
  ------------------
  |  |   40|  2.21M|#define ERROR_SUCCESS 0
  ------------------
 1059|  2.21M|}
yr_object_get_root:
 1062|     82|{
 1063|     82|  YR_OBJECT* o = object;
 1064|       |
 1065|    164|  while (o->parent != NULL) o = o->parent;
  ------------------
  |  Branch (1065:10): [True: 82, False: 82]
  ------------------
 1066|       |
 1067|     82|  return o;
 1068|     82|}
object.c:_yr_object_lookup:
  420|  7.54M|{
  421|  7.54M|  YR_OBJECT* obj = object;
  422|       |
  423|  7.54M|  const char* p = pattern;
  424|  7.54M|  const char* key = NULL;
  425|       |
  426|  7.54M|  char str[256];
  427|       |
  428|  7.54M|  int i;
  429|  7.54M|  int index = -1;
  430|       |
  431|  21.6M|  while (obj != NULL)
  ------------------
  |  Branch (431:10): [True: 21.6M, False: 0]
  ------------------
  432|  21.6M|  {
  433|  21.6M|    i = 0;
  434|       |
  435|   266M|    while (*p != '\0' && *p != '.' && *p != '[' && i < sizeof(str) - 1)
  ------------------
  |  Branch (435:12): [True: 258M, False: 7.54M]
  |  Branch (435:26): [True: 258M, False: 1.20k]
  |  Branch (435:39): [True: 244M, False: 14.1M]
  |  Branch (435:52): [True: 244M, False: 0]
  ------------------
  436|   244M|    {
  437|   244M|      str[i++] = *p++;
  438|   244M|    }
  439|       |
  440|  21.6M|    str[i] = '\0';
  441|       |
  442|  21.6M|    if (obj->type != OBJECT_TYPE_STRUCTURE)
  ------------------
  |  |   60|  21.6M|#define OBJECT_TYPE_STRUCTURE  3
  ------------------
  |  Branch (442:9): [True: 0, False: 21.6M]
  ------------------
  443|      0|      return NULL;
  444|       |
  445|  21.6M|    obj = yr_object_lookup_field(obj, str);
  446|       |
  447|  21.6M|    if (obj == NULL)
  ------------------
  |  Branch (447:9): [True: 0, False: 21.6M]
  ------------------
  448|      0|      return NULL;
  449|       |
  450|  21.6M|    if (*p == '[')
  ------------------
  |  Branch (450:9): [True: 14.1M, False: 7.54M]
  ------------------
  451|  14.1M|    {
  452|  14.1M|      p++;
  453|       |
  454|  14.1M|      if (*p == '%')
  ------------------
  |  Branch (454:11): [True: 14.1M, False: 0]
  ------------------
  455|  14.1M|      {
  456|  14.1M|        p++;
  457|       |
  458|  14.1M|        switch (*p++)
  459|  14.1M|        {
  460|  14.1M|        case 'i':
  ------------------
  |  Branch (460:9): [True: 14.1M, False: 250]
  ------------------
  461|  14.1M|          index = va_arg(args, int);
  462|  14.1M|          break;
  463|    250|        case 's':
  ------------------
  |  Branch (463:9): [True: 250, False: 14.1M]
  ------------------
  464|    250|          key = va_arg(args, const char*);
  465|    250|          break;
  466|       |
  467|      0|        default:
  ------------------
  |  Branch (467:9): [True: 0, False: 14.1M]
  ------------------
  468|      0|          return NULL;
  469|  14.1M|        }
  470|  14.1M|      }
  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|  14.1M|      assert(*p == ']');
  492|  14.1M|      p++;
  493|  14.1M|      assert(*p == '.' || *p == '\0');
  494|       |
  495|  14.1M|      switch (obj->type)
  ------------------
  |  Branch (495:15): [True: 0, False: 14.1M]
  ------------------
  496|  14.1M|      {
  497|  14.1M|      case OBJECT_TYPE_ARRAY:
  ------------------
  |  |   61|  14.1M|#define OBJECT_TYPE_ARRAY      4
  ------------------
  |  Branch (497:7): [True: 14.1M, False: 250]
  ------------------
  498|  14.1M|        assert(index != -1);
  499|  14.1M|        obj = yr_object_array_get_item(obj, flags, index);
  500|  14.1M|        break;
  501|       |
  502|    250|      case OBJECT_TYPE_DICTIONARY:
  ------------------
  |  |   63|    250|#define OBJECT_TYPE_DICTIONARY 6
  ------------------
  |  Branch (502:7): [True: 250, False: 14.1M]
  ------------------
  503|    250|        assert(key != NULL);
  504|    250|        obj = yr_object_dict_get_item(obj, flags, key);
  505|    250|        break;
  506|  14.1M|      }
  507|  14.1M|    }
  508|       |
  509|  21.6M|    if (*p == '\0')
  ------------------
  |  Branch (509:9): [True: 7.54M, False: 14.1M]
  ------------------
  510|  7.54M|      break;
  511|       |
  512|  14.1M|    p++;
  513|  14.1M|  }
  514|       |
  515|  7.54M|  return obj;
  516|  7.54M|}

yr_parser_emit:
   55|     12|{
   56|     12|  return yr_arena_write_data(
   57|     12|      yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|     12|#define yyget_extra  yara_yyget_extra
  ------------------
   58|     12|      YR_CODE_SECTION,
  ------------------
  |  |   63|     12|#define YR_CODE_SECTION             6
  ------------------
   59|     12|      &instruction,
   60|     12|      sizeof(uint8_t),
   61|     12|      instruction_ref);
   62|     12|}
yr_parser_emit_with_arg_int32:
   95|      2|{
   96|      2|  int result = yr_arena_write_data(
   97|      2|      yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
   98|      2|      YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
   99|      2|      &instruction,
  100|      2|      sizeof(uint8_t),
  101|      2|      instruction_ref);
  102|       |
  103|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (103:7): [True: 2, False: 0]
  ------------------
  104|      2|    result = yr_arena_write_data(
  105|      2|        yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  106|      2|        YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  107|      2|        &argument,
  108|      2|        sizeof(int32_t),
  109|      2|        argument_ref);
  110|       |
  111|      2|  return result;
  112|      2|}
yr_parser_emit_with_arg:
  120|      2|{
  121|      2|  int result = yr_arena_write_data(
  122|      2|      yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  123|      2|      YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  124|      2|      &instruction,
  125|      2|      sizeof(uint8_t),
  126|      2|      instruction_ref);
  127|       |
  128|      2|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (128:7): [True: 2, False: 0]
  ------------------
  129|      2|    result = yr_arena_write_data(
  130|      2|        yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  131|      2|        YR_CODE_SECTION,
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
  132|      2|        &argument,
  133|      2|        sizeof(int64_t),
  134|      2|        argument_ref);
  135|       |
  136|      2|  return result;
  137|      2|}
yr_parser_emit_with_arg_reloc:
  145|     20|{
  146|     20|  YR_ARENA_REF ref = YR_ARENA_NULL_REF;
  ------------------
  |  |   43|     20|  (YR_ARENA_REF)           \
  |  |   44|     20|  {                        \
  |  |   45|     20|    UINT32_MAX, UINT32_MAX \
  |  |   46|     20|  }
  ------------------
  147|       |
  148|     20|  DECLARE_REFERENCE(void*, ptr) arg;
  ------------------
  |  |   45|     20|  union                               \
  |  |   46|     20|  {                                   \
  |  |   47|     20|    type name;                        \
  |  |   48|     20|    YR_ARENA_REF name##_;             \
  |  |   49|     20|  } YR_ALIGN(8)
  ------------------
  149|       |
  150|     20|  memset(&arg, 0, sizeof(arg));
  151|     20|  arg.ptr = argument;
  152|       |
  153|     20|  int result = yr_arena_write_data(
  154|     20|      yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|     20|#define yyget_extra  yara_yyget_extra
  ------------------
  155|     20|      YR_CODE_SECTION,
  ------------------
  |  |   63|     20|#define YR_CODE_SECTION             6
  ------------------
  156|     20|      &instruction,
  157|     20|      sizeof(uint8_t),
  158|     20|      instruction_ref);
  159|       |
  160|     20|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|     20|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (160:7): [True: 20, False: 0]
  ------------------
  161|     20|    result = yr_arena_write_data(
  162|     20|        yyget_extra(yyscanner)->arena,
  ------------------
  |  |   55|     20|#define yyget_extra  yara_yyget_extra
  ------------------
  163|     20|        YR_CODE_SECTION,
  ------------------
  |  |   63|     20|#define YR_CODE_SECTION             6
  ------------------
  164|     20|        &arg,
  165|     20|        sizeof(arg),
  166|     20|        &ref);
  167|       |
  168|     20|  if (result == ERROR_SUCCESS)
  ------------------
  |  |   40|     20|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (168:7): [True: 20, False: 0]
  ------------------
  169|     20|    result = yr_arena_make_ptr_relocatable(
  170|     20|        yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   55|     20|#define yyget_extra  yara_yyget_extra
  ------------------
                      yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   63|     20|#define YR_CODE_SECTION             6
  ------------------
                      yyget_extra(yyscanner)->arena, YR_CODE_SECTION, ref.offset, EOL);
  ------------------
  |  |   38|     20|#define EOL ((size_t) -1)
  ------------------
  171|       |
  172|     20|  if (argument_ref != NULL)
  ------------------
  |  Branch (172:7): [True: 0, False: 20]
  ------------------
  173|      0|    *argument_ref = ref;
  174|       |
  175|     20|  return result;
  176|     20|}
yr_parser_emit_push_const:
  306|      4|{
  307|      4|  uint8_t opcode[9];
  308|      4|  int opcode_len = 1;
  309|       |
  310|      4|  if (argument == YR_UNDEFINED)
  ------------------
  |  |   38|      4|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (310:7): [True: 0, False: 4]
  ------------------
  311|      0|  {
  312|      0|    opcode[0] = OP_PUSH_U;
  ------------------
  |  |  114|      0|#define OP_PUSH_U                     66
  ------------------
  313|      0|  }
  314|      4|  else if (argument <= 0xff)
  ------------------
  |  Branch (314:12): [True: 4, False: 0]
  ------------------
  315|      4|  {
  316|      4|    opcode[0] = OP_PUSH_8;
  ------------------
  |  |  111|      4|#define OP_PUSH_8                     63
  ------------------
  317|      4|    opcode[1] = (uint8_t) argument;
  318|      4|    opcode_len += sizeof(uint8_t);
  319|      4|  }
  320|      0|  else if (argument <= 0xffff)
  ------------------
  |  Branch (320:12): [True: 0, False: 0]
  ------------------
  321|      0|  {
  322|      0|    opcode[0] = OP_PUSH_16;
  ------------------
  |  |  112|      0|#define OP_PUSH_16                    64
  ------------------
  323|      0|    uint16_t u = (uint16_t) argument;
  324|      0|    memcpy(opcode + 1, &u, sizeof(uint16_t));
  325|      0|    opcode_len += sizeof(uint16_t);
  326|      0|  }
  327|      0|  else if (argument <= 0xffffffff)
  ------------------
  |  Branch (327:12): [True: 0, False: 0]
  ------------------
  328|      0|  {
  329|      0|    opcode[0] = OP_PUSH_32;
  ------------------
  |  |  113|      0|#define OP_PUSH_32                    65
  ------------------
  330|      0|    uint32_t u = (uint32_t) argument;
  331|      0|    memcpy(opcode + 1, &u, sizeof(uint32_t));
  332|      0|    opcode_len += sizeof(uint32_t);
  333|      0|  }
  334|      0|  else
  335|      0|  {
  336|      0|    opcode[0] = OP_PUSH;
  ------------------
  |  |   61|      0|#define OP_PUSH                       13
  ------------------
  337|      0|    memcpy(opcode + 1, &argument, sizeof(uint64_t));
  338|      0|    opcode_len += sizeof(uint64_t);
  339|      0|  }
  340|       |
  341|      4|  return yr_arena_write_data(
  342|      4|      yyget_extra(yyscanner)->arena, YR_CODE_SECTION, opcode, opcode_len, NULL);
  ------------------
  |  |   55|      4|#define yyget_extra  yara_yyget_extra
  ------------------
                    yyget_extra(yyscanner)->arena, YR_CODE_SECTION, opcode, opcode_len, NULL);
  ------------------
  |  |   63|      4|#define YR_CODE_SECTION             6
  ------------------
  343|      4|}
yr_parser_check_types:
  349|      2|{
  350|      2|  int i;
  351|       |
  352|      2|  for (i = 0; i < YR_MAX_OVERLOADED_FUNCTIONS; i++)
  ------------------
  |  |  136|      2|#define YR_MAX_OVERLOADED_FUNCTIONS 10
  ------------------
  |  Branch (352:15): [True: 2, False: 0]
  ------------------
  353|      2|  {
  354|      2|    if (function->prototypes[i].arguments_fmt == NULL)
  ------------------
  |  Branch (354:9): [True: 0, False: 2]
  ------------------
  355|      0|      break;
  356|       |
  357|      2|    if (strcmp(function->prototypes[i].arguments_fmt, actual_args_fmt) == 0)
  ------------------
  |  Branch (357:9): [True: 2, False: 0]
  ------------------
  358|      2|      return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  359|      2|  }
  360|       |
  361|      0|  yr_compiler_set_error_extra_info(compiler, function->identifier)
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
  362|       |
  363|      0|      return ERROR_WRONG_ARGUMENTS;
  ------------------
  |  |   85|      0|#define ERROR_WRONG_ARGUMENTS                40
  ------------------
  364|      2|}
yr_parser_lookup_loop_variable:
  416|      6|{
  417|      6|  YR_COMPILER* compiler = yyget_extra(yyscanner);
  ------------------
  |  |   55|      6|#define yyget_extra  yara_yyget_extra
  ------------------
  418|      6|  int i, j;
  419|      6|  int var_offset = 0;
  420|       |
  421|      6|  for (i = 0; i <= compiler->loop_index; i++)
  ------------------
  |  Branch (421:15): [True: 0, False: 6]
  ------------------
  422|      0|  {
  423|      0|    var_offset += compiler->loop[i].vars_internal_count;
  424|       |
  425|      0|    for (j = 0; j < compiler->loop[i].vars_count; j++)
  ------------------
  |  Branch (425:17): [True: 0, False: 0]
  ------------------
  426|      0|    {
  427|      0|      if (compiler->loop[i].vars[j].identifier.ptr != NULL &&
  ------------------
  |  Branch (427:11): [True: 0, False: 0]
  ------------------
  428|      0|          strcmp(identifier, compiler->loop[i].vars[j].identifier.ptr) == 0)
  ------------------
  |  Branch (428:11): [True: 0, False: 0]
  ------------------
  429|      0|      {
  430|      0|        if (expr != NULL)
  ------------------
  |  Branch (430:13): [True: 0, False: 0]
  ------------------
  431|      0|          *expr = compiler->loop[i].vars[j];
  432|       |
  433|      0|        return var_offset + j;
  434|      0|      }
  435|      0|    }
  436|       |
  437|      0|    var_offset += compiler->loop[i].vars_count;
  438|      0|  }
  439|       |
  440|      6|  return -1;
  441|      6|}
yr_parser_reduce_rule_declaration_phase_1:
  954|      2|{
  955|      2|  int result;
  956|      2|  YR_FIXUP* fixup;
  957|      2|  YR_COMPILER* compiler = yyget_extra(yyscanner);
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
  958|       |
  959|      2|  YR_NAMESPACE* ns = (YR_NAMESPACE*) yr_arena_get_ptr(
  960|      2|      compiler->arena,
  961|      2|      YR_NAMESPACES_TABLE,
  ------------------
  |  |   57|      2|#define YR_NAMESPACES_TABLE         0
  ------------------
  962|      2|      compiler->current_namespace_idx * sizeof(struct YR_NAMESPACE));
  963|       |
  964|      2|  if (yr_hash_table_lookup_uint32(
  ------------------
  |  Branch (964:7): [True: 0, False: 2]
  ------------------
  965|      2|          compiler->rules_table, identifier, ns->name) != UINT32_MAX ||
  966|      2|      yr_hash_table_lookup(compiler->objects_table, identifier, NULL) != NULL)
  ------------------
  |  Branch (966:7): [True: 0, False: 2]
  ------------------
  967|      0|  {
  968|       |    // A rule or variable with the same identifier already exists, return the
  969|       |    // appropriate error.
  970|       |
  971|      0|    yr_compiler_set_error_extra_info(compiler, identifier);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
  972|      0|    return ERROR_DUPLICATED_IDENTIFIER;
  ------------------
  |  |   59|      0|#define ERROR_DUPLICATED_IDENTIFIER          14
  ------------------
  973|      0|  }
  974|       |
  975|       |  // Iterate over all identifiers in wildcard_identifiers_table, and check if
  976|       |  // any of them are a prefix of the identifier being declared. If so, return
  977|       |  // ERROR_IDENTIFIER_MATCHES_WILDCARD.
  978|      2|  result = yr_hash_table_iterate(
  979|      2|      compiler->wildcard_identifiers_table,
  980|      2|      ns->name,
  981|      2|      wildcard_iterator,
  982|      2|      (void*) identifier);
  983|       |
  984|      2|  if (result == ERROR_IDENTIFIER_MATCHES_WILDCARD)
  ------------------
  |  |  108|      2|#define ERROR_IDENTIFIER_MATCHES_WILDCARD    63
  ------------------
  |  Branch (984:7): [True: 0, False: 2]
  ------------------
  985|      0|  {
  986|       |    // This rule matches an existing wildcard rule set.
  987|      0|    yr_compiler_set_error_extra_info(compiler, identifier);
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
  988|      0|  }
  989|       |
  990|      2|  FAIL_ON_ERROR(result);
  ------------------
  |  |  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|  }
  ------------------
  991|       |
  992|      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|  }
  ------------------
  993|      2|      compiler->arena,
  994|      2|      YR_RULES_TABLE,
  995|      2|      sizeof(YR_RULE),
  996|      2|      rule_ref,
  997|      2|      offsetof(YR_RULE, identifier),
  998|      2|      offsetof(YR_RULE, tags),
  999|      2|      offsetof(YR_RULE, strings),
 1000|      2|      offsetof(YR_RULE, metas),
 1001|      2|      offsetof(YR_RULE, ns),
 1002|      2|      EOL));
 1003|       |
 1004|      2|  YR_RULE* rule = (YR_RULE*) yr_arena_ref_to_ptr(compiler->arena, rule_ref);
 1005|       |
 1006|      2|  YR_ARENA_REF ref;
 1007|       |
 1008|      2|  FAIL_ON_ERROR(_yr_compiler_store_string(compiler, identifier, &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|  }
  ------------------
 1009|       |
 1010|      2|  rule->identifier = (const char*) yr_arena_ref_to_ptr(compiler->arena, &ref);
 1011|      2|  rule->flags = flags;
 1012|      2|  rule->ns = ns;
 1013|      2|  rule->num_atoms = 0;
 1014|       |
 1015|      2|  YR_ARENA_REF jmp_offset_ref;
 1016|       |
 1017|       |  // We are starting to parse a new rule, set current_rule_idx accordingly.
 1018|      2|  compiler->current_rule_idx = compiler->next_rule_idx;
 1019|      2|  compiler->next_rule_idx++;
 1020|       |
 1021|       |  // The OP_INIT_RULE instruction behaves like a jump. When the rule is
 1022|       |  // disabled it skips over the rule's code and go straight to the next rule's
 1023|       |  // code. The jmp_offset_ref variable points to the jump's offset. The offset
 1024|       |  // is set to 0 as we don't know the jump target yet. When we finish
 1025|       |  // generating the rule's code in yr_parser_reduce_rule_declaration_phase_2
 1026|       |  // the jump offset is set to its final value.
 1027|       |
 1028|      2|  FAIL_ON_ERROR(yr_parser_emit_with_arg_int32(
  ------------------
  |  |  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|  }
  ------------------
 1029|      2|      yyscanner, OP_INIT_RULE, 0, NULL, &jmp_offset_ref));
 1030|       |
 1031|      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|  }
  ------------------
 1032|      2|      compiler->arena,
 1033|      2|      YR_CODE_SECTION,
 1034|      2|      &compiler->current_rule_idx,
 1035|      2|      sizeof(compiler->current_rule_idx),
 1036|      2|      NULL));
 1037|       |
 1038|       |  // Create a fixup entry for the jump and push it in the stack
 1039|      2|  fixup = (YR_FIXUP*) yr_malloc(sizeof(YR_FIXUP));
 1040|       |
 1041|      2|  if (fixup == NULL)
  ------------------
  |  Branch (1041:7): [True: 0, False: 2]
  ------------------
 1042|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
 1043|       |
 1044|      2|  fixup->ref = jmp_offset_ref;
 1045|      2|  fixup->next = compiler->fixup_stack_head;
 1046|      2|  compiler->fixup_stack_head = fixup;
 1047|       |
 1048|       |  // Clean strings_table as we are starting to parse a new rule.
 1049|      2|  yr_hash_table_clean(compiler->strings_table, NULL);
 1050|       |
 1051|      2|  FAIL_ON_ERROR(yr_hash_table_add_uint32(
  ------------------
  |  |  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|  }
  ------------------
 1052|      2|      compiler->rules_table, identifier, ns->name, compiler->current_rule_idx));
 1053|       |
 1054|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1055|      2|}
yr_parser_reduce_rule_declaration_phase_2:
 1060|      2|{
 1061|      2|  uint32_t max_strings_per_rule;
 1062|      2|  uint32_t strings_in_rule = 0;
 1063|       |
 1064|      2|  YR_FIXUP* fixup;
 1065|      2|  YR_STRING* string;
 1066|      2|  YR_COMPILER* compiler = yyget_extra(yyscanner);
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
 1067|       |
 1068|      2|  yr_get_configuration_uint32(
 1069|      2|      YR_CONFIG_MAX_STRINGS_PER_RULE, &max_strings_per_rule);
 1070|       |
 1071|      2|  YR_RULE* rule = (YR_RULE*) yr_arena_ref_to_ptr(compiler->arena, rule_ref);
 1072|       |
 1073|       |  // Show warning if the rule is generating too many atoms. The warning is
 1074|       |  // shown if the number of atoms is greater than 20 times the maximum number
 1075|       |  // of strings allowed for a rule, as 20 is minimum number of atoms generated
 1076|       |  // for a string using *nocase*, *ascii* and *wide* modifiers simultaneously.
 1077|       |
 1078|      2|  if (rule->num_atoms > YR_ATOMS_PER_RULE_WARNING_THRESHOLD)
  ------------------
  |  |   90|      2|#define YR_ATOMS_PER_RULE_WARNING_THRESHOLD 12000
  ------------------
  |  Branch (1078:7): [True: 0, False: 2]
  ------------------
 1079|      0|  {
 1080|      0|    yywarning(yyscanner, "rule is slowing down scanning");
  ------------------
  |  |   51|      0|#define yywarning    yara_yywarning
  ------------------
 1081|      0|  }
 1082|       |
 1083|      2|  yr_rule_strings_foreach(rule, string)
  ------------------
  |  |   60|      2|  for (string = rule->strings; string != NULL; \
  |  |  ------------------
  |  |  |  Branch (60:32): [True: 0, False: 2]
  |  |  ------------------
  |  |   61|      2|       string = STRING_IS_LAST_IN_RULE(string) ? NULL : string + 1)
  |  |  ------------------
  |  |  |  |  122|      0|#define STRING_IS_LAST_IN_RULE(x) (((x)->flags) & STRING_FLAGS_LAST_IN_RULE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|      0|#define STRING_FLAGS_LAST_IN_RULE  0x1000
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (122:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1084|      0|  {
 1085|       |    // Only the heading fragment in a chain of strings (the one with
 1086|       |    // chained_to == NULL) must be referenced. All other fragments
 1087|       |    // are never marked as referenced.
 1088|       |    //
 1089|       |    // Any string identifier that starts with '_' can be unreferenced. Anonymous
 1090|       |    // strings must always be referenced.
 1091|       |
 1092|      0|    if (!STRING_IS_REFERENCED(string) && string->chained_to == NULL &&
  ------------------
  |  |  108|      0|#define STRING_IS_REFERENCED(x) (((x)->flags) & STRING_FLAGS_REFERENCED)
  |  |  ------------------
  |  |  |  |   66|      0|#define STRING_FLAGS_REFERENCED    0x01
  |  |  ------------------
  ------------------
  |  Branch (1092:9): [True: 0, False: 0]
  |  Branch (1092:42): [True: 0, False: 0]
  ------------------
 1093|      0|        (STRING_IS_ANONYMOUS(string) ||
  ------------------
  |  |  106|      0|#define STRING_IS_ANONYMOUS(x) (((x)->flags) & STRING_FLAGS_ANONYMOUS)
  |  |  ------------------
  |  |  |  |   74|      0|#define STRING_FLAGS_ANONYMOUS     0x100
  |  |  ------------------
  |  |  |  Branch (106:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1094|      0|         (!STRING_IS_ANONYMOUS(string) && string->identifier[1] != '_')))
  ------------------
  |  |  106|      0|#define STRING_IS_ANONYMOUS(x) (((x)->flags) & STRING_FLAGS_ANONYMOUS)
  |  |  ------------------
  |  |  |  |   74|      0|#define STRING_FLAGS_ANONYMOUS     0x100
  |  |  ------------------
  ------------------
  |  Branch (1094:11): [True: 0, False: 0]
  |  Branch (1094:43): [True: 0, False: 0]
  ------------------
 1095|      0|    {
 1096|      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));
  ------------------
 1097|      0|          compiler, string->identifier) return ERROR_UNREFERENCED_STRING;
  ------------------
  |  |   63|      0|#define ERROR_UNREFERENCED_STRING            18
  ------------------
 1098|      0|    }
 1099|       |
 1100|       |    // If a string is unreferenced we need to unset the FIXED_OFFSET flag so
 1101|       |    // that it will match anywhere.
 1102|      0|    if (!STRING_IS_REFERENCED(string) && string->chained_to == NULL &&
  ------------------
  |  |  108|      0|#define STRING_IS_REFERENCED(x) (((x)->flags) & STRING_FLAGS_REFERENCED)
  |  |  ------------------
  |  |  |  |   66|      0|#define STRING_FLAGS_REFERENCED    0x01
  |  |  ------------------
  ------------------
  |  Branch (1102:9): [True: 0, False: 0]
  |  Branch (1102:42): [True: 0, False: 0]
  ------------------
 1103|      0|        STRING_IS_FIXED_OFFSET(string))
  ------------------
  |  |  112|      0|#define STRING_IS_FIXED_OFFSET(x) (((x)->flags) & STRING_FLAGS_FIXED_OFFSET)
  |  |  ------------------
  |  |  |  |   81|      0|#define STRING_FLAGS_FIXED_OFFSET  0x8000
  |  |  ------------------
  |  |  |  Branch (112:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1104|      0|    {
 1105|      0|      string->flags &= ~STRING_FLAGS_FIXED_OFFSET;
  ------------------
  |  |   81|      0|#define STRING_FLAGS_FIXED_OFFSET  0x8000
  ------------------
 1106|      0|    }
 1107|       |
 1108|      0|    strings_in_rule++;
 1109|       |
 1110|      0|    if (strings_in_rule > max_strings_per_rule)
  ------------------
  |  Branch (1110:9): [True: 0, False: 0]
  ------------------
 1111|      0|    {
 1112|      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));
  ------------------
 1113|      0|          compiler, rule->identifier) return ERROR_TOO_MANY_STRINGS;
  ------------------
  |  |   96|      0|#define ERROR_TOO_MANY_STRINGS               51
  ------------------
 1114|      0|    }
 1115|      0|  }
 1116|       |
 1117|      2|  FAIL_ON_ERROR(yr_parser_emit_with_arg(
  ------------------
  |  |  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|  }
  ------------------
 1118|      2|      yyscanner, OP_MATCH_RULE, compiler->current_rule_idx, NULL, NULL));
 1119|       |
 1120|      2|  fixup = compiler->fixup_stack_head;
 1121|       |
 1122|      2|  int32_t* jmp_offset_addr = (int32_t*) yr_arena_ref_to_ptr(
 1123|      2|      compiler->arena, &fixup->ref);
 1124|       |
 1125|      2|  int32_t jmp_offset = yr_arena_get_current_offset(
 1126|      2|                           compiler->arena, YR_CODE_SECTION) -
  ------------------
  |  |   63|      2|#define YR_CODE_SECTION             6
  ------------------
 1127|      2|                       fixup->ref.offset + 1;
 1128|       |
 1129|      2|  memcpy(jmp_offset_addr, &jmp_offset, sizeof(jmp_offset));
 1130|       |
 1131|       |  // Remove fixup from the stack.
 1132|      2|  compiler->fixup_stack_head = fixup->next;
 1133|      2|  yr_free(fixup);
 1134|       |
 1135|       |  // We have finished parsing the current rule set current_rule_idx to
 1136|       |  // UINT32_MAX indicating that we are not currently parsing a rule.
 1137|      2|  compiler->current_rule_idx = UINT32_MAX;
 1138|       |
 1139|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1140|      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|}
yr_parser_reduce_operation:
 1416|      2|{
 1417|      2|  int expression_type;
 1418|       |
 1419|      2|  YR_COMPILER* compiler = yyget_extra(yyscanner);
  ------------------
  |  |   55|      2|#define yyget_extra  yara_yyget_extra
  ------------------
 1420|       |
 1421|      2|  if ((left_operand.type == EXPRESSION_TYPE_INTEGER ||
  ------------------
  |  |   47|      4|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (1421:8): [True: 2, False: 0]
  ------------------
 1422|      2|       left_operand.type == EXPRESSION_TYPE_FLOAT) &&
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (1422:8): [True: 0, False: 0]
  ------------------
 1423|      2|      (right_operand.type == EXPRESSION_TYPE_INTEGER ||
  ------------------
  |  |   47|      4|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (1423:8): [True: 2, False: 0]
  ------------------
 1424|      2|       right_operand.type == EXPRESSION_TYPE_FLOAT))
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (1424:8): [True: 0, False: 0]
  ------------------
 1425|      2|  {
 1426|      2|    if (left_operand.type != right_operand.type)
  ------------------
  |  Branch (1426:9): [True: 0, False: 2]
  ------------------
 1427|      0|    {
 1428|       |      // One operand is double and the other is integer,
 1429|       |      // cast the integer to double
 1430|       |
 1431|      0|      FAIL_ON_ERROR(yr_parser_emit_with_arg(
  ------------------
  |  |  132|      0|  {                               \
  |  |  133|      0|    int __error = (x);            \
  |  |  ------------------
  |  |  |  Branch (133:20): [True: 0, False: 0]
  |  |  ------------------
  |  |  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|  }
  ------------------
 1432|      0|          yyscanner,
 1433|      0|          OP_INT_TO_DBL,
 1434|      0|          (left_operand.type == EXPRESSION_TYPE_INTEGER) ? 2 : 1,
 1435|      0|          NULL,
 1436|      0|          NULL));
 1437|      0|    }
 1438|       |
 1439|      2|    expression_type = EXPRESSION_TYPE_FLOAT;
  ------------------
  |  |   51|      2|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
 1440|       |
 1441|      2|    if (left_operand.type == EXPRESSION_TYPE_INTEGER &&
  ------------------
  |  |   47|      4|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (1441:9): [True: 2, False: 0]
  ------------------
 1442|      2|        right_operand.type == EXPRESSION_TYPE_INTEGER)
  ------------------
  |  |   47|      2|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (1442:9): [True: 2, False: 0]
  ------------------
 1443|      2|    {
 1444|      2|      expression_type = EXPRESSION_TYPE_INTEGER;
  ------------------
  |  |   47|      2|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
 1445|      2|    }
 1446|       |
 1447|      2|    FAIL_ON_ERROR(yr_parser_emit(
  ------------------
  |  |  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|  }
  ------------------
 1448|      2|        yyscanner, _yr_parser_operator_to_opcode(op, expression_type), NULL));
 1449|      2|  }
 1450|      0|  else if (
 1451|      0|      left_operand.type == EXPRESSION_TYPE_STRING &&
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (1451:7): [True: 0, False: 0]
  ------------------
 1452|      0|      right_operand.type == EXPRESSION_TYPE_STRING)
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (1452:7): [True: 0, False: 0]
  ------------------
 1453|      0|  {
 1454|      0|    int opcode = _yr_parser_operator_to_opcode(op, EXPRESSION_TYPE_STRING);
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
 1455|       |
 1456|      0|    if (opcode != OP_ERROR)
  ------------------
  |  |   45|      0|#define OP_ERROR 0
  ------------------
  |  Branch (1456:9): [True: 0, False: 0]
  ------------------
 1457|      0|    {
 1458|      0|      FAIL_ON_ERROR(yr_parser_emit(yyscanner, opcode, NULL));
  ------------------
  |  |  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|  }
  ------------------
 1459|      0|    }
 1460|      0|    else
 1461|      0|    {
 1462|      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__);
  ------------------
 1463|      0|          compiler, "strings don't support \"%s\" operation", op);
 1464|       |
 1465|      0|      return ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 1466|      0|    }
 1467|      0|  }
 1468|      0|  else
 1469|      0|  {
 1470|      0|    yr_compiler_set_error_extra_info(compiler, "type mismatch");
  ------------------
  |  |  305|      0|  strlcpy(                                               \
  |  |  306|      0|      compiler->last_error_extra_info,                   \
  |  |  307|      0|      info,                                              \
  |  |  308|      0|      sizeof(compiler->last_error_extra_info));
  ------------------
 1471|       |
 1472|      0|    return ERROR_WRONG_TYPE;
  ------------------
  |  |   69|      0|#define ERROR_WRONG_TYPE                     24
  ------------------
 1473|      0|  }
 1474|       |
 1475|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
 1476|      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|}
parser.c:_yr_parser_operator_to_opcode:
 1347|      2|{
 1348|      2|  int opcode = 0;
 1349|       |
 1350|      2|  switch (expression_type)
 1351|      2|  {
 1352|      2|  case EXPRESSION_TYPE_INTEGER:
  ------------------
  |  |   47|      2|#define EXPRESSION_TYPE_INTEGER    2
  ------------------
  |  Branch (1352:3): [True: 2, False: 0]
  ------------------
 1353|      2|    opcode = OP_INT_BEGIN;
  ------------------
  |  |  141|      2|#define OP_INT_BEGIN 100
  ------------------
 1354|      2|    break;
 1355|      0|  case EXPRESSION_TYPE_FLOAT:
  ------------------
  |  |   51|      0|#define EXPRESSION_TYPE_FLOAT      32
  ------------------
  |  Branch (1355:3): [True: 0, False: 2]
  ------------------
 1356|      0|    opcode = OP_DBL_BEGIN;
  ------------------
  |  |  155|      0|#define OP_DBL_BEGIN 120
  ------------------
 1357|      0|    break;
 1358|      0|  case EXPRESSION_TYPE_STRING:
  ------------------
  |  |   48|      0|#define EXPRESSION_TYPE_STRING     4
  ------------------
  |  Branch (1358:3): [True: 0, False: 2]
  ------------------
 1359|      0|    opcode = OP_STR_BEGIN;
  ------------------
  |  |  169|      0|#define OP_STR_BEGIN 140
  ------------------
 1360|      0|    break;
 1361|      0|  default:
  ------------------
  |  Branch (1361:3): [True: 0, False: 2]
  ------------------
 1362|      0|    assert(false);
 1363|      2|  }
 1364|       |
 1365|      2|  if (op[0] == '<')
  ------------------
  |  Branch (1365:7): [True: 0, False: 2]
  ------------------
 1366|      0|  {
 1367|      0|    if (op[1] == '=')
  ------------------
  |  Branch (1367:9): [True: 0, False: 0]
  ------------------
 1368|      0|      opcode += _OP_LE;
  ------------------
  |  |  133|      0|#define _OP_LE    4
  ------------------
 1369|      0|    else
 1370|      0|      opcode += _OP_LT;
  ------------------
  |  |  131|      0|#define _OP_LT    2
  ------------------
 1371|      0|  }
 1372|      2|  else if (op[0] == '>')
  ------------------
  |  Branch (1372:12): [True: 0, False: 2]
  ------------------
 1373|      0|  {
 1374|      0|    if (op[1] == '=')
  ------------------
  |  Branch (1374:9): [True: 0, False: 0]
  ------------------
 1375|      0|      opcode += _OP_GE;
  ------------------
  |  |  134|      0|#define _OP_GE    5
  ------------------
 1376|      0|    else
 1377|      0|      opcode += _OP_GT;
  ------------------
  |  |  132|      0|#define _OP_GT    3
  ------------------
 1378|      0|  }
 1379|      2|  else if (op[1] == '=')
  ------------------
  |  Branch (1379:12): [True: 2, False: 0]
  ------------------
 1380|      2|  {
 1381|      2|    if (op[0] == '=')
  ------------------
  |  Branch (1381:9): [True: 2, False: 0]
  ------------------
 1382|      2|      opcode += _OP_EQ;
  ------------------
  |  |  129|      2|#define _OP_EQ    0
  ------------------
 1383|      0|    else
 1384|      0|      opcode += _OP_NEQ;
  ------------------
  |  |  130|      0|#define _OP_NEQ   1
  ------------------
 1385|      2|  }
 1386|      0|  else if (op[0] == '+')
  ------------------
  |  Branch (1386:12): [True: 0, False: 0]
  ------------------
 1387|      0|  {
 1388|      0|    opcode += _OP_ADD;
  ------------------
  |  |  135|      0|#define _OP_ADD   6
  ------------------
 1389|      0|  }
 1390|      0|  else if (op[0] == '-')
  ------------------
  |  Branch (1390:12): [True: 0, False: 0]
  ------------------
 1391|      0|  {
 1392|      0|    opcode += _OP_SUB;
  ------------------
  |  |  136|      0|#define _OP_SUB   7
  ------------------
 1393|      0|  }
 1394|      0|  else if (op[0] == '*')
  ------------------
  |  Branch (1394:12): [True: 0, False: 0]
  ------------------
 1395|      0|  {
 1396|      0|    opcode += _OP_MUL;
  ------------------
  |  |  137|      0|#define _OP_MUL   8
  ------------------
 1397|      0|  }
 1398|      0|  else if (op[0] == '\\')
  ------------------
  |  Branch (1398:12): [True: 0, False: 0]
  ------------------
 1399|      0|  {
 1400|      0|    opcode += _OP_DIV;
  ------------------
  |  |  138|      0|#define _OP_DIV   9
  ------------------
 1401|      0|  }
 1402|       |
 1403|      2|  if (IS_INT_OP(opcode) || IS_DBL_OP(opcode) || IS_STR_OP(opcode))
  ------------------
  |  |  178|      4|#define IS_INT_OP(x) ((x) >= OP_INT_BEGIN && (x) <= OP_INT_END)
  |  |  ------------------
  |  |  |  |  141|      4|#define OP_INT_BEGIN 100
  |  |  ------------------
  |  |               #define IS_INT_OP(x) ((x) >= OP_INT_BEGIN && (x) <= OP_INT_END)
  |  |  ------------------
  |  |  |  |  153|      2|#define OP_INT_END   OP_INT_MINUS
  |  |  |  |  ------------------
  |  |  |  |  |  |  152|      2|#define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  141|      2|#define OP_INT_BEGIN 100
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define OP_INT_MINUS (OP_INT_BEGIN + _OP_MINUS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  139|      2|#define _OP_MINUS 10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (178:23): [True: 2, False: 0]
  |  |  |  Branch (178:46): [True: 2, False: 0]
  |  |  ------------------
  ------------------
                if (IS_INT_OP(opcode) || IS_DBL_OP(opcode) || IS_STR_OP(opcode))
  ------------------
  |  |  179|      2|#define IS_DBL_OP(x) ((x) >= OP_DBL_BEGIN && (x) <= OP_DBL_END)
  |  |  ------------------
  |  |  |  |  155|      0|#define OP_DBL_BEGIN 120
  |  |  ------------------
  |  |               #define IS_DBL_OP(x) ((x) >= OP_DBL_BEGIN && (x) <= OP_DBL_END)
  |  |  ------------------
  |  |  |  |  167|      0|#define OP_DBL_END   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 (179:23): [True: 0, False: 0]
  |  |  |  Branch (179:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                if (IS_INT_OP(opcode) || IS_DBL_OP(opcode) || IS_STR_OP(opcode))
  ------------------
  |  |  180|      0|#define IS_STR_OP(x) ((x) >= OP_STR_BEGIN && (x) <= OP_STR_END)
  |  |  ------------------
  |  |  |  |  169|      0|#define OP_STR_BEGIN 140
  |  |  ------------------
  |  |               #define IS_STR_OP(x) ((x) >= OP_STR_BEGIN && (x) <= OP_STR_END)
  |  |  ------------------
  |  |  |  |  176|      0|#define OP_STR_END   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 (180:23): [True: 0, False: 0]
  |  |  |  Branch (180:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1404|      2|  {
 1405|      2|    return opcode;
 1406|      2|  }
 1407|       |
 1408|      0|  return OP_ERROR;
  ------------------
  |  |   45|      0|#define OP_ERROR 0
  ------------------
 1409|      2|}

yr_rules_scan_mem:
  204|    110|{
  205|    110|  YR_DEBUG_FPRINTF(
  206|    110|      2,
  207|    110|      stderr,
  208|    110|      "+ %s(buffer=%p buffer_size=%zu timeout=%d) {\n",
  209|    110|      __FUNCTION__,
  210|    110|      buffer,
  211|    110|      buffer_size,
  212|    110|      timeout);
  213|       |
  214|    110|  YR_SCANNER* scanner;
  215|    110|  int result = ERROR_INTERNAL_FATAL_ERROR;
  ------------------
  |  |   76|    110|#define ERROR_INTERNAL_FATAL_ERROR           31
  ------------------
  216|       |
  217|    110|  GOTO_EXIT_ON_ERROR(yr_scanner_create(rules, &scanner));
  ------------------
  |  |  114|    110|  {                              \
  |  |  115|    110|    result = (x);                \
  |  |  116|    110|    if (result != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (116:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  117|    110|      goto _exit;                \
  |  |  118|    110|  }
  ------------------
  218|       |
  219|    110|  yr_scanner_set_callback(scanner, callback, user_data);
  220|    110|  yr_scanner_set_timeout(scanner, timeout);
  221|    110|  yr_scanner_set_flags(scanner, flags);
  222|       |
  223|    110|  result = yr_scanner_scan_mem(scanner, buffer, buffer_size);
  224|       |
  225|    110|  yr_scanner_destroy(scanner);
  226|       |
  227|    110|_exit:
  228|       |
  229|    110|  YR_DEBUG_FPRINTF(
  230|    110|      2,
  231|    110|      stderr,
  232|    110|      ""
  233|    110|      "} = %d AKA %s // %s()\n",
  234|    110|      result,
  235|    110|      yr_debug_error_as_string(result),
  236|    110|      __FUNCTION__);
  237|       |
  238|    110|  return result;
  239|    110|}
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|      4|  for (int i = 0; i < new_rules->num_rules; i++)
  ------------------
  |  Branch (378:19): [True: 2, False: 2]
  ------------------
  379|      2|  {
  380|      2|    if (new_rules->rules_table[i].required_strings == 0)
  ------------------
  |  Branch (380:9): [True: 2, False: 0]
  ------------------
  381|      2|    {
  382|      2|      yr_bitmask_set(new_rules->rule_evaluate_condition_flags, i);
  ------------------
  |  |   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]
  |  |  ------------------
  ------------------
  383|      2|    }
  384|      2|  }
  385|       |
  386|      2|  *rules = new_rules;
  387|       |
  388|      2|  return ERROR_SUCCESS;
  ------------------
  |  |   40|      2|#define ERROR_SUCCESS 0
  ------------------
  389|      2|}

yr_scanner_create:
  240|    110|{
  241|    110|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  242|       |
  243|    110|  YR_EXTERNAL_VARIABLE* external;
  244|    110|  YR_SCANNER* new_scanner;
  245|       |
  246|    110|  new_scanner = (YR_SCANNER*) yr_calloc(1, sizeof(YR_SCANNER));
  247|       |
  248|    110|  if (new_scanner == NULL)
  ------------------
  |  Branch (248:7): [True: 0, False: 110]
  ------------------
  249|      0|    return ERROR_INSUFFICIENT_MEMORY;
  ------------------
  |  |   47|      0|#define ERROR_INSUFFICIENT_MEMORY            1
  ------------------
  250|       |
  251|    110|  FAIL_ON_ERROR_WITH_CLEANUP(
  ------------------
  |  |  140|    110|  {                                            \
  |  |  141|    110|    int __error = (x);                         \
  |  |  142|    110|    if (__error != ERROR_SUCCESS)              \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (142:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  143|    110|    {                                          \
  |  |  144|      0|      cleanup;                                 \
  |  |  145|      0|      return __error;                          \
  |  |  146|      0|    }                                          \
  |  |  147|    110|  }
  ------------------
  252|    110|      yr_hash_table_create(64, &new_scanner->objects_table),
  253|    110|      yr_free(new_scanner));
  254|       |
  255|    110|  new_scanner->rules = rules;
  256|    110|  new_scanner->entry_point = YR_UNDEFINED;
  ------------------
  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  257|    110|  new_scanner->file_size = YR_UNDEFINED;
  ------------------
  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  258|    110|  new_scanner->canary = rand();
  259|       |
  260|       |  // By default report both matching and non-matching rules.
  261|    110|  new_scanner->flags = SCAN_FLAGS_REPORT_RULES_MATCHING |
  ------------------
  |  |   41|    110|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  262|    110|                       SCAN_FLAGS_REPORT_RULES_NOT_MATCHING;
  ------------------
  |  |   42|    110|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  263|       |
  264|    110|  new_scanner->rule_matches_flags = (YR_BITMASK*) yr_calloc(
  265|    110|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  266|       |
  267|    110|  new_scanner->rule_evaluate_condition_flags = (YR_BITMASK*) yr_calloc(
  268|    110|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  269|       |
  270|    110|  new_scanner->ns_unsatisfied_flags = (YR_BITMASK*) yr_calloc(
  271|    110|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_namespaces));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  272|       |
  273|    110|  new_scanner->strings_temp_disabled = (YR_BITMASK*) yr_calloc(
  274|    110|      sizeof(YR_BITMASK), YR_BITMASK_SIZE(rules->num_strings));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  275|       |
  276|    110|  new_scanner->matches = (YR_MATCHES*) yr_calloc(
  277|    110|      rules->num_strings, sizeof(YR_MATCHES));
  278|       |
  279|    110|  new_scanner->unconfirmed_matches = (YR_MATCHES*) yr_calloc(
  280|    110|      rules->num_strings, sizeof(YR_MATCHES));
  281|       |
  282|    110|  if (new_scanner->rule_matches_flags == NULL ||
  ------------------
  |  Branch (282:7): [True: 0, False: 110]
  ------------------
  283|    110|      new_scanner->rule_evaluate_condition_flags == NULL ||
  ------------------
  |  Branch (283:7): [True: 0, False: 110]
  ------------------
  284|    110|      new_scanner->ns_unsatisfied_flags == NULL ||
  ------------------
  |  Branch (284:7): [True: 0, False: 110]
  ------------------
  285|    110|      new_scanner->strings_temp_disabled == NULL ||
  ------------------
  |  Branch (285:7): [True: 0, False: 110]
  ------------------
  286|    110|      new_scanner->matches == NULL ||  //
  ------------------
  |  Branch (286:7): [True: 0, False: 110]
  ------------------
  287|    110|      new_scanner->unconfirmed_matches == NULL)
  ------------------
  |  Branch (287:7): [True: 0, False: 110]
  ------------------
  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|    110|  new_scanner->profiling_info = NULL;
  304|    110|#endif
  305|       |
  306|    110|  external = rules->ext_vars_table;
  307|       |
  308|    110|  while (!EXTERNAL_VARIABLE_IS_NULL(external))
  ------------------
  |  |  152|    110|  ((x) != NULL ? (x)->type == EXTERNAL_VARIABLE_TYPE_NULL : true)
  |  |  ------------------
  |  |  |  |  144|    110|#define EXTERNAL_VARIABLE_TYPE_NULL          0
  |  |  ------------------
  |  |  |  Branch (152:4): [True: 110, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (308:10): [True: 0, False: 110]
  ------------------
  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|    110|  *scanner = new_scanner;
  331|       |
  332|    110|  return ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  333|    110|}
yr_scanner_destroy:
  336|    110|{
  337|    110|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  338|       |
  339|    110|  RE_FIBER* fiber = scanner->re_fiber_pool.fibers.head;
  340|       |
  341|    110|  while (fiber != NULL)
  ------------------
  |  Branch (341:10): [True: 0, False: 110]
  ------------------
  342|      0|  {
  343|      0|    RE_FIBER* next = fiber->next;
  344|      0|    yr_free(fiber);
  345|      0|    fiber = next;
  346|      0|  }
  347|       |
  348|    110|  RE_FAST_EXEC_POSITION* position = scanner->re_fast_exec_position_pool.head;
  349|       |
  350|    110|  while (position != NULL)
  ------------------
  |  Branch (350:10): [True: 0, False: 110]
  ------------------
  351|      0|  {
  352|      0|    RE_FAST_EXEC_POSITION* next = position->next;
  353|      0|    yr_free(position);
  354|      0|    position = next;
  355|      0|  }
  356|       |
  357|    110|  if (scanner->objects_table != NULL)
  ------------------
  |  Branch (357:7): [True: 110, False: 0]
  ------------------
  358|    110|  {
  359|    110|    yr_hash_table_destroy(
  360|    110|        scanner->objects_table,
  361|    110|        (YR_HASH_TABLE_FREE_VALUE_FUNC) yr_object_destroy);
  362|    110|  }
  363|       |
  364|       |#ifdef YR_PROFILING_ENABLED
  365|       |  yr_free(scanner->profiling_info);
  366|       |#endif
  367|       |
  368|    110|  yr_free(scanner->rule_matches_flags);
  369|    110|  yr_free(scanner->ns_unsatisfied_flags);
  370|    110|  yr_free(scanner->rule_evaluate_condition_flags);
  371|    110|  yr_free(scanner->strings_temp_disabled);
  372|    110|  yr_free(scanner->matches);
  373|    110|  yr_free(scanner->unconfirmed_matches);
  374|    110|  yr_free(scanner);
  375|    110|}
yr_scanner_set_callback:
  381|    110|{
  382|    110|  scanner->callback = callback;
  383|    110|  scanner->user_data = user_data;
  384|    110|}
yr_scanner_set_timeout:
  387|    110|{
  388|       |  // Convert timeout from seconds to nanoseconds.
  389|    110|  scanner->timeout = timeout * 1000000000ULL;
  390|    110|}
yr_scanner_set_flags:
  393|    110|{
  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|    110|  if (!(flags & SCAN_FLAGS_REPORT_RULES_MATCHING) &&
  ------------------
  |  |   41|    110|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  |  Branch (397:7): [True: 110, False: 0]
  ------------------
  398|    110|      !(flags & SCAN_FLAGS_REPORT_RULES_NOT_MATCHING))
  ------------------
  |  |   42|    110|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  |  Branch (398:7): [True: 110, False: 0]
  ------------------
  399|    110|  {
  400|    110|    flags |= SCAN_FLAGS_REPORT_RULES_MATCHING |
  ------------------
  |  |   41|    110|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  401|    110|             SCAN_FLAGS_REPORT_RULES_NOT_MATCHING;
  ------------------
  |  |   42|    110|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  402|    110|  }
  403|       |
  404|    110|  scanner->flags = flags;
  405|    110|}
yr_scanner_scan_mem_blocks:
  469|    110|{
  470|    110|  YR_DEBUG_FPRINTF(2, stderr, "+ %s() {\n", __FUNCTION__);
  471|       |
  472|    110|  YR_RULES* rules;
  473|    110|  YR_RULE* rule;
  474|    110|  YR_MEMORY_BLOCK* block;
  475|       |
  476|    110|  int i, result = ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  477|       |
  478|    110|  if (scanner->callback == NULL)
  ------------------
  |  Branch (478:7): [True: 0, False: 110]
  ------------------
  479|      0|  {
  480|      0|    result = ERROR_CALLBACK_REQUIRED;
  ------------------
  |  |   98|      0|#define ERROR_CALLBACK_REQUIRED              53
  ------------------
  481|      0|    goto _exit;
  482|      0|  }
  483|       |
  484|    110|  scanner->iterator = iterator;
  485|    110|  rules = scanner->rules;
  486|       |
  487|    110|  if (iterator->last_error == ERROR_BLOCK_NOT_READY)
  ------------------
  |  |  106|    110|#define ERROR_BLOCK_NOT_READY                61
  ------------------
  |  Branch (487:7): [True: 0, False: 110]
  ------------------
  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|    110|  else
  494|    110|  {
  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|    110|    uint32_t max_match_data;
  501|       |
  502|    110|    FAIL_ON_ERROR(
  ------------------
  |  |  132|    110|  {                               \
  |  |  133|    110|    int __error = (x);            \
  |  |  134|    110|    if (__error != ERROR_SUCCESS) \
  |  |  ------------------
  |  |  |  |   40|    110|#define ERROR_SUCCESS 0
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  135|    110|      return __error;             \
  |  |  136|    110|  }
  ------------------
  503|    110|        yr_get_configuration_uint32(YR_CONFIG_MAX_MATCH_DATA, &max_match_data));
  504|       |
  505|    110|    result = yr_notebook_create(
  506|    110|        1024 * (sizeof(YR_MATCH) + max_match_data), &scanner->matches_notebook);
  507|       |
  508|    110|    if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (508:9): [True: 0, False: 110]
  ------------------
  509|      0|      goto _exit;
  510|       |
  511|    110|    memcpy(
  512|    110|      scanner->rule_evaluate_condition_flags,
  513|    110|      scanner->rules->rule_evaluate_condition_flags,
  514|    110|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(rules->num_rules));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  515|       |
  516|    110|    yr_stopwatch_start(&scanner->stopwatch);
  517|       |
  518|    110|    block = iterator->first(iterator);
  519|    110|  }
  520|       |
  521|    220|  while (block != NULL)
  ------------------
  |  Branch (521:10): [True: 110, False: 110]
  ------------------
  522|    110|  {
  523|    110|    const uint8_t* data = block->fetch_data(block);
  524|       |
  525|       |    // fetch_data may fail and return NULL.
  526|    110|    if (data == NULL)
  ------------------
  |  Branch (526:9): [True: 0, False: 110]
  ------------------
  527|      0|    {
  528|      0|      block = iterator->next(iterator);
  529|      0|      continue;
  530|      0|    }
  531|       |
  532|    110|    if (scanner->entry_point == YR_UNDEFINED)
  ------------------
  |  |   38|    110|#define YR_UNDEFINED    0xFFFABADAFABADAFFLL
  ------------------
  |  Branch (532:9): [True: 110, False: 0]
  ------------------
  533|    110|    {
  534|    110|      YR_TRYCATCH(
  ------------------
  |  |  151|    110|  do                                                                  \
  |  |  152|    110|  {                                                                   \
  |  |  153|    110|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  154|    110|    {                                                                 \
  |  |  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|    110|    else                                                              \
  |  |  181|    110|    {                                                                 \
  |  |  182|    220|      _try_clause_                                                    \
  |  |  ------------------
  |  |  |  Branch (182:7): [True: 0, False: 110]
  |  |  ------------------
  |  |  183|    110|    }                                                                 \
  |  |  184|    110|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  535|    110|          !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  536|    110|          {
  537|    110|            if (scanner->flags & SCAN_FLAGS_PROCESS_MEMORY)
  538|    110|              scanner->entry_point = yr_get_entry_point_address(
  539|    110|                  data, block->size, block->base);
  540|    110|            else
  541|    110|              scanner->entry_point = yr_get_entry_point_offset(
  542|    110|                  data, block->size);
  543|    110|          },
  544|    110|          {});
  545|    110|    }
  546|       |
  547|    110|    YR_TRYCATCH(
  ------------------
  |  |  151|    110|  do                                                                  \
  |  |  152|    110|  {                                                                   \
  |  |  153|    110|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  154|    110|    {                                                                 \
  |  |  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|    110|    else                                                              \
  |  |  181|    110|    {                                                                 \
  |  |  182|    110|      _try_clause_                                                    \
  |  |  183|    110|    }                                                                 \
  |  |  184|    110|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  548|    110|        !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  549|    110|        { result = _yr_scanner_scan_mem_block(scanner, data, block); },
  550|    110|        { result = ERROR_COULD_NOT_MAP_FILE; });
  551|       |
  552|    110|    if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (552:9): [True: 0, False: 110]
  ------------------
  553|      0|      goto _exit;
  554|       |
  555|    110|    block = iterator->next(iterator);
  556|    110|  }
  557|       |
  558|    110|  result = iterator->last_error;
  559|       |
  560|    110|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (560:7): [True: 0, False: 110]
  ------------------
  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|    110|  if (iterator->file_size != NULL)
  ------------------
  |  Branch (565:7): [True: 110, False: 0]
  ------------------
  566|    110|    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|    110|  YR_TRYCATCH(
  ------------------
  |  |  151|    110|  do                                                                  \
  |  |  152|    110|  {                                                                   \
  |  |  153|    110|    if (_do_)                                                         \
  |  |  ------------------
  |  |  |  Branch (153:9): [True: 0, False: 110]
  |  |  ------------------
  |  |  154|    110|    {                                                                 \
  |  |  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|    110|    else                                                              \
  |  |  181|    110|    {                                                                 \
  |  |  182|    110|      _try_clause_                                                    \
  |  |  183|    110|    }                                                                 \
  |  |  184|    110|  } while (0)
  |  |  ------------------
  |  |  |  Branch (184:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  571|    110|      !(scanner->flags & SCAN_FLAGS_NO_TRYCATCH),
  572|    110|      { result = yr_execute_code(scanner); },
  573|    110|      { result = ERROR_COULD_NOT_MAP_FILE; });
  574|       |
  575|    110|  if (result != ERROR_SUCCESS)
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
  |  Branch (575:7): [True: 0, False: 110]
  ------------------
  576|      0|    goto _exit;
  577|       |
  578|    220|  for (i = 0, rule = rules->rules_table; !RULE_IS_NULL(rule); i++, rule++)
  ------------------
  |  |   61|    220|#define RULE_IS_NULL(x) (((x)->flags) & RULE_FLAGS_NULL)
  |  |  ------------------
  |  |  |  |   54|    220|#define RULE_FLAGS_NULL     0x04
  |  |  ------------------
  ------------------
  |  Branch (578:42): [True: 110, False: 110]
  ------------------
  579|    110|  {
  580|    110|    int message = 0;
  581|       |
  582|    110|    if (yr_bitmask_is_set(scanner->rule_matches_flags, i) &&
  ------------------
  |  |   75|    220|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  |  |  |  Branch (75:3): [True: 10, False: 100]
  |  |  ------------------
  ------------------
  583|    110|        yr_bitmask_is_not_set(scanner->ns_unsatisfied_flags, rule->ns->idx))
  ------------------
  |  |   77|     10|#define yr_bitmask_is_not_set(bm, i) (!yr_bitmask_is_set(bm, i))
  |  |  ------------------
  |  |  |  |   75|     10|  ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  |  |                 ((bm)[(i) / YR_BITMASK_SLOT_BITS] & (1UL << ((i) % YR_BITMASK_SLOT_BITS)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (77:38): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  584|     10|    {
  585|     10|      if (scanner->flags & SCAN_FLAGS_REPORT_RULES_MATCHING)
  ------------------
  |  |   41|     10|#define SCAN_FLAGS_REPORT_RULES_MATCHING     8
  ------------------
  |  Branch (585:11): [True: 10, False: 0]
  ------------------
  586|     10|        message = CALLBACK_MSG_RULE_MATCHING;
  ------------------
  |  |   38|     10|#define CALLBACK_MSG_RULE_MATCHING     1
  ------------------
  587|     10|    }
  588|    100|    else
  589|    100|    {
  590|    100|      if (scanner->flags & SCAN_FLAGS_REPORT_RULES_NOT_MATCHING)
  ------------------
  |  |   42|    100|#define SCAN_FLAGS_REPORT_RULES_NOT_MATCHING 16
  ------------------
  |  Branch (590:11): [True: 100, False: 0]
  ------------------
  591|    100|        message = CALLBACK_MSG_RULE_NOT_MATCHING;
  ------------------
  |  |   39|    100|#define CALLBACK_MSG_RULE_NOT_MATCHING 2
  ------------------
  592|    100|    }
  593|       |
  594|    110|    if (message != 0 && !RULE_IS_PRIVATE(rule))
  ------------------
  |  |   57|    110|#define RULE_IS_PRIVATE(x) (((x)->flags) & RULE_FLAGS_PRIVATE)
  |  |  ------------------
  |  |  |  |   52|    110|#define RULE_FLAGS_PRIVATE  0x01
  |  |  ------------------
  ------------------
  |  Branch (594:9): [True: 110, False: 0]
  |  Branch (594:25): [True: 110, False: 0]
  ------------------
  595|    110|    {
  596|    110|      switch (scanner->callback(scanner, message, rule, scanner->user_data))
  ------------------
  |  Branch (596:15): [True: 110, False: 0]
  ------------------
  597|    110|      {
  598|      0|      case CALLBACK_ABORT:
  ------------------
  |  |   48|      0|#define CALLBACK_ABORT    1
  ------------------
  |  Branch (598:7): [True: 0, False: 110]
  ------------------
  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: 110]
  ------------------
  603|      0|        result = ERROR_CALLBACK_ERROR;
  ------------------
  |  |   73|      0|#define ERROR_CALLBACK_ERROR                 28
  ------------------
  604|      0|        goto _exit;
  605|    110|      }
  606|    110|    }
  607|    110|  }
  608|       |
  609|    110|  scanner->callback(
  610|    110|      scanner, CALLBACK_MSG_SCAN_FINISHED, NULL, scanner->user_data);
  ------------------
  |  |   40|    110|#define CALLBACK_MSG_SCAN_FINISHED     3
  ------------------
  611|       |
  612|    110|_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|    110|  if (result != ERROR_BLOCK_NOT_READY)
  ------------------
  |  |  106|    110|#define ERROR_BLOCK_NOT_READY                61
  ------------------
  |  Branch (617:7): [True: 110, False: 0]
  ------------------
  618|    110|  {
  619|    110|    _yr_scanner_clean_matches(scanner);
  620|       |
  621|    110|    if (scanner->matches_notebook != NULL)
  ------------------
  |  Branch (621:9): [True: 110, False: 0]
  ------------------
  622|    110|    {
  623|    110|      yr_notebook_destroy(scanner->matches_notebook);
  624|    110|      scanner->matches_notebook = NULL;
  625|    110|    }
  626|    110|  }
  627|       |
  628|    110|  YR_DEBUG_FPRINTF(
  629|    110|      2,
  630|    110|      stderr,
  631|    110|      "} = %d AKA %s // %s()\n",
  632|    110|      result,
  633|    110|      yr_debug_error_as_string(result),
  634|    110|      __FUNCTION__);
  635|       |
  636|    110|  return result;
  637|    110|}
yr_scanner_scan_mem:
  691|    110|{
  692|    110|  YR_DEBUG_FPRINTF(
  693|    110|      2,
  694|    110|      stderr,
  695|    110|      "+ %s(buffer=%p buffer_size=%zu) {\n",
  696|    110|      __FUNCTION__,
  697|    110|      buffer,
  698|    110|      buffer_size);
  699|       |
  700|    110|  YR_MEMORY_BLOCK block;
  701|    110|  YR_MEMORY_BLOCK_ITERATOR iterator;
  702|    110|  int result;
  703|       |
  704|    110|  block.size = buffer_size;
  705|    110|  block.base = 0;
  706|    110|  block.fetch_data = _yr_fetch_block_data;
  707|    110|  block.context = (void*) buffer;
  708|       |
  709|    110|  iterator.context = &block;
  710|    110|  iterator.first = _yr_get_first_block;
  711|    110|  iterator.next = _yr_get_next_block;
  712|    110|  iterator.file_size = _yr_get_file_size;
  713|    110|  iterator.last_error = ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#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|    110|  if (scanner->rules->ac_match_table[YR_AC_ROOT_STATE] != 0 && buffer_size > YR_FILE_SIZE_THRESHOLD)
  ------------------
  |  |   45|    110|#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: 110]
  |  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|    110|  result = yr_scanner_scan_mem_blocks(scanner, &iterator);
  729|       |
  730|    110|  YR_DEBUG_FPRINTF(
  731|    110|      2,
  732|    110|      stderr,
  733|    110|      "} = %d AKA %s // %s()\n",
  734|    110|      result,
  735|    110|      yr_debug_error_as_string(result),
  736|    110|      __FUNCTION__);
  737|       |
  738|    110|  return result;
  739|    110|}
scanner.c:_yr_scanner_scan_mem_block:
   49|    110|{
   50|    110|  YR_DEBUG_FPRINTF(
   51|    110|      2,
   52|    110|      stderr,
   53|    110|      "+ %s(block_data=%p block->base=0x%" PRIx64 " block->size=%zu) {\n",
   54|    110|      __FUNCTION__,
   55|    110|      block_data,
   56|    110|      block->base,
   57|    110|      block->size);
   58|       |
   59|    110|  int result = ERROR_SUCCESS;
  ------------------
  |  |   40|    110|#define ERROR_SUCCESS 0
  ------------------
   60|       |
   61|    110|  YR_RULES* rules = scanner->rules;
   62|    110|  YR_AC_TRANSITION* transition_table = rules->ac_transition_table;
   63|    110|  uint32_t* match_table = rules->ac_match_table;
   64|       |
   65|    110|  YR_AC_MATCH* match;
   66|    110|  YR_AC_TRANSITION transition;
   67|       |
   68|    110|  size_t i = 0;
   69|    110|  uint32_t state = YR_AC_ROOT_STATE;
  ------------------
  |  |   45|    110|#define YR_AC_ROOT_STATE               0
  ------------------
   70|    110|  uint16_t index;
   71|    110|  YR_STRING* report_string = NULL;
   72|    110|  YR_RULE* rule = NULL;
   73|       |
   74|  76.2M|  while (i < block->size)
  ------------------
  |  Branch (74:10): [True: 76.2M, False: 110]
  ------------------
   75|  76.2M|  {
   76|  76.2M|    if (i % 4096 == 0 && scanner->timeout > 0)
  ------------------
  |  Branch (76:9): [True: 18.6k, False: 76.2M]
  |  Branch (76:26): [True: 0, False: 18.6k]
  ------------------
   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|  76.2M|    if (match_table[state] != 0)
  ------------------
  |  Branch (100:9): [True: 0, False: 76.2M]
  ------------------
  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|  76.2M|    index = block_data[i++] + 1;
  135|  76.2M|    transition = transition_table[state + index];
  136|       |
  137|  76.2M|    while (YR_AC_INVALID_TRANSITION(transition, index))
  ------------------
  |  |   47|  76.2M|#define YR_AC_INVALID_TRANSITION(t, c) (((t) &0x1FF) != c)
  |  |  ------------------
  |  |  |  Branch (47:40): [True: 76.2M, False: 0]
  |  |  ------------------
  ------------------
  138|  76.2M|    {
  139|  76.2M|      if (state != YR_AC_ROOT_STATE)
  ------------------
  |  |   45|  76.2M|#define YR_AC_ROOT_STATE               0
  ------------------
  |  Branch (139:11): [True: 0, False: 76.2M]
  ------------------
  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|  76.2M|      else
  145|  76.2M|      {
  146|  76.2M|        transition = 0;
  147|  76.2M|        break;
  148|  76.2M|      }
  149|  76.2M|    }
  150|       |
  151|  76.2M|    state = YR_AC_NEXT_STATE(transition);
  ------------------
  |  |   46|  76.2M|#define YR_AC_NEXT_STATE(t)            (t >> YR_AC_SLOT_OFFSET_BITS)
  |  |  ------------------
  |  |  |  |   39|  76.2M|#define YR_AC_SLOT_OFFSET_BITS 9
  |  |  ------------------
  ------------------
  152|  76.2M|  }
  153|       |
  154|    110|  if (match_table[state] != 0)
  ------------------
  |  Branch (154:7): [True: 0, False: 110]
  ------------------
  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|    110|  if (rule != NULL &&
  ------------------
  |  Branch (175:7): [True: 0, False: 110]
  ------------------
  176|    110|      scanner->matches->count >= YR_SLOW_STRING_MATCHES &&
  ------------------
  |  |  120|    110|#define YR_SLOW_STRING_MATCHES 600000
  ------------------
  |  Branch (176:7): [True: 0, False: 0]
  ------------------
  177|    110|      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|    110|_exit:
  195|       |
  196|    110|  YR_DEBUG_FPRINTF(
  197|    110|      2,
  198|    110|      stderr,
  199|    110|      "} = %d AKA %s // %s()\n",
  200|    110|      result,
  201|    110|      yr_debug_error_as_string(result),
  202|    110|      __FUNCTION__);
  203|       |
  204|    110|  return result;
  205|    110|}
scanner.c:_yr_scanner_clean_matches:
  208|    110|{
  209|    110|  YR_DEBUG_FPRINTF(2, stderr, "- %s() {} \n", __FUNCTION__);
  210|       |
  211|    110|  memset(
  212|    110|      scanner->rule_matches_flags,
  213|    110|      0,
  214|    110|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_rules));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  215|       |
  216|    110|  memset(
  217|    110|      scanner->rule_evaluate_condition_flags,
  218|    110|      0,
  219|    110|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_rules));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  220|       |
  221|    110|  memset(
  222|    110|      scanner->ns_unsatisfied_flags,
  223|    110|      0,
  224|    110|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_namespaces));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  225|       |
  226|    110|  memset(
  227|    110|      scanner->strings_temp_disabled,
  228|    110|      0,
  229|    110|      sizeof(YR_BITMASK) * YR_BITMASK_SIZE(scanner->rules->num_strings));
  ------------------
  |  |   57|    110|#define YR_BITMASK_SIZE(n)   (((n) / (YR_BITMASK_SLOT_BITS)) + 1)
  |  |  ------------------
  |  |  |  |   56|    110|#define YR_BITMASK_SLOT_BITS (sizeof(YR_BITMASK) * 8)
  |  |  ------------------
  ------------------
  230|       |
  231|    110|  memset(scanner->matches, 0, sizeof(YR_MATCHES) * scanner->rules->num_strings);
  232|       |
  233|    110|  memset(
  234|    110|      scanner->unconfirmed_matches,
  235|    110|      0,
  236|    110|      sizeof(YR_MATCHES) * scanner->rules->num_strings);
  237|    110|}
scanner.c:_yr_fetch_block_data:
  683|    220|{
  684|    220|  return (const uint8_t*) block->context;
  685|    220|}
scanner.c:_yr_get_first_block:
  640|    220|{
  641|    220|  YR_MEMORY_BLOCK* result = (YR_MEMORY_BLOCK*) iterator->context;
  642|       |
  643|    220|  YR_DEBUG_FPRINTF(
  644|    220|      2,
  645|    220|      stderr,
  646|    220|      "- %s() {} = %p // default iterator; single memory block, blocking\n",
  647|    220|      __FUNCTION__,
  648|    220|      result);
  649|       |
  650|    220|  return result;
  651|    220|}
scanner.c:_yr_get_next_block:
  654|    112|{
  655|    112|  YR_MEMORY_BLOCK* result = NULL;
  656|       |
  657|    112|  YR_DEBUG_FPRINTF(
  658|    112|      2,
  659|    112|      stderr,
  660|    112|      "- %s() {} = %p // default iterator; single memory block, blocking\n",
  661|    112|      __FUNCTION__,
  662|    112|      result);
  663|       |
  664|    112|  return result;
  665|    112|}
scanner.c:_yr_get_file_size:
  668|    110|{
  669|    110|  uint64_t file_size = ((YR_MEMORY_BLOCK*) iterator->context)->size;
  670|       |
  671|    110|  YR_DEBUG_FPRINTF(
  672|    110|      2,
  673|    110|      stderr,
  674|    110|      "- %s() {} = %" PRIu64
  675|    110|      "  // default iterator; single memory block, blocking\n",
  676|    110|      __FUNCTION__,
  677|    110|      file_size);
  678|       |
  679|    110|  return file_size;
  680|    110|}

ss_new:
  216|    226|{
  217|    226|  SIZED_STRING* result;
  218|       |
  219|    226|  size_t length = strlen(s);
  220|       |
  221|    226|  result = (SIZED_STRING*) yr_malloc(sizeof(SIZED_STRING) + length);
  222|       |
  223|    226|  if (result == NULL)
  ------------------
  |  Branch (223:7): [True: 0, False: 226]
  ------------------
  224|      0|    return NULL;
  225|       |
  226|    226|  result->length = (uint32_t) length;
  227|    226|  result->flags = 0;
  228|       |
  229|       |  // Copy the string and the null terminator.
  230|    226|  strcpy(result->c_string, s);
  231|       |
  232|    226|  return result;
  233|    226|}

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

strlcpy:
   91|      2|{
   92|      2|  register char* d = dst;
   93|      2|  register const char* s = src;
   94|      2|  register size_t n = size;
   95|       |
   96|       |  // Copy as many bytes as will fit
   97|       |
   98|      2|  if (n != 0 && --n != 0)
  ------------------
  |  Branch (98:7): [True: 2, False: 0]
  |  Branch (98:17): [True: 2, False: 0]
  ------------------
   99|      2|  {
  100|      2|    do
  101|      4|    {
  102|      4|      if ((*d++ = *s++) == 0)
  ------------------
  |  Branch (102:11): [True: 2, False: 2]
  ------------------
  103|      2|        break;
  104|       |
  105|      4|    } while (--n != 0);
  ------------------
  |  Branch (105:14): [True: 2, False: 0]
  ------------------
  106|      2|  }
  107|       |
  108|       |  // Not enough room in dst, add NUL and traverse rest of src
  109|       |
  110|      2|  if (n == 0)
  ------------------
  |  Branch (110:7): [True: 0, False: 2]
  ------------------
  111|      0|  {
  112|      0|    if (size != 0)
  ------------------
  |  Branch (112:9): [True: 0, False: 0]
  ------------------
  113|      0|      *d = '\0';  // NULL-terminate dst
  114|       |
  115|      0|    while (*s++)
  ------------------
  |  Branch (115:12): [True: 0, False: 0]
  ------------------
  116|      0|      ;
  117|      0|  }
  118|       |
  119|      2|  return (s - src - 1);  // count does not include NULL
  120|      2|}
strnlen_w:
  158|    438|{
  159|    438|  int len = 0;
  160|       |
  161|  86.0k|  while (w_str[0] || w_str[1])
  ------------------
  |  Branch (161:10): [True: 51.1k, False: 34.9k]
  |  Branch (161:22): [True: 34.5k, False: 438]
  ------------------
  162|  85.6k|  {
  163|  85.6k|    w_str += 2;
  164|  85.6k|    len += 1;
  165|  85.6k|  }
  166|       |
  167|    438|  return len;
  168|    438|}
strcmp_w:
  171|    358|{
  172|    909|  while (*str != 0 && w_str[0] == *str && w_str[1] == 0)
  ------------------
  |  Branch (172:10): [True: 871, False: 38]
  |  Branch (172:23): [True: 551, False: 320]
  |  Branch (172:43): [True: 551, False: 0]
  ------------------
  173|    551|  {
  174|    551|    w_str += 2;
  175|    551|    str += 1;
  176|    551|  }
  177|       |
  178|       |  // Higher-order byte of wide char non-zero? -> w_str is larger than str
  179|       |
  180|    358|  if (w_str[1] != 0)
  ------------------
  |  Branch (180:7): [True: 98, False: 260]
  ------------------
  181|     98|    return 1;
  182|       |
  183|    260|  return w_str[0] - *str;
  184|    358|}
strlcpy_w:
  187|    500|{
  188|    500|  register char* d = dst;
  189|    500|  register const char* s = w_src;
  190|       |
  191|  17.6k|  while (n > 1 && *s != 0)
  ------------------
  |  Branch (191:10): [True: 17.6k, False: 5]
  |  Branch (191:19): [True: 17.1k, False: 495]
  ------------------
  192|  17.1k|  {
  193|  17.1k|    *d = *s;
  194|  17.1k|    d += 1;
  195|  17.1k|    n -= 1;
  196|  17.1k|    s += 2;
  197|  17.1k|  }
  198|       |
  199|  1.06k|  while (*s) s += 2;
  ------------------
  |  Branch (199:10): [True: 563, False: 500]
  ------------------
  200|       |
  201|    500|  *d = '\0';
  202|       |
  203|    500|  return (s - w_src) / 2;
  204|    500|}

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:
   44|      2|{
   45|      2|  YR_COMPILER* compiler;
   46|       |
   47|      2|  if (yr_initialize() != ERROR_SUCCESS)
  ------------------
  |  Branch (47:7): [True: 0, False: 2]
  ------------------
   48|      0|    return 0;
   49|       |
   50|      2|  if (yr_compiler_create(&compiler) != ERROR_SUCCESS)
  ------------------
  |  Branch (50:7): [True: 0, False: 2]
  ------------------
   51|      0|    return 0;
   52|       |
   53|      2|  if (yr_compiler_add_string(compiler, RULES, NULL) == 0)
  ------------------
  |  Branch (53:7): [True: 2, False: 0]
  ------------------
   54|      2|    yr_compiler_get_rules(compiler, &rules);
   55|       |
   56|      2|  yr_compiler_destroy(compiler);
   57|       |
   58|      2|  return 0;
   59|      2|}
_Z8callbackP15YR_SCAN_CONTEXTiPvS1_:
   67|    440|{
   68|    440|  return CALLBACK_CONTINUE;
   69|    440|}
LLVMFuzzerTestOneInput:
   73|    110|{
   74|    110|  if (rules == NULL)
  ------------------
  |  Branch (74:7): [True: 0, False: 110]
  ------------------
   75|      0|    return 0;
   76|       |
   77|    110|  yr_rules_scan_mem(
   78|    110|      rules, data, size, SCAN_FLAGS_NO_TRYCATCH, callback, NULL, 0);
   79|       |
   80|    110|  return 0;
   81|    110|}

