ofp-protocol.c:ds_put_char:
   94|  5.99k|{
   95|  5.99k|    if (ds->length < ds->allocated) {
  ------------------
  |  Branch (95:9): [True: 4.71k, False: 1.27k]
  ------------------
   96|  4.71k|        ds->string[ds->length++] = c;
   97|  4.71k|        ds->string[ds->length] = '\0';
   98|  4.71k|    } else {
   99|  1.27k|        ds_put_char__(ds, c);
  100|  1.27k|    }
  101|  5.99k|}
dynamic-string.c:ds_put_char:
   94|  66.4k|{
   95|  66.4k|    if (ds->length < ds->allocated) {
  ------------------
  |  Branch (95:9): [True: 66.4k, False: 0]
  ------------------
   96|  66.4k|        ds->string[ds->length++] = c;
   97|  66.4k|        ds->string[ds->length] = '\0';
   98|  66.4k|    } else {
   99|      0|        ds_put_char__(ds, c);
  100|      0|    }
  101|  66.4k|}
flow.c:ds_put_char:
   94|     66|{
   95|     66|    if (ds->length < ds->allocated) {
  ------------------
  |  Branch (95:9): [True: 66, False: 0]
  ------------------
   96|     66|        ds->string[ds->length++] = c;
   97|     66|        ds->string[ds->length] = '\0';
   98|     66|    } else {
   99|      0|        ds_put_char__(ds, c);
  100|      0|    }
  101|     66|}
json.c:ds_put_char:
   94|  14.0M|{
   95|  14.0M|    if (ds->length < ds->allocated) {
  ------------------
  |  Branch (95:9): [True: 14.0M, False: 0]
  ------------------
   96|  14.0M|        ds->string[ds->length++] = c;
   97|  14.0M|        ds->string[ds->length] = '\0';
   98|  14.0M|    } else {
   99|      0|        ds_put_char__(ds, c);
  100|      0|    }
  101|  14.0M|}

ofp-msgs.c:hmap_insert_at:
  306|  1.46k|{
  307|  1.46k|    hmap_insert_fast(hmap, node, hash);
  308|  1.46k|    if (hmap->n / 2 > hmap->mask) {
  ------------------
  |  Branch (308:9): [True: 9, False: 1.45k]
  ------------------
  309|      9|        hmap_expand_at(hmap, where);
  310|      9|    }
  311|  1.46k|}
ofp-msgs.c:hmap_insert_fast:
  289|  1.46k|{
  290|  1.46k|    struct hmap_node **bucket = &hmap->buckets[hash & hmap->mask];
  291|  1.46k|    node->hash = hash;
  292|  1.46k|    node->next = *bucket;
  293|  1.46k|    *bucket = node;
  294|  1.46k|    hmap->n++;
  295|  1.46k|}
hmap.c:hmap_insert_fast:
  289|  3.29k|{
  290|  3.29k|    struct hmap_node **bucket = &hmap->buckets[hash & hmap->mask];
  291|  3.29k|    node->hash = hash;
  292|  3.29k|    node->next = *bucket;
  293|  3.29k|    *bucket = node;
  294|  3.29k|    hmap->n++;
  295|  3.29k|}
nx-match.c:hmap_insert_at:
  306|    474|{
  307|    474|    hmap_insert_fast(hmap, node, hash);
  308|    474|    if (hmap->n / 2 > hmap->mask) {
  ------------------
  |  Branch (308:9): [True: 12, False: 462]
  ------------------
  309|     12|        hmap_expand_at(hmap, where);
  310|     12|    }
  311|    474|}
nx-match.c:hmap_insert_fast:
  289|    474|{
  290|    474|    struct hmap_node **bucket = &hmap->buckets[hash & hmap->mask];
  291|    474|    node->hash = hash;
  292|    474|    node->next = *bucket;
  293|    474|    *bucket = node;
  294|    474|    hmap->n++;
  295|    474|}
nx-match.c:hmap_first_with_hash:
  359|   192k|{
  360|   192k|    return hmap_next_with_hash__(hmap->buckets[hash & hmap->mask], hash);
  361|   192k|}
nx-match.c:hmap_next_with_hash__:
  348|   192k|{
  349|   538k|    while (node != NULL && node->hash != hash) {
  ------------------
  |  Branch (349:12): [True: 348k, False: 189k]
  |  Branch (349:28): [True: 345k, False: 2.90k]
  ------------------
  350|   345k|        node = node->next;
  351|   345k|    }
  352|   192k|    return CONST_CAST(struct hmap_node *, node);
  ------------------
  |  |   85|   192k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|   192k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|   192k|     (TYPE) (POINTER))
  ------------------
  353|   192k|}
nx-match.c:hmap_next_with_hash:
  395|    405|{
  396|    405|    return hmap_next_with_hash__(node->next, node->hash);
  397|    405|}
ofp-actions.c:hmap_first_with_hash:
  359|   334k|{
  360|   334k|    return hmap_next_with_hash__(hmap->buckets[hash & hmap->mask], hash);
  361|   334k|}
ofp-actions.c:hmap_next_with_hash__:
  348|   334k|{
  349|   627k|    while (node != NULL && node->hash != hash) {
  ------------------
  |  Branch (349:12): [True: 627k, False: 0]
  |  Branch (349:28): [True: 292k, False: 334k]
  ------------------
  350|   292k|        node = node->next;
  351|   292k|    }
  352|   334k|    return CONST_CAST(struct hmap_node *, node);
  ------------------
  |  |   85|   334k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|   334k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|   334k|     (TYPE) (POINTER))
  ------------------
  353|   334k|}
ofp-actions.c:hmap_insert_at:
  306|    384|{
  307|    384|    hmap_insert_fast(hmap, node, hash);
  308|    384|    if (hmap->n / 2 > hmap->mask) {
  ------------------
  |  Branch (308:9): [True: 7, False: 377]
  ------------------
  309|      7|        hmap_expand_at(hmap, where);
  310|      7|    }
  311|    384|}
ofp-actions.c:hmap_insert_fast:
  289|    384|{
  290|    384|    struct hmap_node **bucket = &hmap->buckets[hash & hmap->mask];
  291|    384|    node->hash = hash;
  292|    384|    node->next = *bucket;
  293|    384|    *bucket = node;
  294|    384|    hmap->n++;
  295|    384|}
shash.c:hmap_insert_at:
  306|    228|{
  307|    228|    hmap_insert_fast(hmap, node, hash);
  308|    228|    if (hmap->n / 2 > hmap->mask) {
  ------------------
  |  Branch (308:9): [True: 6, False: 222]
  ------------------
  309|      6|        hmap_expand_at(hmap, where);
  310|      6|    }
  311|    228|}
shash.c:hmap_insert_fast:
  289|    228|{
  290|    228|    struct hmap_node **bucket = &hmap->buckets[hash & hmap->mask];
  291|    228|    node->hash = hash;
  292|    228|    node->next = *bucket;
  293|    228|    *bucket = node;
  294|    228|    hmap->n++;
  295|    228|}
shash.c:hmap_first_with_hash:
  359|   401k|{
  360|   401k|    return hmap_next_with_hash__(hmap->buckets[hash & hmap->mask], hash);
  361|   401k|}
shash.c:hmap_next_with_hash__:
  348|   402k|{
  349|   948k|    while (node != NULL && node->hash != hash) {
  ------------------
  |  Branch (349:12): [True: 811k, False: 137k]
  |  Branch (349:28): [True: 546k, False: 264k]
  ------------------
  350|   546k|        node = node->next;
  351|   546k|    }
  352|   402k|    return CONST_CAST(struct hmap_node *, node);
  ------------------
  |  |   85|   402k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|   402k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|   402k|     (TYPE) (POINTER))
  ------------------
  353|   402k|}
shash.c:hmap_next_with_hash:
  395|    283|{
  396|    283|    return hmap_next_with_hash__(node->next, node->hash);
  397|    283|}

ofpbuf.c:ovs_list_poison:
  157|  26.2k|{
  158|  26.2k|    *list = OVS_LIST_POISON;
  159|  26.2k|}
vlog.c:ovs_list_insert:
  164|    182|{
  165|    182|    elem->prev = before->prev;
  166|    182|    elem->next = before;
  167|    182|    before->prev->next = elem;
  168|    182|    before->prev = elem;
  169|    182|}
nx-match.c:ovs_list_init:
  149|    211|{
  150|    211|    list->next = list->prev = list;
  151|    211|}
nx-match.c:ovs_list_push_back:
  204|    237|{
  205|    237|    ovs_list_insert(list, elem);
  206|    237|}
nx-match.c:ovs_list_insert:
  164|    237|{
  165|    237|    elem->prev = before->prev;
  166|    237|    elem->next = before;
  167|    237|    before->prev->next = elem;
  168|    237|    before->prev = elem;
  169|    237|}

nx-match.c:mf_from_id:
 2363|  5.85k|{
 2364|  5.85k|    extern const struct mf_field mf_fields[MFF_N_IDS];
 2365|  5.85k|    ovs_assert((unsigned int) id < MFF_N_IDS);
  ------------------
  |  |   62|  5.85k|#define ovs_assert ovs_ignore
  ------------------
 2366|  5.85k|    return &mf_fields[id];
 2367|  5.85k|}
ofp-actions.c:mf_from_id:
 2363|  12.8k|{
 2364|  12.8k|    extern const struct mf_field mf_fields[MFF_N_IDS];
 2365|  12.8k|    ovs_assert((unsigned int) id < MFF_N_IDS);
  ------------------
  |  |   62|  12.8k|#define ovs_assert ovs_ignore
  ------------------
 2366|  12.8k|    return &mf_fields[id];
 2367|  12.8k|}

meta-flow.c:nsh_path_hdr_to_spi:
  346|  2.48k|{
  347|  2.48k|    uint32_t hv = (ntohl(path_hdr) & NSH_SPI_MASK) >> NSH_SPI_SHIFT;
  ------------------
  |  |  238|  2.48k|#define NSH_SPI_MASK       0xffffff00
  ------------------
                  uint32_t hv = (ntohl(path_hdr) & NSH_SPI_MASK) >> NSH_SPI_SHIFT;
  ------------------
  |  |  239|  2.48k|#define NSH_SPI_SHIFT      8
  ------------------
  348|       |    return htonl(hv);
  349|  2.48k|}
meta-flow.c:nsh_path_hdr_to_si:
  359|  1.05k|{
  360|  1.05k|    return (ntohl(path_hdr) & NSH_SI_MASK) >> NSH_SI_SHIFT;
  ------------------
  |  |  240|  1.05k|#define NSH_SI_MASK        0x000000ff
  ------------------
                  return (ntohl(path_hdr) & NSH_SI_MASK) >> NSH_SI_SHIFT;
  ------------------
  |  |  241|  1.05k|#define NSH_SI_SHIFT       0
  ------------------
  361|  1.05k|}
meta-flow.c:nsh_path_hdr_set_spi:
  395|  2.14k|{
  396|  2.14k|    uint32_t hvph  = ntohl(*path_hdr);
  397|  2.14k|    uint32_t hvspi = ntohl(spi);
  398|       |    *path_hdr = htonl(( hvph & ~NSH_SPI_MASK) |
  399|  2.14k|                      ((hvspi << NSH_SPI_SHIFT) & NSH_SPI_MASK));
  400|  2.14k|}
meta-flow.c:nsh_path_hdr_set_si:
  404|  1.34k|{
  405|  1.34k|    uint32_t hvph  = ntohl(*path_hdr);
  406|       |    *path_hdr = htonl((hvph & ~NSH_SI_MASK) |
  407|  1.34k|                      ((si << NSH_SI_SHIFT) & NSH_SI_MASK));
  408|  1.34k|}
nx-match.c:nsh_path_hdr_to_spi:
  346|  9.05k|{
  347|  9.05k|    uint32_t hv = (ntohl(path_hdr) & NSH_SPI_MASK) >> NSH_SPI_SHIFT;
  ------------------
  |  |  238|  9.05k|#define NSH_SPI_MASK       0xffffff00
  ------------------
                  uint32_t hv = (ntohl(path_hdr) & NSH_SPI_MASK) >> NSH_SPI_SHIFT;
  ------------------
  |  |  239|  9.05k|#define NSH_SPI_SHIFT      8
  ------------------
  348|       |    return htonl(hv);
  349|  9.05k|}
nx-match.c:nsh_path_hdr_to_si:
  359|  9.05k|{
  360|  9.05k|    return (ntohl(path_hdr) & NSH_SI_MASK) >> NSH_SI_SHIFT;
  ------------------
  |  |  240|  9.05k|#define NSH_SI_MASK        0x000000ff
  ------------------
                  return (ntohl(path_hdr) & NSH_SI_MASK) >> NSH_SI_SHIFT;
  ------------------
  |  |  241|  9.05k|#define NSH_SI_SHIFT       0
  ------------------
  361|  9.05k|}

ofp-actions.c:ofpact_next:
  212|   820k|{
  213|   820k|    return ALIGNED_CAST(struct ofpact *,
  ------------------
  |  |  434|   820k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  214|   820k|                        (uint8_t *) ofpact + OFPACT_ALIGN(ofpact->len));
  215|   820k|}
ofp-actions.c:ofpact_get_CLONE:
 1289|  13.2k|    {                                                                   \
 1290|  13.2k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  13.2k|#define ovs_assert ovs_ignore
  ------------------
 1291|  13.2k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  13.2k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  13.2k|    }                                                                   \
ofp-actions.c:ofpact_get_CT:
 1289|  14.8k|    {                                                                   \
 1290|  14.8k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  14.8k|#define ovs_assert ovs_ignore
  ------------------
 1291|  14.8k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  14.8k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  14.8k|    }                                                                   \
ofp-actions.c:ofpact_get_WRITE_ACTIONS:
 1289|    114|    {                                                                   \
 1290|    114|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    114|#define ovs_assert ovs_ignore
  ------------------
 1291|    114|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    114|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    114|    }                                                                   \
ofp-actions.c:ofpact_put_SET_FIELD:
 1303|  47.8k|    {                                                                   \
 1304|  47.8k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  47.8k|                                            sizeof(struct STRUCT));     \
 1306|  47.8k|    }                                                                   \
ofp-actions.c:ofpact_finish_SET_FIELD:
 1317|  47.8k|    {                                                                   \
 1318|  47.8k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  47.8k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  47.8k|#define ovs_assert ovs_ignore
  ------------------
 1320|  47.8k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  47.8k|    }
ofp-actions.c:ofpact_end:
  221|   755k|{
  222|   755k|    return ofpacts
  ------------------
  |  Branch (222:12): [True: 752k, False: 3.91k]
  ------------------
  223|   755k|           ? ALIGNED_CAST(struct ofpact *, (uint8_t *) ofpacts + ofpacts_len)
  ------------------
  |  |  434|   752k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  224|       |           : NULL;
  225|   755k|}
ofp-actions.c:ofpact_put_METER:
 1303|    581|    {                                                                   \
 1304|    581|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    581|                                            sizeof(struct STRUCT));     \
 1306|    581|    }                                                                   \
ofp-actions.c:ofpact_put_OUTPUT:
 1303|   132k|    {                                                                   \
 1304|   132k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|   132k|                                            sizeof(struct STRUCT));     \
 1306|   132k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_VLAN_VID:
 1303|  1.99k|    {                                                                   \
 1304|  1.99k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.99k|                                            sizeof(struct STRUCT));     \
 1306|  1.99k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_VLAN_PCP:
 1303|  1.63k|    {                                                                   \
 1304|  1.63k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.63k|                                            sizeof(struct STRUCT));     \
 1306|  1.63k|    }                                                                   \
ofp-actions.c:ofpact_put_PUSH_VLAN:
 1303|  1.40k|    {                                                                   \
 1304|  1.40k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.40k|                                            sizeof(struct STRUCT));     \
 1306|  1.40k|    }                                                                   \
ofp-actions.c:ofpact_put_STRIP_VLAN:
 1303|  2.41k|    {                                                                   \
 1304|  2.41k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.41k|                                            sizeof(struct STRUCT));     \
 1306|  2.41k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_ETH_SRC:
 1303|    396|    {                                                                   \
 1304|    396|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    396|                                            sizeof(struct STRUCT));     \
 1306|    396|    }                                                                   \
ofp-actions.c:ofpact_put_SET_ETH_DST:
 1303|    407|    {                                                                   \
 1304|    407|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    407|                                            sizeof(struct STRUCT));     \
 1306|    407|    }                                                                   \
ofp-actions.c:ofpact_put_SET_IPV4_SRC:
 1303|  1.00k|    {                                                                   \
 1304|  1.00k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.00k|                                            sizeof(struct STRUCT));     \
 1306|  1.00k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_IPV4_DST:
 1303|    767|    {                                                                   \
 1304|    767|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    767|                                            sizeof(struct STRUCT));     \
 1306|    767|    }                                                                   \
ofp-actions.c:ofpact_put_SET_IP_DSCP:
 1303|  1.41k|    {                                                                   \
 1304|  1.41k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.41k|                                            sizeof(struct STRUCT));     \
 1306|  1.41k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_IP_ECN:
 1303|  1.57k|    {                                                                   \
 1304|  1.57k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.57k|                                            sizeof(struct STRUCT));     \
 1306|  1.57k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_L4_SRC_PORT:
 1303|  2.80k|    {                                                                   \
 1304|  2.80k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.80k|                                            sizeof(struct STRUCT));     \
 1306|  2.80k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_L4_DST_PORT:
 1303|  1.75k|    {                                                                   \
 1304|  1.75k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.75k|                                            sizeof(struct STRUCT));     \
 1306|  1.75k|    }                                                                   \
ofp-actions.c:ofpact_put_ENQUEUE:
 1303|  1.12k|    {                                                                   \
 1304|  1.12k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.12k|                                            sizeof(struct STRUCT));     \
 1306|  1.12k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_MPLS_LABEL:
 1303|  1.46k|    {                                                                   \
 1304|  1.46k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.46k|                                            sizeof(struct STRUCT));     \
 1306|  1.46k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_MPLS_TC:
 1303|  2.60k|    {                                                                   \
 1304|  2.60k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.60k|                                            sizeof(struct STRUCT));     \
 1306|  2.60k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_MPLS_TTL:
 1303|  2.09k|    {                                                                   \
 1304|  2.09k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.09k|                                            sizeof(struct STRUCT));     \
 1306|  2.09k|    }                                                                   \
ofp-actions.c:ofpact_put_DEC_MPLS_TTL:
 1303|  2.77k|    {                                                                   \
 1304|  2.77k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.77k|                                            sizeof(struct STRUCT));     \
 1306|  2.77k|    }                                                                   \
ofp-actions.c:ofpact_put_PUSH_MPLS:
 1303|    743|    {                                                                   \
 1304|    743|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    743|                                            sizeof(struct STRUCT));     \
 1306|    743|    }                                                                   \
ofp-actions.c:ofpact_put_POP_MPLS:
 1303|  2.19k|    {                                                                   \
 1304|  2.19k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.19k|                                            sizeof(struct STRUCT));     \
 1306|  2.19k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_QUEUE:
 1303|    581|    {                                                                   \
 1304|    581|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    581|                                            sizeof(struct STRUCT));     \
 1306|    581|    }                                                                   \
ofp-actions.c:ofpact_put_GROUP:
 1303|    355|    {                                                                   \
 1304|    355|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    355|                                            sizeof(struct STRUCT));     \
 1306|    355|    }                                                                   \
ofp-actions.c:ofpact_put_SET_IP_TTL:
 1303|  1.63k|    {                                                                   \
 1304|  1.63k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.63k|                                            sizeof(struct STRUCT));     \
 1306|  1.63k|    }                                                                   \
ofp-actions.c:ofpact_put_DEC_TTL:
 1303|  3.67k|    {                                                                   \
 1304|  3.67k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  3.67k|                                            sizeof(struct STRUCT));     \
 1306|  3.67k|    }                                                                   \
ofp-actions.c:ofpact_finish_DEC_TTL:
 1317|  3.66k|    {                                                                   \
 1318|  3.66k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  3.66k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.66k|#define ovs_assert ovs_ignore
  ------------------
 1320|  3.66k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  3.66k|    }
ofp-actions.c:ofpact_put_REG_MOVE:
 1303|    544|    {                                                                   \
 1304|    544|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    544|                                            sizeof(struct STRUCT));     \
 1306|    544|    }                                                                   \
ofp-actions.c:ofpact_put_RESUBMIT:
 1303|  2.41k|    {                                                                   \
 1304|  2.41k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.41k|                                            sizeof(struct STRUCT));     \
 1306|  2.41k|    }                                                                   \
ofp-actions.c:ofpact_put_SET_TUNNEL:
 1303|  1.54k|    {                                                                   \
 1304|  1.54k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.54k|                                            sizeof(struct STRUCT));     \
 1306|  1.54k|    }                                                                   \
ofp-actions.c:ofpact_put_POP_QUEUE:
 1303|    906|    {                                                                   \
 1304|    906|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    906|                                            sizeof(struct STRUCT));     \
 1306|    906|    }                                                                   \
ofp-actions.c:ofpact_put_NOTE:
 1303|  2.46k|    {                                                                   \
 1304|  2.46k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.46k|                                            sizeof(struct STRUCT));     \
 1306|  2.46k|    }                                                                   \
ofp-actions.c:ofpact_finish_NOTE:
 1317|  2.45k|    {                                                                   \
 1318|  2.45k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  2.45k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.45k|#define ovs_assert ovs_ignore
  ------------------
 1320|  2.45k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  2.45k|    }
ofp-actions.c:ofpact_put_MULTIPATH:
 1303|  3.12k|    {                                                                   \
 1304|  3.12k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  3.12k|                                            sizeof(struct STRUCT));     \
 1306|  3.12k|    }                                                                   \
ofp-actions.c:ofpact_put_OUTPUT_REG:
 1303|    829|    {                                                                   \
 1304|    829|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    829|                                            sizeof(struct STRUCT));     \
 1306|    829|    }                                                                   \
ofp-actions.c:ofpact_put_EXIT:
 1303|  2.29k|    {                                                                   \
 1304|  2.29k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.29k|                                            sizeof(struct STRUCT));     \
 1306|  2.29k|    }                                                                   \
ofp-actions.c:ofpact_put_FIN_TIMEOUT:
 1303|  1.33k|    {                                                                   \
 1304|  1.33k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.33k|                                            sizeof(struct STRUCT));     \
 1306|  1.33k|    }                                                                   \
ofp-actions.c:ofpact_put_CONTROLLER:
 1303|  8.92k|    {                                                                   \
 1304|  8.92k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  8.92k|                                            sizeof(struct STRUCT));     \
 1306|  8.92k|    }                                                                   \
ofp-actions.c:ofpact_finish_CONTROLLER:
 1317|  8.91k|    {                                                                   \
 1318|  8.91k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  8.91k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  8.91k|#define ovs_assert ovs_ignore
  ------------------
 1320|  8.91k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  8.91k|    }
ofp-actions.c:ofpact_put_STACK_PUSH:
 1303|    401|    {                                                                   \
 1304|    401|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    401|                                            sizeof(struct STRUCT));     \
 1306|    401|    }                                                                   \
ofp-actions.c:ofpact_put_STACK_POP:
 1303|  1.90k|    {                                                                   \
 1304|  1.90k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.90k|                                            sizeof(struct STRUCT));     \
 1306|  1.90k|    }                                                                   \
ofp-actions.c:ofpact_put_SAMPLE:
 1303|  1.85k|    {                                                                   \
 1304|  1.85k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.85k|                                            sizeof(struct STRUCT));     \
 1306|  1.85k|    }                                                                   \
ofp-actions.c:ofpact_put_CONJUNCTION:
 1303|    534|    {                                                                   \
 1304|    534|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    534|                                            sizeof(struct STRUCT));     \
 1306|    534|    }                                                                   \
ofp-actions.c:ofpact_put_CT:
 1303|  9.54k|    {                                                                   \
 1304|  9.54k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  9.54k|                                            sizeof(struct STRUCT));     \
 1306|  9.54k|    }                                                                   \
ofp-actions.c:ofpact_finish_CT:
 1317|  9.53k|    {                                                                   \
 1318|  9.53k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  9.53k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  9.53k|#define ovs_assert ovs_ignore
  ------------------
 1320|  9.53k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  9.53k|    }
ofp-actions.c:ofpact_get_NAT:
 1289|  11.1k|    {                                                                   \
 1290|  11.1k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  11.1k|#define ovs_assert ovs_ignore
  ------------------
 1291|  11.1k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  11.1k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  11.1k|    }                                                                   \
ofp-actions.c:ofpact_put_NAT:
 1303|  74.1k|    {                                                                   \
 1304|  74.1k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  74.1k|                                            sizeof(struct STRUCT));     \
 1306|  74.1k|    }                                                                   \
ofp-actions.c:ofpact_put_OUTPUT_TRUNC:
 1303|    834|    {                                                                   \
 1304|    834|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    834|                                            sizeof(struct STRUCT));     \
 1306|    834|    }                                                                   \
ofp-actions.c:ofpact_put_CLONE:
 1303|  9.50k|    {                                                                   \
 1304|  9.50k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  9.50k|                                            sizeof(struct STRUCT));     \
 1306|  9.50k|    }                                                                   \
ofp-actions.c:ofpact_finish_CLONE:
 1317|  9.50k|    {                                                                   \
 1318|  9.50k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  9.50k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  9.50k|#define ovs_assert ovs_ignore
  ------------------
 1320|  9.50k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  9.50k|    }
ofp-actions.c:ofpact_put_CT_CLEAR:
 1303|  1.81k|    {                                                                   \
 1304|  1.81k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.81k|                                            sizeof(struct STRUCT));     \
 1306|  1.81k|    }                                                                   \
ofp-actions.c:ofpact_put_ENCAP:
 1303|  1.94k|    {                                                                   \
 1304|  1.94k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.94k|                                            sizeof(struct STRUCT));     \
 1306|  1.94k|    }                                                                   \
ofp-actions.c:ofpact_finish_ENCAP:
 1317|  1.75k|    {                                                                   \
 1318|  1.75k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  1.75k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.75k|#define ovs_assert ovs_ignore
  ------------------
 1320|  1.75k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  1.75k|    }
ofp-actions.c:ofpact_put_DECAP:
 1303|  3.47k|    {                                                                   \
 1304|  3.47k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  3.47k|                                            sizeof(struct STRUCT));     \
 1306|  3.47k|    }                                                                   \
ofp-actions.c:ofpact_put_DEC_NSH_TTL:
 1303|  1.28k|    {                                                                   \
 1304|  1.28k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.28k|                                            sizeof(struct STRUCT));     \
 1306|  1.28k|    }                                                                   \
ofp-actions.c:ofpact_put_CHECK_PKT_LARGER:
 1303|    462|    {                                                                   \
 1304|    462|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    462|                                            sizeof(struct STRUCT));     \
 1306|    462|    }                                                                   \
ofp-actions.c:ofpact_put_DELETE_FIELD:
 1303|    389|    {                                                                   \
 1304|    389|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    389|                                            sizeof(struct STRUCT));     \
 1306|    389|    }                                                                   \
ofp-actions.c:ofpact_put_DEBUG_SLOW:
 1303|  2.00k|    {                                                                   \
 1304|  2.00k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.00k|                                            sizeof(struct STRUCT));     \
 1306|  2.00k|    }                                                                   \
ofp-actions.c:ofpact_put_DEBUG_RECIRC:
 1303|  1.48k|    {                                                                   \
 1304|  1.48k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  1.48k|                                            sizeof(struct STRUCT));     \
 1306|  1.48k|    }                                                                   \
ofp-actions.c:ofpact_put_CLEAR_ACTIONS:
 1303|    204|    {                                                                   \
 1304|    204|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    204|                                            sizeof(struct STRUCT));     \
 1306|    204|    }                                                                   \
ofp-actions.c:ofpact_put_WRITE_METADATA:
 1303|    585|    {                                                                   \
 1304|    585|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    585|                                            sizeof(struct STRUCT));     \
 1306|    585|    }                                                                   \
ofp-actions.c:ofpact_put_GOTO_TABLE:
 1303|    213|    {                                                                   \
 1304|    213|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|    213|                                            sizeof(struct STRUCT));     \
 1306|    213|    }                                                                   \
ofp-actions.c:ofpact_get_OUTPUT:
 1289|   186k|    {                                                                   \
 1290|   186k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|   186k|#define ovs_assert ovs_ignore
  ------------------
 1291|   186k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|   186k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|   186k|    }                                                                   \
ofp-actions.c:ofpact_get_CONTROLLER:
 1289|  14.7k|    {                                                                   \
 1290|  14.7k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  14.7k|#define ovs_assert ovs_ignore
  ------------------
 1291|  14.7k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  14.7k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  14.7k|    }                                                                   \
ofp-actions.c:ofpact_get_ENQUEUE:
 1289|  2.23k|    {                                                                   \
 1290|  2.23k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.23k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.23k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.23k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.23k|    }                                                                   \
ofp-actions.c:ofpact_get_OUTPUT_REG:
 1289|  1.21k|    {                                                                   \
 1290|  1.21k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.21k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.21k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.21k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.21k|    }                                                                   \
ofp-actions.c:ofpact_get_BUNDLE:
 1289|  2.81k|    {                                                                   \
 1290|  2.81k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.81k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.81k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.81k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.81k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_FIELD:
 1289|  55.1k|    {                                                                   \
 1290|  55.1k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  55.1k|#define ovs_assert ovs_ignore
  ------------------
 1291|  55.1k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  55.1k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  55.1k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_VLAN_VID:
 1289|  3.52k|    {                                                                   \
 1290|  3.52k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.52k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.52k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.52k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.52k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_VLAN_PCP:
 1289|  3.26k|    {                                                                   \
 1290|  3.26k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.26k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.26k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.26k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.26k|    }                                                                   \
ofp-actions.c:ofpact_get_STRIP_VLAN:
 1289|  4.00k|    {                                                                   \
 1290|  4.00k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  4.00k|#define ovs_assert ovs_ignore
  ------------------
 1291|  4.00k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  4.00k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  4.00k|    }                                                                   \
ofp-actions.c:ofpact_get_PUSH_VLAN:
 1289|  2.15k|    {                                                                   \
 1290|  2.15k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.15k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.15k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.15k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.15k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_ETH_SRC:
 1289|    776|    {                                                                   \
 1290|    776|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    776|#define ovs_assert ovs_ignore
  ------------------
 1291|    776|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    776|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    776|    }                                                                   \
ofp-actions.c:ofpact_get_SET_ETH_DST:
 1289|    782|    {                                                                   \
 1290|    782|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    782|#define ovs_assert ovs_ignore
  ------------------
 1291|    782|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    782|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    782|    }                                                                   \
ofp-actions.c:ofpact_get_SET_IPV4_SRC:
 1289|  1.96k|    {                                                                   \
 1290|  1.96k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.96k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.96k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.96k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.96k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_IPV4_DST:
 1289|  1.52k|    {                                                                   \
 1290|  1.52k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.52k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.52k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.52k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.52k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_IP_DSCP:
 1289|  2.36k|    {                                                                   \
 1290|  2.36k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.36k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.36k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.36k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.36k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_IP_ECN:
 1289|  2.58k|    {                                                                   \
 1290|  2.58k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.58k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.58k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.58k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.58k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_IP_TTL:
 1289|  2.75k|    {                                                                   \
 1290|  2.75k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.75k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.75k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.75k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.75k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_L4_SRC_PORT:
 1289|  4.93k|    {                                                                   \
 1290|  4.93k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  4.93k|#define ovs_assert ovs_ignore
  ------------------
 1291|  4.93k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  4.93k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  4.93k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_L4_DST_PORT:
 1289|  3.46k|    {                                                                   \
 1290|  3.46k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.46k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.46k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.46k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.46k|    }                                                                   \
ofp-actions.c:ofpact_get_REG_MOVE:
 1289|  1.01k|    {                                                                   \
 1290|  1.01k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.01k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.01k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.01k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.01k|    }                                                                   \
ofp-actions.c:ofpact_get_STACK_PUSH:
 1289|    750|    {                                                                   \
 1290|    750|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    750|#define ovs_assert ovs_ignore
  ------------------
 1291|    750|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    750|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    750|    }                                                                   \
ofp-actions.c:ofpact_get_STACK_POP:
 1289|  3.62k|    {                                                                   \
 1290|  3.62k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.62k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.62k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.62k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.62k|    }                                                                   \
ofp-actions.c:ofpact_get_DEC_TTL:
 1289|  6.78k|    {                                                                   \
 1290|  6.78k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  6.78k|#define ovs_assert ovs_ignore
  ------------------
 1291|  6.78k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  6.78k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  6.78k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_MPLS_LABEL:
 1289|  2.75k|    {                                                                   \
 1290|  2.75k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.75k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.75k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.75k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.75k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_MPLS_TC:
 1289|  3.32k|    {                                                                   \
 1290|  3.32k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.32k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.32k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.32k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.32k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_MPLS_TTL:
 1289|  4.10k|    {                                                                   \
 1290|  4.10k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  4.10k|#define ovs_assert ovs_ignore
  ------------------
 1291|  4.10k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  4.10k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  4.10k|    }                                                                   \
ofp-actions.c:ofpact_get_DEC_MPLS_TTL:
 1289|  5.50k|    {                                                                   \
 1290|  5.50k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  5.50k|#define ovs_assert ovs_ignore
  ------------------
 1291|  5.50k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  5.50k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  5.50k|    }                                                                   \
ofp-actions.c:ofpact_get_PUSH_MPLS:
 1289|  1.39k|    {                                                                   \
 1290|  1.39k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.39k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.39k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.39k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.39k|    }                                                                   \
ofp-actions.c:ofpact_get_POP_MPLS:
 1289|  4.36k|    {                                                                   \
 1290|  4.36k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  4.36k|#define ovs_assert ovs_ignore
  ------------------
 1291|  4.36k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  4.36k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  4.36k|    }                                                                   \
ofp-actions.c:ofpact_get_DEC_NSH_TTL:
 1289|  1.17k|    {                                                                   \
 1290|  1.17k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.17k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.17k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.17k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.17k|    }                                                                   \
ofp-actions.c:ofpact_get_DELETE_FIELD:
 1289|    496|    {                                                                   \
 1290|    496|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    496|#define ovs_assert ovs_ignore
  ------------------
 1291|    496|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    496|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    496|    }                                                                   \
ofp-actions.c:ofpact_get_ENCAP:
 1289|  2.39k|    {                                                                   \
 1290|  2.39k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.39k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.39k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.39k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.39k|    }                                                                   \
ofp-actions.c:ofpact_get_DECAP:
 1289|  5.38k|    {                                                                   \
 1290|  5.38k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  5.38k|#define ovs_assert ovs_ignore
  ------------------
 1291|  5.38k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  5.38k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  5.38k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_TUNNEL:
 1289|  3.00k|    {                                                                   \
 1290|  3.00k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.00k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.00k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.00k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.00k|    }                                                                   \
ofp-actions.c:ofpact_get_SET_QUEUE:
 1289|  1.14k|    {                                                                   \
 1290|  1.14k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.14k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.14k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.14k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.14k|    }                                                                   \
ofp-actions.c:ofpact_get_POP_QUEUE:
 1289|  1.50k|    {                                                                   \
 1290|  1.50k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.50k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.50k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.50k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.50k|    }                                                                   \
ofp-actions.c:ofpact_get_FIN_TIMEOUT:
 1289|  1.34k|    {                                                                   \
 1290|  1.34k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.34k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.34k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.34k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.34k|    }                                                                   \
ofp-actions.c:ofpact_get_RESUBMIT:
 1289|  2.28k|    {                                                                   \
 1290|  2.28k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.28k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.28k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.28k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.28k|    }                                                                   \
ofp-actions.c:ofpact_get_LEARN:
 1289|  67.6k|    {                                                                   \
 1290|  67.6k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  67.6k|#define ovs_assert ovs_ignore
  ------------------
 1291|  67.6k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  67.6k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  67.6k|    }                                                                   \
ofp-actions.c:ofpact_get_CONJUNCTION:
 1289|    432|    {                                                                   \
 1290|    432|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    432|#define ovs_assert ovs_ignore
  ------------------
 1291|    432|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    432|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    432|    }                                                                   \
ofp-actions.c:ofpact_get_MULTIPATH:
 1289|    773|    {                                                                   \
 1290|    773|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    773|#define ovs_assert ovs_ignore
  ------------------
 1291|    773|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    773|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    773|    }                                                                   \
ofp-actions.c:ofpact_get_NOTE:
 1289|  4.38k|    {                                                                   \
 1290|  4.38k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  4.38k|#define ovs_assert ovs_ignore
  ------------------
 1291|  4.38k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  4.38k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  4.38k|    }                                                                   \
ofp-actions.c:ofpact_get_EXIT:
 1289|  2.74k|    {                                                                   \
 1290|  2.74k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.74k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.74k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.74k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.74k|    }                                                                   \
ofp-actions.c:ofpact_get_SAMPLE:
 1289|  2.87k|    {                                                                   \
 1290|  2.87k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.87k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.87k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.87k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.87k|    }                                                                   \
ofp-actions.c:ofpact_ct_get_action_len:
  723|  14.4k|{
  724|       |    return oc->ofpact.len - offsetof(struct ofpact_conntrack, actions);
  725|  14.4k|}
ofp-actions.c:ofpact_get_CT_CLEAR:
 1289|  2.63k|    {                                                                   \
 1290|  2.63k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.63k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.63k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.63k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.63k|    }                                                                   \
ofp-actions.c:ofpact_get_OUTPUT_TRUNC:
 1289|  1.38k|    {                                                                   \
 1290|  1.38k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  1.38k|#define ovs_assert ovs_ignore
  ------------------
 1291|  1.38k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  1.38k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  1.38k|    }                                                                   \
ofp-actions.c:ofpact_nest_get_action_len:
  673|  13.3k|{
  674|       |    return on->ofpact.len - offsetof(struct ofpact_nest, actions);
  675|  13.3k|}
ofp-actions.c:ofpact_get_CHECK_PKT_LARGER:
 1289|    690|    {                                                                   \
 1290|    690|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    690|#define ovs_assert ovs_ignore
  ------------------
 1291|    690|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    690|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    690|    }                                                                   \
ofp-actions.c:ofpact_get_DEBUG_RECIRC:
 1289|  2.35k|    {                                                                   \
 1290|  2.35k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.35k|#define ovs_assert ovs_ignore
  ------------------
 1291|  2.35k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  2.35k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  2.35k|    }                                                                   \
ofp-actions.c:ofpact_get_DEBUG_SLOW:
 1289|  3.98k|    {                                                                   \
 1290|  3.98k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  3.98k|#define ovs_assert ovs_ignore
  ------------------
 1291|  3.98k|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|  3.98k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|  3.98k|    }                                                                   \
ofp-actions.c:ofpact_get_CLEAR_ACTIONS:
 1289|     16|    {                                                                   \
 1290|     16|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|     16|#define ovs_assert ovs_ignore
  ------------------
 1291|     16|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|     16|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|     16|    }                                                                   \
ofp-actions.c:ofpact_get_WRITE_METADATA:
 1289|     16|    {                                                                   \
 1290|     16|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|     16|#define ovs_assert ovs_ignore
  ------------------
 1291|     16|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|     16|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|     16|    }                                                                   \
ofp-actions.c:ofpact_get_GOTO_TABLE:
 1289|     17|    {                                                                   \
 1290|     17|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|     17|#define ovs_assert ovs_ignore
  ------------------
 1291|     17|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|     17|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|     17|    }                                                                   \
ofp-actions.c:ofpact_learn_spec_end:
  894|  88.3k|{
  895|  88.3k|    return ALIGNED_CAST(const struct ofpact_learn_spec *,
  ------------------
  |  |  434|  88.3k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  896|  88.3k|                        ofpact_next(&learn->ofpact));
  897|  88.3k|}
ofp-actions.c:ofpact_learn_spec_imm:
  850|  52.1k|{
  851|  52.1k|    return spec + 1;
  852|  52.1k|}
ofp-actions.c:ofpact_learn_spec_next:
  856|  54.6k|{
  857|  54.6k|    if (spec->src_type == NX_LEARN_SRC_IMMEDIATE) {
  ------------------
  |  |  822|  54.6k|#define NX_LEARN_SRC_IMMEDIATE (1 << 13) /* Copy from immediate value. */
  ------------------
  |  Branch (857:9): [True: 52.1k, False: 2.44k]
  ------------------
  858|  52.1k|        unsigned int n_bytes = OFPACT_ALIGN(DIV_ROUND_UP(spec->n_bits, 8));
  ------------------
  |  |  205|  52.1k|#define OFPACT_ALIGN(SIZE) ROUND_UP(SIZE, OFPACT_ALIGNTO)
  |  |  ------------------
  |  |  |  |  303|  52.1k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  52.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  859|  52.1k|        return ALIGNED_CAST(const struct ofpact_learn_spec *,
  ------------------
  |  |  434|  52.1k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  860|  52.1k|                            (const uint8_t *)(spec + 1) + n_bytes);
  861|  52.1k|    }
  862|  2.44k|    return spec + 1;
  863|  54.6k|}
ofp-actions.c:ofpact_get_GROUP:
 1289|    430|    {                                                                   \
 1290|    430|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    430|#define ovs_assert ovs_ignore
  ------------------
 1291|    430|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    430|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    430|    }                                                                   \
ofp-actions.c:ofpact_get_METER:
 1289|    262|    {                                                                   \
 1290|    262|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|    262|#define ovs_assert ovs_ignore
  ------------------
 1291|    262|        return ALIGNED_CAST(struct STRUCT *, ofpact);                   \
  ------------------
  |  |  434|    262|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
 1292|    262|    }                                                                   \
bundle.c:ofpact_put_BUNDLE:
 1303|  2.64k|    {                                                                   \
 1304|  2.64k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  2.64k|                                            sizeof(struct STRUCT));     \
 1306|  2.64k|    }                                                                   \
bundle.c:ofpact_finish_BUNDLE:
 1317|  2.64k|    {                                                                   \
 1318|  2.64k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  2.64k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  2.64k|#define ovs_assert ovs_ignore
  ------------------
 1320|  2.64k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  2.64k|    }
learn.c:ofpact_learn_spec_end:
  894|  89.2k|{
  895|  89.2k|    return ALIGNED_CAST(const struct ofpact_learn_spec *,
  ------------------
  |  |  434|  89.2k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  896|  89.2k|                        ofpact_next(&learn->ofpact));
  897|  89.2k|}
learn.c:ofpact_next:
  212|  89.2k|{
  213|  89.2k|    return ALIGNED_CAST(struct ofpact *,
  ------------------
  |  |  434|  89.2k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  214|  89.2k|                        (uint8_t *) ofpact + OFPACT_ALIGN(ofpact->len));
  215|  89.2k|}
learn.c:ofpact_learn_spec_imm:
  850|  52.7k|{
  851|  52.7k|    return spec + 1;
  852|  52.7k|}
learn.c:ofpact_learn_spec_next:
  856|  55.3k|{
  857|  55.3k|    if (spec->src_type == NX_LEARN_SRC_IMMEDIATE) {
  ------------------
  |  |  822|  55.3k|#define NX_LEARN_SRC_IMMEDIATE (1 << 13) /* Copy from immediate value. */
  ------------------
  |  Branch (857:9): [True: 52.8k, False: 2.44k]
  ------------------
  858|  52.8k|        unsigned int n_bytes = OFPACT_ALIGN(DIV_ROUND_UP(spec->n_bits, 8));
  ------------------
  |  |  205|  52.8k|#define OFPACT_ALIGN(SIZE) ROUND_UP(SIZE, OFPACT_ALIGNTO)
  |  |  ------------------
  |  |  |  |  303|  52.8k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  52.8k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  859|  52.8k|        return ALIGNED_CAST(const struct ofpact_learn_spec *,
  ------------------
  |  |  434|  52.8k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  860|  52.8k|                            (const uint8_t *)(spec + 1) + n_bytes);
  861|  52.8k|    }
  862|  2.44k|    return spec + 1;
  863|  55.3k|}
learn.c:ofpact_put_LEARN:
 1303|  36.3k|    {                                                                   \
 1304|  36.3k|        return (struct STRUCT *) ofpact_put(ofpacts, OFPACT_##ENUM,     \
 1305|  36.3k|                                            sizeof(struct STRUCT));     \
 1306|  36.3k|    }                                                                   \
learn.c:ofpact_finish_LEARN:
 1317|  35.4k|    {                                                                   \
 1318|  35.4k|        struct ofpact *ofpact = &(*ofpactp)->ofpact;                    \
 1319|  35.4k|        ovs_assert(ofpact->type == OFPACT_##ENUM);                      \
  ------------------
  |  |   62|  35.4k|#define ovs_assert ovs_ignore
  ------------------
 1320|  35.4k|        *ofpactp = (struct STRUCT *) ofpact_finish(ofpbuf, ofpact);     \
 1321|  35.4k|    }
multipath.c:ofpact_init_MULTIPATH:
 1310|  3.12k|    {                                                                   \
 1311|  3.12k|        ofpact_init(&ofpact->ofpact, OFPACT_##ENUM,                     \
 1312|  3.12k|                    sizeof(struct STRUCT));                             \
 1313|  3.12k|    }                                                                   \

ofp-prop.c:ofpprop_is_experimenter:
   73|  8.06k|{
   74|       |    return type > UINT16_MAX;
   75|  8.06k|}

ofctl_parse_target.c:ofpbuf_delete:
  172|  9.83k|{
  173|  9.83k|    if (b) {
  ------------------
  |  Branch (173:9): [True: 9.83k, False: 0]
  ------------------
  174|  9.83k|        ofpbuf_uninit(b);
  175|  9.83k|        free(b);
  176|  9.83k|    }
  177|  9.83k|}
ofp-msgs.c:ofpbuf_at_assert:
  195|  9.83k|{
  196|  9.83k|    ovs_assert(offset + size <= b->size);
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
  197|  9.83k|    ovs_assert(b->data);
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
  198|  9.83k|    return (char *) b->data + offset;
  199|  9.83k|}
ofp-msgs.c:ofpbuf_tail:
  203|  9.83k|{
  204|  9.83k|    ovs_assert(b->data || !b->size);
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (204:16): [True: 9.83k, False: 0]
  |  Branch (204:27): [True: 0, False: 0]
  ------------------
  205|  9.83k|    return b->data ? (char *) b->data + b->size : NULL;
  ------------------
  |  Branch (205:12): [True: 9.83k, False: 0]
  ------------------
  206|  9.83k|}
ofp-prop.c:ofpbuf_at_assert:
  195|  7.60k|{
  196|  7.60k|    ovs_assert(offset + size <= b->size);
  ------------------
  |  |   62|  7.60k|#define ovs_assert ovs_ignore
  ------------------
  197|  7.60k|    ovs_assert(b->data);
  ------------------
  |  |   62|  7.60k|#define ovs_assert ovs_ignore
  ------------------
  198|  7.60k|    return (char *) b->data + offset;
  199|  7.60k|}
ofpbuf.c:ofpbuf_tailroom:
  228|  3.50M|{
  229|  3.50M|    return (char*)ofpbuf_end(b) - (char*)ofpbuf_tail(b);
  230|  3.50M|}
ofpbuf.c:ofpbuf_end:
  211|  3.50M|{
  212|  3.50M|    ovs_assert(b->base || !b->allocated);
  ------------------
  |  |   62|  3.50M|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (212:16): [True: 3.49M, False: 9.83k]
  |  Branch (212:27): [True: 9.83k, False: 0]
  ------------------
  213|  3.50M|    return b->base ? (char *) b->base + b->allocated : NULL;
  ------------------
  |  Branch (213:12): [True: 3.49M, False: 9.83k]
  ------------------
  214|  3.50M|}
ofpbuf.c:ofpbuf_headroom:
  221|   896k|{
  222|   896k|    return (char*)b->data - (char*)b->base;
  223|   896k|}
ofpbuf.c:ofpbuf_tail:
  203|  7.00M|{
  204|  7.00M|    ovs_assert(b->data || !b->size);
  ------------------
  |  |   62|  7.00M|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (204:16): [True: 6.99M, False: 9.83k]
  |  Branch (204:27): [True: 9.83k, False: 0]
  ------------------
  205|  7.00M|    return b->data ? (char *) b->data + b->size : NULL;
  ------------------
  |  Branch (205:12): [True: 6.99M, False: 9.83k]
  ------------------
  206|  7.00M|}
nx-match.c:ofpbuf_at:
  183|    482|{
  184|    482|    if (offset + size <= b->size) {
  ------------------
  |  Branch (184:9): [True: 482, False: 0]
  ------------------
  185|    482|        ovs_assert(b->data);
  ------------------
  |  |   62|    482|#define ovs_assert ovs_ignore
  ------------------
  186|    482|        return (char *) b->data + offset;
  187|    482|    }
  188|      0|    return NULL;
  189|    482|}
ofp-actions.c:ofpbuf_pull:
  258|  97.3k|{
  259|  97.3k|    ovs_assert(b->size >= size);
  ------------------
  |  |   62|  97.3k|#define ovs_assert ovs_ignore
  ------------------
  260|  97.3k|    void *data = b->data;
  261|       |
  262|  97.3k|    if (!size) {
  ------------------
  |  Branch (262:9): [True: 4.27k, False: 93.1k]
  ------------------
  263|  4.27k|        return data;
  264|  4.27k|    }
  265|       |
  266|  93.1k|    b->data = (char*)b->data + size;
  267|  93.1k|    b->size = b->size - size;
  268|  93.1k|    return data;
  269|  97.3k|}
ofp-actions.c:ofpbuf_at_assert:
  195|  69.9k|{
  196|  69.9k|    ovs_assert(offset + size <= b->size);
  ------------------
  |  |   62|  69.9k|#define ovs_assert ovs_ignore
  ------------------
  197|  69.9k|    ovs_assert(b->data);
  ------------------
  |  |   62|  69.9k|#define ovs_assert ovs_ignore
  ------------------
  198|  69.9k|    return (char *) b->data + offset;
  199|  69.9k|}
ofp-actions.c:ofpbuf_at:
  183|  19.4k|{
  184|  19.4k|    if (offset + size <= b->size) {
  ------------------
  |  Branch (184:9): [True: 19.4k, False: 0]
  ------------------
  185|  19.4k|        ovs_assert(b->data);
  ------------------
  |  |   62|  19.4k|#define ovs_assert ovs_ignore
  ------------------
  186|  19.4k|        return (char *) b->data + offset;
  187|  19.4k|    }
  188|      0|    return NULL;
  189|  19.4k|}
ofp-actions.c:ofpbuf_tail:
  203|   156k|{
  204|   156k|    ovs_assert(b->data || !b->size);
  ------------------
  |  |   62|   156k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (204:16): [True: 156k, False: 0]
  |  Branch (204:27): [True: 0, False: 0]
  ------------------
  205|   156k|    return b->data ? (char *) b->data + b->size : NULL;
  ------------------
  |  Branch (205:12): [True: 156k, False: 0]
  ------------------
  206|   156k|}
ofp-actions.c:ofpbuf_oversized:
  291|  35.0k|{
  292|       |    return (char *)ofpbuf_tail(ofpacts) - (char *)ofpacts->header > UINT16_MAX;
  293|  35.0k|}
ofp-actions.c:ofpbuf_truncate:
  297|  9.68k|{
  298|  9.68k|    ovs_assert(b->size >= new_size);
  ------------------
  |  |   62|  9.68k|#define ovs_assert ovs_ignore
  ------------------
  299|  9.68k|    b->size = new_size;
  300|  9.68k|}
bundle.c:ofpbuf_oversized:
  291|  2.64k|{
  292|       |    return (char *)ofpbuf_tail(ofpacts) - (char *)ofpacts->header > UINT16_MAX;
  293|  2.64k|}
bundle.c:ofpbuf_tail:
  203|  2.64k|{
  204|  2.64k|    ovs_assert(b->data || !b->size);
  ------------------
  |  |   62|  2.64k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (204:16): [True: 2.64k, False: 0]
  |  Branch (204:27): [True: 0, False: 0]
  ------------------
  205|  2.64k|    return b->data ? (char *) b->data + b->size : NULL;
  ------------------
  |  Branch (205:12): [True: 2.64k, False: 0]
  ------------------
  206|  2.64k|}
learn.c:ofpbuf_oversized:
  291|  35.4k|{
  292|       |    return (char *)ofpbuf_tail(ofpacts) - (char *)ofpacts->header > UINT16_MAX;
  293|  35.4k|}
learn.c:ofpbuf_tail:
  203|  35.4k|{
  204|  35.4k|    ovs_assert(b->data || !b->size);
  ------------------
  |  |   62|  35.4k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (204:16): [True: 35.4k, False: 0]
  |  Branch (204:27): [True: 0, False: 0]
  ------------------
  205|  35.4k|    return b->data ? (char *) b->data + b->size : NULL;
  ------------------
  |  Branch (205:12): [True: 35.4k, False: 0]
  ------------------
  206|  35.4k|}

ofp-msgs.c:ovsthread_once_start:
  156|  9.83k|{
  157|       |    /* We may be reading 'done' at the same time as the first thread
  158|       |     * is writing on it, or we can be using a stale copy of it.  The
  159|       |     * worst that can happen is that we call ovsthread_once_start__()
  160|       |     * once when strictly not necessary. */
  161|  9.83k|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
  ------------------
  |  |   66|  9.83k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:53): [True: 1, False: 9.83k]
  |  |  |  Branch (66:53): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|  9.83k|}
ofp-port.c:ovsthread_once_start:
  156|  4.74k|{
  157|       |    /* We may be reading 'done' at the same time as the first thread
  158|       |     * is writing on it, or we can be using a stale copy of it.  The
  159|       |     * worst that can happen is that we call ovsthread_once_start__()
  160|       |     * once when strictly not necessary. */
  161|  4.74k|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
  ------------------
  |  |   66|  4.74k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:53): [True: 1, False: 4.74k]
  |  |  |  Branch (66:53): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|  4.74k|}
nx-match.c:ovsthread_once_start:
  156|   470k|{
  157|       |    /* We may be reading 'done' at the same time as the first thread
  158|       |     * is writing on it, or we can be using a stale copy of it.  The
  159|       |     * worst that can happen is that we call ovsthread_once_start__()
  160|       |     * once when strictly not necessary. */
  161|   470k|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
  ------------------
  |  |   66|   470k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:53): [True: 1, False: 470k]
  |  |  |  Branch (66:53): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|   470k|}
ofp-actions.c:ovsthread_once_start:
  156|   334k|{
  157|       |    /* We may be reading 'done' at the same time as the first thread
  158|       |     * is writing on it, or we can be using a stale copy of it.  The
  159|       |     * worst that can happen is that we call ovsthread_once_start__()
  160|       |     * once when strictly not necessary. */
  161|   334k|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
  ------------------
  |  |   66|   334k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:53): [True: 1, False: 334k]
  |  |  |  Branch (66:53): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|   334k|}

ofctl_parse_target.c:is_pow2:
  399|  9.83k|{
  400|  9.83k|    return IS_POW2(x);
  ------------------
  |  |  312|  9.83k|#define IS_POW2(X) ((X) && !((X) & ((X) - 1)))
  |  |  ------------------
  |  |  |  Branch (312:21): [True: 9.83k, False: 0]
  |  |  |  Branch (312:28): [True: 9.83k, False: 0]
  |  |  ------------------
  ------------------
  401|  9.83k|}
hmap.c:is_pow2:
  399|     34|{
  400|     34|    return IS_POW2(x);
  ------------------
  |  |  312|     34|#define IS_POW2(X) ((X) && !((X) & ((X) - 1)))
  |  |  ------------------
  |  |  |  Branch (312:21): [True: 34, False: 0]
  |  |  |  Branch (312:28): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  401|     34|}

ofp-flow.c:init_this_module_ofp_flow:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-group.c:init_this_module_ofp_group:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-match.c:init_this_module_ofp_match:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-msgs.c:init_this_module_ofp_msgs:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-port.c:init_this_module_ofp_port:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-protocol.c:init_this_module_ofp_protocol:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-queue.c:init_this_module_ofp_queue:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-table.c:init_this_module_ofp_table:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-util.c:init_this_module_ofp_util:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovs-thread.c:init_this_module_ovs_thread:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ox-stat.c:init_this_module_ox_stat:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
poll-loop.c:init_this_module_poll_loop:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
socket-util.c:init_this_module_socket_util:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
timeval.c:init_this_module_timeval:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
unixctl.c:init_this_module_unixctl:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
util.c:init_this_module_util:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
vlog.c:init_this_module_vlog:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
socket-util-unix.c:init_this_module_socket_util_unix:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
backtrace.c:init_this_module_backtrace:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
command-line.c:init_this_module_command_line:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
coverage.c:init_this_module_coverage:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dp-packet-gso.c:init_this_module_dp_packet_gso:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
fatal-signal.c:init_this_module_fatal_signal:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
flow.c:init_this_module_flow:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
hmap.c:init_this_module_hmap:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
jsonrpc.c:init_this_module_jsonrpc:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
meta-flow.c:init_this_module_meta_flow:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netdev.c:init_this_module_netdev:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netlink.c:init_this_module_netlink:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
nx-match.c:init_this_module_nx_match:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-actions.c:init_this_module_ofp_actions:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-bundle.c:init_this_module_ofp_bundle:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-connection.c:init_this_module_ofp_connection:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-ct.c:init_this_module_ofp_ct:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-errors.c:init_this_module_ofp_errors:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-meter.c:init_this_module_ofp_meter:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-monitor.c:init_this_module_ofp_monitor:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ofp-packet.c:init_this_module_ofp_packet:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovs-rcu.c:init_this_module_ovs_rcu:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovs-replay.c:init_this_module_ovs_replay:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovs-router.c:init_this_module_ovs_router:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
reconnect.c:init_this_module_reconnect:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream.c:init_this_module_stream:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
svec.c:init_this_module_svec:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
userspace-tso.c:init_this_module_userspace_tso:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
uuid.c:init_this_module_uuid:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
daemon-unix.c:init_this_module_daemon_unix:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
signals.c:init_this_module_signals:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream-unix.c:init_this_module_stream_unix:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netdev-linux.c:init_this_module_netdev_linux:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netlink-socket.c:init_this_module_netlink_socket:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
route-table.c:init_this_module_route_table:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
tc.c:init_this_module_tc:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream-ssl.c:init_this_module_stream_ssl:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
bundle.c:init_this_module_bundle:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
cooperative-multitasking.c:init_this_module_cooperative_multitasking:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
daemon.c:init_this_module_daemon:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-offload.c:init_this_module_dpif_offload:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-offload-dummy.c:init_this_module_dpif_offload_dummy:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif.c:init_this_module_dpif:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
entropy.c:init_this_module_entropy:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
lockfile.c:init_this_module_lockfile:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netdev-dummy.c:init_this_module_netdev_dummy:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netdev-vport.c:init_this_module_netdev_vport:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
odp-execute.c:init_this_module_odp_execute:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
odp-util.c:init_this_module_odp_util:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
pcap-file.c:init_this_module_pcap:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
process.c:init_this_module_process:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
sha1.c:init_this_module_sha1:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream-fd.c:init_this_module_stream_fd:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream-replay.c:init_this_module_stream_replay:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
stream-tcp.c:init_this_module_stream_tcp:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netdev-native-tnl.c:init_this_module_native_tnl:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-netlink.c:init_this_module_dpif_netlink:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-netlink-rtnl.c:init_this_module_dpif_netlink_rtnl:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-offload-tc.c:init_this_module_dpif_offload_tc:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-offload-tc-netdev.c:init_this_module_dpif_offload_tc_netdev:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netlink-conntrack.c:init_this_module_netlink_conntrack:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
netlink-notifier.c:init_this_module_netlink_notifier:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
conntrack.c:init_this_module_conntrack:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ct-dpif.c:init_this_module_ct_dpif:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-netdev.c:init_this_module_dpif_netdev:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ipf.c:init_this_module_ipf:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovs-numa.c:init_this_module_ovs_numa:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpdk-stub.c:init_this_module_dpdk:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
conntrack-tp.c:init_this_module_conntrack_tp:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-netdev-dpcls.c:init_this_module_dpif_netdev_dpcls:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
dpif-netdev-perf.c:init_this_module_pmd_perf:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovsdb-error.c:init_this_module_ovsdb_error:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovsdb-idl.c:init_this_module_ovsdb_idl:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \
ovsdb-cs.c:init_this_module_ovsdb_cs:
  191|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  192|      2|            vlog_insert_module(&this_module.list);                      \
  193|      2|        }                                                               \

util.c:bitmap_set1:
   96|  1.59M|{
   97|  1.59M|    *bitmap_unit__(bitmap, offset) |= bitmap_bit__(offset);
   98|  1.59M|    return bitmap;
   99|  1.59M|}
util.c:bitmap_bit__:
   32|  2.11M|{
   33|       |    return 1UL << (offset % BITMAP_ULONG_BITS);
  ------------------
  |  |  423|  2.11M|#define BITMAP_ULONG_BITS (sizeof(unsigned long) * CHAR_BIT)
  ------------------
   34|  2.11M|}
util.c:bitmap_unit__:
   26|  2.11M|{
   27|  2.11M|    return CONST_CAST(unsigned long *, &bitmap[offset / BITMAP_ULONG_BITS]);
  ------------------
  |  |   85|  2.11M|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  2.11M|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  2.11M|     (TYPE) (POINTER))
  ------------------
   28|  2.11M|}
util.c:bitmap_is_set:
   90|   517k|{
   91|   517k|    return (*bitmap_unit__(bitmap, offset) & bitmap_bit__(offset)) != 0;
   92|   517k|}

bundle_check:
  111|  1.41k|{
  112|  1.41k|    static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
  ------------------
  |  |  110|  1.41k|        {                                                                 \
  |  |  111|  1.41k|            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
  |  |  ------------------
  |  |  |  |   37|  5.65k|#define TOKEN_BUCKET_INIT(RATE, BURST) { RATE, BURST, 0, LLONG_MIN }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:48): [True: 0, Folded]
  |  |  |  |  |  Branch (37:48): [Folded, False: 1.41k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|  1.41k|            0,                              /* first_dropped */           \
  |  |  113|  1.41k|            0,                              /* last_dropped */            \
  |  |  114|  1.41k|            0,                              /* n_dropped */               \
  |  |  115|  1.41k|            OVS_MUTEX_INITIALIZER           /* mutex */                   \
  |  |  ------------------
  |  |  |  |   45|  1.41k|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|  1.41k|                                "<unlocked>" }
  |  |  ------------------
  |  |  116|  1.41k|        }
  ------------------
  113|  1.41k|    size_t i;
  114|       |
  115|  1.41k|    if (bundle->dst.field) {
  ------------------
  |  Branch (115:9): [True: 5, False: 1.40k]
  ------------------
  116|      5|        enum ofperr error = mf_check_dst(&bundle->dst, match);
  117|      5|        if (error) {
  ------------------
  |  Branch (117:13): [True: 0, False: 5]
  ------------------
  118|      0|            return error;
  119|      0|        }
  120|      5|    }
  121|       |
  122|  59.7k|    for (i = 0; i < bundle->n_members; i++) {
  ------------------
  |  Branch (122:17): [True: 58.3k, False: 1.40k]
  ------------------
  123|  58.3k|        ofp_port_t ofp_port = bundle->members[i];
  124|       |
  125|  58.3k|        if (ofp_port != OFPP_NONE) {
  ------------------
  |  |   47|  58.3k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|  58.3k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (125:13): [True: 57.8k, False: 512]
  ------------------
  126|  57.8k|            enum ofperr error = ofpact_check_output_port(ofp_port, max_ports);
  127|  57.8k|            if (error) {
  ------------------
  |  Branch (127:17): [True: 5, False: 57.8k]
  ------------------
  128|      5|                VLOG_WARN_RL(&rl, "invalid member %"PRIu32, ofp_port);
  ------------------
  |  |  224|      5|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      5|    do {                                                                \
  |  |  |  |  288|      5|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      5|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      5|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|      5|                return error;
  130|      5|            }
  131|  57.8k|        }
  132|       |        /* Controller members are unsupported due to the lack of a max_len
  133|       |         * argument. This may or may not change in the future.  There doesn't
  134|       |         * seem to be a real-world use-case for supporting it. */
  135|  58.3k|        if (ofp_port == OFPP_CONTROLLER) {
  ------------------
  |  |   45|  58.3k|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  ------------------
  |  |  |  |  157|  58.3k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (135:13): [True: 1, False: 58.3k]
  ------------------
  136|      1|            VLOG_WARN_RL(&rl, "unsupported controller member");
  ------------------
  |  |  224|      1|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      1|    do {                                                                \
  |  |  |  |  288|      1|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      1|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      1|            return OFPERR_OFPBAC_BAD_OUT_PORT;
  138|      1|        }
  139|  58.3k|    }
  140|       |
  141|  1.40k|    return 0;
  142|  1.41k|}
bundle_parse:
  248|  2.73k|{
  249|  2.73k|    char *fields, *basis, *algorithm, *member_type, *member_delim;
  250|  2.73k|    char *tokstr, *save_ptr;
  251|  2.73k|    char *error;
  252|       |
  253|  2.73k|    save_ptr = NULL;
  254|  2.73k|    tokstr = xstrdup(s);
  255|  2.73k|    fields = strtok_r(tokstr, ", ", &save_ptr);
  256|  2.73k|    basis = strtok_r(NULL, ", ", &save_ptr);
  257|  2.73k|    algorithm = strtok_r(NULL, ", ", &save_ptr);
  258|  2.73k|    member_type = strtok_r(NULL, ", ", &save_ptr);
  259|  2.73k|    member_delim = strtok_r(NULL, ": ", &save_ptr);
  260|       |
  261|  2.73k|    error = bundle_parse__(s, port_map,
  262|  2.73k|                           &save_ptr, fields, basis, algorithm, member_type,
  263|  2.73k|                           NULL, member_delim, ofpacts);
  264|  2.73k|    free(tokstr);
  265|       |
  266|  2.73k|    return error;
  267|  2.73k|}
bundle_parse_load:
  277|     22|{
  278|     22|    char *fields, *basis, *algorithm, *member_type, *dst, *member_delim;
  279|     22|    char *tokstr, *save_ptr;
  280|     22|    char *error;
  281|       |
  282|     22|    save_ptr = NULL;
  283|     22|    tokstr = xstrdup(s);
  284|     22|    fields = strtok_r(tokstr, ", ", &save_ptr);
  285|     22|    basis = strtok_r(NULL, ", ", &save_ptr);
  286|     22|    algorithm = strtok_r(NULL, ", ", &save_ptr);
  287|     22|    member_type = strtok_r(NULL, ", ", &save_ptr);
  288|     22|    dst = strtok_r(NULL, ", ", &save_ptr);
  289|     22|    member_delim = strtok_r(NULL, ": ", &save_ptr);
  290|       |
  291|     22|    error = bundle_parse__(s, port_map,
  292|     22|                           &save_ptr, fields, basis, algorithm, member_type,
  293|     22|                           dst, member_delim, ofpacts);
  294|       |
  295|     22|    free(tokstr);
  296|       |
  297|     22|    return error;
  298|     22|}
bundle.c:bundle_parse__:
  155|  2.75k|{
  156|  2.75k|    struct ofpact_bundle *bundle;
  157|       |
  158|  2.75k|    if (!member_delim) {
  ------------------
  |  Branch (158:9): [True: 8, False: 2.74k]
  ------------------
  159|      8|        return xasprintf("%s: not enough arguments to bundle action", s);
  160|      8|    }
  161|       |
  162|  2.74k|    if (strcasecmp(member_delim, "members")
  ------------------
  |  Branch (162:9): [True: 2.62k, False: 126]
  ------------------
  163|  2.62k|        && strcasecmp(member_delim, "slaves")) {
  ------------------
  |  Branch (163:12): [True: 107, False: 2.51k]
  ------------------
  164|    107|        return xasprintf("%s: missing member delimiter, expected `members', "
  165|    107|                         "got `%s'", s, member_delim);
  166|    107|    }
  167|       |
  168|  2.64k|    bundle = ofpact_put_BUNDLE(ofpacts);
  169|       |
  170|  79.2k|    for (;;) {
  171|  79.2k|        ofp_port_t member_port;
  172|  79.2k|        char *member;
  173|       |
  174|  79.2k|        member = strtok_r(NULL, ", []", save_ptr);
  175|  79.2k|        if (!member || bundle->n_members >= BUNDLE_MAX_MEMBERS) {
  ------------------
  |  |   43|  76.6k|#define BUNDLE_MAX_MEMBERS 2048
  ------------------
  |  Branch (175:13): [True: 2.62k, False: 76.6k]
  |  Branch (175:24): [True: 18, False: 76.6k]
  ------------------
  176|  2.64k|            break;
  177|  2.64k|        }
  178|       |
  179|  76.6k|        if (!ofputil_port_from_string(member, port_map, &member_port)) {
  ------------------
  |  Branch (179:13): [True: 1, False: 76.6k]
  ------------------
  180|      1|            return xasprintf("%s: bad port number", member);
  181|      1|        }
  182|  76.6k|        ofpbuf_put(ofpacts, &member_port, sizeof member_port);
  183|       |
  184|  76.6k|        bundle = ofpacts->header;
  185|  76.6k|        bundle->n_members++;
  186|  76.6k|    }
  187|       |
  188|  2.64k|    if (ofpbuf_oversized(ofpacts)) {
  ------------------
  |  Branch (188:9): [True: 0, False: 2.64k]
  ------------------
  189|      0|        return xasprintf("input too big");
  190|      0|    }
  191|       |
  192|  2.64k|    ofpact_finish_BUNDLE(ofpacts, &bundle);
  193|  2.64k|    bundle->basis = atoi(basis);
  194|       |
  195|  2.64k|    if (!strcasecmp(fields, "eth_src")) {
  ------------------
  |  Branch (195:9): [True: 71, False: 2.56k]
  ------------------
  196|     71|        bundle->fields = NX_HASH_FIELDS_ETH_SRC;
  197|  2.56k|    } else if (!strcasecmp(fields, "symmetric_l4")) {
  ------------------
  |  Branch (197:16): [True: 635, False: 1.93k]
  ------------------
  198|    635|        bundle->fields = NX_HASH_FIELDS_SYMMETRIC_L4;
  199|  1.93k|    } else if (!strcasecmp(fields, "symmetric_l3l4")) {
  ------------------
  |  Branch (199:16): [True: 128, False: 1.80k]
  ------------------
  200|    128|        bundle->fields = NX_HASH_FIELDS_SYMMETRIC_L3L4;
  201|  1.80k|    } else if (!strcasecmp(fields, "symmetric_l3l4+udp")) {
  ------------------
  |  Branch (201:16): [True: 456, False: 1.35k]
  ------------------
  202|    456|        bundle->fields = NX_HASH_FIELDS_SYMMETRIC_L3L4_UDP;
  203|  1.35k|    } else if (!strcasecmp(fields, "nw_src")) {
  ------------------
  |  Branch (203:16): [True: 292, False: 1.05k]
  ------------------
  204|    292|        bundle->fields = NX_HASH_FIELDS_NW_SRC;
  205|  1.05k|    } else if (!strcasecmp(fields, "nw_dst")) {
  ------------------
  |  Branch (205:16): [True: 339, False: 719]
  ------------------
  206|    339|        bundle->fields = NX_HASH_FIELDS_NW_DST;
  207|    719|    } else if (!strcasecmp(fields, "symmetric_l3")) {
  ------------------
  |  Branch (207:16): [True: 456, False: 263]
  ------------------
  208|    456|        bundle->fields = NX_HASH_FIELDS_SYMMETRIC_L3;
  209|    456|    } else {
  210|    263|        return xasprintf("%s: unknown fields `%s'", s, fields);
  211|    263|    }
  212|       |
  213|  2.37k|    if (!strcasecmp(algorithm, "active_backup")) {
  ------------------
  |  Branch (213:9): [True: 950, False: 1.42k]
  ------------------
  214|    950|        bundle->algorithm = NX_BD_ALG_ACTIVE_BACKUP;
  215|  1.42k|    } else if (!strcasecmp(algorithm, "hrw")) {
  ------------------
  |  Branch (215:16): [True: 1.36k, False: 67]
  ------------------
  216|  1.36k|        bundle->algorithm = NX_BD_ALG_HRW;
  217|  1.36k|    } else {
  218|     67|        return xasprintf("%s: unknown algorithm `%s'", s, algorithm);
  219|     67|    }
  220|       |
  221|  2.31k|    if (strcasecmp(member_type, "ofport")) {
  ------------------
  |  Branch (221:9): [True: 43, False: 2.26k]
  ------------------
  222|     43|        return xasprintf("%s: unknown member_type `%s'", s, member_type);
  223|     43|    }
  224|       |
  225|  2.26k|    if (dst) {
  ------------------
  |  Branch (225:9): [True: 7, False: 2.26k]
  ------------------
  226|      7|        char *error = mf_parse_subfield(&bundle->dst, dst);
  227|      7|        if (error) {
  ------------------
  |  Branch (227:13): [True: 1, False: 6]
  ------------------
  228|      1|            return error;
  229|      1|        }
  230|       |
  231|      6|        if (!mf_nxm_header(bundle->dst.field->id)) {
  ------------------
  |  Branch (231:13): [True: 1, False: 5]
  ------------------
  232|      1|            return xasprintf("%s: experimenter OXM field '%s' not supported",
  233|      1|                             s, dst);
  234|      1|        }
  235|      6|    }
  236|       |
  237|  2.26k|    return NULL;
  238|  2.26k|}

ofp-flow.c:htonll:
   29|  11.2k|{
   30|  11.2k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 11.2k]
  ------------------
   31|  11.2k|}
ofp-flow.c:be32_to_be16:
  135|    165|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
ofp-match.c:be32_to_be16:
  135|    139|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
ofp-parse.c:htonll:
   29|  3.84k|{
   30|  3.84k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 3.84k]
  ------------------
   31|  3.84k|}
util.c:htonll:
   29|   107k|{
   30|   107k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 107k]
  ------------------
   31|   107k|}
util.c:ntohll:
   35|   107k|{
   36|   107k|    return htonl(1) == 1 ? n : ((uint64_t) ntohl(n) << 32) | ntohl(n >> 32);
  ------------------
  |  Branch (36:12): [True: 0, False: 107k]
  ------------------
   37|   107k|}
flow.c:be32_to_be16:
  135|     66|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
meta-flow.c:be32_to_be16:
  135|  7.81k|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
meta-flow.c:hton128:
   48|  16.2k|{
   49|  16.2k|    ovs_be128 dst;
   50|       |
   51|  16.2k|    dst.be64.hi = htonll(src.u64.hi);
   52|  16.2k|    dst.be64.lo = htonll(src.u64.lo);
   53|  16.2k|    return dst;
   54|  16.2k|}
meta-flow.c:htonll:
   29|  46.8k|{
   30|  46.8k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 46.8k]
  ------------------
   31|  46.8k|}
meta-flow.c:ntoh128:
   58|  13.1k|{
   59|  13.1k|    ovs_u128 dst;
   60|       |
   61|  13.1k|    dst.u64.hi = ntohll(src.be64.hi);
   62|  13.1k|    dst.u64.lo = ntohll(src.be64.lo);
   63|  13.1k|    return dst;
   64|  13.1k|}
meta-flow.c:ntohll:
   35|  42.6k|{
   36|  42.6k|    return htonl(1) == 1 ? n : ((uint64_t) ntohl(n) << 32) | ntohl(n >> 32);
  ------------------
  |  Branch (36:12): [True: 0, False: 42.6k]
  ------------------
   37|  42.6k|}
nx-match.c:be32_to_be16:
  135|    285|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
nx-match.c:hton128:
   48|  9.05k|{
   49|  9.05k|    ovs_be128 dst;
   50|       |
   51|  9.05k|    dst.be64.hi = htonll(src.u64.hi);
   52|  9.05k|    dst.be64.lo = htonll(src.u64.lo);
   53|  9.05k|    return dst;
   54|  9.05k|}
nx-match.c:htonll:
   29|  45.3k|{
   30|  45.3k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 45.3k]
  ------------------
   31|  45.3k|}
ofp-actions.c:be32_to_be16:
  135|  12.8k|static inline ovs_be16 be32_to_be16(ovs_be32 x) { return x >> 16; }
ofp-actions.c:htonll:
   29|   115k|{
   30|   115k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 115k]
  ------------------
   31|   115k|}
learn.c:htonll:
   29|  2.99k|{
   30|  2.99k|    return htonl(1) == 1 ? n : ((uint64_t) htonl(n) << 32) | htonl(n >> 32);
  ------------------
  |  Branch (30:12): [True: 0, False: 2.99k]
  ------------------
   31|  2.99k|}

coverage_counter_register:
   53|    264|{
   54|    264|    if (n_coverage_counters >= allocated_coverage_counters) {
  ------------------
  |  Branch (54:9): [True: 18, False: 246]
  ------------------
   55|     18|        coverage_counters = x2nrealloc(coverage_counters,
   56|     18|                                       &allocated_coverage_counters,
   57|     18|                                       sizeof(struct coverage_counter*));
   58|     18|    }
   59|    264|    coverage_counters[n_coverage_counters++] = counter;
   60|    264|}

poll-loop.c:poll_create_node_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
poll-loop.c:poll_zero_timeout_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
seq.c:seq_change_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
timeval.c:long_poll_interval_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
unixctl.c:unixctl_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
unixctl.c:unixctl_replied_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
util.c:util_xalloc_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
util.c:util_xalloc_add:
   72|   675k|        {                                                               \
   73|   675k|            *counter_##COUNTER##_get() += n;                            \
   74|   675k|        }                                                               \
dp-packet.c:dp_packet_batch_grow_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dp-packet-gso.c:dp_packet_gso_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dp-packet-gso.c:dp_packet_partial_gso_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:flow_extract_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv4_pkt_len_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv4_pkt_too_short_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv6_pkt_len_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv6_pkt_too_short_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_malloc_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_malloc_add:
   72|  10.0k|        {                                                               \
   73|  10.0k|            *counter_##COUNTER##_get() += n;                            \
   74|  10.0k|        }                                                               \
hmap.c:hmap_pathological_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_reserve_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_expand_add:
   72|     34|        {                                                               \
   73|     34|            *counter_##COUNTER##_get() += n;                            \
   74|     34|        }                                                               \
hmap.c:hmap_pathological_add:
   72|     11|        {                                                               \
   73|     11|            *counter_##COUNTER##_get() += n;                            \
   74|     11|        }                                                               \
jsonrpc.c:jsonrpc_recv_incomplete_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_sent_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_add_router_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_get_stats_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_push_header_drops_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
stream.c:pstream_open_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
stream.c:stream_open_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_set_policing_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_arp_lookup_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_ifindex_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_hwaddr_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_set_hwaddr_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_ethtool_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_set_ethtool_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_linux_invalid_l4_csum_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_linux_unknown_l4_csum_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_overflow_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_recv_jumbo_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_sent_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
route-table.c:route_table_dump_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
tc.c:tc_netlink_malformed_reply_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ccmap.c:ccmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ccmap.c:ccmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
cmap.c:cmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
cmap.c:cmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_destroy_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_execute_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_execute_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_execute_with_help_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_del_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_flush_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_get_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_get_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_put_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_put_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_get_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_set_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_port_add_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_port_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_purge_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
lockfile.c:lockfile_lock_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
lockfile.c:lockfile_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
lockfile.c:lockfile_unlock_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:datapath_drop_sample_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:datapath_drop_nsh_decap_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_of_pipeline_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_bridge_not_found_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_recursion_too_deep_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_too_many_resubmit_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_stack_too_deep_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_no_recirculation_context_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_recirculation_conflict_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_too_many_mpls_labels_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_invalid_tunnel_metadata_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_unsupported_packet_type_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_congestion_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_forwarding_disabled_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_tunnel_routing_failed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_tunnel_output_no_ethernet_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_tunnel_neigh_cache_miss_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_tunnel_header_build_failed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
process.c:process_start_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-native-tnl.c:native_tnl_l3csum_checked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-native-tnl.c:native_tnl_l3csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-native-tnl.c:native_tnl_l4csum_checked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-native-tnl.c:native_tnl_l4csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-notifier.c:nln_changed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_full_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l3csum_checked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l3csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l4csum_checked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l4csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_lookup_natted_miss_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_zone_full_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_meter_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_upcall_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_lock_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_userspace_action_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_tunnel_push_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_tunnel_pop_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_recirc_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_port_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_bond_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_tnl_port_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_rx_invalid_packet_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_hw_post_process_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_hw_post_process_consumed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:dpif_netdev_output_grow_queues_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:dpif_netdev_recirc_big_batch_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_pathological_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_reserve_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_stuck_frag_list_expired_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_stuck_frag_list_purged_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_l3csum_checked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_l3csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_tcp_seq_chk_bypass_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_tcp_seq_chk_failed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_invalid_tcp_flags_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_uncommitted_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_unchanged_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_incomplete_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_aborted_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_success_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_try_again_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_not_locked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }

ds_init:
   30|  24.2k|{
   31|       |    ds->string = NULL;
   32|  24.2k|    ds->length = 0;
   33|  24.2k|    ds->allocated = 0;
   34|  24.2k|}
ds_clear:
   40|  4.22k|{
   41|  4.22k|    ds->length = 0;
   42|  4.22k|}
ds_reserve:
   60|  25.7k|{
   61|  25.7k|    if (min_length > ds->allocated || !ds->string) {
  ------------------
  |  Branch (61:9): [True: 20.4k, False: 5.33k]
  |  Branch (61:39): [True: 6, False: 5.32k]
  ------------------
   62|  20.4k|        ds->allocated += MAX(min_length, ds->allocated);
  ------------------
  |  |   95|  20.4k|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 20.4k, False: 6]
  |  |  ------------------
  ------------------
   63|  20.4k|        ds->allocated = MAX(8, ds->allocated);
  ------------------
  |  |   95|  20.4k|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 11.0k, False: 9.38k]
  |  |  ------------------
  ------------------
   64|  20.4k|        ds->string = xrealloc(ds->string, ds->allocated + 1);
   65|  20.4k|    }
   66|  25.7k|}
ds_put_uninit:
   73|  20.6k|{
   74|  20.6k|    ds_reserve(ds, ds->length + n);
   75|  20.6k|    ds->length += n;
   76|  20.6k|    ds->string[ds->length] = '\0';
   77|  20.6k|    return &ds->string[ds->length - n];
   78|  20.6k|}
ds_put_char__:
   82|  1.27k|{
   83|  1.27k|    *ds_put_uninit(ds, 1) = c;
   84|  1.27k|}
ds_put_utf8:
   89|  27.6k|{
   90|  27.6k|    if (uc <= 0x7f) {
  ------------------
  |  Branch (90:9): [True: 6.97k, False: 20.6k]
  ------------------
   91|  6.97k|        ds_put_char(ds, uc);
   92|  20.6k|    } else if (uc <= 0x7ff) {
  ------------------
  |  Branch (92:16): [True: 7.19k, False: 13.4k]
  ------------------
   93|  7.19k|        ds_put_char(ds, 0xc0 | (uc >> 6));
   94|  7.19k|        ds_put_char(ds, 0x80 | (uc & 0x3f));
   95|  13.4k|    } else if (uc <= 0xffff) {
  ------------------
  |  Branch (95:16): [True: 8.87k, False: 4.61k]
  ------------------
   96|  8.87k|        ds_put_char(ds, 0xe0 | (uc >> 12));
   97|  8.87k|        ds_put_char(ds, 0x80 | ((uc >> 6) & 0x3f));
   98|  8.87k|        ds_put_char(ds, 0x80 | (uc & 0x3f));
   99|  8.87k|    } else if (uc <= 0x10ffff) {
  ------------------
  |  Branch (99:16): [True: 4.61k, False: 0]
  ------------------
  100|  4.61k|        ds_put_char(ds, 0xf0 | (uc >> 18));
  101|  4.61k|        ds_put_char(ds, 0x80 | ((uc >> 12) & 0x3f));
  102|  4.61k|        ds_put_char(ds, 0x80 | ((uc >> 6) & 0x3f));
  103|  4.61k|        ds_put_char(ds, 0x80 | (uc & 0x3f));
  104|  4.61k|    } else {
  105|       |        /* Invalid code point.  Insert the Unicode general substitute
  106|       |         * REPLACEMENT CHARACTER. */
  107|      0|        ds_put_utf8(ds, 0xfffd);
  108|      0|    }
  109|  27.6k|}
ds_put_cstr:
  125|  19.3k|{
  126|  19.3k|    size_t s_len = strlen(s);
  127|  19.3k|    memcpy(ds_put_uninit(ds, s_len), s, s_len);
  128|  19.3k|}
ds_put_format:
  139|  1.27k|{
  140|  1.27k|    va_list args;
  141|       |
  142|  1.27k|    va_start(args, format);
  143|  1.27k|    ds_put_format_valist(ds, format, args);
  144|       |    va_end(args);
  145|  1.27k|}
ds_put_format_valist:
  149|  1.27k|{
  150|  1.27k|    va_list args;
  151|  1.27k|    size_t available;
  152|  1.27k|    int needed;
  153|       |
  154|  1.27k|    va_copy(args, args_);
  155|  1.27k|    available = ds->string ? ds->allocated - ds->length + 1 : 0;
  ------------------
  |  Branch (155:17): [True: 1.19k, False: 81]
  ------------------
  156|  1.27k|    needed = vsnprintf(ds->string
  ------------------
  |  Branch (156:24): [True: 1.19k, False: 81]
  ------------------
  157|  1.27k|                       ? &ds->string[ds->length]
  158|  1.27k|                       : NULL,
  159|  1.27k|                       available, format, args);
  160|  1.27k|    va_end(args);
  161|       |
  162|  1.27k|    if (needed < available) {
  ------------------
  |  Branch (162:9): [True: 634, False: 640]
  ------------------
  163|    634|        ds->length += needed;
  164|    640|    } else {
  165|    640|        ds_reserve(ds, ds->length + needed);
  166|       |
  167|    640|        va_copy(args, args_);
  168|    640|        available = ds->allocated - ds->length + 1;
  169|    640|        needed = vsnprintf(&ds->string[ds->length],
  170|    640|                           available, format, args);
  171|    640|        va_end(args);
  172|       |
  173|    640|        ovs_assert(needed < available);
  ------------------
  |  |   62|    640|#define ovs_assert ovs_ignore
  ------------------
  174|    640|        ds->length += needed;
  175|    640|    }
  176|  1.27k|}
ds_cstr:
  343|  14.4k|{
  344|  14.4k|    if (!ds->string) {
  ------------------
  |  Branch (344:9): [True: 0, False: 14.4k]
  ------------------
  345|      0|        ds_reserve(ds, 0);
  346|      0|    }
  347|  14.4k|    ds->string[ds->length] = '\0';
  348|  14.4k|    return ds->string;
  349|  14.4k|}
ds_steal_cstr:
  362|  9.83k|{
  363|  9.83k|    char *s = ds_cstr(ds);
  364|  9.83k|    ds_init(ds);
  365|  9.83k|    return s;
  366|  9.83k|}
ds_destroy:
  370|    130|{
  371|    130|    free(ds->string);
  372|    130|}
ds_put_hex:
  385|     28|{
  386|     28|    const uint8_t *buf = buf_;
  387|     28|    bool printed = false;
  388|     28|    int i;
  389|       |
  390|  1.03k|    for (i = 0; i < size; i++) {
  ------------------
  |  Branch (390:17): [True: 1.00k, False: 28]
  ------------------
  391|  1.00k|        uint8_t val = buf[i];
  392|  1.00k|        if (val || printed) {
  ------------------
  |  Branch (392:13): [True: 132, False: 870]
  |  Branch (392:20): [True: 202, False: 668]
  ------------------
  393|    334|            if (!printed) {
  ------------------
  |  Branch (393:17): [True: 28, False: 306]
  ------------------
  394|     28|                ds_put_format(ds, "0x%"PRIx8, val);
  395|    306|            } else {
  396|    306|                ds_put_format(ds, "%02"PRIx8, val);
  397|    306|            }
  398|    334|            printed = true;
  399|    334|        }
  400|  1.00k|    }
  401|     28|    if (!printed) {
  ------------------
  |  Branch (401:9): [True: 0, False: 28]
  ------------------
  402|      0|        ds_put_char(ds, '0');
  403|      0|    }
  404|     28|}
ds_chomp:
  505|     23|{
  506|     23|    if (ds->length > 0 && ds->string[ds->length - 1] == (char) c) {
  ------------------
  |  Branch (506:9): [True: 23, False: 0]
  |  Branch (506:27): [True: 23, False: 0]
  ------------------
  507|     23|        ds->string[--ds->length] = '\0';
  508|     23|        return true;
  509|     23|    } else {
  510|       |        return false;
  511|      0|    }
  512|     23|}

flow_zero_wildcards:
 1288|    456|{
 1289|    456|    uint64_t *flow_u64 = (uint64_t *) flow;
 1290|    456|    const uint64_t *wc_u64 = (const uint64_t *) &wildcards->masks;
 1291|    456|    size_t i;
 1292|       |
 1293|  42.4k|    for (i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|  42.4k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (1293:17): [True: 41.9k, False: 456]
  ------------------
 1294|  41.9k|        flow_u64[i] &= wc_u64[i];
 1295|  41.9k|    }
 1296|    456|}
ct_state_to_string:
 1416|  8.65k|{
 1417|  8.65k|    switch (state) {
 1418|      0|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
 1419|      0|        CS_STATES
  ------------------
  |  |  926|  1.36k|    CS_STATE(NEW,         0, "new")             \
  |  |  ------------------
  |  |  |  | 1418|  1.36k|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 1.36k, False: 7.29k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  927|  1.36k|    CS_STATE(ESTABLISHED, 1, "est")             \
  |  |  ------------------
  |  |  |  | 1418|  1.26k|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 1.26k, False: 7.39k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|  1.26k|    CS_STATE(RELATED,     2, "rel")             \
  |  |  ------------------
  |  |  |  | 1418|    926|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 926, False: 7.73k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  929|    926|    CS_STATE(REPLY_DIR,   3, "rpl")             \
  |  |  ------------------
  |  |  |  | 1418|    757|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 757, False: 7.89k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  930|    757|    CS_STATE(INVALID,     4, "inv")             \
  |  |  ------------------
  |  |  |  | 1418|    614|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 614, False: 8.04k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  931|    614|    CS_STATE(TRACKED,     5, "trk")             \
  |  |  ------------------
  |  |  |  | 1418|    553|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 553, False: 8.10k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  932|    553|    CS_STATE(SRC_NAT,     6, "snat")            \
  |  |  ------------------
  |  |  |  | 1418|    196|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 196, False: 8.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  933|    196|    CS_STATE(DST_NAT,     7, "dnat")
  |  |  ------------------
  |  |  |  | 1418|    196|#define CS_STATE(ENUM, INDEX, NAME) case CS_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1418:37): [True: 196, False: 8.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1420|      0|#undef CS_STATE
 1421|  2.78k|    default:
  ------------------
  |  Branch (1421:5): [True: 2.78k, False: 5.87k]
  ------------------
 1422|       |        return NULL;
 1423|  8.65k|    }
 1424|  8.65k|}
flow_tun_flag_to_string:
 1539|    802|{
 1540|    802|    switch (flags) {
 1541|     23|    case FLOW_TNL_F_DONT_FRAGMENT:
  ------------------
  |  |   61|     23|#define FLOW_TNL_F_DONT_FRAGMENT (1 << 1)
  ------------------
  |  Branch (1541:5): [True: 23, False: 779]
  ------------------
 1542|     23|        return "df";
 1543|     23|    case FLOW_TNL_F_CSUM:
  ------------------
  |  |   62|     23|#define FLOW_TNL_F_CSUM (1 << 2)
  ------------------
  |  Branch (1543:5): [True: 23, False: 779]
  ------------------
 1544|     23|        return "csum";
 1545|     20|    case FLOW_TNL_F_KEY:
  ------------------
  |  |   63|     20|#define FLOW_TNL_F_KEY (1 << 3)
  ------------------
  |  Branch (1545:5): [True: 20, False: 782]
  ------------------
 1546|     20|        return "key";
 1547|    379|    case FLOW_TNL_F_OAM:
  ------------------
  |  |   56|    379|#define FLOW_TNL_F_OAM (1 << 0)
  ------------------
  |  Branch (1547:5): [True: 379, False: 423]
  ------------------
 1548|    379|        return "oam";
 1549|    357|    default:
  ------------------
  |  Branch (1549:5): [True: 357, False: 445]
  ------------------
 1550|       |        return NULL;
 1551|    802|    }
 1552|    802|}
format_flags:
 1557|     23|{
 1558|     23|    uint32_t bad = 0;
 1559|       |
 1560|     23|    if (!flags) {
  ------------------
  |  Branch (1560:9): [True: 0, False: 23]
  ------------------
 1561|      0|        ds_put_char(ds, '0');
 1562|      0|        return;
 1563|      0|    }
 1564|    200|    while (flags) {
  ------------------
  |  Branch (1564:12): [True: 177, False: 23]
  ------------------
 1565|    177|        uint32_t bit = rightmost_1bit(flags);
 1566|    177|        const char *s;
 1567|       |
 1568|    177|        s = bit_to_string(bit);
 1569|    177|        if (s) {
  ------------------
  |  Branch (1569:13): [True: 86, False: 91]
  ------------------
 1570|     86|            ds_put_format(ds, "%s%c", s, del);
 1571|     91|        } else {
 1572|     91|            bad |= bit;
 1573|     91|        }
 1574|       |
 1575|    177|        flags &= ~bit;
 1576|    177|    }
 1577|       |
 1578|     23|    if (bad) {
  ------------------
  |  Branch (1578:9): [True: 18, False: 5]
  ------------------
 1579|     18|        ds_put_format(ds, "0x%"PRIx32"%c", bad, del);
 1580|     18|    }
 1581|     23|    ds_chomp(ds, del);
 1582|     23|}
format_flags_masked:
 1588|     24|{
 1589|     24|    if (name) {
  ------------------
  |  Branch (1589:9): [True: 0, False: 24]
  ------------------
 1590|      0|        ds_put_format(ds, "%s%s=%s", colors.param, name, colors.end);
 1591|      0|    }
 1592|       |
 1593|     24|    if (mask == max_mask) {
  ------------------
  |  Branch (1593:9): [True: 23, False: 1]
  ------------------
 1594|     23|        format_flags(ds, bit_to_string, flags, '|');
 1595|     23|        return;
 1596|     23|    }
 1597|       |
 1598|      1|    if (!mask) {
  ------------------
  |  Branch (1598:9): [True: 0, False: 1]
  ------------------
 1599|      0|        ds_put_cstr(ds, "0/0");
 1600|      0|        return;
 1601|      0|    }
 1602|       |
 1603|     33|    while (mask) {
  ------------------
  |  Branch (1603:12): [True: 32, False: 1]
  ------------------
 1604|     32|        uint32_t bit = rightmost_1bit(mask);
 1605|     32|        const char *s = bit_to_string(bit);
 1606|       |
 1607|     32|        ds_put_format(ds, "%s%s", (flags & bit) ? "+" : "-",
  ------------------
  |  Branch (1607:35): [True: 1, False: 31]
  ------------------
 1608|     32|                      s ? s : "[Unknown]");
  ------------------
  |  Branch (1608:23): [True: 8, False: 24]
  ------------------
 1609|     32|        mask &= ~bit;
 1610|     32|    }
 1611|      1|}
format_packet_type_masked:
 1633|     33|{
 1634|     33|    if (value == htonl(PT_ETH) && mask == OVS_BE32_MAX) {
  ------------------
  |  |   43|      0|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (1634:9): [True: 0, False: 33]
  |  Branch (1634:35): [True: 0, False: 0]
  ------------------
 1635|      0|        ds_put_cstr(s, "eth");
 1636|     33|    } else {
 1637|     33|        ds_put_cstr(s, "packet_type=(");
 1638|     33|        put_u16_masked(s, pt_ns(value), pt_ns(mask));
 1639|     33|        ds_put_char(s, ',');
 1640|     33|        put_u16_masked(s, pt_ns_type(value), pt_ns_type(mask));
 1641|     33|        ds_put_char(s, ')');
 1642|     33|    }
 1643|     33|}
parse_flags:
 1664|  3.47k|{
 1665|  3.47k|    uint32_t result = 0;
 1666|  3.47k|    int n;
 1667|       |
 1668|       |    /* Parse masked flags in numeric format? */
 1669|  3.47k|    if (res_mask && ovs_scan(s, "%"SCNi32"/%"SCNi32"%n",
  ------------------
  |  Branch (1669:9): [True: 3.47k, False: 0]
  |  Branch (1669:21): [True: 1.01k, False: 2.46k]
  ------------------
 1670|  3.47k|                             res_flags, res_mask, &n) && n > 0) {
  ------------------
  |  Branch (1670:58): [True: 1.01k, False: 0]
  ------------------
 1671|  1.01k|        if (*res_flags & ~allowed || *res_mask & ~allowed) {
  ------------------
  |  Branch (1671:13): [True: 17, False: 996]
  |  Branch (1671:38): [True: 26, False: 970]
  ------------------
 1672|     43|            goto unknown;
 1673|     43|        }
 1674|    970|        return n;
 1675|  1.01k|    }
 1676|       |
 1677|  2.46k|    n = 0;
 1678|       |
 1679|  2.46k|    if (res_mask && (*s == '+' || *s == '-')) {
  ------------------
  |  Branch (1679:9): [True: 2.46k, False: 0]
  |  Branch (1679:22): [True: 404, False: 2.05k]
  |  Branch (1679:35): [True: 424, False: 1.63k]
  ------------------
 1680|    828|        uint32_t flags = 0, mask = 0;
 1681|       |
 1682|       |        /* Parse masked flags. */
 1683|  2.40k|        while (s[0] != end) {
  ------------------
  |  Branch (1683:16): [True: 1.65k, False: 744]
  ------------------
 1684|  1.65k|            bool set;
 1685|  1.65k|            uint32_t bit;
 1686|  1.65k|            size_t len;
 1687|       |
 1688|  1.65k|            if (s[0] == '+') {
  ------------------
  |  Branch (1688:17): [True: 762, False: 894]
  ------------------
 1689|    762|                set = true;
 1690|    894|            } else if (s[0] == '-') {
  ------------------
  |  Branch (1690:24): [True: 894, False: 0]
  ------------------
 1691|    894|                set = false;
 1692|    894|            } else {
 1693|      0|                if (res_string) {
  ------------------
  |  Branch (1693:21): [True: 0, False: 0]
  ------------------
 1694|      0|                    *res_string = xasprintf("%s: %s must be preceded by '+' "
 1695|      0|                                            "(for SET) or '-' (NOT SET)", s,
 1696|      0|                                            field_name);
 1697|      0|                }
 1698|      0|                return -EINVAL;
 1699|      0|            }
 1700|  1.65k|            s++;
 1701|  1.65k|            n++;
 1702|       |
 1703|  13.1k|            for (bit = 1; bit; bit <<= 1) {
  ------------------
  |  Branch (1703:27): [True: 13.0k, False: 72]
  ------------------
 1704|  13.0k|                const char *fname = bit_to_string(bit);
 1705|       |
 1706|  13.0k|                if (!fname) {
  ------------------
  |  Branch (1706:21): [True: 1.65k, False: 11.4k]
  ------------------
 1707|  1.65k|                    continue;
 1708|  1.65k|                }
 1709|       |
 1710|  11.4k|                len = strlen(fname);
 1711|  11.4k|                if (strncmp(s, fname, len) ||
  ------------------
  |  Branch (1711:21): [True: 9.80k, False: 1.59k]
  ------------------
 1712|  9.81k|                    (s[len] != '+' && s[len] != '-' && s[len] != end)) {
  ------------------
  |  Branch (1712:22): [True: 1.23k, False: 364]
  |  Branch (1712:39): [True: 760, False: 473]
  |  Branch (1712:56): [True: 13, False: 747]
  ------------------
 1713|  9.81k|                    continue;
 1714|  9.81k|                }
 1715|       |
 1716|  1.58k|                if (mask & bit) {
  ------------------
  |  Branch (1716:21): [True: 11, False: 1.57k]
  ------------------
 1717|       |                    /* bit already set. */
 1718|     11|                    if (res_string) {
  ------------------
  |  Branch (1718:25): [True: 11, False: 0]
  ------------------
 1719|     11|                        *res_string = xasprintf("%s: Each %s flag can be "
 1720|     11|                                                "specified only once", s,
 1721|     11|                                                field_name);
 1722|     11|                    }
 1723|     11|                    return -EINVAL;
 1724|     11|                }
 1725|  1.57k|                if (!(bit & allowed)) {
  ------------------
  |  Branch (1725:21): [True: 1, False: 1.57k]
  ------------------
 1726|      1|                    goto unknown;
 1727|      1|                }
 1728|  1.57k|                if (set) {
  ------------------
  |  Branch (1728:21): [True: 733, False: 839]
  ------------------
 1729|    733|                   flags |= bit;
 1730|    733|                }
 1731|  1.57k|                mask |= bit;
 1732|  1.57k|                break;
 1733|  1.57k|            }
 1734|       |
 1735|  1.64k|            if (!bit) {
  ------------------
  |  Branch (1735:17): [True: 72, False: 1.57k]
  ------------------
 1736|     72|                goto unknown;
 1737|     72|            }
 1738|  1.57k|            s += len;
 1739|  1.57k|            n += len;
 1740|  1.57k|        }
 1741|       |
 1742|    744|        *res_flags = flags;
 1743|    744|        *res_mask = mask;
 1744|    744|        return n;
 1745|    828|    }
 1746|       |
 1747|       |    /* Parse unmasked flags.  If a flag is present, it is set, otherwise
 1748|       |     * it is not set. */
 1749|  5.85k|    while (s[n] != end) {
  ------------------
  |  Branch (1749:12): [True: 4.35k, False: 1.49k]
  ------------------
 1750|  4.35k|        unsigned long long int flags;
 1751|  4.35k|        uint32_t bit;
 1752|  4.35k|        int n0;
 1753|       |
 1754|  4.35k|        if (ovs_scan(&s[n], "%lli%n", &flags, &n0)) {
  ------------------
  |  Branch (1754:13): [True: 3.03k, False: 1.32k]
  ------------------
 1755|  3.03k|            if (flags & ~allowed) {
  ------------------
  |  Branch (1755:17): [True: 33, False: 3.00k]
  ------------------
 1756|     33|                goto unknown;
 1757|     33|            }
 1758|  3.00k|            n += n0 + (s[n + n0] == '|');
 1759|  3.00k|            result |= flags;
 1760|  3.00k|            continue;
 1761|  3.03k|        }
 1762|       |
 1763|  10.6k|        for (bit = 1; bit; bit <<= 1) {
  ------------------
  |  Branch (1763:23): [True: 10.5k, False: 102]
  ------------------
 1764|  10.5k|            const char *name = bit_to_string(bit);
 1765|  10.5k|            size_t len;
 1766|       |
 1767|  10.5k|            if (!name) {
  ------------------
  |  Branch (1767:17): [True: 2.36k, False: 8.14k]
  ------------------
 1768|  2.36k|                continue;
 1769|  2.36k|            }
 1770|       |
 1771|  8.14k|            len = strlen(name);
 1772|  8.14k|            if (!strncmp(s + n, name, len) &&
  ------------------
  |  Branch (1772:17): [True: 1.23k, False: 6.91k]
  ------------------
 1773|  1.23k|                (s[n + len] == '|' || s[n + len] == end)) {
  ------------------
  |  Branch (1773:18): [True: 583, False: 653]
  |  Branch (1773:39): [True: 638, False: 15]
  ------------------
 1774|  1.22k|                if (!(bit & allowed)) {
  ------------------
  |  Branch (1774:21): [True: 2, False: 1.21k]
  ------------------
 1775|      2|                    goto unknown;
 1776|      2|                }
 1777|  1.21k|                result |= bit;
 1778|  1.21k|                n += len + (s[n + len] == '|');
 1779|  1.21k|                break;
 1780|  1.22k|            }
 1781|  8.14k|        }
 1782|       |
 1783|  1.32k|        if (!bit) {
  ------------------
  |  Branch (1783:13): [True: 102, False: 1.21k]
  ------------------
 1784|    102|            goto unknown;
 1785|    102|        }
 1786|  1.32k|    }
 1787|       |
 1788|  1.49k|    *res_flags = result;
 1789|  1.49k|    if (res_mask) {
  ------------------
  |  Branch (1789:9): [True: 1.49k, False: 0]
  ------------------
 1790|  1.49k|        *res_mask = UINT32_MAX;
 1791|  1.49k|    }
 1792|  1.49k|    if (res_string) {
  ------------------
  |  Branch (1792:9): [True: 1.49k, False: 0]
  ------------------
 1793|  1.49k|        *res_string = NULL;
 1794|  1.49k|    }
 1795|  1.49k|    return n;
 1796|       |
 1797|    253|unknown:
 1798|    253|    if (res_string) {
  ------------------
  |  Branch (1798:9): [True: 253, False: 0]
  ------------------
 1799|    253|        *res_string = xasprintf("%s: unknown %s flag(s)", s, field_name);
 1800|    253|    }
 1801|       |    return -EINVAL;
 1802|  1.63k|}
flow_wildcards_init_catchall:
 1885|  33.9k|{
 1886|  33.9k|    memset(&wc->masks, 0, sizeof wc->masks);
 1887|  33.9k|}
flow_wildcards_equal:
 2230|  10.0k|{
 2231|  10.0k|    return flow_equal(&a->masks, &b->masks);
 2232|  10.0k|}
flow_wildcards_set_reg_mask:
 2275|  47.2k|{
 2276|  47.2k|    wc->masks.regs[idx] = mask;
 2277|  47.2k|}
flow_wildcards_set_xreg_mask:
 2283|  19.1k|{
 2284|  19.1k|    flow_set_xreg(&wc->masks, idx, mask);
 2285|  19.1k|}
flow_wildcards_set_xxreg_mask:
 2292|  14.0k|{
 2293|  14.0k|    flow_set_xxreg(&wc->masks, idx, mask);
 2294|  14.0k|}
flow_set_dl_vlan:
 2780|    799|{
 2781|    799|    if (vid == htons(OFP10_VLAN_NONE)) {
  ------------------
  |  Branch (2781:9): [True: 345, False: 454]
  ------------------
 2782|    345|        flow->vlans[id].tci = htons(0);
 2783|    454|    } else {
 2784|    454|        vid &= htons(VLAN_VID_MASK);
 2785|    454|        flow->vlans[id].tci &= ~htons(VLAN_VID_MASK);
 2786|       |        flow->vlans[id].tci |= htons(VLAN_CFI) | vid;
 2787|    454|    }
 2788|    799|}
flow_set_vlan_vid:
 2805|    458|{
 2806|       |    ovs_be16 mask = htons(VLAN_VID_MASK | VLAN_CFI);
 2807|    458|    flow->vlans[0].tci &= ~mask;
 2808|    458|    flow->vlans[0].tci |= vid & mask;
 2809|    458|}
flow_set_vlan_pcp:
 2820|    802|{
 2821|    802|    pcp &= 0x07;
 2822|    802|    flow->vlans[id].tci &= ~htons(VLAN_PCP_MASK);
 2823|       |    flow->vlans[id].tci |= htons((pcp << VLAN_PCP_SHIFT) | VLAN_CFI);
 2824|    802|}
flow_count_vlan_headers:
 2829|  2.25k|{
 2830|  2.25k|    int i;
 2831|       |
 2832|  4.23k|    for (i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) {
  ------------------
  |  |   75|  4.23k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
  |  Branch (2832:17): [True: 3.88k, False: 354]
  ------------------
 2833|  3.88k|        if (!(flow->vlans[i].tci & htons(VLAN_CFI))) {
  ------------------
  |  Branch (2833:13): [True: 1.89k, False: 1.98k]
  ------------------
 2834|  1.89k|            break;
 2835|  1.89k|        }
 2836|  3.88k|    }
 2837|  2.25k|    return i;
 2838|  2.25k|}
flow_pop_vlan:
 2860|  2.25k|{
 2861|  2.25k|    int n = flow_count_vlan_headers(flow);
 2862|  2.25k|    if (n > 1) {
  ------------------
  |  Branch (2862:9): [True: 354, False: 1.89k]
  ------------------
 2863|    354|        if (wc) {
  ------------------
  |  Branch (2863:13): [True: 0, False: 354]
  ------------------
 2864|      0|            memset(&wc->masks.vlans[1], 0xff,
 2865|      0|                   sizeof(union flow_vlan_hdr) * (n - 1));
 2866|      0|        }
 2867|    354|        memmove(&flow->vlans[0], &flow->vlans[1],
 2868|    354|                sizeof(union flow_vlan_hdr) * (n - 1));
 2869|    354|    }
 2870|  2.25k|    if (n > 0) {
  ------------------
  |  Branch (2870:9): [True: 1.63k, False: 616]
  ------------------
 2871|  1.63k|        memset(&flow->vlans[n - 1], 0, sizeof(union flow_vlan_hdr));
 2872|  1.63k|    }
 2873|  2.25k|}
flow_push_vlan_uninit:
 2877|  1.27k|{
 2878|  1.27k|    if (wc) {
  ------------------
  |  Branch (2878:9): [True: 0, False: 1.27k]
  ------------------
 2879|      0|        int n = flow_count_vlan_headers(flow);
 2880|      0|        if (n) {
  ------------------
  |  Branch (2880:13): [True: 0, False: 0]
  ------------------
 2881|      0|            memset(wc->masks.vlans, 0xff, sizeof(union flow_vlan_hdr) * n);
 2882|      0|        }
 2883|      0|    }
 2884|  1.27k|    memmove(&flow->vlans[1], &flow->vlans[0],
 2885|  1.27k|            sizeof(union flow_vlan_hdr) * (FLOW_MAX_VLAN_HEADERS - 1));
  ------------------
  |  |   75|  1.27k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
 2886|  1.27k|    memset(&flow->vlans[0], 0, sizeof(union flow_vlan_hdr));
 2887|  1.27k|}
flow_set_mpls_label:
 3076|    134|{
 3077|    134|    set_mpls_lse_label(&flow->mpls_lse[idx], label);
 3078|    134|}
flow_set_mpls_ttl:
 3084|    868|{
 3085|    868|    set_mpls_lse_ttl(&flow->mpls_lse[idx], ttl);
 3086|    868|}
flow_set_mpls_tc:
 3092|    770|{
 3093|    770|    set_mpls_lse_tc(&flow->mpls_lse[idx], tc);
 3094|    770|}
flow_set_mpls_bos:
 3099|  1.76k|{
 3100|  1.76k|    set_mpls_lse_bos(&flow->mpls_lse[idx], bos);
 3101|  1.76k|}
miniflow_init:
 3474|  20.1k|{
 3475|  20.1k|    uint64_t *dst_u64 = miniflow_values(dst);
 3476|  20.1k|    size_t idx;
 3477|       |
 3478|  20.7k|    FLOWMAP_FOR_EACH_INDEX(idx, dst->map) {
  ------------------
  |  |  337|  20.1k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  331|  20.1k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  338|  40.8k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (338:10): [True: 20.7k, False: 20.1k]
  |  |  ------------------
  ------------------
 3479|  20.7k|        *dst_u64++ = flow_u64_value(src, idx);
 3480|  20.7k|    }
 3481|  20.1k|}
miniflow_map_init:
 3486|  10.0k|{
 3487|       |    /* Initialize map, counting the number of nonzero elements. */
 3488|  10.0k|    flowmap_init(&flow->map);
 3489|   935k|    for (size_t i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|   935k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (3489:24): [True: 925k, False: 10.0k]
  ------------------
 3490|   925k|        if (flow_u64_value(src, i)) {
  ------------------
  |  Branch (3490:13): [True: 10.3k, False: 914k]
  ------------------
 3491|  10.3k|            flowmap_set(&flow->map, i, 1);
 3492|  10.3k|        }
 3493|   925k|    }
 3494|  10.0k|}
miniflow_alloc:
 3501|  10.0k|{
 3502|  10.0k|    size_t n_values = miniflow_n_values(src);
 3503|  10.0k|    size_t data_size = MINIFLOW_VALUES_SIZE(n_values);
  ------------------
  |  |  527|  10.0k|#define MINIFLOW_VALUES_SIZE(COUNT) ((COUNT) * sizeof(uint64_t))
  ------------------
 3504|  10.0k|    struct miniflow *dst = xmalloc(n * (sizeof *src + data_size));
 3505|  10.0k|    size_t i;
 3506|       |
 3507|  10.0k|    COVERAGE_INC(miniflow_malloc);
  ------------------
  |  |   83|  10.0k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|  10.0k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
 3508|       |
 3509|  30.1k|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3509:17): [True: 20.1k, False: 10.0k]
  ------------------
 3510|  20.1k|        *dst = *src;   /* Copy maps. */
 3511|  20.1k|        dsts[i] = dst;
 3512|  20.1k|        dst += 1;      /* Just past the maps. */
 3513|  20.1k|        dst = (struct miniflow *)((uint64_t *)dst + n_values); /* Skip data. */
 3514|  20.1k|    }
 3515|  10.0k|    return data_size;
 3516|  10.0k|}
miniflow_expand:
 3547|  39.7k|{
 3548|  39.7k|    memset(dst, 0, sizeof *dst);
 3549|  39.7k|    flow_union_with_miniflow(dst, src);
 3550|  39.7k|}
minimask_init:
 3616|  10.0k|{
 3617|  10.0k|    miniflow_init(&mask->masks, &wc->masks);
 3618|  10.0k|}
minimask_expand:
 3660|  19.8k|{
 3661|  19.8k|    miniflow_expand(&mask->masks, &wc->masks);
 3662|  19.8k|}
flow.c:put_u16_masked:
 1615|     66|{
 1616|     66|    if (!mask) {
  ------------------
  |  Branch (1616:9): [True: 0, False: 66]
  ------------------
 1617|      0|        ds_put_char(s, '*');
 1618|     66|    } else {
 1619|     66|        if (value > 9) {
  ------------------
  |  Branch (1619:13): [True: 49, False: 17]
  ------------------
 1620|     49|            ds_put_format(s, "0x%"PRIx16, value);
 1621|     49|        } else {
 1622|     17|            ds_put_format(s, "%"PRIu16, value);
 1623|     17|        }
 1624|       |
 1625|     66|        if (mask != UINT16_MAX) {
  ------------------
  |  Branch (1625:13): [True: 0, False: 66]
  ------------------
 1626|       |            ds_put_format(s, "/0x%"PRIx16, mask);
 1627|      0|        }
 1628|     66|    }
 1629|     66|}

match.c:flow_set_xreg:
  149|  19.1k|{
  150|  19.1k|    flow->regs[idx * 2] = value >> 32;
  151|  19.1k|    flow->regs[idx * 2 + 1] = value;
  152|  19.1k|}
match.c:flow_set_xxreg:
  169|  14.0k|{
  170|  14.0k|    flow->regs[idx * 4] = value.u64.hi >> 32;
  171|  14.0k|    flow->regs[idx * 4 + 1] = value.u64.hi;
  172|  14.0k|    flow->regs[idx * 4 + 2] = value.u64.lo >> 32;
  173|  14.0k|    flow->regs[idx * 4 + 3] = value.u64.lo;
  174|  14.0k|}
match.c:u16_to_ofp:
  214|  1.82k|{
  215|  1.82k|    return OFP_PORT_C(port);
  ------------------
  |  |  157|  1.82k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  ------------------
  216|  1.82k|}
ofp-flow.c:ofp_to_u16:
  196|  9.15k|{
  197|  9.15k|    return (OVS_FORCE uint16_t) ofp_port;
  198|  9.15k|}
ofp-match.c:ofp_to_u16:
  196|  5.10k|{
  197|  5.10k|    return (OVS_FORCE uint16_t) ofp_port;
  198|  5.10k|}
ofp-port.c:ofp_to_u16:
  196|   302k|{
  197|   302k|    return (OVS_FORCE uint16_t) ofp_port;
  198|   302k|}
ofp-port.c:u16_to_ofp:
  214|   216k|{
  215|   216k|    return OFP_PORT_C(port);
  ------------------
  |  |  157|   216k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  ------------------
  216|   216k|}
ofp-port.c:ofp11_to_u32:
  208|  1.32k|{
  209|  1.32k|    return (OVS_FORCE uint32_t) ofp11_port;
  210|  1.32k|}
flow.c:miniflow_values:
  530|  20.1k|{
  531|  20.1k|    return (uint64_t *)(mf + 1);
  532|  20.1k|}
flow.c:flowmap_set:
  385|  10.3k|{
  386|  10.3k|    map_t n_bits_mask = (MAP_1 << n_bits) - 1;
  ------------------
  |  |  271|  10.3k|#define MAP_1 (map_t)1
  ------------------
  387|  10.3k|    size_t unit = idx / MAP_T_BITS;
  ------------------
  |  |  270|  10.3k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  388|       |
  389|  10.3k|    idx %= MAP_T_BITS;
  ------------------
  |  |  270|  10.3k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  390|       |
  391|  10.3k|    fm->bits[unit] |= n_bits_mask << idx;
  392|       |    /* The seemingly unnecessary bounds check on 'unit' is a workaround for a
  393|       |     * false-positive array out of bounds error by GCC 4.9. */
  394|  10.3k|    if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  280|  10.3k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  300|  20.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
                  if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  270|  6.22k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  |  Branch (394:9): [True: 6.22k, False: 4.16k]
  |  Branch (394:37): [True: 0, False: 6.22k]
  ------------------
  395|       |        /* 'MAP_T_BITS - idx' bits were set on 'unit', set the remaining
  396|       |         * bits from the next unit. */
  397|       |        fm->bits[unit + 1] |= n_bits_mask >> (MAP_T_BITS - idx);
  ------------------
  |  |  270|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  398|      0|    }
  399|  10.3k|}
flow.c:flowmap_init:
  343|  10.0k|{
  344|  10.0k|    memset(fm, 0, sizeof *fm);
  345|  10.0k|}
flow.c:flow_equal:
  184|  10.0k|{
  185|  10.0k|    return !flow_compare_3way(a, b);
  186|  10.0k|}
flow.c:flow_compare_3way:
  178|  10.0k|{
  179|  10.0k|    return memcmp(a, b, sizeof *a);
  180|  10.0k|}
flow.c:flow_set_xreg:
  149|  19.1k|{
  150|  19.1k|    flow->regs[idx * 2] = value >> 32;
  151|  19.1k|    flow->regs[idx * 2 + 1] = value;
  152|  19.1k|}
flow.c:flow_set_xxreg:
  169|  14.0k|{
  170|  14.0k|    flow->regs[idx * 4] = value.u64.hi >> 32;
  171|  14.0k|    flow->regs[idx * 4 + 1] = value.u64.hi;
  172|  14.0k|    flow->regs[idx * 4 + 2] = value.u64.lo >> 32;
  173|  14.0k|    flow->regs[idx * 4 + 3] = value.u64.lo;
  174|  14.0k|}
flow.c:miniflow_get_values:
  535|  39.7k|{
  536|  39.7k|    return (const uint64_t *)(mf + 1);
  537|  39.7k|}
flow.c:flowmap_next_index:
  479|  40.8k|{
  480|  61.0k|    for (;;) {
  481|  61.0k|        map_t *map = &aux->map.bits[aux->unit];
  482|  61.0k|        if (*map) {
  ------------------
  |  Branch (482:13): [True: 20.7k, False: 40.2k]
  ------------------
  483|  20.7k|            *idx = aux->unit * MAP_T_BITS + raw_ctz(*map);
  ------------------
  |  |  270|  20.7k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  484|  20.7k|            *map = zero_rightmost_1bit(*map);
  485|  20.7k|            return true;
  486|  20.7k|        }
  487|  40.2k|        if (++aux->unit >= FLOWMAP_UNITS) {
  ------------------
  |  |  280|  40.2k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  300|  40.2k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  |  Branch (487:13): [True: 20.1k, False: 20.1k]
  ------------------
  488|       |            return false;
  489|  20.1k|        }
  490|  40.2k|    }
  491|  40.8k|}
flow.c:flow_u64_value:
  557|   945k|{
  558|   945k|    return ((uint64_t *)flow)[index];
  559|   945k|}
flow.c:miniflow_n_values:
  568|  10.0k|{
  569|  10.0k|    return flowmap_n_1bits(flow->map);
  570|  10.0k|}
flow.c:flowmap_n_1bits:
  462|  10.0k|{
  463|  10.0k|    unsigned int n_1bits = 0;
  464|  10.0k|    size_t unit;
  465|       |
  466|  20.1k|    FLOWMAP_FOR_EACH_UNIT (unit) {
  ------------------
  |  |  320|  30.1k|    for ((UNIT) = 0; (UNIT) < FLOWMAP_UNITS; (UNIT)++)
  |  |  ------------------
  |  |  |  |  280|  30.1k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  30.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (320:22): [True: 20.1k, False: 10.0k]
  |  |  ------------------
  ------------------
  467|  20.1k|        n_1bits += count_1bits(fm.bits[unit]);
  468|  20.1k|    }
  469|  10.0k|    return n_1bits;
  470|  10.0k|}
flow.c:flow_union_with_miniflow:
  938|  39.7k|{
  939|  39.7k|    flow_union_with_miniflow_subset(dst, src, src->map);
  940|  39.7k|}
flow.c:flow_union_with_miniflow_subset:
  919|  39.7k|{
  920|  39.7k|    uint64_t *dst_u64 = (uint64_t *) dst;
  921|  39.7k|    const uint64_t *p = miniflow_get_values(src);
  922|  39.7k|    map_t map;
  923|       |
  924|  79.5k|    FLOWMAP_FOR_EACH_MAP (map, subset) {
  ------------------
  |  |  324|  39.7k|    for (size_t unit__ = 0;                                       \
  |  |  325|   119k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  280|   119k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|   238k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (325:10): [True: 79.5k, False: 39.7k]
  |  |  |  Branch (325:36): [True: 79.5k, False: 0]
  |  |  ------------------
  |  |  326|  79.5k|         unit__++)
  ------------------
  925|  79.5k|        size_t idx;
  926|       |
  927|  79.5k|        MAP_FOR_EACH_INDEX(idx, map) {
  ------------------
  |  |  278|  79.5k|    ULLONG_FOR_EACH_1(IDX, MAP)
  |  |  ------------------
  |  |  |  |  285|  79.5k|    for (uint64_t map__ = (MAP);                    \
  |  |  |  |  286|   120k|         map__ && (((IDX) = raw_ctz(map__)), true); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (286:10): [True: 41.0k, False: 79.5k]
  |  |  |  |  |  Branch (286:19): [True: 41.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  287|  79.5k|         map__ = zero_rightmost_1bit(map__))
  |  |  ------------------
  ------------------
  928|  41.0k|            dst_u64[idx] |= *p++;
  929|  41.0k|        }
  930|       |        dst_u64 += MAP_T_BITS;
  ------------------
  |  |  270|  79.5k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  931|  79.5k|    }
  932|  39.7k|}
meta-flow.c:flow_get_xreg:
  143|  13.5k|{
  144|  13.5k|    return ((uint64_t) flow->regs[idx * 2] << 32) | flow->regs[idx * 2 + 1];
  145|  13.5k|}
meta-flow.c:flow_get_xxreg:
  156|  15.4k|{
  157|  15.4k|    ovs_u128 value;
  158|       |
  159|  15.4k|    value.u64.hi = (uint64_t) flow->regs[idx * 4] << 32;
  160|  15.4k|    value.u64.hi |= flow->regs[idx * 4 + 1];
  161|  15.4k|    value.u64.lo = (uint64_t) flow->regs[idx * 4 + 2] << 32;
  162|  15.4k|    value.u64.lo |= flow->regs[idx * 4 + 3];
  163|       |
  164|  15.4k|    return value;
  165|  15.4k|}
meta-flow.c:get_dl_type:
 1036|  96.1k|{
 1037|  96.1k|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (1037:9): [True: 86.6k, False: 9.46k]
  ------------------
 1038|  86.6k|        return flow->dl_type;
 1039|  86.6k|    } else if (pt_ns(flow->packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (1039:16): [True: 7.81k, False: 1.65k]
  ------------------
 1040|  7.81k|        return pt_ns_type_be(flow->packet_type);
 1041|  7.81k|    } else {
 1042|       |        return htons(FLOW_DL_TYPE_NONE);
 1043|  1.65k|    }
 1044|  96.1k|}
meta-flow.c:is_ethernet:
 1028|  3.59k|{
 1029|  3.59k|    if (wc) {
  ------------------
  |  Branch (1029:9): [True: 0, False: 3.59k]
  ------------------
 1030|      0|        WC_MASK_FIELD(wc, packet_type);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1031|      0|    }
 1032|       |    return flow->packet_type == htonl(PT_ETH);
 1033|  3.59k|}
meta-flow.c:is_vlan:
 1048|    455|{
 1049|    455|    if (!is_ethernet(flow, wc)) {
  ------------------
  |  Branch (1049:9): [True: 22, False: 433]
  ------------------
 1050|     22|        return false;
 1051|     22|    }
 1052|    433|    if (wc) {
  ------------------
  |  Branch (1052:9): [True: 0, False: 433]
  ------------------
 1053|      0|        WC_MASK_FIELD_MASK(wc, vlans[0].tci, htons(VLAN_CFI));
  ------------------
  |  |  203|      0|    ((WC)->masks.FIELD |= (MASK))
  ------------------
 1054|      0|    }
 1055|       |    return (flow->vlans[0].tci & htons(VLAN_CFI)) != 0;
 1056|    455|}
meta-flow.c:is_ct_valid:
  954|    455|{
  955|       |    /* Matches are checked with 'mask' and without 'wc'. */
  956|    455|    if (mask && !wc) {
  ------------------
  |  Branch (956:9): [True: 454, False: 1]
  |  Branch (956:17): [True: 454, False: 0]
  ------------------
  957|       |        /* Must match at least one of the bits that implies a valid
  958|       |         * conntrack entry, or an explicit not-invalid. */
  959|    454|        return flow->ct_state & (CS_NEW | CS_ESTABLISHED | CS_RELATED
  ------------------
  |  Branch (959:16): [True: 258, False: 196]
  ------------------
  960|    454|                                 | CS_REPLY_DIR | CS_SRC_NAT | CS_DST_NAT)
  961|    196|            || (flow->ct_state & CS_TRACKED
  ------------------
  |  Branch (961:17): [True: 194, False: 2]
  ------------------
  962|    194|                && mask->masks.ct_state & CS_INVALID
  ------------------
  |  Branch (962:20): [True: 194, False: 0]
  ------------------
  963|    194|                && !(flow->ct_state & CS_INVALID));
  ------------------
  |  Branch (963:20): [True: 193, False: 1]
  ------------------
  964|    454|    }
  965|       |    /* Else we are checking a fully extracted flow, where valid CT state always
  966|       |     * has either 'new', 'established', or 'reply_dir' bit set. */
  967|      1|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  968|      1|    if (wc) {
  ------------------
  |  Branch (968:9): [True: 0, False: 1]
  ------------------
  969|      0|        wc->masks.ct_state |= CS_VALID_MASK;
  ------------------
  |  |  967|      0|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  ------------------
  970|      0|    }
  971|      1|    return flow->ct_state & CS_VALID_MASK;
  ------------------
  |  |  967|      1|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  ------------------
  972|    455|}
meta-flow.c:is_tcp:
 1077|  1.42k|{
 1078|       |    return is_ip_proto(flow, IPPROTO_TCP, wc);
 1079|  1.42k|}
meta-flow.c:is_ip_proto:
 1065|  2.77k|{
 1066|  2.77k|    if (is_ip_any(flow)) {
  ------------------
  |  Branch (1066:9): [True: 2.68k, False: 83]
  ------------------
 1067|  2.68k|        if (wc) {
  ------------------
  |  Branch (1067:13): [True: 0, False: 2.68k]
  ------------------
 1068|      0|            WC_MASK_FIELD(wc, nw_proto);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1069|      0|        }
 1070|  2.68k|        return flow->nw_proto == ip_proto;
 1071|  2.68k|    }
 1072|     83|    return false;
 1073|  2.77k|}
meta-flow.c:is_udp:
 1083|    772|{
 1084|       |    return is_ip_proto(flow, IPPROTO_UDP, wc);
 1085|    772|}
meta-flow.c:is_sctp:
 1089|    575|{
 1090|       |    return is_ip_proto(flow, IPPROTO_SCTP, wc);
 1091|    575|}
meta-flow.c:is_icmpv4:
 1095|    452|{
 1096|    452|    if (get_dl_type(flow) == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (1096:9): [True: 438, False: 14]
  ------------------
 1097|    438|        if (wc) {
  ------------------
  |  Branch (1097:13): [True: 0, False: 438]
  ------------------
 1098|      0|            memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto);
 1099|      0|        }
 1100|    438|        return flow->nw_proto == IPPROTO_ICMP;
 1101|    438|    }
 1102|     14|    return false;
 1103|    452|}
meta-flow.c:is_icmpv6:
 1107|  1.73k|{
 1108|  1.73k|    if (get_dl_type(flow) == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1108:9): [True: 1.67k, False: 55]
  ------------------
 1109|  1.67k|        if (wc) {
  ------------------
  |  Branch (1109:13): [True: 0, False: 1.67k]
  ------------------
 1110|      0|            memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto);
 1111|      0|        }
 1112|  1.67k|        return flow->nw_proto == IPPROTO_ICMPV6;
 1113|  1.67k|    }
 1114|     55|    return false;
 1115|  1.73k|}
meta-flow.c:is_nd:
 1119|  1.29k|{
 1120|  1.29k|    if (is_icmpv6(flow, wc)) {
  ------------------
  |  Branch (1120:9): [True: 1.24k, False: 44]
  ------------------
 1121|  1.24k|        if (wc) {
  ------------------
  |  Branch (1121:13): [True: 0, False: 1.24k]
  ------------------
 1122|      0|            memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst);
 1123|      0|        }
 1124|  1.24k|        if (flow->tp_dst != htons(0)) {
  ------------------
  |  Branch (1124:13): [True: 13, False: 1.23k]
  ------------------
 1125|     13|            return false;
 1126|     13|        }
 1127|       |
 1128|  1.23k|        if (wc) {
  ------------------
  |  Branch (1128:13): [True: 0, False: 1.23k]
  ------------------
 1129|      0|            memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src);
 1130|      0|        }
 1131|  1.23k|        return (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT) ||
  ------------------
  |  Branch (1131:17): [True: 586, False: 650]
  ------------------
 1132|    650|                flow->tp_src == htons(ND_NEIGHBOR_ADVERT));
  ------------------
  |  Branch (1132:17): [True: 614, False: 36]
  ------------------
 1133|  1.24k|    }
 1134|     44|    return false;
 1135|  1.29k|}
meta-flow.c:ofp_to_u16:
  196|  1.40k|{
  197|  1.40k|    return (OVS_FORCE uint16_t) ofp_port;
  198|  1.40k|}
meta-flow.c:u16_to_ofp:
  214|    287|{
  215|    287|    return OFP_PORT_C(port);
  ------------------
  |  |  157|    287|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  ------------------
  216|    287|}
meta-flow.c:is_ip_any:
 1059|  3.80k|{
 1060|  3.80k|    return dl_type_is_ip_any(get_dl_type(flow));
 1061|  3.80k|}
nx-match.c:get_dl_type:
 1036|  10.1k|{
 1037|  10.1k|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (1037:9): [True: 8.96k, False: 1.18k]
  ------------------
 1038|  8.96k|        return flow->dl_type;
 1039|  8.96k|    } else if (pt_ns(flow->packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (1039:16): [True: 285, False: 900]
  ------------------
 1040|    285|        return pt_ns_type_be(flow->packet_type);
 1041|    900|    } else {
 1042|       |        return htons(FLOW_DL_TYPE_NONE);
 1043|    900|    }
 1044|  10.1k|}
nx-match.c:ofp_to_u16:
  196|      8|{
  197|      8|    return (OVS_FORCE uint16_t) ofp_port;
  198|      8|}
nx-match.c:is_ip_any:
 1059|  4.52k|{
 1060|  4.52k|    return dl_type_is_ip_any(get_dl_type(flow));
 1061|  4.52k|}
nx-match.c:is_icmpv4:
 1095|    203|{
 1096|    203|    if (get_dl_type(flow) == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (1096:9): [True: 45, False: 158]
  ------------------
 1097|     45|        if (wc) {
  ------------------
  |  Branch (1097:13): [True: 0, False: 45]
  ------------------
 1098|      0|            memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto);
 1099|      0|        }
 1100|     45|        return flow->nw_proto == IPPROTO_ICMP;
 1101|     45|    }
 1102|    158|    return false;
 1103|    203|}
nx-match.c:is_icmpv6:
 1107|    302|{
 1108|    302|    if (get_dl_type(flow) == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1108:9): [True: 301, False: 1]
  ------------------
 1109|    301|        if (wc) {
  ------------------
  |  Branch (1109:13): [True: 0, False: 301]
  ------------------
 1110|      0|            memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto);
 1111|      0|        }
 1112|    301|        return flow->nw_proto == IPPROTO_ICMPV6;
 1113|    301|    }
 1114|      1|    return false;
 1115|    302|}
nx-match.c:is_nd:
 1119|    143|{
 1120|    143|    if (is_icmpv6(flow, wc)) {
  ------------------
  |  Branch (1120:9): [True: 143, False: 0]
  ------------------
 1121|    143|        if (wc) {
  ------------------
  |  Branch (1121:13): [True: 0, False: 143]
  ------------------
 1122|      0|            memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst);
 1123|      0|        }
 1124|    143|        if (flow->tp_dst != htons(0)) {
  ------------------
  |  Branch (1124:13): [True: 12, False: 131]
  ------------------
 1125|     12|            return false;
 1126|     12|        }
 1127|       |
 1128|    131|        if (wc) {
  ------------------
  |  Branch (1128:13): [True: 0, False: 131]
  ------------------
 1129|      0|            memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src);
 1130|      0|        }
 1131|    131|        return (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT) ||
  ------------------
  |  Branch (1131:17): [True: 24, False: 107]
  ------------------
 1132|    107|                flow->tp_src == htons(ND_NEIGHBOR_ADVERT));
  ------------------
  |  Branch (1132:17): [True: 26, False: 81]
  ------------------
 1133|    143|    }
 1134|      0|    return false;
 1135|    143|}
ofp-actions.c:ofp_to_u16:
  196|   432k|{
  197|   432k|    return (OVS_FORCE uint16_t) ofp_port;
  198|   432k|}
ofp-actions.c:get_dl_type:
 1036|  38.1k|{
 1037|  38.1k|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (1037:9): [True: 20.3k, False: 17.7k]
  ------------------
 1038|  20.3k|        return flow->dl_type;
 1039|  20.3k|    } else if (pt_ns(flow->packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (1039:16): [True: 12.0k, False: 5.72k]
  ------------------
 1040|  12.0k|        return pt_ns_type_be(flow->packet_type);
 1041|  12.0k|    } else {
 1042|       |        return htons(FLOW_DL_TYPE_NONE);
 1043|  5.72k|    }
 1044|  38.1k|}
ofp-actions.c:is_ip_any:
 1059|  13.0k|{
 1060|  13.0k|    return dl_type_is_ip_any(get_dl_type(flow));
 1061|  13.0k|}
ofp-actions.c:is_ct_valid:
  954|    486|{
  955|       |    /* Matches are checked with 'mask' and without 'wc'. */
  956|    486|    if (mask && !wc) {
  ------------------
  |  Branch (956:9): [True: 486, False: 0]
  |  Branch (956:17): [True: 486, False: 0]
  ------------------
  957|       |        /* Must match at least one of the bits that implies a valid
  958|       |         * conntrack entry, or an explicit not-invalid. */
  959|    486|        return flow->ct_state & (CS_NEW | CS_ESTABLISHED | CS_RELATED
  ------------------
  |  Branch (959:16): [True: 248, False: 238]
  ------------------
  960|    486|                                 | CS_REPLY_DIR | CS_SRC_NAT | CS_DST_NAT)
  961|    238|            || (flow->ct_state & CS_TRACKED
  ------------------
  |  Branch (961:17): [True: 237, False: 1]
  ------------------
  962|    237|                && mask->masks.ct_state & CS_INVALID
  ------------------
  |  Branch (962:20): [True: 236, False: 1]
  ------------------
  963|    236|                && !(flow->ct_state & CS_INVALID));
  ------------------
  |  Branch (963:20): [True: 235, False: 1]
  ------------------
  964|    486|    }
  965|       |    /* Else we are checking a fully extracted flow, where valid CT state always
  966|       |     * has either 'new', 'established', or 'reply_dir' bit set. */
  967|      0|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  968|      0|    if (wc) {
  ------------------
  |  Branch (968:9): [True: 0, False: 0]
  ------------------
  969|      0|        wc->masks.ct_state |= CS_VALID_MASK;
  ------------------
  |  |  967|      0|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  ------------------
  970|      0|    }
  971|      0|    return flow->ct_state & CS_VALID_MASK;
  ------------------
  |  |  967|      0|#define CS_VALID_MASK (CS_NEW | CS_ESTABLISHED | CS_REPLY_DIR)
  ------------------
  972|    486|}

hash_bytes:
   31|   594k|{
   32|   594k|    const uint8_t *p = p_;
   33|   594k|    size_t orig_n = n;
   34|   594k|    uint32_t hash;
   35|       |
   36|   594k|    hash = basis;
   37|  2.05M|    while (n >= 4) {
  ------------------
  |  Branch (37:12): [True: 1.46M, False: 594k]
  ------------------
   38|  1.46M|        hash = hash_add(hash,
   39|  1.46M|                        get_unaligned_u32(ALIGNED_CAST(const uint32_t *, p)));
  ------------------
  |  |  434|  1.46M|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
   40|  1.46M|        n -= 4;
   41|  1.46M|        p += 4;
   42|  1.46M|    }
   43|       |
   44|   594k|    if (n) {
  ------------------
  |  Branch (44:9): [True: 491k, False: 102k]
  ------------------
   45|   491k|        uint32_t tmp = 0;
   46|       |
   47|   491k|        memcpy(&tmp, p, n);
   48|   491k|        hash = hash_add(hash, tmp);
   49|   491k|    }
   50|       |
   51|   594k|    return hash_finish(hash, orig_n);
   52|   594k|}

ofp-msgs.c:hash_finish:
  118|  1.46k|{
  119|  1.46k|    return mhash_finish(hash ^ final);
  120|  1.46k|}
ofp-msgs.c:mhash_finish:
   84|  1.46k|{
   85|  1.46k|    hash ^= hash >> 16;
   86|  1.46k|    hash *= 0x85ebca6b;
   87|  1.46k|    hash ^= hash >> 13;
   88|  1.46k|    hash *= 0xc2b2ae35;
   89|  1.46k|    hash ^= hash >> 16;
   90|  1.46k|    return hash;
   91|  1.46k|}
ofp-msgs.c:hash_add:
  108|  4.39k|{
  109|  4.39k|    return mhash_add(hash, data);
  110|  4.39k|}
ofp-msgs.c:mhash_add:
   77|  4.39k|{
   78|  4.39k|    hash = mhash_add__(hash, data);
   79|  4.39k|    hash = hash_rot(hash, 13);
   80|  4.39k|    return hash * 5 + 0xe6546b64;
   81|  4.39k|}
ofp-msgs.c:mhash_add__:
   64|  4.39k|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|  4.39k|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 2.59k, False: 1.80k]
  ------------------
   67|  2.59k|        return hash;
   68|  2.59k|    }
   69|       |
   70|  1.80k|    data *= 0xcc9e2d51;
   71|  1.80k|    data = hash_rot(data, 15);
   72|  1.80k|    data *= 0x1b873593;
   73|  1.80k|    return hash ^ data;
   74|  4.39k|}
ofp-msgs.c:hash_rot:
   31|  6.20k|{
   32|  6.20k|    return (x << k) | (x >> (32 - k));
   33|  6.20k|}
ofp-msgs.c:hash_bytes32:
  392|  1.46k|{
  393|  1.46k|    return hash_words(p, n_bytes / 4, basis);
  394|  1.46k|}
ofp-msgs.c:hash_words:
  357|  1.46k|{
  358|  1.46k|    if (__builtin_constant_p(n_words)) {
  ------------------
  |  Branch (358:9): [True: 1.46k, False: 0]
  ------------------
  359|  1.46k|        return hash_words_inline(p, n_words, basis);
  360|  1.46k|    } else {
  361|      0|        return hash_words__(p, n_words, basis);
  362|      0|    }
  363|  1.46k|}
ofp-msgs.c:hash_words_inline:
  129|  1.46k|{
  130|  1.46k|    return hash_finish(hash_add_words(basis, p, n_words), n_words * 4);
  131|  1.46k|}
ofp-msgs.c:hash_add_words:
  428|  1.46k|{
  429|  5.86k|    for (size_t i = 0; i < n_words; i++) {
  ------------------
  |  Branch (429:24): [True: 4.39k, False: 1.46k]
  ------------------
  430|  4.39k|        hash = hash_add(hash, p[i]);
  431|  4.39k|    }
  432|  1.46k|    return hash;
  433|  1.46k|}
hash.c:hash_finish:
  118|   594k|{
  119|   594k|    return mhash_finish(hash ^ final);
  120|   594k|}
hash.c:mhash_finish:
   84|   594k|{
   85|   594k|    hash ^= hash >> 16;
   86|   594k|    hash *= 0x85ebca6b;
   87|   594k|    hash ^= hash >> 13;
   88|   594k|    hash *= 0xc2b2ae35;
   89|   594k|    hash ^= hash >> 16;
   90|   594k|    return hash;
   91|   594k|}
hash.c:hash_add:
  108|  1.95M|{
  109|  1.95M|    return mhash_add(hash, data);
  110|  1.95M|}
hash.c:mhash_add:
   77|  1.95M|{
   78|  1.95M|    hash = mhash_add__(hash, data);
   79|  1.95M|    hash = hash_rot(hash, 13);
   80|  1.95M|    return hash * 5 + 0xe6546b64;
   81|  1.95M|}
hash.c:mhash_add__:
   64|  1.95M|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|  1.95M|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 0, False: 1.95M]
  ------------------
   67|      0|        return hash;
   68|      0|    }
   69|       |
   70|  1.95M|    data *= 0xcc9e2d51;
   71|  1.95M|    data = hash_rot(data, 15);
   72|  1.95M|    data *= 0x1b873593;
   73|  1.95M|    return hash ^ data;
   74|  1.95M|}
hash.c:hash_rot:
   31|  3.91M|{
   32|  3.91M|    return (x << k) | (x >> (32 - k));
   33|  3.91M|}
nx-match.c:hash_string:
  403|    237|{
  404|    237|    return hash_bytes(s, strlen(s), basis);
  405|    237|}
nx-match.c:hash_uint64:
  164|    237|{
  165|    237|    return hash_uint64_basis(x, 0);
  166|    237|}
nx-match.c:hash_uint64_basis:
  159|    237|{
  160|    237|    return hash_finish(hash_add64(basis, x), 8);
  161|    237|}
nx-match.c:hash_finish:
  118|    237|{
  119|    237|    return mhash_finish(hash ^ final);
  120|    237|}
nx-match.c:mhash_finish:
   84|    237|{
   85|    237|    hash ^= hash >> 16;
   86|    237|    hash *= 0x85ebca6b;
   87|    237|    hash ^= hash >> 13;
   88|    237|    hash *= 0xc2b2ae35;
   89|    237|    hash ^= hash >> 16;
   90|    237|    return hash;
   91|    237|}
nx-match.c:hash_add64:
  113|    237|{
  114|    237|    return hash_add(hash_add(hash, data), data >> 32);
  115|    237|}
nx-match.c:hash_add:
  108|    474|{
  109|    474|    return mhash_add(hash, data);
  110|    474|}
nx-match.c:mhash_add:
   77|    474|{
   78|    474|    hash = mhash_add__(hash, data);
   79|    474|    hash = hash_rot(hash, 13);
   80|    474|    return hash * 5 + 0xe6546b64;
   81|    474|}
nx-match.c:mhash_add__:
   64|    474|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|    474|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 199, False: 275]
  ------------------
   67|    199|        return hash;
   68|    199|    }
   69|       |
   70|    275|    data *= 0xcc9e2d51;
   71|    275|    data = hash_rot(data, 15);
   72|    275|    data *= 0x1b873593;
   73|    275|    return hash ^ data;
   74|    474|}
nx-match.c:hash_rot:
   31|    749|{
   32|    749|    return (x << k) | (x >> (32 - k));
   33|    749|}
ofp-actions.c:hash_2words:
  153|   335k|{
  154|   335k|    return hash_finish(hash_add(hash_add(x, 0), y), 8);
  155|   335k|}
ofp-actions.c:hash_finish:
  118|   335k|{
  119|   335k|    return mhash_finish(hash ^ final);
  120|   335k|}
ofp-actions.c:mhash_finish:
   84|   335k|{
   85|   335k|    hash ^= hash >> 16;
   86|   335k|    hash *= 0x85ebca6b;
   87|   335k|    hash ^= hash >> 13;
   88|   335k|    hash *= 0xc2b2ae35;
   89|   335k|    hash ^= hash >> 16;
   90|   335k|    return hash;
   91|   335k|}
ofp-actions.c:hash_add:
  108|   670k|{
  109|   670k|    return mhash_add(hash, data);
  110|   670k|}
ofp-actions.c:mhash_add:
   77|   670k|{
   78|   670k|    hash = mhash_add__(hash, data);
   79|   670k|    hash = hash_rot(hash, 13);
   80|   670k|    return hash * 5 + 0xe6546b64;
   81|   670k|}
ofp-actions.c:mhash_add__:
   64|   670k|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|   670k|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 335k, False: 335k]
  ------------------
   67|   335k|        return hash;
   68|   335k|    }
   69|       |
   70|   335k|    data *= 0xcc9e2d51;
   71|   335k|    data = hash_rot(data, 15);
   72|   335k|    data *= 0x1b873593;
   73|   335k|    return hash ^ data;
   74|   670k|}
ofp-actions.c:hash_rot:
   31|  1.00M|{
   32|  1.00M|    return (x << k) | (x >> (32 - k));
   33|  1.00M|}
shash.c:hash_string:
  403|   212k|{
  404|   212k|    return hash_bytes(s, strlen(s), basis);
  405|   212k|}

hmap_init:
   36|     39|{
   37|     39|    hmap->buckets = &hmap->one;
   38|       |    hmap->one = NULL;
   39|     39|    hmap->mask = 0;
   40|     39|    hmap->n = 0;
   41|     39|}
hmap_destroy:
   47|     34|{
   48|     34|    if (hmap && hmap->buckets != &hmap->one) {
  ------------------
  |  Branch (48:9): [True: 34, False: 0]
  |  Branch (48:17): [True: 29, False: 5]
  ------------------
   49|     29|        free(hmap->buckets);
   50|     29|    }
   51|     34|}
hmap_swap:
   72|     34|{
   73|     34|    struct hmap tmp = *a;
   74|     34|    *a = *b;
   75|     34|    *b = tmp;
   76|     34|    hmap_moved(a);
   77|     34|    hmap_moved(b);
   78|     34|}
hmap_moved:
   84|     68|{
   85|     68|    if (!hmap->mask) {
  ------------------
  |  Branch (85:9): [True: 5, False: 63]
  ------------------
   86|      5|        hmap->buckets = &hmap->one;
   87|      5|    }
   88|     68|}
hmap_expand_at:
  171|     34|{
  172|     34|    size_t new_mask = calc_mask(hmap->n);
  173|     34|    if (new_mask > hmap->mask) {
  ------------------
  |  Branch (173:9): [True: 34, False: 0]
  ------------------
  174|     34|        COVERAGE_INC(hmap_expand);
  ------------------
  |  |   83|     34|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     34|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  175|     34|        resize(hmap, new_mask, where);
  176|     34|    }
  177|     34|}
hmap.c:calc_mask:
  146|     34|{
  147|     34|    size_t mask = capacity / 2;
  148|     34|    mask |= mask >> 1;
  149|     34|    mask |= mask >> 2;
  150|     34|    mask |= mask >> 4;
  151|     34|    mask |= mask >> 8;
  152|     34|    mask |= mask >> 16;
  153|     34|#if SIZE_MAX > UINT32_MAX
  154|     34|    mask |= mask >> 32;
  155|     34|#endif
  156|       |
  157|       |    /* If we need to dynamically allocate buckets we might as well allocate at
  158|       |     * least 4 of them. */
  159|     34|    mask |= (mask & 1) << 1;
  160|       |
  161|     34|    return mask;
  162|     34|}
hmap.c:resize:
   92|     34|{
   93|     34|    struct hmap tmp;
   94|     34|    size_t i;
   95|       |
   96|     34|    ovs_assert(is_pow2(new_mask + 1));
  ------------------
  |  |   62|     34|#define ovs_assert ovs_ignore
  ------------------
   97|       |
   98|     34|    hmap_init(&tmp);
   99|     34|    if (new_mask) {
  ------------------
  |  Branch (99:9): [True: 34, False: 0]
  ------------------
  100|     34|        tmp.buckets = xmalloc(sizeof *tmp.buckets * (new_mask + 1));
  101|     34|        tmp.mask = new_mask;
  102|  3.34k|        for (i = 0; i <= tmp.mask; i++) {
  ------------------
  |  Branch (102:21): [True: 3.30k, False: 34]
  ------------------
  103|  3.30k|            tmp.buckets[i] = NULL;
  104|  3.30k|        }
  105|     34|    }
  106|     34|    int n_big_buckets = 0;
  107|     34|    int biggest_count = 0;
  108|     34|    int n_biggest_buckets = 0;
  109|  1.68k|    for (i = 0; i <= hmap->mask; i++) {
  ------------------
  |  Branch (109:17): [True: 1.64k, False: 34]
  ------------------
  110|  1.64k|        struct hmap_node *node, *next;
  111|  1.64k|        int count = 0;
  112|  4.94k|        for (node = hmap->buckets[i]; node; node = next) {
  ------------------
  |  Branch (112:39): [True: 3.29k, False: 1.64k]
  ------------------
  113|  3.29k|            next = node->next;
  114|  3.29k|            hmap_insert_fast(&tmp, node, node->hash);
  115|  3.29k|            count++;
  116|  3.29k|        }
  117|  1.64k|        if (count > 5) {
  ------------------
  |  Branch (117:13): [True: 24, False: 1.62k]
  ------------------
  118|     24|            n_big_buckets++;
  119|     24|            if (count > biggest_count) {
  ------------------
  |  Branch (119:17): [True: 12, False: 12]
  ------------------
  120|     12|                biggest_count = count;
  121|     12|                n_biggest_buckets = 1;
  122|     12|            } else if (count == biggest_count) {
  ------------------
  |  Branch (122:24): [True: 3, False: 9]
  ------------------
  123|      3|                n_biggest_buckets++;
  124|      3|            }
  125|     24|        }
  126|  1.64k|    }
  127|     34|    hmap_swap(hmap, &tmp);
  128|     34|    hmap_destroy(&tmp);
  129|       |
  130|     34|    if (n_big_buckets) {
  ------------------
  |  Branch (130:9): [True: 11, False: 23]
  ------------------
  131|     11|        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(10, 10);
  ------------------
  |  |  110|     11|        {                                                                 \
  |  |  111|     11|            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
  |  |  ------------------
  |  |  |  |   37|     44|#define TOKEN_BUCKET_INIT(RATE, BURST) { RATE, BURST, 0, LLONG_MIN }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:48): [True: 0, Folded]
  |  |  |  |  |  Branch (37:48): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     11|            0,                              /* first_dropped */           \
  |  |  113|     11|            0,                              /* last_dropped */            \
  |  |  114|     11|            0,                              /* n_dropped */               \
  |  |  115|     11|            OVS_MUTEX_INITIALIZER           /* mutex */                   \
  |  |  ------------------
  |  |  |  |   45|     11|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|     11|                                "<unlocked>" }
  |  |  ------------------
  |  |  116|     11|        }
  ------------------
  132|     11|        COVERAGE_INC(hmap_pathological);
  ------------------
  |  |   83|     11|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     11|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  133|     11|        VLOG_DBG_RL(&rl, "%s: %d bucket%s with 6+ nodes, "
  ------------------
  |  |  226|     11|#define VLOG_DBG_RL(RL, ...) VLOG_RL(RL, VLL_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|     11|    do {                                                                \
  |  |  |  |  288|     11|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|     11|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:56): [True: 0, False: 0]
  |  |  |  |  |  Branch (290:56): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|     11|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|     11|                    "including %d bucket%s with %d nodes "
  135|     11|                    "(%"PRIuSIZE" nodes total across %"PRIuSIZE" buckets)",
  136|     11|                    where,
  137|     11|                    n_big_buckets, n_big_buckets > 1 ? "s" : "",
  138|     11|                    n_biggest_buckets, n_biggest_buckets > 1 ? "s" : "",
  139|     11|                    biggest_count,
  140|     11|                    hmap->n, hmap->mask + 1);
  141|     11|    }
  142|     34|}

json_string_unescape:
 1078|  4.43k|{
 1079|  4.43k|    const char *end = in + in_len;
 1080|  4.43k|    bool ok = false;
 1081|  4.43k|    struct ds out;
 1082|       |
 1083|  4.43k|    ds_init(&out);
 1084|  4.43k|    ds_reserve(&out, in_len);
 1085|  14.0M|    while (in < end) {
  ------------------
  |  Branch (1085:12): [True: 14.0M, False: 216]
  ------------------
 1086|  14.0M|        if (*in == '"') {
  ------------------
  |  Branch (1086:13): [True: 449, False: 14.0M]
  ------------------
 1087|    449|            ds_clear(&out);
 1088|    449|            ds_put_cstr(&out, "quoted string may not include unescaped \"");
 1089|    449|            goto exit;
 1090|    449|        }
 1091|  14.0M|        if (*in != '\\') {
  ------------------
  |  Branch (1091:13): [True: 13.9M, False: 140k]
  ------------------
 1092|  13.9M|            ds_put_char(&out, *in++);
 1093|  13.9M|            continue;
 1094|  13.9M|        }
 1095|       |
 1096|   140k|        in++;
 1097|   140k|        if (in >= end) {
  ------------------
  |  Branch (1097:13): [True: 414, False: 140k]
  ------------------
 1098|       |            /* The JSON parser will never trigger this message, because its
 1099|       |             * lexer will never pass in a string that ends in a single
 1100|       |             * backslash, but json_string_unescape() has other callers that
 1101|       |             * are not as careful.*/
 1102|    414|            ds_clear(&out);
 1103|    414|            ds_put_cstr(&out, "quoted string may not end with backslash");
 1104|    414|            goto exit;
 1105|    414|        }
 1106|   140k|        switch (*in++) {
 1107|  21.3k|        case '"': case '\\': case '/':
  ------------------
  |  Branch (1107:9): [True: 10.2k, False: 129k]
  |  Branch (1107:19): [True: 5.46k, False: 134k]
  |  Branch (1107:30): [True: 5.65k, False: 134k]
  ------------------
 1108|  21.3k|            ds_put_char(&out, in[-1]);
 1109|  21.3k|            break;
 1110|       |
 1111|  36.2k|        case 'b':
  ------------------
  |  Branch (1111:9): [True: 36.2k, False: 103k]
  ------------------
 1112|  36.2k|            ds_put_char(&out, '\b');
 1113|  36.2k|            break;
 1114|       |
 1115|  36.5k|        case 'f':
  ------------------
  |  Branch (1115:9): [True: 36.5k, False: 103k]
  ------------------
 1116|  36.5k|            ds_put_char(&out, '\f');
 1117|  36.5k|            break;
 1118|       |
 1119|  10.8k|        case 'n':
  ------------------
  |  Branch (1119:9): [True: 10.8k, False: 129k]
  ------------------
 1120|  10.8k|            ds_put_char(&out, '\n');
 1121|  10.8k|            break;
 1122|       |
 1123|  2.30k|        case 'r':
  ------------------
  |  Branch (1123:9): [True: 2.30k, False: 137k]
  ------------------
 1124|  2.30k|            ds_put_char(&out, '\r');
 1125|  2.30k|            break;
 1126|       |
 1127|  1.81k|        case 't':
  ------------------
  |  Branch (1127:9): [True: 1.81k, False: 138k]
  ------------------
 1128|  1.81k|            ds_put_char(&out, '\t');
 1129|  1.81k|            break;
 1130|       |
 1131|  30.3k|        case 'u':
  ------------------
  |  Branch (1131:9): [True: 30.3k, False: 109k]
  ------------------
 1132|  30.3k|            in = json_lex_unicode(in, end, &out);
 1133|  30.3k|            if (!in) {
  ------------------
  |  Branch (1133:17): [True: 2.65k, False: 27.6k]
  ------------------
 1134|  2.65k|                goto exit;
 1135|  2.65k|            }
 1136|  27.6k|            break;
 1137|       |
 1138|  27.6k|        default:
  ------------------
  |  Branch (1138:9): [True: 709, False: 139k]
  ------------------
 1139|    709|            ds_clear(&out);
 1140|    709|            ds_put_format(&out, "bad escape \\%c", in[-1]);
 1141|    709|            goto exit;
 1142|   140k|        }
 1143|   140k|    }
 1144|    216|    ok = true;
 1145|       |
 1146|  4.43k|exit:
 1147|  4.43k|    *outp = ds_cstr(&out);
 1148|  4.43k|    return ok;
 1149|    216|}
json.c:json_lex_unicode:
 1036|  30.3k|{
 1037|  30.3k|    const char *error;
 1038|  30.3k|    int c0, c1;
 1039|       |
 1040|  30.3k|    error = json_lex_4hex(cp, end, &c0);
 1041|  30.3k|    if (error) {
  ------------------
  |  Branch (1041:9): [True: 1.02k, False: 29.2k]
  ------------------
 1042|  1.02k|        ds_clear(out);
 1043|  1.02k|        ds_put_cstr(out, error);
 1044|  1.02k|        return NULL;
 1045|  1.02k|    }
 1046|  29.2k|    cp += 4;
 1047|  29.2k|    if (!uc_is_leading_surrogate(c0)) {
  ------------------
  |  Branch (1047:9): [True: 23.0k, False: 6.23k]
  ------------------
 1048|  23.0k|        ds_put_utf8(out, c0);
 1049|  23.0k|        return cp;
 1050|  23.0k|    }
 1051|       |
 1052|  6.23k|    if (cp + 2 > end || *cp++ != '\\' || *cp++ != 'u') {
  ------------------
  |  Branch (1052:9): [True: 222, False: 6.01k]
  |  Branch (1052:25): [True: 339, False: 5.67k]
  |  Branch (1052:42): [True: 225, False: 5.44k]
  ------------------
 1053|    786|        ds_clear(out);
 1054|    786|        ds_put_cstr(out, "malformed escaped surrogate pair");
 1055|    786|        return NULL;
 1056|    786|    }
 1057|       |
 1058|  5.44k|    error = json_lex_4hex(cp, end, &c1);
 1059|  5.44k|    if (error) {
  ------------------
  |  Branch (1059:9): [True: 628, False: 4.82k]
  ------------------
 1060|    628|        ds_clear(out);
 1061|    628|        ds_put_cstr(out, error);
 1062|    628|        return NULL;
 1063|    628|    }
 1064|  4.82k|    cp += 4;
 1065|  4.82k|    if (!uc_is_trailing_surrogate(c1)) {
  ------------------
  |  Branch (1065:9): [True: 210, False: 4.61k]
  ------------------
 1066|    210|        ds_clear(out);
 1067|    210|        ds_put_cstr(out, "second half of escaped surrogate pair is not "
 1068|    210|                    "trailing surrogate");
 1069|    210|        return NULL;
 1070|    210|    }
 1071|       |
 1072|  4.61k|    ds_put_utf8(out, utf16_decode_surrogate_pair(c0, c1));
 1073|  4.61k|    return cp;
 1074|  4.82k|}
json.c:json_lex_4hex:
 1015|  35.7k|{
 1016|  35.7k|    unsigned int value;
 1017|  35.7k|    bool ok;
 1018|       |
 1019|  35.7k|    if (cp + 4 > end) {
  ------------------
  |  Branch (1019:9): [True: 528, False: 35.2k]
  ------------------
 1020|    528|        return "quoted string ends within \\u escape";
 1021|    528|    }
 1022|       |
 1023|  35.2k|    value = hexits_value(cp, 4, &ok);
 1024|  35.2k|    if (!ok) {
  ------------------
  |  Branch (1024:9): [True: 727, False: 34.5k]
  ------------------
 1025|    727|        return "malformed \\u escape";
 1026|    727|    }
 1027|  34.5k|    if (!value) {
  ------------------
  |  Branch (1027:9): [True: 400, False: 34.1k]
  ------------------
 1028|    400|        return "null bytes not supported in quoted strings";
 1029|    400|    }
 1030|  34.1k|    *valuep = value;
 1031|       |    return NULL;
 1032|  34.5k|}

learn_check:
   42|  33.9k|{
   43|  33.9k|    const struct ofpact_learn_spec *spec;
   44|  33.9k|    struct match dst_match;
   45|       |
   46|  33.9k|    match_init_catchall(&dst_match);
   47|  55.4k|    OFPACT_LEARN_SPEC_FOR_EACH (spec, learn) {
  ------------------
  |  |  900|  33.9k|    for ((SPEC) = (LEARN)->specs;               \
  |  |  901|  89.2k|         (SPEC) < ofpact_learn_spec_end(LEARN); \
  |  |  ------------------
  |  |  |  Branch (901:10): [True: 55.4k, False: 33.8k]
  |  |  ------------------
  |  |  902|  55.3k|         (SPEC) = ofpact_learn_spec_next(SPEC))
  ------------------
   48|  55.4k|        enum ofperr error;
   49|       |
   50|       |        /* Check the source. */
   51|  55.4k|        if (spec->src_type == NX_LEARN_SRC_FIELD) {
  ------------------
  |  |  821|  55.4k|#define NX_LEARN_SRC_FIELD     (0 << 13) /* Copy from field. */
  ------------------
  |  Branch (51:13): [True: 2.50k, False: 52.8k]
  ------------------
   52|  2.50k|            error = mf_check_src(&spec->src, src_match);
   53|  2.50k|            if (error) {
  ------------------
  |  Branch (53:17): [True: 45, False: 2.45k]
  ------------------
   54|     45|                return error;
   55|     45|            }
   56|  2.50k|        }
   57|       |
   58|       |        /* Check the destination. */
   59|  55.3k|        switch (spec->dst_type) {
  ------------------
  |  Branch (59:17): [True: 55.3k, False: 0]
  ------------------
   60|  54.7k|        case NX_LEARN_DST_MATCH:
  ------------------
  |  |  825|  54.7k|#define NX_LEARN_DST_MATCH     (0 << 11) /* Add match criterion. */
  ------------------
  |  Branch (60:9): [True: 54.7k, False: 626]
  ------------------
   61|  54.7k|            error = mf_check_src(&spec->dst, &dst_match);
   62|  54.7k|            if (error) {
  ------------------
  |  Branch (62:17): [True: 19, False: 54.7k]
  ------------------
   63|     19|                return error;
   64|     19|            }
   65|  54.7k|            if (spec->src_type & NX_LEARN_SRC_IMMEDIATE) {
  ------------------
  |  |  822|  54.7k|#define NX_LEARN_SRC_IMMEDIATE (1 << 13) /* Copy from immediate value. */
  ------------------
  |  Branch (65:17): [True: 52.7k, False: 1.95k]
  ------------------
   66|  52.7k|                mf_write_subfield_value(&spec->dst,
   67|  52.7k|                                        ofpact_learn_spec_imm(spec),
   68|  52.7k|                                        &dst_match);
   69|  52.7k|            }
   70|  54.7k|            break;
   71|       |
   72|    416|        case NX_LEARN_DST_LOAD:
  ------------------
  |  |  826|    416|#define NX_LEARN_DST_LOAD      (1 << 11) /* Add NXAST_REG_LOAD action. */
  ------------------
  |  Branch (72:9): [True: 416, False: 54.9k]
  ------------------
   73|    416|            error = mf_check_dst(&spec->dst, &dst_match);
   74|    416|            if (error) {
  ------------------
  |  Branch (74:17): [True: 2, False: 414]
  ------------------
   75|      2|                return error;
   76|      2|            }
   77|    414|            break;
   78|       |
   79|    414|        case NX_LEARN_DST_OUTPUT:
  ------------------
  |  |  827|    210|#define NX_LEARN_DST_OUTPUT    (2 << 11) /* Add OFPAT_OUTPUT action. */
  ------------------
  |  Branch (79:9): [True: 210, False: 55.1k]
  ------------------
   80|       |            /* Nothing to do. */
   81|    210|            break;
   82|  55.3k|        }
   83|  55.3k|    }
   84|  33.8k|    return 0;
   85|  33.9k|}
learn_parse:
  480|  36.3k|{
  481|  36.3k|    char *orig = xstrdup(arg);
  482|  36.3k|    char *error = learn_parse__(orig, arg, port_map, table_map, ofpacts);
  483|  36.3k|    free(orig);
  484|  36.3k|    return error;
  485|  36.3k|}
learn.c:learn_parse__:
  390|  36.3k|{
  391|  36.3k|    struct ofpact_learn *learn;
  392|  36.3k|    char *name, *value;
  393|       |
  394|  36.3k|    learn = ofpact_put_LEARN(ofpacts);
  395|  36.3k|    learn->idle_timeout = OFP_FLOW_PERMANENT;
  ------------------
  |  |  135|  36.3k|#define OFP_FLOW_PERMANENT 0
  ------------------
  396|  36.3k|    learn->hard_timeout = OFP_FLOW_PERMANENT;
  ------------------
  |  |  135|  36.3k|#define OFP_FLOW_PERMANENT 0
  ------------------
  397|  36.3k|    learn->priority = OFP_DEFAULT_PRIORITY;
  ------------------
  |  |  138|  36.3k|#define OFP_DEFAULT_PRIORITY 0x8000
  ------------------
  398|  36.3k|    learn->table_id = 1;
  399|       |
  400|   103k|    while (ofputil_parse_key_value(&arg, &name, &value)) {
  ------------------
  |  Branch (400:12): [True: 68.3k, False: 35.4k]
  ------------------
  401|  68.3k|        if (!strcmp(name, "table")) {
  ------------------
  |  Branch (401:13): [True: 1.26k, False: 67.0k]
  ------------------
  402|  1.26k|            if (!ofputil_table_from_string(value, table_map,
  ------------------
  |  Branch (402:17): [True: 1, False: 1.26k]
  ------------------
  403|  1.26k|                                           &learn->table_id)) {
  404|      1|                return xasprintf("unknown table \"%s\"", value);
  405|  1.26k|            } else if (learn->table_id == 255) {
  ------------------
  |  Branch (405:24): [True: 1, False: 1.26k]
  ------------------
  406|      1|                return xasprintf("%s: table id 255 not valid for `learn' "
  407|      1|                                 "action", orig);
  408|      1|            }
  409|  67.0k|        } else if (!strcmp(name, "priority")) {
  ------------------
  |  Branch (409:20): [True: 522, False: 66.5k]
  ------------------
  410|    522|            learn->priority = atoi(value);
  411|  66.5k|        } else if (!strcmp(name, "idle_timeout")) {
  ------------------
  |  Branch (411:20): [True: 97, False: 66.4k]
  ------------------
  412|     97|            learn->idle_timeout = atoi(value);
  413|  66.4k|        } else if (!strcmp(name, "hard_timeout")) {
  ------------------
  |  Branch (413:20): [True: 270, False: 66.1k]
  ------------------
  414|    270|            learn->hard_timeout = atoi(value);
  415|  66.1k|        } else if (!strcmp(name, "fin_idle_timeout")) {
  ------------------
  |  Branch (415:20): [True: 194, False: 65.9k]
  ------------------
  416|    194|            learn->fin_idle_timeout = atoi(value);
  417|  65.9k|        } else if (!strcmp(name, "fin_hard_timeout")) {
  ------------------
  |  Branch (417:20): [True: 316, False: 65.6k]
  ------------------
  418|    316|            learn->fin_hard_timeout = atoi(value);
  419|  65.6k|        } else if (!strcmp(name, "cookie")) {
  ------------------
  |  Branch (419:20): [True: 2.99k, False: 62.6k]
  ------------------
  420|  2.99k|            learn->cookie = htonll(strtoull(value, NULL, 0));
  421|  62.6k|        } else if (!strcmp(name, "send_flow_rem")) {
  ------------------
  |  Branch (421:20): [True: 200, False: 62.4k]
  ------------------
  422|    200|            learn->flags |= NX_LEARN_F_SEND_FLOW_REM;
  423|  62.4k|        } else if (!strcmp(name, "delete_learned")) {
  ------------------
  |  Branch (423:20): [True: 458, False: 61.9k]
  ------------------
  424|    458|            learn->flags |= NX_LEARN_F_DELETE_LEARNED;
  425|  61.9k|        } else if (!strcmp(name, "limit")) {
  ------------------
  |  Branch (425:20): [True: 1.60k, False: 60.3k]
  ------------------
  426|  1.60k|            learn->limit = atoi(value);
  427|  60.3k|        } else if (!strcmp(name, "result_dst")) {
  ------------------
  |  Branch (427:20): [True: 278, False: 60.1k]
  ------------------
  428|    278|            char *error;
  429|    278|            learn->flags |= NX_LEARN_F_WRITE_RESULT;
  430|    278|            error = mf_parse_subfield(&learn->result_dst, value);
  431|    278|            if (error) {
  ------------------
  |  Branch (431:17): [True: 1, False: 277]
  ------------------
  432|      1|                return error;
  433|      1|            }
  434|    277|            if (!learn->result_dst.field->writable) {
  ------------------
  |  Branch (434:17): [True: 1, False: 276]
  ------------------
  435|      1|                return xasprintf("%s is read-only", value);
  436|      1|            }
  437|    276|            if (learn->result_dst.n_bits != 1) {
  ------------------
  |  Branch (437:17): [True: 2, False: 274]
  ------------------
  438|      2|                return xasprintf("result_dst in 'learn' action must be a "
  439|      2|                                 "single bit");
  440|      2|            }
  441|  60.1k|        } else {
  442|  60.1k|            struct ofpact_learn_spec *spec;
  443|  60.1k|            char *error;
  444|       |
  445|  60.1k|            spec = ofpbuf_put_zeros(ofpacts, sizeof *spec);
  446|  60.1k|            error = learn_parse_spec(orig, name, value, port_map,
  447|  60.1k|                                     spec, ofpacts);
  448|  60.1k|            if (error) {
  ------------------
  |  Branch (448:17): [True: 857, False: 59.2k]
  ------------------
  449|    857|                return error;
  450|    857|            }
  451|  59.2k|            learn = ofpacts->header;
  452|  59.2k|        }
  453|  68.3k|    }
  454|       |
  455|  35.4k|    if (ofpbuf_oversized(ofpacts)) {
  ------------------
  |  Branch (455:9): [True: 1, False: 35.4k]
  ------------------
  456|      1|        return xasprintf("input too big");
  457|      1|    }
  458|       |
  459|  35.4k|    ofpact_finish_LEARN(ofpacts, &learn);
  460|       |
  461|       |    return NULL;
  462|  35.4k|}
learn.c:learn_parse_spec:
  245|  60.1k|{
  246|       |    /* Parse destination and check prerequisites. */
  247|  60.1k|    struct mf_subfield dst;
  248|       |
  249|  60.1k|    char *error = mf_parse_subfield(&dst, name);
  250|  60.1k|    bool parse_error = error != NULL;
  251|  60.1k|    free(error);
  252|       |
  253|  60.1k|    if (!parse_error) {
  ------------------
  |  Branch (253:9): [True: 57.7k, False: 2.35k]
  ------------------
  254|  57.7k|        if (!mf_nxm_header(dst.field->id)) {
  ------------------
  |  Branch (254:13): [True: 5, False: 57.7k]
  ------------------
  255|      5|            return xasprintf("%s: experimenter OXM field '%s' not supported",
  256|      5|                             orig, name);
  257|      5|        }
  258|  57.7k|        spec->dst = dst;
  259|  57.7k|        spec->n_bits = dst.n_bits;
  260|  57.7k|        spec->dst_type = NX_LEARN_DST_MATCH;
  ------------------
  |  |  825|  57.7k|#define NX_LEARN_DST_MATCH     (0 << 11) /* Add match criterion. */
  ------------------
  261|       |
  262|       |        /* Parse source and check prerequisites. */
  263|  57.7k|        if (value[0] != '\0') {
  ------------------
  |  Branch (263:13): [True: 55.5k, False: 2.19k]
  ------------------
  264|  55.5k|            struct mf_subfield src;
  265|  55.5k|            error = mf_parse_subfield(&src, value);
  266|  55.5k|            if (error) {
  ------------------
  |  Branch (266:17): [True: 55.3k, False: 210]
  ------------------
  267|  55.3k|                union mf_value imm;
  268|  55.3k|                char *imm_error = NULL;
  269|       |
  270|       |                /* Try an immediate value. */
  271|  55.3k|                if (dst.ofs == 0 && dst.n_bits == dst.field->n_bits) {
  ------------------
  |  Branch (271:21): [True: 49.2k, False: 6.12k]
  |  Branch (271:37): [True: 37.1k, False: 12.0k]
  ------------------
  272|       |                    /* Full field value. */
  273|  37.1k|                    imm_error = mf_parse_value(dst.field, value, port_map,
  274|  37.1k|                                               &imm);
  275|  37.1k|                } else {
  276|  18.1k|                    char *tail;
  277|       |                    /* Partial field value. */
  278|  18.1k|                    if (parse_int_string(value, imm.b,
  ------------------
  |  Branch (278:25): [True: 4, False: 18.1k]
  ------------------
  279|  18.1k|                                          dst.field->n_bytes, &tail)
  280|  18.1k|                        || *tail != 0) {
  ------------------
  |  Branch (280:28): [True: 5, False: 18.1k]
  ------------------
  281|      9|                        imm_error = xasprintf("%s: cannot parse integer value", orig);
  282|      9|                    }
  283|       |
  284|  18.1k|                    if (!imm_error &&
  ------------------
  |  Branch (284:25): [True: 18.1k, False: 9]
  ------------------
  285|  18.1k|                        !bitwise_is_all_zeros(imm.b, dst.field->n_bytes,
  ------------------
  |  Branch (285:25): [True: 5, False: 18.1k]
  ------------------
  286|  18.1k|                                              dst.n_bits,
  287|  18.1k|                                              dst.field->n_bytes * 8 - dst.n_bits)) {
  288|      5|                        struct ds ds;
  289|       |
  290|      5|                        ds_init(&ds);
  291|      5|                        mf_format(dst.field, &imm, NULL, NULL, &ds);
  292|      5|                        imm_error = xasprintf("%s: value %s does not fit into %d bits",
  293|      5|                                              orig, ds_cstr(&ds), dst.n_bits);
  294|      5|                        ds_destroy(&ds);
  295|      5|                    }
  296|  18.1k|                }
  297|  55.3k|                if (imm_error) {
  ------------------
  |  Branch (297:21): [True: 26, False: 55.3k]
  ------------------
  298|     26|                    char *err = xasprintf("%s: %s value %s cannot be parsed as a subfield (%s) or an immediate value (%s)",
  299|     26|                                          orig, name, value, error, imm_error);
  300|     26|                    free(error);
  301|     26|                    free(imm_error);
  302|     26|                    return err;
  303|     26|                }
  304|       |
  305|  55.3k|                spec->src_type = NX_LEARN_SRC_IMMEDIATE;
  ------------------
  |  |  822|  55.3k|#define NX_LEARN_SRC_IMMEDIATE (1 << 13) /* Copy from immediate value. */
  ------------------
  306|       |
  307|       |                /* Push value last, as this may reallocate 'spec'! */
  308|  55.3k|                unsigned int imm_bytes = DIV_ROUND_UP(dst.n_bits, 8);
  ------------------
  |  |  300|  55.3k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
  309|  55.3k|                uint8_t *src_imm = ofpbuf_put_zeros(ofpacts,
  310|  55.3k|                                                    OFPACT_ALIGN(imm_bytes));
  ------------------
  |  |  205|  55.3k|#define OFPACT_ALIGN(SIZE) ROUND_UP(SIZE, OFPACT_ALIGNTO)
  |  |  ------------------
  |  |  |  |  303|  55.3k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  55.3k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  311|       |
  312|  55.3k|                memcpy(src_imm, &imm.b[dst.field->n_bytes - imm_bytes],
  313|  55.3k|                       imm_bytes);
  314|       |
  315|  55.3k|                free(error);
  316|  55.3k|                return NULL;
  317|  55.3k|            }
  318|    210|            spec->src = src;
  319|    210|            if (spec->src.n_bits != spec->dst.n_bits) {
  ------------------
  |  Branch (319:17): [True: 1, False: 209]
  ------------------
  320|      1|                return xasprintf("%s: bit widths of %s (%u) and %s (%u) "
  321|      1|                                 "differ", orig, name, spec->src.n_bits, value,
  322|      1|                                 spec->dst.n_bits);
  323|      1|            }
  324|  2.19k|        } else {
  325|  2.19k|            spec->src = spec->dst;
  326|  2.19k|        }
  327|       |
  328|  2.40k|        spec->src_type = NX_LEARN_SRC_FIELD;
  ------------------
  |  |  821|  2.40k|#define NX_LEARN_SRC_FIELD     (0 << 13) /* Copy from field. */
  ------------------
  329|  2.40k|    } else if (!strcmp(name, "load")) {
  ------------------
  |  Branch (329:16): [True: 682, False: 1.67k]
  ------------------
  330|    682|        union mf_subvalue imm;
  331|    682|        char *tail;
  332|    682|        char *dst_value = strstr(value, "->");
  333|       |
  334|    682|        if (dst_value == value) {
  ------------------
  |  Branch (334:13): [True: 1, False: 681]
  ------------------
  335|      1|            return xasprintf("%s: missing source before `->' in `%s'", name,
  336|      1|                             value);
  337|      1|        }
  338|    681|        if (!dst_value) {
  ------------------
  |  Branch (338:13): [True: 1, False: 680]
  ------------------
  339|      1|            return xasprintf("%s: missing `->' in `%s'", name, value);
  340|      1|        }
  341|       |
  342|    680|        if (!parse_int_string(value, imm.u8, sizeof imm.u8, (char **) &tail)
  ------------------
  |  Branch (342:13): [True: 330, False: 350]
  ------------------
  343|    330|            && tail != value) {
  ------------------
  |  Branch (343:16): [True: 330, False: 0]
  ------------------
  344|    330|            if (tail != dst_value) {
  ------------------
  |  Branch (344:17): [True: 1, False: 329]
  ------------------
  345|      1|                return xasprintf("%s: garbage before `->' in `%s'",
  346|      1|                                 name, value);
  347|      1|            }
  348|       |
  349|    329|            error = learn_parse_load_immediate(&imm, dst_value + 2, value, spec,
  350|    329|                                               ofpacts);
  351|    329|            if (error) {
  ------------------
  |  Branch (351:17): [True: 6, False: 323]
  ------------------
  352|      6|                return error;
  353|      6|            }
  354|    350|        } else {
  355|    350|            struct ofpact_reg_move move;
  356|       |
  357|    350|            error = nxm_parse_reg_move(&move, value);
  358|    350|            if (error) {
  ------------------
  |  Branch (358:17): [True: 6, False: 344]
  ------------------
  359|      6|                return error;
  360|      6|            }
  361|       |
  362|    344|            spec->n_bits = move.src.n_bits;
  363|    344|            spec->src_type = NX_LEARN_SRC_FIELD;
  ------------------
  |  |  821|    344|#define NX_LEARN_SRC_FIELD     (0 << 13) /* Copy from field. */
  ------------------
  364|    344|            spec->src = move.src;
  365|    344|            spec->dst_type = NX_LEARN_DST_LOAD;
  ------------------
  |  |  826|    344|#define NX_LEARN_DST_LOAD      (1 << 11) /* Add NXAST_REG_LOAD action. */
  ------------------
  366|    344|            spec->dst = move.dst;
  367|    344|        }
  368|  1.67k|    } else if (!strcmp(name, "output")) {
  ------------------
  |  Branch (368:16): [True: 866, False: 809]
  ------------------
  369|    866|        error = mf_parse_subfield(&spec->src, value);
  370|    866|        if (error) {
  ------------------
  |  Branch (370:13): [True: 1, False: 865]
  ------------------
  371|      1|            return error;
  372|      1|        }
  373|       |
  374|    865|        spec->n_bits = spec->src.n_bits;
  375|    865|        spec->src_type = NX_LEARN_SRC_FIELD;
  ------------------
  |  |  821|    865|#define NX_LEARN_SRC_FIELD     (0 << 13) /* Copy from field. */
  ------------------
  376|    865|        spec->dst_type = NX_LEARN_DST_OUTPUT;
  ------------------
  |  |  827|    865|#define NX_LEARN_DST_OUTPUT    (2 << 11) /* Add OFPAT_OUTPUT action. */
  ------------------
  377|    865|    } else {
  378|    809|        return xasprintf("%s: unknown keyword %s", orig, name);
  379|    809|    }
  380|       |
  381|  3.93k|    return NULL;
  382|  60.1k|}
learn.c:learn_parse_load_immediate:
  206|    329|{
  207|    329|    struct mf_subfield dst;
  208|    329|    char *error;
  209|       |
  210|    329|    error = mf_parse_subfield(&dst, s);
  211|    329|    if (error) {
  ------------------
  |  Branch (211:9): [True: 3, False: 326]
  ------------------
  212|      3|        return error;
  213|      3|    }
  214|    326|    if (!mf_nxm_header(dst.field->id)) {
  ------------------
  |  Branch (214:9): [True: 1, False: 325]
  ------------------
  215|      1|        return xasprintf("%s: experimenter OXM field '%s' not supported",
  216|      1|                         full_s, s);
  217|      1|    }
  218|       |
  219|    325|    if (!bitwise_is_all_zeros(imm, sizeof *imm, dst.n_bits,
  ------------------
  |  Branch (219:9): [True: 2, False: 323]
  ------------------
  220|    325|                              (8 * sizeof *imm) - dst.n_bits)) {
  221|      2|        return xasprintf("%s: value does not fit into %u bits",
  222|      2|                         full_s, dst.n_bits);
  223|      2|    }
  224|       |
  225|    323|    spec->n_bits = dst.n_bits;
  226|    323|    spec->src_type = NX_LEARN_SRC_IMMEDIATE;
  ------------------
  |  |  822|    323|#define NX_LEARN_SRC_IMMEDIATE (1 << 13) /* Copy from immediate value. */
  ------------------
  227|    323|    spec->dst_type = NX_LEARN_DST_LOAD;
  ------------------
  |  |  826|    323|#define NX_LEARN_DST_LOAD      (1 << 11) /* Add NXAST_REG_LOAD action. */
  ------------------
  228|    323|    spec->dst = dst;
  229|       |
  230|       |    /* Push value last, as this may reallocate 'spec'! */
  231|    323|    unsigned int n_bytes = DIV_ROUND_UP(dst.n_bits, 8);
  ------------------
  |  |  300|    323|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
  232|    323|    uint8_t *src_imm = ofpbuf_put_zeros(ofpacts, OFPACT_ALIGN(n_bytes));
  ------------------
  |  |  205|    323|#define OFPACT_ALIGN(SIZE) ROUND_UP(SIZE, OFPACT_ALIGNTO)
  |  |  ------------------
  |  |  |  |  303|    323|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|    323|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|    323|    memcpy(src_imm, &imm->u8[sizeof imm->u8 - n_bytes], n_bytes);
  234|       |
  235|       |    return NULL;
  236|    325|}

match_init_catchall:
   60|  33.9k|{
   61|  33.9k|    memset(&match->flow, 0, sizeof match->flow);
   62|  33.9k|    flow_wildcards_init_catchall(&match->wc);
   63|  33.9k|    memset(&match->tun_md, 0, sizeof match->tun_md);
   64|  33.9k|}
match_zero_wildcarded_fields:
   76|    456|{
   77|    456|    flow_zero_wildcards(&match->flow, &match->wc);
   78|    456|}
match_set_dp_hash:
   82|    261|{
   83|       |    match_set_dp_hash_masked(match, value, UINT32_MAX);
   84|    261|}
match_set_dp_hash_masked:
   88|    484|{
   89|    484|    match->wc.masks.dp_hash = mask;
   90|    484|    match->flow.dp_hash = value & mask;
   91|    484|}
match_set_recirc_id:
   95|    199|{
   96|    199|    match->flow.recirc_id = value;
   97|       |    match->wc.masks.recirc_id = UINT32_MAX;
   98|    199|}
match_set_conj_id:
  102|    256|{
  103|    256|    match->flow.conj_id = value;
  104|       |    match->wc.masks.conj_id = UINT32_MAX;
  105|    256|}
match_set_reg:
  109|  15.9k|{
  110|       |    match_set_reg_masked(match, reg_idx, value, UINT32_MAX);
  111|  15.9k|}
match_set_reg_masked:
  116|  47.2k|{
  117|  47.2k|    ovs_assert(reg_idx < FLOW_N_REGS);
  ------------------
  |  |   62|  47.2k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(reg_idx < FLOW_N_REGS);
  ------------------
  |  |   33|  47.2k|#define FLOW_N_REGS 32
  ------------------
  118|  47.2k|    flow_wildcards_set_reg_mask(&match->wc, reg_idx, mask);
  119|  47.2k|    match->flow.regs[reg_idx] = value & mask;
  120|  47.2k|}
match_set_xreg:
  124|  6.18k|{
  125|       |    match_set_xreg_masked(match, xreg_idx, value, UINT64_MAX);
  126|  6.18k|}
match_set_xreg_masked:
  131|  19.1k|{
  132|  19.1k|    ovs_assert(xreg_idx < FLOW_N_XREGS);
  ------------------
  |  |   62|  19.1k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(xreg_idx < FLOW_N_XREGS);
  ------------------
  |  |   41|  19.1k|#define FLOW_N_XREGS (FLOW_N_REGS / 2)
  |  |  ------------------
  |  |  |  |   33|  19.1k|#define FLOW_N_REGS 32
  |  |  ------------------
  ------------------
  133|  19.1k|    flow_wildcards_set_xreg_mask(&match->wc, xreg_idx, mask);
  134|  19.1k|    flow_set_xreg(&match->flow, xreg_idx, value & mask);
  135|  19.1k|}
match_set_xxreg:
  139|  7.73k|{
  140|  7.73k|    match_set_xxreg_masked(match, xxreg_idx, value, OVS_U128_MAX);
  141|  7.73k|}
match_set_xxreg_masked:
  146|  14.0k|{
  147|  14.0k|    ovs_assert(xxreg_idx < FLOW_N_XXREGS);
  ------------------
  |  |   62|  14.0k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(xxreg_idx < FLOW_N_XXREGS);
  ------------------
  |  |   47|  14.0k|#define FLOW_N_XXREGS (FLOW_N_REGS / 4)
  |  |  ------------------
  |  |  |  |   33|  14.0k|#define FLOW_N_REGS 32
  |  |  ------------------
  ------------------
  148|  14.0k|    flow_wildcards_set_xxreg_mask(&match->wc, xxreg_idx, mask);
  149|  14.0k|    flow_set_xxreg(&match->flow, xxreg_idx, ovs_u128_and(value, mask));
  150|  14.0k|}
match_set_actset_output:
  154|  1.08k|{
  155|       |    match->wc.masks.actset_output = u16_to_ofp(UINT16_MAX);
  156|  1.08k|    match->flow.actset_output = actset_output;
  157|  1.08k|}
match_set_metadata:
  161|    232|{
  162|    232|    match_set_metadata_masked(match, metadata, OVS_BE64_MAX);
  ------------------
  |  |   44|    232|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
  163|    232|}
match_set_metadata_masked:
  168|    683|{
  169|    683|    match->wc.masks.metadata = mask;
  170|    683|    match->flow.metadata = metadata & mask;
  171|    683|}
match_set_tun_id:
  175|    517|{
  176|    517|    match_set_tun_id_masked(match, tun_id, OVS_BE64_MAX);
  ------------------
  |  |   44|    517|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
  177|    517|}
match_set_tun_id_masked:
  181|  1.05k|{
  182|  1.05k|    match->wc.masks.tunnel.tun_id = mask;
  183|  1.05k|    match->flow.tunnel.tun_id = tun_id & mask;
  184|  1.05k|}
match_set_tun_src:
  188|    233|{
  189|    233|    match_set_tun_src_masked(match, src, OVS_BE32_MAX);
  ------------------
  |  |   43|    233|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  190|    233|}
match_set_tun_src_masked:
  194|    526|{
  195|    526|    match->wc.masks.tunnel.ip_src = mask;
  196|    526|    match->flow.tunnel.ip_src = src & mask;
  197|    526|}
match_set_tun_dst:
  201|    194|{
  202|    194|    match_set_tun_dst_masked(match, dst, OVS_BE32_MAX);
  ------------------
  |  |   43|    194|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  203|    194|}
match_set_tun_dst_masked:
  207|    694|{
  208|    694|    match->wc.masks.tunnel.ip_dst = mask;
  209|    694|    match->flow.tunnel.ip_dst = dst & mask;
  210|    694|}
match_set_tun_ipv6_src:
  214|    198|{
  215|    198|    match->flow.tunnel.ipv6_src = *src;
  216|    198|    match->wc.masks.tunnel.ipv6_src = in6addr_exact;
  217|    198|}
match_set_tun_ipv6_src_masked:
  222|    114|{
  223|    114|    match->flow.tunnel.ipv6_src = ipv6_addr_bitand(src, mask);
  224|    114|    match->wc.masks.tunnel.ipv6_src = *mask;
  225|    114|}
match_set_tun_ipv6_dst:
  229|    226|{
  230|    226|    match->flow.tunnel.ipv6_dst = *dst;
  231|    226|    match->wc.masks.tunnel.ipv6_dst = in6addr_exact;
  232|    226|}
match_set_tun_ipv6_dst_masked:
  237|    235|{
  238|    235|    match->flow.tunnel.ipv6_dst = ipv6_addr_bitand(dst, mask);
  239|    235|    match->wc.masks.tunnel.ipv6_dst = *mask;
  240|    235|}
match_set_tun_ttl:
  244|    280|{
  245|       |    match_set_tun_ttl_masked(match, ttl, UINT8_MAX);
  246|    280|}
match_set_tun_ttl_masked:
  250|  1.16k|{
  251|  1.16k|    match->wc.masks.tunnel.ip_ttl = mask;
  252|  1.16k|    match->flow.tunnel.ip_ttl = ttl & mask;
  253|  1.16k|}
match_set_tun_tos:
  257|    438|{
  258|       |    match_set_tun_tos_masked(match, tos, UINT8_MAX);
  259|    438|}
match_set_tun_tos_masked:
  263|  3.12k|{
  264|  3.12k|    match->wc.masks.tunnel.ip_tos = mask;
  265|  3.12k|    match->flow.tunnel.ip_tos = tos & mask;
  266|  3.12k|}
match_set_tun_flags:
  270|    265|{
  271|       |    match_set_tun_flags_masked(match, flags, UINT16_MAX);
  272|    265|}
match_set_tun_flags_masked:
  276|    755|{
  277|    755|    mask &= FLOW_TNL_PUB_F_MASK;
  ------------------
  |  |   58|    755|#define FLOW_TNL_PUB_F_MASK ((1 << 1) - 1)
  ------------------
  278|       |
  279|    755|    match->wc.masks.tunnel.flags = mask;
  280|    755|    match->flow.tunnel.flags = flags & mask;
  281|    755|}
match_set_tun_gbp_id_masked:
  298|    673|{
  299|    673|    match->wc.masks.tunnel.gbp_id = mask;
  300|    673|    match->flow.tunnel.gbp_id = gbp_id & mask;
  301|    673|}
match_set_tun_gbp_id:
  305|    194|{
  306|    194|    match_set_tun_gbp_id_masked(match, gbp_id, OVS_BE16_MAX);
  ------------------
  |  |   42|    194|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  307|    194|}
match_set_tun_gbp_flags_masked:
  311|    670|{
  312|    670|    match->wc.masks.tunnel.gbp_flags = mask;
  313|    670|    match->flow.tunnel.gbp_flags = flags & mask;
  314|    670|}
match_set_tun_gbp_flags:
  318|    203|{
  319|       |    match_set_tun_gbp_flags_masked(match, flags, UINT8_MAX);
  320|    203|}
match_set_tun_erspan_ver_masked:
  324|    226|{
  325|    226|    match->wc.masks.tunnel.erspan_ver = ver;
  326|    226|    match->flow.tunnel.erspan_ver = ver & mask;
  327|    226|}
match_set_tun_erspan_idx_masked:
  338|    258|{
  339|    258|    match->wc.masks.tunnel.erspan_idx = mask;
  340|    258|    match->flow.tunnel.erspan_idx = erspan_idx & mask;
  341|    258|}
match_set_tun_erspan_dir_masked:
  352|    130|{
  353|    130|    match->wc.masks.tunnel.erspan_dir = dir;
  354|    130|    match->flow.tunnel.erspan_dir = dir & mask;
  355|    130|}
match_set_tun_gtpu_flags_masked:
  380|    685|{
  381|    685|    match->wc.masks.tunnel.gtpu_flags = flags;
  382|    685|    match->flow.tunnel.gtpu_flags = flags & mask;
  383|    685|}
match_set_tun_gtpu_flags:
  387|    216|{
  388|       |    match_set_tun_gtpu_flags_masked(match, flags, UINT8_MAX);
  389|    216|}
match_set_in_port:
  407|    740|{
  408|       |    match->wc.masks.in_port.ofp_port = u16_to_ofp(UINT16_MAX);
  409|    740|    match->flow.in_port.ofp_port = ofp_port;
  410|    740|}
match_set_pkt_mark:
  421|    285|{
  422|       |    match_set_pkt_mark_masked(match, pkt_mark, UINT32_MAX);
  423|    285|}
match_set_pkt_mark_masked:
  427|    481|{
  428|    481|    match->flow.pkt_mark = pkt_mark & mask;
  429|    481|    match->wc.masks.pkt_mark = mask;
  430|    481|}
match_set_ct_state:
  434|    451|{
  435|       |    match_set_ct_state_masked(match, ct_state, UINT32_MAX);
  436|    451|}
match_set_ct_state_masked:
  440|    993|{
  441|    993|    match->flow.ct_state = ct_state & mask & UINT8_MAX;
  442|       |    match->wc.masks.ct_state = mask & UINT8_MAX;
  443|    993|}
match_set_ct_zone:
  447|    255|{
  448|       |    match_set_ct_zone_masked(match, ct_zone, UINT16_MAX);
  449|    255|}
match_set_ct_zone_masked:
  453|    255|{
  454|    255|    match->flow.ct_zone = ct_zone & mask;
  455|    255|    match->wc.masks.ct_zone = mask;
  456|    255|}
match_set_ct_mark:
  460|  1.33k|{
  461|       |    match_set_ct_mark_masked(match, ct_mark, UINT32_MAX);
  462|  1.33k|}
match_set_ct_mark_masked:
  467|  3.35k|{
  468|  3.35k|    match->flow.ct_mark = ct_mark & mask;
  469|  3.35k|    match->wc.masks.ct_mark = mask;
  470|  3.35k|}
match_set_ct_label:
  474|    202|{
  475|    202|    ovs_u128 mask;
  476|       |
  477|    202|    mask.u64.lo = UINT64_MAX;
  478|       |    mask.u64.hi = UINT64_MAX;
  479|    202|    match_set_ct_label_masked(match, ct_label, mask);
  480|    202|}
match_set_ct_label_masked:
  484|    475|{
  485|    475|    match->flow.ct_label.u64.lo = value.u64.lo & mask.u64.lo;
  486|    475|    match->flow.ct_label.u64.hi = value.u64.hi & mask.u64.hi;
  487|    475|    match->wc.masks.ct_label = mask;
  488|    475|}
match_set_ct_nw_src:
  492|    208|{
  493|    208|    match->flow.ct_nw_src = ct_nw_src;
  494|    208|    match->wc.masks.ct_nw_src = OVS_BE32_MAX;
  ------------------
  |  |   43|    208|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  495|    208|}
match_set_ct_nw_src_masked:
  500|    245|{
  501|    245|    match->flow.ct_nw_src = ct_nw_src & mask;
  502|    245|    match->wc.masks.ct_nw_src = mask;
  503|    245|}
match_set_ct_nw_dst:
  507|    258|{
  508|    258|    match->flow.ct_nw_dst = ct_nw_dst;
  509|    258|    match->wc.masks.ct_nw_dst = OVS_BE32_MAX;
  ------------------
  |  |   43|    258|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  510|    258|}
match_set_ct_nw_dst_masked:
  515|    936|{
  516|    936|    match->flow.ct_nw_dst = ct_nw_dst & mask;
  517|    936|    match->wc.masks.ct_nw_dst = mask;
  518|    936|}
match_set_ct_nw_proto:
  522|    203|{
  523|    203|    match->flow.ct_nw_proto = ct_nw_proto;
  524|       |    match->wc.masks.ct_nw_proto = UINT8_MAX;
  525|    203|}
match_set_ct_tp_src:
  529|    476|{
  530|    476|    match_set_ct_tp_src_masked(match, ct_tp_src, OVS_BE16_MAX);
  ------------------
  |  |   42|    476|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  531|    476|}
match_set_ct_tp_src_masked:
  535|    670|{
  536|    670|    match->flow.ct_tp_src = port & mask;
  537|    670|    match->wc.masks.ct_tp_src = mask;
  538|    670|}
match_set_ct_tp_dst:
  542|    201|{
  543|    201|    match_set_ct_tp_dst_masked(match, ct_tp_dst, OVS_BE16_MAX);
  ------------------
  |  |   42|    201|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  544|    201|}
match_set_ct_tp_dst_masked:
  548|    461|{
  549|    461|    match->flow.ct_tp_dst = port & mask;
  550|    461|    match->wc.masks.ct_tp_dst = mask;
  551|    461|}
match_set_ct_ipv6_src:
  555|    287|{
  556|    287|    match->flow.ct_ipv6_src = *src;
  557|    287|    match->wc.masks.ct_ipv6_src = in6addr_exact;
  558|    287|}
match_set_ct_ipv6_src_masked:
  563|    194|{
  564|    194|    match->flow.ct_ipv6_src = ipv6_addr_bitand(src, mask);
  565|    194|    match->wc.masks.ct_ipv6_src = *mask;
  566|    194|}
match_set_ct_ipv6_dst:
  570|    261|{
  571|    261|    match->flow.ct_ipv6_dst = *dst;
  572|    261|    match->wc.masks.ct_ipv6_dst = in6addr_exact;
  573|    261|}
match_set_ct_ipv6_dst_masked:
  578|    278|{
  579|    278|    match->flow.ct_ipv6_dst = ipv6_addr_bitand(dst, mask);
  580|    278|    match->wc.masks.ct_ipv6_dst = *mask;
  581|    278|}
match_set_packet_type:
  585|  8.22k|{
  586|  8.22k|    match->flow.packet_type = packet_type;
  587|  8.22k|    match->wc.masks.packet_type = OVS_BE32_MAX;
  ------------------
  |  |   43|  8.22k|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  588|  8.22k|}
match_set_default_packet_type:
  594|  71.0k|{
  595|  71.0k|    if (!match->wc.masks.packet_type) {
  ------------------
  |  Branch (595:9): [True: 4.86k, False: 66.1k]
  ------------------
  596|       |        match_set_packet_type(match, htonl(PT_ETH));
  597|  4.86k|    }
  598|  71.0k|}
match_has_default_packet_type:
  604|  10.4k|{
  605|  10.4k|    return (match->flow.packet_type == htonl(PT_ETH)
  ------------------
  |  Branch (605:13): [True: 8.67k, False: 1.76k]
  ------------------
  606|  8.67k|            && match->wc.masks.packet_type == OVS_BE32_MAX);
  ------------------
  |  |   43|  8.67k|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (606:16): [True: 6.05k, False: 2.61k]
  ------------------
  607|  10.4k|}
match_add_ethernet_prereq:
  627|   149k|{
  628|   149k|    if (field->prereqs != MFP_NONE) {
  ------------------
  |  Branch (628:9): [True: 55.6k, False: 93.6k]
  ------------------
  629|  55.6k|        match_set_default_packet_type(match);
  630|  55.6k|    }
  631|   149k|}
match_set_dl_type:
  635|  15.8k|{
  636|  15.8k|    match->wc.masks.dl_type = OVS_BE16_MAX;
  ------------------
  |  |   42|  15.8k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  637|  15.8k|    match->flow.dl_type = dl_type;
  638|  15.8k|}
match_set_dl_src:
  671|    248|{
  672|    248|    set_eth(dl_src, &match->flow.dl_src, &match->wc.masks.dl_src);
  673|    248|}
match_set_dl_src_masked:
  681|    451|{
  682|    451|    set_eth_masked(dl_src, mask, &match->flow.dl_src, &match->wc.masks.dl_src);
  683|    451|}
match_set_dl_dst:
  689|    271|{
  690|    271|    set_eth(dl_dst, &match->flow.dl_dst, &match->wc.masks.dl_dst);
  691|    271|}
match_set_dl_dst_masked:
  702|    264|{
  703|    264|    set_eth_masked(dl_dst, mask, &match->flow.dl_dst, &match->wc.masks.dl_dst);
  704|    264|}
match_set_dl_tci:
  708|    186|{
  709|       |    match_set_dl_tci_masked(match, tci, htons(0xffff));
  710|    186|}
match_set_dl_tci_masked:
  714|  1.37k|{
  715|  1.37k|    match->flow.vlans[0].tci = tci & mask;
  716|  1.37k|    match->wc.masks.vlans[0].tci = mask;
  717|  1.37k|}
match_set_any_vid:
  724|    430|{
  725|    430|    if (match->wc.masks.vlans[0].tci & htons(VLAN_PCP_MASK)) {
  ------------------
  |  Branch (725:9): [True: 255, False: 175]
  ------------------
  726|    255|        match->wc.masks.vlans[0].tci &= ~htons(VLAN_VID_MASK);
  727|    255|        match->flow.vlans[0].tci &= ~htons(VLAN_VID_MASK);
  728|    255|    } else {
  729|    175|        match_set_dl_tci_masked(match, htons(0), htons(0));
  730|    175|    }
  731|    430|}
match_set_dl_vlan:
  743|    799|{
  744|    799|    flow_set_dl_vlan(&match->flow, dl_vlan, id);
  745|    799|    if (dl_vlan == htons(OFP10_VLAN_NONE)) {
  ------------------
  |  Branch (745:9): [True: 345, False: 454]
  ------------------
  746|    345|        match->wc.masks.vlans[id].tci = OVS_BE16_MAX;
  ------------------
  |  |   42|    345|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  747|    454|    } else {
  748|       |        match->wc.masks.vlans[id].tci |= htons(VLAN_VID_MASK | VLAN_CFI);
  749|    454|    }
  750|    799|}
match_set_vlan_vid:
  757|    198|{
  758|       |    match_set_vlan_vid_masked(match, vid, htons(VLAN_VID_MASK | VLAN_CFI));
  759|    198|}
match_set_vlan_vid_masked:
  767|    458|{
  768|    458|    ovs_be16 pcp_mask = htons(VLAN_PCP_MASK);
  769|    458|    ovs_be16 vid_mask = htons(VLAN_VID_MASK | VLAN_CFI);
  770|       |
  771|    458|    mask &= vid_mask;
  772|    458|    flow_set_vlan_vid(&match->flow, vid & mask);
  773|    458|    match->wc.masks.vlans[0].tci =
  774|    458|        mask | (match->wc.masks.vlans[0].tci & pcp_mask);
  775|    458|}
match_set_any_pcp:
  782|    827|{
  783|    827|    if (match->wc.masks.vlans[0].tci & htons(VLAN_VID_MASK)) {
  ------------------
  |  Branch (783:9): [True: 220, False: 607]
  ------------------
  784|    220|        match->wc.masks.vlans[0].tci &= ~htons(VLAN_PCP_MASK);
  785|    220|        match->flow.vlans[0].tci &= ~htons(VLAN_PCP_MASK);
  786|    607|    } else {
  787|    607|        match_set_dl_tci_masked(match, htons(0), htons(0));
  788|    607|    }
  789|    827|}
match_set_dl_vlan_pcp:
  795|    802|{
  796|    802|    flow_set_vlan_pcp(&match->flow, dl_vlan_pcp, id);
  797|       |    match->wc.masks.vlans[id].tci |= htons(VLAN_CFI | VLAN_PCP_MASK);
  798|    802|}
match_set_any_mpls_label:
  811|     66|{
  812|     66|    match->wc.masks.mpls_lse[idx] &= ~htonl(MPLS_LABEL_MASK);
  813|       |    flow_set_mpls_label(&match->flow, idx, htonl(0));
  814|     66|}
match_set_mpls_label:
  820|     68|{
  821|       |    match->wc.masks.mpls_lse[idx] |= htonl(MPLS_LABEL_MASK);
  822|     68|    flow_set_mpls_label(&match->flow, idx, mpls_label);
  823|     68|}
match_set_any_mpls_tc:
  828|    411|{
  829|       |    match->wc.masks.mpls_lse[idx] &= ~htonl(MPLS_TC_MASK);
  830|    411|    flow_set_mpls_tc(&match->flow, idx, 0);
  831|    411|}
match_set_mpls_tc:
  837|    359|{
  838|       |    match->wc.masks.mpls_lse[idx] |= htonl(MPLS_TC_MASK);
  839|    359|    flow_set_mpls_tc(&match->flow, idx, mpls_tc);
  840|    359|}
match_set_any_mpls_bos:
  845|    208|{
  846|       |    match->wc.masks.mpls_lse[idx] &= ~htonl(MPLS_BOS_MASK);
  847|    208|    flow_set_mpls_bos(&match->flow, idx, 0);
  848|    208|}
match_set_mpls_bos:
  854|  1.55k|{
  855|       |    match->wc.masks.mpls_lse[idx] |= htonl(MPLS_BOS_MASK);
  856|  1.55k|    flow_set_mpls_bos(&match->flow, idx, mpls_bos);
  857|  1.55k|}
match_set_any_mpls_ttl:
  862|    351|{
  863|       |    match->wc.masks.mpls_lse[idx] &= ~htonl(MPLS_TTL_MASK);
  864|    351|    flow_set_mpls_ttl(&match->flow, idx, 0);
  865|    351|}
match_set_mpls_ttl:
  871|    517|{
  872|       |    match->wc.masks.mpls_lse[idx] |= htonl(MPLS_TTL_MASK);
  873|    517|    flow_set_mpls_ttl(&match->flow, idx, mpls_ttl);
  874|    517|}
match_set_tp_src:
  886|  1.36k|{
  887|  1.36k|    match_set_tp_src_masked(match, tp_src, OVS_BE16_MAX);
  ------------------
  |  |   42|  1.36k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  888|  1.36k|}
match_set_tp_src_masked:
  892|  2.52k|{
  893|  2.52k|    match->flow.tp_src = port & mask;
  894|  2.52k|    match->wc.masks.tp_src = mask;
  895|  2.52k|}
match_set_tp_dst:
  899|  1.25k|{
  900|  1.25k|    match_set_tp_dst_masked(match, tp_dst, OVS_BE16_MAX);
  ------------------
  |  |   42|  1.25k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  901|  1.25k|}
match_set_tp_dst_masked:
  905|  2.05k|{
  906|  2.05k|    match->flow.tp_dst = port & mask;
  907|  2.05k|    match->wc.masks.tp_dst = mask;
  908|  2.05k|}
match_set_tcp_flags:
  912|    402|{
  913|    402|    match_set_tcp_flags_masked(match, flags, OVS_BE16_MAX);
  ------------------
  |  |   42|    402|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  914|    402|}
match_set_tcp_flags_masked:
  918|    882|{
  919|    882|    match->flow.tcp_flags = flags & mask;
  920|    882|    match->wc.masks.tcp_flags = mask;
  921|    882|}
match_set_nw_proto:
  925|  4.67k|{
  926|  4.67k|    match->flow.nw_proto = nw_proto;
  927|       |    match->wc.masks.nw_proto = UINT8_MAX;
  928|  4.67k|}
match_set_nw_src:
  940|    569|{
  941|    569|    match->flow.nw_src = nw_src;
  942|    569|    match->wc.masks.nw_src = OVS_BE32_MAX;
  ------------------
  |  |   43|    569|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  943|    569|}
match_set_nw_src_masked:
  948|  1.15k|{
  949|  1.15k|    match->flow.nw_src = nw_src & mask;
  950|  1.15k|    match->wc.masks.nw_src = mask;
  951|  1.15k|}
match_set_nw_dst:
  955|    956|{
  956|    956|    match->flow.nw_dst = nw_dst;
  957|    956|    match->wc.masks.nw_dst = OVS_BE32_MAX;
  ------------------
  |  |   43|    956|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  958|    956|}
match_set_nw_dst_masked:
  962|  1.99k|{
  963|  1.99k|    match->flow.nw_dst = ip & mask;
  964|  1.99k|    match->wc.masks.nw_dst = mask;
  965|  1.99k|}
match_set_nw_dscp:
  969|    782|{
  970|    782|    match->wc.masks.nw_tos |= IP_DSCP_MASK;
  ------------------
  |  |  724|    782|#define IP_DSCP_MASK 0xfc
  ------------------
  971|    782|    match->flow.nw_tos &= ~IP_DSCP_MASK;
  ------------------
  |  |  724|    782|#define IP_DSCP_MASK 0xfc
  ------------------
  972|    782|    match->flow.nw_tos |= nw_dscp & IP_DSCP_MASK;
  ------------------
  |  |  724|    782|#define IP_DSCP_MASK 0xfc
  ------------------
  973|    782|}
match_set_nw_ecn:
  977|    205|{
  978|    205|    match->wc.masks.nw_tos |= IP_ECN_MASK;
  ------------------
  |  |  722|    205|#define IP_ECN_MASK 0x03
  ------------------
  979|    205|    match->flow.nw_tos &= ~IP_ECN_MASK;
  ------------------
  |  |  722|    205|#define IP_ECN_MASK 0x03
  ------------------
  980|    205|    match->flow.nw_tos |= nw_ecn & IP_ECN_MASK;
  ------------------
  |  |  722|    205|#define IP_ECN_MASK 0x03
  ------------------
  981|    205|}
match_set_nw_ttl:
  985|    270|{
  986|       |    match->wc.masks.nw_ttl = UINT8_MAX;
  987|    270|    match->flow.nw_ttl = nw_ttl;
  988|    270|}
match_set_nw_frag:
 1006|    309|{
 1007|    309|    match->wc.masks.nw_frag |= FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|    309|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    309|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    309|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 1008|    309|    match->flow.nw_frag = nw_frag;
 1009|    309|}
match_set_nw_frag_masked:
 1014|    367|{
 1015|    367|    match->flow.nw_frag = nw_frag & mask;
 1016|    367|    match->wc.masks.nw_frag = mask;
 1017|    367|}
match_set_icmp_type:
 1021|    362|{
 1022|       |    match_set_tp_src(match, htons(icmp_type));
 1023|    362|}
match_set_icmp_code:
 1027|    490|{
 1028|       |    match_set_tp_dst(match, htons(icmp_code));
 1029|    490|}
match_set_arp_sha:
 1057|    520|{
 1058|    520|    match->flow.arp_sha = sha;
 1059|    520|    match->wc.masks.arp_sha = eth_addr_exact;
 1060|    520|}
match_set_arp_sha_masked:
 1066|    827|{
 1067|    827|    set_eth_masked(arp_sha, mask,
 1068|    827|                   &match->flow.arp_sha, &match->wc.masks.arp_sha);
 1069|    827|}
match_set_arp_tha:
 1073|    481|{
 1074|    481|    match->flow.arp_tha = tha;
 1075|    481|    match->wc.masks.arp_tha = eth_addr_exact;
 1076|    481|}
match_set_arp_tha_masked:
 1082|    610|{
 1083|    610|    set_eth_masked(arp_tha, mask,
 1084|    610|                   &match->flow.arp_tha, &match->wc.masks.arp_tha);
 1085|    610|}
match_set_ipv6_src:
 1089|    241|{
 1090|    241|    match->flow.ipv6_src = *src;
 1091|    241|    match->wc.masks.ipv6_src = in6addr_exact;
 1092|    241|}
match_set_ipv6_src_masked:
 1097|    412|{
 1098|    412|    match->flow.ipv6_src = ipv6_addr_bitand(src, mask);
 1099|    412|    match->wc.masks.ipv6_src = *mask;
 1100|    412|}
match_set_ipv6_dst:
 1104|    367|{
 1105|    367|    match->flow.ipv6_dst = *dst;
 1106|    367|    match->wc.masks.ipv6_dst = in6addr_exact;
 1107|    367|}
match_set_ipv6_dst_masked:
 1112|    648|{
 1113|    648|    match->flow.ipv6_dst = ipv6_addr_bitand(dst, mask);
 1114|    648|    match->wc.masks.ipv6_dst = *mask;
 1115|    648|}
match_set_ipv6_label:
 1119|    454|{
 1120|    454|    match->wc.masks.ipv6_label = OVS_BE32_MAX;
  ------------------
  |  |   43|    454|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
 1121|    454|    match->flow.ipv6_label = ipv6_label;
 1122|    454|}
match_set_ipv6_label_masked:
 1128|    222|{
 1129|    222|    match->flow.ipv6_label = ipv6_label & mask;
 1130|    222|    match->wc.masks.ipv6_label = mask;
 1131|    222|}
match_set_nd_target:
 1135|    319|{
 1136|    319|    match->flow.nd_target = *target;
 1137|    319|    match->wc.masks.nd_target = in6addr_exact;
 1138|    319|}
match_set_nd_target_masked:
 1144|    264|{
 1145|    264|    match->flow.nd_target = ipv6_addr_bitand(target, mask);
 1146|    264|    match->wc.masks.nd_target = *mask;
 1147|    264|}
minimatch_init:
 1819|  10.0k|{
 1820|  10.0k|    struct miniflow tmp;
 1821|       |
 1822|  10.0k|    miniflow_map_init(&tmp, &src->wc.masks);
 1823|       |    /* Allocate two consecutive miniflows. */
 1824|  10.0k|    miniflow_alloc(dst->flows, 2, &tmp);
 1825|  10.0k|    miniflow_init(dst->flow, &src->flow);
 1826|  10.0k|    minimask_init(dst->mask, &src->wc);
 1827|       |
 1828|  10.0k|    dst->tun_md = tun_metadata_allocation_clone(&src->tun_md);
 1829|  10.0k|}
minimatch_destroy:
 1869|  10.0k|{
 1870|  10.0k|    free(match->flow);
 1871|  10.0k|    free(match->tun_md);
 1872|  10.0k|}
minimatch_expand:
 1877|  19.8k|{
 1878|  19.8k|    miniflow_expand(src->flow, &dst->flow);
 1879|  19.8k|    minimask_expand(src->mask, &dst->wc);
 1880|  19.8k|    tun_metadata_allocation_copy(&dst->tun_md, src->tun_md);
 1881|  19.8k|}
match.c:set_eth:
  646|    519|{
  647|    519|    *value_dst = value_src;
  648|    519|    *mask_dst = eth_addr_exact;
  649|    519|}
match.c:set_eth_masked:
  658|  2.15k|{
  659|  2.15k|    size_t i;
  660|       |
  661|  8.60k|    for (i = 0; i < ARRAY_SIZE(value_dst->be16); i++) {
  ------------------
  |  |  297|  8.60k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  8.60k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  8.60k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  8.60k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.60k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  8.60k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (661:17): [True: 6.45k, False: 2.15k]
  ------------------
  662|  6.45k|        value_dst->be16[i] = value_src.be16[i] & mask_src.be16[i];
  663|  6.45k|    }
  664|  2.15k|    *mask_dst = mask_src;
  665|  2.15k|}

mf_from_name:
   85|   211k|{
   86|   211k|    nxm_init();
   87|   211k|    return shash_find_data(&mf_by_name, name);
   88|   211k|}
mf_from_name_len:
   94|   189k|{
   95|   189k|    nxm_init();
   96|       |
   97|   189k|    struct shash_node *node = shash_find_len(&mf_by_name, name, len);
   98|   189k|    return node ? node->data : NULL;
  ------------------
  |  Branch (98:12): [True: 131k, False: 58.1k]
  ------------------
   99|   189k|}
mf_get_mask:
  416|   117k|{
  417|   117k|    mf_get_value(mf, &wc->masks, mask);
  418|   117k|}
mf_is_mask_valid:
  424|   138k|{
  425|   138k|    switch (mf->maskable) {
  ------------------
  |  Branch (425:13): [True: 138k, False: 0]
  ------------------
  426|  19.7k|    case MFM_NONE:
  ------------------
  |  Branch (426:5): [True: 19.7k, False: 118k]
  ------------------
  427|  19.7k|        return (is_all_zeros(mask, mf->n_bytes) ||
  ------------------
  |  Branch (427:17): [True: 8.68k, False: 11.0k]
  ------------------
  428|  11.0k|                is_all_ones(mask, mf->n_bytes));
  ------------------
  |  Branch (428:17): [True: 11.0k, False: 4]
  ------------------
  429|       |
  430|   118k|    case MFM_FULLY:
  ------------------
  |  Branch (430:5): [True: 118k, False: 19.7k]
  ------------------
  431|   118k|        return true;
  432|   138k|    }
  433|       |
  434|      0|    OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  435|   138k|}
mf_are_prereqs_ok:
  496|  28.0k|{
  497|       |    return mf_are_prereqs_ok__(mf, flow, NULL, wc);
  498|  28.0k|}
mf_are_match_prereqs_ok:
  504|  62.1k|{
  505|       |    return mf_are_prereqs_ok__(mf, &match->flow, &match->wc, NULL);
  506|  62.1k|}
mf_is_value_valid:
  520|  47.0k|{
  521|  47.0k|    switch (mf->id) {
  522|      0|    case MFF_DP_HASH:
  ------------------
  |  Branch (522:5): [True: 0, False: 47.0k]
  ------------------
  523|      0|    case MFF_RECIRC_ID:
  ------------------
  |  Branch (523:5): [True: 0, False: 47.0k]
  ------------------
  524|      0|    case MFF_PACKET_TYPE:
  ------------------
  |  Branch (524:5): [True: 0, False: 47.0k]
  ------------------
  525|      0|    case MFF_CONJ_ID:
  ------------------
  |  Branch (525:5): [True: 0, False: 47.0k]
  ------------------
  526|    198|    case MFF_TUN_ID:
  ------------------
  |  Branch (526:5): [True: 198, False: 46.8k]
  ------------------
  527|    392|    case MFF_TUN_SRC:
  ------------------
  |  Branch (527:5): [True: 194, False: 46.9k]
  ------------------
  528|    586|    case MFF_TUN_DST:
  ------------------
  |  Branch (528:5): [True: 194, False: 46.9k]
  ------------------
  529|    780|    case MFF_TUN_IPV6_SRC:
  ------------------
  |  Branch (529:5): [True: 194, False: 46.9k]
  ------------------
  530|    974|    case MFF_TUN_IPV6_DST:
  ------------------
  |  Branch (530:5): [True: 194, False: 46.9k]
  ------------------
  531|    974|    case MFF_TUN_TOS:
  ------------------
  |  Branch (531:5): [True: 0, False: 47.0k]
  ------------------
  532|    974|    case MFF_TUN_TTL:
  ------------------
  |  Branch (532:5): [True: 0, False: 47.0k]
  ------------------
  533|  1.04k|    case MFF_TUN_GBP_ID:
  ------------------
  |  Branch (533:5): [True: 66, False: 47.0k]
  ------------------
  534|  1.23k|    case MFF_TUN_GBP_FLAGS:
  ------------------
  |  Branch (534:5): [True: 194, False: 46.9k]
  ------------------
  535|  1.23k|    case MFF_TUN_ERSPAN_IDX:
  ------------------
  |  Branch (535:5): [True: 0, False: 47.0k]
  ------------------
  536|  1.23k|    case MFF_TUN_ERSPAN_VER:
  ------------------
  |  Branch (536:5): [True: 0, False: 47.0k]
  ------------------
  537|  1.23k|    case MFF_TUN_ERSPAN_DIR:
  ------------------
  |  Branch (537:5): [True: 0, False: 47.0k]
  ------------------
  538|  1.23k|    case MFF_TUN_ERSPAN_HWID:
  ------------------
  |  Branch (538:5): [True: 0, False: 47.0k]
  ------------------
  539|  1.23k|    case MFF_TUN_GTPU_FLAGS:
  ------------------
  |  Branch (539:5): [True: 0, False: 47.0k]
  ------------------
  540|  1.23k|    case MFF_TUN_GTPU_MSGTYPE:
  ------------------
  |  Branch (540:5): [True: 0, False: 47.0k]
  ------------------
  541|   573k|    CASE_MFF_TUN_METADATA:
  ------------------
  |  | 2110|  2.01k|    case MFF_TUN_METADATA0: case MFF_TUN_METADATA1:   \
  |  |  ------------------
  |  |  |  Branch (2110:5): [True: 528, False: 46.5k]
  |  |  |  Branch (2110:29): [True: 256, False: 46.8k]
  |  |  ------------------
  |  | 2111|  2.65k|    case MFF_TUN_METADATA2: case MFF_TUN_METADATA3:   \
  |  |  ------------------
  |  |  |  Branch (2111:5): [True: 299, False: 46.7k]
  |  |  |  Branch (2111:29): [True: 341, False: 46.7k]
  |  |  ------------------
  |  | 2112|  3.25k|    case MFF_TUN_METADATA4: case MFF_TUN_METADATA5:   \
  |  |  ------------------
  |  |  |  Branch (2112:5): [True: 280, False: 46.8k]
  |  |  |  Branch (2112:29): [True: 314, False: 46.7k]
  |  |  ------------------
  |  | 2113|  3.56k|    case MFF_TUN_METADATA6: case MFF_TUN_METADATA7:   \
  |  |  ------------------
  |  |  |  Branch (2113:5): [True: 228, False: 46.8k]
  |  |  |  Branch (2113:29): [True: 86, False: 47.0k]
  |  |  ------------------
  |  | 2114|  4.09k|    case MFF_TUN_METADATA8: case MFF_TUN_METADATA9:   \
  |  |  ------------------
  |  |  |  Branch (2114:5): [True: 239, False: 46.8k]
  |  |  |  Branch (2114:29): [True: 286, False: 46.8k]
  |  |  ------------------
  |  | 2115|  4.48k|    case MFF_TUN_METADATA10: case MFF_TUN_METADATA11: \
  |  |  ------------------
  |  |  |  Branch (2115:5): [True: 198, False: 46.8k]
  |  |  |  Branch (2115:30): [True: 195, False: 46.9k]
  |  |  ------------------
  |  | 2116|  5.12k|    case MFF_TUN_METADATA12: case MFF_TUN_METADATA13: \
  |  |  ------------------
  |  |  |  Branch (2116:5): [True: 418, False: 46.6k]
  |  |  |  Branch (2116:30): [True: 218, False: 46.8k]
  |  |  ------------------
  |  | 2117|  5.68k|    case MFF_TUN_METADATA14: case MFF_TUN_METADATA15: \
  |  |  ------------------
  |  |  |  Branch (2117:5): [True: 307, False: 46.7k]
  |  |  |  Branch (2117:30): [True: 258, False: 46.8k]
  |  |  ------------------
  |  | 2118|  5.97k|    case MFF_TUN_METADATA16: case MFF_TUN_METADATA17: \
  |  |  ------------------
  |  |  |  Branch (2118:5): [True: 77, False: 47.0k]
  |  |  |  Branch (2118:30): [True: 216, False: 46.8k]
  |  |  ------------------
  |  | 2119|  6.28k|    case MFF_TUN_METADATA18: case MFF_TUN_METADATA19: \
  |  |  ------------------
  |  |  |  Branch (2119:5): [True: 71, False: 47.0k]
  |  |  |  Branch (2119:30): [True: 233, False: 46.8k]
  |  |  ------------------
  |  | 2120|  6.70k|    case MFF_TUN_METADATA20: case MFF_TUN_METADATA21: \
  |  |  ------------------
  |  |  |  Branch (2120:5): [True: 220, False: 46.8k]
  |  |  |  Branch (2120:30): [True: 198, False: 46.8k]
  |  |  ------------------
  |  | 2121|  7.14k|    case MFF_TUN_METADATA22: case MFF_TUN_METADATA23: \
  |  |  ------------------
  |  |  |  Branch (2121:5): [True: 232, False: 46.8k]
  |  |  |  Branch (2121:30): [True: 208, False: 46.8k]
  |  |  ------------------
  |  | 2122|  7.67k|    case MFF_TUN_METADATA24: case MFF_TUN_METADATA25: \
  |  |  ------------------
  |  |  |  Branch (2122:5): [True: 289, False: 46.8k]
  |  |  |  Branch (2122:30): [True: 246, False: 46.8k]
  |  |  ------------------
  |  | 2123|  8.08k|    case MFF_TUN_METADATA26: case MFF_TUN_METADATA27: \
  |  |  ------------------
  |  |  |  Branch (2123:5): [True: 197, False: 46.8k]
  |  |  |  Branch (2123:30): [True: 208, False: 46.8k]
  |  |  ------------------
  |  | 2124|  8.47k|    case MFF_TUN_METADATA28: case MFF_TUN_METADATA29: \
  |  |  ------------------
  |  |  |  Branch (2124:5): [True: 327, False: 46.7k]
  |  |  |  Branch (2124:30): [True: 71, False: 47.0k]
  |  |  ------------------
  |  | 2125|  8.87k|    case MFF_TUN_METADATA30: case MFF_TUN_METADATA31: \
  |  |  ------------------
  |  |  |  Branch (2125:5): [True: 195, False: 46.9k]
  |  |  |  Branch (2125:30): [True: 200, False: 46.8k]
  |  |  ------------------
  |  | 2126|  9.36k|    case MFF_TUN_METADATA32: case MFF_TUN_METADATA33: \
  |  |  ------------------
  |  |  |  Branch (2126:5): [True: 255, False: 46.8k]
  |  |  |  Branch (2126:30): [True: 239, False: 46.8k]
  |  |  ------------------
  |  | 2127|  9.77k|    case MFF_TUN_METADATA34: case MFF_TUN_METADATA35: \
  |  |  ------------------
  |  |  |  Branch (2127:5): [True: 202, False: 46.8k]
  |  |  |  Branch (2127:30): [True: 201, False: 46.8k]
  |  |  ------------------
  |  | 2128|  10.2k|    case MFF_TUN_METADATA36: case MFF_TUN_METADATA37: \
  |  |  ------------------
  |  |  |  Branch (2128:5): [True: 307, False: 46.7k]
  |  |  |  Branch (2128:30): [True: 197, False: 46.8k]
  |  |  ------------------
  |  | 2129|  10.6k|    case MFF_TUN_METADATA38: case MFF_TUN_METADATA39: \
  |  |  ------------------
  |  |  |  Branch (2129:5): [True: 222, False: 46.8k]
  |  |  |  Branch (2129:30): [True: 201, False: 46.8k]
  |  |  ------------------
  |  | 2130|  11.1k|    case MFF_TUN_METADATA40: case MFF_TUN_METADATA41: \
  |  |  ------------------
  |  |  |  Branch (2130:5): [True: 222, False: 46.8k]
  |  |  |  Branch (2130:30): [True: 214, False: 46.8k]
  |  |  ------------------
  |  | 2131|  11.3k|    case MFF_TUN_METADATA42: case MFF_TUN_METADATA43: \
  |  |  ------------------
  |  |  |  Branch (2131:5): [True: 68, False: 47.0k]
  |  |  |  Branch (2131:30): [True: 198, False: 46.8k]
  |  |  ------------------
  |  | 2132|  11.8k|    case MFF_TUN_METADATA44: case MFF_TUN_METADATA45: \
  |  |  ------------------
  |  |  |  Branch (2132:5): [True: 215, False: 46.8k]
  |  |  |  Branch (2132:30): [True: 194, False: 46.9k]
  |  |  ------------------
  |  | 2133|  12.2k|    case MFF_TUN_METADATA46: case MFF_TUN_METADATA47: \
  |  |  ------------------
  |  |  |  Branch (2133:5): [True: 196, False: 46.8k]
  |  |  |  Branch (2133:30): [True: 210, False: 46.8k]
  |  |  ------------------
  |  | 2134|  12.7k|    case MFF_TUN_METADATA48: case MFF_TUN_METADATA49: \
  |  |  ------------------
  |  |  |  Branch (2134:5): [True: 240, False: 46.8k]
  |  |  |  Branch (2134:30): [True: 246, False: 46.8k]
  |  |  ------------------
  |  | 2135|  13.2k|    case MFF_TUN_METADATA50: case MFF_TUN_METADATA51: \
  |  |  ------------------
  |  |  |  Branch (2135:5): [True: 217, False: 46.8k]
  |  |  |  Branch (2135:30): [True: 294, False: 46.8k]
  |  |  ------------------
  |  | 2136|  13.6k|    case MFF_TUN_METADATA52: case MFF_TUN_METADATA53: \
  |  |  ------------------
  |  |  |  Branch (2136:5): [True: 216, False: 46.8k]
  |  |  |  Branch (2136:30): [True: 213, False: 46.8k]
  |  |  ------------------
  |  | 2137|  14.0k|    case MFF_TUN_METADATA54: case MFF_TUN_METADATA55: \
  |  |  ------------------
  |  |  |  Branch (2137:5): [True: 221, False: 46.8k]
  |  |  |  Branch (2137:30): [True: 224, False: 46.8k]
  |  |  ------------------
  |  | 2138|  14.3k|    case MFF_TUN_METADATA56: case MFF_TUN_METADATA57: \
  |  |  ------------------
  |  |  |  Branch (2138:5): [True: 78, False: 47.0k]
  |  |  |  Branch (2138:30): [True: 194, False: 46.9k]
  |  |  ------------------
  |  | 2139|  14.7k|    case MFF_TUN_METADATA58: case MFF_TUN_METADATA59: \
  |  |  ------------------
  |  |  |  Branch (2139:5): [True: 207, False: 46.8k]
  |  |  |  Branch (2139:30): [True: 195, False: 46.9k]
  |  |  ------------------
  |  | 2140|  15.1k|    case MFF_TUN_METADATA60: case MFF_TUN_METADATA61: \
  |  |  ------------------
  |  |  |  Branch (2140:5): [True: 236, False: 46.8k]
  |  |  |  Branch (2140:30): [True: 200, False: 46.8k]
  |  |  ------------------
  |  | 2141|  15.5k|    case MFF_TUN_METADATA62: case MFF_TUN_METADATA63
  |  |  ------------------
  |  |  |  Branch (2141:5): [True: 196, False: 46.8k]
  |  |  ------------------
  ------------------
  542|   573k|    case MFF_METADATA:
  ------------------
  |  Branch (542:5): [True: 194, False: 46.9k]
  ------------------
  543|  16.0k|    case MFF_IN_PORT:
  ------------------
  |  Branch (543:5): [True: 237, False: 46.8k]
  ------------------
  544|  16.0k|    case MFF_SKB_PRIORITY:
  ------------------
  |  Branch (544:5): [True: 0, False: 47.0k]
  ------------------
  545|  16.2k|    case MFF_PKT_MARK:
  ------------------
  |  Branch (545:5): [True: 194, False: 46.9k]
  ------------------
  546|  16.2k|    case MFF_CT_ZONE:
  ------------------
  |  Branch (546:5): [True: 0, False: 47.0k]
  ------------------
  547|  16.4k|    case MFF_CT_MARK:
  ------------------
  |  Branch (547:5): [True: 233, False: 46.8k]
  ------------------
  548|  16.6k|    case MFF_CT_LABEL:
  ------------------
  |  Branch (548:5): [True: 221, False: 46.8k]
  ------------------
  549|  16.6k|    case MFF_CT_NW_PROTO:
  ------------------
  |  Branch (549:5): [True: 0, False: 47.0k]
  ------------------
  550|  16.6k|    case MFF_CT_NW_SRC:
  ------------------
  |  Branch (550:5): [True: 0, False: 47.0k]
  ------------------
  551|  16.6k|    case MFF_CT_NW_DST:
  ------------------
  |  Branch (551:5): [True: 0, False: 47.0k]
  ------------------
  552|  16.6k|    case MFF_CT_IPV6_SRC:
  ------------------
  |  Branch (552:5): [True: 0, False: 47.0k]
  ------------------
  553|  16.6k|    case MFF_CT_IPV6_DST:
  ------------------
  |  Branch (553:5): [True: 0, False: 47.0k]
  ------------------
  554|  16.6k|    case MFF_CT_TP_SRC:
  ------------------
  |  Branch (554:5): [True: 0, False: 47.0k]
  ------------------
  555|  16.6k|    case MFF_CT_TP_DST:
  ------------------
  |  Branch (555:5): [True: 0, False: 47.0k]
  ------------------
  556|   665k|    CASE_MFF_REGS:
  ------------------
  |  | 2065|  17.9k|    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3:     \
  |  |  ------------------
  |  |  |  Branch (2065:5): [True: 580, False: 46.5k]
  |  |  |  Branch (2065:20): [True: 276, False: 46.8k]
  |  |  |  Branch (2065:35): [True: 233, False: 46.8k]
  |  |  |  Branch (2065:50): [True: 221, False: 46.8k]
  |  |  ------------------
  |  | 2066|  18.7k|    case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7:     \
  |  |  ------------------
  |  |  |  Branch (2066:5): [True: 270, False: 46.8k]
  |  |  |  Branch (2066:20): [True: 94, False: 47.0k]
  |  |  |  Branch (2066:35): [True: 108, False: 46.9k]
  |  |  |  Branch (2066:50): [True: 255, False: 46.8k]
  |  |  ------------------
  |  | 2067|  19.5k|    case MFF_REG8: case MFF_REG9: case MFF_REG10: case MFF_REG11:   \
  |  |  ------------------
  |  |  |  Branch (2067:5): [True: 204, False: 46.8k]
  |  |  |  Branch (2067:20): [True: 195, False: 46.9k]
  |  |  |  Branch (2067:35): [True: 213, False: 46.8k]
  |  |  |  Branch (2067:51): [True: 234, False: 46.8k]
  |  |  ------------------
  |  | 2068|  20.4k|    case MFF_REG12: case MFF_REG13: case MFF_REG14: case MFF_REG15: \
  |  |  ------------------
  |  |  |  Branch (2068:5): [True: 227, False: 46.8k]
  |  |  |  Branch (2068:21): [True: 293, False: 46.8k]
  |  |  |  Branch (2068:37): [True: 195, False: 46.9k]
  |  |  |  Branch (2068:53): [True: 220, False: 46.8k]
  |  |  ------------------
  |  | 2069|  21.1k|    case MFF_REG16: case MFF_REG17: case MFF_REG18: case MFF_REG19: \
  |  |  ------------------
  |  |  |  Branch (2069:5): [True: 78, False: 47.0k]
  |  |  |  Branch (2069:21): [True: 197, False: 46.8k]
  |  |  |  Branch (2069:37): [True: 198, False: 46.8k]
  |  |  |  Branch (2069:53): [True: 232, False: 46.8k]
  |  |  ------------------
  |  | 2070|  22.5k|    case MFF_REG20: case MFF_REG21: case MFF_REG22: case MFF_REG23: \
  |  |  ------------------
  |  |  |  Branch (2070:5): [True: 639, False: 46.4k]
  |  |  |  Branch (2070:21): [True: 468, False: 46.6k]
  |  |  |  Branch (2070:37): [True: 197, False: 46.8k]
  |  |  |  Branch (2070:53): [True: 81, False: 47.0k]
  |  |  ------------------
  |  | 2071|  23.7k|    case MFF_REG24: case MFF_REG25: case MFF_REG26: case MFF_REG27: \
  |  |  ------------------
  |  |  |  Branch (2071:5): [True: 213, False: 46.8k]
  |  |  |  Branch (2071:21): [True: 383, False: 46.7k]
  |  |  |  Branch (2071:37): [True: 200, False: 46.8k]
  |  |  |  Branch (2071:53): [True: 388, False: 46.7k]
  |  |  ------------------
  |  | 2072|  25.0k|    case MFF_REG28: case MFF_REG29: case MFF_REG30: case MFF_REG31
  |  |  ------------------
  |  |  |  Branch (2072:5): [True: 210, False: 46.8k]
  |  |  |  Branch (2072:21): [True: 578, False: 46.5k]
  |  |  |  Branch (2072:37): [True: 266, False: 46.8k]
  |  |  ------------------
  ------------------
  557|   665k|    CASE_MFF_XREGS:
  ------------------
  |  | 2081|  26.0k|    case MFF_XREG0: case MFF_XREG1: case MFF_XREG2: case MFF_XREG3:    \
  |  |  ------------------
  |  |  |  Branch (2081:5): [True: 331, False: 46.7k]
  |  |  |  Branch (2081:21): [True: 252, False: 46.8k]
  |  |  |  Branch (2081:37): [True: 201, False: 46.8k]
  |  |  |  Branch (2081:53): [True: 201, False: 46.8k]
  |  |  ------------------
  |  | 2082|  27.2k|    case MFF_XREG4: case MFF_XREG5: case MFF_XREG6: case MFF_XREG7:    \
  |  |  ------------------
  |  |  |  Branch (2082:5): [True: 226, False: 46.8k]
  |  |  |  Branch (2082:21): [True: 356, False: 46.7k]
  |  |  |  Branch (2082:37): [True: 348, False: 46.7k]
  |  |  |  Branch (2082:53): [True: 338, False: 46.7k]
  |  |  ------------------
  |  | 2083|  28.0k|    case MFF_XREG8: case MFF_XREG9: case MFF_XREG10: case MFF_XREG11:  \
  |  |  ------------------
  |  |  |  Branch (2083:5): [True: 297, False: 46.7k]
  |  |  |  Branch (2083:21): [True: 68, False: 47.0k]
  |  |  |  Branch (2083:37): [True: 194, False: 46.9k]
  |  |  |  Branch (2083:54): [True: 196, False: 46.8k]
  |  |  ------------------
  |  | 2084|  28.8k|    case MFF_XREG12: case MFF_XREG13: case MFF_XREG14: case MFF_XREG15
  |  |  ------------------
  |  |  |  Branch (2084:5): [True: 206, False: 46.8k]
  |  |  |  Branch (2084:22): [True: 200, False: 46.8k]
  |  |  |  Branch (2084:39): [True: 197, False: 46.8k]
  |  |  ------------------
  ------------------
  558|   435k|    CASE_MFF_XXREGS:
  ------------------
  |  | 2093|  33.4k|    case MFF_XXREG0: case MFF_XXREG1: case MFF_XXREG2: case MFF_XXREG3: \
  |  |  ------------------
  |  |  |  Branch (2093:5): [True: 994, False: 46.1k]
  |  |  |  Branch (2093:22): [True: 3.02k, False: 44.0k]
  |  |  |  Branch (2093:39): [True: 222, False: 46.8k]
  |  |  |  Branch (2093:56): [True: 403, False: 46.6k]
  |  |  ------------------
  |  | 2094|  34.2k|    case MFF_XXREG4: case MFF_XXREG5: case MFF_XXREG6: case MFF_XXREG7
  |  |  ------------------
  |  |  |  Branch (2094:5): [True: 140, False: 46.9k]
  |  |  |  Branch (2094:22): [True: 195, False: 46.9k]
  |  |  |  Branch (2094:39): [True: 246, False: 46.8k]
  |  |  ------------------
  ------------------
  559|   264k|    case MFF_ETH_SRC:
  ------------------
  |  Branch (559:5): [True: 66, False: 47.0k]
  ------------------
  560|  34.5k|    case MFF_ETH_DST:
  ------------------
  |  Branch (560:5): [True: 239, False: 46.8k]
  ------------------
  561|  34.5k|    case MFF_ETH_TYPE:
  ------------------
  |  Branch (561:5): [True: 0, False: 47.0k]
  ------------------
  562|  36.1k|    case MFF_VLAN_TCI:
  ------------------
  |  Branch (562:5): [True: 1.55k, False: 45.5k]
  ------------------
  563|  36.3k|    case MFF_MPLS_TTL:
  ------------------
  |  Branch (563:5): [True: 229, False: 46.8k]
  ------------------
  564|  36.5k|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (564:5): [True: 203, False: 46.8k]
  ------------------
  565|  36.7k|    case MFF_IPV4_DST:
  ------------------
  |  Branch (565:5): [True: 197, False: 46.8k]
  ------------------
  566|  36.9k|    case MFF_IPV6_SRC:
  ------------------
  |  Branch (566:5): [True: 194, False: 46.9k]
  ------------------
  567|  37.1k|    case MFF_IPV6_DST:
  ------------------
  |  Branch (567:5): [True: 247, False: 46.8k]
  ------------------
  568|  37.1k|    case MFF_IP_PROTO:
  ------------------
  |  Branch (568:5): [True: 0, False: 47.0k]
  ------------------
  569|  37.3k|    case MFF_IP_TTL:
  ------------------
  |  Branch (569:5): [True: 194, False: 46.9k]
  ------------------
  570|  37.5k|    case MFF_ARP_SPA:
  ------------------
  |  Branch (570:5): [True: 201, False: 46.8k]
  ------------------
  571|  38.1k|    case MFF_ARP_TPA:
  ------------------
  |  Branch (571:5): [True: 560, False: 46.5k]
  ------------------
  572|  38.3k|    case MFF_ARP_SHA:
  ------------------
  |  Branch (572:5): [True: 195, False: 46.9k]
  ------------------
  573|  38.5k|    case MFF_ARP_THA:
  ------------------
  |  Branch (573:5): [True: 234, False: 46.8k]
  ------------------
  574|  38.8k|    case MFF_TCP_SRC:
  ------------------
  |  Branch (574:5): [True: 263, False: 46.8k]
  ------------------
  575|  39.1k|    case MFF_TCP_DST:
  ------------------
  |  Branch (575:5): [True: 305, False: 46.7k]
  ------------------
  576|  39.4k|    case MFF_UDP_SRC:
  ------------------
  |  Branch (576:5): [True: 299, False: 46.7k]
  ------------------
  577|  39.4k|    case MFF_UDP_DST:
  ------------------
  |  Branch (577:5): [True: 38, False: 47.0k]
  ------------------
  578|  39.7k|    case MFF_SCTP_SRC:
  ------------------
  |  Branch (578:5): [True: 254, False: 46.8k]
  ------------------
  579|  40.1k|    case MFF_SCTP_DST:
  ------------------
  |  Branch (579:5): [True: 460, False: 46.6k]
  ------------------
  580|  40.6k|    case MFF_ICMPV4_TYPE:
  ------------------
  |  Branch (580:5): [True: 413, False: 46.6k]
  ------------------
  581|  40.6k|    case MFF_ICMPV4_CODE:
  ------------------
  |  Branch (581:5): [True: 66, False: 47.0k]
  ------------------
  582|  40.9k|    case MFF_ICMPV6_TYPE:
  ------------------
  |  Branch (582:5): [True: 305, False: 46.7k]
  ------------------
  583|  41.1k|    case MFF_ICMPV6_CODE:
  ------------------
  |  Branch (583:5): [True: 195, False: 46.9k]
  ------------------
  584|  41.1k|    case MFF_ND_TARGET:
  ------------------
  |  Branch (584:5): [True: 0, False: 47.0k]
  ------------------
  585|  41.5k|    case MFF_ND_SLL:
  ------------------
  |  Branch (585:5): [True: 421, False: 46.6k]
  ------------------
  586|  41.9k|    case MFF_ND_TLL:
  ------------------
  |  Branch (586:5): [True: 395, False: 46.7k]
  ------------------
  587|  41.9k|    case MFF_ND_RESERVED:
  ------------------
  |  Branch (587:5): [True: 0, False: 47.0k]
  ------------------
  588|  41.9k|    case MFF_ND_OPTIONS_TYPE:
  ------------------
  |  Branch (588:5): [True: 0, False: 47.0k]
  ------------------
  589|  41.9k|        return true;
  590|       |
  591|      0|    case MFF_IN_PORT_OXM:
  ------------------
  |  Branch (591:5): [True: 0, False: 47.0k]
  ------------------
  592|      0|    case MFF_ACTSET_OUTPUT: {
  ------------------
  |  Branch (592:5): [True: 0, False: 47.0k]
  ------------------
  593|      0|        ofp_port_t port;
  594|      0|        return !ofputil_port_from_ofp11(value->be32, &port);
  595|      0|    }
  596|       |
  597|    204|    case MFF_IP_DSCP:
  ------------------
  |  Branch (597:5): [True: 204, False: 46.8k]
  ------------------
  598|    204|        return !(value->u8 & ~IP_DSCP_MASK);
  ------------------
  |  |  724|    204|#define IP_DSCP_MASK 0xfc
  ------------------
  599|    229|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (599:5): [True: 229, False: 46.8k]
  ------------------
  600|    229|        return !(value->u8 & (~IP_DSCP_MASK >> 2));
  ------------------
  |  |  724|    229|#define IP_DSCP_MASK 0xfc
  ------------------
  601|    351|    case MFF_IP_ECN:
  ------------------
  |  Branch (601:5): [True: 351, False: 46.7k]
  ------------------
  602|    351|        return !(value->u8 & ~IP_ECN_MASK);
  ------------------
  |  |  722|    351|#define IP_ECN_MASK 0x03
  ------------------
  603|      0|    case MFF_IP_FRAG:
  ------------------
  |  Branch (603:5): [True: 0, False: 47.0k]
  ------------------
  604|      0|        return !(value->u8 & ~FLOW_NW_FRAG_MASK);
  ------------------
  |  |   56|      0|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|      0|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|      0|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
  605|      0|    case MFF_TCP_FLAGS:
  ------------------
  |  Branch (605:5): [True: 0, False: 47.0k]
  ------------------
  606|      0|        return !(value->be16 & ~htons(0x0fff));
  607|       |
  608|    195|    case MFF_ARP_OP:
  ------------------
  |  Branch (608:5): [True: 195, False: 46.9k]
  ------------------
  609|    195|        return !(value->be16 & htons(0xff00));
  610|       |
  611|    226|    case MFF_DL_VLAN:
  ------------------
  |  Branch (611:5): [True: 226, False: 46.8k]
  ------------------
  612|    226|        return !(value->be16 & htons(VLAN_CFI | VLAN_PCP_MASK));
  613|    398|    case MFF_VLAN_VID:
  ------------------
  |  Branch (613:5): [True: 398, False: 46.6k]
  ------------------
  614|    398|        return !(value->be16 & htons(VLAN_PCP_MASK));
  615|       |
  616|     66|    case MFF_DL_VLAN_PCP:
  ------------------
  |  Branch (616:5): [True: 66, False: 47.0k]
  ------------------
  617|    513|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (617:5): [True: 447, False: 46.6k]
  ------------------
  618|    513|        return !(value->u8 & ~(VLAN_PCP_MASK >> VLAN_PCP_SHIFT));
  ------------------
  |  |  497|    513|#define VLAN_PCP_MASK 0xe000
  ------------------
                      return !(value->u8 & ~(VLAN_PCP_MASK >> VLAN_PCP_SHIFT));
  ------------------
  |  |  498|    513|#define VLAN_PCP_SHIFT 13
  ------------------
  619|       |
  620|     78|    case MFF_IPV6_LABEL:
  ------------------
  |  Branch (620:5): [True: 78, False: 47.0k]
  ------------------
  621|     78|        return !(value->be32 & ~htonl(IPV6_LABEL_MASK));
  622|       |
  623|     66|    case MFF_MPLS_LABEL:
  ------------------
  |  Branch (623:5): [True: 66, False: 47.0k]
  ------------------
  624|     66|        return !(value->be32 & ~htonl(MPLS_LABEL_MASK >> MPLS_LABEL_SHIFT));
  625|       |
  626|    342|    case MFF_MPLS_TC:
  ------------------
  |  Branch (626:5): [True: 342, False: 46.7k]
  ------------------
  627|    342|        return !(value->u8 & ~(MPLS_TC_MASK >> MPLS_TC_SHIFT));
  ------------------
  |  |  551|    342|#define MPLS_TC_MASK        0x00000e00
  ------------------
                      return !(value->u8 & ~(MPLS_TC_MASK >> MPLS_TC_SHIFT));
  ------------------
  |  |  552|    342|#define MPLS_TC_SHIFT       9
  ------------------
  628|       |
  629|      0|    case MFF_MPLS_BOS:
  ------------------
  |  Branch (629:5): [True: 0, False: 47.0k]
  ------------------
  630|      0|        return !(value->u8 & ~(MPLS_BOS_MASK >> MPLS_BOS_SHIFT));
  ------------------
  |  |  548|      0|#define MPLS_BOS_MASK       0x00000100
  ------------------
                      return !(value->u8 & ~(MPLS_BOS_MASK >> MPLS_BOS_SHIFT));
  ------------------
  |  |  549|      0|#define MPLS_BOS_SHIFT      8
  ------------------
  631|       |
  632|    199|    case MFF_TUN_FLAGS:
  ------------------
  |  Branch (632:5): [True: 199, False: 46.8k]
  ------------------
  633|    199|        return !(value->be16 & ~htons(FLOW_TNL_PUB_F_MASK));
  634|       |
  635|      0|    case MFF_CT_STATE:
  ------------------
  |  Branch (635:5): [True: 0, False: 47.0k]
  ------------------
  636|      0|        return !(value->be32 & ~htonl(CS_SUPPORTED_MASK));
  637|       |
  638|     67|    case MFF_NSH_FLAGS:
  ------------------
  |  Branch (638:5): [True: 67, False: 47.0k]
  ------------------
  639|     67|        return true;
  640|    349|    case MFF_NSH_TTL:
  ------------------
  |  Branch (640:5): [True: 349, False: 46.7k]
  ------------------
  641|    349|        return (value->u8 <= 63);
  642|      0|    case MFF_NSH_MDTYPE:
  ------------------
  |  Branch (642:5): [True: 0, False: 47.0k]
  ------------------
  643|      0|        return (value->u8 == 1 || value->u8 == 2);
  ------------------
  |  Branch (643:17): [True: 0, False: 0]
  |  Branch (643:35): [True: 0, False: 0]
  ------------------
  644|      0|    case MFF_NSH_NP:
  ------------------
  |  Branch (644:5): [True: 0, False: 47.0k]
  ------------------
  645|      0|        return true;
  646|    198|    case MFF_NSH_SPI:
  ------------------
  |  Branch (646:5): [True: 198, False: 46.8k]
  ------------------
  647|    198|        return !(value->be32 & htonl(0xFF000000));
  648|    199|    case MFF_NSH_SI:
  ------------------
  |  Branch (648:5): [True: 199, False: 46.8k]
  ------------------
  649|    553|    case MFF_NSH_C1:
  ------------------
  |  Branch (649:5): [True: 354, False: 46.7k]
  ------------------
  650|    858|    case MFF_NSH_C2:
  ------------------
  |  Branch (650:5): [True: 305, False: 46.7k]
  ------------------
  651|  1.41k|    case MFF_NSH_C3:
  ------------------
  |  Branch (651:5): [True: 553, False: 46.5k]
  ------------------
  652|  1.68k|    case MFF_NSH_C4:
  ------------------
  |  Branch (652:5): [True: 275, False: 46.8k]
  ------------------
  653|  1.68k|        return true;
  654|       |
  655|      0|    case MFF_N_IDS:
  ------------------
  |  Branch (655:5): [True: 0, False: 47.0k]
  ------------------
  656|      0|    default:
  ------------------
  |  Branch (656:5): [True: 0, False: 47.0k]
  ------------------
  657|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  658|  47.0k|    }
  659|  47.0k|}
mf_get_value:
  666|   234k|{
  667|   234k|    switch (mf->id) {
  668|    946|    case MFF_DP_HASH:
  ------------------
  |  Branch (668:5): [True: 946, False: 233k]
  ------------------
  669|    946|        value->be32 = htonl(flow->dp_hash);
  670|    946|        break;
  671|    954|    case MFF_RECIRC_ID:
  ------------------
  |  Branch (671:5): [True: 954, False: 233k]
  ------------------
  672|    954|        value->be32 = htonl(flow->recirc_id);
  673|    954|        break;
  674|  1.97k|    case MFF_PACKET_TYPE:
  ------------------
  |  Branch (674:5): [True: 1.97k, False: 232k]
  ------------------
  675|  1.97k|        value->be32 = flow->packet_type;
  676|  1.97k|        break;
  677|    948|    case MFF_CONJ_ID:
  ------------------
  |  Branch (677:5): [True: 948, False: 233k]
  ------------------
  678|    948|        value->be32 = htonl(flow->conj_id);
  679|    948|        break;
  680|  1.48k|    case MFF_TUN_ID:
  ------------------
  |  Branch (680:5): [True: 1.48k, False: 233k]
  ------------------
  681|  1.48k|        value->be64 = flow->tunnel.tun_id;
  682|  1.48k|        break;
  683|    920|    case MFF_TUN_SRC:
  ------------------
  |  Branch (683:5): [True: 920, False: 233k]
  ------------------
  684|    920|        value->be32 = flow->tunnel.ip_src;
  685|    920|        break;
  686|  1.00k|    case MFF_TUN_DST:
  ------------------
  |  Branch (686:5): [True: 1.00k, False: 233k]
  ------------------
  687|  1.00k|        value->be32 = flow->tunnel.ip_dst;
  688|  1.00k|        break;
  689|    564|    case MFF_TUN_IPV6_SRC:
  ------------------
  |  Branch (689:5): [True: 564, False: 234k]
  ------------------
  690|    564|        value->ipv6 = flow->tunnel.ipv6_src;
  691|    564|        break;
  692|    912|    case MFF_TUN_IPV6_DST:
  ------------------
  |  Branch (692:5): [True: 912, False: 233k]
  ------------------
  693|    912|        value->ipv6 = flow->tunnel.ipv6_dst;
  694|    912|        break;
  695|    530|    case MFF_TUN_FLAGS:
  ------------------
  |  Branch (695:5): [True: 530, False: 234k]
  ------------------
  696|    530|        value->be16 = htons(flow->tunnel.flags & FLOW_TNL_PUB_F_MASK);
  697|    530|        break;
  698|    944|    case MFF_TUN_GBP_ID:
  ------------------
  |  Branch (698:5): [True: 944, False: 233k]
  ------------------
  699|    944|        value->be16 = flow->tunnel.gbp_id;
  700|    944|        break;
  701|  1.17k|    case MFF_TUN_GBP_FLAGS:
  ------------------
  |  Branch (701:5): [True: 1.17k, False: 233k]
  ------------------
  702|  1.17k|        value->u8 = flow->tunnel.gbp_flags;
  703|  1.17k|        break;
  704|    906|    case MFF_TUN_TTL:
  ------------------
  |  Branch (704:5): [True: 906, False: 233k]
  ------------------
  705|    906|        value->u8 = flow->tunnel.ip_ttl;
  706|    906|        break;
  707|  4.92k|    case MFF_TUN_TOS:
  ------------------
  |  Branch (707:5): [True: 4.92k, False: 229k]
  ------------------
  708|  4.92k|        value->u8 = flow->tunnel.ip_tos;
  709|  4.92k|        break;
  710|    452|    case MFF_TUN_ERSPAN_VER:
  ------------------
  |  Branch (710:5): [True: 452, False: 234k]
  ------------------
  711|    452|        value->u8 = flow->tunnel.erspan_ver;
  712|    452|        break;
  713|    516|    case MFF_TUN_ERSPAN_IDX:
  ------------------
  |  Branch (713:5): [True: 516, False: 234k]
  ------------------
  714|    516|        value->be32 = htonl(flow->tunnel.erspan_idx);
  715|    516|        break;
  716|    260|    case MFF_TUN_ERSPAN_DIR:
  ------------------
  |  Branch (716:5): [True: 260, False: 234k]
  ------------------
  717|    260|        value->u8 = flow->tunnel.erspan_dir;
  718|    260|        break;
  719|      0|    case MFF_TUN_ERSPAN_HWID:
  ------------------
  |  Branch (719:5): [True: 0, False: 234k]
  ------------------
  720|      0|        value->u8 = flow->tunnel.erspan_hwid;
  721|      0|        break;
  722|    892|    case MFF_TUN_GTPU_FLAGS:
  ------------------
  |  Branch (722:5): [True: 892, False: 233k]
  ------------------
  723|    892|        value->u8 = flow->tunnel.gtpu_flags;
  724|    892|        break;
  725|      0|    case MFF_TUN_GTPU_MSGTYPE:
  ------------------
  |  Branch (725:5): [True: 0, False: 234k]
  ------------------
  726|      0|        value->u8 = flow->tunnel.gtpu_msgtype;
  727|      0|        break;
  728|  79.2k|    CASE_MFF_TUN_METADATA:
  ------------------
  |  | 2110|  2.95k|    case MFF_TUN_METADATA0: case MFF_TUN_METADATA1:   \
  |  |  ------------------
  |  |  |  Branch (2110:5): [True: 1.49k, False: 233k]
  |  |  |  Branch (2110:29): [True: 1.46k, False: 233k]
  |  |  ------------------
  |  | 2111|  5.86k|    case MFF_TUN_METADATA2: case MFF_TUN_METADATA3:   \
  |  |  ------------------
  |  |  |  Branch (2111:5): [True: 1.21k, False: 233k]
  |  |  |  Branch (2111:29): [True: 1.69k, False: 232k]
  |  |  ------------------
  |  | 2112|  8.81k|    case MFF_TUN_METADATA4: case MFF_TUN_METADATA5:   \
  |  |  ------------------
  |  |  |  Branch (2112:5): [True: 1.78k, False: 232k]
  |  |  |  Branch (2112:29): [True: 1.16k, False: 233k]
  |  |  ------------------
  |  | 2113|  10.7k|    case MFF_TUN_METADATA6: case MFF_TUN_METADATA7:   \
  |  |  ------------------
  |  |  |  Branch (2113:5): [True: 894, False: 233k]
  |  |  |  Branch (2113:29): [True: 1.05k, False: 233k]
  |  |  ------------------
  |  | 2114|  13.4k|    case MFF_TUN_METADATA8: case MFF_TUN_METADATA9:   \
  |  |  ------------------
  |  |  |  Branch (2114:5): [True: 1.22k, False: 233k]
  |  |  |  Branch (2114:29): [True: 1.44k, False: 233k]
  |  |  ------------------
  |  | 2115|  16.1k|    case MFF_TUN_METADATA10: case MFF_TUN_METADATA11: \
  |  |  ------------------
  |  |  |  Branch (2115:5): [True: 988, False: 233k]
  |  |  |  Branch (2115:30): [True: 1.68k, False: 232k]
  |  |  ------------------
  |  | 2116|  17.9k|    case MFF_TUN_METADATA12: case MFF_TUN_METADATA13: \
  |  |  ------------------
  |  |  |  Branch (2116:5): [True: 952, False: 233k]
  |  |  |  Branch (2116:30): [True: 940, False: 233k]
  |  |  ------------------
  |  | 2117|  20.2k|    case MFF_TUN_METADATA14: case MFF_TUN_METADATA15: \
  |  |  ------------------
  |  |  |  Branch (2117:5): [True: 1.11k, False: 233k]
  |  |  |  Branch (2117:30): [True: 1.11k, False: 233k]
  |  |  ------------------
  |  | 2118|  22.1k|    case MFF_TUN_METADATA16: case MFF_TUN_METADATA17: \
  |  |  ------------------
  |  |  |  Branch (2118:5): [True: 966, False: 233k]
  |  |  |  Branch (2118:30): [True: 1.00k, False: 233k]
  |  |  ------------------
  |  | 2119|  24.3k|    case MFF_TUN_METADATA18: case MFF_TUN_METADATA19: \
  |  |  ------------------
  |  |  |  Branch (2119:5): [True: 1.12k, False: 233k]
  |  |  |  Branch (2119:30): [True: 1.00k, False: 233k]
  |  |  ------------------
  |  | 2120|  26.9k|    case MFF_TUN_METADATA20: case MFF_TUN_METADATA21: \
  |  |  ------------------
  |  |  |  Branch (2120:5): [True: 1.29k, False: 233k]
  |  |  |  Branch (2120:30): [True: 1.34k, False: 233k]
  |  |  ------------------
  |  | 2121|  29.2k|    case MFF_TUN_METADATA22: case MFF_TUN_METADATA23: \
  |  |  ------------------
  |  |  |  Branch (2121:5): [True: 1.13k, False: 233k]
  |  |  |  Branch (2121:30): [True: 1.17k, False: 233k]
  |  |  ------------------
  |  | 2122|  31.4k|    case MFF_TUN_METADATA24: case MFF_TUN_METADATA25: \
  |  |  ------------------
  |  |  |  Branch (2122:5): [True: 1.29k, False: 233k]
  |  |  |  Branch (2122:30): [True: 938, False: 233k]
  |  |  ------------------
  |  | 2123|  33.5k|    case MFF_TUN_METADATA26: case MFF_TUN_METADATA27: \
  |  |  ------------------
  |  |  |  Branch (2123:5): [True: 1.08k, False: 233k]
  |  |  |  Branch (2123:30): [True: 1.01k, False: 233k]
  |  |  ------------------
  |  | 2124|  35.7k|    case MFF_TUN_METADATA28: case MFF_TUN_METADATA29: \
  |  |  ------------------
  |  |  |  Branch (2124:5): [True: 1.13k, False: 233k]
  |  |  |  Branch (2124:30): [True: 994, False: 233k]
  |  |  ------------------
  |  | 2125|  37.9k|    case MFF_TUN_METADATA30: case MFF_TUN_METADATA31: \
  |  |  ------------------
  |  |  |  Branch (2125:5): [True: 1.12k, False: 233k]
  |  |  |  Branch (2125:30): [True: 1.11k, False: 233k]
  |  |  ------------------
  |  | 2126|  41.0k|    case MFF_TUN_METADATA32: case MFF_TUN_METADATA33: \
  |  |  ------------------
  |  |  |  Branch (2126:5): [True: 1.97k, False: 232k]
  |  |  |  Branch (2126:30): [True: 1.11k, False: 233k]
  |  |  ------------------
  |  | 2127|  43.4k|    case MFF_TUN_METADATA34: case MFF_TUN_METADATA35: \
  |  |  ------------------
  |  |  |  Branch (2127:5): [True: 1.05k, False: 233k]
  |  |  |  Branch (2127:30): [True: 1.31k, False: 233k]
  |  |  ------------------
  |  | 2128|  49.5k|    case MFF_TUN_METADATA36: case MFF_TUN_METADATA37: \
  |  |  ------------------
  |  |  |  Branch (2128:5): [True: 1.35k, False: 233k]
  |  |  |  Branch (2128:30): [True: 4.77k, False: 229k]
  |  |  ------------------
  |  | 2129|  51.7k|    case MFF_TUN_METADATA38: case MFF_TUN_METADATA39: \
  |  |  ------------------
  |  |  |  Branch (2129:5): [True: 1.08k, False: 233k]
  |  |  |  Branch (2129:30): [True: 1.13k, False: 233k]
  |  |  ------------------
  |  | 2130|  53.7k|    case MFF_TUN_METADATA40: case MFF_TUN_METADATA41: \
  |  |  ------------------
  |  |  |  Branch (2130:5): [True: 968, False: 233k]
  |  |  |  Branch (2130:30): [True: 984, False: 233k]
  |  |  ------------------
  |  | 2131|  56.3k|    case MFF_TUN_METADATA42: case MFF_TUN_METADATA43: \
  |  |  ------------------
  |  |  |  Branch (2131:5): [True: 1.47k, False: 233k]
  |  |  |  Branch (2131:30): [True: 1.14k, False: 233k]
  |  |  ------------------
  |  | 2132|  58.9k|    case MFF_TUN_METADATA44: case MFF_TUN_METADATA45: \
  |  |  ------------------
  |  |  |  Branch (2132:5): [True: 1.55k, False: 233k]
  |  |  |  Branch (2132:30): [True: 1.10k, False: 233k]
  |  |  ------------------
  |  | 2133|  61.5k|    case MFF_TUN_METADATA46: case MFF_TUN_METADATA47: \
  |  |  ------------------
  |  |  |  Branch (2133:5): [True: 882, False: 233k]
  |  |  |  Branch (2133:30): [True: 1.70k, False: 232k]
  |  |  ------------------
  |  | 2134|  63.8k|    case MFF_TUN_METADATA48: case MFF_TUN_METADATA49: \
  |  |  ------------------
  |  |  |  Branch (2134:5): [True: 1.28k, False: 233k]
  |  |  |  Branch (2134:30): [True: 1.00k, False: 233k]
  |  |  ------------------
  |  | 2135|  65.8k|    case MFF_TUN_METADATA50: case MFF_TUN_METADATA51: \
  |  |  ------------------
  |  |  |  Branch (2135:5): [True: 1.09k, False: 233k]
  |  |  |  Branch (2135:30): [True: 938, False: 233k]
  |  |  ------------------
  |  | 2136|  67.7k|    case MFF_TUN_METADATA52: case MFF_TUN_METADATA53: \
  |  |  ------------------
  |  |  |  Branch (2136:5): [True: 950, False: 233k]
  |  |  |  Branch (2136:30): [True: 936, False: 233k]
  |  |  ------------------
  |  | 2137|  70.1k|    case MFF_TUN_METADATA54: case MFF_TUN_METADATA55: \
  |  |  ------------------
  |  |  |  Branch (2137:5): [True: 1.19k, False: 233k]
  |  |  |  Branch (2137:30): [True: 1.22k, False: 233k]
  |  |  ------------------
  |  | 2138|  72.3k|    case MFF_TUN_METADATA56: case MFF_TUN_METADATA57: \
  |  |  ------------------
  |  |  |  Branch (2138:5): [True: 1.20k, False: 233k]
  |  |  |  Branch (2138:30): [True: 1.01k, False: 233k]
  |  |  ------------------
  |  | 2139|  74.5k|    case MFF_TUN_METADATA58: case MFF_TUN_METADATA59: \
  |  |  ------------------
  |  |  |  Branch (2139:5): [True: 990, False: 233k]
  |  |  |  Branch (2139:30): [True: 1.13k, False: 233k]
  |  |  ------------------
  |  | 2140|  76.8k|    case MFF_TUN_METADATA60: case MFF_TUN_METADATA61: \
  |  |  ------------------
  |  |  |  Branch (2140:5): [True: 1.10k, False: 233k]
  |  |  |  Branch (2140:30): [True: 1.24k, False: 233k]
  |  |  ------------------
  |  | 2141|  79.2k|    case MFF_TUN_METADATA62: case MFF_TUN_METADATA63
  |  |  ------------------
  |  |  |  Branch (2141:5): [True: 1.47k, False: 233k]
  |  |  ------------------
  ------------------
  729|  79.2k|        tun_metadata_read(&flow->tunnel, mf, value);
  730|  79.2k|        break;
  731|       |
  732|    722|    case MFF_METADATA:
  ------------------
  |  Branch (732:5): [True: 722, False: 233k]
  ------------------
  733|    722|        value->be64 = flow->metadata;
  734|    722|        break;
  735|       |
  736|    814|    case MFF_IN_PORT:
  ------------------
  |  Branch (736:5): [True: 814, False: 233k]
  ------------------
  737|    814|        value->be16 = htons(ofp_to_u16(flow->in_port.ofp_port));
  738|    814|        break;
  739|  1.47k|    case MFF_IN_PORT_OXM:
  ------------------
  |  Branch (739:5): [True: 1.47k, False: 233k]
  ------------------
  740|  1.47k|        value->be32 = ofputil_port_to_ofp11(flow->in_port.ofp_port);
  741|  1.47k|        break;
  742|  1.70k|    case MFF_ACTSET_OUTPUT:
  ------------------
  |  Branch (742:5): [True: 1.70k, False: 232k]
  ------------------
  743|  1.70k|        value->be32 = ofputil_port_to_ofp11(flow->actset_output);
  744|  1.70k|        break;
  745|       |
  746|      0|    case MFF_SKB_PRIORITY:
  ------------------
  |  Branch (746:5): [True: 0, False: 234k]
  ------------------
  747|      0|        value->be32 = htonl(flow->skb_priority);
  748|      0|        break;
  749|       |
  750|    898|    case MFF_PKT_MARK:
  ------------------
  |  Branch (750:5): [True: 898, False: 233k]
  ------------------
  751|    898|        value->be32 = htonl(flow->pkt_mark);
  752|    898|        break;
  753|       |
  754|    486|    case MFF_CT_STATE:
  ------------------
  |  Branch (754:5): [True: 486, False: 234k]
  ------------------
  755|    486|        value->be32 = htonl(flow->ct_state);
  756|    486|        break;
  757|       |
  758|  1.26k|    case MFF_CT_ZONE:
  ------------------
  |  Branch (758:5): [True: 1.26k, False: 233k]
  ------------------
  759|  1.26k|        value->be16 = htons(flow->ct_zone);
  760|  1.26k|        break;
  761|       |
  762|  6.40k|    case MFF_CT_MARK:
  ------------------
  |  Branch (762:5): [True: 6.40k, False: 228k]
  ------------------
  763|  6.40k|        value->be32 = htonl(flow->ct_mark);
  764|  6.40k|        break;
  765|       |
  766|    832|    case MFF_CT_LABEL:
  ------------------
  |  Branch (766:5): [True: 832, False: 233k]
  ------------------
  767|    832|        value->be128 = hton128(flow->ct_label);
  768|    832|        break;
  769|       |
  770|    934|    case MFF_CT_NW_PROTO:
  ------------------
  |  Branch (770:5): [True: 934, False: 233k]
  ------------------
  771|    934|        value->u8 = flow->ct_nw_proto;
  772|    934|        break;
  773|       |
  774|    906|    case MFF_CT_NW_SRC:
  ------------------
  |  Branch (774:5): [True: 906, False: 233k]
  ------------------
  775|    906|        value->be32 = flow->ct_nw_src;
  776|    906|        break;
  777|       |
  778|  2.38k|    case MFF_CT_NW_DST:
  ------------------
  |  Branch (778:5): [True: 2.38k, False: 232k]
  ------------------
  779|  2.38k|        value->be32 = flow->ct_nw_dst;
  780|  2.38k|        break;
  781|       |
  782|    512|    case MFF_CT_IPV6_SRC:
  ------------------
  |  Branch (782:5): [True: 512, False: 234k]
  ------------------
  783|    512|        value->ipv6 = flow->ct_ipv6_src;
  784|    512|        break;
  785|       |
  786|    864|    case MFF_CT_IPV6_DST:
  ------------------
  |  Branch (786:5): [True: 864, False: 233k]
  ------------------
  787|    864|        value->ipv6 = flow->ct_ipv6_dst;
  788|    864|        break;
  789|       |
  790|  1.29k|    case MFF_CT_TP_SRC:
  ------------------
  |  Branch (790:5): [True: 1.29k, False: 233k]
  ------------------
  791|  1.29k|        value->be16 = flow->ct_tp_src;
  792|  1.29k|        break;
  793|       |
  794|    774|    case MFF_CT_TP_DST:
  ------------------
  |  Branch (794:5): [True: 774, False: 233k]
  ------------------
  795|    774|        value->be16 = flow->ct_tp_dst;
  796|    774|        break;
  797|       |
  798|  34.1k|    CASE_MFF_REGS:
  ------------------
  |  | 2065|  7.50k|    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3:     \
  |  |  ------------------
  |  |  |  Branch (2065:5): [True: 1.59k, False: 232k]
  |  |  |  Branch (2065:20): [True: 1.57k, False: 233k]
  |  |  |  Branch (2065:35): [True: 1.07k, False: 233k]
  |  |  |  Branch (2065:50): [True: 3.25k, False: 231k]
  |  |  ------------------
  |  | 2066|  11.7k|    case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7:     \
  |  |  ------------------
  |  |  |  Branch (2066:5): [True: 1.42k, False: 233k]
  |  |  |  Branch (2066:20): [True: 1.45k, False: 233k]
  |  |  |  Branch (2066:35): [True: 664, False: 233k]
  |  |  |  Branch (2066:50): [True: 662, False: 233k]
  |  |  ------------------
  |  | 2067|  15.3k|    case MFF_REG8: case MFF_REG9: case MFF_REG10: case MFF_REG11:   \
  |  |  ------------------
  |  |  |  Branch (2067:5): [True: 538, False: 234k]
  |  |  |  Branch (2067:20): [True: 1.21k, False: 233k]
  |  |  |  Branch (2067:35): [True: 1.01k, False: 233k]
  |  |  |  Branch (2067:51): [True: 848, False: 233k]
  |  |  ------------------
  |  | 2068|  17.6k|    case MFF_REG12: case MFF_REG13: case MFF_REG14: case MFF_REG15: \
  |  |  ------------------
  |  |  |  Branch (2068:5): [True: 594, False: 234k]
  |  |  |  Branch (2068:21): [True: 486, False: 234k]
  |  |  |  Branch (2068:37): [True: 528, False: 234k]
  |  |  |  Branch (2068:53): [True: 700, False: 233k]
  |  |  ------------------
  |  | 2069|  23.6k|    case MFF_REG16: case MFF_REG17: case MFF_REG18: case MFF_REG19: \
  |  |  ------------------
  |  |  |  Branch (2069:5): [True: 520, False: 234k]
  |  |  |  Branch (2069:21): [True: 2.49k, False: 232k]
  |  |  |  Branch (2069:37): [True: 1.24k, False: 233k]
  |  |  |  Branch (2069:53): [True: 1.71k, False: 232k]
  |  |  ------------------
  |  | 2070|  29.2k|    case MFF_REG20: case MFF_REG21: case MFF_REG22: case MFF_REG23: \
  |  |  ------------------
  |  |  |  Branch (2070:5): [True: 1.03k, False: 233k]
  |  |  |  Branch (2070:21): [True: 500, False: 234k]
  |  |  |  Branch (2070:37): [True: 1.03k, False: 233k]
  |  |  |  Branch (2070:53): [True: 3.08k, False: 231k]
  |  |  ------------------
  |  | 2071|  31.8k|    case MFF_REG24: case MFF_REG25: case MFF_REG26: case MFF_REG27: \
  |  |  ------------------
  |  |  |  Branch (2071:5): [True: 550, False: 234k]
  |  |  |  Branch (2071:21): [True: 474, False: 234k]
  |  |  |  Branch (2071:37): [True: 788, False: 233k]
  |  |  |  Branch (2071:53): [True: 778, False: 233k]
  |  |  ------------------
  |  | 2072|  34.1k|    case MFF_REG28: case MFF_REG29: case MFF_REG30: case MFF_REG31
  |  |  ------------------
  |  |  |  Branch (2072:5): [True: 914, False: 233k]
  |  |  |  Branch (2072:21): [True: 268, False: 234k]
  |  |  |  Branch (2072:37): [True: 516, False: 234k]
  |  |  ------------------
  ------------------
  799|  34.1k|        value->be32 = htonl(flow->regs[mf->id - MFF_REG0]);
  800|  34.1k|        break;
  801|       |
  802|  13.5k|    CASE_MFF_XREGS:
  ------------------
  |  | 2081|  4.71k|    case MFF_XREG0: case MFF_XREG1: case MFF_XREG2: case MFF_XREG3:    \
  |  |  ------------------
  |  |  |  Branch (2081:5): [True: 1.66k, False: 232k]
  |  |  |  Branch (2081:21): [True: 1.13k, False: 233k]
  |  |  |  Branch (2081:37): [True: 1.00k, False: 233k]
  |  |  |  Branch (2081:53): [True: 904, False: 233k]
  |  |  ------------------
  |  | 2082|  7.99k|    case MFF_XREG4: case MFF_XREG5: case MFF_XREG6: case MFF_XREG7:    \
  |  |  ------------------
  |  |  |  Branch (2082:5): [True: 866, False: 233k]
  |  |  |  Branch (2082:21): [True: 916, False: 233k]
  |  |  |  Branch (2082:37): [True: 576, False: 234k]
  |  |  |  Branch (2082:53): [True: 924, False: 233k]
  |  |  ------------------
  |  | 2083|  11.7k|    case MFF_XREG8: case MFF_XREG9: case MFF_XREG10: case MFF_XREG11:  \
  |  |  ------------------
  |  |  |  Branch (2083:5): [True: 790, False: 233k]
  |  |  |  Branch (2083:21): [True: 1.07k, False: 233k]
  |  |  |  Branch (2083:37): [True: 938, False: 233k]
  |  |  |  Branch (2083:54): [True: 960, False: 233k]
  |  |  ------------------
  |  | 2084|  13.5k|    case MFF_XREG12: case MFF_XREG13: case MFF_XREG14: case MFF_XREG15
  |  |  ------------------
  |  |  |  Branch (2084:5): [True: 510, False: 234k]
  |  |  |  Branch (2084:22): [True: 548, False: 234k]
  |  |  |  Branch (2084:39): [True: 508, False: 234k]
  |  |  ------------------
  ------------------
  803|  13.5k|        value->be64 = htonll(flow_get_xreg(flow, mf->id - MFF_XREG0));
  804|  13.5k|        break;
  805|       |
  806|  15.4k|    CASE_MFF_XXREGS:
  ------------------
  |  | 2093|  11.8k|    case MFF_XXREG0: case MFF_XXREG1: case MFF_XXREG2: case MFF_XXREG3: \
  |  |  ------------------
  |  |  |  Branch (2093:5): [True: 846, False: 233k]
  |  |  |  Branch (2093:22): [True: 578, False: 234k]
  |  |  |  Branch (2093:39): [True: 696, False: 233k]
  |  |  |  Branch (2093:56): [True: 9.75k, False: 224k]
  |  |  ------------------
  |  | 2094|  15.4k|    case MFF_XXREG4: case MFF_XXREG5: case MFF_XXREG6: case MFF_XXREG7
  |  |  ------------------
  |  |  |  Branch (2094:5): [True: 584, False: 234k]
  |  |  |  Branch (2094:22): [True: 450, False: 234k]
  |  |  |  Branch (2094:39): [True: 1.23k, False: 233k]
  |  |  ------------------
  ------------------
  807|  15.4k|        value->be128 = hton128(flow_get_xxreg(flow, mf->id - MFF_XXREG0));
  808|  15.4k|        break;
  809|       |
  810|    666|    case MFF_ETH_SRC:
  ------------------
  |  Branch (810:5): [True: 666, False: 233k]
  ------------------
  811|    666|        value->mac = flow->dl_src;
  812|    666|        break;
  813|       |
  814|  1.05k|    case MFF_ETH_DST:
  ------------------
  |  Branch (814:5): [True: 1.05k, False: 233k]
  ------------------
  815|  1.05k|        value->mac = flow->dl_dst;
  816|  1.05k|        break;
  817|       |
  818|    548|    case MFF_ETH_TYPE:
  ------------------
  |  Branch (818:5): [True: 548, False: 234k]
  ------------------
  819|    548|        value->be16 = flow->dl_type;
  820|    548|        break;
  821|       |
  822|    752|    case MFF_VLAN_TCI:
  ------------------
  |  Branch (822:5): [True: 752, False: 233k]
  ------------------
  823|    752|        value->be16 = flow->vlans[0].tci;
  824|    752|        break;
  825|       |
  826|    452|    case MFF_DL_VLAN:
  ------------------
  |  Branch (826:5): [True: 452, False: 234k]
  ------------------
  827|    452|        value->be16 = flow->vlans[0].tci & htons(VLAN_VID_MASK);
  828|    452|        break;
  829|    520|    case MFF_VLAN_VID:
  ------------------
  |  Branch (829:5): [True: 520, False: 234k]
  ------------------
  830|    520|        value->be16 = flow->vlans[0].tci & htons(VLAN_VID_MASK | VLAN_CFI);
  831|    520|        break;
  832|       |
  833|    586|    case MFF_DL_VLAN_PCP:
  ------------------
  |  Branch (833:5): [True: 586, False: 234k]
  ------------------
  834|  1.21k|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (834:5): [True: 628, False: 233k]
  ------------------
  835|  1.21k|        value->u8 = vlan_tci_to_pcp(flow->vlans[0].tci);
  836|  1.21k|        break;
  837|       |
  838|    452|    case MFF_MPLS_LABEL:
  ------------------
  |  Branch (838:5): [True: 452, False: 234k]
  ------------------
  839|    452|        value->be32 = htonl(mpls_lse_to_label(flow->mpls_lse[0]));
  840|    452|        break;
  841|       |
  842|    516|    case MFF_MPLS_TC:
  ------------------
  |  Branch (842:5): [True: 516, False: 234k]
  ------------------
  843|    516|        value->u8 = mpls_lse_to_tc(flow->mpls_lse[0]);
  844|    516|        break;
  845|       |
  846|    516|    case MFF_MPLS_BOS:
  ------------------
  |  Branch (846:5): [True: 516, False: 234k]
  ------------------
  847|    516|        value->u8 = mpls_lse_to_bos(flow->mpls_lse[0]);
  848|    516|        break;
  849|       |
  850|    578|    case MFF_MPLS_TTL:
  ------------------
  |  Branch (850:5): [True: 578, False: 234k]
  ------------------
  851|    578|        value->u8 = mpls_lse_to_ttl(flow->mpls_lse[0]);
  852|    578|        break;
  853|       |
  854|  1.01k|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (854:5): [True: 1.01k, False: 233k]
  ------------------
  855|  1.01k|        value->be32 = flow->nw_src;
  856|  1.01k|        break;
  857|       |
  858|    724|    case MFF_IPV4_DST:
  ------------------
  |  Branch (858:5): [True: 724, False: 233k]
  ------------------
  859|    724|        value->be32 = flow->nw_dst;
  860|    724|        break;
  861|       |
  862|    830|    case MFF_IPV6_SRC:
  ------------------
  |  Branch (862:5): [True: 830, False: 233k]
  ------------------
  863|    830|        value->ipv6 = flow->ipv6_src;
  864|    830|        break;
  865|       |
  866|    802|    case MFF_IPV6_DST:
  ------------------
  |  Branch (866:5): [True: 802, False: 233k]
  ------------------
  867|    802|        value->ipv6 = flow->ipv6_dst;
  868|    802|        break;
  869|       |
  870|  1.26k|    case MFF_IPV6_LABEL:
  ------------------
  |  Branch (870:5): [True: 1.26k, False: 233k]
  ------------------
  871|  1.26k|        value->be32 = flow->ipv6_label;
  872|  1.26k|        break;
  873|       |
  874|  1.15k|    case MFF_IP_PROTO:
  ------------------
  |  Branch (874:5): [True: 1.15k, False: 233k]
  ------------------
  875|  1.15k|        value->u8 = flow->nw_proto;
  876|  1.15k|        break;
  877|       |
  878|    526|    case MFF_IP_DSCP:
  ------------------
  |  Branch (878:5): [True: 526, False: 234k]
  ------------------
  879|    526|        value->u8 = flow->nw_tos & IP_DSCP_MASK;
  ------------------
  |  |  724|    526|#define IP_DSCP_MASK 0xfc
  ------------------
  880|    526|        break;
  881|       |
  882|    516|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (882:5): [True: 516, False: 234k]
  ------------------
  883|    516|        value->u8 = flow->nw_tos >> 2;
  884|    516|        break;
  885|       |
  886|    518|    case MFF_IP_ECN:
  ------------------
  |  Branch (886:5): [True: 518, False: 234k]
  ------------------
  887|    518|        value->u8 = flow->nw_tos & IP_ECN_MASK;
  ------------------
  |  |  722|    518|#define IP_ECN_MASK 0x03
  ------------------
  888|    518|        break;
  889|       |
  890|    604|    case MFF_IP_TTL:
  ------------------
  |  Branch (890:5): [True: 604, False: 233k]
  ------------------
  891|    604|        value->u8 = flow->nw_ttl;
  892|    604|        break;
  893|       |
  894|    492|    case MFF_IP_FRAG:
  ------------------
  |  Branch (894:5): [True: 492, False: 234k]
  ------------------
  895|    492|        value->u8 = flow->nw_frag;
  896|    492|        break;
  897|       |
  898|    550|    case MFF_ARP_OP:
  ------------------
  |  Branch (898:5): [True: 550, False: 234k]
  ------------------
  899|    550|        value->be16 = htons(flow->nw_proto);
  900|    550|        break;
  901|       |
  902|  1.41k|    case MFF_ARP_SPA:
  ------------------
  |  Branch (902:5): [True: 1.41k, False: 233k]
  ------------------
  903|  1.41k|        value->be32 = flow->nw_src;
  904|  1.41k|        break;
  905|       |
  906|  2.32k|    case MFF_ARP_TPA:
  ------------------
  |  Branch (906:5): [True: 2.32k, False: 232k]
  ------------------
  907|  2.32k|        value->be32 = flow->nw_dst;
  908|  2.32k|        break;
  909|       |
  910|  1.63k|    case MFF_ARP_SHA:
  ------------------
  |  Branch (910:5): [True: 1.63k, False: 232k]
  ------------------
  911|  2.69k|    case MFF_ND_SLL:
  ------------------
  |  Branch (911:5): [True: 1.05k, False: 233k]
  ------------------
  912|  2.69k|        value->mac = flow->arp_sha;
  913|  2.69k|        break;
  914|       |
  915|  1.13k|    case MFF_ARP_THA:
  ------------------
  |  Branch (915:5): [True: 1.13k, False: 233k]
  ------------------
  916|  2.18k|    case MFF_ND_TLL:
  ------------------
  |  Branch (916:5): [True: 1.04k, False: 233k]
  ------------------
  917|  2.18k|        value->mac = flow->arp_tha;
  918|  2.18k|        break;
  919|       |
  920|    464|    case MFF_TCP_SRC:
  ------------------
  |  Branch (920:5): [True: 464, False: 234k]
  ------------------
  921|  1.00k|    case MFF_UDP_SRC:
  ------------------
  |  Branch (921:5): [True: 536, False: 234k]
  ------------------
  922|  1.79k|    case MFF_SCTP_SRC:
  ------------------
  |  Branch (922:5): [True: 790, False: 233k]
  ------------------
  923|  1.79k|        value->be16 = flow->tp_src;
  924|  1.79k|        break;
  925|       |
  926|    908|    case MFF_TCP_DST:
  ------------------
  |  Branch (926:5): [True: 908, False: 233k]
  ------------------
  927|  1.76k|    case MFF_UDP_DST:
  ------------------
  |  Branch (927:5): [True: 852, False: 233k]
  ------------------
  928|  2.44k|    case MFF_SCTP_DST:
  ------------------
  |  Branch (928:5): [True: 684, False: 233k]
  ------------------
  929|  2.44k|        value->be16 = flow->tp_dst;
  930|  2.44k|        break;
  931|       |
  932|    556|    case MFF_TCP_FLAGS:
  ------------------
  |  Branch (932:5): [True: 556, False: 234k]
  ------------------
  933|    556|    case MFF_ND_OPTIONS_TYPE:
  ------------------
  |  Branch (933:5): [True: 0, False: 234k]
  ------------------
  934|    556|        value->be16 = flow->tcp_flags;
  935|    556|        break;
  936|       |
  937|      0|    case MFF_ND_RESERVED:
  ------------------
  |  Branch (937:5): [True: 0, False: 234k]
  ------------------
  938|      0|        value->be32 = flow->igmp_group_ip4;
  939|      0|        break;
  940|       |
  941|    612|    case MFF_ICMPV4_TYPE:
  ------------------
  |  Branch (941:5): [True: 612, False: 233k]
  ------------------
  942|  1.13k|    case MFF_ICMPV6_TYPE:
  ------------------
  |  Branch (942:5): [True: 520, False: 234k]
  ------------------
  943|  1.13k|        value->u8 = ntohs(flow->tp_src);
  944|  1.13k|        break;
  945|       |
  946|    842|    case MFF_ICMPV4_CODE:
  ------------------
  |  Branch (946:5): [True: 842, False: 233k]
  ------------------
  947|  1.73k|    case MFF_ICMPV6_CODE:
  ------------------
  |  Branch (947:5): [True: 888, False: 233k]
  ------------------
  948|  1.73k|        value->u8 = ntohs(flow->tp_dst);
  949|  1.73k|        break;
  950|       |
  951|  1.16k|    case MFF_ND_TARGET:
  ------------------
  |  Branch (951:5): [True: 1.16k, False: 233k]
  ------------------
  952|  1.16k|        value->ipv6 = flow->nd_target;
  953|  1.16k|        break;
  954|       |
  955|    640|    case MFF_NSH_FLAGS:
  ------------------
  |  Branch (955:5): [True: 640, False: 233k]
  ------------------
  956|    640|        value->u8 = flow->nsh.flags;
  957|    640|        break;
  958|    968|    case MFF_NSH_TTL:
  ------------------
  |  Branch (958:5): [True: 968, False: 233k]
  ------------------
  959|    968|        value->u8 = flow->nsh.ttl;
  960|    968|        break;
  961|  2.01k|    case MFF_NSH_MDTYPE:
  ------------------
  |  Branch (961:5): [True: 2.01k, False: 232k]
  ------------------
  962|  2.01k|        value->u8 = flow->nsh.mdtype;
  963|  2.01k|        break;
  964|    864|    case MFF_NSH_NP:
  ------------------
  |  Branch (964:5): [True: 864, False: 233k]
  ------------------
  965|    864|        value->u8 = flow->nsh.np;
  966|    864|        break;
  967|  2.48k|    case MFF_NSH_SPI:
  ------------------
  |  Branch (967:5): [True: 2.48k, False: 232k]
  ------------------
  968|  2.48k|        value->be32 = nsh_path_hdr_to_spi(flow->nsh.path_hdr);
  969|  2.48k|        if (value->be32 == htonl(NSH_SPI_MASK >> NSH_SPI_SHIFT)) {
  ------------------
  |  Branch (969:13): [True: 485, False: 2.00k]
  ------------------
  970|    485|            value->be32 = OVS_BE32_MAX;
  ------------------
  |  |   43|    485|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  971|    485|        }
  972|  2.48k|        break;
  973|  1.05k|    case MFF_NSH_SI:
  ------------------
  |  Branch (973:5): [True: 1.05k, False: 233k]
  ------------------
  974|  1.05k|        value->u8 = nsh_path_hdr_to_si(flow->nsh.path_hdr);
  975|  1.05k|        break;
  976|  4.87k|    case MFF_NSH_C1:
  ------------------
  |  Branch (976:5): [True: 4.87k, False: 229k]
  ------------------
  977|  5.70k|    case MFF_NSH_C2:
  ------------------
  |  Branch (977:5): [True: 832, False: 233k]
  ------------------
  978|  6.52k|    case MFF_NSH_C3:
  ------------------
  |  Branch (978:5): [True: 820, False: 233k]
  ------------------
  979|  7.90k|    case MFF_NSH_C4:
  ------------------
  |  Branch (979:5): [True: 1.37k, False: 233k]
  ------------------
  980|  7.90k|        value->be32 = flow->nsh.context[mf->id - MFF_NSH_C1];
  981|  7.90k|        break;
  982|       |
  983|      0|    case MFF_N_IDS:
  ------------------
  |  Branch (983:5): [True: 0, False: 234k]
  ------------------
  984|      0|    default:
  ------------------
  |  Branch (984:5): [True: 0, False: 234k]
  ------------------
  985|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  986|   234k|    }
  987|   234k|}
mf_set_value:
  999|  81.9k|{
 1000|  81.9k|    if (err_str) {
  ------------------
  |  Branch (1000:9): [True: 47.3k, False: 34.6k]
  ------------------
 1001|  47.3k|        *err_str = NULL;
 1002|  47.3k|    }
 1003|       |
 1004|  81.9k|    switch (mf->id) {
 1005|    261|    case MFF_DP_HASH:
  ------------------
  |  Branch (1005:5): [True: 261, False: 81.6k]
  ------------------
 1006|    261|        match_set_dp_hash(match, ntohl(value->be32));
 1007|    261|        break;
 1008|    199|    case MFF_RECIRC_ID:
  ------------------
  |  Branch (1008:5): [True: 199, False: 81.7k]
  ------------------
 1009|    199|        match_set_recirc_id(match, ntohl(value->be32));
 1010|    199|        break;
 1011|  1.07k|    case MFF_PACKET_TYPE:
  ------------------
  |  Branch (1011:5): [True: 1.07k, False: 80.8k]
  ------------------
 1012|  1.07k|        match_set_packet_type(match, value->be32);
 1013|  1.07k|        break;
 1014|    256|    case MFF_CONJ_ID:
  ------------------
  |  Branch (1014:5): [True: 256, False: 81.6k]
  ------------------
 1015|    256|        match_set_conj_id(match, ntohl(value->be32));
 1016|    256|        break;
 1017|    517|    case MFF_TUN_ID:
  ------------------
  |  Branch (1017:5): [True: 517, False: 81.4k]
  ------------------
 1018|    517|        match_set_tun_id(match, value->be64);
 1019|    517|        break;
 1020|    233|    case MFF_TUN_SRC:
  ------------------
  |  Branch (1020:5): [True: 233, False: 81.7k]
  ------------------
 1021|    233|        match_set_tun_src(match, value->be32);
 1022|    233|        break;
 1023|    194|    case MFF_TUN_DST:
  ------------------
  |  Branch (1023:5): [True: 194, False: 81.7k]
  ------------------
 1024|    194|        match_set_tun_dst(match, value->be32);
 1025|    194|        break;
 1026|    198|    case MFF_TUN_IPV6_SRC:
  ------------------
  |  Branch (1026:5): [True: 198, False: 81.7k]
  ------------------
 1027|    198|        match_set_tun_ipv6_src(match, &value->ipv6);
 1028|    198|        break;
 1029|    226|    case MFF_TUN_IPV6_DST:
  ------------------
  |  Branch (1029:5): [True: 226, False: 81.7k]
  ------------------
 1030|    226|        match_set_tun_ipv6_dst(match, &value->ipv6);
 1031|    226|        break;
 1032|    265|    case MFF_TUN_FLAGS:
  ------------------
  |  Branch (1032:5): [True: 265, False: 81.6k]
  ------------------
 1033|    265|        match_set_tun_flags(match, ntohs(value->be16));
 1034|    265|        break;
 1035|    194|    case MFF_TUN_GBP_ID:
  ------------------
  |  Branch (1035:5): [True: 194, False: 81.7k]
  ------------------
 1036|    194|         match_set_tun_gbp_id(match, value->be16);
 1037|    194|         break;
 1038|    203|    case MFF_TUN_GBP_FLAGS:
  ------------------
  |  Branch (1038:5): [True: 203, False: 81.7k]
  ------------------
 1039|    203|         match_set_tun_gbp_flags(match, value->u8);
 1040|    203|         break;
 1041|    438|    case MFF_TUN_TOS:
  ------------------
  |  Branch (1041:5): [True: 438, False: 81.4k]
  ------------------
 1042|    438|        match_set_tun_tos(match, value->u8);
 1043|    438|        break;
 1044|    280|    case MFF_TUN_TTL:
  ------------------
  |  Branch (1044:5): [True: 280, False: 81.6k]
  ------------------
 1045|    280|        match_set_tun_ttl(match, value->u8);
 1046|    280|        break;
 1047|      0|    case MFF_TUN_ERSPAN_VER:
  ------------------
  |  Branch (1047:5): [True: 0, False: 81.9k]
  ------------------
 1048|      0|        match_set_tun_erspan_ver(match, value->u8);
 1049|      0|        break;
 1050|      0|    case MFF_TUN_ERSPAN_IDX:
  ------------------
  |  Branch (1050:5): [True: 0, False: 81.9k]
  ------------------
 1051|      0|        match_set_tun_erspan_idx(match, ntohl(value->be32));
 1052|      0|        break;
 1053|      0|    case MFF_TUN_ERSPAN_DIR:
  ------------------
  |  Branch (1053:5): [True: 0, False: 81.9k]
  ------------------
 1054|      0|        match_set_tun_erspan_dir(match, value->u8);
 1055|      0|        break;
 1056|      0|    case MFF_TUN_ERSPAN_HWID:
  ------------------
  |  Branch (1056:5): [True: 0, False: 81.9k]
  ------------------
 1057|      0|        match_set_tun_erspan_hwid(match, value->u8);
 1058|      0|        break;
 1059|    216|    case MFF_TUN_GTPU_FLAGS:
  ------------------
  |  Branch (1059:5): [True: 216, False: 81.7k]
  ------------------
 1060|    216|        match_set_tun_gtpu_flags(match, value->u8);
 1061|    216|        break;
 1062|      0|    case MFF_TUN_GTPU_MSGTYPE:
  ------------------
  |  Branch (1062:5): [True: 0, False: 81.9k]
  ------------------
 1063|      0|        match_set_tun_gtpu_msgtype(match, value->u8);
 1064|      0|        break;
 1065|  22.8k|    CASE_MFF_TUN_METADATA:
  ------------------
  |  | 2110|  1.07k|    case MFF_TUN_METADATA0: case MFF_TUN_METADATA1:   \
  |  |  ------------------
  |  |  |  Branch (2110:5): [True: 552, False: 81.3k]
  |  |  |  Branch (2110:29): [True: 518, False: 81.4k]
  |  |  ------------------
  |  | 2111|  1.86k|    case MFF_TUN_METADATA2: case MFF_TUN_METADATA3:   \
  |  |  ------------------
  |  |  |  Branch (2111:5): [True: 379, False: 81.5k]
  |  |  |  Branch (2111:29): [True: 413, False: 81.5k]
  |  |  ------------------
  |  | 2112|  2.76k|    case MFF_TUN_METADATA4: case MFF_TUN_METADATA5:   \
  |  |  ------------------
  |  |  |  Branch (2112:5): [True: 513, False: 81.4k]
  |  |  |  Branch (2112:29): [True: 388, False: 81.5k]
  |  |  ------------------
  |  | 2113|  3.39k|    case MFF_TUN_METADATA6: case MFF_TUN_METADATA7:   \
  |  |  ------------------
  |  |  |  Branch (2113:5): [True: 382, False: 81.5k]
  |  |  |  Branch (2113:29): [True: 250, False: 81.6k]
  |  |  ------------------
  |  | 2114|  4.10k|    case MFF_TUN_METADATA8: case MFF_TUN_METADATA9:   \
  |  |  ------------------
  |  |  |  Branch (2114:5): [True: 298, False: 81.6k]
  |  |  |  Branch (2114:29): [True: 412, False: 81.5k]
  |  |  ------------------
  |  | 2115|  4.78k|    case MFF_TUN_METADATA10: case MFF_TUN_METADATA11: \
  |  |  ------------------
  |  |  |  Branch (2115:5): [True: 292, False: 81.6k]
  |  |  |  Branch (2115:30): [True: 386, False: 81.5k]
  |  |  ------------------
  |  | 2116|  5.26k|    case MFF_TUN_METADATA12: case MFF_TUN_METADATA13: \
  |  |  ------------------
  |  |  |  Branch (2116:5): [True: 282, False: 81.6k]
  |  |  |  Branch (2116:30): [True: 200, False: 81.7k]
  |  |  ------------------
  |  | 2117|  5.98k|    case MFF_TUN_METADATA14: case MFF_TUN_METADATA15: \
  |  |  ------------------
  |  |  |  Branch (2117:5): [True: 349, False: 81.5k]
  |  |  |  Branch (2117:30): [True: 367, False: 81.5k]
  |  |  ------------------
  |  | 2118|  6.55k|    case MFF_TUN_METADATA16: case MFF_TUN_METADATA17: \
  |  |  ------------------
  |  |  |  Branch (2118:5): [True: 263, False: 81.6k]
  |  |  |  Branch (2118:30): [True: 306, False: 81.6k]
  |  |  ------------------
  |  | 2119|  7.21k|    case MFF_TUN_METADATA18: case MFF_TUN_METADATA19: \
  |  |  ------------------
  |  |  |  Branch (2119:5): [True: 348, False: 81.5k]
  |  |  |  Branch (2119:30): [True: 316, False: 81.6k]
  |  |  ------------------
  |  | 2120|  7.79k|    case MFF_TUN_METADATA20: case MFF_TUN_METADATA21: \
  |  |  ------------------
  |  |  |  Branch (2120:5): [True: 332, False: 81.6k]
  |  |  |  Branch (2120:30): [True: 250, False: 81.6k]
  |  |  ------------------
  |  | 2121|  8.37k|    case MFF_TUN_METADATA22: case MFF_TUN_METADATA23: \
  |  |  ------------------
  |  |  |  Branch (2121:5): [True: 294, False: 81.6k]
  |  |  |  Branch (2121:30): [True: 280, False: 81.6k]
  |  |  ------------------
  |  | 2122|  8.91k|    case MFF_TUN_METADATA24: case MFF_TUN_METADATA25: \
  |  |  ------------------
  |  |  |  Branch (2122:5): [True: 299, False: 81.6k]
  |  |  |  Branch (2122:30): [True: 241, False: 81.6k]
  |  |  ------------------
  |  | 2123|  9.45k|    case MFF_TUN_METADATA26: case MFF_TUN_METADATA27: \
  |  |  ------------------
  |  |  |  Branch (2123:5): [True: 305, False: 81.6k]
  |  |  |  Branch (2123:30): [True: 237, False: 81.6k]
  |  |  ------------------
  |  | 2124|  10.1k|    case MFF_TUN_METADATA28: case MFF_TUN_METADATA29: \
  |  |  ------------------
  |  |  |  Branch (2124:5): [True: 355, False: 81.5k]
  |  |  |  Branch (2124:30): [True: 305, False: 81.6k]
  |  |  ------------------
  |  | 2125|  10.6k|    case MFF_TUN_METADATA30: case MFF_TUN_METADATA31: \
  |  |  ------------------
  |  |  |  Branch (2125:5): [True: 231, False: 81.7k]
  |  |  |  Branch (2125:30): [True: 342, False: 81.5k]
  |  |  ------------------
  |  | 2126|  11.4k|    case MFF_TUN_METADATA32: case MFF_TUN_METADATA33: \
  |  |  ------------------
  |  |  |  Branch (2126:5): [True: 467, False: 81.4k]
  |  |  |  Branch (2126:30): [True: 296, False: 81.6k]
  |  |  ------------------
  |  | 2127|  12.0k|    case MFF_TUN_METADATA34: case MFF_TUN_METADATA35: \
  |  |  ------------------
  |  |  |  Branch (2127:5): [True: 303, False: 81.6k]
  |  |  |  Branch (2127:30): [True: 270, False: 81.6k]
  |  |  ------------------
  |  | 2128|  14.6k|    case MFF_TUN_METADATA36: case MFF_TUN_METADATA37: \
  |  |  ------------------
  |  |  |  Branch (2128:5): [True: 440, False: 81.4k]
  |  |  |  Branch (2128:30): [True: 2.15k, False: 79.7k]
  |  |  ------------------
  |  | 2129|  15.2k|    case MFF_TUN_METADATA38: case MFF_TUN_METADATA39: \
  |  |  ------------------
  |  |  |  Branch (2129:5): [True: 289, False: 81.6k]
  |  |  |  Branch (2129:30): [True: 306, False: 81.6k]
  |  |  ------------------
  |  | 2130|  15.7k|    case MFF_TUN_METADATA40: case MFF_TUN_METADATA41: \
  |  |  ------------------
  |  |  |  Branch (2130:5): [True: 275, False: 81.6k]
  |  |  |  Branch (2130:30): [True: 297, False: 81.6k]
  |  |  ------------------
  |  | 2131|  16.3k|    case MFF_TUN_METADATA42: case MFF_TUN_METADATA43: \
  |  |  ------------------
  |  |  |  Branch (2131:5): [True: 225, False: 81.7k]
  |  |  |  Branch (2131:30): [True: 384, False: 81.5k]
  |  |  ------------------
  |  | 2132|  17.0k|    case MFF_TUN_METADATA44: case MFF_TUN_METADATA45: \
  |  |  ------------------
  |  |  |  Branch (2132:5): [True: 297, False: 81.6k]
  |  |  |  Branch (2132:30): [True: 359, False: 81.5k]
  |  |  ------------------
  |  | 2133|  17.9k|    case MFF_TUN_METADATA46: case MFF_TUN_METADATA47: \
  |  |  ------------------
  |  |  |  Branch (2133:5): [True: 205, False: 81.7k]
  |  |  |  Branch (2133:30): [True: 661, False: 81.2k]
  |  |  ------------------
  |  | 2134|  18.5k|    case MFF_TUN_METADATA48: case MFF_TUN_METADATA49: \
  |  |  ------------------
  |  |  |  Branch (2134:5): [True: 361, False: 81.5k]
  |  |  |  Branch (2134:30): [True: 304, False: 81.6k]
  |  |  ------------------
  |  | 2135|  19.1k|    case MFF_TUN_METADATA50: case MFF_TUN_METADATA51: \
  |  |  ------------------
  |  |  |  Branch (2135:5): [True: 234, False: 81.6k]
  |  |  |  Branch (2135:30): [True: 338, False: 81.5k]
  |  |  ------------------
  |  | 2136|  19.7k|    case MFF_TUN_METADATA52: case MFF_TUN_METADATA53: \
  |  |  ------------------
  |  |  |  Branch (2136:5): [True: 283, False: 81.6k]
  |  |  |  Branch (2136:30): [True: 276, False: 81.6k]
  |  |  ------------------
  |  | 2137|  20.3k|    case MFF_TUN_METADATA54: case MFF_TUN_METADATA55: \
  |  |  ------------------
  |  |  |  Branch (2137:5): [True: 322, False: 81.6k]
  |  |  |  Branch (2137:30): [True: 271, False: 81.6k]
  |  |  ------------------
  |  | 2138|  20.8k|    case MFF_TUN_METADATA56: case MFF_TUN_METADATA57: \
  |  |  ------------------
  |  |  |  Branch (2138:5): [True: 344, False: 81.5k]
  |  |  |  Branch (2138:30): [True: 213, False: 81.7k]
  |  |  ------------------
  |  | 2139|  21.4k|    case MFF_TUN_METADATA58: case MFF_TUN_METADATA59: \
  |  |  ------------------
  |  |  |  Branch (2139:5): [True: 292, False: 81.6k]
  |  |  |  Branch (2139:30): [True: 271, False: 81.6k]
  |  |  ------------------
  |  | 2140|  22.0k|    case MFF_TUN_METADATA60: case MFF_TUN_METADATA61: \
  |  |  ------------------
  |  |  |  Branch (2140:5): [True: 268, False: 81.6k]
  |  |  |  Branch (2140:30): [True: 376, False: 81.5k]
  |  |  ------------------
  |  | 2141|  22.8k|    case MFF_TUN_METADATA62: case MFF_TUN_METADATA63
  |  |  ------------------
  |  |  |  Branch (2141:5): [True: 535, False: 81.3k]
  |  |  ------------------
  ------------------
 1066|  22.8k|        tun_metadata_set_match(mf, value, NULL, match, err_str);
 1067|  22.8k|        break;
 1068|       |
 1069|    232|    case MFF_METADATA:
  ------------------
  |  Branch (1069:5): [True: 232, False: 81.7k]
  ------------------
 1070|    232|        match_set_metadata(match, value->be64);
 1071|    232|        break;
 1072|       |
 1073|    263|    case MFF_IN_PORT:
  ------------------
  |  Branch (1073:5): [True: 263, False: 81.6k]
  ------------------
 1074|    263|        match_set_in_port(match, u16_to_ofp(ntohs(value->be16)));
 1075|    263|        break;
 1076|       |
 1077|    477|    case MFF_IN_PORT_OXM: {
  ------------------
  |  Branch (1077:5): [True: 477, False: 81.4k]
  ------------------
 1078|    477|        ofp_port_t port;
 1079|    477|        ofputil_port_from_ofp11(value->be32, &port);
 1080|    477|        match_set_in_port(match, port);
 1081|    477|        break;
 1082|   732k|    }
 1083|  1.08k|    case MFF_ACTSET_OUTPUT: {
  ------------------
  |  Branch (1083:5): [True: 1.08k, False: 80.8k]
  ------------------
 1084|  1.08k|        ofp_port_t port;
 1085|  1.08k|        ofputil_port_from_ofp11(value->be32, &port);
 1086|  1.08k|        match_set_actset_output(match, port);
 1087|  1.08k|        break;
 1088|   732k|    }
 1089|       |
 1090|      0|    case MFF_SKB_PRIORITY:
  ------------------
  |  Branch (1090:5): [True: 0, False: 81.9k]
  ------------------
 1091|      0|        match_set_skb_priority(match, ntohl(value->be32));
 1092|      0|        break;
 1093|       |
 1094|    285|    case MFF_PKT_MARK:
  ------------------
  |  Branch (1094:5): [True: 285, False: 81.6k]
  ------------------
 1095|    285|        match_set_pkt_mark(match, ntohl(value->be32));
 1096|    285|        break;
 1097|       |
 1098|    451|    case MFF_CT_STATE:
  ------------------
  |  Branch (1098:5): [True: 451, False: 81.4k]
  ------------------
 1099|    451|        match_set_ct_state(match, ntohl(value->be32));
 1100|    451|        break;
 1101|       |
 1102|    255|    case MFF_CT_ZONE:
  ------------------
  |  Branch (1102:5): [True: 255, False: 81.6k]
  ------------------
 1103|    255|        match_set_ct_zone(match, ntohs(value->be16));
 1104|    255|        break;
 1105|       |
 1106|  1.33k|    case MFF_CT_MARK:
  ------------------
  |  Branch (1106:5): [True: 1.33k, False: 80.5k]
  ------------------
 1107|  1.33k|        match_set_ct_mark(match, ntohl(value->be32));
 1108|  1.33k|        break;
 1109|       |
 1110|    202|    case MFF_CT_LABEL:
  ------------------
  |  Branch (1110:5): [True: 202, False: 81.7k]
  ------------------
 1111|    202|        match_set_ct_label(match, ntoh128(value->be128));
 1112|    202|        break;
 1113|       |
 1114|    203|    case MFF_CT_NW_PROTO:
  ------------------
  |  Branch (1114:5): [True: 203, False: 81.7k]
  ------------------
 1115|    203|        match_set_ct_nw_proto(match, value->u8);
 1116|    203|        break;
 1117|       |
 1118|    208|    case MFF_CT_NW_SRC:
  ------------------
  |  Branch (1118:5): [True: 208, False: 81.7k]
  ------------------
 1119|    208|        match_set_ct_nw_src(match, value->be32);
 1120|    208|        break;
 1121|       |
 1122|    258|    case MFF_CT_NW_DST:
  ------------------
  |  Branch (1122:5): [True: 258, False: 81.6k]
  ------------------
 1123|    258|        match_set_ct_nw_dst(match, value->be32);
 1124|    258|        break;
 1125|       |
 1126|    287|    case MFF_CT_IPV6_SRC:
  ------------------
  |  Branch (1126:5): [True: 287, False: 81.6k]
  ------------------
 1127|    287|        match_set_ct_ipv6_src(match, &value->ipv6);
 1128|    287|        break;
 1129|       |
 1130|    261|    case MFF_CT_IPV6_DST:
  ------------------
  |  Branch (1130:5): [True: 261, False: 81.6k]
  ------------------
 1131|    261|        match_set_ct_ipv6_dst(match, &value->ipv6);
 1132|    261|        break;
 1133|       |
 1134|    476|    case MFF_CT_TP_SRC:
  ------------------
  |  Branch (1134:5): [True: 476, False: 81.4k]
  ------------------
 1135|    476|        match_set_ct_tp_src(match, value->be16);
 1136|    476|        break;
 1137|       |
 1138|    201|    case MFF_CT_TP_DST:
  ------------------
  |  Branch (1138:5): [True: 201, False: 81.7k]
  ------------------
 1139|    201|        match_set_ct_tp_dst(match, value->be16);
 1140|    201|        break;
 1141|       |
 1142|  15.9k|    CASE_MFF_REGS:
  ------------------
  |  | 2065|  3.40k|    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3:     \
  |  |  ------------------
  |  |  |  Branch (2065:5): [True: 648, False: 81.2k]
  |  |  |  Branch (2065:20): [True: 703, False: 81.2k]
  |  |  |  Branch (2065:35): [True: 653, False: 81.2k]
  |  |  |  Branch (2065:50): [True: 1.40k, False: 80.5k]
  |  |  ------------------
  |  | 2066|  5.21k|    case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7:     \
  |  |  ------------------
  |  |  |  Branch (2066:5): [True: 420, False: 81.5k]
  |  |  |  Branch (2066:20): [True: 738, False: 81.1k]
  |  |  |  Branch (2066:35): [True: 351, False: 81.5k]
  |  |  |  Branch (2066:50): [True: 296, False: 81.6k]
  |  |  ------------------
  |  | 2067|  6.49k|    case MFF_REG8: case MFF_REG9: case MFF_REG10: case MFF_REG11:   \
  |  |  ------------------
  |  |  |  Branch (2067:5): [True: 364, False: 81.5k]
  |  |  |  Branch (2067:20): [True: 344, False: 81.5k]
  |  |  |  Branch (2067:35): [True: 302, False: 81.6k]
  |  |  |  Branch (2067:51): [True: 270, False: 81.6k]
  |  |  ------------------
  |  | 2068|  8.55k|    case MFF_REG12: case MFF_REG13: case MFF_REG14: case MFF_REG15: \
  |  |  ------------------
  |  |  |  Branch (2068:5): [True: 214, False: 81.7k]
  |  |  |  Branch (2068:21): [True: 480, False: 81.4k]
  |  |  |  Branch (2068:37): [True: 1.07k, False: 80.8k]
  |  |  |  Branch (2068:53): [True: 300, False: 81.6k]
  |  |  ------------------
  |  | 2069|  10.3k|    case MFF_REG16: case MFF_REG17: case MFF_REG18: case MFF_REG19: \
  |  |  ------------------
  |  |  |  Branch (2069:5): [True: 276, False: 81.6k]
  |  |  |  Branch (2069:21): [True: 244, False: 81.6k]
  |  |  |  Branch (2069:37): [True: 287, False: 81.6k]
  |  |  |  Branch (2069:53): [True: 1.02k, False: 80.9k]
  |  |  ------------------
  |  | 2070|  12.9k|    case MFF_REG20: case MFF_REG21: case MFF_REG22: case MFF_REG23: \
  |  |  ------------------
  |  |  |  Branch (2070:5): [True: 439, False: 81.4k]
  |  |  |  Branch (2070:21): [True: 419, False: 81.5k]
  |  |  |  Branch (2070:37): [True: 389, False: 81.5k]
  |  |  |  Branch (2070:53): [True: 1.27k, False: 80.6k]
  |  |  ------------------
  |  | 2071|  14.3k|    case MFF_REG24: case MFF_REG25: case MFF_REG26: case MFF_REG27: \
  |  |  ------------------
  |  |  |  Branch (2071:5): [True: 325, False: 81.6k]
  |  |  |  Branch (2071:21): [True: 390, False: 81.5k]
  |  |  |  Branch (2071:37): [True: 272, False: 81.6k]
  |  |  |  Branch (2071:53): [True: 496, False: 81.4k]
  |  |  ------------------
  |  | 2072|  15.9k|    case MFF_REG28: case MFF_REG29: case MFF_REG30: case MFF_REG31
  |  |  ------------------
  |  |  |  Branch (2072:5): [True: 549, False: 81.3k]
  |  |  |  Branch (2072:21): [True: 316, False: 81.6k]
  |  |  |  Branch (2072:37): [True: 391, False: 81.5k]
  |  |  ------------------
  ------------------
 1143|  15.9k|        match_set_reg(match, mf->id - MFF_REG0, ntohl(value->be32));
 1144|  15.9k|        break;
 1145|       |
 1146|  6.18k|    CASE_MFF_XREGS:
  ------------------
  |  | 2081|  1.80k|    case MFF_XREG0: case MFF_XREG1: case MFF_XREG2: case MFF_XREG3:    \
  |  |  ------------------
  |  |  |  Branch (2081:5): [True: 623, False: 81.3k]
  |  |  |  Branch (2081:21): [True: 388, False: 81.5k]
  |  |  |  Branch (2081:37): [True: 464, False: 81.4k]
  |  |  |  Branch (2081:53): [True: 326, False: 81.6k]
  |  |  ------------------
  |  | 2082|  3.43k|    case MFF_XREG4: case MFF_XREG5: case MFF_XREG6: case MFF_XREG7:    \
  |  |  ------------------
  |  |  |  Branch (2082:5): [True: 605, False: 81.3k]
  |  |  |  Branch (2082:21): [True: 370, False: 81.5k]
  |  |  |  Branch (2082:37): [True: 318, False: 81.6k]
  |  |  |  Branch (2082:53): [True: 343, False: 81.5k]
  |  |  ------------------
  |  | 2083|  5.15k|    case MFF_XREG8: case MFF_XREG9: case MFF_XREG10: case MFF_XREG11:  \
  |  |  ------------------
  |  |  |  Branch (2083:5): [True: 855, False: 81.0k]
  |  |  |  Branch (2083:21): [True: 299, False: 81.6k]
  |  |  |  Branch (2083:37): [True: 269, False: 81.6k]
  |  |  |  Branch (2083:54): [True: 294, False: 81.6k]
  |  |  ------------------
  |  | 2084|  6.18k|    case MFF_XREG12: case MFF_XREG13: case MFF_XREG14: case MFF_XREG15
  |  |  ------------------
  |  |  |  Branch (2084:5): [True: 81, False: 81.8k]
  |  |  |  Branch (2084:22): [True: 383, False: 81.5k]
  |  |  |  Branch (2084:39): [True: 290, False: 81.6k]
  |  |  ------------------
  ------------------
 1147|  6.18k|        match_set_xreg(match, mf->id - MFF_XREG0, ntohll(value->be64));
 1148|  6.18k|        break;
 1149|       |
 1150|  7.73k|    CASE_MFF_XXREGS:
  ------------------
  |  | 2093|  6.20k|    case MFF_XXREG0: case MFF_XXREG1: case MFF_XXREG2: case MFF_XXREG3: \
  |  |  ------------------
  |  |  |  Branch (2093:5): [True: 496, False: 81.4k]
  |  |  |  Branch (2093:22): [True: 482, False: 81.4k]
  |  |  |  Branch (2093:39): [True: 292, False: 81.6k]
  |  |  |  Branch (2093:56): [True: 4.93k, False: 76.9k]
  |  |  ------------------
  |  | 2094|  7.73k|    case MFF_XXREG4: case MFF_XXREG5: case MFF_XXREG6: case MFF_XXREG7
  |  |  ------------------
  |  |  |  Branch (2094:5): [True: 324, False: 81.6k]
  |  |  |  Branch (2094:22): [True: 374, False: 81.5k]
  |  |  |  Branch (2094:39): [True: 505, False: 81.4k]
  |  |  ------------------
  ------------------
 1151|  7.73k|        match_set_xxreg(match, mf->id - MFF_XXREG0, ntoh128(value->be128));
 1152|  7.73k|        break;
 1153|       |
 1154|    248|    case MFF_ETH_SRC:
  ------------------
  |  Branch (1154:5): [True: 248, False: 81.6k]
  ------------------
 1155|    248|        match_set_dl_src(match, value->mac);
 1156|    248|        break;
 1157|       |
 1158|    271|    case MFF_ETH_DST:
  ------------------
  |  Branch (1158:5): [True: 271, False: 81.6k]
  ------------------
 1159|    271|        match_set_dl_dst(match, value->mac);
 1160|    271|        break;
 1161|       |
 1162|    481|    case MFF_ETH_TYPE:
  ------------------
  |  Branch (1162:5): [True: 481, False: 81.4k]
  ------------------
 1163|    481|        match_set_dl_type(match, value->be16);
 1164|    481|        break;
 1165|       |
 1166|    186|    case MFF_VLAN_TCI:
  ------------------
  |  Branch (1166:5): [True: 186, False: 81.7k]
  ------------------
 1167|    186|        match_set_dl_tci(match, value->be16);
 1168|    186|        break;
 1169|       |
 1170|    799|    case MFF_DL_VLAN:
  ------------------
  |  Branch (1170:5): [True: 799, False: 81.1k]
  ------------------
 1171|    799|        match_set_dl_vlan(match, value->be16, 0);
 1172|    799|        break;
 1173|    198|    case MFF_VLAN_VID:
  ------------------
  |  Branch (1173:5): [True: 198, False: 81.7k]
  ------------------
 1174|    198|        match_set_vlan_vid(match, value->be16);
 1175|    198|        break;
 1176|       |
 1177|    372|    case MFF_DL_VLAN_PCP:
  ------------------
  |  Branch (1177:5): [True: 372, False: 81.5k]
  ------------------
 1178|    802|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (1178:5): [True: 430, False: 81.5k]
  ------------------
 1179|    802|        match_set_dl_vlan_pcp(match, value->u8, 0);
 1180|    802|        break;
 1181|       |
 1182|     68|    case MFF_MPLS_LABEL:
  ------------------
  |  Branch (1182:5): [True: 68, False: 81.8k]
  ------------------
 1183|     68|        match_set_mpls_label(match, 0, value->be32);
 1184|     68|        break;
 1185|       |
 1186|    359|    case MFF_MPLS_TC:
  ------------------
  |  Branch (1186:5): [True: 359, False: 81.5k]
  ------------------
 1187|    359|        match_set_mpls_tc(match, 0, value->u8);
 1188|    359|        break;
 1189|       |
 1190|  1.55k|    case MFF_MPLS_BOS:
  ------------------
  |  Branch (1190:5): [True: 1.55k, False: 80.3k]
  ------------------
 1191|  1.55k|        match_set_mpls_bos(match, 0, value->u8);
 1192|  1.55k|        break;
 1193|       |
 1194|    517|    case MFF_MPLS_TTL:
  ------------------
  |  Branch (1194:5): [True: 517, False: 81.4k]
  ------------------
 1195|    517|        match_set_mpls_ttl(match, 0, value->u8);
 1196|    517|        break;
 1197|       |
 1198|    310|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (1198:5): [True: 310, False: 81.6k]
  ------------------
 1199|    310|        match_set_nw_src(match, value->be32);
 1200|    310|        break;
 1201|       |
 1202|    721|    case MFF_IPV4_DST:
  ------------------
  |  Branch (1202:5): [True: 721, False: 81.2k]
  ------------------
 1203|    721|        match_set_nw_dst(match, value->be32);
 1204|    721|        break;
 1205|       |
 1206|    241|    case MFF_IPV6_SRC:
  ------------------
  |  Branch (1206:5): [True: 241, False: 81.6k]
  ------------------
 1207|    241|        match_set_ipv6_src(match, &value->ipv6);
 1208|    241|        break;
 1209|       |
 1210|    367|    case MFF_IPV6_DST:
  ------------------
  |  Branch (1210:5): [True: 367, False: 81.5k]
  ------------------
 1211|    367|        match_set_ipv6_dst(match, &value->ipv6);
 1212|    367|        break;
 1213|       |
 1214|    454|    case MFF_IPV6_LABEL:
  ------------------
  |  Branch (1214:5): [True: 454, False: 81.4k]
  ------------------
 1215|    454|        match_set_ipv6_label(match, value->be32);
 1216|    454|        break;
 1217|       |
 1218|    510|    case MFF_IP_PROTO:
  ------------------
  |  Branch (1218:5): [True: 510, False: 81.4k]
  ------------------
 1219|    510|        match_set_nw_proto(match, value->u8);
 1220|    510|        break;
 1221|       |
 1222|    477|    case MFF_IP_DSCP:
  ------------------
  |  Branch (1222:5): [True: 477, False: 81.4k]
  ------------------
 1223|    477|        match_set_nw_dscp(match, value->u8);
 1224|    477|        break;
 1225|       |
 1226|    305|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (1226:5): [True: 305, False: 81.6k]
  ------------------
 1227|    305|        match_set_nw_dscp(match, value->u8 << 2);
 1228|    305|        break;
 1229|       |
 1230|    205|    case MFF_IP_ECN:
  ------------------
  |  Branch (1230:5): [True: 205, False: 81.7k]
  ------------------
 1231|    205|        match_set_nw_ecn(match, value->u8);
 1232|    205|        break;
 1233|       |
 1234|    270|    case MFF_IP_TTL:
  ------------------
  |  Branch (1234:5): [True: 270, False: 81.6k]
  ------------------
 1235|    270|        match_set_nw_ttl(match, value->u8);
 1236|    270|        break;
 1237|       |
 1238|    309|    case MFF_IP_FRAG:
  ------------------
  |  Branch (1238:5): [True: 309, False: 81.6k]
  ------------------
 1239|    309|        match_set_nw_frag(match, value->u8);
 1240|    309|        break;
 1241|       |
 1242|    319|    case MFF_ARP_OP:
  ------------------
  |  Branch (1242:5): [True: 319, False: 81.6k]
  ------------------
 1243|    319|        match_set_nw_proto(match, ntohs(value->be16));
 1244|    319|        break;
 1245|       |
 1246|    259|    case MFF_ARP_SPA:
  ------------------
  |  Branch (1246:5): [True: 259, False: 81.6k]
  ------------------
 1247|    259|        match_set_nw_src(match, value->be32);
 1248|    259|        break;
 1249|       |
 1250|    235|    case MFF_ARP_TPA:
  ------------------
  |  Branch (1250:5): [True: 235, False: 81.6k]
  ------------------
 1251|    235|        match_set_nw_dst(match, value->be32);
 1252|    235|        break;
 1253|       |
 1254|    262|    case MFF_ARP_SHA:
  ------------------
  |  Branch (1254:5): [True: 262, False: 81.6k]
  ------------------
 1255|    520|    case MFF_ND_SLL:
  ------------------
  |  Branch (1255:5): [True: 258, False: 81.6k]
  ------------------
 1256|    520|        match_set_arp_sha(match, value->mac);
 1257|    520|        break;
 1258|       |
 1259|    224|    case MFF_ARP_THA:
  ------------------
  |  Branch (1259:5): [True: 224, False: 81.7k]
  ------------------
 1260|    481|    case MFF_ND_TLL:
  ------------------
  |  Branch (1260:5): [True: 257, False: 81.6k]
  ------------------
 1261|    481|        match_set_arp_tha(match, value->mac);
 1262|    481|        break;
 1263|       |
 1264|    379|    case MFF_TCP_SRC:
  ------------------
  |  Branch (1264:5): [True: 379, False: 81.5k]
  ------------------
 1265|    759|    case MFF_UDP_SRC:
  ------------------
  |  Branch (1265:5): [True: 380, False: 81.5k]
  ------------------
 1266|    998|    case MFF_SCTP_SRC:
  ------------------
  |  Branch (1266:5): [True: 239, False: 81.6k]
  ------------------
 1267|    998|        match_set_tp_src(match, value->be16);
 1268|    998|        break;
 1269|       |
 1270|    309|    case MFF_TCP_DST:
  ------------------
  |  Branch (1270:5): [True: 309, False: 81.6k]
  ------------------
 1271|    573|    case MFF_UDP_DST:
  ------------------
  |  Branch (1271:5): [True: 264, False: 81.6k]
  ------------------
 1272|    769|    case MFF_SCTP_DST:
  ------------------
  |  Branch (1272:5): [True: 196, False: 81.7k]
  ------------------
 1273|    769|        match_set_tp_dst(match, value->be16);
 1274|    769|        break;
 1275|       |
 1276|    402|    case MFF_TCP_FLAGS:
  ------------------
  |  Branch (1276:5): [True: 402, False: 81.5k]
  ------------------
 1277|    402|        match_set_tcp_flags(match, value->be16);
 1278|    402|        break;
 1279|       |
 1280|    153|    case MFF_ICMPV4_TYPE:
  ------------------
  |  Branch (1280:5): [True: 153, False: 81.7k]
  ------------------
 1281|    362|    case MFF_ICMPV6_TYPE:
  ------------------
  |  Branch (1281:5): [True: 209, False: 81.7k]
  ------------------
 1282|    362|        match_set_icmp_type(match, value->u8);
 1283|    362|        break;
 1284|       |
 1285|    274|    case MFF_ICMPV4_CODE:
  ------------------
  |  Branch (1285:5): [True: 274, False: 81.6k]
  ------------------
 1286|    490|    case MFF_ICMPV6_CODE:
  ------------------
  |  Branch (1286:5): [True: 216, False: 81.7k]
  ------------------
 1287|    490|        match_set_icmp_code(match, value->u8);
 1288|    490|        break;
 1289|       |
 1290|    319|    case MFF_ND_TARGET:
  ------------------
  |  Branch (1290:5): [True: 319, False: 81.6k]
  ------------------
 1291|    319|        match_set_nd_target(match, &value->ipv6);
 1292|    319|        break;
 1293|       |
 1294|      0|    case MFF_ND_RESERVED:
  ------------------
  |  Branch (1294:5): [True: 0, False: 81.9k]
  ------------------
 1295|      0|        match_set_nd_reserved(match, value->be32);
 1296|      0|        break;
 1297|       |
 1298|      0|    case MFF_ND_OPTIONS_TYPE:
  ------------------
  |  Branch (1298:5): [True: 0, False: 81.9k]
  ------------------
 1299|      0|        match_set_nd_options_type(match, value->u8);
 1300|      0|        break;
 1301|       |
 1302|    138|    case MFF_NSH_FLAGS:
  ------------------
  |  Branch (1302:5): [True: 138, False: 81.7k]
  ------------------
 1303|    138|        MATCH_SET_FIELD_UINT8(match, nsh.flags, value->u8);
  ------------------
  |  |   56|    138|    MATCH_SET_FIELD_MASKED(match, field, value, UINT8_MAX)
  |  |  ------------------
  |  |  |  |   50|    138|    do {                                                      \
  |  |  |  |   51|    138|        (match)->wc.masks.field = (msk);                      \
  |  |  |  |   52|    138|        (match)->flow.field = (value) & (msk);                \
  |  |  |  |   53|    138|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (53:14): [Folded, False: 138]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1304|    138|        break;
 1305|    328|    case MFF_NSH_TTL:
  ------------------
  |  Branch (1305:5): [True: 328, False: 81.6k]
  ------------------
 1306|    328|        MATCH_SET_FIELD_UINT8(match, nsh.ttl, value->u8);
  ------------------
  |  |   56|    328|    MATCH_SET_FIELD_MASKED(match, field, value, UINT8_MAX)
  |  |  ------------------
  |  |  |  |   50|    328|    do {                                                      \
  |  |  |  |   51|    328|        (match)->wc.masks.field = (msk);                      \
  |  |  |  |   52|    328|        (match)->flow.field = (value) & (msk);                \
  |  |  |  |   53|    328|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (53:14): [Folded, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1307|    328|        break;
 1308|    242|    case MFF_NSH_MDTYPE:
  ------------------
  |  Branch (1308:5): [True: 242, False: 81.6k]
  ------------------
 1309|    242|        MATCH_SET_FIELD_UINT8(match, nsh.mdtype, value->u8);
  ------------------
  |  |   56|    242|    MATCH_SET_FIELD_MASKED(match, field, value, UINT8_MAX)
  |  |  ------------------
  |  |  |  |   50|    242|    do {                                                      \
  |  |  |  |   51|    242|        (match)->wc.masks.field = (msk);                      \
  |  |  |  |   52|    242|        (match)->flow.field = (value) & (msk);                \
  |  |  |  |   53|    242|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (53:14): [Folded, False: 242]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1310|    242|        break;
 1311|    200|    case MFF_NSH_NP:
  ------------------
  |  Branch (1311:5): [True: 200, False: 81.7k]
  ------------------
 1312|    200|        MATCH_SET_FIELD_UINT8(match, nsh.np, value->u8);
  ------------------
  |  |   56|    200|    MATCH_SET_FIELD_MASKED(match, field, value, UINT8_MAX)
  |  |  ------------------
  |  |  |  |   50|    200|    do {                                                      \
  |  |  |  |   51|    200|        (match)->wc.masks.field = (msk);                      \
  |  |  |  |   52|    200|        (match)->flow.field = (value) & (msk);                \
  |  |  |  |   53|    200|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (53:14): [Folded, False: 200]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1313|    200|        break;
 1314|    763|    case MFF_NSH_SPI:
  ------------------
  |  Branch (1314:5): [True: 763, False: 81.1k]
  ------------------
 1315|    763|        match->wc.masks.nsh.path_hdr |= htonl(NSH_SPI_MASK);
 1316|    763|        nsh_path_hdr_set_spi(&match->flow.nsh.path_hdr, value->be32);
 1317|    763|        break;
 1318|    283|    case MFF_NSH_SI:
  ------------------
  |  Branch (1318:5): [True: 283, False: 81.6k]
  ------------------
 1319|    283|        match->wc.masks.nsh.path_hdr |= htonl(NSH_SI_MASK);
 1320|    283|        nsh_path_hdr_set_si(&match->flow.nsh.path_hdr, value->u8);
 1321|    283|        break;
 1322|    301|    case MFF_NSH_C1:
  ------------------
  |  Branch (1322:5): [True: 301, False: 81.6k]
  ------------------
 1323|    580|    case MFF_NSH_C2:
  ------------------
  |  Branch (1323:5): [True: 279, False: 81.6k]
  ------------------
 1324|    947|    case MFF_NSH_C3:
  ------------------
  |  Branch (1324:5): [True: 367, False: 81.5k]
  ------------------
 1325|  1.19k|    case MFF_NSH_C4:
  ------------------
  |  Branch (1325:5): [True: 252, False: 81.6k]
  ------------------
 1326|  1.19k|        MATCH_SET_FIELD_BE32(match, nsh.context[mf->id - MFF_NSH_C1],
  ------------------
  |  |   59|  1.19k|    MATCH_SET_FIELD_MASKED(match, field, value, OVS_BE32_MAX)
  |  |  ------------------
  |  |  |  |   50|  1.19k|    do {                                                      \
  |  |  |  |   51|  1.19k|        (match)->wc.masks.field = (msk);                      \
  |  |  |  |   52|  1.19k|        (match)->flow.field = (value) & (msk);                \
  |  |  |  |   53|  1.19k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (53:14): [Folded, False: 1.19k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|  1.19k|                             value->be32);
 1328|  1.19k|        break;
 1329|       |
 1330|      0|    case MFF_N_IDS:
  ------------------
  |  Branch (1330:5): [True: 0, False: 81.9k]
  ------------------
 1331|      0|    default:
  ------------------
  |  Branch (1331:5): [True: 0, False: 81.9k]
  ------------------
 1332|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 1333|  81.9k|    }
 1334|  81.9k|}
mf_field_len:
 1403|  56.9k|{
 1404|  56.9k|    int len, mask_len;
 1405|  56.9k|    bool is_masked = mask && !is_all_ones(mask, mf->n_bytes);
  ------------------
  |  Branch (1405:22): [True: 28.5k, False: 28.3k]
  |  Branch (1405:30): [True: 25.1k, False: 3.39k]
  ------------------
 1406|       |
 1407|  56.9k|    len = field_len(mf, value);
 1408|  56.9k|    if (is_masked) {
  ------------------
  |  Branch (1408:9): [True: 25.1k, False: 31.7k]
  ------------------
 1409|  25.1k|        mask_len = field_len(mf, mask);
 1410|  25.1k|        len = MAX(len, mask_len);
  ------------------
  |  |   95|  25.1k|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 403, False: 24.7k]
  |  |  ------------------
  ------------------
 1411|  25.1k|    }
 1412|       |
 1413|  56.9k|    if (is_masked_) {
  ------------------
  |  Branch (1413:9): [True: 56.9k, False: 0]
  ------------------
 1414|  56.9k|        *is_masked_ = is_masked;
 1415|  56.9k|    }
 1416|       |
 1417|  56.9k|    return len;
 1418|  56.9k|}
mf_is_tun_metadata:
 1897|  49.6k|{
 1898|  49.6k|    return mf->id >= MFF_TUN_METADATA0 &&
  ------------------
  |  Branch (1898:12): [True: 46.2k, False: 3.44k]
  ------------------
 1899|  46.2k|           mf->id < MFF_TUN_METADATA0 + TUN_METADATA_NUM_OPTS;
  ------------------
  |  |   26|  95.8k|#define TUN_METADATA_NUM_OPTS 64
  ------------------
  |  Branch (1899:12): [True: 297, False: 45.9k]
  ------------------
 1900|  49.6k|}
mf_set_wild:
 2162|  49.3k|{
 2163|  49.3k|    if (err_str) {
  ------------------
  |  Branch (2163:9): [True: 49.3k, False: 0]
  ------------------
 2164|  49.3k|        *err_str = NULL;
 2165|  49.3k|    }
 2166|       |
 2167|  49.3k|    switch (mf->id) {
 2168|    196|    case MFF_DP_HASH:
  ------------------
  |  Branch (2168:5): [True: 196, False: 49.1k]
  ------------------
 2169|    196|        match->flow.dp_hash = 0;
 2170|    196|        match->wc.masks.dp_hash = 0;
 2171|    196|        break;
 2172|    225|    case MFF_RECIRC_ID:
  ------------------
  |  Branch (2172:5): [True: 225, False: 49.1k]
  ------------------
 2173|    225|        match->flow.recirc_id = 0;
 2174|    225|        match->wc.masks.recirc_id = 0;
 2175|    225|        break;
 2176|    281|    case MFF_PACKET_TYPE:
  ------------------
  |  Branch (2176:5): [True: 281, False: 49.0k]
  ------------------
 2177|    281|        match->flow.packet_type = 0;
 2178|    281|        match->wc.masks.packet_type = 0;
 2179|    281|        break;
 2180|    218|    case MFF_CONJ_ID:
  ------------------
  |  Branch (2180:5): [True: 218, False: 49.1k]
  ------------------
 2181|    218|        match->flow.conj_id = 0;
 2182|    218|        match->wc.masks.conj_id = 0;
 2183|    218|        break;
 2184|    219|    case MFF_TUN_ID:
  ------------------
  |  Branch (2184:5): [True: 219, False: 49.1k]
  ------------------
 2185|    219|        match_set_tun_id_masked(match, htonll(0), htonll(0));
 2186|    219|        break;
 2187|     66|    case MFF_TUN_SRC:
  ------------------
  |  Branch (2187:5): [True: 66, False: 49.2k]
  ------------------
 2188|     66|        match_set_tun_src_masked(match, htonl(0), htonl(0));
 2189|     66|        break;
 2190|    194|    case MFF_TUN_DST:
  ------------------
  |  Branch (2190:5): [True: 194, False: 49.1k]
  ------------------
 2191|    194|        match_set_tun_dst_masked(match, htonl(0), htonl(0));
 2192|    194|        break;
 2193|    194|    case MFF_TUN_IPV6_SRC:
  ------------------
  |  Branch (2193:5): [True: 194, False: 49.1k]
  ------------------
 2194|    194|        memset(&match->wc.masks.tunnel.ipv6_src, 0,
 2195|    194|               sizeof match->wc.masks.tunnel.ipv6_src);
 2196|    194|        memset(&match->flow.tunnel.ipv6_src, 0,
 2197|    194|               sizeof match->flow.tunnel.ipv6_src);
 2198|    194|        break;
 2199|    194|    case MFF_TUN_IPV6_DST:
  ------------------
  |  Branch (2199:5): [True: 194, False: 49.1k]
  ------------------
 2200|    194|        memset(&match->wc.masks.tunnel.ipv6_dst, 0,
 2201|    194|               sizeof match->wc.masks.tunnel.ipv6_dst);
 2202|    194|        memset(&match->flow.tunnel.ipv6_dst, 0,
 2203|    194|               sizeof match->flow.tunnel.ipv6_dst);
 2204|    194|        break;
 2205|    224|    case MFF_TUN_FLAGS:
  ------------------
  |  Branch (2205:5): [True: 224, False: 49.1k]
  ------------------
 2206|    224|        match_set_tun_flags_masked(match, 0, 0);
 2207|    224|        break;
 2208|    196|    case MFF_TUN_GBP_ID:
  ------------------
  |  Branch (2208:5): [True: 196, False: 49.1k]
  ------------------
 2209|    196|        match_set_tun_gbp_id_masked(match, 0, 0);
 2210|    196|        break;
 2211|     74|    case MFF_TUN_GBP_FLAGS:
  ------------------
  |  Branch (2211:5): [True: 74, False: 49.2k]
  ------------------
 2212|     74|        match_set_tun_gbp_flags_masked(match, 0, 0);
 2213|     74|        break;
 2214|    337|    case MFF_TUN_TOS:
  ------------------
  |  Branch (2214:5): [True: 337, False: 49.0k]
  ------------------
 2215|    337|        match_set_tun_tos_masked(match, 0, 0);
 2216|    337|        break;
 2217|    631|    case MFF_TUN_TTL:
  ------------------
  |  Branch (2217:5): [True: 631, False: 48.7k]
  ------------------
 2218|    631|        match_set_tun_ttl_masked(match, 0, 0);
 2219|    631|        break;
 2220|      0|    case MFF_TUN_ERSPAN_VER:
  ------------------
  |  Branch (2220:5): [True: 0, False: 49.3k]
  ------------------
 2221|      0|        match_set_tun_erspan_ver_masked(match, 0, 0);
 2222|      0|        break;
 2223|      0|    case MFF_TUN_ERSPAN_IDX:
  ------------------
  |  Branch (2223:5): [True: 0, False: 49.3k]
  ------------------
 2224|      0|        match_set_tun_erspan_idx_masked(match, 0, 0);
 2225|      0|        break;
 2226|      0|    case MFF_TUN_ERSPAN_DIR:
  ------------------
  |  Branch (2226:5): [True: 0, False: 49.3k]
  ------------------
 2227|      0|        match_set_tun_erspan_dir_masked(match, 0, 0);
 2228|      0|        break;
 2229|      0|    case MFF_TUN_ERSPAN_HWID:
  ------------------
  |  Branch (2229:5): [True: 0, False: 49.3k]
  ------------------
 2230|      0|        match_set_tun_erspan_hwid_masked(match, 0, 0);
 2231|      0|        break;
 2232|    194|    case MFF_TUN_GTPU_FLAGS:
  ------------------
  |  Branch (2232:5): [True: 194, False: 49.1k]
  ------------------
 2233|    194|        match_set_tun_gtpu_flags_masked(match, 0, 0);
 2234|    194|        break;
 2235|      0|    case MFF_TUN_GTPU_MSGTYPE:
  ------------------
  |  Branch (2235:5): [True: 0, False: 49.3k]
  ------------------
 2236|      0|        match_set_tun_gtpu_msgtype_masked(match, 0, 0);
 2237|      0|        break;
 2238|      0|    CASE_MFF_TUN_METADATA:
  ------------------
  |  | 2110|      0|    case MFF_TUN_METADATA0: case MFF_TUN_METADATA1:   \
  |  |  ------------------
  |  |  |  Branch (2110:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2110:29): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2111|      0|    case MFF_TUN_METADATA2: case MFF_TUN_METADATA3:   \
  |  |  ------------------
  |  |  |  Branch (2111:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2111:29): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2112|      0|    case MFF_TUN_METADATA4: case MFF_TUN_METADATA5:   \
  |  |  ------------------
  |  |  |  Branch (2112:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2112:29): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2113|      0|    case MFF_TUN_METADATA6: case MFF_TUN_METADATA7:   \
  |  |  ------------------
  |  |  |  Branch (2113:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2113:29): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2114|      0|    case MFF_TUN_METADATA8: case MFF_TUN_METADATA9:   \
  |  |  ------------------
  |  |  |  Branch (2114:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2114:29): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2115|      0|    case MFF_TUN_METADATA10: case MFF_TUN_METADATA11: \
  |  |  ------------------
  |  |  |  Branch (2115:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2115:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2116|      0|    case MFF_TUN_METADATA12: case MFF_TUN_METADATA13: \
  |  |  ------------------
  |  |  |  Branch (2116:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2116:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2117|      0|    case MFF_TUN_METADATA14: case MFF_TUN_METADATA15: \
  |  |  ------------------
  |  |  |  Branch (2117:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2117:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2118|      0|    case MFF_TUN_METADATA16: case MFF_TUN_METADATA17: \
  |  |  ------------------
  |  |  |  Branch (2118:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2118:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2119|      0|    case MFF_TUN_METADATA18: case MFF_TUN_METADATA19: \
  |  |  ------------------
  |  |  |  Branch (2119:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2119:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2120|      0|    case MFF_TUN_METADATA20: case MFF_TUN_METADATA21: \
  |  |  ------------------
  |  |  |  Branch (2120:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2120:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2121|      0|    case MFF_TUN_METADATA22: case MFF_TUN_METADATA23: \
  |  |  ------------------
  |  |  |  Branch (2121:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2121:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2122|      0|    case MFF_TUN_METADATA24: case MFF_TUN_METADATA25: \
  |  |  ------------------
  |  |  |  Branch (2122:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2122:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2123|      0|    case MFF_TUN_METADATA26: case MFF_TUN_METADATA27: \
  |  |  ------------------
  |  |  |  Branch (2123:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2123:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2124|      0|    case MFF_TUN_METADATA28: case MFF_TUN_METADATA29: \
  |  |  ------------------
  |  |  |  Branch (2124:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2124:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2125|      0|    case MFF_TUN_METADATA30: case MFF_TUN_METADATA31: \
  |  |  ------------------
  |  |  |  Branch (2125:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2125:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2126|      0|    case MFF_TUN_METADATA32: case MFF_TUN_METADATA33: \
  |  |  ------------------
  |  |  |  Branch (2126:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2126:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2127|      0|    case MFF_TUN_METADATA34: case MFF_TUN_METADATA35: \
  |  |  ------------------
  |  |  |  Branch (2127:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2127:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2128|      0|    case MFF_TUN_METADATA36: case MFF_TUN_METADATA37: \
  |  |  ------------------
  |  |  |  Branch (2128:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2128:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2129|      0|    case MFF_TUN_METADATA38: case MFF_TUN_METADATA39: \
  |  |  ------------------
  |  |  |  Branch (2129:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2129:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2130|      0|    case MFF_TUN_METADATA40: case MFF_TUN_METADATA41: \
  |  |  ------------------
  |  |  |  Branch (2130:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2130:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2131|      0|    case MFF_TUN_METADATA42: case MFF_TUN_METADATA43: \
  |  |  ------------------
  |  |  |  Branch (2131:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2131:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2132|      0|    case MFF_TUN_METADATA44: case MFF_TUN_METADATA45: \
  |  |  ------------------
  |  |  |  Branch (2132:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2132:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2133|      0|    case MFF_TUN_METADATA46: case MFF_TUN_METADATA47: \
  |  |  ------------------
  |  |  |  Branch (2133:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2133:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2134|      0|    case MFF_TUN_METADATA48: case MFF_TUN_METADATA49: \
  |  |  ------------------
  |  |  |  Branch (2134:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2134:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2135|      0|    case MFF_TUN_METADATA50: case MFF_TUN_METADATA51: \
  |  |  ------------------
  |  |  |  Branch (2135:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2135:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2136|      0|    case MFF_TUN_METADATA52: case MFF_TUN_METADATA53: \
  |  |  ------------------
  |  |  |  Branch (2136:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2136:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2137|      0|    case MFF_TUN_METADATA54: case MFF_TUN_METADATA55: \
  |  |  ------------------
  |  |  |  Branch (2137:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2137:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2138|      0|    case MFF_TUN_METADATA56: case MFF_TUN_METADATA57: \
  |  |  ------------------
  |  |  |  Branch (2138:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2138:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2139|      0|    case MFF_TUN_METADATA58: case MFF_TUN_METADATA59: \
  |  |  ------------------
  |  |  |  Branch (2139:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2139:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2140|      0|    case MFF_TUN_METADATA60: case MFF_TUN_METADATA61: \
  |  |  ------------------
  |  |  |  Branch (2140:5): [True: 0, False: 49.3k]
  |  |  |  Branch (2140:30): [True: 0, False: 49.3k]
  |  |  ------------------
  |  | 2141|      0|    case MFF_TUN_METADATA62: case MFF_TUN_METADATA63
  |  |  ------------------
  |  |  |  Branch (2141:5): [True: 0, False: 49.3k]
  |  |  ------------------
  ------------------
 2239|      0|        tun_metadata_set_match(mf, NULL, NULL, match, err_str);
 2240|      0|        break;
 2241|       |
 2242|    169|    case MFF_METADATA:
  ------------------
  |  Branch (2242:5): [True: 169, False: 49.1k]
  ------------------
 2243|    169|        match_set_metadata_masked(match, htonll(0), htonll(0));
 2244|    169|        break;
 2245|       |
 2246|    195|    case MFF_IN_PORT:
  ------------------
  |  Branch (2246:5): [True: 195, False: 49.1k]
  ------------------
 2247|    195|    case MFF_IN_PORT_OXM:
  ------------------
  |  Branch (2247:5): [True: 0, False: 49.3k]
  ------------------
 2248|    195|        match->flow.in_port.ofp_port = 0;
 2249|    195|        match->wc.masks.in_port.ofp_port = 0;
 2250|    195|        break;
 2251|    194|    case MFF_ACTSET_OUTPUT:
  ------------------
  |  Branch (2251:5): [True: 194, False: 49.1k]
  ------------------
 2252|    194|        match->flow.actset_output = 0;
 2253|    194|        match->wc.masks.actset_output = 0;
 2254|    194|        break;
 2255|       |
 2256|      0|    case MFF_SKB_PRIORITY:
  ------------------
  |  Branch (2256:5): [True: 0, False: 49.3k]
  ------------------
 2257|      0|        match->flow.skb_priority = 0;
 2258|      0|        match->wc.masks.skb_priority = 0;
 2259|      0|        break;
 2260|       |
 2261|     66|    case MFF_PKT_MARK:
  ------------------
  |  Branch (2261:5): [True: 66, False: 49.2k]
  ------------------
 2262|     66|        match->flow.pkt_mark = 0;
 2263|     66|        match->wc.masks.pkt_mark = 0;
 2264|     66|        break;
 2265|       |
 2266|    309|    case MFF_CT_STATE:
  ------------------
  |  Branch (2266:5): [True: 309, False: 49.0k]
  ------------------
 2267|    309|        match->flow.ct_state = 0;
 2268|    309|        match->wc.masks.ct_state = 0;
 2269|    309|        break;
 2270|       |
 2271|    108|    case MFF_CT_ZONE:
  ------------------
  |  Branch (2271:5): [True: 108, False: 49.2k]
  ------------------
 2272|    108|        match->flow.ct_zone = 0;
 2273|    108|        match->wc.masks.ct_zone = 0;
 2274|    108|        break;
 2275|       |
 2276|    202|    case MFF_CT_MARK:
  ------------------
  |  Branch (2276:5): [True: 202, False: 49.1k]
  ------------------
 2277|    202|        match->flow.ct_mark = 0;
 2278|    202|        match->wc.masks.ct_mark = 0;
 2279|    202|        break;
 2280|       |
 2281|    196|    case MFF_CT_LABEL:
  ------------------
  |  Branch (2281:5): [True: 196, False: 49.1k]
  ------------------
 2282|    196|        memset(&match->flow.ct_label, 0, sizeof(match->flow.ct_label));
 2283|    196|        memset(&match->wc.masks.ct_label, 0, sizeof(match->wc.masks.ct_label));
 2284|    196|        break;
 2285|       |
 2286|    236|    case MFF_CT_NW_PROTO:
  ------------------
  |  Branch (2286:5): [True: 236, False: 49.1k]
  ------------------
 2287|    236|        match->flow.ct_nw_proto = 0;
 2288|    236|        match->wc.masks.ct_nw_proto = 0;
 2289|    236|        break;
 2290|       |
 2291|    194|    case MFF_CT_NW_SRC:
  ------------------
  |  Branch (2291:5): [True: 194, False: 49.1k]
  ------------------
 2292|    194|        match->flow.ct_nw_src = 0;
 2293|    194|        match->wc.masks.ct_nw_src = 0;
 2294|    194|        break;
 2295|       |
 2296|    230|    case MFF_CT_NW_DST:
  ------------------
  |  Branch (2296:5): [True: 230, False: 49.1k]
  ------------------
 2297|    230|        match->flow.ct_nw_dst = 0;
 2298|    230|        match->wc.masks.ct_nw_dst = 0;
 2299|    230|        break;
 2300|       |
 2301|     66|    case MFF_CT_IPV6_SRC:
  ------------------
  |  Branch (2301:5): [True: 66, False: 49.2k]
  ------------------
 2302|     66|        memset(&match->flow.ct_ipv6_src, 0, sizeof(match->flow.ct_ipv6_src));
 2303|     66|        WC_UNMASK_FIELD(&match->wc, ct_ipv6_src);
  ------------------
  |  |  205|     66|    memset(&(WC)->masks.FIELD, 0, sizeof (WC)->masks.FIELD)
  ------------------
 2304|     66|        break;
 2305|       |
 2306|    207|    case MFF_CT_IPV6_DST:
  ------------------
  |  Branch (2306:5): [True: 207, False: 49.1k]
  ------------------
 2307|    207|        memset(&match->flow.ct_ipv6_dst, 0, sizeof(match->flow.ct_ipv6_dst));
 2308|    207|        WC_UNMASK_FIELD(&match->wc, ct_ipv6_dst);
  ------------------
  |  |  205|    207|    memset(&(WC)->masks.FIELD, 0, sizeof (WC)->masks.FIELD)
  ------------------
 2309|    207|        break;
 2310|       |
 2311|    194|    case MFF_CT_TP_SRC:
  ------------------
  |  Branch (2311:5): [True: 194, False: 49.1k]
  ------------------
 2312|    194|        match->flow.ct_tp_src = 0;
 2313|    194|        match->wc.masks.ct_tp_src = 0;
 2314|    194|        break;
 2315|       |
 2316|    194|    case MFF_CT_TP_DST:
  ------------------
  |  Branch (2316:5): [True: 194, False: 49.1k]
  ------------------
 2317|    194|        match->flow.ct_tp_dst = 0;
 2318|    194|        match->wc.masks.ct_tp_dst = 0;
 2319|    194|        break;
 2320|       |
 2321|  17.9k|    CASE_MFF_REGS:
  ------------------
  |  | 2065|  4.65k|    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3:     \
  |  |  ------------------
  |  |  |  Branch (2065:5): [True: 872, False: 48.4k]
  |  |  |  Branch (2065:20): [True: 891, False: 48.4k]
  |  |  |  Branch (2065:35): [True: 2.14k, False: 47.2k]
  |  |  |  Branch (2065:50): [True: 743, False: 48.6k]
  |  |  ------------------
  |  | 2066|  6.88k|    case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7:     \
  |  |  ------------------
  |  |  |  Branch (2066:5): [True: 393, False: 48.9k]
  |  |  |  Branch (2066:20): [True: 982, False: 48.3k]
  |  |  |  Branch (2066:35): [True: 476, False: 48.8k]
  |  |  |  Branch (2066:50): [True: 382, False: 48.9k]
  |  |  ------------------
  |  | 2067|  8.34k|    case MFF_REG8: case MFF_REG9: case MFF_REG10: case MFF_REG11:   \
  |  |  ------------------
  |  |  |  Branch (2067:5): [True: 402, False: 48.9k]
  |  |  |  Branch (2067:20): [True: 448, False: 48.9k]
  |  |  |  Branch (2067:35): [True: 357, False: 49.0k]
  |  |  |  Branch (2067:51): [True: 251, False: 49.1k]
  |  |  ------------------
  |  | 2068|  11.4k|    case MFF_REG12: case MFF_REG13: case MFF_REG14: case MFF_REG15: \
  |  |  ------------------
  |  |  |  Branch (2068:5): [True: 453, False: 48.9k]
  |  |  |  Branch (2068:21): [True: 476, False: 48.8k]
  |  |  |  Branch (2068:37): [True: 1.82k, False: 47.5k]
  |  |  |  Branch (2068:53): [True: 387, False: 48.9k]
  |  |  ------------------
  |  | 2069|  14.0k|    case MFF_REG16: case MFF_REG17: case MFF_REG18: case MFF_REG19: \
  |  |  ------------------
  |  |  |  Branch (2069:5): [True: 282, False: 49.0k]
  |  |  |  Branch (2069:21): [True: 299, False: 49.0k]
  |  |  |  Branch (2069:37): [True: 256, False: 49.1k]
  |  |  |  Branch (2069:53): [True: 1.70k, False: 47.6k]
  |  |  ------------------
  |  | 2070|  15.3k|    case MFF_REG20: case MFF_REG21: case MFF_REG22: case MFF_REG23: \
  |  |  ------------------
  |  |  |  Branch (2070:5): [True: 353, False: 49.0k]
  |  |  |  Branch (2070:21): [True: 255, False: 49.1k]
  |  |  |  Branch (2070:37): [True: 339, False: 49.0k]
  |  |  |  Branch (2070:53): [True: 411, False: 48.9k]
  |  |  ------------------
  |  | 2071|  16.5k|    case MFF_REG24: case MFF_REG25: case MFF_REG26: case MFF_REG27: \
  |  |  ------------------
  |  |  |  Branch (2071:5): [True: 226, False: 49.1k]
  |  |  |  Branch (2071:21): [True: 508, False: 48.8k]
  |  |  |  Branch (2071:37): [True: 219, False: 49.1k]
  |  |  |  Branch (2071:53): [True: 267, False: 49.0k]
  |  |  ------------------
  |  | 2072|  17.9k|    case MFF_REG28: case MFF_REG29: case MFF_REG30: case MFF_REG31
  |  |  ------------------
  |  |  |  Branch (2072:5): [True: 325, False: 49.0k]
  |  |  |  Branch (2072:21): [True: 274, False: 49.0k]
  |  |  |  Branch (2072:37): [True: 391, False: 48.9k]
  |  |  ------------------
  ------------------
 2322|  17.9k|        match_set_reg_masked(match, mf->id - MFF_REG0, 0, 0);
 2323|  17.9k|        break;
 2324|       |
 2325|  7.87k|    CASE_MFF_XREGS:
  ------------------
  |  | 2081|  2.70k|    case MFF_XREG0: case MFF_XREG1: case MFF_XREG2: case MFF_XREG3:    \
  |  |  ------------------
  |  |  |  Branch (2081:5): [True: 379, False: 48.9k]
  |  |  |  Branch (2081:21): [True: 1.23k, False: 48.1k]
  |  |  |  Branch (2081:37): [True: 671, False: 48.6k]
  |  |  |  Branch (2081:53): [True: 417, False: 48.9k]
  |  |  ------------------
  |  | 2082|  4.59k|    case MFF_XREG4: case MFF_XREG5: case MFF_XREG6: case MFF_XREG7:    \
  |  |  ------------------
  |  |  |  Branch (2082:5): [True: 549, False: 48.8k]
  |  |  |  Branch (2082:21): [True: 327, False: 49.0k]
  |  |  |  Branch (2082:37): [True: 694, False: 48.6k]
  |  |  |  Branch (2082:53): [True: 327, False: 49.0k]
  |  |  ------------------
  |  | 2083|  6.01k|    case MFF_XREG8: case MFF_XREG9: case MFF_XREG10: case MFF_XREG11:  \
  |  |  ------------------
  |  |  |  Branch (2083:5): [True: 264, False: 49.0k]
  |  |  |  Branch (2083:21): [True: 314, False: 49.0k]
  |  |  |  Branch (2083:37): [True: 268, False: 49.0k]
  |  |  |  Branch (2083:54): [True: 573, False: 48.7k]
  |  |  ------------------
  |  | 2084|  7.87k|    case MFF_XREG12: case MFF_XREG13: case MFF_XREG14: case MFF_XREG15
  |  |  ------------------
  |  |  |  Branch (2084:5): [True: 483, False: 48.8k]
  |  |  |  Branch (2084:22): [True: 442, False: 48.9k]
  |  |  |  Branch (2084:39): [True: 337, False: 49.0k]
  |  |  ------------------
  ------------------
 2326|  7.87k|        match_set_xreg_masked(match, mf->id - MFF_XREG0, 0, 0);
 2327|  7.87k|        break;
 2328|       |
 2329|  3.95k|    CASE_MFF_XXREGS: {
  ------------------
  |  | 2093|  2.05k|    case MFF_XXREG0: case MFF_XXREG1: case MFF_XXREG2: case MFF_XXREG3: \
  |  |  ------------------
  |  |  |  Branch (2093:5): [True: 421, False: 48.9k]
  |  |  |  Branch (2093:22): [True: 548, False: 48.8k]
  |  |  |  Branch (2093:39): [True: 552, False: 48.8k]
  |  |  |  Branch (2093:56): [True: 535, False: 48.8k]
  |  |  ------------------
  |  | 2094|  3.95k|    case MFF_XXREG4: case MFF_XXREG5: case MFF_XXREG6: case MFF_XXREG7
  |  |  ------------------
  |  |  |  Branch (2094:5): [True: 476, False: 48.8k]
  |  |  |  Branch (2094:22): [True: 375, False: 48.9k]
  |  |  |  Branch (2094:39): [True: 765, False: 48.5k]
  |  |  ------------------
  ------------------
 2330|  3.95k|        match_set_xxreg_masked(match, mf->id - MFF_XXREG0, OVS_U128_ZERO,
  ------------------
  |  |  130|  3.95k|#define OVS_U128_ZERO OVS_U128_MIN
  ------------------
 2331|  3.95k|                               OVS_U128_ZERO);
  ------------------
  |  |  130|  3.95k|#define OVS_U128_ZERO OVS_U128_MIN
  ------------------
 2332|  3.95k|        break;
 2333|  14.0k|    }
 2334|       |
 2335|    106|    case MFF_ETH_SRC:
  ------------------
  |  Branch (2335:5): [True: 106, False: 49.2k]
  ------------------
 2336|    106|        match->flow.dl_src = eth_addr_zero;
 2337|    106|        match->wc.masks.dl_src = eth_addr_zero;
 2338|    106|        break;
 2339|       |
 2340|     34|    case MFF_ETH_DST:
  ------------------
  |  Branch (2340:5): [True: 34, False: 49.3k]
  ------------------
 2341|     34|        match->flow.dl_dst = eth_addr_zero;
 2342|     34|        match->wc.masks.dl_dst = eth_addr_zero;
 2343|     34|        break;
 2344|       |
 2345|    194|    case MFF_ETH_TYPE:
  ------------------
  |  Branch (2345:5): [True: 194, False: 49.1k]
  ------------------
 2346|    194|        match->flow.dl_type = htons(0);
 2347|    194|        match->wc.masks.dl_type = htons(0);
 2348|    194|        break;
 2349|       |
 2350|    198|    case MFF_VLAN_TCI:
  ------------------
  |  Branch (2350:5): [True: 198, False: 49.1k]
  ------------------
 2351|    198|        match_set_dl_tci_masked(match, htons(0), htons(0));
 2352|    198|        break;
 2353|       |
 2354|    361|    case MFF_DL_VLAN:
  ------------------
  |  Branch (2354:5): [True: 361, False: 48.9k]
  ------------------
 2355|    430|    case MFF_VLAN_VID:
  ------------------
  |  Branch (2355:5): [True: 69, False: 49.2k]
  ------------------
 2356|    430|        match_set_any_vid(match);
 2357|    430|        break;
 2358|       |
 2359|    244|    case MFF_DL_VLAN_PCP:
  ------------------
  |  Branch (2359:5): [True: 244, False: 49.1k]
  ------------------
 2360|    827|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (2360:5): [True: 583, False: 48.7k]
  ------------------
 2361|    827|        match_set_any_pcp(match);
 2362|    827|        break;
 2363|       |
 2364|     66|    case MFF_MPLS_LABEL:
  ------------------
  |  Branch (2364:5): [True: 66, False: 49.2k]
  ------------------
 2365|     66|        match_set_any_mpls_label(match, 0);
 2366|     66|        break;
 2367|       |
 2368|    411|    case MFF_MPLS_TC:
  ------------------
  |  Branch (2368:5): [True: 411, False: 48.9k]
  ------------------
 2369|    411|        match_set_any_mpls_tc(match, 0);
 2370|    411|        break;
 2371|       |
 2372|    208|    case MFF_MPLS_BOS:
  ------------------
  |  Branch (2372:5): [True: 208, False: 49.1k]
  ------------------
 2373|    208|        match_set_any_mpls_bos(match, 0);
 2374|    208|        break;
 2375|       |
 2376|    351|    case MFF_MPLS_TTL:
  ------------------
  |  Branch (2376:5): [True: 351, False: 49.0k]
  ------------------
 2377|    351|        match_set_any_mpls_ttl(match, 0);
 2378|    351|        break;
 2379|       |
 2380|    208|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (2380:5): [True: 208, False: 49.1k]
  ------------------
 2381|    402|    case MFF_ARP_SPA:
  ------------------
  |  Branch (2381:5): [True: 194, False: 49.1k]
  ------------------
 2382|    402|        match_set_nw_src_masked(match, htonl(0), htonl(0));
 2383|    402|        break;
 2384|       |
 2385|    472|    case MFF_IPV4_DST:
  ------------------
  |  Branch (2385:5): [True: 472, False: 48.8k]
  ------------------
 2386|    538|    case MFF_ARP_TPA:
  ------------------
  |  Branch (2386:5): [True: 66, False: 49.2k]
  ------------------
 2387|    538|        match_set_nw_dst_masked(match, htonl(0), htonl(0));
 2388|    538|        break;
 2389|       |
 2390|    216|    case MFF_IPV6_SRC:
  ------------------
  |  Branch (2390:5): [True: 216, False: 49.1k]
  ------------------
 2391|    216|        memset(&match->wc.masks.ipv6_src, 0, sizeof match->wc.masks.ipv6_src);
 2392|    216|        memset(&match->flow.ipv6_src, 0, sizeof match->flow.ipv6_src);
 2393|    216|        break;
 2394|       |
 2395|    206|    case MFF_IPV6_DST:
  ------------------
  |  Branch (2395:5): [True: 206, False: 49.1k]
  ------------------
 2396|    206|        memset(&match->wc.masks.ipv6_dst, 0, sizeof match->wc.masks.ipv6_dst);
 2397|    206|        memset(&match->flow.ipv6_dst, 0, sizeof match->flow.ipv6_dst);
 2398|    206|        break;
 2399|       |
 2400|    444|    case MFF_IPV6_LABEL:
  ------------------
  |  Branch (2400:5): [True: 444, False: 48.9k]
  ------------------
 2401|    444|        match->wc.masks.ipv6_label = htonl(0);
 2402|    444|        match->flow.ipv6_label = htonl(0);
 2403|    444|        break;
 2404|       |
 2405|    305|    case MFF_IP_PROTO:
  ------------------
  |  Branch (2405:5): [True: 305, False: 49.0k]
  ------------------
 2406|    305|        match->wc.masks.nw_proto = 0;
 2407|    305|        match->flow.nw_proto = 0;
 2408|    305|        break;
 2409|       |
 2410|    253|    case MFF_IP_DSCP:
  ------------------
  |  Branch (2410:5): [True: 253, False: 49.1k]
  ------------------
 2411|    459|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (2411:5): [True: 206, False: 49.1k]
  ------------------
 2412|    459|        match->wc.masks.nw_tos &= ~IP_DSCP_MASK;
  ------------------
  |  |  724|    459|#define IP_DSCP_MASK 0xfc
  ------------------
 2413|    459|        match->flow.nw_tos &= ~IP_DSCP_MASK;
  ------------------
  |  |  724|    459|#define IP_DSCP_MASK 0xfc
  ------------------
 2414|    459|        break;
 2415|       |
 2416|    206|    case MFF_IP_ECN:
  ------------------
  |  Branch (2416:5): [True: 206, False: 49.1k]
  ------------------
 2417|    206|        match->wc.masks.nw_tos &= ~IP_ECN_MASK;
  ------------------
  |  |  722|    206|#define IP_ECN_MASK 0x03
  ------------------
 2418|    206|        match->flow.nw_tos &= ~IP_ECN_MASK;
  ------------------
  |  |  722|    206|#define IP_ECN_MASK 0x03
  ------------------
 2419|    206|        break;
 2420|       |
 2421|    195|    case MFF_IP_TTL:
  ------------------
  |  Branch (2421:5): [True: 195, False: 49.1k]
  ------------------
 2422|    195|        match->wc.masks.nw_ttl = 0;
 2423|    195|        match->flow.nw_ttl = 0;
 2424|    195|        break;
 2425|       |
 2426|     66|    case MFF_IP_FRAG:
  ------------------
  |  Branch (2426:5): [True: 66, False: 49.2k]
  ------------------
 2427|     66|        match->wc.masks.nw_frag &= ~FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|     66|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|     66|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|     66|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 2428|     66|        match->flow.nw_frag &= ~FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|     66|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|     66|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|     66|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 2429|     66|        break;
 2430|       |
 2431|    439|    case MFF_ARP_OP:
  ------------------
  |  Branch (2431:5): [True: 439, False: 48.9k]
  ------------------
 2432|    439|        match->wc.masks.nw_proto = 0;
 2433|    439|        match->flow.nw_proto = 0;
 2434|    439|        break;
 2435|       |
 2436|     66|    case MFF_ARP_SHA:
  ------------------
  |  Branch (2436:5): [True: 66, False: 49.2k]
  ------------------
 2437|    260|    case MFF_ND_SLL:
  ------------------
  |  Branch (2437:5): [True: 194, False: 49.1k]
  ------------------
 2438|    260|        match->flow.arp_sha = eth_addr_zero;
 2439|    260|        match->wc.masks.arp_sha = eth_addr_zero;
 2440|    260|        break;
 2441|       |
 2442|    194|    case MFF_ARP_THA:
  ------------------
  |  Branch (2442:5): [True: 194, False: 49.1k]
  ------------------
 2443|    388|    case MFF_ND_TLL:
  ------------------
  |  Branch (2443:5): [True: 194, False: 49.1k]
  ------------------
 2444|    388|        match->flow.arp_tha = eth_addr_zero;
 2445|    388|        match->wc.masks.arp_tha = eth_addr_zero;
 2446|    388|        break;
 2447|       |
 2448|      0|    case MFF_ND_RESERVED:
  ------------------
  |  Branch (2448:5): [True: 0, False: 49.3k]
  ------------------
 2449|      0|        match->wc.masks.igmp_group_ip4 = htonl(0);
 2450|      0|        match->flow.igmp_group_ip4 = htonl(0);
 2451|      0|        break;
 2452|       |
 2453|    481|    case MFF_TCP_SRC:
  ------------------
  |  Branch (2453:5): [True: 481, False: 48.8k]
  ------------------
 2454|    566|    case MFF_UDP_SRC:
  ------------------
  |  Branch (2454:5): [True: 85, False: 49.2k]
  ------------------
 2455|    912|    case MFF_SCTP_SRC:
  ------------------
  |  Branch (2455:5): [True: 346, False: 49.0k]
  ------------------
 2456|    952|    case MFF_ICMPV4_TYPE:
  ------------------
  |  Branch (2456:5): [True: 40, False: 49.3k]
  ------------------
 2457|  1.16k|    case MFF_ICMPV6_TYPE:
  ------------------
  |  Branch (2457:5): [True: 217, False: 49.1k]
  ------------------
 2458|  1.16k|        match->wc.masks.tp_src = htons(0);
 2459|  1.16k|        match->flow.tp_src = htons(0);
 2460|  1.16k|        break;
 2461|       |
 2462|    228|    case MFF_TCP_DST:
  ------------------
  |  Branch (2462:5): [True: 228, False: 49.1k]
  ------------------
 2463|    437|    case MFF_UDP_DST:
  ------------------
  |  Branch (2463:5): [True: 209, False: 49.1k]
  ------------------
 2464|    515|    case MFF_SCTP_DST:
  ------------------
  |  Branch (2464:5): [True: 78, False: 49.2k]
  ------------------
 2465|    581|    case MFF_ICMPV4_CODE:
  ------------------
  |  Branch (2465:5): [True: 66, False: 49.2k]
  ------------------
 2466|    656|    case MFF_ICMPV6_CODE:
  ------------------
  |  Branch (2466:5): [True: 75, False: 49.2k]
  ------------------
 2467|    656|        match->wc.masks.tp_dst = htons(0);
 2468|    656|        match->flow.tp_dst = htons(0);
 2469|    656|        break;
 2470|       |
 2471|    425|    case MFF_TCP_FLAGS:
  ------------------
  |  Branch (2471:5): [True: 425, False: 48.9k]
  ------------------
 2472|    425|    case MFF_ND_OPTIONS_TYPE:
  ------------------
  |  Branch (2472:5): [True: 0, False: 49.3k]
  ------------------
 2473|    425|        match->wc.masks.tcp_flags = htons(0);
 2474|    425|        match->flow.tcp_flags = htons(0);
 2475|    425|        break;
 2476|       |
 2477|      0|    case MFF_ND_TARGET:
  ------------------
  |  Branch (2477:5): [True: 0, False: 49.3k]
  ------------------
 2478|      0|        memset(&match->wc.masks.nd_target, 0,
 2479|      0|               sizeof match->wc.masks.nd_target);
 2480|      0|        memset(&match->flow.nd_target, 0, sizeof match->flow.nd_target);
 2481|      0|        break;
 2482|       |
 2483|    196|    case MFF_NSH_FLAGS:
  ------------------
  |  Branch (2483:5): [True: 196, False: 49.1k]
  ------------------
 2484|    196|        MATCH_SET_FIELD_MASKED(match, nsh.flags, 0, 0);
  ------------------
  |  |   50|    196|    do {                                                      \
  |  |   51|    196|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    196|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    196|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 196]
  |  |  ------------------
  ------------------
 2485|    196|        break;
 2486|    720|    case MFF_NSH_TTL:
  ------------------
  |  Branch (2486:5): [True: 720, False: 48.6k]
  ------------------
 2487|    720|        MATCH_SET_FIELD_MASKED(match, nsh.ttl, 0, 0);
  ------------------
  |  |   50|    720|    do {                                                      \
  |  |   51|    720|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    720|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    720|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 720]
  |  |  ------------------
  ------------------
 2488|    720|        break;
 2489|    353|    case MFF_NSH_MDTYPE:
  ------------------
  |  Branch (2489:5): [True: 353, False: 49.0k]
  ------------------
 2490|    353|        MATCH_SET_FIELD_MASKED(match, nsh.mdtype, 0, 0);
  ------------------
  |  |   50|    353|    do {                                                      \
  |  |   51|    353|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    353|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    353|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 353]
  |  |  ------------------
  ------------------
 2491|    353|        break;
 2492|    201|    case MFF_NSH_NP:
  ------------------
  |  Branch (2492:5): [True: 201, False: 49.1k]
  ------------------
 2493|    201|        MATCH_SET_FIELD_MASKED(match, nsh.np, 0, 0);
  ------------------
  |  |   50|    201|    do {                                                      \
  |  |   51|    201|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    201|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    201|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 201]
  |  |  ------------------
  ------------------
 2494|    201|        break;
 2495|    624|    case MFF_NSH_SPI:
  ------------------
  |  Branch (2495:5): [True: 624, False: 48.7k]
  ------------------
 2496|    624|        match->wc.masks.nsh.path_hdr &= ~htonl(NSH_SPI_MASK);
 2497|    624|        nsh_path_hdr_set_spi(&match->flow.nsh.path_hdr, htonl(0));
 2498|    624|        break;
 2499|    704|    case MFF_NSH_SI:
  ------------------
  |  Branch (2499:5): [True: 704, False: 48.6k]
  ------------------
 2500|    704|        match->wc.masks.nsh.path_hdr &= ~htonl(NSH_SI_MASK);
 2501|    704|        nsh_path_hdr_set_si(&match->flow.nsh.path_hdr, 0);
 2502|    704|        break;
 2503|    378|    case MFF_NSH_C1:
  ------------------
  |  Branch (2503:5): [True: 378, False: 48.9k]
  ------------------
 2504|    690|    case MFF_NSH_C2:
  ------------------
  |  Branch (2504:5): [True: 312, False: 49.0k]
  ------------------
 2505|  1.14k|    case MFF_NSH_C3:
  ------------------
  |  Branch (2505:5): [True: 458, False: 48.9k]
  ------------------
 2506|  1.35k|    case MFF_NSH_C4:
  ------------------
  |  Branch (2506:5): [True: 202, False: 49.1k]
  ------------------
 2507|  1.35k|        MATCH_SET_FIELD_MASKED(match, nsh.context[mf->id - MFF_NSH_C1],
  ------------------
  |  |   50|  1.35k|    do {                                                      \
  |  |   51|  1.35k|        (match)->wc.masks.field = (msk);                      \
  |  |   52|  1.35k|        (match)->flow.field = (value) & (msk);                \
  |  |   53|  1.35k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 1.35k]
  |  |  ------------------
  ------------------
 2508|  1.35k|                               htonl(0), htonl(0));
 2509|  1.35k|        break;
 2510|       |
 2511|      0|    case MFF_N_IDS:
  ------------------
  |  Branch (2511:5): [True: 0, False: 49.3k]
  ------------------
 2512|      0|    default:
  ------------------
  |  Branch (2512:5): [True: 0, False: 49.3k]
  ------------------
 2513|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 2514|  49.3k|    }
 2515|  49.3k|}
mf_set:
 2540|   202k|{
 2541|   202k|    if (!mask || is_all_ones(mask, mf->n_bytes)) {
  ------------------
  |  Branch (2541:9): [True: 0, False: 202k]
  |  Branch (2541:18): [True: 81.5k, False: 120k]
  ------------------
 2542|  81.5k|        mf_set_value(mf, value, match, err_str);
 2543|  81.5k|        return mf->usable_protocols_exact;
 2544|   120k|    } else if (is_all_zeros(mask, mf->n_bytes) && !mf_is_tun_metadata(mf)) {
  ------------------
  |  Branch (2544:16): [True: 49.6k, False: 70.8k]
  |  Branch (2544:51): [True: 49.3k, False: 297]
  ------------------
 2545|       |        /* Tunnel metadata matches on the existence of the field itself, so
 2546|       |         * it still needs to be encoded even if the value is wildcarded. */
 2547|  49.3k|        mf_set_wild(mf, match, err_str);
 2548|  49.3k|        return OFPUTIL_P_ANY;
  ------------------
  |  |  100|  49.3k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
 2549|  49.3k|    }
 2550|       |
 2551|  71.1k|    if (err_str) {
  ------------------
  |  Branch (2551:9): [True: 53.0k, False: 18.1k]
  ------------------
 2552|  53.0k|        *err_str = NULL;
 2553|  53.0k|    }
 2554|       |
 2555|       |    /* The cases where 'mask' is all-1-bits or all-0-bits were already handled
 2556|       |     * above[*], so the code below only needs to work for the remaining cases
 2557|       |     * of a nontrivial mask.
 2558|       |     *
 2559|       |     * [*] Except where the field is a tunnel metadata field and 'mask' is
 2560|       |     *     all-0-bits; see above. */
 2561|  71.1k|    switch (mf->id) {
 2562|    424|    case MFF_CT_ZONE:
  ------------------
  |  Branch (2562:5): [True: 424, False: 70.7k]
  ------------------
 2563|    721|    case MFF_CT_NW_PROTO:
  ------------------
  |  Branch (2563:5): [True: 297, False: 70.8k]
  ------------------
 2564|  1.02k|    case MFF_RECIRC_ID:
  ------------------
  |  Branch (2564:5): [True: 308, False: 70.8k]
  ------------------
 2565|  1.10k|    case MFF_PACKET_TYPE:
  ------------------
  |  Branch (2565:5): [True: 72, False: 71.1k]
  ------------------
 2566|  1.32k|    case MFF_CONJ_ID:
  ------------------
  |  Branch (2566:5): [True: 225, False: 70.9k]
  ------------------
 2567|  1.52k|    case MFF_IN_PORT:
  ------------------
  |  Branch (2567:5): [True: 196, False: 70.9k]
  ------------------
 2568|  1.78k|    case MFF_IN_PORT_OXM:
  ------------------
  |  Branch (2568:5): [True: 259, False: 70.9k]
  ------------------
 2569|  1.84k|    case MFF_ACTSET_OUTPUT:
  ------------------
  |  Branch (2569:5): [True: 68, False: 71.1k]
  ------------------
 2570|  1.84k|    case MFF_SKB_PRIORITY:
  ------------------
  |  Branch (2570:5): [True: 0, False: 71.1k]
  ------------------
 2571|  2.04k|    case MFF_ETH_TYPE:
  ------------------
  |  Branch (2571:5): [True: 194, False: 70.9k]
  ------------------
 2572|  2.26k|    case MFF_DL_VLAN:
  ------------------
  |  Branch (2572:5): [True: 226, False: 70.9k]
  ------------------
 2573|  2.56k|    case MFF_DL_VLAN_PCP:
  ------------------
  |  Branch (2573:5): [True: 293, False: 70.8k]
  ------------------
 2574|  2.87k|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (2574:5): [True: 314, False: 70.8k]
  ------------------
 2575|  3.10k|    case MFF_MPLS_LABEL:
  ------------------
  |  Branch (2575:5): [True: 226, False: 70.9k]
  ------------------
 2576|  3.36k|    case MFF_MPLS_TC:
  ------------------
  |  Branch (2576:5): [True: 258, False: 70.9k]
  ------------------
 2577|  3.61k|    case MFF_MPLS_BOS:
  ------------------
  |  Branch (2577:5): [True: 258, False: 70.9k]
  ------------------
 2578|  3.87k|    case MFF_MPLS_TTL:
  ------------------
  |  Branch (2578:5): [True: 260, False: 70.9k]
  ------------------
 2579|  4.14k|    case MFF_IP_PROTO:
  ------------------
  |  Branch (2579:5): [True: 262, False: 70.9k]
  ------------------
 2580|  4.21k|    case MFF_IP_TTL:
  ------------------
  |  Branch (2580:5): [True: 79, False: 71.1k]
  ------------------
 2581|  4.47k|    case MFF_IP_DSCP:
  ------------------
  |  Branch (2581:5): [True: 256, False: 70.9k]
  ------------------
 2582|  4.73k|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (2582:5): [True: 258, False: 70.9k]
  ------------------
 2583|  4.99k|    case MFF_IP_ECN:
  ------------------
  |  Branch (2583:5): [True: 259, False: 70.9k]
  ------------------
 2584|  5.24k|    case MFF_ARP_OP:
  ------------------
  |  Branch (2584:5): [True: 254, False: 70.9k]
  ------------------
 2585|  5.51k|    case MFF_ICMPV4_TYPE:
  ------------------
  |  Branch (2585:5): [True: 265, False: 70.9k]
  ------------------
 2586|  5.70k|    case MFF_ICMPV4_CODE:
  ------------------
  |  Branch (2586:5): [True: 194, False: 70.9k]
  ------------------
 2587|  5.96k|    case MFF_ICMPV6_TYPE:
  ------------------
  |  Branch (2587:5): [True: 259, False: 70.9k]
  ------------------
 2588|  6.20k|    case MFF_ICMPV6_CODE:
  ------------------
  |  Branch (2588:5): [True: 243, False: 70.9k]
  ------------------
 2589|  6.20k|    case MFF_ND_RESERVED:
  ------------------
  |  Branch (2589:5): [True: 0, False: 71.1k]
  ------------------
 2590|  6.20k|    case MFF_ND_OPTIONS_TYPE:
  ------------------
  |  Branch (2590:5): [True: 0, False: 71.1k]
  ------------------
 2591|  6.20k|        return OFPUTIL_P_NONE;
  ------------------
  |  |   53|  6.20k|#define OFPUTIL_P_NONE 0
  ------------------
 2592|       |
 2593|    223|    case MFF_DP_HASH:
  ------------------
  |  Branch (2593:5): [True: 223, False: 70.9k]
  ------------------
 2594|    223|        match_set_dp_hash_masked(match, ntohl(value->be32), ntohl(mask->be32));
 2595|    223|        break;
 2596|    318|    case MFF_TUN_ID:
  ------------------
  |  Branch (2596:5): [True: 318, False: 70.8k]
  ------------------
 2597|    318|        match_set_tun_id_masked(match, value->be64, mask->be64);
 2598|    318|        break;
 2599|    227|    case MFF_TUN_SRC:
  ------------------
  |  Branch (2599:5): [True: 227, False: 70.9k]
  ------------------
 2600|    227|        match_set_tun_src_masked(match, value->be32, mask->be32);
 2601|    227|        break;
 2602|    306|    case MFF_TUN_DST:
  ------------------
  |  Branch (2602:5): [True: 306, False: 70.8k]
  ------------------
 2603|    306|        match_set_tun_dst_masked(match, value->be32, mask->be32);
 2604|    306|        break;
 2605|    114|    case MFF_TUN_IPV6_SRC:
  ------------------
  |  Branch (2605:5): [True: 114, False: 71.0k]
  ------------------
 2606|    114|        match_set_tun_ipv6_src_masked(match, &value->ipv6, &mask->ipv6);
 2607|    114|        break;
 2608|    235|    case MFF_TUN_IPV6_DST:
  ------------------
  |  Branch (2608:5): [True: 235, False: 70.9k]
  ------------------
 2609|    235|        match_set_tun_ipv6_dst_masked(match, &value->ipv6, &mask->ipv6);
 2610|    235|        break;
 2611|    266|    case MFF_TUN_FLAGS:
  ------------------
  |  Branch (2611:5): [True: 266, False: 70.9k]
  ------------------
 2612|    266|        match_set_tun_flags_masked(match, ntohs(value->be16), ntohs(mask->be16));
 2613|    266|        break;
 2614|    283|    case MFF_TUN_GBP_ID:
  ------------------
  |  Branch (2614:5): [True: 283, False: 70.9k]
  ------------------
 2615|    283|        match_set_tun_gbp_id_masked(match, value->be16, mask->be16);
 2616|    283|        break;
 2617|    393|    case MFF_TUN_GBP_FLAGS:
  ------------------
  |  Branch (2617:5): [True: 393, False: 70.7k]
  ------------------
 2618|    393|        match_set_tun_gbp_flags_masked(match, value->u8, mask->u8);
 2619|    393|        break;
 2620|    255|    case MFF_TUN_TTL:
  ------------------
  |  Branch (2620:5): [True: 255, False: 70.9k]
  ------------------
 2621|    255|        match_set_tun_ttl_masked(match, value->u8, mask->u8);
 2622|    255|        break;
 2623|  2.34k|    case MFF_TUN_TOS:
  ------------------
  |  Branch (2623:5): [True: 2.34k, False: 68.8k]
  ------------------
 2624|  2.34k|        match_set_tun_tos_masked(match, value->u8, mask->u8);
 2625|  2.34k|        break;
 2626|    226|    case MFF_TUN_ERSPAN_VER:
  ------------------
  |  Branch (2626:5): [True: 226, False: 70.9k]
  ------------------
 2627|    226|        match_set_tun_erspan_ver_masked(match, value->u8, mask->u8);
 2628|    226|        break;
 2629|    258|    case MFF_TUN_ERSPAN_IDX:
  ------------------
  |  Branch (2629:5): [True: 258, False: 70.9k]
  ------------------
 2630|    258|        match_set_tun_erspan_idx_masked(match, ntohl(value->be32),
 2631|    258|                                        ntohl(mask->be32));
 2632|    258|        break;
 2633|    130|    case MFF_TUN_ERSPAN_DIR:
  ------------------
  |  Branch (2633:5): [True: 130, False: 71.0k]
  ------------------
 2634|    130|        match_set_tun_erspan_dir_masked(match, value->u8, mask->u8);
 2635|    130|        break;
 2636|      0|    case MFF_TUN_ERSPAN_HWID:
  ------------------
  |  Branch (2636:5): [True: 0, False: 71.1k]
  ------------------
 2637|      0|        match_set_tun_erspan_hwid_masked(match, value->u8, mask->u8);
 2638|      0|        break;
 2639|    275|    case MFF_TUN_GTPU_FLAGS:
  ------------------
  |  Branch (2639:5): [True: 275, False: 70.9k]
  ------------------
 2640|    275|        match_set_tun_gtpu_flags_masked(match, value->u8, mask->u8);
 2641|    275|        break;
 2642|      0|    case MFF_TUN_GTPU_MSGTYPE:
  ------------------
  |  Branch (2642:5): [True: 0, False: 71.1k]
  ------------------
 2643|      0|        match_set_tun_gtpu_msgtype_masked(match, value->u8, mask->u8);
 2644|      0|        break;
 2645|  17.2k|    CASE_MFF_TUN_METADATA:
  ------------------
  |  | 2110|    445|    case MFF_TUN_METADATA0: case MFF_TUN_METADATA1:   \
  |  |  ------------------
  |  |  |  Branch (2110:5): [True: 213, False: 70.9k]
  |  |  |  Branch (2110:29): [True: 232, False: 70.9k]
  |  |  ------------------
  |  | 2111|  1.13k|    case MFF_TUN_METADATA2: case MFF_TUN_METADATA3:   \
  |  |  ------------------
  |  |  |  Branch (2111:5): [True: 243, False: 70.9k]
  |  |  |  Branch (2111:29): [True: 447, False: 70.7k]
  |  |  ------------------
  |  | 2112|  1.74k|    case MFF_TUN_METADATA4: case MFF_TUN_METADATA5:   \
  |  |  ------------------
  |  |  |  Branch (2112:5): [True: 393, False: 70.7k]
  |  |  |  Branch (2112:29): [True: 212, False: 70.9k]
  |  |  ------------------
  |  | 2113|  2.10k|    case MFF_TUN_METADATA6: case MFF_TUN_METADATA7:   \
  |  |  ------------------
  |  |  |  Branch (2113:5): [True: 79, False: 71.1k]
  |  |  |  Branch (2113:29): [True: 285, False: 70.9k]
  |  |  ------------------
  |  | 2114|  2.75k|    case MFF_TUN_METADATA8: case MFF_TUN_METADATA9:   \
  |  |  ------------------
  |  |  |  Branch (2114:5): [True: 326, False: 70.8k]
  |  |  |  Branch (2114:29): [True: 320, False: 70.8k]
  |  |  ------------------
  |  | 2115|  3.42k|    case MFF_TUN_METADATA10: case MFF_TUN_METADATA11: \
  |  |  ------------------
  |  |  |  Branch (2115:5): [True: 212, False: 70.9k]
  |  |  |  Branch (2115:30): [True: 460, False: 70.7k]
  |  |  ------------------
  |  | 2116|  3.89k|    case MFF_TUN_METADATA12: case MFF_TUN_METADATA13: \
  |  |  ------------------
  |  |  |  Branch (2116:5): [True: 200, False: 70.9k]
  |  |  |  Branch (2116:30): [True: 277, False: 70.9k]
  |  |  ------------------
  |  | 2117|  4.31k|    case MFF_TUN_METADATA14: case MFF_TUN_METADATA15: \
  |  |  ------------------
  |  |  |  Branch (2117:5): [True: 217, False: 70.9k]
  |  |  |  Branch (2117:30): [True: 200, False: 70.9k]
  |  |  ------------------
  |  | 2118|  4.75k|    case MFF_TUN_METADATA16: case MFF_TUN_METADATA17: \
  |  |  ------------------
  |  |  |  Branch (2118:5): [True: 228, False: 70.9k]
  |  |  |  Branch (2118:30): [True: 207, False: 70.9k]
  |  |  ------------------
  |  | 2119|  5.16k|    case MFF_TUN_METADATA18: case MFF_TUN_METADATA19: \
  |  |  ------------------
  |  |  |  Branch (2119:5): [True: 217, False: 70.9k]
  |  |  |  Branch (2119:30): [True: 197, False: 70.9k]
  |  |  ------------------
  |  | 2120|  5.91k|    case MFF_TUN_METADATA20: case MFF_TUN_METADATA21: \
  |  |  ------------------
  |  |  |  Branch (2120:5): [True: 325, False: 70.8k]
  |  |  |  Branch (2120:30): [True: 429, False: 70.7k]
  |  |  ------------------
  |  | 2121|  6.50k|    case MFF_TUN_METADATA22: case MFF_TUN_METADATA23: \
  |  |  ------------------
  |  |  |  Branch (2121:5): [True: 280, False: 70.9k]
  |  |  |  Branch (2121:30): [True: 310, False: 70.8k]
  |  |  ------------------
  |  | 2122|  7.09k|    case MFF_TUN_METADATA24: case MFF_TUN_METADATA25: \
  |  |  ------------------
  |  |  |  Branch (2122:5): [True: 353, False: 70.8k]
  |  |  |  Branch (2122:30): [True: 235, False: 70.9k]
  |  |  ------------------
  |  | 2123|  7.61k|    case MFF_TUN_METADATA26: case MFF_TUN_METADATA27: \
  |  |  ------------------
  |  |  |  Branch (2123:5): [True: 243, False: 70.9k]
  |  |  |  Branch (2123:30): [True: 275, False: 70.9k]
  |  |  ------------------
  |  | 2124|  8.03k|    case MFF_TUN_METADATA28: case MFF_TUN_METADATA29: \
  |  |  ------------------
  |  |  |  Branch (2124:5): [True: 219, False: 70.9k]
  |  |  |  Branch (2124:30): [True: 198, False: 70.9k]
  |  |  ------------------
  |  | 2125|  8.59k|    case MFF_TUN_METADATA30: case MFF_TUN_METADATA31: \
  |  |  ------------------
  |  |  |  Branch (2125:5): [True: 340, False: 70.8k]
  |  |  |  Branch (2125:30): [True: 223, False: 70.9k]
  |  |  ------------------
  |  | 2126|  9.38k|    case MFF_TUN_METADATA32: case MFF_TUN_METADATA33: \
  |  |  ------------------
  |  |  |  Branch (2126:5): [True: 525, False: 70.6k]
  |  |  |  Branch (2126:30): [True: 267, False: 70.9k]
  |  |  ------------------
  |  | 2127|  10.0k|    case MFF_TUN_METADATA34: case MFF_TUN_METADATA35: \
  |  |  ------------------
  |  |  |  Branch (2127:5): [True: 233, False: 70.9k]
  |  |  |  Branch (2127:30): [True: 393, False: 70.7k]
  |  |  ------------------
  |  | 2128|  10.4k|    case MFF_TUN_METADATA36: case MFF_TUN_METADATA37: \
  |  |  ------------------
  |  |  |  Branch (2128:5): [True: 243, False: 70.9k]
  |  |  |  Branch (2128:30): [True: 237, False: 70.9k]
  |  |  ------------------
  |  | 2129|  11.0k|    case MFF_TUN_METADATA38: case MFF_TUN_METADATA39: \
  |  |  ------------------
  |  |  |  Branch (2129:5): [True: 260, False: 70.9k]
  |  |  |  Branch (2129:30): [True: 264, False: 70.9k]
  |  |  ------------------
  |  | 2130|  11.4k|    case MFF_TUN_METADATA40: case MFF_TUN_METADATA41: \
  |  |  ------------------
  |  |  |  Branch (2130:5): [True: 216, False: 70.9k]
  |  |  |  Branch (2130:30): [True: 200, False: 70.9k]
  |  |  ------------------
  |  | 2131|  12.1k|    case MFF_TUN_METADATA42: case MFF_TUN_METADATA43: \
  |  |  ------------------
  |  |  |  Branch (2131:5): [True: 521, False: 70.6k]
  |  |  |  Branch (2131:30): [True: 202, False: 70.9k]
  |  |  ------------------
  |  | 2132|  12.8k|    case MFF_TUN_METADATA44: case MFF_TUN_METADATA45: \
  |  |  ------------------
  |  |  |  Branch (2132:5): [True: 486, False: 70.7k]
  |  |  |  Branch (2132:30): [True: 202, False: 70.9k]
  |  |  ------------------
  |  | 2133|  13.2k|    case MFF_TUN_METADATA46: case MFF_TUN_METADATA47: \
  |  |  ------------------
  |  |  |  Branch (2133:5): [True: 244, False: 70.9k]
  |  |  |  Branch (2133:30): [True: 195, False: 70.9k]
  |  |  ------------------
  |  | 2134|  13.7k|    case MFF_TUN_METADATA48: case MFF_TUN_METADATA49: \
  |  |  ------------------
  |  |  |  Branch (2134:5): [True: 290, False: 70.9k]
  |  |  |  Branch (2134:30): [True: 204, False: 70.9k]
  |  |  ------------------
  |  | 2135|  14.2k|    case MFF_TUN_METADATA50: case MFF_TUN_METADATA51: \
  |  |  ------------------
  |  |  |  Branch (2135:5): [True: 322, False: 70.8k]
  |  |  |  Branch (2135:30): [True: 137, False: 71.0k]
  |  |  ------------------
  |  | 2136|  14.6k|    case MFF_TUN_METADATA52: case MFF_TUN_METADATA53: \
  |  |  ------------------
  |  |  |  Branch (2136:5): [True: 206, False: 70.9k]
  |  |  |  Branch (2136:30): [True: 196, False: 70.9k]
  |  |  ------------------
  |  | 2137|  15.2k|    case MFF_TUN_METADATA54: case MFF_TUN_METADATA55: \
  |  |  ------------------
  |  |  |  Branch (2137:5): [True: 280, False: 70.9k]
  |  |  |  Branch (2137:30): [True: 347, False: 70.8k]
  |  |  ------------------
  |  | 2138|  15.8k|    case MFF_TUN_METADATA56: case MFF_TUN_METADATA57: \
  |  |  ------------------
  |  |  |  Branch (2138:5): [True: 262, False: 70.9k]
  |  |  |  Branch (2138:30): [True: 300, False: 70.8k]
  |  |  ------------------
  |  | 2139|  16.3k|    case MFF_TUN_METADATA58: case MFF_TUN_METADATA59: \
  |  |  ------------------
  |  |  |  Branch (2139:5): [True: 208, False: 70.9k]
  |  |  |  Branch (2139:30): [True: 301, False: 70.8k]
  |  |  ------------------
  |  | 2140|  16.8k|    case MFF_TUN_METADATA60: case MFF_TUN_METADATA61: \
  |  |  ------------------
  |  |  |  Branch (2140:5): [True: 293, False: 70.8k]
  |  |  |  Branch (2140:30): [True: 254, False: 70.9k]
  |  |  ------------------
  |  | 2141|  17.2k|    case MFF_TUN_METADATA62: case MFF_TUN_METADATA63
  |  |  ------------------
  |  |  |  Branch (2141:5): [True: 210, False: 70.9k]
  |  |  ------------------
  ------------------
 2646|  17.2k|        tun_metadata_set_match(mf, value, mask, match, err_str);
 2647|  17.2k|        break;
 2648|       |
 2649|    282|    case MFF_METADATA:
  ------------------
  |  Branch (2649:5): [True: 282, False: 70.9k]
  ------------------
 2650|    282|        match_set_metadata_masked(match, value->be64, mask->be64);
 2651|    282|        break;
 2652|       |
 2653|  13.3k|    CASE_MFF_REGS:
  ------------------
  |  | 2065|  1.98k|    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3:     \
  |  |  ------------------
  |  |  |  Branch (2065:5): [True: 317, False: 70.8k]
  |  |  |  Branch (2065:20): [True: 546, False: 70.6k]
  |  |  |  Branch (2065:35): [True: 514, False: 70.6k]
  |  |  |  Branch (2065:50): [True: 603, False: 70.5k]
  |  |  ------------------
  |  | 2066|  3.98k|    case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7:     \
  |  |  ------------------
  |  |  |  Branch (2066:5): [True: 604, False: 70.5k]
  |  |  |  Branch (2066:20): [True: 738, False: 70.4k]
  |  |  |  Branch (2066:35): [True: 244, False: 70.9k]
  |  |  |  Branch (2066:50): [True: 419, False: 70.7k]
  |  |  ------------------
  |  | 2067|  5.38k|    case MFF_REG8: case MFF_REG9: case MFF_REG10: case MFF_REG11:   \
  |  |  ------------------
  |  |  |  Branch (2067:5): [True: 227, False: 70.9k]
  |  |  |  Branch (2067:20): [True: 556, False: 70.6k]
  |  |  |  Branch (2067:35): [True: 345, False: 70.8k]
  |  |  |  Branch (2067:51): [True: 275, False: 70.9k]
  |  |  ------------------
  |  | 2068|  6.47k|    case MFF_REG12: case MFF_REG13: case MFF_REG14: case MFF_REG15: \
  |  |  ------------------
  |  |  |  Branch (2068:5): [True: 240, False: 70.9k]
  |  |  |  Branch (2068:21): [True: 287, False: 70.9k]
  |  |  |  Branch (2068:37): [True: 228, False: 70.9k]
  |  |  |  Branch (2068:53): [True: 332, False: 70.8k]
  |  |  ------------------
  |  | 2069|  9.57k|    case MFF_REG16: case MFF_REG17: case MFF_REG18: case MFF_REG19: \
  |  |  ------------------
  |  |  |  Branch (2069:5): [True: 254, False: 70.9k]
  |  |  |  Branch (2069:21): [True: 1.09k, False: 70.0k]
  |  |  |  Branch (2069:37): [True: 958, False: 70.2k]
  |  |  |  Branch (2069:53): [True: 795, False: 70.3k]
  |  |  ------------------
  |  | 2070|  11.1k|    case MFF_REG20: case MFF_REG21: case MFF_REG22: case MFF_REG23: \
  |  |  ------------------
  |  |  |  Branch (2070:5): [True: 497, False: 70.6k]
  |  |  |  Branch (2070:21): [True: 338, False: 70.8k]
  |  |  |  Branch (2070:37): [True: 404, False: 70.7k]
  |  |  |  Branch (2070:53): [True: 353, False: 70.8k]
  |  |  ------------------
  |  | 2071|  12.0k|    case MFF_REG24: case MFF_REG25: case MFF_REG26: case MFF_REG27: \
  |  |  ------------------
  |  |  |  Branch (2071:5): [True: 228, False: 70.9k]
  |  |  |  Branch (2071:21): [True: 212, False: 70.9k]
  |  |  |  Branch (2071:37): [True: 206, False: 70.9k]
  |  |  |  Branch (2071:53): [True: 253, False: 70.9k]
  |  |  ------------------
  |  | 2072|  13.3k|    case MFF_REG28: case MFF_REG29: case MFF_REG30: case MFF_REG31
  |  |  ------------------
  |  |  |  Branch (2072:5): [True: 220, False: 70.9k]
  |  |  |  Branch (2072:21): [True: 555, False: 70.6k]
  |  |  |  Branch (2072:37): [True: 197, False: 70.9k]
  |  |  ------------------
  ------------------
 2654|  13.3k|        match_set_reg_masked(match, mf->id - MFF_REG0,
 2655|  13.3k|                             ntohl(value->be32), ntohl(mask->be32));
 2656|  13.3k|        break;
 2657|       |
 2658|  5.04k|    CASE_MFF_XREGS:
  ------------------
  |  | 2081|  1.53k|    case MFF_XREG0: case MFF_XREG1: case MFF_XREG2: case MFF_XREG3:    \
  |  |  ------------------
  |  |  |  Branch (2081:5): [True: 591, False: 70.6k]
  |  |  |  Branch (2081:21): [True: 308, False: 70.8k]
  |  |  |  Branch (2081:37): [True: 294, False: 70.8k]
  |  |  |  Branch (2081:53): [True: 338, False: 70.8k]
  |  |  ------------------
  |  | 2082|  2.90k|    case MFF_XREG4: case MFF_XREG5: case MFF_XREG6: case MFF_XREG7:    \
  |  |  ------------------
  |  |  |  Branch (2082:5): [True: 369, False: 70.8k]
  |  |  |  Branch (2082:21): [True: 302, False: 70.8k]
  |  |  |  Branch (2082:37): [True: 358, False: 70.8k]
  |  |  |  Branch (2082:53): [True: 340, False: 70.8k]
  |  |  ------------------
  |  | 2083|  4.14k|    case MFF_XREG8: case MFF_XREG9: case MFF_XREG10: case MFF_XREG11:  \
  |  |  ------------------
  |  |  |  Branch (2083:5): [True: 226, False: 70.9k]
  |  |  |  Branch (2083:21): [True: 299, False: 70.8k]
  |  |  |  Branch (2083:37): [True: 304, False: 70.8k]
  |  |  |  Branch (2083:54): [True: 418, False: 70.7k]
  |  |  ------------------
  |  | 2084|  5.04k|    case MFF_XREG12: case MFF_XREG13: case MFF_XREG14: case MFF_XREG15
  |  |  ------------------
  |  |  |  Branch (2084:5): [True: 258, False: 70.9k]
  |  |  |  Branch (2084:22): [True: 222, False: 70.9k]
  |  |  |  Branch (2084:39): [True: 215, False: 70.9k]
  |  |  ------------------
  ------------------
 2659|  5.04k|        match_set_xreg_masked(match, mf->id - MFF_XREG0,
 2660|  5.04k|                              ntohll(value->be64), ntohll(mask->be64));
 2661|  5.04k|        break;
 2662|       |
 2663|  2.35k|    CASE_MFF_XXREGS: {
  ------------------
  |  | 2093|  1.07k|    case MFF_XXREG0: case MFF_XXREG1: case MFF_XXREG2: case MFF_XXREG3: \
  |  |  ------------------
  |  |  |  Branch (2093:5): [True: 240, False: 70.9k]
  |  |  |  Branch (2093:22): [True: 241, False: 70.9k]
  |  |  |  Branch (2093:39): [True: 275, False: 70.9k]
  |  |  |  Branch (2093:56): [True: 320, False: 70.8k]
  |  |  ------------------
  |  | 2094|  2.35k|    case MFF_XXREG4: case MFF_XXREG5: case MFF_XXREG6: case MFF_XXREG7
  |  |  ------------------
  |  |  |  Branch (2094:5): [True: 262, False: 70.9k]
  |  |  |  Branch (2094:22): [True: 268, False: 70.9k]
  |  |  |  Branch (2094:39): [True: 333, False: 70.8k]
  |  |  ------------------
  ------------------
 2664|  2.35k|        match_set_xxreg_masked(match, mf->id - MFF_XXREG0,
 2665|  2.35k|                ntoh128(value->be128), ntoh128(mask->be128));
 2666|  2.35k|        break;
 2667|  7.43k|    }
 2668|       |
 2669|    196|    case MFF_PKT_MARK:
  ------------------
  |  Branch (2669:5): [True: 196, False: 70.9k]
  ------------------
 2670|    196|        match_set_pkt_mark_masked(match, ntohl(value->be32),
 2671|    196|                                  ntohl(mask->be32));
 2672|    196|        break;
 2673|       |
 2674|    542|    case MFF_CT_STATE:
  ------------------
  |  Branch (2674:5): [True: 542, False: 70.6k]
  ------------------
 2675|    542|        match_set_ct_state_masked(match, ntohl(value->be32), ntohl(mask->be32));
 2676|    542|        break;
 2677|       |
 2678|  2.01k|    case MFF_CT_MARK:
  ------------------
  |  Branch (2678:5): [True: 2.01k, False: 69.1k]
  ------------------
 2679|  2.01k|        match_set_ct_mark_masked(match, ntohl(value->be32), ntohl(mask->be32));
 2680|  2.01k|        break;
 2681|       |
 2682|    273|    case MFF_CT_LABEL:
  ------------------
  |  Branch (2682:5): [True: 273, False: 70.9k]
  ------------------
 2683|    273|        match_set_ct_label_masked(match, ntoh128(value->be128),
 2684|    273|                                  ntoh128(mask->be128));
 2685|    273|        break;
 2686|       |
 2687|    245|    case MFF_CT_NW_SRC:
  ------------------
  |  Branch (2687:5): [True: 245, False: 70.9k]
  ------------------
 2688|    245|        match_set_ct_nw_src_masked(match, value->be32, mask->be32);
 2689|    245|        break;
 2690|       |
 2691|    936|    case MFF_CT_NW_DST:
  ------------------
  |  Branch (2691:5): [True: 936, False: 70.2k]
  ------------------
 2692|    936|        match_set_ct_nw_dst_masked(match, value->be32, mask->be32);
 2693|    936|        break;
 2694|       |
 2695|    194|    case MFF_CT_IPV6_SRC:
  ------------------
  |  Branch (2695:5): [True: 194, False: 70.9k]
  ------------------
 2696|    194|        match_set_ct_ipv6_src_masked(match, &value->ipv6, &mask->ipv6);
 2697|    194|        break;
 2698|       |
 2699|    278|    case MFF_CT_IPV6_DST:
  ------------------
  |  Branch (2699:5): [True: 278, False: 70.9k]
  ------------------
 2700|    278|        match_set_ct_ipv6_dst_masked(match, &value->ipv6, &mask->ipv6);
 2701|    278|        break;
 2702|       |
 2703|    194|    case MFF_CT_TP_SRC:
  ------------------
  |  Branch (2703:5): [True: 194, False: 70.9k]
  ------------------
 2704|    194|        match_set_ct_tp_src_masked(match, value->be16, mask->be16);
 2705|    194|        break;
 2706|       |
 2707|    260|    case MFF_CT_TP_DST:
  ------------------
  |  Branch (2707:5): [True: 260, False: 70.9k]
  ------------------
 2708|    260|        match_set_ct_tp_dst_masked(match, value->be16, mask->be16);
 2709|    260|        break;
 2710|       |
 2711|    264|    case MFF_ETH_DST:
  ------------------
  |  Branch (2711:5): [True: 264, False: 70.9k]
  ------------------
 2712|    264|        match_set_dl_dst_masked(match, value->mac, mask->mac);
 2713|    264|        break;
 2714|       |
 2715|    451|    case MFF_ETH_SRC:
  ------------------
  |  Branch (2715:5): [True: 451, False: 70.7k]
  ------------------
 2716|    451|        match_set_dl_src_masked(match, value->mac, mask->mac);
 2717|    451|        break;
 2718|       |
 2719|    557|    case MFF_ARP_SHA:
  ------------------
  |  Branch (2719:5): [True: 557, False: 70.6k]
  ------------------
 2720|    827|    case MFF_ND_SLL:
  ------------------
  |  Branch (2720:5): [True: 270, False: 70.9k]
  ------------------
 2721|    827|        match_set_arp_sha_masked(match, value->mac, mask->mac);
 2722|    827|        break;
 2723|       |
 2724|    343|    case MFF_ARP_THA:
  ------------------
  |  Branch (2724:5): [True: 343, False: 70.8k]
  ------------------
 2725|    610|    case MFF_ND_TLL:
  ------------------
  |  Branch (2725:5): [True: 267, False: 70.9k]
  ------------------
 2726|    610|        match_set_arp_tha_masked(match, value->mac, mask->mac);
 2727|    610|        break;
 2728|       |
 2729|    210|    case MFF_VLAN_TCI:
  ------------------
  |  Branch (2729:5): [True: 210, False: 70.9k]
  ------------------
 2730|    210|        match_set_dl_tci_masked(match, value->be16, mask->be16);
 2731|    210|        break;
 2732|       |
 2733|    260|    case MFF_VLAN_VID:
  ------------------
  |  Branch (2733:5): [True: 260, False: 70.9k]
  ------------------
 2734|    260|        match_set_vlan_vid_masked(match, value->be16, mask->be16);
 2735|    260|        break;
 2736|       |
 2737|    308|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (2737:5): [True: 308, False: 70.8k]
  ------------------
 2738|    308|        match_set_nw_src_masked(match, value->be32, mask->be32);
 2739|    308|        break;
 2740|       |
 2741|    525|    case MFF_IPV4_DST:
  ------------------
  |  Branch (2741:5): [True: 525, False: 70.6k]
  ------------------
 2742|    525|        match_set_nw_dst_masked(match, value->be32, mask->be32);
 2743|    525|        break;
 2744|       |
 2745|    412|    case MFF_IPV6_SRC:
  ------------------
  |  Branch (2745:5): [True: 412, False: 70.7k]
  ------------------
 2746|    412|        match_set_ipv6_src_masked(match, &value->ipv6, &mask->ipv6);
 2747|    412|        break;
 2748|       |
 2749|    648|    case MFF_IPV6_DST:
  ------------------
  |  Branch (2749:5): [True: 648, False: 70.5k]
  ------------------
 2750|    648|        match_set_ipv6_dst_masked(match, &value->ipv6, &mask->ipv6);
 2751|    648|        break;
 2752|       |
 2753|    606|    case MFF_IPV6_LABEL:
  ------------------
  |  Branch (2753:5): [True: 606, False: 70.5k]
  ------------------
 2754|    606|        if ((mask->be32 & htonl(IPV6_LABEL_MASK)) == htonl(IPV6_LABEL_MASK)) {
  ------------------
  |  Branch (2754:13): [True: 384, False: 222]
  ------------------
 2755|    384|            mf_set_value(mf, value, match, err_str);
 2756|    384|        } else {
 2757|    222|            match_set_ipv6_label_masked(match, value->be32, mask->be32);
 2758|    222|        }
 2759|    606|        break;
 2760|       |
 2761|    264|    case MFF_ND_TARGET:
  ------------------
  |  Branch (2761:5): [True: 264, False: 70.9k]
  ------------------
 2762|    264|        match_set_nd_target_masked(match, &value->ipv6, &mask->ipv6);
 2763|    264|        break;
 2764|       |
 2765|    367|    case MFF_IP_FRAG:
  ------------------
  |  Branch (2765:5): [True: 367, False: 70.8k]
  ------------------
 2766|    367|        match_set_nw_frag_masked(match, value->u8,
 2767|    367|                                 mask->u8 & FLOW_NW_FRAG_MASK);
  ------------------
  |  |   56|    367|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    367|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    367|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 2768|    367|        break;
 2769|       |
 2770|    447|    case MFF_ARP_SPA:
  ------------------
  |  Branch (2770:5): [True: 447, False: 70.7k]
  ------------------
 2771|    447|        match_set_nw_src_masked(match, value->be32, mask->be32);
 2772|    447|        break;
 2773|       |
 2774|    927|    case MFF_ARP_TPA:
  ------------------
  |  Branch (2774:5): [True: 927, False: 70.2k]
  ------------------
 2775|    927|        match_set_nw_dst_masked(match, value->be32, mask->be32);
 2776|    927|        break;
 2777|       |
 2778|    468|    case MFF_TCP_SRC:
  ------------------
  |  Branch (2778:5): [True: 468, False: 70.7k]
  ------------------
 2779|    830|    case MFF_UDP_SRC:
  ------------------
  |  Branch (2779:5): [True: 362, False: 70.8k]
  ------------------
 2780|  1.16k|    case MFF_SCTP_SRC:
  ------------------
  |  Branch (2780:5): [True: 339, False: 70.8k]
  ------------------
 2781|  1.16k|        match_set_tp_src_masked(match, value->be16, mask->be16);
 2782|  1.16k|        break;
 2783|       |
 2784|    256|    case MFF_TCP_DST:
  ------------------
  |  Branch (2784:5): [True: 256, False: 70.9k]
  ------------------
 2785|    451|    case MFF_UDP_DST:
  ------------------
  |  Branch (2785:5): [True: 195, False: 70.9k]
  ------------------
 2786|    796|    case MFF_SCTP_DST:
  ------------------
  |  Branch (2786:5): [True: 345, False: 70.8k]
  ------------------
 2787|    796|        match_set_tp_dst_masked(match, value->be16, mask->be16);
 2788|    796|        break;
 2789|       |
 2790|    480|    case MFF_TCP_FLAGS:
  ------------------
  |  Branch (2790:5): [True: 480, False: 70.7k]
  ------------------
 2791|    480|        match_set_tcp_flags_masked(match, value->be16, mask->be16);
 2792|    480|        break;
 2793|       |
 2794|    203|    case MFF_NSH_FLAGS:
  ------------------
  |  Branch (2794:5): [True: 203, False: 70.9k]
  ------------------
 2795|    203|        MATCH_SET_FIELD_MASKED(match, nsh.flags, value->u8, mask->u8);
  ------------------
  |  |   50|    203|    do {                                                      \
  |  |   51|    203|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    203|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    203|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 203]
  |  |  ------------------
  ------------------
 2796|    203|        break;
 2797|    391|    case MFF_NSH_TTL:
  ------------------
  |  Branch (2797:5): [True: 391, False: 70.8k]
  ------------------
 2798|    391|        MATCH_SET_FIELD_MASKED(match, nsh.ttl, value->u8, mask->u8);
  ------------------
  |  |   50|    391|    do {                                                      \
  |  |   51|    391|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    391|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    391|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 391]
  |  |  ------------------
  ------------------
 2799|    391|        break;
 2800|    795|    case MFF_NSH_MDTYPE:
  ------------------
  |  Branch (2800:5): [True: 795, False: 70.3k]
  ------------------
 2801|    795|        MATCH_SET_FIELD_MASKED(match, nsh.mdtype, value->u8, mask->u8);
  ------------------
  |  |   50|    795|    do {                                                      \
  |  |   51|    795|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    795|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    795|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 795]
  |  |  ------------------
  ------------------
 2802|    795|        break;
 2803|    272|    case MFF_NSH_NP:
  ------------------
  |  Branch (2803:5): [True: 272, False: 70.9k]
  ------------------
 2804|    272|        MATCH_SET_FIELD_MASKED(match, nsh.np, value->u8, mask->u8);
  ------------------
  |  |   50|    272|    do {                                                      \
  |  |   51|    272|        (match)->wc.masks.field = (msk);                      \
  |  |   52|    272|        (match)->flow.field = (value) & (msk);                \
  |  |   53|    272|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 272]
  |  |  ------------------
  ------------------
 2805|    272|        break;
 2806|    758|    case MFF_NSH_SPI:
  ------------------
  |  Branch (2806:5): [True: 758, False: 70.4k]
  ------------------
 2807|    758|        match->wc.masks.nsh.path_hdr |= mask->be32;
 2808|    758|        nsh_path_hdr_set_spi(&match->flow.nsh.path_hdr,
 2809|    758|                             value->be32 & mask->be32);
 2810|    758|        break;
 2811|    361|    case MFF_NSH_SI:
  ------------------
  |  Branch (2811:5): [True: 361, False: 70.8k]
  ------------------
 2812|    361|        match->wc.masks.nsh.path_hdr |= htonl(mask->u8);
 2813|    361|        nsh_path_hdr_set_si(&match->flow.nsh.path_hdr,
 2814|    361|                             value->u8 & mask->u8);
 2815|    361|        break;
 2816|  2.25k|    case MFF_NSH_C1:
  ------------------
  |  Branch (2816:5): [True: 2.25k, False: 68.9k]
  ------------------
 2817|  2.61k|    case MFF_NSH_C2:
  ------------------
  |  Branch (2817:5): [True: 362, False: 70.8k]
  ------------------
 2818|  2.82k|    case MFF_NSH_C3:
  ------------------
  |  Branch (2818:5): [True: 211, False: 70.9k]
  ------------------
 2819|  3.36k|    case MFF_NSH_C4:
  ------------------
  |  Branch (2819:5): [True: 535, False: 70.6k]
  ------------------
 2820|  3.36k|        MATCH_SET_FIELD_MASKED(match, nsh.context[mf->id - MFF_NSH_C1],
  ------------------
  |  |   50|  3.36k|    do {                                                      \
  |  |   51|  3.36k|        (match)->wc.masks.field = (msk);                      \
  |  |   52|  3.36k|        (match)->flow.field = (value) & (msk);                \
  |  |   53|  3.36k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (53:14): [Folded, False: 3.36k]
  |  |  ------------------
  ------------------
 2821|  3.36k|                               value->be32, mask->be32);
 2822|  3.36k|        break;
 2823|       |
 2824|      0|    case MFF_N_IDS:
  ------------------
  |  Branch (2824:5): [True: 0, False: 71.1k]
  ------------------
 2825|      0|    default:
  ------------------
  |  Branch (2825:5): [True: 0, False: 71.1k]
  ------------------
 2826|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 2827|  71.1k|    }
 2828|       |
 2829|  64.9k|    return ((mf->usable_protocols_bitwise == mf->usable_protocols_cidr
  ------------------
  |  Branch (2829:14): [True: 62.7k, False: 2.20k]
  ------------------
 2830|  2.20k|             || ip_is_cidr(mask->be32))
  ------------------
  |  Branch (2830:17): [True: 402, False: 1.80k]
  ------------------
 2831|  64.9k|            ? mf->usable_protocols_cidr
 2832|  64.9k|            : mf->usable_protocols_bitwise);
 2833|  71.1k|}
mf_check_src:
 2948|  58.9k|{
 2949|  58.9k|    return mf_check__(sf, match, "source");
 2950|  58.9k|}
mf_check_dst:
 2957|  3.22k|{
 2958|  3.22k|    int error = mf_check__(sf, match, "destination");
 2959|  3.22k|    if (!error && !sf->field->writable) {
  ------------------
  |  Branch (2959:9): [True: 3.03k, False: 182]
  |  Branch (2959:19): [True: 2, False: 3.03k]
  ------------------
 2960|      2|        VLOG_WARN_RL(&rl, "destination field %s is not writable",
  ------------------
  |  |  224|      2|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      2|    do {                                                                \
  |  |  |  |  288|      2|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      2|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2961|      2|                     sf->field->name);
 2962|      2|        return OFPERR_OFPBAC_BAD_SET_ARGUMENT;
 2963|      2|    }
 2964|  3.21k|    return error;
 2965|  3.22k|}
mf_get:
 2972|   117k|{
 2973|   117k|    mf_get_value(mf, &match->flow, value);
 2974|   117k|    mf_get_mask(mf, &match->wc, mask);
 2975|   117k|}
mf_parse:
 3231|   169k|{
 3232|   169k|    char *error;
 3233|       |
 3234|   169k|    if (!strcmp(s, "*")) {
  ------------------
  |  Branch (3234:9): [True: 30.4k, False: 139k]
  ------------------
 3235|  30.4k|        memset(value, 0, mf->n_bytes);
 3236|  30.4k|        memset(mask, 0, mf->n_bytes);
 3237|  30.4k|        return NULL;
 3238|  30.4k|    }
 3239|       |
 3240|   139k|    switch (mf->string) {
 3241|  21.5k|    case MFS_DECIMAL:
  ------------------
  |  Branch (3241:5): [True: 21.5k, False: 117k]
  ------------------
 3242|   128k|    case MFS_HEXADECIMAL:
  ------------------
  |  Branch (3242:5): [True: 106k, False: 32.3k]
  ------------------
 3243|   128k|        error = mf_from_integer_string(mf, s,
 3244|   128k|                                       (uint8_t *) value, (uint8_t *) mask);
 3245|   128k|        break;
 3246|       |
 3247|  1.46k|    case MFS_CT_STATE:
  ------------------
  |  Branch (3247:5): [True: 1.46k, False: 137k]
  ------------------
 3248|  1.46k|        ovs_assert(mf->n_bytes == sizeof(ovs_be32));
  ------------------
  |  |   62|  1.46k|#define ovs_assert ovs_ignore
  ------------------
 3249|  1.46k|        error = mf_from_ct_state_string(s, &value->be32, &mask->be32);
 3250|  1.46k|        break;
 3251|       |
 3252|    680|    case MFS_ETHERNET:
  ------------------
  |  Branch (3252:5): [True: 680, False: 138k]
  ------------------
 3253|    680|        error = mf_from_ethernet_string(mf, s, &value->mac, &mask->mac);
 3254|    680|        break;
 3255|       |
 3256|  2.08k|    case MFS_IPV4:
  ------------------
  |  Branch (3256:5): [True: 2.08k, False: 137k]
  ------------------
 3257|  2.08k|        error = mf_from_ipv4_string(mf, s, &value->be32, &mask->be32);
 3258|  2.08k|        break;
 3259|       |
 3260|  2.54k|    case MFS_IPV6:
  ------------------
  |  Branch (3260:5): [True: 2.54k, False: 136k]
  ------------------
 3261|  2.54k|        error = mf_from_ipv6_string(mf, s, &value->ipv6, &mask->ipv6);
 3262|  2.54k|        break;
 3263|       |
 3264|    598|    case MFS_OFP_PORT:
  ------------------
  |  Branch (3264:5): [True: 598, False: 138k]
  ------------------
 3265|    598|        error = mf_from_ofp_port_string(mf, s, port_map,
 3266|    598|                                        &value->be16, &mask->be16);
 3267|    598|        break;
 3268|       |
 3269|    363|    case MFS_OFP_PORT_OXM:
  ------------------
  |  Branch (3269:5): [True: 363, False: 138k]
  ------------------
 3270|    363|        error = mf_from_ofp_port_string32(mf, s, port_map,
 3271|    363|                                          &value->be32, &mask->be32);
 3272|    363|        break;
 3273|       |
 3274|    479|    case MFS_FRAG:
  ------------------
  |  Branch (3274:5): [True: 479, False: 138k]
  ------------------
 3275|    479|        error = mf_from_frag_string(s, &value->u8, &mask->u8);
 3276|    479|        break;
 3277|       |
 3278|    912|    case MFS_TNL_FLAGS:
  ------------------
  |  Branch (3278:5): [True: 912, False: 138k]
  ------------------
 3279|    912|        ovs_assert(mf->n_bytes == sizeof(ovs_be16));
  ------------------
  |  |   62|    912|#define ovs_assert ovs_ignore
  ------------------
 3280|    912|        error = mf_from_tun_flags_string(s, &value->be16, &mask->be16);
 3281|    912|        break;
 3282|       |
 3283|  1.09k|    case MFS_TCP_FLAGS:
  ------------------
  |  Branch (3283:5): [True: 1.09k, False: 138k]
  ------------------
 3284|  1.09k|        ovs_assert(mf->n_bytes == sizeof(ovs_be16));
  ------------------
  |  |   62|  1.09k|#define ovs_assert ovs_ignore
  ------------------
 3285|  1.09k|        error = mf_from_tcp_flags_string(s, &value->be16, &mask->be16);
 3286|  1.09k|        break;
 3287|       |
 3288|    657|    case MFS_PACKET_TYPE:
  ------------------
  |  Branch (3288:5): [True: 657, False: 138k]
  ------------------
 3289|    657|        ovs_assert(mf->n_bytes == sizeof(ovs_be32));
  ------------------
  |  |   62|    657|#define ovs_assert ovs_ignore
  ------------------
 3290|    657|        error = mf_from_packet_type_string(s, &value->be32);
 3291|    657|        mask->be32 = OVS_BE32_MAX;
  ------------------
  |  |   43|    657|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
 3292|    657|        break;
 3293|       |
 3294|      0|    default:
  ------------------
  |  Branch (3294:5): [True: 0, False: 139k]
  ------------------
 3295|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 3296|   139k|    }
 3297|       |
 3298|   139k|    if (!error && !mf_is_mask_valid(mf, mask)) {
  ------------------
  |  Branch (3298:9): [True: 138k, False: 677]
  |  Branch (3298:19): [True: 4, False: 138k]
  ------------------
 3299|      4|        error = xasprintf("%s: invalid mask for field %s", s, mf->name);
 3300|      4|    }
 3301|   139k|    return error;
 3302|   139k|}
mf_parse_value:
 3309|  37.1k|{
 3310|  37.1k|    union mf_value mask;
 3311|  37.1k|    char *error;
 3312|       |
 3313|  37.1k|    error = mf_parse(mf, s, port_map, value, &mask);
 3314|  37.1k|    if (error) {
  ------------------
  |  Branch (3314:9): [True: 11, False: 37.1k]
  ------------------
 3315|     11|        return error;
 3316|     11|    }
 3317|       |
 3318|  37.1k|    if (!is_all_ones((const uint8_t *) &mask, mf->n_bytes)) {
  ------------------
  |  Branch (3318:9): [True: 1, False: 37.1k]
  ------------------
 3319|      1|        return xasprintf("%s: wildcards not allowed here", s);
 3320|      1|    }
 3321|  37.1k|    return NULL;
 3322|  37.1k|}
mf_format:
 3401|    130|{
 3402|    130|    if (mask) {
  ------------------
  |  Branch (3402:9): [True: 0, False: 130]
  ------------------
 3403|      0|        if (is_all_zeros(mask, mf->n_bytes)) {
  ------------------
  |  Branch (3403:13): [True: 0, False: 0]
  ------------------
 3404|      0|            ds_put_cstr(s, "ANY");
 3405|      0|            return;
 3406|      0|        } else if (is_all_ones(mask, mf->n_bytes)) {
  ------------------
  |  Branch (3406:20): [True: 0, False: 0]
  ------------------
 3407|      0|            mask = NULL;
 3408|      0|        }
 3409|      0|    }
 3410|       |
 3411|    130|    switch (mf->string) {
 3412|     11|    case MFS_OFP_PORT_OXM:
  ------------------
  |  Branch (3412:5): [True: 11, False: 119]
  ------------------
 3413|     11|        if (!mask) {
  ------------------
  |  Branch (3413:13): [True: 11, False: 0]
  ------------------
 3414|     11|            ofp_port_t port;
 3415|     11|            ofputil_port_from_ofp11(value->be32, &port);
 3416|     11|            ofputil_format_port(port, port_map, s);
 3417|     11|            break;
 3418|     11|        }
 3419|       |        /* fall through */
 3420|     24|    case MFS_OFP_PORT:
  ------------------
  |  Branch (3420:5): [True: 24, False: 106]
  ------------------
 3421|     24|        if (!mask) {
  ------------------
  |  Branch (3421:13): [True: 24, False: 0]
  ------------------
 3422|     24|            ofputil_format_port(u16_to_ofp(ntohs(value->be16)), port_map, s);
 3423|     24|            break;
 3424|     24|        }
 3425|       |        /* fall through */
 3426|      4|    case MFS_DECIMAL:
  ------------------
  |  Branch (3426:5): [True: 4, False: 126]
  ------------------
 3427|     32|    case MFS_HEXADECIMAL:
  ------------------
  |  Branch (3427:5): [True: 28, False: 102]
  ------------------
 3428|     32|        mf_format_integer_string(mf, (uint8_t *) value, (uint8_t *) mask, s);
 3429|     32|        break;
 3430|       |
 3431|      1|    case MFS_CT_STATE:
  ------------------
  |  Branch (3431:5): [True: 1, False: 129]
  ------------------
 3432|      1|        mf_format_ct_state_string(value->be32,
 3433|      1|                                  mask ? mask->be32 : OVS_BE32_MAX, s);
  ------------------
  |  |   43|      1|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (3433:35): [True: 0, False: 1]
  ------------------
 3434|      1|        break;
 3435|       |
 3436|      1|    case MFS_ETHERNET:
  ------------------
  |  Branch (3436:5): [True: 1, False: 129]
  ------------------
 3437|      1|        eth_format_masked(value->mac, mask ? &mask->mac : NULL, s);
  ------------------
  |  Branch (3437:39): [True: 0, False: 1]
  ------------------
 3438|      1|        break;
 3439|       |
 3440|      1|    case MFS_IPV4:
  ------------------
  |  Branch (3440:5): [True: 1, False: 129]
  ------------------
 3441|      1|        ip_format_masked(value->be32, mask ? mask->be32 : OVS_BE32_MAX, s);
  ------------------
  |  |   43|      1|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (3441:39): [True: 0, False: 1]
  ------------------
 3442|      1|        break;
 3443|       |
 3444|      1|    case MFS_IPV6:
  ------------------
  |  Branch (3444:5): [True: 1, False: 129]
  ------------------
 3445|      1|        ipv6_format_masked(&value->ipv6, mask ? &mask->ipv6 : NULL, s);
  ------------------
  |  Branch (3445:42): [True: 0, False: 1]
  ------------------
 3446|      1|        break;
 3447|       |
 3448|      3|    case MFS_FRAG:
  ------------------
  |  Branch (3448:5): [True: 3, False: 127]
  ------------------
 3449|      3|        mf_format_frag_string(value->u8, mask ? mask->u8 : UINT8_MAX, s);
  ------------------
  |  Branch (3449:42): [True: 0, False: 3]
  ------------------
 3450|      3|        break;
 3451|       |
 3452|     16|    case MFS_TNL_FLAGS:
  ------------------
  |  Branch (3452:5): [True: 16, False: 114]
  ------------------
 3453|     16|        mf_format_tnl_flags_string(value->be16,
 3454|     16|                                   mask ? mask->be16 : OVS_BE16_MAX, s);
  ------------------
  |  |   42|     32|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  |  Branch (3454:36): [True: 0, False: 16]
  ------------------
 3455|     16|        break;
 3456|       |
 3457|      7|    case MFS_TCP_FLAGS:
  ------------------
  |  Branch (3457:5): [True: 7, False: 123]
  ------------------
 3458|      7|        mf_format_tcp_flags_string(value->be16,
 3459|      7|                                   mask ? mask->be16 : OVS_BE16_MAX, s);
  ------------------
  |  |   42|     14|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  |  Branch (3459:36): [True: 0, False: 7]
  ------------------
 3460|      7|        break;
 3461|       |
 3462|     33|    case MFS_PACKET_TYPE:
  ------------------
  |  Branch (3462:5): [True: 33, False: 97]
  ------------------
 3463|     33|        mf_format_packet_type_string(value->be32,
 3464|     33|                                     mask ? mask->be32 : OVS_BE32_MAX, s);
  ------------------
  |  |   43|     33|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (3464:38): [True: 0, False: 33]
  ------------------
 3465|     33|        break;
 3466|       |
 3467|      0|    default:
  ------------------
  |  Branch (3467:5): [True: 0, False: 130]
  ------------------
 3468|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 3469|    130|    }
 3470|    130|}
mf_write_subfield_value:
 3507|  52.7k|{
 3508|  52.7k|    const struct mf_field *field = sf->field;
 3509|  52.7k|    union mf_value value, mask;
 3510|  52.7k|    unsigned int size = DIV_ROUND_UP(sf->n_bits, 8);
  ------------------
  |  |  300|  52.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
 3511|       |
 3512|  52.7k|    mf_get(field, match, &value, &mask);
 3513|  52.7k|    bitwise_copy(src, size, 0, &value, field->n_bytes, sf->ofs, sf->n_bits);
 3514|  52.7k|    bitwise_one (              &mask,  field->n_bytes, sf->ofs, sf->n_bits);
 3515|       |    mf_set(field, &value, &mask, match, NULL);
 3516|  52.7k|}
meta-flow.c:nxm_init:
  121|   401k|{
  122|       |    static pthread_once_t once = PTHREAD_ONCE_INIT;
  123|   401k|    pthread_once(&once, nxm_do_init);
  124|   401k|}
meta-flow.c:nxm_do_init:
  103|      1|{
  104|      1|    int i;
  105|       |
  106|      1|    shash_init(&mf_by_name);
  107|    212|    for (i = 0; i < MFF_N_IDS; i++) {
  ------------------
  |  Branch (107:17): [True: 211, False: 1]
  ------------------
  108|    211|        const struct mf_field *mf = &mf_fields[i];
  109|       |
  110|    211|        ovs_assert(mf->id == i); /* Fields must be in the enum order. */
  ------------------
  |  |   62|    211|#define ovs_assert ovs_ignore
  ------------------
  111|       |
  112|    211|        shash_add_once(&mf_by_name, mf->name, mf);
  113|    211|        if (mf->extra_name) {
  ------------------
  |  Branch (113:13): [True: 17, False: 194]
  ------------------
  114|     17|            shash_add_once(&mf_by_name, mf->extra_name, mf);
  115|     17|        }
  116|    211|    }
  117|      1|}
meta-flow.c:mf_are_prereqs_ok__:
  444|  90.1k|{
  445|  90.1k|    ovs_be16 dl_type = get_dl_type(flow);
  446|       |
  447|  90.1k|    switch (mf->prereqs) {
  ------------------
  |  Branch (447:13): [True: 90.1k, False: 0]
  ------------------
  448|  78.0k|    case MFP_NONE:
  ------------------
  |  Branch (448:5): [True: 78.0k, False: 12.1k]
  ------------------
  449|  78.0k|        return true;
  450|  3.13k|    case MFP_ETHERNET:
  ------------------
  |  Branch (450:5): [True: 3.13k, False: 87.0k]
  ------------------
  451|  3.13k|        return is_ethernet(flow, wc);
  452|    358|    case MFP_ARP:
  ------------------
  |  Branch (452:5): [True: 358, False: 89.8k]
  ------------------
  453|    358|        return (dl_type == htons(ETH_TYPE_ARP) ||
  ------------------
  |  Branch (453:17): [True: 261, False: 97]
  ------------------
  454|     97|                dl_type == htons(ETH_TYPE_RARP));
  ------------------
  |  Branch (454:17): [True: 66, False: 31]
  ------------------
  455|    451|    case MFP_IPV4:
  ------------------
  |  Branch (455:5): [True: 451, False: 89.7k]
  ------------------
  456|    451|        return dl_type == htons(ETH_TYPE_IP);
  457|    252|    case MFP_IPV6:
  ------------------
  |  Branch (457:5): [True: 252, False: 89.9k]
  ------------------
  458|    252|        return dl_type == htons(ETH_TYPE_IPV6);
  459|    455|    case MFP_VLAN_VID:
  ------------------
  |  Branch (459:5): [True: 455, False: 89.7k]
  ------------------
  460|    455|        return is_vlan(flow, wc);
  461|    426|    case MFP_MPLS:
  ------------------
  |  Branch (461:5): [True: 426, False: 89.7k]
  ------------------
  462|    426|        return eth_type_mpls(dl_type);
  463|  1.03k|    case MFP_IP_ANY:
  ------------------
  |  Branch (463:5): [True: 1.03k, False: 89.1k]
  ------------------
  464|  1.03k|        return is_ip_any(flow);
  465|    639|    case MFP_NSH:
  ------------------
  |  Branch (465:5): [True: 639, False: 89.5k]
  ------------------
  466|    639|        return dl_type == htons(ETH_TYPE_NSH);
  467|    455|    case MFP_CT_VALID:
  ------------------
  |  Branch (467:5): [True: 455, False: 89.7k]
  ------------------
  468|    455|        return is_ct_valid(flow, mask, wc);
  469|  1.42k|    case MFP_TCP:
  ------------------
  |  Branch (469:5): [True: 1.42k, False: 88.7k]
  ------------------
  470|       |        /* Matching !FRAG_LATER is not enforced (mask is not checked). */
  471|  1.42k|        return is_tcp(flow, wc) && !(flow->nw_frag & FLOW_NW_FRAG_LATER);
  ------------------
  |  |   55|  1.39k|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  |  Branch (471:16): [True: 1.39k, False: 29]
  |  Branch (471:36): [True: 1.39k, False: 0]
  ------------------
  472|    772|    case MFP_UDP:
  ------------------
  |  Branch (472:5): [True: 772, False: 89.3k]
  ------------------
  473|    772|        return is_udp(flow, wc) && !(flow->nw_frag & FLOW_NW_FRAG_LATER);
  ------------------
  |  |   55|    740|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  |  Branch (473:16): [True: 740, False: 32]
  |  Branch (473:36): [True: 740, False: 0]
  ------------------
  474|    575|    case MFP_SCTP:
  ------------------
  |  Branch (474:5): [True: 575, False: 89.5k]
  ------------------
  475|    575|        return is_sctp(flow, wc) && !(flow->nw_frag & FLOW_NW_FRAG_LATER);
  ------------------
  |  |   55|    543|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  |  Branch (475:16): [True: 543, False: 32]
  |  Branch (475:37): [True: 543, False: 0]
  ------------------
  476|    452|    case MFP_ICMPV4:
  ------------------
  |  Branch (476:5): [True: 452, False: 89.7k]
  ------------------
  477|    452|        return is_icmpv4(flow, wc);
  478|    441|    case MFP_ICMPV6:
  ------------------
  |  Branch (478:5): [True: 441, False: 89.7k]
  ------------------
  479|    441|        return is_icmpv6(flow, wc);
  480|    434|    case MFP_ND:
  ------------------
  |  Branch (480:5): [True: 434, False: 89.7k]
  ------------------
  481|    434|        return is_nd(flow, wc);
  482|    425|    case MFP_ND_SOLICIT:
  ------------------
  |  Branch (482:5): [True: 425, False: 89.7k]
  ------------------
  483|    425|        return is_nd(flow, wc) && flow->tp_src == htons(ND_NEIGHBOR_SOLICIT);
  ------------------
  |  Branch (483:16): [True: 387, False: 38]
  |  Branch (483:35): [True: 386, False: 1]
  ------------------
  484|    434|    case MFP_ND_ADVERT:
  ------------------
  |  Branch (484:5): [True: 434, False: 89.7k]
  ------------------
  485|    434|        return is_nd(flow, wc) && flow->tp_src == htons(ND_NEIGHBOR_ADVERT);
  ------------------
  |  Branch (485:16): [True: 391, False: 43]
  |  Branch (485:35): [True: 389, False: 2]
  ------------------
  486|  90.1k|    }
  487|       |
  488|      0|    OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  489|  90.1k|}
meta-flow.c:field_len:
 1371|  82.1k|{
 1372|  82.1k|    const uint8_t *value = &value_->u8;
 1373|  82.1k|    int i;
 1374|       |
 1375|  82.1k|    if (!mf->variable_len) {
  ------------------
  |  Branch (1375:9): [True: 11.8k, False: 70.3k]
  ------------------
 1376|  11.8k|        return mf->n_bytes;
 1377|  11.8k|    }
 1378|       |
 1379|  70.3k|    if (!value) {
  ------------------
  |  Branch (1379:9): [True: 0, False: 70.3k]
  ------------------
 1380|      0|        return 0;
 1381|      0|    }
 1382|       |
 1383|  8.62M|    for (i = 0; i < mf->n_bytes; i++) {
  ------------------
  |  Branch (1383:17): [True: 8.59M, False: 29.3k]
  ------------------
 1384|  8.59M|        if (value[i] != 0) {
  ------------------
  |  Branch (1384:13): [True: 40.9k, False: 8.55M]
  ------------------
 1385|  40.9k|            break;
 1386|  40.9k|        }
 1387|  8.59M|    }
 1388|       |
 1389|  70.3k|    return mf->n_bytes - i;
 1390|  70.3k|}
meta-flow.c:mf_check__:
 2838|  62.1k|{
 2839|  62.1k|    if (!sf->field) {
  ------------------
  |  Branch (2839:9): [True: 0, False: 62.1k]
  ------------------
 2840|      0|        VLOG_WARN_RL(&rl, "unknown %s field", type);
  ------------------
  |  |  224|      0|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      0|    do {                                                                \
  |  |  |  |  288|      0|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      0|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2841|      0|        return OFPERR_OFPBAC_BAD_SET_TYPE;
 2842|  62.1k|    } else if (!sf->n_bits) {
  ------------------
  |  Branch (2842:16): [True: 0, False: 62.1k]
  ------------------
 2843|      0|        VLOG_WARN_RL(&rl, "zero bit %s field %s", type, sf->field->name);
  ------------------
  |  |  224|      0|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      0|    do {                                                                \
  |  |  |  |  288|      0|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      0|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2844|      0|        return OFPERR_OFPBAC_BAD_SET_LEN;
 2845|  62.1k|    } else if (sf->ofs >= sf->field->n_bits) {
  ------------------
  |  Branch (2845:16): [True: 0, False: 62.1k]
  ------------------
 2846|      0|        VLOG_WARN_RL(&rl, "bit offset %d exceeds %d-bit width of %s field %s",
  ------------------
  |  |  224|      0|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      0|    do {                                                                \
  |  |  |  |  288|      0|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      0|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2847|      0|                     sf->ofs, sf->field->n_bits, type, sf->field->name);
 2848|      0|        return OFPERR_OFPBAC_BAD_SET_LEN;
 2849|  62.1k|    } else if (sf->ofs + sf->n_bits > sf->field->n_bits) {
  ------------------
  |  Branch (2849:16): [True: 0, False: 62.1k]
  ------------------
 2850|      0|        VLOG_WARN_RL(&rl, "bit offset %d and width %d exceeds %d-bit width "
  ------------------
  |  |  224|      0|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      0|    do {                                                                \
  |  |  |  |  288|      0|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      0|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2851|      0|                     "of %s field %s", sf->ofs, sf->n_bits,
 2852|      0|                     sf->field->n_bits, type, sf->field->name);
 2853|      0|        return OFPERR_OFPBAC_BAD_SET_LEN;
 2854|  62.1k|    } else if (match && !mf_are_match_prereqs_ok(sf->field, match)) {
  ------------------
  |  Branch (2854:16): [True: 62.1k, False: 0]
  |  Branch (2854:25): [True: 276, False: 61.8k]
  ------------------
 2855|    276|        VLOG_WARN_RL(&rl, "%s field %s lacks correct prerequisites",
  ------------------
  |  |  224|    276|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|    276|    do {                                                                \
  |  |  |  |  288|    276|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|    276|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 276]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|    276|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 276]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2856|    276|                     type, sf->field->name);
 2857|    276|        return OFPERR_OFPBAC_MATCH_INCONSISTENT;
 2858|  61.8k|    } else {
 2859|  61.8k|        return 0;
 2860|  61.8k|    }
 2861|  62.1k|}
meta-flow.c:mf_from_integer_string:
 2980|   128k|{
 2981|   128k|    const char *err_str;
 2982|   128k|    char *tail;
 2983|   128k|    int err;
 2984|       |
 2985|   128k|    err = parse_int_string(s, valuep, mf->n_bytes, &tail);
 2986|   128k|    if (err || (*tail != '\0' && *tail != '/')) {
  ------------------
  |  Branch (2986:9): [True: 76, False: 128k]
  |  Branch (2986:17): [True: 57.9k, False: 70.3k]
  |  Branch (2986:34): [True: 31, False: 57.9k]
  ------------------
 2987|    107|        err_str = "value";
 2988|    107|        goto syntax_error;
 2989|    107|    }
 2990|       |
 2991|   128k|    if (*tail == '/') {
  ------------------
  |  Branch (2991:9): [True: 57.9k, False: 70.3k]
  ------------------
 2992|  57.9k|        err = parse_int_string(tail + 1, maskp, mf->n_bytes, &tail);
 2993|  57.9k|        if (err || *tail != '\0') {
  ------------------
  |  Branch (2993:13): [True: 4, False: 57.9k]
  |  Branch (2993:20): [True: 7, False: 57.8k]
  ------------------
 2994|     11|            err_str = "mask";
 2995|     11|            goto syntax_error;
 2996|     11|        }
 2997|  70.3k|    } else {
 2998|  70.3k|        memset(maskp, 0xff, mf->n_bytes);
 2999|  70.3k|    }
 3000|       |
 3001|   128k|    return NULL;
 3002|       |
 3003|    118|syntax_error:
 3004|    118|    if (err == ERANGE) {
  ------------------
  |  Branch (3004:9): [True: 56, False: 62]
  ------------------
 3005|     56|        return xasprintf("%s: %s too large for %u-byte field %s",
 3006|     56|                         s, err_str, mf->n_bytes, mf->name);
 3007|     62|    } else {
 3008|     62|        return xasprintf("%s: bad syntax for %s %s", s, mf->name, err_str);
 3009|     62|    }
 3010|    118|}
meta-flow.c:mf_from_ct_state_string:
 3206|  1.46k|{
 3207|  1.46k|    int err;
 3208|  1.46k|    char *err_str;
 3209|  1.46k|    uint32_t flags, mask;
 3210|       |
 3211|  1.46k|    err = parse_flags(s, ct_state_to_string, '\0', "ct_state", &err_str,
 3212|  1.46k|                      &flags, CS_SUPPORTED_MASK, maskp ? &mask : NULL);
  ------------------
  |  Branch (3212:50): [True: 1.46k, False: 0]
  ------------------
 3213|  1.46k|    if (err < 0) {
  ------------------
  |  Branch (3213:9): [True: 167, False: 1.29k]
  ------------------
 3214|    167|        return err_str;
 3215|    167|    }
 3216|       |
 3217|  1.29k|    *flagsp = htonl(flags);
 3218|  1.29k|    if (maskp) {
  ------------------
  |  Branch (3218:9): [True: 1.29k, False: 0]
  ------------------
 3219|  1.29k|        *maskp = htonl(mask);
 3220|  1.29k|    }
 3221|       |
 3222|       |    return NULL;
 3223|  1.46k|}
meta-flow.c:mf_from_ethernet_string:
 3053|    680|{
 3054|    680|    int n;
 3055|       |
 3056|    680|    ovs_assert(mf->n_bytes == ETH_ADDR_LEN);
  ------------------
  |  |   62|    680|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(mf->n_bytes == ETH_ADDR_LEN);
  ------------------
  |  |  205|    680|#define ETH_ADDR_LEN           6
  ------------------
 3057|       |
 3058|    680|    n = -1;
 3059|    680|    if (ovs_scan(s, ETH_ADDR_SCAN_FMT"%n", ETH_ADDR_SCAN_ARGS(*mac), &n)
  ------------------
  |  |  403|    680|#define ETH_ADDR_SCAN_FMT "%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8
  ------------------
                  if (ovs_scan(s, ETH_ADDR_SCAN_FMT"%n", ETH_ADDR_SCAN_ARGS(*mac), &n)
  ------------------
  |  |  405|    680|    &(EA).ea[0], &(EA).ea[1], &(EA).ea[2], &(EA).ea[3], &(EA).ea[4], &(EA).ea[5]
  ------------------
  |  Branch (3059:9): [True: 650, False: 30]
  ------------------
 3060|    650|        && n == strlen(s)) {
  ------------------
  |  Branch (3060:12): [True: 251, False: 399]
  ------------------
 3061|    251|        *mask = eth_addr_exact;
 3062|    251|        return NULL;
 3063|    251|    }
 3064|       |
 3065|    429|    n = -1;
 3066|    429|    if (ovs_scan(s, ETH_ADDR_SCAN_FMT"/"ETH_ADDR_SCAN_FMT"%n",
  ------------------
  |  |  403|    429|#define ETH_ADDR_SCAN_FMT "%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8
  ------------------
  |  Branch (3066:9): [True: 381, False: 48]
  ------------------
 3067|    429|                 ETH_ADDR_SCAN_ARGS(*mac), ETH_ADDR_SCAN_ARGS(*mask), &n)
  ------------------
  |  |  405|    429|    &(EA).ea[0], &(EA).ea[1], &(EA).ea[2], &(EA).ea[3], &(EA).ea[4], &(EA).ea[5]
  ------------------
                               ETH_ADDR_SCAN_ARGS(*mac), ETH_ADDR_SCAN_ARGS(*mask), &n)
  ------------------
  |  |  405|    429|    &(EA).ea[0], &(EA).ea[1], &(EA).ea[2], &(EA).ea[3], &(EA).ea[4], &(EA).ea[5]
  ------------------
 3068|    381|        && n == strlen(s)) {
  ------------------
  |  Branch (3068:12): [True: 338, False: 43]
  ------------------
 3069|    338|        return NULL;
 3070|    338|    }
 3071|       |
 3072|     91|    return xasprintf("%s: invalid Ethernet address", s);
 3073|    429|}
meta-flow.c:mf_from_ipv4_string:
 3078|  2.08k|{
 3079|  2.08k|    ovs_assert(mf->n_bytes == sizeof *ip);
  ------------------
  |  |   62|  2.08k|#define ovs_assert ovs_ignore
  ------------------
 3080|  2.08k|    return ip_parse_masked(s, ip, mask);
 3081|  2.08k|}
meta-flow.c:mf_from_ipv6_string:
 3086|  2.54k|{
 3087|  2.54k|    ovs_assert(mf->n_bytes == sizeof *ipv6);
  ------------------
  |  |   62|  2.54k|#define ovs_assert ovs_ignore
  ------------------
 3088|  2.54k|    return ipv6_parse_masked(s, ipv6, mask);
 3089|  2.54k|}
meta-flow.c:mf_from_ofp_port_string:
 3095|    598|{
 3096|    598|    ofp_port_t port;
 3097|       |
 3098|    598|    ovs_assert(mf->n_bytes == sizeof(ovs_be16));
  ------------------
  |  |   62|    598|#define ovs_assert ovs_ignore
  ------------------
 3099|       |
 3100|    598|    if (ofputil_port_from_string(s, port_map, &port)) {
  ------------------
  |  Branch (3100:9): [True: 595, False: 3]
  ------------------
 3101|    595|        *valuep = htons(ofp_to_u16(port));
 3102|    595|        *maskp = OVS_BE16_MAX;
  ------------------
  |  |   42|    595|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
 3103|    595|        return NULL;
 3104|    595|    }
 3105|      3|    return xasprintf("%s: invalid or unknown port for %s", s, mf->name);
 3106|    598|}
meta-flow.c:mf_from_ofp_port_string32:
 3112|    363|{
 3113|    363|    ofp_port_t port;
 3114|       |
 3115|    363|    ovs_assert(mf->n_bytes == sizeof(ovs_be32));
  ------------------
  |  |   62|    363|#define ovs_assert ovs_ignore
  ------------------
 3116|    363|    if (ofputil_port_from_string(s, port_map, &port)) {
  ------------------
  |  Branch (3116:9): [True: 359, False: 4]
  ------------------
 3117|    359|        *valuep = ofputil_port_to_ofp11(port);
 3118|    359|        *maskp = OVS_BE32_MAX;
  ------------------
  |  |   43|    359|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
 3119|    359|        return NULL;
 3120|    359|    }
 3121|      4|    return xasprintf("%s: port value out of range for %s", s, mf->name);
 3122|    363|}
meta-flow.c:mf_from_frag_string:
 3150|    479|{
 3151|    479|    const struct frag_handling *h;
 3152|       |
 3153|  1.81k|    for (h = all_frags; h < &all_frags[ARRAY_SIZE(all_frags)]; h++) {
  ------------------
  |  |  297|  1.81k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  1.81k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.81k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  1.81k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.81k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.81k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3153:25): [True: 1.76k, False: 49]
  ------------------
 3154|  1.76k|        if (!strcasecmp(s, h->name)) {
  ------------------
  |  Branch (3154:13): [True: 430, False: 1.33k]
  ------------------
 3155|       |            /* We force the upper bits of the mask on to make mf_parse_value()
 3156|       |             * happy (otherwise it will never think it's an exact match.) */
 3157|    430|            *maskp = h->mask | ~FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|    430|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    430|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    430|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 3158|    430|            *valuep = h->value;
 3159|    430|            return NULL;
 3160|    430|        }
 3161|  1.76k|    }
 3162|       |
 3163|     49|    return xasprintf("%s: unknown fragment type (valid types are \"no\", "
 3164|     49|                     "\"yes\", \"first\", \"later\", \"not_later\"", s);
 3165|    479|}
meta-flow.c:mf_from_tun_flags_string:
 3199|    912|{
 3200|    912|    return parse_mf_flags(s, flow_tun_flag_to_string, "tunnel", flagsp,
 3201|       |                          htons(FLOW_TNL_PUB_F_MASK), maskp);
 3202|    912|}
meta-flow.c:parse_mf_flags:
 3171|  2.00k|{
 3172|  2.00k|    int err;
 3173|  2.00k|    char *err_str;
 3174|  2.00k|    uint32_t flags, mask;
 3175|       |
 3176|  2.00k|    err = parse_flags(s, bit_to_string, '\0', field_name, &err_str,
 3177|  2.00k|                      &flags, ntohs(allowed), maskp ? &mask : NULL);
  ------------------
  |  Branch (3177:47): [True: 2.00k, False: 0]
  ------------------
 3178|  2.00k|    if (err < 0) {
  ------------------
  |  Branch (3178:9): [True: 97, False: 1.91k]
  ------------------
 3179|     97|        return err_str;
 3180|     97|    }
 3181|       |
 3182|  1.91k|    *flagsp = htons(flags);
 3183|  1.91k|    if (maskp) {
  ------------------
  |  Branch (3183:9): [True: 1.91k, False: 0]
  ------------------
 3184|  1.91k|        *maskp = htons(mask);
 3185|  1.91k|    }
 3186|       |
 3187|       |    return NULL;
 3188|  2.00k|}
meta-flow.c:mf_from_tcp_flags_string:
 3192|  1.09k|{
 3193|  1.09k|    return parse_mf_flags(s, packet_tcp_flag_to_string, "TCP", flagsp,
 3194|       |                          TCP_FLAGS_BE16(OVS_BE16_MAX), maskp);
  ------------------
  |  |  905|  1.09k|#define TCP_FLAGS_BE16(tcp_ctl) ((tcp_ctl) & htons(0x0fff))
  ------------------
 3195|  1.09k|}
meta-flow.c:mf_from_packet_type_string:
 3014|    657|{
 3015|    657|    const char *err_str;
 3016|    657|    char *tail;
 3017|    657|    int err;
 3018|       |
 3019|    657|    if (*s != '(') {
  ------------------
  |  Branch (3019:9): [True: 2, False: 655]
  ------------------
 3020|      2|        err_str = "missing '('";
 3021|      2|        goto syntax_error;
 3022|      2|    }
 3023|    655|    s++;
 3024|    655|    err = parse_int_string(s, (uint8_t *)packet_type, 2, &tail);
 3025|    655|    if (err) {
  ------------------
  |  Branch (3025:9): [True: 2, False: 653]
  ------------------
 3026|      2|        err_str = "ns";
 3027|      2|        goto syntax_error;
 3028|      2|    }
 3029|    653|    if (*tail != ',') {
  ------------------
  |  Branch (3029:9): [True: 4, False: 649]
  ------------------
 3030|      4|        err_str = "missing ','";
 3031|      4|        goto syntax_error;
 3032|      4|    }
 3033|    649|    s = tail + 1;
 3034|    649|    err = parse_int_string(s, ((uint8_t *)packet_type) + 2, 2, &tail);
 3035|    649|    if (err) {
  ------------------
  |  Branch (3035:9): [True: 2, False: 647]
  ------------------
 3036|      2|        err_str = "ns_type";
 3037|      2|        goto syntax_error;
 3038|      2|    }
 3039|    647|    if (*tail != ')') {
  ------------------
  |  Branch (3039:9): [True: 1, False: 646]
  ------------------
 3040|      1|        err_str = "missing ')'";
 3041|      1|        goto syntax_error;
 3042|      1|    }
 3043|       |
 3044|    646|    return NULL;
 3045|       |
 3046|     11|syntax_error:
 3047|     11|    return xasprintf("%s: bad syntax for packet type %s", s, err_str);
 3048|    647|}
meta-flow.c:mf_format_integer_string:
 3327|     32|{
 3328|     32|    if (mf->string == MFS_HEXADECIMAL) {
  ------------------
  |  Branch (3328:9): [True: 28, False: 4]
  ------------------
 3329|     28|        ds_put_hex(s, valuep, mf->n_bytes);
 3330|     28|    } else {
 3331|      4|        unsigned long long int integer = 0;
 3332|      4|        int i;
 3333|       |
 3334|      4|        ovs_assert(mf->n_bytes <= 8);
  ------------------
  |  |   62|      4|#define ovs_assert ovs_ignore
  ------------------
 3335|     12|        for (i = 0; i < mf->n_bytes; i++) {
  ------------------
  |  Branch (3335:21): [True: 8, False: 4]
  ------------------
 3336|      8|            integer = (integer << 8) | valuep[i];
 3337|      8|        }
 3338|      4|        ds_put_format(s, "%lld", integer);
 3339|      4|    }
 3340|       |
 3341|     32|    if (maskp) {
  ------------------
  |  Branch (3341:9): [True: 0, False: 32]
  ------------------
 3342|       |        /* I guess we could write the mask in decimal for MFS_DECIMAL but I'm
 3343|       |         * not sure that that a bit-mask written in decimal is ever easier to
 3344|       |         * understand than the same bit-mask written in hexadecimal. */
 3345|      0|        ds_put_char(s, '/');
 3346|      0|        ds_put_hex(s, maskp, mf->n_bytes);
 3347|      0|    }
 3348|     32|}
meta-flow.c:mf_format_ct_state_string:
 3383|      1|{
 3384|      1|    format_flags_masked(s, NULL, ct_state_to_string, ntohl(value),
 3385|      1|                        ntohl(mask), UINT16_MAX);
 3386|      1|}
meta-flow.c:mf_format_frag_string:
 3352|      3|{
 3353|      3|    const struct frag_handling *h;
 3354|       |
 3355|      3|    mask &= FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|      3|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|      3|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|      3|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
 3356|      3|    value &= mask;
 3357|       |
 3358|     13|    for (h = all_frags; h < &all_frags[ARRAY_SIZE(all_frags)]; h++) {
  ------------------
  |  |  297|     13|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|     13|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|     13|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|     13|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|     13|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3358:25): [True: 12, False: 1]
  ------------------
 3359|     12|        if (value == h->value && mask == h->mask) {
  ------------------
  |  Branch (3359:13): [True: 3, False: 9]
  |  Branch (3359:34): [True: 2, False: 1]
  ------------------
 3360|      2|            ds_put_cstr(s, h->name);
 3361|      2|            return;
 3362|      2|        }
 3363|     12|    }
 3364|      1|    ds_put_cstr(s, "<error>");
 3365|      1|}
meta-flow.c:mf_format_tnl_flags_string:
 3369|     16|{
 3370|     16|    format_flags_masked(s, NULL, flow_tun_flag_to_string, ntohs(value),
 3371|     16|                        ntohs(mask) & FLOW_TNL_PUB_F_MASK, FLOW_TNL_PUB_F_MASK);
  ------------------
  |  |   58|     16|#define FLOW_TNL_PUB_F_MASK ((1 << 1) - 1)
  ------------------
                                      ntohs(mask) & FLOW_TNL_PUB_F_MASK, FLOW_TNL_PUB_F_MASK);
  ------------------
  |  |   58|     16|#define FLOW_TNL_PUB_F_MASK ((1 << 1) - 1)
  ------------------
 3372|     16|}
meta-flow.c:mf_format_tcp_flags_string:
 3376|      7|{
 3377|      7|    format_flags_masked(s, NULL, packet_tcp_flag_to_string, ntohs(value),
 3378|      7|                        TCP_FLAGS(mask), TCP_FLAGS(OVS_BE16_MAX));
  ------------------
  |  |  904|      7|#define TCP_FLAGS(tcp_ctl) (ntohs(tcp_ctl) & 0x0fff)
  ------------------
                                      TCP_FLAGS(mask), TCP_FLAGS(OVS_BE16_MAX));
  ------------------
  |  |  904|      7|#define TCP_FLAGS(tcp_ctl) (ntohs(tcp_ctl) & 0x0fff)
  ------------------
 3379|      7|}
meta-flow.c:mf_format_packet_type_string:
 3390|     33|{
 3391|     33|    format_packet_type_masked(s, value, mask);
 3392|     33|}

multipath_check:
   38|    391|{
   39|    391|    return mf_check_dst(&mp->dst, match);
   40|    391|}
multipath_parse:
  223|  3.12k|{
  224|  3.12k|    char *s = xstrdup(s_);
  225|  3.12k|    char *error = multipath_parse__(mp, s_, s);
  226|  3.12k|    free(s);
  227|  3.12k|    return error;
  228|  3.12k|}
multipath.c:multipath_parse__:
  145|  3.12k|{
  146|  3.12k|    char *save_ptr = NULL;
  147|  3.12k|    char *fields, *basis, *algorithm, *n_links_str, *arg, *dst;
  148|  3.12k|    char *error;
  149|  3.12k|    int n_links;
  150|       |
  151|  3.12k|    fields = strtok_r(s, ", ", &save_ptr);
  152|  3.12k|    basis = strtok_r(NULL, ", ", &save_ptr);
  153|  3.12k|    algorithm = strtok_r(NULL, ", ", &save_ptr);
  154|  3.12k|    n_links_str = strtok_r(NULL, ", ", &save_ptr);
  155|  3.12k|    arg = strtok_r(NULL, ", ", &save_ptr);
  156|  3.12k|    dst = strtok_r(NULL, ", ", &save_ptr);
  157|  3.12k|    if (!dst) {
  ------------------
  |  Branch (157:9): [True: 5, False: 3.12k]
  ------------------
  158|      5|        return xasprintf("%s: not enough arguments to multipath action", s_);
  159|      5|    }
  160|       |
  161|  3.12k|    ofpact_init_MULTIPATH(mp);
  162|  3.12k|    if (!strcasecmp(fields, "eth_src")) {
  ------------------
  |  Branch (162:9): [True: 276, False: 2.84k]
  ------------------
  163|    276|        mp->fields = NX_HASH_FIELDS_ETH_SRC;
  164|  2.84k|    } else if (!strcasecmp(fields, "symmetric_l4")) {
  ------------------
  |  Branch (164:16): [True: 666, False: 2.18k]
  ------------------
  165|    666|        mp->fields = NX_HASH_FIELDS_SYMMETRIC_L4;
  166|  2.18k|    } else if (!strcasecmp(fields, "symmetric_l3l4")) {
  ------------------
  |  Branch (166:16): [True: 195, False: 1.98k]
  ------------------
  167|    195|        mp->fields = NX_HASH_FIELDS_SYMMETRIC_L3L4;
  168|  1.98k|    } else if (!strcasecmp(fields, "symmetric_l3l4+udp")) {
  ------------------
  |  Branch (168:16): [True: 200, False: 1.78k]
  ------------------
  169|    200|        mp->fields = NX_HASH_FIELDS_SYMMETRIC_L3L4_UDP;
  170|  1.78k|    } else if (!strcasecmp(fields, "nw_src")) {
  ------------------
  |  Branch (170:16): [True: 308, False: 1.47k]
  ------------------
  171|    308|        mp->fields = NX_HASH_FIELDS_NW_SRC;
  172|  1.47k|    } else if (!strcasecmp(fields, "nw_dst")) {
  ------------------
  |  Branch (172:16): [True: 614, False: 864]
  ------------------
  173|    614|        mp->fields = NX_HASH_FIELDS_NW_DST;
  174|    864|    } else if (!strcasecmp(fields, "symmetric_l3")) {
  ------------------
  |  Branch (174:16): [True: 658, False: 206]
  ------------------
  175|    658|        mp->fields = NX_HASH_FIELDS_SYMMETRIC_L3;
  176|    658|    } else {
  177|    206|        return xasprintf("%s: unknown fields `%s'", s_, fields);
  178|    206|    }
  179|  2.91k|    mp->basis = atoi(basis);
  180|  2.91k|    if (!strcasecmp(algorithm, "modulo_n")) {
  ------------------
  |  Branch (180:9): [True: 227, False: 2.69k]
  ------------------
  181|    227|        mp->algorithm = NX_MP_ALG_MODULO_N;
  182|  2.69k|    } else if (!strcasecmp(algorithm, "hash_threshold")) {
  ------------------
  |  Branch (182:16): [True: 1.26k, False: 1.42k]
  ------------------
  183|  1.26k|        mp->algorithm = NX_MP_ALG_HASH_THRESHOLD;
  184|  1.42k|    } else if (!strcasecmp(algorithm, "hrw")) {
  ------------------
  |  Branch (184:16): [True: 874, False: 552]
  ------------------
  185|    874|        mp->algorithm = NX_MP_ALG_HRW;
  186|    874|    } else if (!strcasecmp(algorithm, "iter_hash")) {
  ------------------
  |  Branch (186:16): [True: 410, False: 142]
  ------------------
  187|    410|        mp->algorithm = NX_MP_ALG_ITER_HASH;
  188|    410|    } else {
  189|    142|        return xasprintf("%s: unknown algorithm `%s'", s_, algorithm);
  190|    142|    }
  191|  2.77k|    n_links = atoi(n_links_str);
  192|  2.77k|    if (n_links < 1 || n_links > 65536) {
  ------------------
  |  Branch (192:9): [True: 18, False: 2.75k]
  |  Branch (192:24): [True: 16, False: 2.74k]
  ------------------
  193|     34|        return xasprintf("%s: n_links %d is not in valid range 1 to 65536",
  194|     34|                         s_, n_links);
  195|     34|    }
  196|  2.74k|    mp->max_link = n_links - 1;
  197|  2.74k|    mp->arg = atoi(arg);
  198|       |
  199|  2.74k|    error = mf_parse_subfield(&mp->dst, dst);
  200|  2.74k|    if (error) {
  ------------------
  |  Branch (200:9): [True: 24, False: 2.71k]
  ------------------
  201|     24|        return error;
  202|     24|    }
  203|  2.71k|    if (!mf_nxm_header(mp->dst.field->id)) {
  ------------------
  |  Branch (203:9): [True: 1, False: 2.71k]
  ------------------
  204|      1|        return xasprintf("%s: experimenter OXM field '%s' not supported",
  205|      1|                         s_, dst);
  206|      1|    }
  207|  2.71k|    if (mp->dst.n_bits < 16 && n_links > (1u << mp->dst.n_bits)) {
  ------------------
  |  Branch (207:9): [True: 1.44k, False: 1.27k]
  |  Branch (207:32): [True: 8, False: 1.43k]
  ------------------
  208|      8|        return xasprintf("%s: %d-bit destination field has %u possible "
  209|      8|                         "values, less than specified n_links %d",
  210|      8|                         s_, mp->dst.n_bits, 1u << mp->dst.n_bits, n_links);
  211|      8|    }
  212|       |
  213|  2.70k|    return NULL;
  214|  2.71k|}

mf_nxm_header:
  234|  83.8k|{
  235|  83.8k|    uint64_t oxm = mf_oxm_header(id, 0);
  236|  83.8k|    return is_experimenter_oxm(oxm) ? 0 : oxm >> 32;
  ------------------
  |  Branch (236:12): [True: 2.76k, False: 81.1k]
  ------------------
  237|  83.8k|}
nxm_header_from_mff:
  245|   167k|{
  246|   167k|    uint64_t oxm = mf_oxm_header(mff->id, 0);
  247|       |
  248|   167k|    if (mff->mapped) {
  ------------------
  |  Branch (248:9): [True: 0, False: 167k]
  ------------------
  249|      0|        oxm = nxm_no_len(oxm) | ((uint64_t) mff->n_bytes << 32);
  250|      0|    }
  251|       |
  252|   167k|    return is_experimenter_oxm(oxm) ? 0 : oxm >> 32;
  ------------------
  |  Branch (252:12): [True: 278, False: 167k]
  ------------------
  253|   167k|}
nxm_put_entry_raw:
  808|  21.7k|{
  809|  21.7k|    nx_put_header_len(b, field, version, !!mask, n_bytes);
  810|  21.7k|    ofpbuf_put(b, value, n_bytes);
  811|  21.7k|    if (mask) {
  ------------------
  |  Branch (811:9): [True: 8.75k, False: 13.0k]
  ------------------
  812|  8.75k|        ofpbuf_put(b, mask, n_bytes);
  813|  8.75k|    }
  814|  21.7k|}
nx_put_match:
 1318|  4.04k|{
 1319|  4.04k|    int match_len = nx_put_raw(b, 0, match, cookie, cookie_mask);
 1320|       |
 1321|  4.04k|    ofpbuf_put_zeros(b, PAD_SIZE(match_len, 8));
  ------------------
  |  |  306|  4.04k|#define PAD_SIZE(X, Y) (ROUND_UP(X, Y) - (X))
  |  |  ------------------
  |  |  |  |  303|  4.04k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  4.04k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1322|  4.04k|    return match_len;
 1323|  4.04k|}
oxm_put_match:
 1339|    482|{
 1340|    482|    int match_len;
 1341|    482|    struct ofp11_match_header *omh;
 1342|    482|    size_t start_len = b->size;
 1343|    482|    ovs_be64 cookie = htonll(0), cookie_mask = htonll(0);
 1344|       |
 1345|    482|    ofpbuf_put_uninit(b, sizeof *omh);
 1346|    482|    match_len = (nx_put_raw(b, version, match, cookie, cookie_mask)
 1347|    482|                 + sizeof *omh);
 1348|    482|    ofpbuf_put_zeros(b, PAD_SIZE(match_len, 8));
  ------------------
  |  |  306|    482|#define PAD_SIZE(X, Y) (ROUND_UP(X, Y) - (X))
  |  |  ------------------
  |  |  |  |  303|    482|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|    482|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1349|       |
 1350|    482|    omh = ofpbuf_at(b, start_len, sizeof *omh);
 1351|    482|    omh->type = htons(OFPMT_OXM);
 1352|    482|    omh->length = htons(match_len);
 1353|       |
 1354|    482|    return match_len;
 1355|    482|}
nx_put_header:
 1465|  4.34k|{
 1466|  4.34k|    nx_put_header__(b, mf_oxm_header(field, version), masked);
 1467|  4.34k|}
nx_put_mff_header:
 1471|  4.07k|{
 1472|  4.07k|    if (mff->mapped) {
  ------------------
  |  Branch (1472:9): [True: 0, False: 4.07k]
  ------------------
 1473|      0|        nx_put_header_len(b, mff->id, version, masked, mff->n_bytes);
 1474|  4.07k|    } else {
 1475|  4.07k|        nx_put_header(b, mff->id, version, masked);
 1476|  4.07k|    }
 1477|  4.07k|}
nx_put_entry:
 1496|  16.7k|{
 1497|  16.7k|    bool masked;
 1498|  16.7k|    int len, offset;
 1499|       |
 1500|  16.7k|    len = mf_field_len(mff, value, mask, &masked);
 1501|  16.7k|    offset = mff->n_bytes - len;
 1502|       |
 1503|  16.7k|    nxm_put_entry_raw(b, mff->id, version,
 1504|  16.7k|                      &value->u8 + offset, masked ? &mask->u8 + offset : NULL,
  ------------------
  |  Branch (1504:44): [True: 7.86k, False: 8.91k]
  ------------------
 1505|  16.7k|                      len);
 1506|  16.7k|}
nxm_parse_reg_move:
 1792|    894|{
 1793|    894|    const char *full_s = s;
 1794|    894|    char *error;
 1795|       |
 1796|    894|    error = mf_parse_subfield__(&move->src, &s);
 1797|    894|    if (error) {
  ------------------
  |  Branch (1797:9): [True: 9, False: 885]
  ------------------
 1798|      9|        return error;
 1799|      9|    }
 1800|    885|    if (strncmp(s, "->", 2)) {
  ------------------
  |  Branch (1800:9): [True: 17, False: 868]
  ------------------
 1801|     17|        return xasprintf("%s: missing `->' following source", full_s);
 1802|     17|    }
 1803|    868|    s += 2;
 1804|    868|    error = mf_parse_subfield(&move->dst, s);
 1805|    868|    if (error) {
  ------------------
  |  Branch (1805:9): [True: 3, False: 865]
  ------------------
 1806|      3|        return error;
 1807|      3|    }
 1808|       |
 1809|    865|    if (move->src.n_bits != move->dst.n_bits) {
  ------------------
  |  Branch (1809:9): [True: 1, False: 864]
  ------------------
 1810|      1|        return xasprintf("%s: source field is %d bits wide but destination is "
 1811|      1|                         "%d bits wide", full_s,
 1812|      1|                         move->src.n_bits, move->dst.n_bits);
 1813|      1|    }
 1814|    864|    return NULL;
 1815|    865|}
nxm_reg_move_check:
 1832|    509|{
 1833|    509|    enum ofperr error;
 1834|       |
 1835|    509|    error = mf_check_src(&move->src, match);
 1836|    509|    if (error) {
  ------------------
  |  Branch (1836:9): [True: 0, False: 509]
  ------------------
 1837|      0|        return error;
 1838|      0|    }
 1839|       |
 1840|    509|    return mf_check_dst(&move->dst, match);
 1841|    509|}
nxm_parse_stack_action:
 1875|  2.30k|{
 1876|  2.30k|    char *error;
 1877|       |
 1878|  2.30k|    error = mf_parse_subfield__(&stack_action->subfield, &s);
 1879|  2.30k|    if (error) {
  ------------------
  |  Branch (1879:9): [True: 9, False: 2.29k]
  ------------------
 1880|      9|        return error;
 1881|      9|    }
 1882|       |
 1883|  2.29k|    if (*s != '\0') {
  ------------------
  |  Branch (1883:9): [True: 1, False: 2.29k]
  ------------------
 1884|      1|        return xasprintf("%s: trailing garbage following push or pop", s);
 1885|      1|    }
 1886|       |
 1887|  2.29k|    return NULL;
 1888|  2.29k|}
nxm_stack_push_check:
 1907|    385|{
 1908|    385|    return mf_check_src(&push->subfield, match);
 1909|    385|}
nxm_stack_pop_check:
 1914|  1.89k|{
 1915|  1.89k|    return mf_check_dst(&pop->subfield, match);
 1916|  1.89k|}
mf_parse_field:
 2019|    389|{
 2020|    389|    const struct nxm_field *f;
 2021|    389|    int s_len = strlen(s);
 2022|       |
 2023|    389|    f = nxm_field_by_name(s, s_len);
 2024|    389|    (*field) = f ? mf_from_id(f->id) : mf_from_name_len(s, s_len);
  ------------------
  |  Branch (2024:16): [True: 68, False: 321]
  ------------------
 2025|    389|    if (!*field) {
  ------------------
  |  Branch (2025:9): [True: 6, False: 383]
  ------------------
 2026|      6|        return xasprintf("unknown field `%s'", s);
 2027|      6|    }
 2028|    383|    return NULL;
 2029|    389|}
mf_parse_subfield__:
 2076|   192k|{
 2077|   192k|    const struct mf_field *field = NULL;
 2078|   192k|    const struct nxm_field *f;
 2079|   192k|    const char *name;
 2080|   192k|    int start, end;
 2081|   192k|    const char *s;
 2082|   192k|    int name_len;
 2083|   192k|    bool wild;
 2084|       |
 2085|   192k|    s = *sp;
 2086|   192k|    name = s;
 2087|   192k|    name_len = strcspn(s, "[-");
 2088|       |
 2089|   192k|    f = mf_parse_subfield_name(name, name_len, &wild);
 2090|   192k|    field = f ? mf_from_id(f->id) : mf_from_name_len(name, name_len);
  ------------------
  |  Branch (2090:13): [True: 2.43k, False: 189k]
  ------------------
 2091|   192k|    if (!field) {
  ------------------
  |  Branch (2091:9): [True: 58.1k, False: 133k]
  ------------------
 2092|  58.1k|        return xasprintf("%s: unknown field `%.*s'", *sp, name_len, s);
 2093|  58.1k|    }
 2094|       |
 2095|   133k|    s += name_len;
 2096|       |    /* Assume full field. */
 2097|   133k|    start = 0;
 2098|   133k|    end = field->n_bits - 1;
 2099|   133k|    if (*s == '[') {
  ------------------
  |  Branch (2099:9): [True: 85.4k, False: 48.4k]
  ------------------
 2100|  85.4k|        if (!strncmp(s, "[]", 2)) {
  ------------------
  |  Branch (2100:13): [True: 15.1k, False: 70.2k]
  ------------------
 2101|       |            /* Nothing to do. */
 2102|  70.2k|        } else if (ovs_scan(s, "[%d..%d]", &start, &end)) {
  ------------------
  |  Branch (2102:20): [True: 652, False: 69.6k]
  ------------------
 2103|       |            /* Nothing to do. */
 2104|  69.6k|        } else if (ovs_scan(s, "[%d]", &start)) {
  ------------------
  |  Branch (2104:20): [True: 69.5k, False: 86]
  ------------------
 2105|  69.5k|            end = start;
 2106|  69.5k|        } else {
 2107|     86|            return xasprintf("%s: syntax error expecting [] or [<bit>] or "
 2108|     86|                             "[<start>..<end>]", *sp);
 2109|     86|        }
 2110|  85.3k|        s = strchr(s, ']') + 1;
 2111|  85.3k|    }
 2112|       |
 2113|   133k|    if (start > end) {
  ------------------
  |  Branch (2113:9): [True: 24, False: 133k]
  ------------------
 2114|     24|        return xasprintf("%s: starting bit %d is after ending bit %d",
 2115|     24|                         *sp, start, end);
 2116|   133k|    } else if (start >= field->n_bits) {
  ------------------
  |  Branch (2116:16): [True: 40, False: 133k]
  ------------------
 2117|     40|        return xasprintf("%s: starting bit %d is not valid because field is "
 2118|     40|                         "only %d bits wide", *sp, start, field->n_bits);
 2119|   133k|    } else if (end >= field->n_bits){
  ------------------
  |  Branch (2119:16): [True: 43, False: 133k]
  ------------------
 2120|     43|        return xasprintf("%s: ending bit %d is not valid because field is "
 2121|     43|                         "only %d bits wide", *sp, end, field->n_bits);
 2122|     43|    }
 2123|       |
 2124|   133k|    sf->field = field;
 2125|   133k|    sf->ofs = start;
 2126|   133k|    sf->n_bits = end - start + 1;
 2127|       |
 2128|   133k|    *sp = s;
 2129|       |    return NULL;
 2130|   133k|}
mf_parse_subfield:
 2143|   188k|{
 2144|   188k|    char *error = mf_parse_subfield__(sf, &s);
 2145|   188k|    if (!error && s[0]) {
  ------------------
  |  Branch (2145:9): [True: 130k, False: 58.2k]
  |  Branch (2145:19): [True: 22, False: 130k]
  ------------------
 2146|     22|        error = xstrdup("unexpected input following field syntax");
 2147|     22|    }
 2148|   188k|    return error;
 2149|   188k|}
nx-match.c:mf_oxm_header:
  221|   277k|{
  222|   277k|    const struct nxm_field *f = nxm_field_by_mf_id(id, version);
  223|   277k|    return f ? f->header : 0;
  ------------------
  |  Branch (223:12): [True: 276k, False: 1.26k]
  ------------------
  224|   277k|}
nx-match.c:is_experimenter_oxm:
  108|   326k|{
  109|   326k|    return nxm_class(header) == OFPXMC12_EXPERIMENTER;
  110|   326k|}
nx-match.c:nxm_no_len:
  104|    237|static uint64_t nxm_no_len(uint64_t header) { return header & 0xffffff80ffffffffULL; }
nx-match.c:nxm_payload_len:
  136|  8.86k|{
  137|  8.86k|    ovs_assert(nxm_length(header) >= nxm_experimenter_len(header));
  ------------------
  |  |   62|  8.86k|#define ovs_assert ovs_ignore
  ------------------
  138|  8.86k|    return nxm_length(header) - nxm_experimenter_len(header);
  139|  8.86k|}
nx-match.c:nxm_experimenter_len:
  128|  74.5k|{
  129|  74.5k|    return is_experimenter_oxm(header) ? 4 : 0;
  ------------------
  |  Branch (129:12): [True: 14.7k, False: 59.7k]
  ------------------
  130|  74.5k|}
nx-match.c:nxm_vendor:
   99|  30.6k|static uint32_t nxm_vendor(uint64_t header) { return header; }
nx-match.c:nxm_length:
  103|  17.7k|static int nxm_length(uint64_t header) { return (header >> 32) & 0xff; }
nx-match.c:nxm_header_len:
  145|  26.2k|{
  146|  26.2k|    return 4 + nxm_experimenter_len(header);
  147|  26.2k|}
nx-match.c:nxm_make_wild_header:
  173|  8.86k|{
  174|  8.86k|    unsigned int new_len = nxm_payload_len(header) * 2
  175|  8.86k|                           + nxm_experimenter_len(header);
  176|  8.86k|    return NXM_HEADER(nxm_vendor(header), nxm_class(header),
  ------------------
  |  |  150|  8.86k|    (((uint64_t) (CLASS) << 48) |                               \
  |  |  151|  8.86k|     ((uint64_t) (FIELD) << 41) |                               \
  |  |  152|  8.86k|     ((uint64_t) (HASMASK) << 40) |                             \
  |  |  153|  8.86k|     ((uint64_t) (LENGTH) << 32) |                              \
  |  |  154|  8.86k|     (VENDOR))
  ------------------
  177|  8.86k|                      nxm_field(header), 1, new_len);
  178|  8.86k|}
nx-match.c:nx_put_raw:
 1050|  4.52k|{
 1051|  4.52k|    const struct flow *flow = &match->flow;
 1052|  4.52k|    const size_t start_len = b->size;
 1053|  4.52k|    ovs_be16 dl_type = get_dl_type(flow);
 1054|  4.52k|    ovs_be32 spi_mask;
 1055|  4.52k|    int match_len;
 1056|       |
 1057|  4.52k|    BUILD_ASSERT_DECL(FLOW_WC_SEQ == 43);
  ------------------
  |  |  270|  4.52k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
 1058|       |
 1059|  4.52k|    struct nxm_put_ctx ctx = { .output = b, .implied_ethernet = false };
 1060|       |
 1061|       |    /* OpenFlow Packet Type. Must be first. */
 1062|  4.52k|    if (match->wc.masks.packet_type && !match_has_default_packet_type(match)) {
  ------------------
  |  Branch (1062:9): [True: 1.91k, False: 2.61k]
  |  Branch (1062:40): [True: 589, False: 1.32k]
  ------------------
 1063|    589|        nxm_put_32m(&ctx, MFF_PACKET_TYPE, oxm, flow->packet_type,
 1064|    589|                    match->wc.masks.packet_type);
 1065|    589|    }
 1066|       |
 1067|       |    /* Metadata. */
 1068|  4.52k|    if (match->wc.masks.dp_hash) {
  ------------------
  |  Branch (1068:9): [True: 39, False: 4.49k]
  ------------------
 1069|     39|        nxm_put_32m(&ctx, MFF_DP_HASH, oxm,
 1070|     39|                    htonl(flow->dp_hash), htonl(match->wc.masks.dp_hash));
 1071|     39|    }
 1072|       |
 1073|  4.52k|    if (match->wc.masks.recirc_id) {
  ------------------
  |  Branch (1073:9): [True: 8, False: 4.52k]
  ------------------
 1074|      8|        nxm_put_32(&ctx, MFF_RECIRC_ID, oxm, htonl(flow->recirc_id));
 1075|      8|    }
 1076|       |
 1077|  4.52k|    if (match->wc.masks.conj_id) {
  ------------------
  |  Branch (1077:9): [True: 7, False: 4.52k]
  ------------------
 1078|      7|        nxm_put_32(&ctx, MFF_CONJ_ID, oxm, htonl(flow->conj_id));
 1079|      7|    }
 1080|       |
 1081|  4.52k|    if (match->wc.masks.in_port.ofp_port) {
  ------------------
  |  Branch (1081:9): [True: 9, False: 4.52k]
  ------------------
 1082|      9|        ofp_port_t in_port = flow->in_port.ofp_port;
 1083|      9|        if (oxm) {
  ------------------
  |  Branch (1083:13): [True: 1, False: 8]
  ------------------
 1084|      1|            nxm_put_32(&ctx, MFF_IN_PORT_OXM, oxm,
 1085|      1|                       ofputil_port_to_ofp11(in_port));
 1086|      8|        } else {
 1087|      8|            nxm_put_16(&ctx, MFF_IN_PORT, oxm,
 1088|      8|                       htons(ofp_to_u16(in_port)));
 1089|      8|        }
 1090|      9|    }
 1091|  4.52k|    if (match->wc.masks.actset_output) {
  ------------------
  |  Branch (1091:9): [True: 49, False: 4.48k]
  ------------------
 1092|     49|        nxm_put_32(&ctx, MFF_ACTSET_OUTPUT, oxm,
 1093|     49|                   ofputil_port_to_ofp11(flow->actset_output));
 1094|     49|    }
 1095|       |
 1096|       |    /* Ethernet. */
 1097|  4.52k|    nxm_put_eth_masked(&ctx, MFF_ETH_SRC, oxm,
 1098|  4.52k|                       flow->dl_src, match->wc.masks.dl_src);
 1099|  4.52k|    nxm_put_eth_masked(&ctx, MFF_ETH_DST, oxm,
 1100|  4.52k|                       flow->dl_dst, match->wc.masks.dl_dst);
 1101|  4.52k|    nxm_put_16m(&ctx, MFF_ETH_TYPE, oxm,
 1102|  4.52k|                ofputil_dl_type_to_openflow(flow->dl_type),
 1103|  4.52k|                match->wc.masks.dl_type);
 1104|       |
 1105|       |    /* 802.1Q. */
 1106|  4.52k|    if (oxm) {
  ------------------
  |  Branch (1106:9): [True: 482, False: 4.04k]
  ------------------
 1107|    482|        ovs_be16 VID_CFI_MASK = htons(VLAN_VID_MASK | VLAN_CFI);
 1108|    482|        ovs_be16 vid = flow->vlans[0].tci & VID_CFI_MASK;
 1109|    482|        ovs_be16 mask = match->wc.masks.vlans[0].tci & VID_CFI_MASK;
 1110|       |
 1111|    482|        if (mask == htons(VLAN_VID_MASK | VLAN_CFI)) {
  ------------------
  |  Branch (1111:13): [True: 2, False: 480]
  ------------------
 1112|      2|            nxm_put_16(&ctx, MFF_VLAN_VID, oxm, vid);
 1113|    480|        } else if (mask) {
  ------------------
  |  Branch (1113:20): [True: 2, False: 478]
  ------------------
 1114|      2|            nxm_put_16m(&ctx, MFF_VLAN_VID, oxm, vid, mask);
 1115|      2|        }
 1116|       |
 1117|    482|        if (vid && vlan_tci_to_pcp(match->wc.masks.vlans[0].tci)) {
  ------------------
  |  Branch (1117:13): [True: 3, False: 479]
  |  Branch (1117:20): [True: 1, False: 2]
  ------------------
 1118|      1|            nxm_put_8(&ctx, MFF_VLAN_PCP, oxm,
 1119|      1|                      vlan_tci_to_pcp(flow->vlans[0].tci));
 1120|      1|        }
 1121|       |
 1122|  4.04k|    } else {
 1123|  4.04k|        nxm_put_16m(&ctx, MFF_VLAN_TCI, oxm, flow->vlans[0].tci,
 1124|  4.04k|                    match->wc.masks.vlans[0].tci);
 1125|  4.04k|    }
 1126|       |
 1127|       |    /* MPLS. */
 1128|  4.52k|    if (eth_type_mpls(dl_type)) {
  ------------------
  |  Branch (1128:9): [True: 60, False: 4.46k]
  ------------------
 1129|     60|        if (match->wc.masks.mpls_lse[0] & htonl(MPLS_TC_MASK)) {
  ------------------
  |  Branch (1129:13): [True: 1, False: 59]
  ------------------
 1130|      1|            nxm_put_8(&ctx, MFF_MPLS_TC, oxm,
 1131|      1|                      mpls_lse_to_tc(flow->mpls_lse[0]));
 1132|      1|        }
 1133|       |
 1134|     60|        if (match->wc.masks.mpls_lse[0] & htonl(MPLS_BOS_MASK)) {
  ------------------
  |  Branch (1134:13): [True: 2, False: 58]
  ------------------
 1135|      2|            nxm_put_8(&ctx, MFF_MPLS_BOS, oxm,
 1136|      2|                      mpls_lse_to_bos(flow->mpls_lse[0]));
 1137|      2|        }
 1138|       |
 1139|     60|        if (match->wc.masks.mpls_lse[0] & htonl(MPLS_TTL_MASK)) {
  ------------------
  |  Branch (1139:13): [True: 1, False: 59]
  ------------------
 1140|      1|            nxm_put_8(&ctx, MFF_MPLS_TTL, oxm,
 1141|      1|                      mpls_lse_to_ttl(flow->mpls_lse[0]));
 1142|      1|        }
 1143|       |
 1144|     60|        if (match->wc.masks.mpls_lse[0] & htonl(MPLS_LABEL_MASK)) {
  ------------------
  |  Branch (1144:13): [True: 1, False: 59]
  ------------------
 1145|      1|            nxm_put_32(&ctx, MFF_MPLS_LABEL, oxm,
 1146|      1|                       htonl(mpls_lse_to_label(flow->mpls_lse[0])));
 1147|      1|        }
 1148|     60|    }
 1149|       |
 1150|       |    /* L3. */
 1151|  4.52k|    if (is_ip_any(flow)) {
  ------------------
  |  Branch (1151:9): [True: 586, False: 3.94k]
  ------------------
 1152|    586|        nxm_put_ip(&ctx, match, oxm);
 1153|  3.94k|    } else if (dl_type == htons(ETH_TYPE_ARP) ||
  ------------------
  |  Branch (1153:16): [True: 17, False: 3.92k]
  ------------------
 1154|  3.92k|               dl_type == htons(ETH_TYPE_RARP)) {
  ------------------
  |  Branch (1154:16): [True: 9, False: 3.91k]
  ------------------
 1155|       |        /* ARP. */
 1156|     26|        if (match->wc.masks.nw_proto) {
  ------------------
  |  Branch (1156:13): [True: 5, False: 21]
  ------------------
 1157|      5|            nxm_put_16(&ctx, MFF_ARP_OP, oxm,
 1158|      5|                       htons(flow->nw_proto));
 1159|      5|        }
 1160|     26|        nxm_put_32m(&ctx, MFF_ARP_SPA, oxm,
 1161|     26|                    flow->nw_src, match->wc.masks.nw_src);
 1162|     26|        nxm_put_32m(&ctx, MFF_ARP_TPA, oxm,
 1163|     26|                    flow->nw_dst, match->wc.masks.nw_dst);
 1164|     26|        nxm_put_eth_masked(&ctx, MFF_ARP_SHA, oxm,
 1165|     26|                           flow->arp_sha, match->wc.masks.arp_sha);
 1166|     26|        nxm_put_eth_masked(&ctx, MFF_ARP_THA, oxm,
 1167|     26|                           flow->arp_tha, match->wc.masks.arp_tha);
 1168|     26|    }
 1169|       |
 1170|       |    /* Tunnel ID. */
 1171|  4.52k|    nxm_put_64m(&ctx, MFF_TUN_ID, oxm,
 1172|  4.52k|                flow->tunnel.tun_id, match->wc.masks.tunnel.tun_id);
 1173|       |
 1174|       |    /* Other tunnel metadata. */
 1175|  4.52k|    nxm_put_16m(&ctx, MFF_TUN_FLAGS, oxm,
 1176|  4.52k|                htons(flow->tunnel.flags), htons(match->wc.masks.tunnel.flags));
 1177|  4.52k|    nxm_put_32m(&ctx, MFF_TUN_SRC, oxm,
 1178|  4.52k|                flow->tunnel.ip_src, match->wc.masks.tunnel.ip_src);
 1179|  4.52k|    nxm_put_32m(&ctx, MFF_TUN_DST, oxm,
 1180|  4.52k|                flow->tunnel.ip_dst, match->wc.masks.tunnel.ip_dst);
 1181|  4.52k|    nxm_put_ipv6(&ctx, MFF_TUN_IPV6_SRC, oxm,
 1182|  4.52k|                 &flow->tunnel.ipv6_src, &match->wc.masks.tunnel.ipv6_src);
 1183|  4.52k|    nxm_put_ipv6(&ctx, MFF_TUN_IPV6_DST, oxm,
 1184|  4.52k|                 &flow->tunnel.ipv6_dst, &match->wc.masks.tunnel.ipv6_dst);
 1185|  4.52k|    nxm_put_16m(&ctx, MFF_TUN_GBP_ID, oxm,
 1186|  4.52k|                flow->tunnel.gbp_id, match->wc.masks.tunnel.gbp_id);
 1187|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_GBP_FLAGS, oxm,
 1188|  4.52k|               flow->tunnel.gbp_flags, match->wc.masks.tunnel.gbp_flags);
 1189|  4.52k|    tun_metadata_to_nx_match(b, oxm, match);
 1190|       |
 1191|       |    /* ERSPAN */
 1192|  4.52k|    nxm_put_32m(&ctx, MFF_TUN_ERSPAN_IDX, oxm,
 1193|  4.52k|                htonl(flow->tunnel.erspan_idx),
 1194|  4.52k|                htonl(match->wc.masks.tunnel.erspan_idx));
 1195|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_ERSPAN_VER, oxm,
 1196|  4.52k|                flow->tunnel.erspan_ver, match->wc.masks.tunnel.erspan_ver);
 1197|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_ERSPAN_DIR, oxm,
 1198|  4.52k|                flow->tunnel.erspan_dir, match->wc.masks.tunnel.erspan_dir);
 1199|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_ERSPAN_HWID, oxm,
 1200|  4.52k|                flow->tunnel.erspan_hwid, match->wc.masks.tunnel.erspan_hwid);
 1201|       |
 1202|       |    /* GTP-U */
 1203|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_GTPU_FLAGS, oxm, flow->tunnel.gtpu_flags,
 1204|  4.52k|               match->wc.masks.tunnel.gtpu_flags);
 1205|  4.52k|    nxm_put_8m(&ctx, MFF_TUN_GTPU_MSGTYPE, oxm, flow->tunnel.gtpu_msgtype,
 1206|  4.52k|               match->wc.masks.tunnel.gtpu_msgtype);
 1207|       |
 1208|       |    /* Network Service Header */
 1209|  4.52k|    nxm_put_8m(&ctx, MFF_NSH_FLAGS, oxm, flow->nsh.flags,
 1210|  4.52k|            match->wc.masks.nsh.flags);
 1211|  4.52k|    nxm_put_8m(&ctx, MFF_NSH_TTL, oxm, flow->nsh.ttl,
 1212|  4.52k|            match->wc.masks.nsh.ttl);
 1213|  4.52k|    nxm_put_8m(&ctx, MFF_NSH_MDTYPE, oxm, flow->nsh.mdtype,
 1214|  4.52k|            match->wc.masks.nsh.mdtype);
 1215|  4.52k|    nxm_put_8m(&ctx, MFF_NSH_NP, oxm, flow->nsh.np,
 1216|  4.52k|            match->wc.masks.nsh.np);
 1217|  4.52k|    spi_mask = nsh_path_hdr_to_spi(match->wc.masks.nsh.path_hdr);
 1218|  4.52k|    if (spi_mask == htonl(NSH_SPI_MASK >> NSH_SPI_SHIFT)) {
  ------------------
  |  Branch (1218:9): [True: 59, False: 4.47k]
  ------------------
 1219|     59|        spi_mask = OVS_BE32_MAX;
  ------------------
  |  |   43|     59|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
 1220|     59|    }
 1221|  4.52k|    nxm_put_32m(&ctx, MFF_NSH_SPI, oxm,
 1222|  4.52k|                nsh_path_hdr_to_spi(flow->nsh.path_hdr),
 1223|  4.52k|                spi_mask);
 1224|  4.52k|    nxm_put_8m(&ctx, MFF_NSH_SI, oxm,
 1225|  4.52k|                nsh_path_hdr_to_si(flow->nsh.path_hdr),
 1226|  4.52k|                nsh_path_hdr_to_si(match->wc.masks.nsh.path_hdr));
 1227|  22.6k|    for (int i = 0; i < 4; i++) {
  ------------------
  |  Branch (1227:21): [True: 18.1k, False: 4.52k]
  ------------------
 1228|  18.1k|        nxm_put_32m(&ctx, MFF_NSH_C1 + i, oxm, flow->nsh.context[i],
 1229|  18.1k|                    match->wc.masks.nsh.context[i]);
 1230|  18.1k|    }
 1231|       |
 1232|       |    /* Registers. */
 1233|  4.52k|    if (oxm < OFP15_VERSION) {
  ------------------
  |  Branch (1233:9): [True: 4.52k, False: 0]
  ------------------
 1234|   149k|        for (int i = 0; i < FLOW_N_REGS; i++) {
  ------------------
  |  |   33|   149k|#define FLOW_N_REGS 32
  ------------------
  |  Branch (1234:25): [True: 144k, False: 4.52k]
  ------------------
 1235|   144k|            nxm_put_32m(&ctx, MFF_REG0 + i, oxm,
 1236|   144k|                        htonl(flow->regs[i]), htonl(match->wc.masks.regs[i]));
 1237|   144k|        }
 1238|  4.52k|    } else {
 1239|      0|        for (int i = 0; i < FLOW_N_XREGS; i++) {
  ------------------
  |  |   41|      0|#define FLOW_N_XREGS (FLOW_N_REGS / 2)
  |  |  ------------------
  |  |  |  |   33|      0|#define FLOW_N_REGS 32
  |  |  ------------------
  ------------------
  |  Branch (1239:25): [True: 0, False: 0]
  ------------------
 1240|      0|            nxm_put_64m(&ctx, MFF_XREG0 + i, oxm,
 1241|      0|                        htonll(flow_get_xreg(flow, i)),
 1242|      0|                        htonll(flow_get_xreg(&match->wc.masks, i)));
 1243|      0|        }
 1244|      0|    }
 1245|       |
 1246|       |    /* Packet mark. */
 1247|  4.52k|    nxm_put_32m(&ctx, MFF_PKT_MARK, oxm, htonl(flow->pkt_mark),
 1248|  4.52k|                htonl(match->wc.masks.pkt_mark));
 1249|       |
 1250|       |    /* Connection tracking. */
 1251|  4.52k|    nxm_put_32m(&ctx, MFF_CT_STATE, oxm, htonl(flow->ct_state),
 1252|  4.52k|                htonl(match->wc.masks.ct_state));
 1253|  4.52k|    nxm_put_16m(&ctx, MFF_CT_ZONE, oxm, htons(flow->ct_zone),
 1254|  4.52k|                htons(match->wc.masks.ct_zone));
 1255|  4.52k|    nxm_put_32m(&ctx, MFF_CT_MARK, oxm, htonl(flow->ct_mark),
 1256|  4.52k|                htonl(match->wc.masks.ct_mark));
 1257|  4.52k|    nxm_put_128m(&ctx, MFF_CT_LABEL, oxm, hton128(flow->ct_label),
 1258|  4.52k|                 hton128(match->wc.masks.ct_label));
 1259|  4.52k|    nxm_put_32m(&ctx, MFF_CT_NW_SRC, oxm,
 1260|  4.52k|                flow->ct_nw_src, match->wc.masks.ct_nw_src);
 1261|  4.52k|    nxm_put_ipv6(&ctx, MFF_CT_IPV6_SRC, oxm,
 1262|  4.52k|                 &flow->ct_ipv6_src, &match->wc.masks.ct_ipv6_src);
 1263|  4.52k|    nxm_put_32m(&ctx, MFF_CT_NW_DST, oxm,
 1264|  4.52k|                flow->ct_nw_dst, match->wc.masks.ct_nw_dst);
 1265|  4.52k|    nxm_put_ipv6(&ctx, MFF_CT_IPV6_DST, oxm,
 1266|  4.52k|                 &flow->ct_ipv6_dst, &match->wc.masks.ct_ipv6_dst);
 1267|  4.52k|    if (flow->ct_nw_proto) {
  ------------------
  |  Branch (1267:9): [True: 5, False: 4.52k]
  ------------------
 1268|      5|        nxm_put_8m(&ctx, MFF_CT_NW_PROTO, oxm, flow->ct_nw_proto,
 1269|      5|                   match->wc.masks.ct_nw_proto);
 1270|      5|        nxm_put_16m(&ctx, MFF_CT_TP_SRC, oxm,
 1271|      5|                    flow->ct_tp_src, match->wc.masks.ct_tp_src);
 1272|      5|        nxm_put_16m(&ctx, MFF_CT_TP_DST, oxm,
 1273|      5|                    flow->ct_tp_dst, match->wc.masks.ct_tp_dst);
 1274|      5|    }
 1275|       |    /* OpenFlow 1.1+ Metadata. */
 1276|  4.52k|    nxm_put_64m(&ctx, MFF_METADATA, oxm,
 1277|  4.52k|                flow->metadata, match->wc.masks.metadata);
 1278|       |
 1279|       |    /* Cookie. */
 1280|  4.52k|    if (cookie_mask) {
  ------------------
  |  Branch (1280:9): [True: 107, False: 4.42k]
  ------------------
 1281|    107|        bool masked = cookie_mask != OVS_BE64_MAX;
  ------------------
  |  |   44|    107|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
 1282|       |
 1283|    107|        cookie &= cookie_mask;
 1284|    107|        nx_put_header__(b, NXM_NX_COOKIE, masked);
  ------------------
  |  |  187|    107|#define NXM_NX_COOKIE     NXM_HEADER  (0, 0x0001, 30, 0, 8)
  |  |  ------------------
  |  |  |  |  150|    107|    (((uint64_t) (CLASS) << 48) |                               \
  |  |  |  |  151|    107|     ((uint64_t) (FIELD) << 41) |                               \
  |  |  |  |  152|    107|     ((uint64_t) (HASMASK) << 40) |                             \
  |  |  |  |  153|    107|     ((uint64_t) (LENGTH) << 32) |                              \
  |  |  |  |  154|    107|     (VENDOR))
  |  |  ------------------
  ------------------
 1285|    107|        ofpbuf_put(b, &cookie, sizeof cookie);
 1286|    107|        if (masked) {
  ------------------
  |  Branch (1286:13): [True: 106, False: 1]
  ------------------
 1287|    106|            ofpbuf_put(b, &cookie_mask, sizeof cookie_mask);
 1288|    106|        }
 1289|    107|    }
 1290|       |
 1291|  4.52k|    if (match_has_default_packet_type(match) && !ctx.implied_ethernet) {
  ------------------
  |  Branch (1291:9): [True: 1.32k, False: 3.20k]
  |  Branch (1291:49): [True: 377, False: 944]
  ------------------
 1292|    377|        uint64_t pt_stub[16 / 8];
 1293|    377|        struct ofpbuf pt;
 1294|    377|        ofpbuf_use_stack(&pt, pt_stub, sizeof pt_stub);
 1295|    377|        nxm_put_entry_raw(&pt, MFF_PACKET_TYPE, oxm, &flow->packet_type,
 1296|    377|                          NULL, sizeof flow->packet_type);
 1297|       |
 1298|    377|        ofpbuf_insert(b, start_len, pt.data, pt.size);
 1299|    377|    }
 1300|       |
 1301|  4.52k|    match_len = b->size - start_len;
 1302|  4.52k|    return match_len;
 1303|  4.52k|}
nx-match.c:nxm_put_32m:
  872|   205k|{
  873|   205k|    nxm_put(ctx, field, version, &value, &mask, sizeof value);
  874|   205k|}
nx-match.c:nxm_put:
  831|   320k|{
  832|   320k|    if (!is_all_zeros(mask, n_bytes)) {
  ------------------
  |  Branch (832:9): [True: 3.55k, False: 316k]
  ------------------
  833|  3.55k|        bool masked = !is_all_ones(mask, n_bytes);
  834|  3.55k|        nxm_put__(ctx, field, version, value, masked ? mask : NULL, n_bytes);
  ------------------
  |  Branch (834:47): [True: 683, False: 2.86k]
  ------------------
  835|  3.55k|    }
  836|   320k|}
nx-match.c:nxm_put__:
  820|  4.22k|{
  821|  4.22k|    nxm_put_entry_raw(ctx->output, field, version, value, mask, n_bytes);
  822|  4.22k|    if (!ctx->implied_ethernet && mf_from_id(field)->prereqs != MFP_NONE) {
  ------------------
  |  Branch (822:9): [True: 3.36k, False: 859]
  |  Branch (822:35): [True: 951, False: 2.41k]
  ------------------
  823|       |        ctx->implied_ethernet = true;
  824|    951|    }
  825|  4.22k|}
nx-match.c:nxm_put_32:
  879|     66|{
  880|       |    nxm_put__(ctx, field, version, &value, NULL, sizeof value);
  881|     66|}
nx-match.c:nxm_put_16:
  864|     15|{
  865|       |    nxm_put__(ctx, field, version, &value, NULL, sizeof value);
  866|     15|}
nx-match.c:nxm_put_eth_masked:
  903|  9.16k|{
  904|  9.16k|    nxm_put(ctx, field, version, value.ea, mask.ea, ETH_ADDR_LEN);
  ------------------
  |  |  205|  9.16k|#define ETH_ADDR_LEN           6
  ------------------
  905|  9.16k|}
nx-match.c:nxm_put_16m:
  857|  22.7k|{
  858|  22.7k|    nxm_put(ctx, field, version, &value, &mask, sizeof value);
  859|  22.7k|}
nx-match.c:nxm_put_8:
  849|    589|{
  850|       |    nxm_put__(ctx, field, version, &value, NULL, sizeof value);
  851|    589|}
nx-match.c:nxm_put_ip:
  932|    586|{
  933|    586|    const struct flow *flow = &match->flow;
  934|    586|    ovs_be16 dl_type = get_dl_type(flow);
  935|       |
  936|    586|    if (dl_type == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (936:9): [True: 262, False: 324]
  ------------------
  937|    262|        nxm_put_32m(ctx, MFF_IPV4_SRC, oxm,
  938|    262|                    flow->nw_src, match->wc.masks.nw_src);
  939|    262|        nxm_put_32m(ctx, MFF_IPV4_DST, oxm,
  940|    262|                    flow->nw_dst, match->wc.masks.nw_dst);
  941|    324|    } else {
  942|    324|        nxm_put_ipv6(ctx, MFF_IPV6_SRC, oxm,
  943|    324|                     &flow->ipv6_src, &match->wc.masks.ipv6_src);
  944|    324|        nxm_put_ipv6(ctx, MFF_IPV6_DST, oxm,
  945|    324|                     &flow->ipv6_dst, &match->wc.masks.ipv6_dst);
  946|    324|    }
  947|       |
  948|    586|    nxm_put_frag(ctx, match, oxm);
  949|       |
  950|    586|    if (match->wc.masks.nw_tos & IP_DSCP_MASK) {
  ------------------
  |  |  724|    586|#define IP_DSCP_MASK 0xfc
  ------------------
  |  Branch (950:9): [True: 1, False: 585]
  ------------------
  951|      1|        if (oxm) {
  ------------------
  |  Branch (951:13): [True: 0, False: 1]
  ------------------
  952|      0|            nxm_put_8(ctx, MFF_IP_DSCP_SHIFTED, oxm,
  953|      0|                      flow->nw_tos >> 2);
  954|      1|        } else {
  955|      1|            nxm_put_8(ctx, MFF_IP_DSCP, oxm,
  956|      1|                      flow->nw_tos & IP_DSCP_MASK);
  ------------------
  |  |  724|      1|#define IP_DSCP_MASK 0xfc
  ------------------
  957|      1|        }
  958|      1|    }
  959|       |
  960|    586|    if (match->wc.masks.nw_tos & IP_ECN_MASK) {
  ------------------
  |  |  722|    586|#define IP_ECN_MASK 0x03
  ------------------
  |  Branch (960:9): [True: 6, False: 580]
  ------------------
  961|      6|        nxm_put_8(ctx, MFF_IP_ECN, oxm,
  962|      6|                  flow->nw_tos & IP_ECN_MASK);
  ------------------
  |  |  722|      6|#define IP_ECN_MASK 0x03
  ------------------
  963|      6|    }
  964|       |
  965|    586|    if (match->wc.masks.nw_ttl) {
  ------------------
  |  Branch (965:9): [True: 3, False: 583]
  ------------------
  966|      3|        nxm_put_8(ctx, MFF_IP_TTL, oxm, flow->nw_ttl);
  967|      3|    }
  968|       |
  969|    586|    nxm_put_32m(ctx, MFF_IPV6_LABEL, oxm,
  970|    586|                flow->ipv6_label, match->wc.masks.ipv6_label);
  971|       |
  972|    586|    if (match->wc.masks.nw_proto) {
  ------------------
  |  Branch (972:9): [True: 451, False: 135]
  ------------------
  973|    451|        nxm_put_8(ctx, MFF_IP_PROTO, oxm, flow->nw_proto);
  974|       |
  975|    451|        if (flow->nw_proto == IPPROTO_TCP) {
  ------------------
  |  Branch (975:13): [True: 93, False: 358]
  ------------------
  976|     93|            nxm_put_16m(ctx, MFF_TCP_SRC, oxm,
  977|     93|                        flow->tp_src, match->wc.masks.tp_src);
  978|     93|            nxm_put_16m(ctx, MFF_TCP_DST, oxm,
  979|     93|                        flow->tp_dst, match->wc.masks.tp_dst);
  980|     93|            nxm_put_16m(ctx, MFF_TCP_FLAGS, oxm,
  981|     93|                        flow->tcp_flags, match->wc.masks.tcp_flags);
  982|    358|        } else if (flow->nw_proto == IPPROTO_UDP) {
  ------------------
  |  Branch (982:20): [True: 98, False: 260]
  ------------------
  983|     98|            nxm_put_16m(ctx, MFF_UDP_SRC, oxm,
  984|     98|                        flow->tp_src, match->wc.masks.tp_src);
  985|     98|            nxm_put_16m(ctx, MFF_UDP_DST, oxm,
  986|     98|                        flow->tp_dst, match->wc.masks.tp_dst);
  987|    260|        } else if (flow->nw_proto == IPPROTO_SCTP) {
  ------------------
  |  Branch (987:20): [True: 57, False: 203]
  ------------------
  988|     57|            nxm_put_16m(ctx, MFF_SCTP_SRC, oxm, flow->tp_src,
  989|     57|                        match->wc.masks.tp_src);
  990|     57|            nxm_put_16m(ctx, MFF_SCTP_DST, oxm, flow->tp_dst,
  991|     57|                        match->wc.masks.tp_dst);
  992|    203|        } else if (is_icmpv4(flow, NULL)) {
  ------------------
  |  Branch (992:20): [True: 44, False: 159]
  ------------------
  993|     44|            if (match->wc.masks.tp_src) {
  ------------------
  |  Branch (993:17): [True: 7, False: 37]
  ------------------
  994|      7|                nxm_put_8(ctx, MFF_ICMPV4_TYPE, oxm,
  995|      7|                          ntohs(flow->tp_src));
  996|      7|            }
  997|     44|            if (match->wc.masks.tp_dst) {
  ------------------
  |  Branch (997:17): [True: 18, False: 26]
  ------------------
  998|     18|                nxm_put_8(ctx, MFF_ICMPV4_CODE, oxm,
  999|     18|                          ntohs(flow->tp_dst));
 1000|     18|            }
 1001|    159|        } else if (is_icmpv6(flow, NULL)) {
  ------------------
  |  Branch (1001:20): [True: 143, False: 16]
  ------------------
 1002|    143|            if (match->wc.masks.tp_src) {
  ------------------
  |  Branch (1002:17): [True: 78, False: 65]
  ------------------
 1003|     78|                nxm_put_8(ctx, MFF_ICMPV6_TYPE, oxm,
 1004|     78|                          ntohs(flow->tp_src));
 1005|     78|            }
 1006|    143|            if (match->wc.masks.tp_dst) {
  ------------------
  |  Branch (1006:17): [True: 19, False: 124]
  ------------------
 1007|     19|                nxm_put_8(ctx, MFF_ICMPV6_CODE, oxm,
 1008|     19|                          ntohs(flow->tp_dst));
 1009|     19|            }
 1010|    143|            if (is_nd(flow, NULL)) {
  ------------------
  |  Branch (1010:17): [True: 50, False: 93]
  ------------------
 1011|     50|                if (match->wc.masks.igmp_group_ip4) {
  ------------------
  |  Branch (1011:21): [True: 0, False: 50]
  ------------------
 1012|      0|                    nxm_put_32(ctx, MFF_ND_RESERVED, oxm,
 1013|      0|                           flow->igmp_group_ip4);
 1014|      0|                }
 1015|     50|                nxm_put_ipv6(ctx, MFF_ND_TARGET, oxm,
 1016|     50|                             &flow->nd_target, &match->wc.masks.nd_target);
 1017|     50|                if (match->wc.masks.tcp_flags) {
  ------------------
  |  Branch (1017:21): [True: 1, False: 49]
  ------------------
 1018|      1|                   nxm_put_8(ctx, MFF_ND_OPTIONS_TYPE, oxm,
 1019|      1|                             ntohs(flow->tcp_flags));
 1020|      1|                }
 1021|     50|                if (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT)) {
  ------------------
  |  Branch (1021:21): [True: 24, False: 26]
  ------------------
 1022|     24|                    nxm_put_eth_masked(ctx, MFF_ND_SLL, oxm,
 1023|     24|                                       flow->arp_sha, match->wc.masks.arp_sha);
 1024|     24|                }
 1025|     50|                if (flow->tp_src == htons(ND_NEIGHBOR_ADVERT)) {
  ------------------
  |  Branch (1025:21): [True: 26, False: 24]
  ------------------
 1026|     26|                    nxm_put_eth_masked(ctx, MFF_ND_TLL, oxm,
 1027|     26|                                       flow->arp_tha, match->wc.masks.arp_tha);
 1028|     26|                }
 1029|     50|            }
 1030|    143|        }
 1031|    451|    }
 1032|    586|}
nx-match.c:nxm_put_frag:
  919|    586|{
  920|    586|    uint8_t nw_frag = match->flow.nw_frag & FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|    586|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    586|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    586|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
  921|    586|    uint8_t nw_frag_mask = match->wc.masks.nw_frag & FLOW_NW_FRAG_MASK;
  ------------------
  |  |   56|    586|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    586|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    586|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
  922|       |
  923|    586|    nxm_put_8m(ctx, MFF_IP_FRAG, version, nw_frag,
  924|    586|               nw_frag_mask == FLOW_NW_FRAG_MASK ? UINT8_MAX : nw_frag_mask);
  ------------------
  |  |   56|    586|#define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   54|    586|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  |  |  ------------------
  |  |               #define FLOW_NW_FRAG_MASK  (FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER)
  |  |  ------------------
  |  |  |  |   55|    586|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  |  |  ------------------
  ------------------
  |  Branch (924:16): [True: 22, False: 564]
  ------------------
  925|    586|}
nx-match.c:nxm_put_64m:
  887|  9.05k|{
  888|  9.05k|    nxm_put(ctx, field, version, &value, &mask, sizeof value);
  889|  9.05k|}
nx-match.c:nxm_put_ipv6:
  911|  18.8k|{
  912|  18.8k|    nxm_put(ctx, field, version, value->s6_addr, mask->s6_addr,
  913|       |            sizeof value->s6_addr);
  914|  18.8k|}
nx-match.c:nxm_put_8m:
  842|  50.4k|{
  843|  50.4k|    nxm_put(ctx, field, version, &value, &mask, sizeof value);
  844|  50.4k|}
nx-match.c:nxm_put_128m:
  895|  4.52k|{
  896|  4.52k|    nxm_put(ctx, field, version, &value, &mask, sizeof(value));
  897|  4.52k|}
nx-match.c:nx_put_header__:
 1455|  26.2k|{
 1456|  26.2k|    uint64_t masked_header = masked ? nxm_make_wild_header(header) : header;
  ------------------
  |  Branch (1456:30): [True: 8.86k, False: 17.3k]
  ------------------
 1457|  26.2k|    ovs_be64 network_header = htonll(masked_header);
 1458|       |
 1459|  26.2k|    ofpbuf_put(b, &network_header, nxm_header_len(header));
 1460|  26.2k|}
nx-match.c:nx_put_header_len:
 1482|  21.7k|{
 1483|  21.7k|    uint64_t header = mf_oxm_header(field, version);
 1484|       |
 1485|  21.7k|    header = NXM_HEADER(nxm_vendor(header), nxm_class(header),
  ------------------
  |  |  150|  21.7k|    (((uint64_t) (CLASS) << 48) |                               \
  |  |  151|  21.7k|     ((uint64_t) (FIELD) << 41) |                               \
  |  |  152|  21.7k|     ((uint64_t) (HASMASK) << 40) |                             \
  |  |  153|  21.7k|     ((uint64_t) (LENGTH) << 32) |                              \
  |  |  154|  21.7k|     (VENDOR))
  ------------------
 1486|  21.7k|                        nxm_field(header), false,
 1487|  21.7k|                        nxm_experimenter_len(header) + n_bytes);
 1488|       |
 1489|  21.7k|    nx_put_header__(b, header, masked);
 1490|  21.7k|}
nx-match.c:mf_parse_subfield_name:
 2055|   192k|{
 2056|   192k|    *wild = name_len > 2 && !memcmp(&name[name_len - 2], "_W", 2);
  ------------------
  |  Branch (2056:13): [True: 139k, False: 52.6k]
  |  Branch (2056:29): [True: 352, False: 139k]
  ------------------
 2057|   192k|    if (*wild) {
  ------------------
  |  Branch (2057:9): [True: 352, False: 191k]
  ------------------
 2058|    352|        name_len -= 2;
 2059|    352|    }
 2060|       |
 2061|   192k|    return nxm_field_by_name(name, name_len);
 2062|   192k|}
nx-match.c:nxm_class:
  100|   356k|static int nxm_class(uint64_t header) { return header >> 48; }
nx-match.c:nxm_field:
  101|  30.6k|static int nxm_field(uint64_t header) { return (header >> 41) & 0x7f; }
nx-match.c:nxm_init:
 2263|   470k|{
 2264|   470k|    static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
  ------------------
  |  |  134|   470k|    {                                           \
  |  |  135|   470k|        false,                                  \
  |  |  136|   470k|        OVS_MUTEX_INITIALIZER,                  \
  |  |  ------------------
  |  |  |  |   45|   470k|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|   470k|                                "<unlocked>" }
  |  |  ------------------
  |  |  137|   470k|    }
  ------------------
 2265|   470k|    if (ovsthread_once_start(&once)) {
  ------------------
  |  Branch (2265:9): [True: 1, False: 470k]
  ------------------
 2266|      1|        hmap_init(&nxm_header_map);
 2267|      1|        hmap_init(&nxm_name_map);
 2268|    212|        for (int i = 0; i < MFF_N_IDS; i++) {
  ------------------
  |  Branch (2268:25): [True: 211, False: 1]
  ------------------
 2269|    211|            ovs_list_init(&nxm_mf_map[i]);
 2270|    211|        }
 2271|      1|        for (struct nxm_field_index *nfi = all_nxm_fields;
 2272|    238|             nfi < &all_nxm_fields[ARRAY_SIZE(all_nxm_fields)]; nfi++) {
  ------------------
  |  |  297|    238|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|    238|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    238|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|    238|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    238|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    238|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2272:14): [True: 237, False: 1]
  ------------------
 2273|    237|            hmap_insert(&nxm_header_map, &nfi->header_node,
  ------------------
  |  |  101|    237|    hmap_insert_at(HMAP, NODE, HASH, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    237|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    237|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    237|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2274|    237|                        hash_uint64(nxm_no_len(nfi->nf.header)));
 2275|    237|            hmap_insert(&nxm_name_map, &nfi->name_node,
  ------------------
  |  |  101|    237|    hmap_insert_at(HMAP, NODE, HASH, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    237|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    237|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    237|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2276|    237|                        hash_string(nfi->nf.name, 0));
 2277|    237|            ovs_list_push_back(&nxm_mf_map[nfi->nf.id], &nfi->mf_node);
 2278|    237|        }
 2279|      1|        ovsthread_once_done(&once);
 2280|      1|    }
 2281|   470k|}
nx-match.c:nxm_field_by_name:
 2318|   192k|{
 2319|   192k|    const struct nxm_field_index *nfi;
 2320|       |
 2321|   192k|    nxm_init();
 2322|   192k|    HMAP_FOR_EACH_WITH_HASH (nfi, name_node, hash_bytes(name, len, 0),
  ------------------
  |  |  138|   192k|    for (INIT_MULTIVAR(NODE, MEMBER, hmap_first_with_hash(HMAP, HASH),        \
  |  |  ------------------
  |  |  |  |  171|   192k|    INIT_MULTIVAR_EXP(VAR, MEMBER, POINTER, ITER_TYPE, (void) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  174|   192k|    ITER_TYPE *ITER_VAR(VAR) = ( __VA_ARGS__ , (ITER_TYPE *) POINTER)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  139|   192k|                       struct hmap_node);                                     \
  |  |  140|   192k|         CONDITION_MULTIVAR(NODE, MEMBER, ITER_VAR(NODE) != NULL);            \
  |  |  ------------------
  |  |  |  |  185|   192k|    ((EXPR) ?                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:5): [True: 2.90k, False: 189k]
  |  |  |  |  |  Branch (185:6): [True: 2.90k, False: 189k]
  |  |  |  |  ------------------
  |  |  |  |  186|   192k|     (((VAR) = OBJECT_CONTAINING(ITER_VAR(VAR), VAR, MEMBER)), 1) :           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|  2.90k|    ((OVS_TYPEOF(OBJECT)) (void *)                                      \
  |  |  |  |  |  |  135|  2.90k|     ((char *) (POINTER) - OBJECT_OFFSETOF(OBJECT, MEMBER)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|  2.90k|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|   192k|     (((VAR) = NULL), 0))
  |  |  ------------------
  |  |  141|   192k|         UPDATE_MULTIVAR(NODE, hmap_next_with_hash(ITER_VAR(NODE))))
  |  |  ------------------
  |  |  |  |  193|    405|    (ITER_VAR(VAR) = NEXT_ITER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    405|#define ITER_VAR(NAME) NAME ## __iterator__
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2323|   192k|                             &nxm_name_map) {
 2324|  2.90k|        if (strlen(nfi->nf.name) == len && !memcmp(nfi->nf.name, name, len)) {
  ------------------
  |  Branch (2324:13): [True: 2.49k, False: 404]
  |  Branch (2324:44): [True: 2.49k, False: 1]
  ------------------
 2325|  2.49k|            return &nfi->nf;
 2326|  2.49k|        }
 2327|  2.90k|    }
 2328|   189k|    return NULL;
 2329|   192k|}
nx-match.c:nxm_field_by_mf_id:
 2333|   277k|{
 2334|   277k|    const struct nxm_field_index *nfi;
 2335|   277k|    const struct nxm_field *f;
 2336|       |
 2337|   277k|    nxm_init();
 2338|       |
 2339|   277k|    f = NULL;
 2340|   291k|    LIST_FOR_EACH (nfi, mf_node, &nxm_mf_map[id]) {
  ------------------
  |  |   76|   277k|    for (INIT_MULTIVAR(VAR, MEMBER, (LIST)->next, struct ovs_list);           \
  |  |  ------------------
  |  |  |  |  171|   277k|    INIT_MULTIVAR_EXP(VAR, MEMBER, POINTER, ITER_TYPE, (void) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  174|   277k|    ITER_TYPE *ITER_VAR(VAR) = ( __VA_ARGS__ , (ITER_TYPE *) POINTER)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|   569k|         CONDITION_MULTIVAR(VAR, MEMBER, ITER_VAR(VAR) != (LIST));            \
  |  |  ------------------
  |  |  |  |  185|   569k|    ((EXPR) ?                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:5): [True: 291k, False: 277k]
  |  |  |  |  |  Branch (185:6): [True: 291k, False: 277k]
  |  |  |  |  ------------------
  |  |  |  |  186|   569k|     (((VAR) = OBJECT_CONTAINING(ITER_VAR(VAR), VAR, MEMBER)), 1) :           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|   291k|    ((OVS_TYPEOF(OBJECT)) (void *)                                      \
  |  |  |  |  |  |  135|   291k|     ((char *) (POINTER) - OBJECT_OFFSETOF(OBJECT, MEMBER)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|   291k|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|   569k|     (((VAR) = NULL), 0))
  |  |  ------------------
  |  |   78|   291k|         UPDATE_MULTIVAR(VAR, ITER_VAR(VAR)->next))
  |  |  ------------------
  |  |  |  |  193|   291k|    (ITER_VAR(VAR) = NEXT_ITER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|   291k|#define ITER_VAR(NAME) NAME ## __iterator__
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2341|   291k|        if (!f || version >= nfi->nf.version) {
  ------------------
  |  Branch (2341:13): [True: 276k, False: 15.5k]
  |  Branch (2341:19): [True: 3.25k, False: 12.2k]
  ------------------
 2342|   279k|            f = &nfi->nf;
 2343|   279k|        }
 2344|   291k|    }
 2345|   277k|    return f;
 2346|   277k|}

ofp-actions.c:nxm_encode_ofs_nbits:
  161|   111k|{
  162|       |    return htons((ofs << 6) | (n_bits - 1));
  163|   111k|}

ofpact_put_set_field:
 3385|  47.8k|{
 3386|       |    /* Ensure there's enough space for:
 3387|       |     * - value (8-byte aligned)
 3388|       |     * - mask  (8-byte aligned)
 3389|       |     * - padding (to make the whole ofpact_set_field 8-byte aligned)
 3390|       |     */
 3391|  47.8k|    size_t total_size = 2 * ROUND_UP(field->n_bytes, OFPACT_ALIGNTO);
  ------------------
  |  |  303|  47.8k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|  47.8k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
 3392|  47.8k|    struct ofpact_set_field *sf = ofpact_put_SET_FIELD(ofpacts);
 3393|  47.8k|    sf->field = field;
 3394|       |
 3395|       |    /* Fill with all zeroes to make sure the padding is initialized. */
 3396|  47.8k|    ofpbuf_put_zeros(ofpacts, total_size);
 3397|  47.8k|    sf = ofpacts->header;
 3398|       |
 3399|       |    /* Fill in the value and mask if given, otherwise keep the zeroes
 3400|       |     * so that the caller may fill in the value and mask itself. */
 3401|  47.8k|    if (value) {
  ------------------
  |  Branch (3401:9): [True: 47.0k, False: 713]
  ------------------
 3402|  47.0k|        memcpy(sf->value, value, field->n_bytes);
 3403|  47.0k|        if (mask) {
  ------------------
  |  Branch (3403:13): [True: 47.0k, False: 0]
  ------------------
 3404|  47.0k|            memcpy(ofpact_set_field_mask(sf), mask, field->n_bytes);
  ------------------
  |  |  563|  47.0k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|  47.0k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|  47.0k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|  47.0k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 3405|  47.0k|        } else {
 3406|      0|            memset(ofpact_set_field_mask(sf), 0xff, field->n_bytes);
  ------------------
  |  |  563|      0|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|      0|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|      0|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|      0|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 3407|      0|        }
 3408|  47.0k|    }
 3409|       |
 3410|       |    /* Update length. */
 3411|  47.8k|    ofpact_finish_SET_FIELD(ofpacts, &sf);
 3412|       |
 3413|  47.8k|    return sf;
 3414|  47.8k|}
ofpact_put_reg_load:
 3424|    713|{
 3425|    713|    struct ofpact_set_field *sf = ofpact_put_set_field(ofpacts, field, value,
 3426|    713|                                                       mask);
 3427|    713|    sf->ofpact.raw = NXAST_RAW_REG_LOAD;
 3428|       |
 3429|    713|    return sf;
 3430|    713|}
ovs_instruction_name_from_type:
 8363|     65|{
 8364|     65|    return type < ARRAY_SIZE(inst_info) ? inst_info[type].name : NULL;
  ------------------
  |  |  297|     65|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|     65|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|     65|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|     65|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     65|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|     65|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8364:12): [True: 65, False: 0]
  ------------------
 8365|     65|}
ovs_instruction_type_from_ofpact_type:
 8382|   291k|{
 8383|   291k|    switch (type) {
 8384|    269|    case OFPACT_METER:
  ------------------
  |  Branch (8384:5): [True: 269, False: 290k]
  ------------------
 8385|    269|        return (version >= OFP15_VERSION
  ------------------
  |  Branch (8385:17): [True: 0, False: 269]
  ------------------
 8386|    269|                ? OVSINST_OFPIT11_APPLY_ACTIONS
 8387|    269|                : OVSINST_OFPIT13_METER);
 8388|     28|    case OFPACT_CLEAR_ACTIONS:
  ------------------
  |  Branch (8388:5): [True: 28, False: 291k]
  ------------------
 8389|     28|        return OVSINST_OFPIT11_CLEAR_ACTIONS;
 8390|    140|    case OFPACT_WRITE_ACTIONS:
  ------------------
  |  Branch (8390:5): [True: 140, False: 290k]
  ------------------
 8391|    140|        return OVSINST_OFPIT11_WRITE_ACTIONS;
 8392|     19|    case OFPACT_WRITE_METADATA:
  ------------------
  |  Branch (8392:5): [True: 19, False: 291k]
  ------------------
 8393|     19|        return OVSINST_OFPIT11_WRITE_METADATA;
 8394|     27|    case OFPACT_GOTO_TABLE:
  ------------------
  |  Branch (8394:5): [True: 27, False: 291k]
  ------------------
 8395|     27|        return OVSINST_OFPIT11_GOTO_TABLE;
 8396|   116k|    case OFPACT_OUTPUT:
  ------------------
  |  Branch (8396:5): [True: 116k, False: 174k]
  ------------------
 8397|   116k|    case OFPACT_GROUP:
  ------------------
  |  Branch (8397:5): [True: 215, False: 290k]
  ------------------
 8398|   124k|    case OFPACT_CLONE:
  ------------------
  |  Branch (8398:5): [True: 7.45k, False: 283k]
  ------------------
 8399|   132k|    case OFPACT_CONTROLLER:
  ------------------
  |  Branch (8399:5): [True: 8.68k, False: 282k]
  ------------------
 8400|   134k|    case OFPACT_ENQUEUE:
  ------------------
  |  Branch (8400:5): [True: 1.86k, False: 289k]
  ------------------
 8401|   135k|    case OFPACT_OUTPUT_REG:
  ------------------
  |  Branch (8401:5): [True: 718, False: 290k]
  ------------------
 8402|   136k|    case OFPACT_OUTPUT_TRUNC:
  ------------------
  |  Branch (8402:5): [True: 693, False: 290k]
  ------------------
 8403|   138k|    case OFPACT_BUNDLE:
  ------------------
  |  Branch (8403:5): [True: 1.94k, False: 289k]
  ------------------
 8404|   140k|    case OFPACT_SET_VLAN_VID:
  ------------------
  |  Branch (8404:5): [True: 2.81k, False: 288k]
  ------------------
 8405|   143k|    case OFPACT_SET_VLAN_PCP:
  ------------------
  |  Branch (8405:5): [True: 2.87k, False: 288k]
  ------------------
 8406|   146k|    case OFPACT_STRIP_VLAN:
  ------------------
  |  Branch (8406:5): [True: 2.92k, False: 288k]
  ------------------
 8407|   148k|    case OFPACT_PUSH_VLAN:
  ------------------
  |  Branch (8407:5): [True: 1.86k, False: 289k]
  ------------------
 8408|   149k|    case OFPACT_SET_ETH_SRC:
  ------------------
  |  Branch (8408:5): [True: 582, False: 290k]
  ------------------
 8409|   149k|    case OFPACT_SET_ETH_DST:
  ------------------
  |  Branch (8409:5): [True: 587, False: 290k]
  ------------------
 8410|   150k|    case OFPACT_SET_IPV4_SRC:
  ------------------
  |  Branch (8410:5): [True: 1.19k, False: 289k]
  ------------------
 8411|   151k|    case OFPACT_SET_IPV4_DST:
  ------------------
  |  Branch (8411:5): [True: 1.09k, False: 290k]
  ------------------
 8412|   153k|    case OFPACT_SET_IP_DSCP:
  ------------------
  |  Branch (8412:5): [True: 1.39k, False: 289k]
  ------------------
 8413|   155k|    case OFPACT_SET_IP_ECN:
  ------------------
  |  Branch (8413:5): [True: 1.93k, False: 289k]
  ------------------
 8414|   156k|    case OFPACT_SET_IP_TTL:
  ------------------
  |  Branch (8414:5): [True: 1.61k, False: 289k]
  ------------------
 8415|   159k|    case OFPACT_SET_L4_SRC_PORT:
  ------------------
  |  Branch (8415:5): [True: 2.88k, False: 288k]
  ------------------
 8416|   161k|    case OFPACT_SET_L4_DST_PORT:
  ------------------
  |  Branch (8416:5): [True: 1.93k, False: 289k]
  ------------------
 8417|   162k|    case OFPACT_REG_MOVE:
  ------------------
  |  Branch (8417:5): [True: 736, False: 290k]
  ------------------
 8418|   197k|    case OFPACT_SET_FIELD:
  ------------------
  |  Branch (8418:5): [True: 34.5k, False: 256k]
  ------------------
 8419|   197k|    case OFPACT_STACK_PUSH:
  ------------------
  |  Branch (8419:5): [True: 386, False: 290k]
  ------------------
 8420|   199k|    case OFPACT_STACK_POP:
  ------------------
  |  Branch (8420:5): [True: 1.95k, False: 289k]
  ------------------
 8421|   202k|    case OFPACT_DEC_TTL:
  ------------------
  |  Branch (8421:5): [True: 3.50k, False: 287k]
  ------------------
 8422|   204k|    case OFPACT_SET_MPLS_LABEL:
  ------------------
  |  Branch (8422:5): [True: 1.74k, False: 289k]
  ------------------
 8423|   207k|    case OFPACT_SET_MPLS_TC:
  ------------------
  |  Branch (8423:5): [True: 3.30k, False: 287k]
  ------------------
 8424|   209k|    case OFPACT_SET_MPLS_TTL:
  ------------------
  |  Branch (8424:5): [True: 2.05k, False: 289k]
  ------------------
 8425|   212k|    case OFPACT_DEC_MPLS_TTL:
  ------------------
  |  Branch (8425:5): [True: 2.81k, False: 288k]
  ------------------
 8426|   213k|    case OFPACT_PUSH_MPLS:
  ------------------
  |  Branch (8426:5): [True: 785, False: 290k]
  ------------------
 8427|   215k|    case OFPACT_POP_MPLS:
  ------------------
  |  Branch (8427:5): [True: 2.19k, False: 288k]
  ------------------
 8428|   217k|    case OFPACT_SET_TUNNEL:
  ------------------
  |  Branch (8428:5): [True: 2.12k, False: 289k]
  ------------------
 8429|   218k|    case OFPACT_SET_QUEUE:
  ------------------
  |  Branch (8429:5): [True: 571, False: 290k]
  ------------------
 8430|   219k|    case OFPACT_POP_QUEUE:
  ------------------
  |  Branch (8430:5): [True: 1.06k, False: 290k]
  ------------------
 8431|   220k|    case OFPACT_FIN_TIMEOUT:
  ------------------
  |  Branch (8431:5): [True: 752, False: 290k]
  ------------------
 8432|   221k|    case OFPACT_RESUBMIT:
  ------------------
  |  Branch (8432:5): [True: 1.14k, False: 289k]
  ------------------
 8433|   257k|    case OFPACT_LEARN:
  ------------------
  |  Branch (8433:5): [True: 36.2k, False: 254k]
  ------------------
 8434|   257k|    case OFPACT_CONJUNCTION:
  ------------------
  |  Branch (8434:5): [True: 0, False: 291k]
  ------------------
 8435|   258k|    case OFPACT_MULTIPATH:
  ------------------
  |  Branch (8435:5): [True: 526, False: 290k]
  ------------------
 8436|   260k|    case OFPACT_NOTE:
  ------------------
  |  Branch (8436:5): [True: 2.11k, False: 289k]
  ------------------
 8437|   261k|    case OFPACT_EXIT:
  ------------------
  |  Branch (8437:5): [True: 1.55k, False: 289k]
  ------------------
 8438|   261k|    case OFPACT_UNROLL_XLATE:
  ------------------
  |  Branch (8438:5): [True: 0, False: 291k]
  ------------------
 8439|   263k|    case OFPACT_SAMPLE:
  ------------------
  |  Branch (8439:5): [True: 1.61k, False: 289k]
  ------------------
 8440|   264k|    case OFPACT_DEBUG_RECIRC:
  ------------------
  |  Branch (8440:5): [True: 1.45k, False: 289k]
  ------------------
 8441|   266k|    case OFPACT_DEBUG_SLOW:
  ------------------
  |  Branch (8441:5): [True: 2.00k, False: 289k]
  ------------------
 8442|   274k|    case OFPACT_CT:
  ------------------
  |  Branch (8442:5): [True: 7.84k, False: 283k]
  ------------------
 8443|   276k|    case OFPACT_CT_CLEAR:
  ------------------
  |  Branch (8443:5): [True: 1.81k, False: 289k]
  ------------------
 8444|   283k|    case OFPACT_NAT:
  ------------------
  |  Branch (8444:5): [True: 7.01k, False: 284k]
  ------------------
 8445|   285k|    case OFPACT_ENCAP:
  ------------------
  |  Branch (8445:5): [True: 2.32k, False: 288k]
  ------------------
 8446|   289k|    case OFPACT_DECAP:
  ------------------
  |  Branch (8446:5): [True: 3.12k, False: 288k]
  ------------------
 8447|   289k|    case OFPACT_DEC_NSH_TTL:
  ------------------
  |  Branch (8447:5): [True: 952, False: 290k]
  ------------------
 8448|   290k|    case OFPACT_CHECK_PKT_LARGER:
  ------------------
  |  Branch (8448:5): [True: 345, False: 290k]
  ------------------
 8449|   290k|    case OFPACT_DELETE_FIELD:
  ------------------
  |  Branch (8449:5): [True: 313, False: 290k]
  ------------------
 8450|   290k|    default:
  ------------------
  |  Branch (8450:5): [True: 0, False: 291k]
  ------------------
 8451|   290k|        return OVSINST_OFPIT11_APPLY_ACTIONS;
 8452|   291k|    }
 8453|   291k|}
ofpact_check_output_port:
 8782|   152k|{
 8783|   152k|    switch (port) {
 8784|    826|    case OFPP_IN_PORT:
  ------------------
  |  |   39|    826|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  ------------------
  |  |  |  |  157|    826|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8784:5): [True: 826, False: 151k]
  ------------------
 8785|  2.32k|    case OFPP_TABLE:
  ------------------
  |  |   40|  2.32k|#define OFPP_TABLE      OFP_PORT_C(0xfff9) /* Perform actions in flow table. */
  |  |  ------------------
  |  |  |  |  157|  2.32k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8785:5): [True: 1.49k, False: 151k]
  ------------------
 8786|  2.50k|    case OFPP_NORMAL:
  ------------------
  |  |   41|  2.50k|#define OFPP_NORMAL     OFP_PORT_C(0xfffa) /* Process with normal L2/L3. */
  |  |  ------------------
  |  |  |  |  157|  2.50k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8786:5): [True: 183, False: 152k]
  ------------------
 8787|  2.90k|    case OFPP_FLOOD:
  ------------------
  |  |   42|  2.90k|#define OFPP_FLOOD      OFP_PORT_C(0xfffb) /* All ports except input port and
  |  |  ------------------
  |  |  |  |  157|  2.90k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8787:5): [True: 394, False: 152k]
  ------------------
 8788|  3.51k|    case OFPP_ALL:
  ------------------
  |  |   44|  3.51k|#define OFPP_ALL        OFP_PORT_C(0xfffc) /* All ports except input port. */
  |  |  ------------------
  |  |  |  |  157|  3.51k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8788:5): [True: 608, False: 152k]
  ------------------
 8789|  4.59k|    case OFPP_CONTROLLER:
  ------------------
  |  |   45|  4.59k|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  ------------------
  |  |  |  |  157|  4.59k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8789:5): [True: 1.08k, False: 151k]
  ------------------
 8790|  4.72k|    case OFPP_LOCAL:
  ------------------
  |  |   46|  4.72k|#define OFPP_LOCAL      OFP_PORT_C(0xfffe) /* Local openflow "port". */
  |  |  ------------------
  |  |  |  |  157|  4.72k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8790:5): [True: 133, False: 152k]
  ------------------
 8791|  4.72k|        return 0;
 8792|       |
 8793|     10|    case OFPP_NONE:
  ------------------
  |  |   47|     10|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|     10|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (8793:5): [True: 10, False: 152k]
  ------------------
 8794|     10|        return OFPERR_OFPBAC_BAD_OUT_PORT;
 8795|       |
 8796|   147k|    default:
  ------------------
  |  Branch (8796:5): [True: 147k, False: 4.73k]
  ------------------
 8797|   147k|        if (ofp_to_u16(port) < ofp_to_u16(max_ports)) {
  ------------------
  |  Branch (8797:13): [True: 147k, False: 40]
  ------------------
 8798|   147k|            return 0;
 8799|   147k|        }
 8800|     40|        return OFPERR_OFPBAC_BAD_OUT_PORT;
 8801|   152k|    }
 8802|   152k|}
ofpacts_check:
 8851|  20.5k|{
 8852|       |    /* Save fields that might temporarily be modified. */
 8853|  20.5k|    struct flow *flow = &cp->match->flow;
 8854|  20.5k|    ovs_be32 packet_type = flow->packet_type;
 8855|  20.5k|    ovs_be16 dl_type = flow->dl_type;
 8856|  20.5k|    uint8_t nw_proto = flow->nw_proto;
 8857|  20.5k|    union flow_vlan_hdr vlans[FLOW_MAX_VLAN_HEADERS];
 8858|  20.5k|    memcpy(vlans, flow->vlans, sizeof vlans);
 8859|       |
 8860|       |    /* Check all the actions. */
 8861|  20.5k|    cp->usable_protocols = OFPUTIL_P_ANY;
  ------------------
  |  |  100|  20.5k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
 8862|  20.5k|    enum ofperr error = 0;
 8863|  20.5k|    struct ofpact *a;
 8864|   242k|    OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
  ------------------
  |  |  261|   262k|    for ((POS) = (OFPACTS); (POS) < ofpact_end(OFPACTS, OFPACTS_LEN);  \
  |  |  ------------------
  |  |  |  Branch (261:29): [True: 242k, False: 19.7k]
  |  |  ------------------
  |  |  262|   241k|         (POS) = ofpact_next(POS))
  ------------------
 8865|   242k|        error = ofpact_check__(a, cp);
 8866|   242k|        if (error) {
  ------------------
  |  Branch (8866:13): [True: 789, False: 241k]
  ------------------
 8867|    789|            break;
 8868|    789|        }
 8869|   242k|    }
 8870|       |
 8871|       |    /* Restore fields that may have been modified. */
 8872|  20.5k|    flow->packet_type = packet_type;
 8873|  20.5k|    flow->dl_type = dl_type;
 8874|  20.5k|    memcpy(flow->vlans, vlans, sizeof vlans);
 8875|  20.5k|    flow->nw_proto = nw_proto;
 8876|       |
 8877|  20.5k|    return error;
 8878|  20.5k|}
ofpact_get_mf_dst:
 8898|   253k|{
 8899|   253k|    if (ofpact->type == OFPACT_SET_FIELD) {
  ------------------
  |  Branch (8899:9): [True: 29.4k, False: 224k]
  ------------------
 8900|  29.4k|        const struct ofpact_set_field *orl;
 8901|       |
 8902|  29.4k|        orl = CONTAINER_OF(ofpact, struct ofpact_set_field, ofpact);
  ------------------
  |  |  124|  29.4k|        ((STRUCT *) (void *) ((char *) (POINTER) - offsetof (STRUCT, MEMBER)))
  ------------------
 8903|  29.4k|        return orl->field;
 8904|   224k|    } else if (ofpact->type == OFPACT_REG_MOVE) {
  ------------------
  |  Branch (8904:16): [True: 509, False: 223k]
  ------------------
 8905|    509|        const struct ofpact_reg_move *orm;
 8906|       |
 8907|    509|        orm = CONTAINER_OF(ofpact, struct ofpact_reg_move, ofpact);
  ------------------
  |  |  124|    509|        ((STRUCT *) (void *) ((char *) (POINTER) - offsetof (STRUCT, MEMBER)))
  ------------------
 8908|    509|        return orm->dst.field;
 8909|    509|    }
 8910|       |
 8911|   223k|    return NULL;
 8912|   253k|}
ofpacts_put_openflow_actions:
 9095|  23.0k|{
 9096|  23.0k|    const struct ofpact *a;
 9097|  23.0k|    size_t start_size = openflow->size;
 9098|       |
 9099|   198k|    OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
  ------------------
  |  |  261|   221k|    for ((POS) = (OFPACTS); (POS) < ofpact_end(OFPACTS, OFPACTS_LEN);  \
  |  |  ------------------
  |  |  |  Branch (261:29): [True: 198k, False: 23.0k]
  |  |  ------------------
  |  |  262|   198k|         (POS) = ofpact_next(POS))
  ------------------
 9100|   198k|        encode_ofpact(a, ofp_version, openflow);
 9101|   198k|    }
 9102|  23.0k|    return openflow->size - start_size;
 9103|  23.0k|}
ofpacts_put_openflow_instructions:
 9117|    675|{
 9118|    675|    const struct ofpact *end = ofpact_end(ofpacts, ofpacts_len);
 9119|    675|    const struct ofpact *a;
 9120|       |
 9121|    675|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (9121:9): [True: 0, False: 675]
  ------------------
 9122|      0|        ofpacts_put_openflow_actions(ofpacts, ofpacts_len, openflow,
 9123|      0|                                     ofp_version);
 9124|      0|        return;
 9125|      0|    }
 9126|       |
 9127|    675|    a = ofpacts;
 9128|  1.38k|    while (a < end) {
  ------------------
  |  Branch (9128:12): [True: 714, False: 675]
  ------------------
 9129|    714|        if (ofpact_is_apply_actions(a, ofp_version)) {
  ------------------
  |  Branch (9129:13): [True: 535, False: 179]
  ------------------
 9130|    535|            size_t ofs = openflow->size;
 9131|       |
 9132|    535|            instruction_put_OFPIT11_APPLY_ACTIONS(openflow);
 9133|  37.4k|            do {
 9134|  37.4k|                encode_ofpact(a, ofp_version, openflow);
 9135|  37.4k|                a = ofpact_next(a);
 9136|  37.4k|            } while (a < end && ofpact_is_apply_actions(a, ofp_version));
  ------------------
  |  Branch (9136:22): [True: 36.9k, False: 512]
  |  Branch (9136:33): [True: 36.9k, False: 23]
  ------------------
 9137|    535|            ofpacts_update_instruction_actions(openflow, ofs);
 9138|    535|        } else {
 9139|    179|            encode_ofpact(a, ofp_version, openflow);
 9140|    179|            a = ofpact_next(a);
 9141|    179|        }
 9142|    714|    }
 9143|    675|}
ofpact_put:
 9505|   394k|{
 9506|   394k|    struct ofpact *ofpact;
 9507|       |
 9508|   394k|    ofpacts->header = ofpbuf_put_uninit(ofpacts, len);
 9509|   394k|    ofpact = ofpacts->header;
 9510|   394k|    ofpact_init(ofpact, type, len);
 9511|   394k|    return ofpact;
 9512|   394k|}
ofpact_init:
 9517|   397k|{
 9518|   397k|    memset(ofpact, 0, len);
 9519|   397k|    ofpact->type = type;
 9520|   397k|    ofpact->raw = -1;
 9521|   397k|    ofpact->len = len;
 9522|   397k|}
ofpact_finish:
 9535|   121k|{
 9536|   121k|    ptrdiff_t len;
 9537|       |
 9538|   121k|    ovs_assert(ofpact == ofpacts->header);
  ------------------
  |  |   62|   121k|#define ovs_assert ovs_ignore
  ------------------
 9539|   121k|    len = (char *) ofpbuf_tail(ofpacts) - (char *) ofpact;
 9540|   121k|    ovs_assert(len > 0 && len <= UINT16_MAX);
  ------------------
  |  |   62|   121k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (9540:16): [True: 121k, False: 0]
  |  Branch (9540:27): [True: 121k, False: 0]
  ------------------
 9541|   121k|    ofpact->len = len;
 9542|   121k|    ofpbuf_padto(ofpacts, OFPACT_ALIGN(ofpacts->size));
  ------------------
  |  |  205|   121k|#define OFPACT_ALIGN(SIZE) ROUND_UP(SIZE, OFPACT_ALIGNTO)
  |  |  ------------------
  |  |  |  |  303|   121k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|   121k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9543|       |
 9544|   121k|    return ofpacts->header;
 9545|   121k|}
ofpacts_parse_instructions:
 9707|  13.9k|{
 9708|       |    return ofpacts_parse_copy(s, pp, true, 0);
 9709|  13.9k|}
ofpact_name:
 9713|     31|{
 9714|     31|    switch (type) {
  ------------------
  |  Branch (9714:13): [True: 31, False: 0]
  ------------------
 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
 9716|     31|        OFPACTS
  ------------------
  |  |   64|      3|    OFPACT(OUTPUT,          ofpact_output,      ofpact, "output")       \
  |  |  ------------------
  |  |  |  | 9715|      3|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 3, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      3|    OFPACT(GROUP,           ofpact_group,       ofpact, "group")        \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|    OFPACT(CONTROLLER,      ofpact_controller,  userdata, "controller") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|    OFPACT(ENQUEUE,         ofpact_enqueue,     ofpact, "enqueue")      \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|    OFPACT(OUTPUT_REG,      ofpact_output_reg,  ofpact, "output_reg")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|    OFPACT(BUNDLE,          ofpact_bundle,      members, "bundle")      \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|                                                                        \
  |  |   71|      0|    /* Header changes. */                                               \
  |  |   72|      1|    OFPACT(SET_FIELD,       ofpact_set_field,   ofpact, "set_field")    \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      1|    OFPACT(SET_VLAN_VID,    ofpact_vlan_vid,    ofpact, "set_vlan_vid") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|    OFPACT(SET_VLAN_PCP,    ofpact_vlan_pcp,    ofpact, "set_vlan_pcp") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|    OFPACT(STRIP_VLAN,      ofpact_null,        ofpact, "strip_vlan")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    OFPACT(PUSH_VLAN,       ofpact_push_vlan,   ofpact, "push_vlan")    \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|    OFPACT(SET_ETH_SRC,     ofpact_mac,         ofpact, "mod_dl_src")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|    OFPACT(SET_ETH_DST,     ofpact_mac,         ofpact, "mod_dl_dst")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|      0|    OFPACT(SET_IPV4_SRC,    ofpact_ipv4,        ofpact, "mod_nw_src")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|      0|    OFPACT(SET_IPV4_DST,    ofpact_ipv4,        ofpact, "mod_nw_dst")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|      0|    OFPACT(SET_IP_DSCP,     ofpact_dscp,        ofpact, "mod_nw_tos")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|    OFPACT(SET_IP_ECN,      ofpact_ecn,         ofpact, "mod_nw_ecn")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|    OFPACT(SET_IP_TTL,      ofpact_ip_ttl,      ofpact, "mod_nw_ttl")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|    OFPACT(SET_L4_SRC_PORT, ofpact_l4_port,     ofpact, "mod_tp_src")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      1|    OFPACT(SET_L4_DST_PORT, ofpact_l4_port,     ofpact, "mod_tp_dst")   \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      1|    OFPACT(REG_MOVE,        ofpact_reg_move,    ofpact, "move")         \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|    OFPACT(STACK_PUSH,      ofpact_stack,       ofpact, "push")         \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|    OFPACT(STACK_POP,       ofpact_stack,       ofpact, "pop")          \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      1|    OFPACT(DEC_TTL,         ofpact_cnt_ids,     cnt_ids, "dec_ttl")     \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      1|    OFPACT(SET_MPLS_LABEL,  ofpact_mpls_label,  ofpact, "set_mpls_label") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|    OFPACT(SET_MPLS_TC,     ofpact_mpls_tc,     ofpact, "set_mpls_tc")  \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|    OFPACT(SET_MPLS_TTL,    ofpact_mpls_ttl,    ofpact, "set_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|    OFPACT(DEC_MPLS_TTL,    ofpact_null,        ofpact, "dec_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|    OFPACT(PUSH_MPLS,       ofpact_push_mpls,   ofpact, "push_mpls")    \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|    OFPACT(POP_MPLS,        ofpact_pop_mpls,    ofpact, "pop_mpls")     \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      1|    OFPACT(DEC_NSH_TTL,     ofpact_null,        ofpact, "dec_nsh_ttl")  \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      1|    OFPACT(DELETE_FIELD,    ofpact_delete_field, ofpact, "delete_field") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|      0|                                                                        \
  |  |   99|      0|    /* Generic encap & decap */                                         \
  |  |  100|      0|    OFPACT(ENCAP,           ofpact_encap,       props, "encap")         \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|    OFPACT(DECAP,           ofpact_decap,       ofpact, "decap")        \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|                                                                        \
  |  |  103|      0|    /* Metadata. */                                                     \
  |  |  104|      0|    OFPACT(SET_TUNNEL,      ofpact_tunnel,      ofpact, "set_tunnel")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|    OFPACT(SET_QUEUE,       ofpact_queue,       ofpact, "set_queue")    \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|    OFPACT(POP_QUEUE,       ofpact_null,        ofpact, "pop_queue")    \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|    OFPACT(FIN_TIMEOUT,     ofpact_fin_timeout, ofpact, "fin_timeout")  \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|                                                                        \
  |  |  109|      0|    /* Flow table interaction. */                                       \
  |  |  110|      0|    OFPACT(RESUBMIT,        ofpact_resubmit,    ofpact, "resubmit")     \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|    OFPACT(LEARN,           ofpact_learn,       specs, "learn")         \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|    OFPACT(CONJUNCTION,     ofpact_conjunction, ofpact, "conjunction")  \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|                                                                        \
  |  |  114|      0|    /* Arithmetic. */                                                   \
  |  |  115|      0|    OFPACT(MULTIPATH,       ofpact_multipath,   ofpact, "multipath")    \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|                                                                        \
  |  |  117|      0|    /* Other. */                                                        \
  |  |  118|      0|    OFPACT(NOTE,            ofpact_note,        data, "note")           \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      1|    OFPACT(EXIT,            ofpact_null,        ofpact, "exit")         \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|    OFPACT(SAMPLE,          ofpact_sample,      ofpact, "sample")       \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      0|    OFPACT(UNROLL_XLATE,    ofpact_unroll_xlate, ofpact, "unroll_xlate") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|     17|    OFPACT(CT,              ofpact_conntrack,   ofpact, "ct")           \
  |  |  ------------------
  |  |  |  | 9715|     17|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 17, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|     17|    OFPACT(CT_CLEAR,        ofpact_null,        ofpact, "ct_clear")     \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  124|      0|    OFPACT(NAT,             ofpact_nat,         ofpact, "nat")          \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  125|      0|    OFPACT(OUTPUT_TRUNC,    ofpact_output_trunc,ofpact, "output_trunc") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  126|      4|    OFPACT(CLONE,           ofpact_nest,        actions, "clone")       \
  |  |  ------------------
  |  |  |  | 9715|      4|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 4, False: 27]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|      4|    OFPACT(CHECK_PKT_LARGER, ofpact_check_pkt_larger, ofpact,           \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  128|      0|           "check_pkt_larger")                                          \
  |  |  129|      0|                                                                        \
  |  |  130|      0|    /* Debugging actions.                                               \
  |  |  131|      0|     *                                                                  \
  |  |  132|      0|     * These are intentionally undocumented, subject to change, and     \
  |  |  133|      0|     * only accepted if ovs-vswitchd is started with --enable-dummy. */ \
  |  |  134|      0|    OFPACT(DEBUG_RECIRC, ofpact_null,           ofpact, "debug_recirc") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  135|      0|    OFPACT(DEBUG_SLOW,   ofpact_null,           ofpact, "debug_slow")   \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|                                                                        \
  |  |  137|      0|    /* Instructions ("meter" is an action in OF1.5+). */                \
  |  |  138|      1|    OFPACT(METER,           ofpact_meter,       ofpact, "meter")        \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  139|      1|    OFPACT(CLEAR_ACTIONS,   ofpact_null,        ofpact, "clear_actions") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  140|      0|    OFPACT(WRITE_ACTIONS,   ofpact_nest,        actions, "write_actions") \
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  141|      1|    OFPACT(WRITE_METADATA,  ofpact_metadata,    ofpact, "write_metadata") \
  |  |  ------------------
  |  |  |  | 9715|      1|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 1, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      1|    OFPACT(GOTO_TABLE,      ofpact_goto_table,  ofpact, "goto_table")
  |  |  ------------------
  |  |  |  | 9715|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME) case OFPACT_##ENUM: return NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9715:44): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9717|     31|#undef OFPACT
 9718|     31|    }
 9719|      0|    return "<unknown>";
 9720|     31|}
ofp-actions.c:add_conjunction:
 5665|    534|{
 5666|    534|    struct ofpact_conjunction *oc;
 5667|       |
 5668|    534|    oc = ofpact_put_CONJUNCTION(out);
 5669|    534|    oc->id = id;
 5670|    534|    oc->clause = clause;
 5671|    534|    oc->n_clauses = n_clauses;
 5672|    534|}
ofp-actions.c:ofpacts_pull:
  536|  86.9k|{
  537|  86.9k|    size_t ofs;
  538|       |
  539|  86.9k|    ofs = ofpacts->size;
  540|  86.9k|    ofpbuf_pull(ofpacts, ofs);
  541|       |
  542|  86.9k|    return ofs;
  543|  86.9k|}
ofp-actions.c:ofpact_check__:
 8823|   242k|{
 8824|   242k|    switch (a->type) {
 8825|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME)                  \
 8826|      0|        case OFPACT_##ENUM:                                 \
 8827|      0|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
 8828|      0|        OFPACTS
  ------------------
  |  |   64|  94.1k|    OFPACT(OUTPUT,          ofpact_output,      ofpact, "output")       \
  |  |  ------------------
  |  |  |  | 8826|  94.1k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 94.1k, False: 148k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  94.1k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   65|  94.1k|    OFPACT(GROUP,           ofpact_group,       ofpact, "group")        \
  |  |  ------------------
  |  |  |  | 8826|    215|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 215, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    215|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   66|  7.40k|    OFPACT(CONTROLLER,      ofpact_controller,  userdata, "controller") \
  |  |  ------------------
  |  |  |  | 8826|  7.40k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 7.40k, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  7.40k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   67|  7.40k|    OFPACT(ENQUEUE,         ofpact_enqueue,     ofpact, "enqueue")      \
  |  |  ------------------
  |  |  |  | 8826|  1.12k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.12k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.12k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   68|  1.12k|    OFPACT(OUTPUT_REG,      ofpact_output_reg,  ofpact, "output_reg")   \
  |  |  ------------------
  |  |  |  | 8826|    615|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 615, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    615|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   69|  1.41k|    OFPACT(BUNDLE,          ofpact_bundle,      members, "bundle")      \
  |  |  ------------------
  |  |  |  | 8826|  1.41k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.41k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.41k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   70|  1.41k|                                                                        \
  |  |   71|  1.41k|    /* Header changes. */                                               \
  |  |   72|  28.0k|    OFPACT(SET_FIELD,       ofpact_set_field,   ofpact, "set_field")    \
  |  |  ------------------
  |  |  |  | 8826|  28.0k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 28.0k, False: 214k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  28.0k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   73|  28.0k|    OFPACT(SET_VLAN_VID,    ofpact_vlan_vid,    ofpact, "set_vlan_vid") \
  |  |  ------------------
  |  |  |  | 8826|  1.76k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.76k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.76k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   74|  1.76k|    OFPACT(SET_VLAN_PCP,    ofpact_vlan_pcp,    ofpact, "set_vlan_pcp") \
  |  |  ------------------
  |  |  |  | 8826|  1.63k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.63k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.63k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   75|  2.25k|    OFPACT(STRIP_VLAN,      ofpact_null,        ofpact, "strip_vlan")   \
  |  |  ------------------
  |  |  |  | 8826|  2.25k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.25k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.25k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   76|  2.25k|    OFPACT(PUSH_VLAN,       ofpact_push_vlan,   ofpact, "push_vlan")    \
  |  |  ------------------
  |  |  |  | 8826|  1.28k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.28k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.28k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   77|  1.28k|    OFPACT(SET_ETH_SRC,     ofpact_mac,         ofpact, "mod_dl_src")   \
  |  |  ------------------
  |  |  |  | 8826|    388|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 388, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    388|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   78|    391|    OFPACT(SET_ETH_DST,     ofpact_mac,         ofpact, "mod_dl_dst")   \
  |  |  ------------------
  |  |  |  | 8826|    391|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 391, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    391|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   79|    997|    OFPACT(SET_IPV4_SRC,    ofpact_ipv4,        ofpact, "mod_nw_src")   \
  |  |  ------------------
  |  |  |  | 8826|    997|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 997, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    997|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   80|    997|    OFPACT(SET_IPV4_DST,    ofpact_ipv4,        ofpact, "mod_nw_dst")   \
  |  |  ------------------
  |  |  |  | 8826|    760|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 760, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    760|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   81|  1.25k|    OFPACT(SET_IP_DSCP,     ofpact_dscp,        ofpact, "mod_nw_tos")   \
  |  |  ------------------
  |  |  |  | 8826|  1.25k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.25k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.25k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   82|  1.53k|    OFPACT(SET_IP_ECN,      ofpact_ecn,         ofpact, "mod_nw_ecn")   \
  |  |  ------------------
  |  |  |  | 8826|  1.53k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.53k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.53k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   83|  1.53k|    OFPACT(SET_IP_TTL,      ofpact_ip_ttl,      ofpact, "mod_nw_ttl")   \
  |  |  ------------------
  |  |  |  | 8826|  1.42k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.42k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.42k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   84|  2.53k|    OFPACT(SET_L4_SRC_PORT, ofpact_l4_port,     ofpact, "mod_tp_src")   \
  |  |  ------------------
  |  |  |  | 8826|  2.53k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.53k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.53k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   85|  2.53k|    OFPACT(SET_L4_DST_PORT, ofpact_l4_port,     ofpact, "mod_tp_dst")   \
  |  |  ------------------
  |  |  |  | 8826|  1.73k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.73k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.73k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   86|  1.73k|    OFPACT(REG_MOVE,        ofpact_reg_move,    ofpact, "move")         \
  |  |  ------------------
  |  |  |  | 8826|    509|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 509, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    509|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   87|    509|    OFPACT(STACK_PUSH,      ofpact_stack,       ofpact, "push")         \
  |  |  ------------------
  |  |  |  | 8826|    385|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 385, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    385|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   88|  1.89k|    OFPACT(STACK_POP,       ofpact_stack,       ofpact, "pop")          \
  |  |  ------------------
  |  |  |  | 8826|  1.89k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.89k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.89k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   89|  3.40k|    OFPACT(DEC_TTL,         ofpact_cnt_ids,     cnt_ids, "dec_ttl")     \
  |  |  ------------------
  |  |  |  | 8826|  3.40k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 3.40k, False: 239k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  3.40k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   90|  3.40k|    OFPACT(SET_MPLS_LABEL,  ofpact_mpls_label,  ofpact, "set_mpls_label") \
  |  |  ------------------
  |  |  |  | 8826|  1.37k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.37k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.37k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   91|  1.73k|    OFPACT(SET_MPLS_TC,     ofpact_mpls_tc,     ofpact, "set_mpls_tc")  \
  |  |  ------------------
  |  |  |  | 8826|  1.73k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.73k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.73k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   92|  2.05k|    OFPACT(SET_MPLS_TTL,    ofpact_mpls_ttl,    ofpact, "set_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 8826|  2.05k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.05k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.05k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   93|  2.77k|    OFPACT(DEC_MPLS_TTL,    ofpact_null,        ofpact, "dec_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 8826|  2.77k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.77k, False: 239k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.77k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   94|  2.77k|    OFPACT(PUSH_MPLS,       ofpact_push_mpls,   ofpact, "push_mpls")    \
  |  |  ------------------
  |  |  |  | 8826|    737|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 737, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    737|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   95|  2.19k|    OFPACT(POP_MPLS,        ofpact_pop_mpls,    ofpact, "pop_mpls")     \
  |  |  ------------------
  |  |  |  | 8826|  2.19k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.19k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.19k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   96|  2.19k|    OFPACT(DEC_NSH_TTL,     ofpact_null,        ofpact, "dec_nsh_ttl")  \
  |  |  ------------------
  |  |  |  | 8826|    659|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 659, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    659|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   97|    659|    OFPACT(DELETE_FIELD,    ofpact_delete_field, ofpact, "delete_field") \
  |  |  ------------------
  |  |  |  | 8826|    252|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 252, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    252|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |   98|    252|                                                                        \
  |  |   99|    252|    /* Generic encap & decap */                                         \
  |  |  100|  1.20k|    OFPACT(ENCAP,           ofpact_encap,       props, "encap")         \
  |  |  ------------------
  |  |  |  | 8826|  1.20k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.20k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.20k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  101|  2.74k|    OFPACT(DECAP,           ofpact_decap,       ofpact, "decap")        \
  |  |  ------------------
  |  |  |  | 8826|  2.74k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.74k, False: 239k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.74k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  102|  2.74k|                                                                        \
  |  |  103|  2.74k|    /* Metadata. */                                                     \
  |  |  104|  2.74k|    OFPACT(SET_TUNNEL,      ofpact_tunnel,      ofpact, "set_tunnel")   \
  |  |  ------------------
  |  |  |  | 8826|  1.50k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.50k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.50k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  105|  1.50k|    OFPACT(SET_QUEUE,       ofpact_queue,       ofpact, "set_queue")    \
  |  |  ------------------
  |  |  |  | 8826|    571|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 571, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    571|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  106|    755|    OFPACT(POP_QUEUE,       ofpact_null,        ofpact, "pop_queue")    \
  |  |  ------------------
  |  |  |  | 8826|    755|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 755, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    755|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  107|    755|    OFPACT(FIN_TIMEOUT,     ofpact_fin_timeout, ofpact, "fin_timeout")  \
  |  |  ------------------
  |  |  |  | 8826|    737|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 737, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    737|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  108|    737|                                                                        \
  |  |  109|    737|    /* Flow table interaction. */                                       \
  |  |  110|  1.14k|    OFPACT(RESUBMIT,        ofpact_resubmit,    ofpact, "resubmit")     \
  |  |  ------------------
  |  |  |  | 8826|  1.14k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.14k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.14k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  111|  33.9k|    OFPACT(LEARN,           ofpact_learn,       specs, "learn")         \
  |  |  ------------------
  |  |  |  | 8826|  33.9k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 33.9k, False: 208k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  33.9k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  112|  33.9k|    OFPACT(CONJUNCTION,     ofpact_conjunction, ofpact, "conjunction")  \
  |  |  ------------------
  |  |  |  | 8826|    221|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 221, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    221|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  113|    221|                                                                        \
  |  |  114|    221|    /* Arithmetic. */                                                   \
  |  |  115|    391|    OFPACT(MULTIPATH,       ofpact_multipath,   ofpact, "multipath")    \
  |  |  ------------------
  |  |  |  | 8826|    391|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 391, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    391|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  116|    391|                                                                        \
  |  |  117|    391|    /* Other. */                                                        \
  |  |  118|  2.19k|    OFPACT(NOTE,            ofpact_note,        data, "note")           \
  |  |  ------------------
  |  |  |  | 8826|  2.19k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 2.19k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  2.19k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  119|  2.19k|    OFPACT(EXIT,            ofpact_null,        ofpact, "exit")         \
  |  |  ------------------
  |  |  |  | 8826|  1.40k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.40k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.40k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  120|  1.43k|    OFPACT(SAMPLE,          ofpact_sample,      ofpact, "sample")       \
  |  |  ------------------
  |  |  |  | 8826|  1.43k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.43k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.43k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  121|  1.43k|    OFPACT(UNROLL_XLATE,    ofpact_unroll_xlate, ofpact, "unroll_xlate") \
  |  |  ------------------
  |  |  |  | 8826|      0|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 0, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|      0|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  122|  7.54k|    OFPACT(CT,              ofpact_conntrack,   ofpact, "ct")           \
  |  |  ------------------
  |  |  |  | 8826|  7.54k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 7.54k, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  7.54k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  123|  7.54k|    OFPACT(CT_CLEAR,        ofpact_null,        ofpact, "ct_clear")     \
  |  |  ------------------
  |  |  |  | 8826|  1.31k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.31k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.31k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  124|  5.59k|    OFPACT(NAT,             ofpact_nat,         ofpact, "nat")          \
  |  |  ------------------
  |  |  |  | 8826|  5.59k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 5.59k, False: 237k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  5.59k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  125|  5.59k|    OFPACT(OUTPUT_TRUNC,    ofpact_output_trunc,ofpact, "output_trunc") \
  |  |  ------------------
  |  |  |  | 8826|    693|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 693, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    693|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  126|  6.67k|    OFPACT(CLONE,           ofpact_nest,        actions, "clone")       \
  |  |  ------------------
  |  |  |  | 8826|  6.67k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 6.67k, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  6.67k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  127|  6.67k|    OFPACT(CHECK_PKT_LARGER, ofpact_check_pkt_larger, ofpact,           \
  |  |  ------------------
  |  |  |  | 8826|    345|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 345, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    345|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  128|    345|           "check_pkt_larger")                                          \
  |  |  129|    345|                                                                        \
  |  |  130|    345|    /* Debugging actions.                                               \
  |  |  131|    345|     *                                                                  \
  |  |  132|    345|     * These are intentionally undocumented, subject to change, and     \
  |  |  133|    345|     * only accepted if ovs-vswitchd is started with --enable-dummy. */ \
  |  |  134|  1.17k|    OFPACT(DEBUG_RECIRC, ofpact_null,           ofpact, "debug_recirc") \
  |  |  ------------------
  |  |  |  | 8826|  1.17k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.17k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.17k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  135|  1.99k|    OFPACT(DEBUG_SLOW,   ofpact_null,           ofpact, "debug_slow")   \
  |  |  ------------------
  |  |  |  | 8826|  1.99k|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 1.99k, False: 240k]
  |  |  |  |  ------------------
  |  |  |  | 8827|  1.99k|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  136|  1.99k|                                                                        \
  |  |  137|  1.99k|    /* Instructions ("meter" is an action in OF1.5+). */                \
  |  |  138|  1.99k|    OFPACT(METER,           ofpact_meter,       ofpact, "meter")        \
  |  |  ------------------
  |  |  |  | 8826|    139|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 139, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|    139|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  139|    139|    OFPACT(CLEAR_ACTIONS,   ofpact_null,        ofpact, "clear_actions") \
  |  |  ------------------
  |  |  |  | 8826|      8|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 8, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|      8|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  140|     57|    OFPACT(WRITE_ACTIONS,   ofpact_nest,        actions, "write_actions") \
  |  |  ------------------
  |  |  |  | 8826|     57|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 57, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|     57|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  141|     57|    OFPACT(WRITE_METADATA,  ofpact_metadata,    ofpact, "write_metadata") \
  |  |  ------------------
  |  |  |  | 8826|      8|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 8, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|      8|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  |  |  142|      9|    OFPACT(GOTO_TABLE,      ofpact_goto_table,  ofpact, "goto_table")
  |  |  ------------------
  |  |  |  | 8826|      9|        case OFPACT_##ENUM:                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8826:9): [True: 9, False: 242k]
  |  |  |  |  ------------------
  |  |  |  | 8827|      9|            return check_##ENUM(ofpact_get_##ENUM(a), cp);
  |  |  ------------------
  ------------------
 8829|      0|#undef OFPACT
 8830|      0|    default:
  ------------------
  |  Branch (8830:5): [True: 0, False: 242k]
  ------------------
 8831|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 8832|   242k|    }
 8833|   242k|}
ofp-actions.c:check_OUTPUT:
  717|  94.1k|{
  718|  94.1k|    return ofpact_check_output_port(a->port, cp->max_ports);
  719|  94.1k|}
ofp-actions.c:check_GROUP:
  756|    215|{
  757|    215|    return 0;
  758|    215|}
ofp-actions.c:check_CONTROLLER:
 1074|  7.40k|{
 1075|  7.40k|    return 0;
 1076|  7.40k|}
ofp-actions.c:check_ENQUEUE:
 1161|  1.12k|{
 1162|  1.12k|    if (ofp_to_u16(a->port) >= ofp_to_u16(cp->max_ports)
  ------------------
  |  Branch (1162:9): [True: 691, False: 431]
  ------------------
 1163|  1.12k|        && a->port != OFPP_IN_PORT
  ------------------
  |  |   39|    691|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  ------------------
  |  |  |  |  157|  1.81k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (1163:12): [True: 320, False: 371]
  ------------------
 1164|    320|        && a->port != OFPP_LOCAL) {
  ------------------
  |  |   46|    320|#define OFPP_LOCAL      OFP_PORT_C(0xfffe) /* Local openflow "port". */
  |  |  ------------------
  |  |  |  |  157|    320|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (1164:12): [True: 5, False: 315]
  ------------------
 1165|      5|        return OFPERR_OFPBAC_BAD_OUT_PORT;
 1166|      5|    }
 1167|  1.11k|    return 0;
 1168|  1.12k|}
ofp-actions.c:check_OUTPUT_REG:
 1326|    615|{
 1327|    615|    return mf_check_src(&a->src, cp->match);
 1328|    615|}
ofp-actions.c:check_BUNDLE:
 1552|  1.41k|{
 1553|  1.41k|    return bundle_check(a, cp->max_ports, cp->match);
 1554|  1.41k|}
ofp-actions.c:check_SET_FIELD:
 3352|  28.0k|{
 3353|  28.0k|    const struct mf_field *mf = a->field;
 3354|  28.0k|    struct flow *flow = &cp->match->flow;
 3355|  28.0k|    ovs_be16 *tci = &flow->vlans[0].tci;
 3356|       |
 3357|       |    /* Require OXM_OF_VLAN_VID to have an existing VLAN header. */
 3358|  28.0k|    if (!mf_are_prereqs_ok(mf, flow, NULL)
  ------------------
  |  Branch (3358:9): [True: 183, False: 27.8k]
  ------------------
 3359|  27.8k|        || (mf->id == MFF_VLAN_VID && !(*tci & htons(VLAN_CFI)))) {
  ------------------
  |  Branch (3359:13): [True: 392, False: 27.4k]
  |  Branch (3359:39): [True: 4, False: 388]
  ------------------
 3360|    187|        VLOG_WARN_RL(&rl, "set_field %s lacks correct prerequisites",
  ------------------
  |  |  224|    187|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|    187|    do {                                                                \
  |  |  |  |  288|    187|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|    187|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 187]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|    187|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 187]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3361|    187|                     mf->name);
 3362|    187|        return OFPERR_OFPBAC_MATCH_INCONSISTENT;
 3363|    187|    }
 3364|       |
 3365|       |    /* Remember if we saw a VLAN tag in the flow, to aid translating to
 3366|       |     * OpenFlow 1.1 if need be. */
 3367|  27.8k|    a->flow_has_vlan = (*tci & htons(VLAN_CFI)) != 0;
 3368|  27.8k|    if (mf->id == MFF_VLAN_TCI) {
  ------------------
  |  Branch (3368:9): [True: 1.55k, False: 26.2k]
  ------------------
 3369|       |        /* The set field may add or remove the VLAN tag,
 3370|       |         * Mark the status temporarily. */
 3371|  1.55k|        *tci = a->value->be16;
 3372|  1.55k|    }
 3373|       |
 3374|  27.8k|    return 0;
 3375|  28.0k|}
ofp-actions.c:check_SET_VLAN_VID:
 1649|  1.76k|{
 1650|       |    /* Remember if we saw a vlan tag in the flow to aid translating to OpenFlow
 1651|       |     * 1.1+ if need be. */
 1652|  1.76k|    ovs_be16 *tci = &cp->match->flow.vlans[0].tci;
 1653|  1.76k|    a->flow_has_vlan = (*tci & htons(VLAN_CFI)) != 0;
 1654|  1.76k|    if (!a->flow_has_vlan && !a->push_vlan_if_needed) {
  ------------------
  |  Branch (1654:9): [True: 581, False: 1.18k]
  |  Branch (1654:30): [True: 327, False: 254]
  ------------------
 1655|    327|        inconsistent_match(&cp->usable_protocols);
 1656|    327|    }
 1657|       |
 1658|       |    /* Temporarily mark that we have a vlan tag. */
 1659|  1.76k|    *tci |= htons(VLAN_CFI);
 1660|       |
 1661|  1.76k|    return 0;
 1662|  1.76k|}
ofp-actions.c:inconsistent_match:
 8812|  15.2k|{
 8813|  15.2k|    *usable_protocols &= OFPUTIL_P_OF10_ANY;
  ------------------
  |  |   60|  15.2k|#define OFPUTIL_P_OF10_ANY (OFPUTIL_P_OF10_STD_ANY | OFPUTIL_P_OF10_NXM_ANY)
  |  |  ------------------
  |  |  |  |   58|  15.2k|#define OFPUTIL_P_OF10_STD_ANY (OFPUTIL_P_OF10_STD | OFPUTIL_P_OF10_STD_TID)
  |  |  ------------------
  |  |               #define OFPUTIL_P_OF10_ANY (OFPUTIL_P_OF10_STD_ANY | OFPUTIL_P_OF10_NXM_ANY)
  |  |  ------------------
  |  |  |  |   59|  15.2k|#define OFPUTIL_P_OF10_NXM_ANY (OFPUTIL_P_OF10_NXM | OFPUTIL_P_OF10_NXM_TID)
  |  |  ------------------
  ------------------
 8814|  15.2k|}
ofp-actions.c:check_SET_VLAN_PCP:
 1757|  1.63k|{
 1758|       |    /* Remember if we saw a vlan tag in the flow to aid translating to OpenFlow
 1759|       |     * 1.1+ if need be. */
 1760|  1.63k|    ovs_be16 *tci = &cp->match->flow.vlans[0].tci;
 1761|  1.63k|    a->flow_has_vlan = (*tci & htons(VLAN_CFI)) != 0;
 1762|  1.63k|    if (!a->flow_has_vlan && !a->push_vlan_if_needed) {
  ------------------
  |  Branch (1762:9): [True: 409, False: 1.22k]
  |  Branch (1762:30): [True: 199, False: 210]
  ------------------
 1763|    199|        inconsistent_match(&cp->usable_protocols);
 1764|    199|    }
 1765|       |
 1766|       |    /* Temporarily mark that we have a vlan tag. */
 1767|  1.63k|    *tci |= htons(VLAN_CFI);
 1768|       |
 1769|  1.63k|    return 0;
 1770|  1.63k|}
ofp-actions.c:check_STRIP_VLAN:
 1826|  2.25k|{
 1827|  2.25k|    if (!(cp->match->flow.vlans[0].tci & htons(VLAN_CFI))) {
  ------------------
  |  Branch (1827:9): [True: 616, False: 1.63k]
  ------------------
 1828|    616|        inconsistent_match(&cp->usable_protocols);
 1829|    616|    }
 1830|       |    flow_pop_vlan(&cp->match->flow, NULL);
 1831|  2.25k|    return 0;
 1832|  2.25k|}
ofp-actions.c:check_PUSH_VLAN:
 1894|  1.28k|{
 1895|  1.28k|    struct flow *flow = &cp->match->flow;
 1896|  1.28k|    if (flow->vlans[FLOW_MAX_VLAN_HEADERS - 1].tci & htons(VLAN_CFI)) {
  ------------------
  |  |   75|  1.28k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
  |  Branch (1896:9): [True: 2, False: 1.27k]
  ------------------
 1897|       |        /* Support maximum (FLOW_MAX_VLAN_HEADERS) VLAN headers. */
 1898|      2|        return OFPERR_OFPBAC_BAD_TAG;
 1899|      2|    }
 1900|       |    /* Temporary mark that we have a vlan tag. */
 1901|  1.27k|    flow_push_vlan_uninit(flow, NULL);
 1902|       |    flow->vlans[0].tci |= htons(VLAN_CFI);
 1903|  1.27k|    return 0;
 1904|  1.28k|}
ofp-actions.c:check_SET_ETH_SRC:
 1998|    388|{
 1999|    388|    return 0;
 2000|    388|}
ofp-actions.c:check_SET_ETH_DST:
 2005|    391|{
 2006|    391|    return 0;
 2007|    391|}
ofp-actions.c:check_SET_IPV4_SRC:
 2100|    997|{
 2101|    997|    return check_set_ipv4(cp);
 2102|    997|}
ofp-actions.c:check_set_ipv4:
 2089|  1.75k|{
 2090|  1.75k|    ovs_be16 dl_type = get_dl_type(&cp->match->flow);
 2091|  1.75k|    if (dl_type != htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (2091:9): [True: 971, False: 786]
  ------------------
 2092|    971|        inconsistent_match(&cp->usable_protocols);
 2093|    971|    }
 2094|  1.75k|    return 0;
 2095|  1.75k|}
ofp-actions.c:check_SET_IPV4_DST:
 2107|    760|{
 2108|    760|    return check_set_ipv4(cp);
 2109|    760|}
ofp-actions.c:check_SET_IP_DSCP:
 2176|  1.25k|{
 2177|  1.25k|    return check_set_ip(cp);
 2178|  1.25k|}
ofp-actions.c:check_set_ip:
 2166|  7.61k|{
 2167|  7.61k|    if (!is_ip_any(&cp->match->flow)) {
  ------------------
  |  Branch (2167:9): [True: 4.82k, False: 2.78k]
  ------------------
 2168|  4.82k|        inconsistent_match(&cp->usable_protocols);
 2169|  4.82k|    }
 2170|  7.61k|    return 0;
 2171|  7.61k|}
ofp-actions.c:check_SET_IP_ECN:
 2240|  1.53k|{
 2241|  1.53k|    return check_set_ip(cp);
 2242|  1.53k|}
ofp-actions.c:check_SET_IP_TTL:
 2295|  1.42k|{
 2296|  1.42k|    return check_set_ip(cp);
 2297|  1.42k|}
ofp-actions.c:check_SET_L4_SRC_PORT:
 2411|  2.53k|{
 2412|  2.53k|    return check_set_l4_port(a, cp);
 2413|  2.53k|}
ofp-actions.c:check_set_l4_port:
 2392|  4.26k|{
 2393|  4.26k|    const struct flow *flow = &cp->match->flow;
 2394|  4.26k|    if (!is_ip_any(flow)
  ------------------
  |  Branch (2394:9): [True: 1.65k, False: 2.61k]
  ------------------
 2395|  2.61k|        || flow->nw_frag & FLOW_NW_FRAG_LATER
  ------------------
  |  |   55|  6.88k|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  |  Branch (2395:12): [True: 260, False: 2.35k]
  ------------------
 2396|  2.35k|        || (flow->nw_proto != IPPROTO_TCP &&
  ------------------
  |  Branch (2396:13): [True: 1.60k, False: 754]
  ------------------
 2397|  1.60k|            flow->nw_proto != IPPROTO_UDP &&
  ------------------
  |  Branch (2397:13): [True: 1.09k, False: 508]
  ------------------
 2398|  2.47k|            flow->nw_proto != IPPROTO_SCTP)) {
  ------------------
  |  Branch (2398:13): [True: 559, False: 533]
  ------------------
 2399|  2.47k|        inconsistent_match(&cp->usable_protocols);
 2400|  2.47k|    }
 2401|       |
 2402|       |    /* Note the transport protocol in use, to allow this action to be converted
 2403|       |     * to an OF1.2 set_field action later if necessary. */
 2404|  4.26k|    a->flow_ip_proto = flow->nw_proto;
 2405|       |
 2406|  4.26k|    return 0;
 2407|  4.26k|}
ofp-actions.c:check_SET_L4_DST_PORT:
 2417|  1.73k|{
 2418|  1.73k|    return check_set_l4_port(a, cp);
 2419|  1.73k|}
ofp-actions.c:check_REG_MOVE:
 2722|    509|{
 2723|    509|    return nxm_reg_move_check(a, cp->match);
 2724|    509|}
ofp-actions.c:check_STACK_PUSH:
 3572|    385|{
 3573|    385|    return nxm_stack_push_check(a, cp->match);
 3574|    385|}
ofp-actions.c:check_STACK_POP:
 3579|  1.89k|{
 3580|  1.89k|    return nxm_stack_pop_check(a, cp->match);
 3581|  1.89k|}
ofp-actions.c:check_DEC_TTL:
 3755|  3.40k|{
 3756|  3.40k|    return check_set_ip(cp);
 3757|  3.40k|}
ofp-actions.c:check_SET_MPLS_LABEL:
 3828|  1.37k|{
 3829|  1.37k|    return check_set_mpls(cp);
 3830|  1.37k|}
ofp-actions.c:check_set_mpls:
 3817|  7.93k|{
 3818|  7.93k|    ovs_be16 dl_type = get_dl_type(&cp->match->flow);
 3819|  7.93k|    if (!eth_type_mpls(dl_type)) {
  ------------------
  |  Branch (3819:9): [True: 4.01k, False: 3.91k]
  ------------------
 3820|  4.01k|        inconsistent_match(&cp->usable_protocols);
 3821|  4.01k|    }
 3822|  7.93k|    return 0;
 3823|  7.93k|}
ofp-actions.c:check_SET_MPLS_TC:
 3889|  1.73k|{
 3890|  1.73k|    return check_set_mpls(cp);
 3891|  1.73k|}
ofp-actions.c:check_SET_MPLS_TTL:
 3947|  2.05k|{
 3948|  2.05k|    return check_set_mpls(cp);
 3949|  2.05k|}
ofp-actions.c:check_DEC_MPLS_TTL:
 3984|  2.77k|{
 3985|  2.77k|    return check_set_mpls(cp);
 3986|  2.77k|}
ofp-actions.c:check_PUSH_MPLS:
 4037|    737|{
 4038|    737|    struct flow *flow = &cp->match->flow;
 4039|       |
 4040|    737|    if (flow->packet_type != htonl(PT_ETH)) {
  ------------------
  |  Branch (4040:9): [True: 433, False: 304]
  ------------------
 4041|    433|        inconsistent_match(&cp->usable_protocols);
 4042|    433|    }
 4043|    737|    flow->dl_type = a->ethertype;
 4044|       |
 4045|       |    /* The packet is now MPLS and the MPLS payload is opaque.
 4046|       |     * Thus nothing can be assumed about the network protocol.
 4047|       |     * Temporarily mark that we have no nw_proto. */
 4048|    737|    flow->nw_proto = 0;
 4049|       |
 4050|    737|    return 0;
 4051|    737|}
ofp-actions.c:check_POP_MPLS:
 4094|  2.19k|{
 4095|  2.19k|    struct flow *flow = &cp->match->flow;
 4096|  2.19k|    ovs_be16 dl_type = get_dl_type(flow);
 4097|       |
 4098|  2.19k|    if (flow->packet_type != htonl(PT_ETH) || !eth_type_mpls(dl_type)) {
  ------------------
  |  Branch (4098:9): [True: 633, False: 1.55k]
  |  Branch (4098:47): [True: 336, False: 1.22k]
  ------------------
 4099|    969|        inconsistent_match(&cp->usable_protocols);
 4100|    969|    }
 4101|  2.19k|    flow->dl_type = a->ethertype;
 4102|  2.19k|    return 0;
 4103|  2.19k|}
ofp-actions.c:check_DEC_NSH_TTL:
 4829|    659|{
 4830|    659|    struct flow *flow = &cp->match->flow;
 4831|    659|    if (flow->packet_type != htonl(PT_NSH) &&
  ------------------
  |  Branch (4831:9): [True: 437, False: 222]
  ------------------
 4832|    437|        flow->dl_type != htons(ETH_TYPE_NSH)) {
  ------------------
  |  Branch (4832:9): [True: 243, False: 194]
  ------------------
 4833|    243|        inconsistent_match(&cp->usable_protocols);
 4834|    243|    }
 4835|    659|    return 0;
 4836|    659|}
ofp-actions.c:check_DELETE_FIELD:
 4256|    252|{
 4257|    252|    if (odf->field->id < MFF_TUN_METADATA0 ||
  ------------------
  |  Branch (4257:9): [True: 0, False: 252]
  ------------------
 4258|    252|        odf->field->id > MFF_TUN_METADATA63) {
  ------------------
  |  Branch (4258:9): [True: 8, False: 244]
  ------------------
 4259|      8|        return OFPERR_OFPBAC_BAD_ARGUMENT;
 4260|      8|    }
 4261|    244|    return 0;
 4262|    252|}
ofp-actions.c:check_ENCAP:
 4664|  1.20k|{
 4665|  1.20k|    struct flow *flow = &cp->match->flow;
 4666|  1.20k|    flow->packet_type = a->new_pkt_type;
 4667|  1.20k|    if (pt_ns(flow->packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (4667:9): [True: 853, False: 356]
  ------------------
 4668|    853|        flow->dl_type = htons(pt_ns_type(flow->packet_type));
 4669|    853|    }
 4670|  1.20k|    if (!is_ip_any(flow)) {
  ------------------
  |  Branch (4670:9): [True: 901, False: 308]
  ------------------
 4671|    901|        flow->nw_proto = 0;
 4672|    901|    }
 4673|  1.20k|    return 0;
 4674|  1.20k|}
ofp-actions.c:check_DECAP:
 4781|  2.74k|{
 4782|  2.74k|    struct flow *flow = &cp->match->flow;
 4783|  2.74k|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (4783:9): [True: 1.34k, False: 1.40k]
  ------------------
 4784|       |        /* Adjust the packet_type to allow subsequent actions. */
 4785|  1.34k|        flow->packet_type = PACKET_TYPE_BE(OFPHTN_ETHERTYPE,
  ------------------
  |  | 1565|  1.34k|#define PACKET_TYPE_BE(NS, NS_TYPE) (htonl((NS) << 16 | (NS_TYPE)))
  ------------------
 4786|  1.34k|                                           ntohs(flow->dl_type));
 4787|  1.40k|    } else {
 4788|       |        /* The actual packet_type is only known after decapsulation.
 4789|       |         * Do not allow subsequent actions that depend on packet headers. */
 4790|  1.40k|        flow->packet_type = htonl(PT_UNKNOWN);
 4791|  1.40k|        flow->dl_type = OVS_BE16_MAX;
  ------------------
  |  |   42|  1.40k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
 4792|  1.40k|    }
 4793|  2.74k|    return 0;
 4794|  2.74k|}
ofp-actions.c:check_SET_TUNNEL:
 4177|  1.50k|{
 4178|  1.50k|    return 0;
 4179|  1.50k|}
ofp-actions.c:check_SET_QUEUE:
 4299|    571|{
 4300|    571|    return 0;
 4301|    571|}
ofp-actions.c:check_POP_QUEUE:
 4337|    755|{
 4338|    755|    return 0;
 4339|    755|}
ofp-actions.c:check_FIN_TIMEOUT:
 4444|    737|{
 4445|    737|    if (cp->match->flow.nw_proto != IPPROTO_TCP) {
  ------------------
  |  Branch (4445:9): [True: 203, False: 534]
  ------------------
 4446|    203|        inconsistent_match(&cp->usable_protocols);
 4447|    203|    }
 4448|    737|    return 0;
 4449|    737|}
ofp-actions.c:check_RESUBMIT:
 5051|  1.14k|{
 5052|  1.14k|    if (a->with_ct_orig && !is_ct_valid(&cp->match->flow, &cp->match->wc,
  ------------------
  |  Branch (5052:9): [True: 486, False: 658]
  |  Branch (5052:28): [True: 3, False: 483]
  ------------------
 5053|    486|                                        NULL)) {
 5054|      3|        return OFPERR_OFPBAC_MATCH_INCONSISTENT;
 5055|      3|    }
 5056|  1.14k|    return 0;
 5057|  1.14k|}
ofp-actions.c:check_LEARN:
 5646|  33.9k|{
 5647|  33.9k|    return learn_check(a, cp->match);
 5648|  33.9k|}
ofp-actions.c:check_CONJUNCTION:
 5739|    221|{
 5740|    221|    return 0;
 5741|    221|}
ofp-actions.c:check_MULTIPATH:
 5873|    391|{
 5874|    391|    return multipath_check(a, cp->match);
 5875|    391|}
ofp-actions.c:check_NOTE:
 5959|  2.19k|{
 5960|  2.19k|    return 0;
 5961|  2.19k|}
ofp-actions.c:check_EXIT:
 5996|  1.40k|{
 5997|  1.40k|    return 0;
 5998|  1.40k|}
ofp-actions.c:check_SAMPLE:
 6561|  1.43k|{
 6562|  1.43k|    return 0;
 6563|  1.43k|}
ofp-actions.c:check_CT:
 7068|  7.54k|{
 7069|  7.54k|    struct flow *flow = &cp->match->flow;
 7070|       |
 7071|  7.54k|    if (!dl_type_is_ip_any(get_dl_type(flow))
  ------------------
  |  Branch (7071:9): [True: 141, False: 7.40k]
  ------------------
 7072|  7.40k|        || (flow->ct_state & CS_INVALID && a->flags & NX_CT_F_COMMIT)
  ------------------
  |  Branch (7072:13): [True: 196, False: 7.20k]
  |  Branch (7072:44): [True: 1, False: 195]
  ------------------
 7073|  7.40k|        || (a->alg == IPPORT_FTP && flow->nw_proto != IPPROTO_TCP)
  ------------------
  |  |  695|  14.8k|#define IPPORT_FTP  21
  ------------------
  |  Branch (7073:13): [True: 67, False: 7.33k]
  |  Branch (7073:37): [True: 1, False: 66]
  ------------------
 7074|  7.40k|        || (a->alg == IPPORT_TFTP && flow->nw_proto != IPPROTO_UDP)) {
  ------------------
  |  |  699|  14.8k|#define IPPORT_TFTP  69
  ------------------
  |  Branch (7074:13): [True: 196, False: 7.20k]
  |  Branch (7074:38): [True: 1, False: 195]
  ------------------
 7075|       |        /* We can't downgrade to OF1.0 and expect inconsistent CT actions
 7076|       |         * be silently discarded.  Instead, datapath flow install fails, so
 7077|       |         * it is better to flag inconsistent CT actions as hard errors. */
 7078|    144|        return OFPERR_OFPBAC_MATCH_INCONSISTENT;
 7079|    144|    }
 7080|       |
 7081|  7.40k|    if (a->zone_src.field) {
  ------------------
  |  Branch (7081:9): [True: 202, False: 7.20k]
  ------------------
 7082|    202|        return mf_check_src(&a->zone_src, cp->match);
 7083|    202|    }
 7084|       |
 7085|  7.20k|    return check_subactions(a->actions, ofpact_ct_get_action_len(a), cp);
 7086|  7.40k|}
ofp-actions.c:check_subactions:
 6123|  13.8k|{
 6124|  13.8k|    struct ofpact_check_params sub = *cp;
 6125|  13.8k|    enum ofperr error = ofpacts_check(ofpacts, ofpacts_len, &sub);
 6126|  13.8k|    cp->usable_protocols &= sub.usable_protocols;
 6127|  13.8k|    return error;
 6128|  13.8k|}
ofp-actions.c:check_CT_CLEAR:
 7122|  1.31k|{
 7123|  1.31k|    return 0;
 7124|  1.31k|}
ofp-actions.c:check_NAT:
 7480|  5.59k|{
 7481|  5.59k|    ovs_be16 dl_type = get_dl_type(&cp->match->flow);
 7482|  5.59k|    if (!dl_type_is_ip_any(dl_type) ||
  ------------------
  |  Branch (7482:9): [True: 0, False: 5.59k]
  ------------------
 7483|  5.59k|        (a->range_af == AF_INET && dl_type != htons(ETH_TYPE_IP)) ||
  ------------------
  |  Branch (7483:10): [True: 714, False: 4.87k]
  |  Branch (7483:36): [True: 1, False: 713]
  ------------------
 7484|  5.59k|        (a->range_af == AF_INET6 && dl_type != htons(ETH_TYPE_IPV6))) {
  ------------------
  |  Branch (7484:10): [True: 3.08k, False: 2.51k]
  |  Branch (7484:37): [True: 3, False: 3.07k]
  ------------------
 7485|      4|        return OFPERR_OFPBAC_MATCH_INCONSISTENT;
 7486|      4|    }
 7487|  5.58k|    return 0;
 7488|  5.59k|}
ofp-actions.c:check_OUTPUT_TRUNC:
 7550|    693|{
 7551|    693|    return ofpact_check_output_port(a->port, cp->max_ports);
 7552|    693|}
ofp-actions.c:check_CLONE:
 6132|  6.67k|{
 6133|  6.67k|    return check_subactions(a->actions, ofpact_nest_get_action_len(a), cp);
 6134|  6.67k|}
ofp-actions.c:check_CHECK_PKT_LARGER:
 7911|    345|{
 7912|    345|    return 0;
 7913|    345|}
ofp-actions.c:check_DEBUG_RECIRC:
 6611|  1.17k|{
 6612|  1.17k|    return 0;
 6613|  1.17k|}
ofp-actions.c:check_DEBUG_SLOW:
 6651|  1.99k|{
 6652|  1.99k|    return 0;
 6653|  1.99k|}
ofp-actions.c:check_METER:
 7601|    139|{
 7602|    139|    uint32_t mid = a->meter_id;
 7603|    139|    return mid == 0 || mid > OFPM13_MAX ? OFPERR_OFPMMFC_INVALID_METER : 0;
  ------------------
  |  Branch (7603:12): [True: 1, False: 138]
  |  Branch (7603:24): [True: 15, False: 123]
  ------------------
 7604|    139|}
ofp-actions.c:check_CLEAR_ACTIONS:
 7635|      8|{
 7636|      8|    return 0;
 7637|      8|}
ofp-actions.c:check_WRITE_ACTIONS:
 7698|     57|{
 7699|       |    /* Use a temporary copy of 'cp' to avoid updating 'cp->usable_protocols',
 7700|       |     * since we can't check consistency of an action set. */
 7701|     57|    struct ofpact_check_params tmp = *cp;
 7702|     57|    return ofpacts_check(a->actions, ofpact_nest_get_action_len(a), &tmp);
 7703|     57|}
ofp-actions.c:check_WRITE_METADATA:
 7794|      8|{
 7795|      8|    return 0;
 7796|      8|}
ofp-actions.c:check_GOTO_TABLE:
 7958|      9|{
 7959|      9|    if ((cp->table_id != 255 && a->table_id <= cp->table_id)
  ------------------
  |  Branch (7959:10): [True: 5, False: 4]
  |  Branch (7959:33): [True: 1, False: 4]
  ------------------
 7960|      8|        || (cp->n_tables != 255 && a->table_id >= cp->n_tables)) {
  ------------------
  |  Branch (7960:13): [True: 0, False: 8]
  |  Branch (7960:36): [True: 0, False: 0]
  ------------------
 7961|      1|        return OFPERR_OFPBIC_BAD_TABLE_ID;
 7962|      1|    }
 7963|      8|    return 0;
 7964|      9|}
ofp-actions.c:ofpacts_verify:
 9006|  16.4k|{
 9007|  16.4k|    const struct ofpact *a;
 9008|  16.4k|    enum ovs_instruction_type inst;
 9009|       |
 9010|  16.4k|    inst = OVSINST_OFPIT13_METER;
 9011|   254k|    OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
  ------------------
  |  |  261|   269k|    for ((POS) = (OFPACTS); (POS) < ofpact_end(OFPACTS, OFPACTS_LEN);  \
  |  |  ------------------
  |  |  |  Branch (261:29): [True: 254k, False: 15.8k]
  |  |  ------------------
  |  |  262|   253k|         (POS) = ofpact_next(POS))
  ------------------
 9012|   254k|        enum ovs_instruction_type next;
 9013|   254k|        enum ofperr error;
 9014|       |
 9015|   254k|        if (a->type == OFPACT_CONJUNCTION) {
  ------------------
  |  Branch (9015:13): [True: 502, False: 253k]
  ------------------
 9016|  1.02k|            OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
  ------------------
  |  |  261|  1.51k|    for ((POS) = (OFPACTS); (POS) < ofpact_end(OFPACTS, OFPACTS_LEN);  \
  |  |  ------------------
  |  |  |  Branch (261:29): [True: 1.02k, False: 495]
  |  |  ------------------
  |  |  262|  1.01k|         (POS) = ofpact_next(POS))
  ------------------
 9017|  1.02k|                if (a->type != OFPACT_CONJUNCTION && a->type != OFPACT_NOTE) {
  ------------------
  |  Branch (9017:21): [True: 499, False: 522]
  |  Branch (9017:54): [True: 7, False: 492]
  ------------------
 9018|      7|                    verify_error(errorp, "\"conjunction\" actions may be used "
 9019|      7|                                 "along with \"note\" but not any other kind "
 9020|      7|                                 "of action (such as the \"%s\" action used "
 9021|      7|                                 "here)", ofpact_name(a->type));
 9022|      7|                    return OFPERR_NXBAC_BAD_CONJUNCTION;
 9023|      7|                }
 9024|  1.02k|            }
 9025|    495|            return 0;
 9026|    502|        }
 9027|       |
 9028|   253k|        error = ofpacts_verify_nested(a, outer_action, errorp);
 9029|   253k|        if (error) {
  ------------------
  |  Branch (9029:13): [True: 126, False: 253k]
  ------------------
 9030|    126|            return error;
 9031|    126|        }
 9032|       |
 9033|   253k|        next = ovs_instruction_type_from_ofpact_type(a->type, version);
 9034|   253k|        if (a > ofpacts
  ------------------
  |  Branch (9034:13): [True: 240k, False: 13.4k]
  ------------------
 9035|   240k|            && (inst == OVSINST_OFPIT11_APPLY_ACTIONS
  ------------------
  |  Branch (9035:16): [True: 30, False: 239k]
  |  Branch (9035:17): [True: 239k, False: 126]
  ------------------
 9036|   240k|                ? next < inst
 9037|   240k|                : next <= inst)) {
 9038|     30|            const char *name = ovs_instruction_name_from_type(inst);
 9039|     30|            const char *next_name = ovs_instruction_name_from_type(next);
 9040|       |
 9041|     30|            if (next == inst) {
  ------------------
  |  Branch (9041:17): [True: 25, False: 5]
  ------------------
 9042|     25|                verify_error(errorp, "duplicate %s instruction not allowed, "
 9043|     25|                             "for OpenFlow 1.1+ compatibility", name);
 9044|     25|            } else {
 9045|      5|                verify_error(errorp, "invalid instruction ordering: "
 9046|      5|                             "%s must appear before %s, "
 9047|      5|                             "for OpenFlow 1.1+ compatibility",
 9048|      5|                             next_name, name);
 9049|      5|            }
 9050|     30|            return OFPERR_OFPBAC_UNSUPPORTED_ORDER;
 9051|     30|        }
 9052|   253k|        if (!((1u << next) & allowed_ovsinsts)) {
  ------------------
  |  Branch (9052:13): [True: 5, False: 253k]
  ------------------
 9053|      5|            const char *name = ovs_instruction_name_from_type(next);
 9054|       |
 9055|      5|            if (next == OVSINST_OFPIT13_METER && version >= OFP15_VERSION) {
  ------------------
  |  Branch (9055:17): [True: 0, False: 5]
  |  Branch (9055:50): [True: 0, False: 0]
  ------------------
 9056|      0|                verify_error(errorp, "%s action not allowed here", name);
 9057|      0|                return OFPERR_OFPBAC_BAD_TYPE;
 9058|      5|            } else {
 9059|      5|                verify_error(errorp, "%s instruction not allowed here", name);
 9060|      5|                return OFPERR_OFPBIC_UNSUP_INST;
 9061|      5|            }
 9062|      5|        }
 9063|       |
 9064|   253k|        inst = next;
 9065|   253k|    }
 9066|       |
 9067|  15.8k|    return 0;
 9068|  16.4k|}
ofp-actions.c:verify_error:
 8916|    168|{
 8917|    168|    va_list args;
 8918|    168|    va_start(args, format);
 8919|    168|    char *error = xvasprintf(format, args);
 8920|    168|    va_end(args);
 8921|       |
 8922|    168|    if (errorp) {
  ------------------
  |  Branch (8922:9): [True: 168, False: 0]
  ------------------
 8923|    168|        *errorp = error;
 8924|    168|    } else {
 8925|      0|        VLOG_WARN("%s", error);
  ------------------
  |  |  209|      0|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|      0|    do {                                                \
  |  |  |  |  281|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8926|      0|        free(error);
 8927|      0|    }
 8928|    168|}
ofp-actions.c:ofpacts_verify_nested:
 8949|   253k|{
 8950|   253k|    const struct mf_field *field = ofpact_get_mf_dst(a);
 8951|       |
 8952|   253k|    if (field && field_requires_ct(field->id) && outer_action != OFPACT_CT) {
  ------------------
  |  Branch (8952:9): [True: 30.0k, False: 223k]
  |  Branch (8952:18): [True: 488, False: 29.5k]
  |  Branch (8952:50): [True: 9, False: 479]
  ------------------
 8953|      9|        verify_error(errorp, "cannot set CT fields outside of ct action");
 8954|      9|        return OFPERR_OFPBAC_BAD_SET_ARGUMENT;
 8955|      9|    }
 8956|   253k|    if (a->type == OFPACT_NAT) {
  ------------------
  |  Branch (8956:9): [True: 7.11k, False: 246k]
  ------------------
 8957|  7.11k|        if (outer_action != OFPACT_CT) {
  ------------------
  |  Branch (8957:13): [True: 103, False: 7.01k]
  ------------------
 8958|    103|            verify_error(errorp,
 8959|    103|                         "Cannot have NAT action outside of \"ct\" action");
 8960|    103|            return OFPERR_OFPBAC_BAD_SET_ARGUMENT;
 8961|    103|        }
 8962|  7.01k|        return 0;
 8963|  7.11k|    }
 8964|       |
 8965|   246k|    if (outer_action) {
  ------------------
  |  Branch (8965:9): [True: 39.7k, False: 206k]
  ------------------
 8966|  39.7k|        ovs_assert(outer_action == OFPACT_WRITE_ACTIONS
  ------------------
  |  |   62|  39.7k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (8966:20): [True: 5.35k, False: 34.3k]
  ------------------
 8967|  34.3k|                   || outer_action == OFPACT_CT
  ------------------
  |  Branch (8967:23): [True: 492, False: 33.8k]
  ------------------
 8968|  33.8k|                   || outer_action == OFPACT_CLONE);
  ------------------
  |  Branch (8968:23): [True: 33.8k, False: 0]
  ------------------
 8969|       |
 8970|  39.7k|        if (outer_action == OFPACT_CT) {
  ------------------
  |  Branch (8970:13): [True: 492, False: 39.2k]
  ------------------
 8971|    492|            if (!field) {
  ------------------
  |  Branch (8971:17): [True: 9, False: 483]
  ------------------
 8972|      9|                return unsupported_nesting(a->type, outer_action, errorp);
 8973|    483|            } else if (!field_requires_ct(field->id)) {
  ------------------
  |  Branch (8973:24): [True: 4, False: 479]
  ------------------
 8974|      4|                verify_error(errorp,
 8975|      4|                             "%s action doesn't support nested modification "
 8976|      4|                             "of %s", ofpact_name(outer_action), field->name);
 8977|      4|                return OFPERR_OFPBAC_BAD_ARGUMENT;
 8978|      4|            }
 8979|    492|        }
 8980|       |
 8981|  39.7k|        if (a->type == OFPACT_METER) {
  ------------------
  |  Branch (8981:13): [True: 1, False: 39.7k]
  ------------------
 8982|      1|            return unsupported_nesting(a->type, outer_action, errorp);
 8983|      1|        }
 8984|  39.7k|    }
 8985|       |
 8986|   246k|    return 0;
 8987|   246k|}
ofp-actions.c:field_requires_ct:
 8941|  30.4k|{
 8942|  30.4k|    return field == MFF_CT_MARK || field == MFF_CT_LABEL;
  ------------------
  |  Branch (8942:12): [True: 535, False: 29.9k]
  |  Branch (8942:36): [True: 432, False: 29.5k]
  ------------------
 8943|  30.4k|}
ofp-actions.c:unsupported_nesting:
 8933|     10|{
 8934|     10|    verify_error(errorp, "%s action doesn't support nested action %s",
 8935|     10|                 ofpact_name(outer_action), ofpact_name(action));
 8936|     10|    return OFPERR_OFPBAC_BAD_ARGUMENT;
 8937|     10|}
ofp-actions.c:encode_ofpact:
 9075|   236k|{
 9076|   236k|    switch (a->type) {
 9077|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME)                              \
 9078|      0|        case OFPACT_##ENUM:                                             \
 9079|      0|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
 9080|      0|            return;
 9081|      0|        OFPACTS
  ------------------
  |  |   64|  91.8k|    OFPACT(OUTPUT,          ofpact_output,      ofpact, "output")       \
  |  |  ------------------
  |  |  |  | 9078|  91.8k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 91.8k, False: 144k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  91.8k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  91.8k|            return;
  |  |  ------------------
  |  |   65|  91.8k|    OFPACT(GROUP,           ofpact_group,       ofpact, "group")        \
  |  |  ------------------
  |  |  |  | 9078|    215|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 215, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    215|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    215|            return;
  |  |  ------------------
  |  |   66|  7.39k|    OFPACT(CONTROLLER,      ofpact_controller,  userdata, "controller") \
  |  |  ------------------
  |  |  |  | 9078|  7.39k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 7.39k, False: 228k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  7.39k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  7.39k|            return;
  |  |  ------------------
  |  |   67|  7.39k|    OFPACT(ENQUEUE,         ofpact_enqueue,     ofpact, "enqueue")      \
  |  |  ------------------
  |  |  |  | 9078|  1.11k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.11k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.11k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.11k|            return;
  |  |  ------------------
  |  |   68|  1.11k|    OFPACT(OUTPUT_REG,      ofpact_output_reg,  ofpact, "output_reg")   \
  |  |  ------------------
  |  |  |  | 9078|    602|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 602, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    602|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    602|            return;
  |  |  ------------------
  |  |   69|  1.40k|    OFPACT(BUNDLE,          ofpact_bundle,      members, "bundle")      \
  |  |  ------------------
  |  |  |  | 9078|  1.40k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.40k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.40k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.40k|            return;
  |  |  ------------------
  |  |   70|  1.40k|                                                                        \
  |  |   71|  1.40k|    /* Header changes. */                                               \
  |  |   72|  27.1k|    OFPACT(SET_FIELD,       ofpact_set_field,   ofpact, "set_field")    \
  |  |  ------------------
  |  |  |  | 9078|  27.1k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 27.1k, False: 208k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  27.1k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  27.1k|            return;
  |  |  ------------------
  |  |   73|  27.1k|    OFPACT(SET_VLAN_VID,    ofpact_vlan_vid,    ofpact, "set_vlan_vid") \
  |  |  ------------------
  |  |  |  | 9078|  1.75k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.75k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.75k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.75k|            return;
  |  |  ------------------
  |  |   74|  1.75k|    OFPACT(SET_VLAN_PCP,    ofpact_vlan_pcp,    ofpact, "set_vlan_pcp") \
  |  |  ------------------
  |  |  |  | 9078|  1.63k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.63k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.63k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.63k|            return;
  |  |  ------------------
  |  |   75|  1.75k|    OFPACT(STRIP_VLAN,      ofpact_null,        ofpact, "strip_vlan")   \
  |  |  ------------------
  |  |  |  | 9078|  1.75k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.75k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.75k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.75k|            return;
  |  |  ------------------
  |  |   76|  1.75k|    OFPACT(PUSH_VLAN,       ofpact_push_vlan,   ofpact, "push_vlan")    \
  |  |  ------------------
  |  |  |  | 9078|    871|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 871, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    871|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    871|            return;
  |  |  ------------------
  |  |   77|    871|    OFPACT(SET_ETH_SRC,     ofpact_mac,         ofpact, "mod_dl_src")   \
  |  |  ------------------
  |  |  |  | 9078|    388|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 388, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    388|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    388|            return;
  |  |  ------------------
  |  |   78|    391|    OFPACT(SET_ETH_DST,     ofpact_mac,         ofpact, "mod_dl_dst")   \
  |  |  ------------------
  |  |  |  | 9078|    391|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 391, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    391|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    391|            return;
  |  |  ------------------
  |  |   79|    965|    OFPACT(SET_IPV4_SRC,    ofpact_ipv4,        ofpact, "mod_nw_src")   \
  |  |  ------------------
  |  |  |  | 9078|    965|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 965, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    965|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    965|            return;
  |  |  ------------------
  |  |   80|    965|    OFPACT(SET_IPV4_DST,    ofpact_ipv4,        ofpact, "mod_nw_dst")   \
  |  |  ------------------
  |  |  |  | 9078|    760|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 760, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    760|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    760|            return;
  |  |  ------------------
  |  |   81|  1.10k|    OFPACT(SET_IP_DSCP,     ofpact_dscp,        ofpact, "mod_nw_tos")   \
  |  |  ------------------
  |  |  |  | 9078|  1.10k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.10k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.10k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.10k|            return;
  |  |  ------------------
  |  |   82|  1.10k|    OFPACT(SET_IP_ECN,      ofpact_ecn,         ofpact, "mod_nw_ecn")   \
  |  |  ------------------
  |  |  |  | 9078|  1.04k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.04k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.04k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.04k|            return;
  |  |  ------------------
  |  |   83|  1.33k|    OFPACT(SET_IP_TTL,      ofpact_ip_ttl,      ofpact, "mod_nw_ttl")   \
  |  |  ------------------
  |  |  |  | 9078|  1.33k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.33k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.33k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.33k|            return;
  |  |  ------------------
  |  |   84|  2.40k|    OFPACT(SET_L4_SRC_PORT, ofpact_l4_port,     ofpact, "mod_tp_src")   \
  |  |  ------------------
  |  |  |  | 9078|  2.40k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.40k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.40k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.40k|            return;
  |  |  ------------------
  |  |   85|  2.40k|    OFPACT(SET_L4_DST_PORT, ofpact_l4_port,     ofpact, "mod_tp_dst")   \
  |  |  ------------------
  |  |  |  | 9078|  1.73k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.73k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.73k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.73k|            return;
  |  |  ------------------
  |  |   86|  1.73k|    OFPACT(REG_MOVE,        ofpact_reg_move,    ofpact, "move")         \
  |  |  ------------------
  |  |  |  | 9078|    509|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 509, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    509|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    509|            return;
  |  |  ------------------
  |  |   87|    509|    OFPACT(STACK_PUSH,      ofpact_stack,       ofpact, "push")         \
  |  |  ------------------
  |  |  |  | 9078|    365|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 365, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    365|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    365|            return;
  |  |  ------------------
  |  |   88|  1.72k|    OFPACT(STACK_POP,       ofpact_stack,       ofpact, "pop")          \
  |  |  ------------------
  |  |  |  | 9078|  1.72k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.72k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.72k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.72k|            return;
  |  |  ------------------
  |  |   89|  3.38k|    OFPACT(DEC_TTL,         ofpact_cnt_ids,     cnt_ids, "dec_ttl")     \
  |  |  ------------------
  |  |  |  | 9078|  3.38k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 3.38k, False: 232k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  3.38k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  3.38k|            return;
  |  |  ------------------
  |  |   90|  3.38k|    OFPACT(SET_MPLS_LABEL,  ofpact_mpls_label,  ofpact, "set_mpls_label") \
  |  |  ------------------
  |  |  |  | 9078|  1.37k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.37k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.37k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.37k|            return;
  |  |  ------------------
  |  |   91|  1.59k|    OFPACT(SET_MPLS_TC,     ofpact_mpls_tc,     ofpact, "set_mpls_tc")  \
  |  |  ------------------
  |  |  |  | 9078|  1.59k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.59k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.59k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.59k|            return;
  |  |  ------------------
  |  |   92|  2.05k|    OFPACT(SET_MPLS_TTL,    ofpact_mpls_ttl,    ofpact, "set_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9078|  2.05k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.05k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.05k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.05k|            return;
  |  |  ------------------
  |  |   93|  2.73k|    OFPACT(DEC_MPLS_TTL,    ofpact_null,        ofpact, "dec_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9078|  2.73k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.73k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.73k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.73k|            return;
  |  |  ------------------
  |  |   94|  2.73k|    OFPACT(PUSH_MPLS,       ofpact_push_mpls,   ofpact, "push_mpls")    \
  |  |  ------------------
  |  |  |  | 9078|    654|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 654, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    654|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    654|            return;
  |  |  ------------------
  |  |   95|  2.17k|    OFPACT(POP_MPLS,        ofpact_pop_mpls,    ofpact, "pop_mpls")     \
  |  |  ------------------
  |  |  |  | 9078|  2.17k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.17k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.17k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.17k|            return;
  |  |  ------------------
  |  |   96|  2.17k|    OFPACT(DEC_NSH_TTL,     ofpact_null,        ofpact, "dec_nsh_ttl")  \
  |  |  ------------------
  |  |  |  | 9078|    518|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 518, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    518|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    518|            return;
  |  |  ------------------
  |  |   97|    518|    OFPACT(DELETE_FIELD,    ofpact_delete_field, ofpact, "delete_field") \
  |  |  ------------------
  |  |  |  | 9078|    244|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 244, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    244|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    244|            return;
  |  |  ------------------
  |  |   98|    244|                                                                        \
  |  |   99|    244|    /* Generic encap & decap */                                         \
  |  |  100|  1.18k|    OFPACT(ENCAP,           ofpact_encap,       props, "encap")         \
  |  |  ------------------
  |  |  |  | 9078|  1.18k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.18k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.18k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.18k|            return;
  |  |  ------------------
  |  |  101|  2.64k|    OFPACT(DECAP,           ofpact_decap,       ofpact, "decap")        \
  |  |  ------------------
  |  |  |  | 9078|  2.64k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.64k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.64k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.64k|            return;
  |  |  ------------------
  |  |  102|  2.64k|                                                                        \
  |  |  103|  2.64k|    /* Metadata. */                                                     \
  |  |  104|  2.64k|    OFPACT(SET_TUNNEL,      ofpact_tunnel,      ofpact, "set_tunnel")   \
  |  |  ------------------
  |  |  |  | 9078|  1.50k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.50k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.50k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.50k|            return;
  |  |  ------------------
  |  |  105|  1.50k|    OFPACT(SET_QUEUE,       ofpact_queue,       ofpact, "set_queue")    \
  |  |  ------------------
  |  |  |  | 9078|    571|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 571, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    571|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    571|            return;
  |  |  ------------------
  |  |  106|    754|    OFPACT(POP_QUEUE,       ofpact_null,        ofpact, "pop_queue")    \
  |  |  ------------------
  |  |  |  | 9078|    754|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 754, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    754|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    754|            return;
  |  |  ------------------
  |  |  107|    754|    OFPACT(FIN_TIMEOUT,     ofpact_fin_timeout, ofpact, "fin_timeout")  \
  |  |  ------------------
  |  |  |  | 9078|    608|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 608, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    608|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    608|            return;
  |  |  ------------------
  |  |  108|    608|                                                                        \
  |  |  109|    608|    /* Flow table interaction. */                                       \
  |  |  110|  1.14k|    OFPACT(RESUBMIT,        ofpact_resubmit,    ofpact, "resubmit")     \
  |  |  ------------------
  |  |  |  | 9078|  1.14k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.14k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.14k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.14k|            return;
  |  |  ------------------
  |  |  111|  33.7k|    OFPACT(LEARN,           ofpact_learn,       specs, "learn")         \
  |  |  ------------------
  |  |  |  | 9078|  33.7k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 33.7k, False: 202k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  33.7k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  33.7k|            return;
  |  |  ------------------
  |  |  112|  33.7k|    OFPACT(CONJUNCTION,     ofpact_conjunction, ofpact, "conjunction")  \
  |  |  ------------------
  |  |  |  | 9078|    211|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 211, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    211|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    211|            return;
  |  |  ------------------
  |  |  113|    211|                                                                        \
  |  |  114|    211|    /* Arithmetic. */                                                   \
  |  |  115|    382|    OFPACT(MULTIPATH,       ofpact_multipath,   ofpact, "multipath")    \
  |  |  ------------------
  |  |  |  | 9078|    382|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 382, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    382|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    382|            return;
  |  |  ------------------
  |  |  116|    382|                                                                        \
  |  |  117|    382|    /* Other. */                                                        \
  |  |  118|  2.18k|    OFPACT(NOTE,            ofpact_note,        data, "note")           \
  |  |  ------------------
  |  |  |  | 9078|  2.18k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 2.18k, False: 233k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  2.18k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  2.18k|            return;
  |  |  ------------------
  |  |  119|  2.18k|    OFPACT(EXIT,            ofpact_null,        ofpact, "exit")         \
  |  |  ------------------
  |  |  |  | 9078|  1.34k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.34k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.34k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.34k|            return;
  |  |  ------------------
  |  |  120|  1.43k|    OFPACT(SAMPLE,          ofpact_sample,      ofpact, "sample")       \
  |  |  ------------------
  |  |  |  | 9078|  1.43k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.43k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.43k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.43k|            return;
  |  |  ------------------
  |  |  121|  1.43k|    OFPACT(UNROLL_XLATE,    ofpact_unroll_xlate, ofpact, "unroll_xlate") \
  |  |  ------------------
  |  |  |  | 9078|      0|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 0, False: 236k]
  |  |  |  |  ------------------
  |  |  |  | 9079|      0|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|      0|            return;
  |  |  ------------------
  |  |  122|  7.29k|    OFPACT(CT,              ofpact_conntrack,   ofpact, "ct")           \
  |  |  ------------------
  |  |  |  | 9078|  7.29k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 7.29k, False: 228k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  7.29k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  7.29k|            return;
  |  |  ------------------
  |  |  123|  7.29k|    OFPACT(CT_CLEAR,        ofpact_null,        ofpact, "ct_clear")     \
  |  |  ------------------
  |  |  |  | 9078|  1.31k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.31k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.31k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.31k|            return;
  |  |  ------------------
  |  |  124|  5.58k|    OFPACT(NAT,             ofpact_nat,         ofpact, "nat")          \
  |  |  ------------------
  |  |  |  | 9078|  5.58k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 5.58k, False: 230k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  5.58k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  5.58k|            return;
  |  |  ------------------
  |  |  125|  5.58k|    OFPACT(OUTPUT_TRUNC,    ofpact_output_trunc,ofpact, "output_trunc") \
  |  |  ------------------
  |  |  |  | 9078|    692|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 692, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    692|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    692|            return;
  |  |  ------------------
  |  |  126|  6.56k|    OFPACT(CLONE,           ofpact_nest,        actions, "clone")       \
  |  |  ------------------
  |  |  |  | 9078|  6.56k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 6.56k, False: 229k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  6.56k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  6.56k|            return;
  |  |  ------------------
  |  |  127|  6.56k|    OFPACT(CHECK_PKT_LARGER, ofpact_check_pkt_larger, ofpact,           \
  |  |  ------------------
  |  |  |  | 9078|    345|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 345, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    345|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    345|            return;
  |  |  ------------------
  |  |  128|    345|           "check_pkt_larger")                                          \
  |  |  129|    345|                                                                        \
  |  |  130|    345|    /* Debugging actions.                                               \
  |  |  131|    345|     *                                                                  \
  |  |  132|    345|     * These are intentionally undocumented, subject to change, and     \
  |  |  133|    345|     * only accepted if ovs-vswitchd is started with --enable-dummy. */ \
  |  |  134|  1.17k|    OFPACT(DEBUG_RECIRC, ofpact_null,           ofpact, "debug_recirc") \
  |  |  ------------------
  |  |  |  | 9078|  1.17k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.17k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.17k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.17k|            return;
  |  |  ------------------
  |  |  135|  1.98k|    OFPACT(DEBUG_SLOW,   ofpact_null,           ofpact, "debug_slow")   \
  |  |  ------------------
  |  |  |  | 9078|  1.98k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 1.98k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9079|  1.98k|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|  1.98k|            return;
  |  |  ------------------
  |  |  136|  1.98k|                                                                        \
  |  |  137|  1.98k|    /* Instructions ("meter" is an action in OF1.5+). */                \
  |  |  138|  1.98k|    OFPACT(METER,           ofpact_meter,       ofpact, "meter")        \
  |  |  ------------------
  |  |  |  | 9078|    123|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 123, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|    123|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|    123|            return;
  |  |  ------------------
  |  |  139|    123|    OFPACT(CLEAR_ACTIONS,   ofpact_null,        ofpact, "clear_actions") \
  |  |  ------------------
  |  |  |  | 9078|      8|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 8, False: 236k]
  |  |  |  |  ------------------
  |  |  |  | 9079|      8|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|      8|            return;
  |  |  ------------------
  |  |  140|     57|    OFPACT(WRITE_ACTIONS,   ofpact_nest,        actions, "write_actions") \
  |  |  ------------------
  |  |  |  | 9078|     57|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 57, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9079|     57|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|     57|            return;
  |  |  ------------------
  |  |  141|     57|    OFPACT(WRITE_METADATA,  ofpact_metadata,    ofpact, "write_metadata") \
  |  |  ------------------
  |  |  |  | 9078|      8|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 8, False: 236k]
  |  |  |  |  ------------------
  |  |  |  | 9079|      8|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|      8|            return;
  |  |  ------------------
  |  |  142|      8|    OFPACT(GOTO_TABLE,      ofpact_goto_table,  ofpact, "goto_table")
  |  |  ------------------
  |  |  |  | 9078|      8|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9078:9): [True: 8, False: 236k]
  |  |  |  |  ------------------
  |  |  |  | 9079|      8|            encode_##ENUM(ofpact_get_##ENUM(a), ofp_version, out);      \
  |  |  |  | 9080|      8|            return;
  |  |  ------------------
  ------------------
 9082|      0|#undef OFPACT
 9083|      0|    default:
  ------------------
  |  Branch (9083:5): [True: 0, False: 236k]
  ------------------
 9084|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 9085|   236k|    }
 9086|   236k|}
ofp-actions.c:encode_OUTPUT:
  610|  91.8k|{
  611|  91.8k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (611:9): [True: 70.2k, False: 21.6k]
  ------------------
  612|  70.2k|        struct ofp10_action_output *oao;
  613|       |
  614|  70.2k|        oao = put_OFPAT10_OUTPUT(out);
  615|  70.2k|        oao->port = htons(ofp_to_u16(output->port));
  616|  70.2k|        oao->max_len = htons(output->max_len);
  617|  70.2k|    } else {
  618|  21.6k|        struct ofp11_action_output *oao;
  619|       |
  620|  21.6k|        oao = put_OFPAT11_OUTPUT(out);
  621|  21.6k|        oao->port = ofputil_port_to_ofp11(output->port);
  622|       |        oao->max_len = htons(output->max_len);
  623|  21.6k|    }
  624|  91.8k|}
ofp-actions.c:ofpact_put_raw:
 9974|   334k|{
 9975|   334k|    const struct ofpact_raw_instance *inst;
 9976|   334k|    struct ofp_action_header *oah;
 9977|   334k|    const struct ofpact_hdrs *hdrs;
 9978|       |
 9979|   334k|    inst = ofpact_raw_lookup(ofp_version, raw);
 9980|   334k|    hdrs = &inst->hdrs;
 9981|       |
 9982|   334k|    oah = ofpbuf_put_zeros(buf, inst->min_length);
 9983|   334k|    oah->type = htons(hdrs->vendor ? OFPAT_VENDOR : hdrs->type);
  ------------------
  |  Branch (9983:17): [True: 217k, False: 117k]
  ------------------
 9984|   334k|    oah->len = htons(inst->min_length);
 9985|   334k|    oah->vendor = htonl(hdrs->vendor);
 9986|       |
 9987|   334k|    switch (hdrs->vendor) {
 9988|   117k|    case 0:
  ------------------
  |  Branch (9988:5): [True: 117k, False: 217k]
  ------------------
 9989|   117k|        break;
 9990|       |
 9991|   217k|    case NX_VENDOR_ID:
  ------------------
  |  |  110|   217k|#define NX_VENDOR_ID    0x00002320 /* Nicira. */
  ------------------
  |  Branch (9991:5): [True: 217k, False: 117k]
  ------------------
 9992|   217k|    case ONF_VENDOR_ID: {
  ------------------
  |  |  111|   217k|#define ONF_VENDOR_ID   0x4f4e4600 /* Open Networking Foundation. */
  ------------------
  |  Branch (9992:5): [True: 0, False: 334k]
  ------------------
 9993|   217k|        struct ext_action_header *nah = (struct ext_action_header *) oah;
 9994|   217k|        nah->subtype = htons(hdrs->type);
 9995|   217k|        break;
 9996|   217k|    }
 9997|       |
 9998|      0|    default:
  ------------------
  |  Branch (9998:5): [True: 0, False: 334k]
  ------------------
 9999|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
10000|   334k|    }
10001|       |
10002|   334k|    if (inst->arg_len) {
  ------------------
  |  Branch (10002:9): [True: 22.1k, False: 312k]
  ------------------
10003|  22.1k|        uint8_t *p = (uint8_t *) oah + inst->arg_ofs + inst->arg_len;
10004|  22.1k|        int i;
10005|       |
10006|  71.5k|        for (i = 0; i < inst->arg_len; i++) {
  ------------------
  |  Branch (10006:21): [True: 49.4k, False: 22.1k]
  ------------------
10007|  49.4k|            *--p = arg;
10008|  49.4k|            arg >>= 8;
10009|  49.4k|        }
10010|   312k|    } else {
10011|   312k|        ovs_assert(!arg);
  ------------------
  |  |   62|   312k|#define ovs_assert ovs_ignore
  ------------------
10012|   312k|    }
10013|       |
10014|   334k|    return oah;
10015|   334k|}
ofp-actions.c:ofpact_raw_lookup:
 9959|   334k|{
 9960|   334k|    const struct ofpact_raw_instance *inst;
 9961|       |
 9962|   334k|    HMAP_FOR_EACH_WITH_HASH (inst, encode_node, hash_2words(raw, ofp_version),
  ------------------
  |  |  138|   334k|    for (INIT_MULTIVAR(NODE, MEMBER, hmap_first_with_hash(HMAP, HASH),        \
  |  |  ------------------
  |  |  |  |  171|   334k|    INIT_MULTIVAR_EXP(VAR, MEMBER, POINTER, ITER_TYPE, (void) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  174|   334k|    ITER_TYPE *ITER_VAR(VAR) = ( __VA_ARGS__ , (ITER_TYPE *) POINTER)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  139|   334k|                       struct hmap_node);                                     \
  |  |  140|   334k|         CONDITION_MULTIVAR(NODE, MEMBER, ITER_VAR(NODE) != NULL);            \
  |  |  ------------------
  |  |  |  |  185|   334k|    ((EXPR) ?                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:5): [True: 334k, False: 0]
  |  |  |  |  |  Branch (185:6): [True: 334k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  186|   334k|     (((VAR) = OBJECT_CONTAINING(ITER_VAR(VAR), VAR, MEMBER)), 1) :           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|   334k|    ((OVS_TYPEOF(OBJECT)) (void *)                                      \
  |  |  |  |  |  |  135|   334k|     ((char *) (POINTER) - OBJECT_OFFSETOF(OBJECT, MEMBER)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|   334k|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|   334k|     (((VAR) = NULL), 0))
  |  |  ------------------
  |  |  141|   334k|         UPDATE_MULTIVAR(NODE, hmap_next_with_hash(ITER_VAR(NODE))))
  |  |  ------------------
  |  |  |  |  193|      0|    (ITER_VAR(VAR) = NEXT_ITER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|      0|#define ITER_VAR(NAME) NAME ## __iterator__
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9963|   334k|                             ofpact_encode_hmap()) {
 9964|   334k|        if (inst->raw == raw && inst->hdrs.ofp_version == ofp_version) {
  ------------------
  |  Branch (9964:13): [True: 334k, False: 0]
  |  Branch (9964:33): [True: 334k, False: 0]
  ------------------
 9965|   334k|            return inst;
 9966|   334k|        }
 9967|   334k|    }
 9968|      0|    OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 9969|   334k|}
ofp-actions.c:ofpact_encode_hmap:
 9827|   334k|{
 9828|   334k|    static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
  ------------------
  |  |  134|   334k|    {                                           \
  |  |  135|   334k|        false,                                  \
  |  |  136|   334k|        OVS_MUTEX_INITIALIZER,                  \
  |  |  ------------------
  |  |  |  |   45|   334k|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|   334k|                                "<unlocked>" }
  |  |  ------------------
  |  |  137|   334k|    }
  ------------------
 9829|   334k|    static struct hmap hmap;
 9830|       |
 9831|   334k|    if (ovsthread_once_start(&once)) {
  ------------------
  |  Branch (9831:9): [True: 1, False: 334k]
  ------------------
 9832|      1|        struct ofpact_raw_instance *inst;
 9833|       |
 9834|      1|        hmap_init(&hmap);
 9835|      1|        for (inst = all_raw_instances;
 9836|    385|             inst < &all_raw_instances[ARRAY_SIZE(all_raw_instances)];
  ------------------
  |  |  297|    385|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|    385|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    385|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|    385|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    385|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    385|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9836:14): [True: 384, False: 1]
  ------------------
 9837|    384|             inst++) {
 9838|    384|            hmap_insert(&hmap, &inst->encode_node,
  ------------------
  |  |  101|    384|    hmap_insert_at(HMAP, NODE, HASH, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    384|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    384|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    384|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9839|    384|                        hash_2words(inst->raw, inst->hdrs.ofp_version));
 9840|    384|        }
 9841|      1|        ovsthread_once_done(&once);
 9842|      1|    }
 9843|   334k|    return &hmap;
 9844|   334k|}
ofp-actions.c:encode_GROUP:
  735|    215|{
  736|    215|    put_OFPAT_GROUP(out, ofp_version, group->group_id);
  737|    215|}
ofp-actions.c:encode_CONTROLLER:
  898|  7.39k|{
  899|  7.39k|    if (controller->userdata_len
  ------------------
  |  Branch (899:9): [True: 856, False: 6.53k]
  ------------------
  900|  6.53k|        || controller->pause
  ------------------
  |  Branch (900:12): [True: 5.68k, False: 850]
  ------------------
  901|    850|        || controller->meter_id != NX_CTLR_NO_METER
  ------------------
  |  |  307|  8.24k|#define NX_CTLR_NO_METER 0
  ------------------
  |  Branch (901:12): [True: 396, False: 454]
  ------------------
  902|  6.94k|        || controller->ofpact.raw == NXAST_RAW_CONTROLLER2) {
  ------------------
  |  Branch (902:12): [True: 0, False: 454]
  ------------------
  903|  6.94k|        size_t start_ofs = out->size;
  904|  6.94k|        put_NXAST_CONTROLLER2(out);
  905|  6.94k|        if (controller->max_len != UINT16_MAX) {
  ------------------
  |  Branch (905:13): [True: 221, False: 6.71k]
  ------------------
  906|    221|            ofpprop_put_u16(out, NXAC2PT_MAX_LEN, controller->max_len);
  907|    221|        }
  908|  6.94k|        if (controller->controller_id != 0) {
  ------------------
  |  Branch (908:13): [True: 246, False: 6.69k]
  ------------------
  909|    246|            ofpprop_put_u16(out, NXAC2PT_CONTROLLER_ID,
  910|    246|                            controller->controller_id);
  911|    246|        }
  912|  6.94k|        if (controller->reason != OFPR_ACTION) {
  ------------------
  |  Branch (912:13): [True: 195, False: 6.74k]
  ------------------
  913|    195|            ofpprop_put_u8(out, NXAC2PT_REASON, controller->reason);
  914|    195|        }
  915|  6.94k|        if (controller->userdata_len != 0) {
  ------------------
  |  Branch (915:13): [True: 856, False: 6.08k]
  ------------------
  916|    856|            ofpprop_put(out, NXAC2PT_USERDATA, controller->userdata,
  917|    856|                        controller->userdata_len);
  918|    856|        }
  919|  6.94k|        if (controller->pause) {
  ------------------
  |  Branch (919:13): [True: 5.68k, False: 1.25k]
  ------------------
  920|  5.68k|            ofpprop_put_flag(out, NXAC2PT_PAUSE);
  921|  5.68k|        }
  922|  6.94k|        if (controller->meter_id != NX_CTLR_NO_METER) {
  ------------------
  |  |  307|  6.94k|#define NX_CTLR_NO_METER 0
  ------------------
  |  Branch (922:13): [True: 396, False: 6.54k]
  ------------------
  923|    396|            ofpprop_put_u32(out, NXAC2PT_METER_ID, controller->meter_id);
  924|    396|        }
  925|  6.94k|        pad_ofpat(out, start_ofs);
  926|  6.94k|    } else {
  927|    454|        struct nx_action_controller *nac;
  928|       |
  929|    454|        nac = put_NXAST_CONTROLLER(out);
  930|    454|        nac->max_len = htons(controller->max_len);
  931|       |        nac->controller_id = htons(controller->controller_id);
  932|    454|        nac->reason = controller->reason;
  933|    454|    }
  934|  7.39k|}
ofp-actions.c:pad_ofpat:
10019|  66.9k|{
10020|  66.9k|    struct ofp_action_header *oah;
10021|       |
10022|  66.9k|    ofpbuf_put_zeros(openflow, PAD_SIZE(openflow->size - start_ofs,
  ------------------
  |  |  306|  66.9k|#define PAD_SIZE(X, Y) (ROUND_UP(X, Y) - (X))
  |  |  ------------------
  |  |  |  |  303|  66.9k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  |  |  ------------------
  |  |  |  |  |  |  300|  66.9k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10023|  66.9k|                                        OFP_ACTION_ALIGN));
10024|       |
10025|  66.9k|    oah = ofpbuf_at_assert(openflow, start_ofs, sizeof *oah);
10026|       |    oah->len = htons(openflow->size - start_ofs);
10027|  66.9k|}
ofp-actions.c:encode_ENQUEUE:
 1111|  1.11k|{
 1112|  1.11k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (1112:9): [True: 373, False: 743]
  ------------------
 1113|    373|        struct ofp10_action_enqueue *oae;
 1114|       |
 1115|    373|        oae = put_OFPAT10_ENQUEUE(out);
 1116|    373|        oae->port = htons(ofp_to_u16(enqueue->port));
 1117|    373|        oae->queue_id = htonl(enqueue->queue);
 1118|    743|    } else {
 1119|    743|        put_OFPAT_SET_QUEUE(out, ofp_version, enqueue->queue);
 1120|       |
 1121|    743|        struct ofp11_action_output *oao = put_OFPAT11_OUTPUT(out);
 1122|    743|        oao->port = ofputil_port_to_ofp11(enqueue->port);
 1123|    743|        oao->max_len = OVS_BE16_MAX;
  ------------------
  |  |   42|    743|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
 1124|       |
 1125|    743|        put_NXAST_POP_QUEUE(out);
 1126|    743|    }
 1127|  1.11k|}
ofp-actions.c:encode_OUTPUT_REG:
 1283|    602|{
 1284|       |    /* If 'output_reg' came in as an NXAST_RAW_OUTPUT_REG2 action, or if it
 1285|       |     * cannot be encoded in the older form, encode it as
 1286|       |     * NXAST_RAW_OUTPUT_REG2. */
 1287|    602|    if (output_reg->ofpact.raw == NXAST_RAW_OUTPUT_REG2
  ------------------
  |  Branch (1287:9): [True: 0, False: 602]
  ------------------
 1288|    602|        || !mf_nxm_header(output_reg->src.field->id)) {
  ------------------
  |  Branch (1288:12): [True: 373, False: 229]
  ------------------
 1289|    373|        struct nx_action_output_reg2 *naor = put_NXAST_OUTPUT_REG2(out);
 1290|    373|        size_t size = out->size;
 1291|       |
 1292|    373|        naor->ofs_nbits = nxm_encode_ofs_nbits(output_reg->src.ofs,
 1293|    373|                                               output_reg->src.n_bits);
 1294|    373|        naor->max_len = htons(output_reg->max_len);
 1295|       |
 1296|    373|        out->size = size - sizeof naor->pad;
 1297|    373|        nx_put_mff_header(out, output_reg->src.field, 0, false);
 1298|    373|        out->size = size;
 1299|    373|    } else {
 1300|    229|        struct nx_action_output_reg *naor = put_NXAST_OUTPUT_REG(out);
 1301|       |
 1302|    229|        naor->ofs_nbits = nxm_encode_ofs_nbits(output_reg->src.ofs,
 1303|    229|                                               output_reg->src.n_bits);
 1304|    229|        naor->src = htonl(nxm_header_from_mff(output_reg->src.field));
 1305|       |        naor->max_len = htons(output_reg->max_len);
 1306|    229|    }
 1307|    602|}
ofp-actions.c:encode_BUNDLE:
 1503|  1.40k|{
 1504|  1.40k|    int members_len = ROUND_UP(2 * bundle->n_members, OFP_ACTION_ALIGN);
  ------------------
  |  |  303|  1.40k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|  1.40k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
 1505|  1.40k|    struct nx_action_bundle *nab;
 1506|  1.40k|    ovs_be16 *members;
 1507|  1.40k|    size_t i;
 1508|       |
 1509|  1.40k|    nab = (bundle->dst.field
  ------------------
  |  Branch (1509:12): [True: 5, False: 1.39k]
  ------------------
 1510|  1.40k|           ? put_NXAST_BUNDLE_LOAD(out)
 1511|  1.40k|           : put_NXAST_BUNDLE(out));
 1512|  1.40k|    nab->len = htons(ntohs(nab->len) + members_len);
 1513|  1.40k|    nab->algorithm = htons(bundle->algorithm);
 1514|  1.40k|    nab->fields = htons(bundle->fields);
 1515|  1.40k|    nab->basis = htons(bundle->basis);
 1516|  1.40k|    nab->member_type = htonl(mf_nxm_header(MFF_IN_PORT));
 1517|  1.40k|    nab->n_members = htons(bundle->n_members);
 1518|  1.40k|    if (bundle->dst.field) {
  ------------------
  |  Branch (1518:9): [True: 5, False: 1.39k]
  ------------------
 1519|      5|        nab->ofs_nbits = nxm_encode_ofs_nbits(bundle->dst.ofs,
 1520|      5|                                              bundle->dst.n_bits);
 1521|      5|        nab->dst = htonl(nxm_header_from_mff(bundle->dst.field));
 1522|      5|    }
 1523|       |
 1524|  1.40k|    members = ofpbuf_put_zeros(out, members_len);
 1525|  59.3k|    for (i = 0; i < bundle->n_members; i++) {
  ------------------
  |  Branch (1525:17): [True: 57.9k, False: 1.40k]
  ------------------
 1526|       |        members[i] = htons(ofp_to_u16(bundle->members[i]));
 1527|  57.9k|    }
 1528|  1.40k|}
ofp-actions.c:encode_SET_FIELD:
 3158|  27.1k|{
 3159|  27.1k|    if (ofp_version >= OFP15_VERSION) {
  ------------------
  |  Branch (3159:9): [True: 0, False: 27.1k]
  ------------------
 3160|       |        /* OF1.5+ only has Set-Field (reg_load is redundant so we drop it
 3161|       |         * entirely). */
 3162|      0|        set_field_to_set_field(sf, ofp_version, out);
 3163|  27.1k|    } else if (sf->ofpact.raw == NXAST_RAW_REG_LOAD ||
  ------------------
  |  Branch (3163:16): [True: 374, False: 26.7k]
  ------------------
 3164|  26.7k|               sf->ofpact.raw == NXAST_RAW_REG_LOAD2) {
  ------------------
  |  Branch (3164:16): [True: 0, False: 26.7k]
  ------------------
 3165|       |        /* It came in as reg_load, send it out the same way. */
 3166|    374|        set_field_to_nxast(sf, out);
 3167|  26.7k|    } else if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (3167:16): [True: 23.1k, False: 3.61k]
  ------------------
 3168|       |        /* OpenFlow 1.0 and 1.1 don't have Set-Field. */
 3169|  23.1k|        set_field_to_legacy_openflow(sf, ofp_version, out);
 3170|  23.1k|    } else if (is_all_ones(ofpact_set_field_mask(sf), sf->field->n_bytes)) {
  ------------------
  |  |  563|  3.61k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|  3.61k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|  3.61k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|  3.61k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
  |  Branch (3170:16): [True: 1.63k, False: 1.97k]
  ------------------
 3171|       |        /* We're encoding to OpenFlow 1.2, 1.3, or 1.4.  The action sets an
 3172|       |         * entire field, so encode it as OFPAT_SET_FIELD. */
 3173|  1.63k|        set_field_to_set_field(sf, ofp_version, out);
 3174|  1.97k|    } else {
 3175|       |        /* We're encoding to OpenFlow 1.2, 1.3, or 1.4.  The action cannot be
 3176|       |         * encoded as OFPAT_SET_FIELD because it does not set an entire field,
 3177|       |         * so encode it as reg_load. */
 3178|  1.97k|        set_field_to_nxast(sf, out);
 3179|  1.97k|    }
 3180|  27.1k|}
ofp-actions.c:set_field_to_set_field:
 3144|  1.63k|{
 3145|  1.63k|    struct ofp12_action_set_field *oasf OVS_UNUSED;
 3146|  1.63k|    size_t start_ofs = out->size;
 3147|       |
 3148|  1.63k|    oasf = put_OFPAT12_SET_FIELD(out);
 3149|  1.63k|    out->size = out->size - sizeof oasf->pad;
 3150|  1.63k|    nx_put_entry(out, sf->field, ofp_version, sf->value,
 3151|  1.63k|                 ofpact_set_field_mask(sf));
  ------------------
  |  |  563|  1.63k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|  1.63k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|  1.63k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|  1.63k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 3152|  1.63k|    pad_ofpat(out, start_ofs);
 3153|  1.63k|}
ofp-actions.c:set_field_to_nxast:
 2990|  21.0k|{
 2991|       |    /* If 'sf' cannot be encoded as NXAST_REG_LOAD because it requires an
 2992|       |     * experimenter OXM or is variable length (or if it came in as
 2993|       |     * NXAST_REG_LOAD2), encode as NXAST_REG_LOAD2.  Otherwise use
 2994|       |     * NXAST_REG_LOAD, which is backward compatible. */
 2995|  21.0k|    if (sf->ofpact.raw == NXAST_RAW_REG_LOAD2
  ------------------
  |  Branch (2995:9): [True: 0, False: 21.0k]
  ------------------
 2996|  21.0k|        || !mf_nxm_header(sf->field->id) || sf->field->variable_len) {
  ------------------
  |  Branch (2996:12): [True: 2.91k, False: 18.1k]
  |  Branch (2996:45): [True: 6.70k, False: 11.4k]
  ------------------
 2997|  9.62k|        struct ext_action_header *eah OVS_UNUSED;
 2998|  9.62k|        size_t start_ofs = openflow->size;
 2999|       |
 3000|  9.62k|        eah = put_NXAST_REG_LOAD2(openflow);
 3001|  9.62k|        openflow->size = openflow->size - sizeof eah->pad;
 3002|  9.62k|        nx_put_entry(openflow, sf->field, 0, sf->value,
 3003|  9.62k|                     ofpact_set_field_mask(sf));
  ------------------
  |  |  563|  9.62k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|  9.62k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|  9.62k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|  9.62k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 3004|  9.62k|        pad_ofpat(openflow, start_ofs);
 3005|  11.4k|    } else {
 3006|  11.4k|        struct mf_subfield dst;
 3007|  11.4k|        uint64_t value;
 3008|       |
 3009|  11.4k|        dst.ofs = dst.n_bits = 0;
 3010|   119k|        while (next_load_segment(sf, &dst, &value)) {
  ------------------
  |  Branch (3010:16): [True: 107k, False: 11.4k]
  ------------------
 3011|   107k|            put_reg_load(openflow, &dst, value);
 3012|   107k|        }
 3013|  11.4k|    }
 3014|  21.0k|}
ofp-actions.c:next_load_segment:
 2967|   119k|{
 2968|   119k|    int n_bits = sf->field->n_bits;
 2969|   119k|    int n_bytes = sf->field->n_bytes;
 2970|   119k|    int start = dst->ofs + dst->n_bits;
 2971|       |
 2972|   119k|    if (start < n_bits) {
  ------------------
  |  Branch (2972:9): [True: 114k, False: 4.24k]
  ------------------
 2973|   114k|        dst->field = sf->field;
 2974|   114k|        dst->ofs = bitwise_scan(ofpact_set_field_mask(sf), n_bytes, 1, start,
  ------------------
  |  |  563|   114k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|   114k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|   114k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|   114k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 2975|   114k|                                n_bits);
 2976|   114k|        if (dst->ofs < n_bits) {
  ------------------
  |  Branch (2976:13): [True: 107k, False: 7.18k]
  ------------------
 2977|   107k|            dst->n_bits = bitwise_scan(ofpact_set_field_mask(sf), n_bytes, 0,
  ------------------
  |  |  563|   107k|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|   107k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|   107k|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|   107k|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 2978|   107k|                                       dst->ofs + 1,
 2979|   107k|                                       MIN(dst->ofs + 64, n_bits)) - dst->ofs;
  ------------------
  |  |   91|   107k|#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (91:20): [True: 78.7k, False: 29.0k]
  |  |  ------------------
  ------------------
 2980|   107k|            *value = bitwise_get(sf->value, n_bytes, dst->ofs, dst->n_bits);
 2981|   107k|            return true;
 2982|   107k|        }
 2983|   114k|    }
 2984|  11.4k|    return false;
 2985|   119k|}
ofp-actions.c:put_reg_load:
 2955|   109k|{
 2956|   109k|    ovs_assert(dst->n_bits <= 64);
  ------------------
  |  |   62|   109k|#define ovs_assert ovs_ignore
  ------------------
 2957|       |
 2958|   109k|    struct nx_action_reg_load *narl = put_NXAST_REG_LOAD(openflow);
 2959|   109k|    narl->ofs_nbits = nxm_encode_ofs_nbits(dst->ofs, dst->n_bits);
 2960|       |    narl->dst = htonl(nxm_header_from_mff(dst->field));
 2961|   109k|    narl->value = htonll(value);
 2962|   109k|}
ofp-actions.c:set_field_to_legacy_openflow:
 3027|  23.1k|{
 3028|  23.1k|    switch ((int) sf->field->id) {
 3029|  1.55k|    case MFF_VLAN_TCI: {
  ------------------
  |  Branch (3029:5): [True: 1.55k, False: 21.5k]
  ------------------
 3030|  1.55k|        ovs_be16 tci = sf->value->be16;
 3031|  1.55k|        bool cfi = (tci & htons(VLAN_CFI)) != 0;
 3032|  1.55k|        uint16_t vid = vlan_tci_to_vid(tci);
 3033|  1.55k|        uint8_t pcp = vlan_tci_to_pcp(tci);
 3034|       |
 3035|  1.55k|        if (ofp_version < OFP11_VERSION) {
  ------------------
  |  Branch (3035:13): [True: 614, False: 937]
  ------------------
 3036|       |            /* NXM_OF_VLAN_TCI to OpenFlow 1.0 mapping:
 3037|       |             *
 3038|       |             * If CFI=1, Add or modify VLAN VID & PCP.
 3039|       |             * If CFI=0, strip VLAN header, if any.
 3040|       |             */
 3041|    614|            if (cfi) {
  ------------------
  |  Branch (3041:17): [True: 206, False: 408]
  ------------------
 3042|    206|                put_OFPAT10_SET_VLAN_VID(out, vid);
 3043|    206|                put_OFPAT10_SET_VLAN_PCP(out, pcp);
 3044|    408|            } else {
 3045|    408|                put_OFPAT10_STRIP_VLAN(out);
 3046|    408|            }
 3047|    937|        } else {
 3048|       |            /* NXM_OF_VLAN_TCI to OpenFlow 1.1 mapping:
 3049|       |             *
 3050|       |             * If CFI=1, Add or modify VLAN VID & PCP.
 3051|       |             *    OpenFlow 1.1 set actions only apply if the packet
 3052|       |             *    already has VLAN tags.  To be sure that is the case
 3053|       |             *    we have to push a VLAN header.  As we do not support
 3054|       |             *    multiple layers of VLANs, this is a no-op, if a VLAN
 3055|       |             *    header already exists.  This may backfire, however,
 3056|       |             *    when we start supporting multiple layers of VLANs.
 3057|       |             * If CFI=0, strip VLAN header, if any.
 3058|       |             */
 3059|    937|            if (cfi) {
  ------------------
  |  Branch (3059:17): [True: 545, False: 392]
  ------------------
 3060|       |                /* Push a VLAN tag, if one was not seen at action validation
 3061|       |                 * time. */
 3062|    545|                if (!sf->flow_has_vlan) {
  ------------------
  |  Branch (3062:21): [True: 287, False: 258]
  ------------------
 3063|    287|                    put_OFPAT11_PUSH_VLAN(out, htons(ETH_TYPE_VLAN_8021Q));
 3064|    287|                }
 3065|    545|                put_OFPAT11_SET_VLAN_VID(out, vid);
 3066|    545|                put_OFPAT11_SET_VLAN_PCP(out, pcp);
 3067|    545|            } else {
 3068|       |                /* If the flow did not match on vlan, we have no way of
 3069|       |                 * knowing if the vlan tag exists, so we must POP just to be
 3070|       |                 * sure. */
 3071|    392|                put_OFPAT11_POP_VLAN(out);
 3072|    392|            }
 3073|    937|        }
 3074|  1.55k|        break;
 3075|      0|    }
 3076|       |
 3077|    388|    case MFF_VLAN_VID: {
  ------------------
  |  Branch (3077:5): [True: 388, False: 22.7k]
  ------------------
 3078|    388|        uint16_t vid = ntohs(sf->value->be16) & VLAN_VID_MASK;
  ------------------
  |  |  494|    388|#define VLAN_VID_MASK 0x0fff
  ------------------
 3079|    388|        if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (3079:13): [True: 194, False: 194]
  ------------------
 3080|    194|            put_OFPAT10_SET_VLAN_VID(out, vid);
 3081|    194|        } else {
 3082|    194|            put_OFPAT11_SET_VLAN_VID(out, vid);
 3083|    194|        }
 3084|    388|        break;
 3085|      0|    }
 3086|       |
 3087|    388|    case MFF_VLAN_PCP:
  ------------------
  |  Branch (3087:5): [True: 388, False: 22.7k]
  ------------------
 3088|    388|        if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (3088:13): [True: 194, False: 194]
  ------------------
 3089|    194|            put_OFPAT10_SET_VLAN_PCP(out, sf->value->u8);
 3090|    194|        } else {
 3091|    194|            put_OFPAT11_SET_VLAN_PCP(out, sf->value->u8);
 3092|    194|        }
 3093|    388|        break;
 3094|       |
 3095|     66|    case MFF_ETH_SRC:
  ------------------
  |  Branch (3095:5): [True: 66, False: 23.0k]
  ------------------
 3096|     66|        put_OFPAT_SET_DL_SRC(out, ofp_version)->dl_addr = sf->value->mac;
 3097|     66|        break;
 3098|       |
 3099|     66|    case MFF_ETH_DST:
  ------------------
  |  Branch (3099:5): [True: 66, False: 23.0k]
  ------------------
 3100|     66|        put_OFPAT_SET_DL_DST(out, ofp_version)->dl_addr = sf->value->mac;
 3101|     66|        break;
 3102|       |
 3103|    194|    case MFF_IPV4_SRC:
  ------------------
  |  Branch (3103:5): [True: 194, False: 22.9k]
  ------------------
 3104|    194|        put_OFPAT_SET_NW_SRC(out, ofp_version, sf->value->be32);
 3105|    194|        break;
 3106|       |
 3107|    194|    case MFF_IPV4_DST:
  ------------------
  |  Branch (3107:5): [True: 194, False: 22.9k]
  ------------------
 3108|    194|        put_OFPAT_SET_NW_DST(out, ofp_version, sf->value->be32);
 3109|    194|        break;
 3110|       |
 3111|    194|    case MFF_IP_DSCP:
  ------------------
  |  Branch (3111:5): [True: 194, False: 22.9k]
  ------------------
 3112|    194|        put_OFPAT_SET_NW_TOS(out, ofp_version, sf->value->u8);
 3113|    194|        break;
 3114|       |
 3115|    226|    case MFF_IP_DSCP_SHIFTED:
  ------------------
  |  Branch (3115:5): [True: 226, False: 22.9k]
  ------------------
 3116|    226|        put_OFPAT_SET_NW_TOS(out, ofp_version, sf->value->u8 << 2);
 3117|    226|        break;
 3118|       |
 3119|    341|    case MFF_IP_ECN: {
  ------------------
  |  Branch (3119:5): [True: 341, False: 22.8k]
  ------------------
 3120|    341|        struct ofpact_ecn ip_ecn = { .ecn = sf->value->u8 };
 3121|    341|        encode_SET_IP_ECN(&ip_ecn, ofp_version, out);
 3122|    341|        break;
 3123|      0|    }
 3124|       |
 3125|    194|    case MFF_TCP_SRC:
  ------------------
  |  Branch (3125:5): [True: 194, False: 22.9k]
  ------------------
 3126|    487|    case MFF_UDP_SRC:
  ------------------
  |  Branch (3126:5): [True: 293, False: 22.8k]
  ------------------
 3127|    487|        put_OFPAT_SET_TP_SRC(out, sf->value->be16);
 3128|    487|        break;
 3129|       |
 3130|    304|    case MFF_TCP_DST:
  ------------------
  |  Branch (3130:5): [True: 304, False: 22.8k]
  ------------------
 3131|    338|    case MFF_UDP_DST:
  ------------------
  |  Branch (3131:5): [True: 34, False: 23.1k]
  ------------------
 3132|    338|        put_OFPAT_SET_TP_DST(out, sf->value->be16);
 3133|    338|        break;
 3134|       |
 3135|  18.7k|    default:
  ------------------
  |  Branch (3135:5): [True: 18.7k, False: 4.43k]
  ------------------
 3136|  18.7k|        set_field_to_nxast(sf, out);
 3137|  18.7k|        break;
 3138|  23.1k|    }
 3139|  23.1k|}
ofp-actions.c:encode_SET_VLAN_VID:
 1590|  1.75k|{
 1591|  1.75k|    uint16_t vid = vlan_vid->vlan_vid;
 1592|       |
 1593|       |    /* Push a VLAN tag, if none is present and this form of the action calls
 1594|       |     * for such a feature. */
 1595|  1.75k|    if (ofp_version > OFP10_VERSION
  ------------------
  |  Branch (1595:9): [True: 998, False: 761]
  ------------------
 1596|    998|        && vlan_vid->push_vlan_if_needed
  ------------------
  |  Branch (1596:12): [True: 761, False: 237]
  ------------------
 1597|    761|        && !vlan_vid->flow_has_vlan) {
  ------------------
  |  Branch (1597:12): [True: 86, False: 675]
  ------------------
 1598|     86|        put_OFPAT11_PUSH_VLAN(out, htons(ETH_TYPE_VLAN_8021Q));
 1599|     86|    }
 1600|       |
 1601|  1.75k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (1601:9): [True: 761, False: 998]
  ------------------
 1602|    761|        put_OFPAT10_SET_VLAN_VID(out, vid);
 1603|    998|    } else if (ofp_version == OFP11_VERSION) {
  ------------------
  |  Branch (1603:16): [True: 261, False: 737]
  ------------------
 1604|    261|        put_OFPAT11_SET_VLAN_VID(out, vid);
 1605|    737|    } else {
 1606|    737|        put_set_field(out, ofp_version, MFF_VLAN_VID, vid | OFPVID12_PRESENT);
 1607|    737|    }
 1608|  1.75k|}
ofp-actions.c:put_set_field:
 2938|  5.52k|{
 2939|  5.52k|    struct ofp12_action_set_field *oasf OVS_UNUSED;
 2940|  5.52k|    int n_bytes = mf_from_id(field)->n_bytes;
 2941|  5.52k|    size_t start_ofs = openflow->size;
 2942|  5.52k|    union mf_value value;
 2943|       |
 2944|  5.52k|    value.be64 = htonll(value_ << (8 * (8 - n_bytes)));
 2945|       |
 2946|  5.52k|    oasf = put_OFPAT12_SET_FIELD(openflow);
 2947|  5.52k|    openflow->size = openflow->size - sizeof oasf->pad;
 2948|       |    nx_put_entry(openflow, mf_from_id(field), ofp_version, &value, NULL);
 2949|  5.52k|    pad_ofpat(openflow, start_ofs);
 2950|  5.52k|}
ofp-actions.c:encode_SET_VLAN_PCP:
 1698|  1.63k|{
 1699|  1.63k|    uint8_t pcp = vlan_pcp->vlan_pcp;
 1700|       |
 1701|       |    /* Push a VLAN tag, if none is present and this form of the action calls
 1702|       |     * for such a feature. */
 1703|  1.63k|    if (ofp_version > OFP10_VERSION
  ------------------
  |  Branch (1703:9): [True: 1.24k, False: 390]
  ------------------
 1704|  1.24k|        && vlan_pcp->push_vlan_if_needed
  ------------------
  |  Branch (1704:12): [True: 446, False: 795]
  ------------------
 1705|    446|        && !vlan_pcp->flow_has_vlan) {
  ------------------
  |  Branch (1705:12): [True: 200, False: 246]
  ------------------
 1706|    200|        put_OFPAT11_PUSH_VLAN(out, htons(ETH_TYPE_VLAN_8021Q));
 1707|    200|    }
 1708|       |
 1709|  1.63k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (1709:9): [True: 390, False: 1.24k]
  ------------------
 1710|    390|        put_OFPAT10_SET_VLAN_PCP(out, pcp);
 1711|  1.24k|    } else if (ofp_version == OFP11_VERSION) {
  ------------------
  |  Branch (1711:16): [True: 306, False: 935]
  ------------------
 1712|    306|        put_OFPAT11_SET_VLAN_PCP(out, pcp);
 1713|    935|    } else {
 1714|    935|        put_set_field(out, ofp_version, MFF_VLAN_PCP, pcp);
 1715|    935|    }
 1716|  1.63k|}
ofp-actions.c:encode_STRIP_VLAN:
 1791|  1.75k|{
 1792|  1.75k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (1792:9): [True: 1.05k, False: 703]
  ------------------
 1793|  1.05k|        put_OFPAT10_STRIP_VLAN(out);
 1794|  1.05k|    } else {
 1795|    703|        put_OFPAT11_POP_VLAN(out);
 1796|    703|    }
 1797|  1.75k|}
ofp-actions.c:encode_PUSH_VLAN:
 1853|    871|{
 1854|    871|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (1854:9): [True: 272, False: 599]
  ------------------
 1855|       |        /* PUSH is a side effect of a SET_VLAN_VID/PCP, which should
 1856|       |         * follow this action. */
 1857|    599|    } else {
 1858|    599|        put_OFPAT11_PUSH_VLAN(out, push_vlan->ethertype);
 1859|    599|    }
 1860|    871|}
ofp-actions.c:encode_SET_ETH_SRC:
 1951|    388|{
 1952|    388|    encode_SET_ETH_addr(mac, ofp_version, OFPAT_RAW_SET_DL_SRC, MFF_ETH_SRC,
 1953|    388|                        out);
 1954|       |
 1955|    388|}
ofp-actions.c:encode_SET_ETH_addr:
 1937|    779|{
 1938|    779|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (1938:9): [True: 390, False: 389]
  ------------------
 1939|    390|        struct ofp_action_dl_addr *oada;
 1940|       |
 1941|    390|        oada = ofpact_put_raw(out, ofp_version, raw, 0);
 1942|    390|        oada->dl_addr = mac->mac;
 1943|    390|    } else {
 1944|    389|        put_set_field(out, ofp_version, field, eth_addr_to_uint64(mac->mac));
 1945|    389|    }
 1946|    779|}
ofp-actions.c:encode_SET_ETH_DST:
 1961|    391|{
 1962|    391|    encode_SET_ETH_addr(mac, ofp_version, OFPAT_RAW_SET_DL_DST, MFF_ETH_DST,
 1963|    391|                        out);
 1964|       |
 1965|    391|}
ofp-actions.c:encode_SET_IPV4_SRC:
 2046|    965|{
 2047|    965|    encode_SET_IPV4_addr(ipv4, ofp_version, OFPAT_RAW_SET_NW_SRC, MFF_IPV4_SRC,
 2048|    965|                         out);
 2049|    965|}
ofp-actions.c:encode_SET_IPV4_addr:
 2034|  1.72k|{
 2035|  1.72k|    ovs_be32 addr = ipv4->ipv4;
 2036|  1.72k|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (2036:9): [True: 1.07k, False: 655]
  ------------------
 2037|  1.07k|        ofpact_put_raw(out, ofp_version, raw, ntohl(addr));
 2038|  1.07k|    } else {
 2039|       |        put_set_field(out, ofp_version, field, ntohl(addr));
 2040|    655|    }
 2041|  1.72k|}
ofp-actions.c:encode_SET_IPV4_DST:
 2054|    760|{
 2055|    760|    encode_SET_IPV4_addr(ipv4, ofp_version, OFPAT_RAW_SET_NW_DST, MFF_IPV4_DST,
 2056|    760|                         out);
 2057|    760|}
ofp-actions.c:encode_SET_IP_DSCP:
 2129|  1.10k|{
 2130|  1.10k|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (2130:9): [True: 878, False: 227]
  ------------------
 2131|    878|        put_OFPAT_SET_NW_TOS(out, ofp_version, dscp->dscp);
 2132|    878|    } else {
 2133|    227|        put_set_field(out, ofp_version, MFF_IP_DSCP_SHIFTED, dscp->dscp >> 2);
 2134|    227|    }
 2135|  1.10k|}
ofp-actions.c:encode_SET_IP_ECN:
 2198|  1.38k|{
 2199|  1.38k|    uint8_t ecn = ip_ecn->ecn;
 2200|  1.38k|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (2200:9): [True: 704, False: 683]
  ------------------
 2201|    704|        struct mf_subfield dst = { .field = mf_from_id(MFF_IP_ECN),
 2202|    704|                                   .ofs = 0, .n_bits = 2 };
 2203|    704|        put_reg_load(out, &dst, ecn);
 2204|    704|    } else if (ofp_version == OFP11_VERSION) {
  ------------------
  |  Branch (2204:16): [True: 398, False: 285]
  ------------------
 2205|    398|        put_OFPAT11_SET_NW_ECN(out, ecn);
 2206|    398|    } else {
 2207|    285|        put_set_field(out, ofp_version, MFF_IP_ECN, ecn);
 2208|    285|    }
 2209|  1.38k|}
ofp-actions.c:encode_SET_IP_TTL:
 2258|  1.33k|{
 2259|  1.33k|    if (ofp_version >= OFP11_VERSION) {
  ------------------
  |  Branch (2259:9): [True: 283, False: 1.05k]
  ------------------
 2260|    283|        put_OFPAT11_SET_NW_TTL(out, ttl->ttl);
 2261|  1.05k|    } else {
 2262|  1.05k|        struct mf_subfield dst = { .field = mf_from_id(MFF_IP_TTL),
 2263|  1.05k|                                   .ofs = 0, .n_bits = 8 };
 2264|  1.05k|        put_reg_load(out, &dst, ttl->ttl);
 2265|  1.05k|    }
 2266|  1.33k|}
ofp-actions.c:encode_SET_L4_SRC_PORT:
 2336|  2.40k|{
 2337|  2.40k|    uint8_t proto = l4_port->flow_ip_proto;
 2338|  2.40k|    enum mf_field_id field = (proto == IPPROTO_TCP ? MFF_TCP_SRC
  ------------------
  |  Branch (2338:31): [True: 409, False: 1.99k]
  ------------------
 2339|  2.40k|                              : proto == IPPROTO_UDP ? MFF_UDP_SRC
  ------------------
  |  Branch (2339:33): [True: 220, False: 1.77k]
  ------------------
 2340|  1.99k|                              : proto == IPPROTO_SCTP ? MFF_SCTP_SRC
  ------------------
  |  Branch (2340:33): [True: 204, False: 1.57k]
  ------------------
 2341|  1.77k|                              : MFF_N_IDS);
 2342|       |
 2343|  2.40k|    encode_SET_L4_port(l4_port, ofp_version, OFPAT_RAW_SET_TP_SRC, field, out);
 2344|  2.40k|}
ofp-actions.c:encode_SET_L4_port:
 2323|  4.13k|{
 2324|  4.13k|    uint16_t port = l4_port->port;
 2325|       |
 2326|  4.13k|    if (ofp_version >= OFP12_VERSION && field != MFF_N_IDS) {
  ------------------
  |  Branch (2326:9): [True: 1.11k, False: 3.02k]
  |  Branch (2326:41): [True: 453, False: 661]
  ------------------
 2327|    453|        put_set_field(out, ofp_version, field, port);
 2328|  3.68k|    } else {
 2329|  3.68k|        ofpact_put_raw(out, ofp_version, raw, port);
 2330|  3.68k|    }
 2331|  4.13k|}
ofp-actions.c:encode_SET_L4_DST_PORT:
 2350|  1.73k|{
 2351|  1.73k|    uint8_t proto = l4_port->flow_ip_proto;
 2352|  1.73k|    enum mf_field_id field = (proto == IPPROTO_TCP ? MFF_TCP_DST
  ------------------
  |  Branch (2352:31): [True: 345, False: 1.38k]
  ------------------
 2353|  1.73k|                              : proto == IPPROTO_UDP ? MFF_UDP_DST
  ------------------
  |  Branch (2353:33): [True: 288, False: 1.09k]
  ------------------
 2354|  1.38k|                              : proto == IPPROTO_SCTP ? MFF_SCTP_DST
  ------------------
  |  Branch (2354:33): [True: 505, False: 593]
  ------------------
 2355|  1.09k|                              : MFF_N_IDS);
 2356|       |
 2357|  1.73k|    encode_SET_L4_port(l4_port, ofp_version, OFPAT_RAW_SET_TP_DST, field, out);
 2358|  1.73k|}
ofp-actions.c:encode_REG_MOVE:
 2669|    509|{
 2670|       |    /* For OpenFlow 1.3, the choice of ONFACT_RAW13_COPY_FIELD versus
 2671|       |     * NXAST_RAW_REG_MOVE is somewhat difficult.  Neither one is guaranteed to
 2672|       |     * be supported by every OpenFlow 1.3 implementation.  It would be ideal to
 2673|       |     * probe for support.  Until we have that ability, we currently prefer
 2674|       |     * NXAST_RAW_REG_MOVE for backward compatibility with older Open vSwitch
 2675|       |     * versions.  */
 2676|    509|    size_t start_ofs = out->size;
 2677|    509|    if (ofp_version >= OFP15_VERSION) {
  ------------------
  |  Branch (2677:9): [True: 0, False: 509]
  ------------------
 2678|      0|        struct ofp15_action_copy_field *copy = put_OFPAT15_COPY_FIELD(out);
 2679|      0|        copy->n_bits = htons(move->dst.n_bits);
 2680|      0|        copy->src_offset = htons(move->src.ofs);
 2681|      0|        copy->dst_offset = htons(move->dst.ofs);
 2682|      0|        out->size = out->size - sizeof copy->pad2;
 2683|      0|        nx_put_mff_header(out, move->src.field, ofp_version, false);
 2684|      0|        nx_put_mff_header(out, move->dst.field, ofp_version, false);
 2685|    509|    } else if (ofp_version == OFP13_VERSION
  ------------------
  |  Branch (2685:16): [True: 226, False: 283]
  ------------------
 2686|    226|               && move->ofpact.raw == ONFACT_RAW13_COPY_FIELD) {
  ------------------
  |  Branch (2686:19): [True: 0, False: 226]
  ------------------
 2687|      0|        struct onf_action_copy_field *copy = put_ONFACT13_COPY_FIELD(out);
 2688|      0|        copy->n_bits = htons(move->dst.n_bits);
 2689|      0|        copy->src_offset = htons(move->src.ofs);
 2690|      0|        copy->dst_offset = htons(move->dst.ofs);
 2691|      0|        out->size = out->size - sizeof copy->pad3;
 2692|      0|        nx_put_mff_header(out, move->src.field, ofp_version, false);
 2693|      0|        nx_put_mff_header(out, move->dst.field, ofp_version, false);
 2694|    509|    } else {
 2695|    509|        struct nx_action_reg_move *narm = put_NXAST_REG_MOVE(out);
 2696|    509|        narm->n_bits = htons(move->dst.n_bits);
 2697|    509|        narm->src_ofs = htons(move->src.ofs);
 2698|    509|        narm->dst_ofs = htons(move->dst.ofs);
 2699|    509|        nx_put_mff_header(out, move->src.field, 0, false);
 2700|       |        nx_put_mff_header(out, move->dst.field, 0, false);
 2701|    509|    }
 2702|    509|    pad_ofpat(out, start_ofs);
 2703|    509|}
ofp-actions.c:encode_STACK_PUSH:
 3532|    365|{
 3533|    365|    encode_STACK_op(stack, put_NXAST_STACK_PUSH(out));
 3534|    365|}
ofp-actions.c:encode_STACK_op:
 3516|  2.09k|{
 3517|  2.09k|    struct ofpbuf b;
 3518|  2.09k|    ovs_be16 n_bits;
 3519|       |
 3520|  2.09k|    nasp->offset = htons(stack_action->subfield.ofs);
 3521|       |
 3522|  2.09k|    ofpbuf_use_stack(&b, nasp, ntohs(nasp->len));
 3523|  2.09k|    ofpbuf_put_uninit(&b, OBJECT_OFFSETOF(nasp, pad));
  ------------------
  |  |  108|  2.09k|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  ------------------
 3524|  2.09k|    nx_put_mff_header(&b, stack_action->subfield.field, 0, false);
 3525|       |    n_bits = htons(stack_action->subfield.n_bits);
 3526|  2.09k|    ofpbuf_put(&b, &n_bits, sizeof n_bits);
 3527|  2.09k|}
ofp-actions.c:encode_STACK_POP:
 3539|  1.72k|{
 3540|  1.72k|    encode_STACK_op(stack, put_NXAST_STACK_POP(out));
 3541|  1.72k|}
ofp-actions.c:encode_DEC_TTL:
 3666|  3.38k|{
 3667|  3.38k|    if (dec_ttl->ofpact.raw == NXAST_RAW_DEC_TTL_CNT_IDS
  ------------------
  |  Branch (3667:9): [True: 2.63k, False: 748]
  ------------------
 3668|    748|        || dec_ttl->n_controllers != 1
  ------------------
  |  Branch (3668:12): [True: 0, False: 748]
  ------------------
 3669|  2.63k|        || dec_ttl->cnt_ids[0] != 0) {
  ------------------
  |  Branch (3669:12): [True: 0, False: 748]
  ------------------
 3670|  2.63k|        struct nx_action_cnt_ids *nac_ids = put_NXAST_DEC_TTL_CNT_IDS(out);
 3671|  2.63k|        int ids_len = ROUND_UP(2 * dec_ttl->n_controllers, OFP_ACTION_ALIGN);
  ------------------
  |  |  303|  2.63k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|  2.63k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
 3672|  2.63k|        ovs_be16 *ids;
 3673|  2.63k|        size_t i;
 3674|       |
 3675|  2.63k|        nac_ids->len = htons(ntohs(nac_ids->len) + ids_len);
 3676|  2.63k|        nac_ids->n_controllers = htons(dec_ttl->n_controllers);
 3677|       |
 3678|  2.63k|        ids = ofpbuf_put_zeros(out, ids_len);
 3679|   285k|        for (i = 0; i < dec_ttl->n_controllers; i++) {
  ------------------
  |  Branch (3679:21): [True: 283k, False: 2.63k]
  ------------------
 3680|   283k|            ids[i] = htons(dec_ttl->cnt_ids[i]);
 3681|   283k|        }
 3682|  2.63k|    } else {
 3683|    748|        put_OFPAT_DEC_NW_TTL(out, ofp_version);
 3684|    748|    }
 3685|  3.38k|}
ofp-actions.c:encode_SET_MPLS_LABEL:
 3774|  1.37k|{
 3775|  1.37k|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (3775:9): [True: 956, False: 420]
  ------------------
 3776|    956|        put_OFPAT_SET_MPLS_LABEL(out, ofp_version, label->label);
 3777|    956|    } else {
 3778|       |        put_set_field(out, ofp_version, MFF_MPLS_LABEL, ntohl(label->label));
 3779|    420|    }
 3780|  1.37k|}
ofp-actions.c:encode_SET_MPLS_TC:
 3846|  1.59k|{
 3847|  1.59k|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (3847:9): [True: 786, False: 807]
  ------------------
 3848|    786|        put_OFPAT_SET_MPLS_TC(out, ofp_version, tc->tc);
 3849|    807|    } else {
 3850|    807|        put_set_field(out, ofp_version, MFF_MPLS_TC, tc->tc);
 3851|    807|    }
 3852|  1.59k|}
ofp-actions.c:encode_SET_MPLS_TTL:
 3907|  2.05k|{
 3908|  2.05k|    put_OFPAT_SET_MPLS_TTL(out, ofp_version, ttl->ttl);
 3909|  2.05k|}
ofp-actions.c:encode_DEC_MPLS_TTL:
 3963|  2.73k|{
 3964|  2.73k|    put_OFPAT_DEC_MPLS_TTL(out, ofp_version);
 3965|  2.73k|}
ofp-actions.c:encode_PUSH_MPLS:
 4009|    654|{
 4010|    654|    put_OFPAT_PUSH_MPLS(out, ofp_version, push_mpls->ethertype);
 4011|    654|}
ofp-actions.c:encode_POP_MPLS:
 4067|  2.17k|{
 4068|  2.17k|    put_OFPAT_POP_MPLS(out, ofp_version, pop_mpls->ethertype);
 4069|  2.17k|}
ofp-actions.c:encode_DEC_NSH_TTL:
 4808|    518|{
 4809|    518|    put_NXAST_DEC_NSH_TTL(out);
 4810|    518|}
ofp-actions.c:encode_DELETE_FIELD:
 4224|    244|{
 4225|    244|    size_t size;
 4226|       |
 4227|    244|    put_NXAST_DELETE_FIELD(out);
 4228|    244|    size = out->size;
 4229|       |
 4230|    244|    out->size = size - MEMBER_SIZEOF(struct nx_action_delete_field, pad);
  ------------------
  |  |  115|    244|#define MEMBER_SIZEOF(STRUCT, MEMBER) (sizeof(((STRUCT *) NULL)->MEMBER))
  ------------------
 4231|       |    nx_put_mff_header(out, delete_field->field, 0, false);
 4232|    244|    out->size = size;
 4233|    244|}
ofp-actions.c:encode_ENCAP:
 4512|  1.18k|{
 4513|  1.18k|    size_t start_ofs = out->size;
 4514|  1.18k|    struct nx_action_encap *nae = put_NXAST_ENCAP(out);
 4515|  1.18k|    int i;
 4516|       |
 4517|  1.18k|    nae->new_pkt_type = encap->new_pkt_type;
 4518|  1.18k|    nae->hdr_size = htons(encap->hdr_size);
 4519|  1.18k|    const struct ofpact_ed_prop *prop = encap->props;
 4520|  2.27k|    for (i = 0; i < encap->n_props; i++) {
  ------------------
  |  Branch (4520:17): [True: 1.08k, False: 1.18k]
  ------------------
 4521|  1.08k|        encode_ed_prop(&prop, out);
 4522|  1.08k|    }
 4523|  1.18k|    pad_ofpat(out, start_ofs);
 4524|  1.18k|}
ofp-actions.c:encode_DECAP:
 4715|  2.64k|{
 4716|  2.64k|    struct nx_action_decap *nad = put_NXAST_DECAP(out);
 4717|       |
 4718|       |    nad->len = htons(sizeof(struct nx_action_decap));
 4719|  2.64k|    nad->new_pkt_type = decap->new_pkt_type;
 4720|  2.64k|}
ofp-actions.c:encode_SET_TUNNEL:
 4132|  1.50k|{
 4133|  1.50k|    uint64_t tun_id = tunnel->tun_id;
 4134|       |
 4135|  1.50k|    if (ofp_version < OFP12_VERSION) {
  ------------------
  |  Branch (4135:9): [True: 888, False: 616]
  ------------------
 4136|    888|        if (tun_id <= UINT32_MAX
  ------------------
  |  Branch (4136:13): [True: 605, False: 283]
  ------------------
 4137|    605|            && tunnel->ofpact.raw != NXAST_RAW_SET_TUNNEL64) {
  ------------------
  |  Branch (4137:16): [True: 366, False: 239]
  ------------------
 4138|    366|            put_NXAST_SET_TUNNEL(out, tun_id);
 4139|    522|        } else {
 4140|    522|            put_NXAST_SET_TUNNEL64(out, tun_id);
 4141|    522|        }
 4142|    888|    } else {
 4143|    616|        put_set_field(out, ofp_version, MFF_TUN_ID, tun_id);
 4144|    616|    }
 4145|  1.50k|}
ofp-actions.c:encode_SET_QUEUE:
 4278|    571|{
 4279|    571|    put_OFPAT_SET_QUEUE(out, ofp_version, queue->queue_id);
 4280|    571|}
ofp-actions.c:encode_POP_QUEUE:
 4315|    754|{
 4316|    754|    put_NXAST_POP_QUEUE(out);
 4317|    754|}
ofp-actions.c:encode_FIN_TIMEOUT:
 4392|    608|{
 4393|    608|    struct nx_action_fin_timeout *naft = put_NXAST_FIN_TIMEOUT(out);
 4394|    608|    naft->fin_idle_timeout = htons(fin_timeout->fin_idle_timeout);
 4395|       |    naft->fin_hard_timeout = htons(fin_timeout->fin_hard_timeout);
 4396|    608|}
ofp-actions.c:encode_RESUBMIT:
 4965|  1.14k|{
 4966|  1.14k|    uint16_t in_port = ofp_to_u16(resubmit->in_port);
 4967|       |
 4968|  1.14k|    if (resubmit->table_id == 0xff
  ------------------
  |  Branch (4968:9): [True: 667, False: 473]
  ------------------
 4969|    667|        && resubmit->ofpact.raw == NXAST_RAW_RESUBMIT) {
  ------------------
  |  Branch (4969:12): [True: 0, False: 667]
  ------------------
 4970|      0|        put_NXAST_RESUBMIT(out, in_port);
 4971|  1.14k|    } else {
 4972|  1.14k|        struct nx_action_resubmit *nar;
 4973|  1.14k|        nar = resubmit->with_ct_orig
  ------------------
  |  Branch (4973:15): [True: 483, False: 657]
  ------------------
 4974|  1.14k|            ? put_NXAST_RESUBMIT_TABLE_CT(out) : put_NXAST_RESUBMIT_TABLE(out);
 4975|  1.14k|        nar->table = resubmit->table_id;
 4976|       |        nar->in_port = htons(in_port);
 4977|  1.14k|    }
 4978|  1.14k|}
ofp-actions.c:encode_LEARN:
 5573|  33.7k|{
 5574|  33.7k|    const struct ofpact_learn_spec *spec;
 5575|  33.7k|    struct nx_action_learn *nal;
 5576|  33.7k|    size_t start_ofs;
 5577|       |
 5578|  33.7k|    start_ofs = out->size;
 5579|       |
 5580|  33.7k|    if (learn->ofpact.raw == NXAST_RAW_LEARN2
  ------------------
  |  Branch (5580:9): [True: 0, False: 33.7k]
  ------------------
 5581|  33.7k|        || learn->limit != 0
  ------------------
  |  Branch (5581:12): [True: 815, False: 32.9k]
  ------------------
 5582|  32.9k|        || learn->flags & NX_LEARN_F_WRITE_RESULT) {
  ------------------
  |  Branch (5582:12): [True: 270, False: 32.6k]
  ------------------
 5583|  1.08k|        struct nx_action_learn2 *nal2;
 5584|       |
 5585|  1.08k|        nal2 = put_NXAST_LEARN2(out);
 5586|  1.08k|        nal2->limit = htonl(learn->limit);
 5587|  1.08k|        nal2->result_dst_ofs = htons(learn->result_dst.ofs);
 5588|  1.08k|        nal = &nal2->up;
 5589|  32.6k|    } else {
 5590|  32.6k|        nal = put_NXAST_LEARN(out);
 5591|  32.6k|    }
 5592|  33.7k|    nal->idle_timeout = htons(learn->idle_timeout);
 5593|  33.7k|    nal->hard_timeout = htons(learn->hard_timeout);
 5594|  33.7k|    nal->fin_idle_timeout = htons(learn->fin_idle_timeout);
 5595|  33.7k|    nal->fin_hard_timeout = htons(learn->fin_hard_timeout);
 5596|  33.7k|    nal->priority = htons(learn->priority);
 5597|  33.7k|    nal->cookie = learn->cookie;
 5598|  33.7k|    nal->flags = htons(learn->flags);
 5599|  33.7k|    nal->table_id = learn->table_id;
 5600|       |
 5601|  33.7k|    if (learn->flags & NX_LEARN_F_WRITE_RESULT) {
  ------------------
  |  Branch (5601:9): [True: 270, False: 33.4k]
  ------------------
 5602|    270|        nx_put_header(out, learn->result_dst.field->id, 0, false);
 5603|    270|    }
 5604|       |
 5605|  54.6k|    OFPACT_LEARN_SPEC_FOR_EACH (spec, learn) {
  ------------------
  |  |  900|  33.7k|    for ((SPEC) = (LEARN)->specs;               \
  |  |  901|  88.3k|         (SPEC) < ofpact_learn_spec_end(LEARN); \
  |  |  ------------------
  |  |  |  Branch (901:10): [True: 54.6k, False: 33.7k]
  |  |  ------------------
  |  |  902|  54.6k|         (SPEC) = ofpact_learn_spec_next(SPEC))
  ------------------
 5606|  54.6k|        put_u16(out, spec->n_bits | spec->dst_type | spec->src_type);
 5607|       |
 5608|  54.6k|        if (spec->src_type == NX_LEARN_SRC_FIELD) {
  ------------------
  |  |  821|  54.6k|#define NX_LEARN_SRC_FIELD     (0 << 13) /* Copy from field. */
  ------------------
  |  Branch (5608:13): [True: 2.44k, False: 52.1k]
  ------------------
 5609|  2.44k|            put_u32(out, nxm_header_from_mff(spec->src.field));
 5610|  2.44k|            put_u16(out, spec->src.ofs);
 5611|  52.1k|        } else {
 5612|  52.1k|            size_t n_dst_bytes = 2 * DIV_ROUND_UP(spec->n_bits, 16);
  ------------------
  |  |  300|  52.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
 5613|  52.1k|            uint8_t *bits = ofpbuf_put_zeros(out, n_dst_bytes);
 5614|  52.1k|            unsigned int n_bytes = DIV_ROUND_UP(spec->n_bits, 8);
  ------------------
  |  |  300|  52.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
 5615|       |
 5616|  52.1k|            memcpy(bits + n_dst_bytes - n_bytes, ofpact_learn_spec_imm(spec),
 5617|  52.1k|                   n_bytes);
 5618|  52.1k|        }
 5619|       |
 5620|  54.6k|        if (spec->dst_type == NX_LEARN_DST_MATCH ||
  ------------------
  |  |  825|   109k|#define NX_LEARN_DST_MATCH     (0 << 11) /* Add match criterion. */
  ------------------
  |  Branch (5620:13): [True: 53.9k, False: 624]
  ------------------
 5621|  54.4k|            spec->dst_type == NX_LEARN_DST_LOAD) {
  ------------------
  |  |  826|    624|#define NX_LEARN_DST_LOAD      (1 << 11) /* Add NXAST_REG_LOAD action. */
  ------------------
  |  Branch (5621:13): [True: 414, False: 210]
  ------------------
 5622|  54.4k|            put_u32(out, nxm_header_from_mff(spec->dst.field));
 5623|  54.4k|            put_u16(out, spec->dst.ofs);
 5624|  54.4k|        }
 5625|  54.6k|    }
 5626|       |
 5627|  33.7k|    pad_ofpat(out, start_ofs);
 5628|  33.7k|}
ofp-actions.c:put_u16:
 5560|   111k|{
 5561|       |    put_be16(b, htons(x));
 5562|   111k|}
ofp-actions.c:put_be16:
 5548|   111k|{
 5549|   111k|    ofpbuf_put(b, &x, sizeof x);
 5550|   111k|}
ofp-actions.c:put_u32:
 5566|  56.8k|{
 5567|       |    put_be32(b, htonl(x));
 5568|  56.8k|}
ofp-actions.c:put_be32:
 5554|  56.8k|{
 5555|  56.8k|    ofpbuf_put(b, &x, sizeof x);
 5556|  56.8k|}
ofp-actions.c:encode_CONJUNCTION:
 5691|    211|{
 5692|    211|    struct nx_action_conjunction *nac = put_NXAST_CONJUNCTION(out);
 5693|    211|    nac->clause = oc->clause;
 5694|    211|    nac->n_clauses = oc->n_clauses;
 5695|       |    nac->id = htonl(oc->id);
 5696|    211|}
ofp-actions.c:encode_MULTIPATH:
 5845|    382|{
 5846|    382|    struct nx_action_multipath *nam = put_NXAST_MULTIPATH(out);
 5847|       |
 5848|    382|    nam->fields = htons(mp->fields);
 5849|    382|    nam->basis = htons(mp->basis);
 5850|    382|    nam->algorithm = htons(mp->algorithm);
 5851|    382|    nam->max_link = htons(mp->max_link);
 5852|    382|    nam->arg = htonl(mp->arg);
 5853|    382|    nam->ofs_nbits = nxm_encode_ofs_nbits(mp->dst.ofs, mp->dst.n_bits);
 5854|       |    nam->dst = htonl(nxm_header_from_mff(mp->dst.field));
 5855|    382|}
ofp-actions.c:encode_NOTE:
 5916|  2.18k|{
 5917|  2.18k|    size_t start_ofs = out->size;
 5918|  2.18k|    struct nx_action_note *nan;
 5919|       |
 5920|  2.18k|    put_NXAST_NOTE(out);
 5921|  2.18k|    out->size = out->size - sizeof nan->note;
 5922|       |
 5923|  2.18k|    ofpbuf_put(out, note->data, note->length);
 5924|  2.18k|    pad_ofpat(out, start_ofs);
 5925|  2.18k|}
ofp-actions.c:encode_EXIT:
 5975|  1.34k|{
 5976|  1.34k|    put_NXAST_EXIT(out);
 5977|  1.34k|}
ofp-actions.c:encode_SAMPLE:
 6427|  1.43k|{
 6428|  1.43k|    if (sample->ofpact.raw == NXAST_RAW_SAMPLE4 ||
  ------------------
  |  Branch (6428:9): [True: 0, False: 1.43k]
  ------------------
 6429|  1.43k|        sample->obs_domain_src.field ||
  ------------------
  |  Branch (6429:9): [True: 273, False: 1.16k]
  ------------------
 6430|  1.16k|        sample->obs_point_src.field) {
  ------------------
  |  Branch (6430:9): [True: 194, False: 971]
  ------------------
 6431|    467|        encode_SAMPLE4(sample, put_NXAST_SAMPLE4(out));
 6432|    971|    } else if (sample->ofpact.raw == NXAST_RAW_SAMPLE3
  ------------------
  |  Branch (6432:16): [True: 0, False: 971]
  ------------------
 6433|    971|        || sample->direction != NX_ACTION_SAMPLE_DEFAULT) {
  ------------------
  |  Branch (6433:12): [True: 303, False: 668]
  ------------------
 6434|    303|        encode_SAMPLE2(sample, put_NXAST_SAMPLE3(out));
 6435|    668|    } else if (sample->ofpact.raw == NXAST_RAW_SAMPLE2
  ------------------
  |  Branch (6435:16): [True: 0, False: 668]
  ------------------
 6436|    668|               || sample->sampling_port != OFPP_NONE) {
  ------------------
  |  |   47|    668|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|    668|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (6436:19): [True: 211, False: 457]
  ------------------
 6437|    211|        encode_SAMPLE2(sample, put_NXAST_SAMPLE2(out));
 6438|    457|    } else {
 6439|    457|        struct nx_action_sample *nas = put_NXAST_SAMPLE(out);
 6440|    457|        nas->probability = htons(sample->probability);
 6441|    457|        nas->collector_set_id = htonl(sample->collector_set_id);
 6442|    457|        nas->obs_domain_id = htonl(sample->obs_domain_imm);
 6443|       |        nas->obs_point_id = htonl(sample->obs_point_imm);
 6444|    457|    }
 6445|  1.43k|}
ofp-actions.c:encode_SAMPLE4:
 6396|    467|{
 6397|    467|    nas->probability = htons(sample->probability);
 6398|    467|    nas->collector_set_id = htonl(sample->collector_set_id);
 6399|    467|    nas->sampling_port = htons(ofp_to_u16(sample->sampling_port));
 6400|    467|    nas->direction = sample->direction;
 6401|       |
 6402|    467|    if (sample->obs_domain_src.field) {
  ------------------
  |  Branch (6402:9): [True: 273, False: 194]
  ------------------
 6403|    273|        nas->obs_domain_src =
 6404|    273|            htonl(nxm_header_from_mff(sample->obs_domain_src.field));
 6405|    273|        nas->obs_domain_ofs_nbits =
 6406|    273|            nxm_encode_ofs_nbits(sample->obs_domain_src.ofs,
 6407|    273|                                 sample->obs_domain_src.n_bits);
 6408|    273|    } else {
 6409|    194|        nas->obs_domain_src = htonl(0);
 6410|    194|        nas->obs_domain_imm = htonl(sample->obs_domain_imm);
 6411|    194|    }
 6412|    467|    if (sample->obs_point_src.field) {
  ------------------
  |  Branch (6412:9): [True: 194, False: 273]
  ------------------
 6413|    194|        nas->obs_point_src =
 6414|    194|            htonl(nxm_header_from_mff(sample->obs_point_src.field));
 6415|    194|        nas->obs_point_ofs_nbits =
 6416|    194|            nxm_encode_ofs_nbits(sample->obs_point_src.ofs,
 6417|    194|                                 sample->obs_point_src.n_bits);
 6418|    273|    } else {
 6419|    273|        nas->obs_point_src = htonl(0);
 6420|       |        nas->obs_point_imm = htonl(sample->obs_point_imm);
 6421|    273|    }
 6422|    467|}
ofp-actions.c:encode_SAMPLE2:
 6384|    514|{
 6385|    514|    nas->probability = htons(sample->probability);
 6386|    514|    nas->collector_set_id = htonl(sample->collector_set_id);
 6387|    514|    nas->obs_domain_id = htonl(sample->obs_domain_imm);
 6388|    514|    nas->obs_point_id = htonl(sample->obs_point_imm);
 6389|       |    nas->sampling_port = htons(ofp_to_u16(sample->sampling_port));
 6390|    514|    nas->direction = sample->direction;
 6391|    514|}
ofp-actions.c:encode_CT:
 6888|  7.29k|{
 6889|  7.29k|    struct nx_action_conntrack *nac;
 6890|  7.29k|    const size_t ofs = out->size;
 6891|  7.29k|    size_t len;
 6892|       |
 6893|  7.29k|    nac = put_NXAST_CT(out);
 6894|  7.29k|    nac->flags = htons(conntrack->flags);
 6895|  7.29k|    if (conntrack->zone_src.field) {
  ------------------
  |  Branch (6895:9): [True: 202, False: 7.09k]
  ------------------
 6896|    202|        nac->zone_src = htonl(nxm_header_from_mff(conntrack->zone_src.field));
 6897|    202|        nac->zone_ofs_nbits = nxm_encode_ofs_nbits(conntrack->zone_src.ofs,
 6898|    202|                                                   conntrack->zone_src.n_bits);
 6899|  7.09k|    } else {
 6900|  7.09k|        nac->zone_src = htonl(0);
 6901|  7.09k|        nac->zone_imm = htons(conntrack->zone_imm);
 6902|  7.09k|    }
 6903|  7.29k|    nac->recirc_table = conntrack->recirc_table;
 6904|  7.29k|    nac->alg = htons(conntrack->alg);
 6905|       |
 6906|  7.29k|    len = ofpacts_put_openflow_actions(conntrack->actions,
 6907|  7.29k|                                       ofpact_ct_get_action_len(conntrack),
 6908|  7.29k|                                       out, ofp_version);
 6909|  7.29k|    len += sizeof(*nac);
 6910|  7.29k|    nac = ofpbuf_at(out, ofs, sizeof(*nac));
 6911|       |    nac->len = htons(len);
 6912|  7.29k|}
ofp-actions.c:encode_CT_CLEAR:
 7101|  1.31k|{
 7102|  1.31k|    put_NXAST_CT_CLEAR(out);
 7103|  1.31k|}
ofp-actions.c:encode_NAT:
 7156|  5.58k|{
 7157|  5.58k|    struct nx_action_nat *nan;
 7158|  5.58k|    const size_t ofs = out->size;
 7159|  5.58k|    uint16_t range_present = 0;
 7160|       |
 7161|  5.58k|    nan = put_NXAST_NAT(out);
 7162|  5.58k|    nan->flags = htons(nat->flags);
 7163|  5.58k|    if (nat->range_af == AF_INET) {
  ------------------
  |  Branch (7163:9): [True: 713, False: 4.87k]
  ------------------
 7164|    713|        if (nat->range.addr.ipv4.min) {
  ------------------
  |  Branch (7164:13): [True: 348, False: 365]
  ------------------
 7165|    348|            ovs_be32 *min = ofpbuf_put_uninit(out, sizeof *min);
 7166|    348|            *min = nat->range.addr.ipv4.min;
 7167|    348|            range_present |= NX_NAT_RANGE_IPV4_MIN;
 7168|    348|        }
 7169|    713|        if (nat->range.addr.ipv4.max) {
  ------------------
  |  Branch (7169:13): [True: 109, False: 604]
  ------------------
 7170|    109|            ovs_be32 *max = ofpbuf_put_uninit(out, sizeof *max);
 7171|    109|            *max = nat->range.addr.ipv4.max;
 7172|    109|            range_present |= NX_NAT_RANGE_IPV4_MAX;
 7173|    109|        }
 7174|  4.87k|    } else if (nat->range_af == AF_INET6) {
  ------------------
  |  Branch (7174:16): [True: 3.07k, False: 1.79k]
  ------------------
 7175|  3.07k|        if (!ipv6_mask_is_any(&nat->range.addr.ipv6.min)) {
  ------------------
  |  Branch (7175:13): [True: 1.71k, False: 1.36k]
  ------------------
 7176|  1.71k|            struct in6_addr *min = ofpbuf_put_uninit(out, sizeof *min);
 7177|  1.71k|            *min = nat->range.addr.ipv6.min;
 7178|  1.71k|            range_present |= NX_NAT_RANGE_IPV6_MIN;
 7179|  1.71k|        }
 7180|  3.07k|        if (!ipv6_mask_is_any(&nat->range.addr.ipv6.max)) {
  ------------------
  |  Branch (7180:13): [True: 1.04k, False: 2.03k]
  ------------------
 7181|  1.04k|            struct in6_addr *max = ofpbuf_put_uninit(out, sizeof *max);
 7182|  1.04k|            *max = nat->range.addr.ipv6.max;
 7183|  1.04k|            range_present |= NX_NAT_RANGE_IPV6_MAX;
 7184|  1.04k|        }
 7185|  3.07k|    }
 7186|  5.58k|    if (nat->range_af != AF_UNSPEC) {
  ------------------
  |  Branch (7186:9): [True: 3.79k, False: 1.79k]
  ------------------
 7187|  3.79k|        if (nat->range.proto.min) {
  ------------------
  |  Branch (7187:13): [True: 1.05k, False: 2.73k]
  ------------------
 7188|  1.05k|            ovs_be16 *min = ofpbuf_put_uninit(out, sizeof *min);
 7189|  1.05k|            *min = htons(nat->range.proto.min);
 7190|  1.05k|            range_present |= NX_NAT_RANGE_PROTO_MIN;
 7191|  1.05k|        }
 7192|  3.79k|        if (nat->range.proto.max) {
  ------------------
  |  Branch (7192:13): [True: 444, False: 3.34k]
  ------------------
 7193|    444|            ovs_be16 *max = ofpbuf_put_uninit(out, sizeof *max);
 7194|    444|            *max = htons(nat->range.proto.max);
 7195|    444|            range_present |= NX_NAT_RANGE_PROTO_MAX;
 7196|    444|        }
 7197|  3.79k|    }
 7198|  5.58k|    pad_ofpat(out, ofs);
 7199|  5.58k|    nan = ofpbuf_at(out, ofs, sizeof *nan);
 7200|       |    nan->range_present = htons(range_present);
 7201|  5.58k|}
ofp-actions.c:encode_OUTPUT_TRUNC:
 7522|    692|{
 7523|    692|    struct nx_action_output_trunc *natrc = put_NXAST_OUTPUT_TRUNC(out);
 7524|       |
 7525|    692|    natrc->max_len = htonl(output_trunc->max_len);
 7526|       |    natrc->port = htons(ofp_to_u16(output_trunc->port));
 7527|    692|}
ofp-actions.c:encode_CLONE:
 6074|  6.56k|{
 6075|  6.56k|    size_t len;
 6076|  6.56k|    const size_t ofs = out->size;
 6077|  6.56k|    struct ext_action_header *eah;
 6078|       |
 6079|  6.56k|    put_NXAST_CLONE(out);
 6080|  6.56k|    len = ofpacts_put_openflow_actions(clone->actions,
 6081|  6.56k|                                       ofpact_nest_get_action_len(clone),
 6082|  6.56k|                                       out, ofp_version);
 6083|  6.56k|    len += sizeof *eah;
 6084|  6.56k|    eah = ofpbuf_at(out, ofs, sizeof *eah);
 6085|       |    eah->len = htons(len);
 6086|  6.56k|}
ofp-actions.c:encode_CHECK_PKT_LARGER:
 7851|    345|{
 7852|    345|    struct nx_action_check_pkt_larger *ncpl = put_NXAST_CHECK_PKT_LARGER(out);
 7853|    345|    ncpl->pkt_len = htons(check_pkt_larger->pkt_len);
 7854|    345|    ncpl->offset = htons(check_pkt_larger->dst.ofs);
 7855|       |
 7856|    345|    if (check_pkt_larger->dst.field) {
  ------------------
  |  Branch (7856:9): [True: 345, False: 0]
  ------------------
 7857|    345|        size_t size = out->size;
 7858|    345|        out->size = size - sizeof ncpl->pad;
 7859|       |        nx_put_mff_header(out, check_pkt_larger->dst.field, 0, false);
 7860|    345|        out->size = size;
 7861|    345|    }
 7862|    345|}
ofp-actions.c:encode_DEBUG_RECIRC:
 6590|  1.17k|{
 6591|  1.17k|    put_NXAST_DEBUG_RECIRC(out);
 6592|  1.17k|}
ofp-actions.c:encode_DEBUG_SLOW:
 6630|  1.98k|{
 6631|  1.98k|    put_NXAST_DEBUG_SLOW(out);
 6632|  1.98k|}
ofp-actions.c:encode_METER:
 7575|    123|{
 7576|    123|    if (ofp_version == OFP13_VERSION || ofp_version == OFP14_VERSION) {
  ------------------
  |  Branch (7576:9): [True: 119, False: 4]
  |  Branch (7576:41): [True: 0, False: 4]
  ------------------
 7577|    119|        instruction_put_OFPIT13_METER(out)->meter_id = htonl(meter->meter_id);
 7578|    119|    } else if (ofp_version >= OFP15_VERSION) {
  ------------------
  |  Branch (7578:16): [True: 0, False: 4]
  ------------------
 7579|      0|        put_OFPAT15_METER(out, meter->meter_id);
 7580|      0|    }
 7581|    123|}
ofp-actions.c:instruction_put_OFPIT13_METER:
  405|    119|    {                                                           \
  406|    119|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|    119|        instruction_init_##ENUM(s);                             \
  408|    119|        return s;                                               \
  409|    119|    }
ofp-actions.c:encode_CLEAR_ACTIONS:
 7612|      8|{
 7613|      8|    if (ofp_version > OFP10_VERSION) {
  ------------------
  |  Branch (7613:9): [True: 5, False: 3]
  ------------------
 7614|      5|        instruction_put_OFPIT11_CLEAR_ACTIONS(out);
 7615|      5|    }
 7616|      8|}
ofp-actions.c:instruction_put_OFPIT11_CLEAR_ACTIONS:
  405|      5|    {                                                           \
  406|      5|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|      5|        instruction_init_##ENUM(s);                             \
  408|      5|        return s;                                               \
  409|      5|    }
ofp-actions.c:encode_WRITE_ACTIONS:
 7644|     57|{
 7645|     57|    if (ofp_version > OFP10_VERSION) {
  ------------------
  |  Branch (7645:9): [True: 47, False: 10]
  ------------------
 7646|     47|        const size_t ofs = out->size;
 7647|       |
 7648|     47|        instruction_put_OFPIT11_WRITE_ACTIONS(out);
 7649|     47|        ofpacts_put_openflow_actions(actions->actions,
 7650|     47|                                     ofpact_nest_get_action_len(actions),
 7651|     47|                                     out, ofp_version);
 7652|     47|        ofpacts_update_instruction_actions(out, ofs);
 7653|     47|    }
 7654|     57|}
ofp-actions.c:instruction_put_OFPIT11_WRITE_ACTIONS:
  405|     47|    {                                                           \
  406|     47|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|     47|        instruction_init_##ENUM(s);                             \
  408|     47|        return s;                                               \
  409|     47|    }
ofp-actions.c:encode_WRITE_METADATA:
 7740|      8|{
 7741|      8|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (7741:9): [True: 3, False: 5]
  ------------------
 7742|      3|        struct nx_action_write_metadata *nawm;
 7743|       |
 7744|      3|        nawm = put_NXAST_WRITE_METADATA(out);
 7745|      3|        nawm->metadata = metadata->metadata;
 7746|      3|        nawm->mask = metadata->mask;
 7747|      5|    } else {
 7748|      5|        struct ofp11_instruction_write_metadata *oiwm;
 7749|       |
 7750|      5|        oiwm = instruction_put_OFPIT11_WRITE_METADATA(out);
 7751|      5|        oiwm->metadata = metadata->metadata;
 7752|      5|        oiwm->metadata_mask = metadata->mask;
 7753|      5|    }
 7754|      8|}
ofp-actions.c:instruction_put_OFPIT11_WRITE_METADATA:
  405|      5|    {                                                           \
  406|      5|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|      5|        instruction_init_##ENUM(s);                             \
  408|      5|        return s;                                               \
  409|      5|    }
ofp-actions.c:encode_GOTO_TABLE:
 7921|      8|{
 7922|      8|    if (ofp_version == OFP10_VERSION) {
  ------------------
  |  Branch (7922:9): [True: 6, False: 2]
  ------------------
 7923|      6|        struct nx_action_resubmit *nar;
 7924|       |
 7925|      6|        nar = put_NXAST_RESUBMIT_TABLE(out);
 7926|      6|        nar->table = goto_table->table_id;
 7927|      6|        nar->in_port = htons(ofp_to_u16(OFPP_IN_PORT));
 7928|      6|    } else {
 7929|      2|        struct ofp11_instruction_goto_table *oigt;
 7930|       |
 7931|      2|        oigt = instruction_put_OFPIT11_GOTO_TABLE(out);
 7932|      2|        oigt->table_id = goto_table->table_id;
 7933|      2|        memset(oigt->pad, 0, sizeof oigt->pad);
 7934|      2|    }
 7935|      8|}
ofp-actions.c:instruction_put_OFPIT11_GOTO_TABLE:
  405|      2|    {                                                           \
  406|      2|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|      2|        instruction_init_##ENUM(s);                             \
  408|      2|        return s;                                               \
  409|      2|    }
ofp-actions.c:ofpact_is_apply_actions:
 9107|  37.6k|{
 9108|  37.6k|    return (ovs_instruction_type_from_ofpact_type(a->type, version)
 9109|  37.6k|            == OVSINST_OFPIT11_APPLY_ACTIONS);
 9110|  37.6k|}
ofp-actions.c:instruction_put_OFPIT11_APPLY_ACTIONS:
  405|    535|    {                                                           \
  406|    535|        struct STRUCT *s = ofpbuf_put_uninit(buf, sizeof *s);   \
  407|    535|        instruction_init_##ENUM(s);                             \
  408|    535|        return s;                                               \
  409|    535|    }
ofp-actions.c:ofpacts_update_instruction_actions:
 8766|    582|{
 8767|    582|    struct ofp11_instruction_actions *oia;
 8768|       |
 8769|    582|    oia = ofpbuf_at_assert(openflow, ofs, sizeof *oia);
 8770|    582|    if (openflow->size > ofs + sizeof *oia) {
  ------------------
  |  Branch (8770:9): [True: 577, False: 5]
  ------------------
 8771|    577|        oia->len = htons(openflow->size - ofs);
 8772|    577|    } else {
 8773|      5|        openflow->size = ofs;
 8774|      5|    }
 8775|    582|}
ofp-actions.c:ofpacts_parse_copy:
 9676|  25.0k|{
 9677|  25.0k|    char *error, *s;
 9678|       |
 9679|  25.0k|    *pp->usable_protocols = OFPUTIL_P_ANY;
  ------------------
  |  |  100|  25.0k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
 9680|       |
 9681|  25.0k|    s = xstrdup(s_);
 9682|  25.0k|    error = ofpacts_parse(s, pp, allow_instructions, outer_action);
 9683|  25.0k|    free(s);
 9684|       |
 9685|  25.0k|    return error;
 9686|  25.0k|}
ofp-actions.c:ofpacts_parse:
 9659|  25.9k|{
 9660|  25.9k|    if (pp->depth >= MAX_OFPACT_PARSE_DEPTH) {
  ------------------
  |  | 1221|  25.9k|#define MAX_OFPACT_PARSE_DEPTH 100
  ------------------
  |  Branch (9660:9): [True: 3, False: 25.9k]
  ------------------
 9661|      3|        return xstrdup("Action nested too deeply");
 9662|      3|    }
 9663|  25.9k|    CONST_CAST(struct ofpact_parse_params *, pp)->depth++;
  ------------------
  |  |   85|  25.9k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  25.9k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  25.9k|     (TYPE) (POINTER))
  ------------------
 9664|  25.9k|    uint32_t orig_size = pp->ofpacts->size;
 9665|  25.9k|    char *error = ofpacts_parse__(str, pp, allow_instructions, outer_action);
 9666|  25.9k|    if (error) {
  ------------------
  |  Branch (9666:9): [True: 9.68k, False: 16.2k]
  ------------------
 9667|  9.68k|        ofpbuf_truncate(pp->ofpacts, orig_size);
 9668|  9.68k|    }
 9669|  25.9k|    CONST_CAST(struct ofpact_parse_params *, pp)->depth--;
  ------------------
  |  |   85|  25.9k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  25.9k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  25.9k|     (TYPE) (POINTER))
  ------------------
 9670|  25.9k|    return error;
 9671|  25.9k|}
ofp-actions.c:ofpacts_parse__:
 9586|  25.9k|{
 9587|  25.9k|    uint32_t orig_size = pp->ofpacts->size;
 9588|  25.9k|    char *key, *value;
 9589|  25.9k|    bool drop = false;
 9590|  25.9k|    char *pos;
 9591|       |
 9592|  25.9k|    pos = str;
 9593|   350k|    while (ofputil_parse_key_value(&pos, &key, &value)) {
  ------------------
  |  Branch (9593:12): [True: 333k, False: 16.4k]
  ------------------
 9594|   333k|        enum ofpact_type type;
 9595|   333k|        char *error = NULL;
 9596|   333k|        ofp_port_t port;
 9597|   333k|        if (ofpact_type_from_name(key, &type)) {
  ------------------
  |  Branch (9597:13): [True: 193k, False: 140k]
  ------------------
 9598|   193k|            error = ofpact_parse(type, value, pp);
 9599|       |
 9600|   193k|            if (type == OFPACT_METER && !allow_instructions) {
  ------------------
  |  Branch (9600:17): [True: 581, False: 192k]
  |  Branch (9600:41): [True: 201, False: 380]
  ------------------
 9601|       |                /* Meter is an action in OF1.5 and it's being used in a
 9602|       |                 * context where instructions aren't allowed.  Therefore,
 9603|       |                 * this must be OF1.5+. */
 9604|    201|                *pp->usable_protocols &= OFPUTIL_P_OF15_UP;
  ------------------
  |  |   97|    201|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  ------------------
 9605|    201|            }
 9606|   193k|        } else if (!strcasecmp(key, "mod_vlan_vid")) {
  ------------------
  |  Branch (9606:20): [True: 1.08k, False: 139k]
  ------------------
 9607|  1.08k|            error = parse_set_vlan_vid(value, true, pp);
 9608|   139k|        } else if (!strcasecmp(key, "mod_vlan_pcp")) {
  ------------------
  |  Branch (9608:20): [True: 598, False: 138k]
  ------------------
 9609|    598|            error = parse_set_vlan_pcp(value, true, pp);
 9610|   138k|        } else if (!strcasecmp(key, "set_nw_ttl")) {
  ------------------
  |  Branch (9610:20): [True: 774, False: 137k]
  ------------------
 9611|    774|            error = parse_SET_IP_TTL(value, pp);
 9612|   137k|        } else if (!strcasecmp(key, "pop_vlan")) {
  ------------------
  |  Branch (9612:20): [True: 1.63k, False: 136k]
  ------------------
 9613|  1.63k|            error = parse_pop_vlan(pp);
 9614|   136k|        } else if (!strcasecmp(key, "set_tunnel64")) {
  ------------------
  |  Branch (9614:20): [True: 862, False: 135k]
  ------------------
 9615|    862|            error = parse_set_tunnel(value, NXAST_RAW_SET_TUNNEL64, pp);
 9616|   135k|        } else if (!strcasecmp(key, "load")) {
  ------------------
  |  Branch (9616:20): [True: 723, False: 134k]
  ------------------
 9617|    723|            error = parse_reg_load(value, pp);
 9618|   134k|        } else if (!strcasecmp(key, "bundle_load")) {
  ------------------
  |  Branch (9618:20): [True: 22, False: 134k]
  ------------------
 9619|     22|            error = parse_bundle_load(value, pp);
 9620|   134k|        } else if (!strcasecmp(key, "drop")) {
  ------------------
  |  Branch (9620:20): [True: 713, False: 133k]
  ------------------
 9621|    713|            drop = true;
 9622|   133k|        } else if (!strcasecmp(key, "apply_actions")) {
  ------------------
  |  Branch (9622:20): [True: 1, False: 133k]
  ------------------
 9623|      1|            return xstrdup("apply_actions is the default instruction");
 9624|   133k|        } else if (ofputil_port_from_string(key, pp->port_map, &port)) {
  ------------------
  |  Branch (9624:20): [True: 130k, False: 3.58k]
  ------------------
 9625|   130k|            ofpact_put_OUTPUT(pp->ofpacts)->port = port;
 9626|   130k|        } else {
 9627|  3.58k|            return xasprintf("unknown action %s", key);
 9628|  3.58k|        }
 9629|   330k|        if (error) {
  ------------------
  |  Branch (9629:13): [True: 5.90k, False: 324k]
  ------------------
 9630|  5.90k|            return error;
 9631|  5.90k|        }
 9632|   324k|        if (pp->ofpacts->size - orig_size > UINT16_MAX) {
  ------------------
  |  Branch (9632:13): [True: 10, False: 324k]
  ------------------
 9633|     10|            return xasprintf("input too big");
 9634|     10|        }
 9635|   324k|    }
 9636|       |
 9637|  16.4k|    if (drop && pp->ofpacts->size) {
  ------------------
  |  Branch (9637:9): [True: 494, False: 15.9k]
  |  Branch (9637:17): [True: 10, False: 484]
  ------------------
 9638|     10|        return xstrdup("\"drop\" must not be accompanied by any other action "
 9639|     10|                       "or instruction");
 9640|     10|    }
 9641|       |
 9642|  16.4k|    char *error = NULL;
 9643|  16.4k|    ofpacts_verify(pp->ofpacts->data, pp->ofpacts->size, OFP11_VERSION,
 9644|  16.4k|                   (allow_instructions
  ------------------
  |  Branch (9644:21): [True: 6.78k, False: 9.68k]
  ------------------
 9645|  16.4k|                    ? (1u << N_OVS_INSTRUCTIONS) - 1
 9646|  16.4k|                    : ((1u << OVSINST_OFPIT11_APPLY_ACTIONS)
 9647|  9.68k|                       | (1u << OVSINST_OFPIT13_METER))),
 9648|  16.4k|                   outer_action, &error);
 9649|  16.4k|    if (error) {
  ------------------
  |  Branch (9649:9): [True: 168, False: 16.2k]
  ------------------
 9650|    168|        return error;
 9651|    168|    }
 9652|       |
 9653|  16.2k|    return NULL;
 9654|  16.4k|}
ofp-actions.c:ofpact_type_from_name:
 9564|   333k|{
 9565|   333k|#define OFPACT(ENUM, STRUCT, MEMBER, NAME)                            \
 9566|   333k|    if (!strcasecmp(name, NAME)) {                                    \
 9567|   333k|        *type = OFPACT_##ENUM;                                          \
 9568|   333k|        return true;                                                    \
 9569|   333k|    }
 9570|   333k|    OFPACTS
  ------------------
  |  |   64|   333k|    OFPACT(OUTPUT,          ofpact_output,      ofpact, "output")       \
  |  |  ------------------
  |  |  |  | 9566|   333k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.76k, False: 331k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.76k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.76k|        return true;                                                    \
  |  |  |  | 9569|  1.76k|    }
  |  |  ------------------
  |  |   65|   333k|    OFPACT(GROUP,           ofpact_group,       ofpact, "group")        \
  |  |  ------------------
  |  |  |  | 9566|   331k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 355, False: 331k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    355|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    355|        return true;                                                    \
  |  |  |  | 9569|    355|    }
  |  |  ------------------
  |  |   66|   331k|    OFPACT(CONTROLLER,      ofpact_controller,  userdata, "controller") \
  |  |  ------------------
  |  |  |  | 9566|   331k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 10.4k, False: 321k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  10.4k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  10.4k|        return true;                                                    \
  |  |  |  | 9569|  10.4k|    }
  |  |  ------------------
  |  |   67|   331k|    OFPACT(ENQUEUE,         ofpact_enqueue,     ofpact, "enqueue")      \
  |  |  ------------------
  |  |  |  | 9566|   321k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.12k, False: 319k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.12k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.12k|        return true;                                                    \
  |  |  |  | 9569|  1.12k|    }
  |  |  ------------------
  |  |   68|   321k|    OFPACT(OUTPUT_REG,      ofpact_output_reg,  ofpact, "output_reg")   \
  |  |  ------------------
  |  |  |  | 9566|   319k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 418, False: 319k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    418|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    418|        return true;                                                    \
  |  |  |  | 9569|    418|    }
  |  |  ------------------
  |  |   69|   319k|    OFPACT(BUNDLE,          ofpact_bundle,      members, "bundle")      \
  |  |  ------------------
  |  |  |  | 9566|   319k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.73k, False: 316k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.73k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.73k|        return true;                                                    \
  |  |  |  | 9569|  2.73k|    }
  |  |  ------------------
  |  |   70|   319k|                                                                        \
  |  |   71|   319k|    /* Header changes. */                                               \
  |  |   72|   319k|    OFPACT(SET_FIELD,       ofpact_set_field,   ofpact, "set_field")    \
  |  |  ------------------
  |  |  |  | 9566|   316k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 47.1k, False: 269k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  47.1k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  47.1k|        return true;                                                    \
  |  |  |  | 9569|  47.1k|    }
  |  |  ------------------
  |  |   73|   316k|    OFPACT(SET_VLAN_VID,    ofpact_vlan_vid,    ofpact, "set_vlan_vid") \
  |  |  ------------------
  |  |  |  | 9566|   269k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 924, False: 268k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    924|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    924|        return true;                                                    \
  |  |  |  | 9569|    924|    }
  |  |  ------------------
  |  |   74|   269k|    OFPACT(SET_VLAN_PCP,    ofpact_vlan_pcp,    ofpact, "set_vlan_pcp") \
  |  |  ------------------
  |  |  |  | 9566|   268k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.05k, False: 267k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.05k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.05k|        return true;                                                    \
  |  |  |  | 9569|  1.05k|    }
  |  |  ------------------
  |  |   75|   268k|    OFPACT(STRIP_VLAN,      ofpact_null,        ofpact, "strip_vlan")   \
  |  |  ------------------
  |  |  |  | 9566|   267k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 788, False: 266k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    788|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    788|        return true;                                                    \
  |  |  |  | 9569|    788|    }
  |  |  ------------------
  |  |   76|   267k|    OFPACT(PUSH_VLAN,       ofpact_push_vlan,   ofpact, "push_vlan")    \
  |  |  ------------------
  |  |  |  | 9566|   266k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.42k, False: 265k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.42k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.42k|        return true;                                                    \
  |  |  |  | 9569|  1.42k|    }
  |  |  ------------------
  |  |   77|   266k|    OFPACT(SET_ETH_SRC,     ofpact_mac,         ofpact, "mod_dl_src")   \
  |  |  ------------------
  |  |  |  | 9566|   265k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 396, False: 264k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    396|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    396|        return true;                                                    \
  |  |  |  | 9569|    396|    }
  |  |  ------------------
  |  |   78|   265k|    OFPACT(SET_ETH_DST,     ofpact_mac,         ofpact, "mod_dl_dst")   \
  |  |  ------------------
  |  |  |  | 9566|   264k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 407, False: 264k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    407|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    407|        return true;                                                    \
  |  |  |  | 9569|    407|    }
  |  |  ------------------
  |  |   79|   264k|    OFPACT(SET_IPV4_SRC,    ofpact_ipv4,        ofpact, "mod_nw_src")   \
  |  |  ------------------
  |  |  |  | 9566|   264k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.00k, False: 263k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.00k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.00k|        return true;                                                    \
  |  |  |  | 9569|  1.00k|    }
  |  |  ------------------
  |  |   80|   264k|    OFPACT(SET_IPV4_DST,    ofpact_ipv4,        ofpact, "mod_nw_dst")   \
  |  |  ------------------
  |  |  |  | 9566|   263k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 767, False: 262k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    767|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    767|        return true;                                                    \
  |  |  |  | 9569|    767|    }
  |  |  ------------------
  |  |   81|   263k|    OFPACT(SET_IP_DSCP,     ofpact_dscp,        ofpact, "mod_nw_tos")   \
  |  |  ------------------
  |  |  |  | 9566|   262k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.43k, False: 261k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.43k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.43k|        return true;                                                    \
  |  |  |  | 9569|  1.43k|    }
  |  |  ------------------
  |  |   82|   262k|    OFPACT(SET_IP_ECN,      ofpact_ecn,         ofpact, "mod_nw_ecn")   \
  |  |  ------------------
  |  |  |  | 9566|   261k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.58k, False: 259k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.58k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.58k|        return true;                                                    \
  |  |  |  | 9569|  1.58k|    }
  |  |  ------------------
  |  |   83|   261k|    OFPACT(SET_IP_TTL,      ofpact_ip_ttl,      ofpact, "mod_nw_ttl")   \
  |  |  ------------------
  |  |  |  | 9566|   259k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 887, False: 258k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    887|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    887|        return true;                                                    \
  |  |  |  | 9569|    887|    }
  |  |  ------------------
  |  |   84|   259k|    OFPACT(SET_L4_SRC_PORT, ofpact_l4_port,     ofpact, "mod_tp_src")   \
  |  |  ------------------
  |  |  |  | 9566|   258k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.80k, False: 256k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.80k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.80k|        return true;                                                    \
  |  |  |  | 9569|  2.80k|    }
  |  |  ------------------
  |  |   85|   258k|    OFPACT(SET_L4_DST_PORT, ofpact_l4_port,     ofpact, "mod_tp_dst")   \
  |  |  ------------------
  |  |  |  | 9566|   256k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.75k, False: 254k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.75k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.75k|        return true;                                                    \
  |  |  |  | 9569|  1.75k|    }
  |  |  ------------------
  |  |   86|   256k|    OFPACT(REG_MOVE,        ofpact_reg_move,    ofpact, "move")         \
  |  |  ------------------
  |  |  |  | 9566|   254k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 544, False: 253k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    544|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    544|        return true;                                                    \
  |  |  |  | 9569|    544|    }
  |  |  ------------------
  |  |   87|   254k|    OFPACT(STACK_PUSH,      ofpact_stack,       ofpact, "push")         \
  |  |  ------------------
  |  |  |  | 9566|   253k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 401, False: 253k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    401|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    401|        return true;                                                    \
  |  |  |  | 9569|    401|    }
  |  |  ------------------
  |  |   88|   253k|    OFPACT(STACK_POP,       ofpact_stack,       ofpact, "pop")          \
  |  |  ------------------
  |  |  |  | 9566|   253k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.90k, False: 251k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.90k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.90k|        return true;                                                    \
  |  |  |  | 9569|  1.90k|    }
  |  |  ------------------
  |  |   89|   253k|    OFPACT(DEC_TTL,         ofpact_cnt_ids,     cnt_ids, "dec_ttl")     \
  |  |  ------------------
  |  |  |  | 9566|   251k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 3.67k, False: 247k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  3.67k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  3.67k|        return true;                                                    \
  |  |  |  | 9569|  3.67k|    }
  |  |  ------------------
  |  |   90|   251k|    OFPACT(SET_MPLS_LABEL,  ofpact_mpls_label,  ofpact, "set_mpls_label") \
  |  |  ------------------
  |  |  |  | 9566|   247k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.46k, False: 246k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.46k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.46k|        return true;                                                    \
  |  |  |  | 9569|  1.46k|    }
  |  |  ------------------
  |  |   91|   247k|    OFPACT(SET_MPLS_TC,     ofpact_mpls_tc,     ofpact, "set_mpls_tc")  \
  |  |  ------------------
  |  |  |  | 9566|   246k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.60k, False: 243k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.60k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.60k|        return true;                                                    \
  |  |  |  | 9569|  2.60k|    }
  |  |  ------------------
  |  |   92|   246k|    OFPACT(SET_MPLS_TTL,    ofpact_mpls_ttl,    ofpact, "set_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9566|   243k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.09k, False: 241k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.09k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.09k|        return true;                                                    \
  |  |  |  | 9569|  2.09k|    }
  |  |  ------------------
  |  |   93|   243k|    OFPACT(DEC_MPLS_TTL,    ofpact_null,        ofpact, "dec_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9566|   241k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.77k, False: 238k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.77k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.77k|        return true;                                                    \
  |  |  |  | 9569|  2.77k|    }
  |  |  ------------------
  |  |   94|   241k|    OFPACT(PUSH_MPLS,       ofpact_push_mpls,   ofpact, "push_mpls")    \
  |  |  ------------------
  |  |  |  | 9566|   238k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 747, False: 238k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    747|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    747|        return true;                                                    \
  |  |  |  | 9569|    747|    }
  |  |  ------------------
  |  |   95|   238k|    OFPACT(POP_MPLS,        ofpact_pop_mpls,    ofpact, "pop_mpls")     \
  |  |  ------------------
  |  |  |  | 9566|   238k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.19k, False: 235k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.19k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.19k|        return true;                                                    \
  |  |  |  | 9569|  2.19k|    }
  |  |  ------------------
  |  |   96|   238k|    OFPACT(DEC_NSH_TTL,     ofpact_null,        ofpact, "dec_nsh_ttl")  \
  |  |  ------------------
  |  |  |  | 9566|   235k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.28k, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.28k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.28k|        return true;                                                    \
  |  |  |  | 9569|  1.28k|    }
  |  |  ------------------
  |  |   97|   235k|    OFPACT(DELETE_FIELD,    ofpact_delete_field, ofpact, "delete_field") \
  |  |  ------------------
  |  |  |  | 9566|   234k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 389, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    389|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    389|        return true;                                                    \
  |  |  |  | 9569|    389|    }
  |  |  ------------------
  |  |   98|   234k|                                                                        \
  |  |   99|   234k|    /* Generic encap & decap */                                         \
  |  |  100|   234k|    OFPACT(ENCAP,           ofpact_encap,       props, "encap")         \
  |  |  ------------------
  |  |  |  | 9566|   234k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.94k, False: 232k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.94k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.94k|        return true;                                                    \
  |  |  |  | 9569|  1.94k|    }
  |  |  ------------------
  |  |  101|   234k|    OFPACT(DECAP,           ofpact_decap,       ofpact, "decap")        \
  |  |  ------------------
  |  |  |  | 9566|   232k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 3.47k, False: 228k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  3.47k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  3.47k|        return true;                                                    \
  |  |  |  | 9569|  3.47k|    }
  |  |  ------------------
  |  |  102|   232k|                                                                        \
  |  |  103|   232k|    /* Metadata. */                                                     \
  |  |  104|   232k|    OFPACT(SET_TUNNEL,      ofpact_tunnel,      ofpact, "set_tunnel")   \
  |  |  ------------------
  |  |  |  | 9566|   228k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 684, False: 228k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    684|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    684|        return true;                                                    \
  |  |  |  | 9569|    684|    }
  |  |  ------------------
  |  |  105|   228k|    OFPACT(SET_QUEUE,       ofpact_queue,       ofpact, "set_queue")    \
  |  |  ------------------
  |  |  |  | 9566|   228k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 581, False: 227k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    581|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    581|        return true;                                                    \
  |  |  |  | 9569|    581|    }
  |  |  ------------------
  |  |  106|   228k|    OFPACT(POP_QUEUE,       ofpact_null,        ofpact, "pop_queue")    \
  |  |  ------------------
  |  |  |  | 9566|   227k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 906, False: 226k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    906|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    906|        return true;                                                    \
  |  |  |  | 9569|    906|    }
  |  |  ------------------
  |  |  107|   227k|    OFPACT(FIN_TIMEOUT,     ofpact_fin_timeout, ofpact, "fin_timeout")  \
  |  |  ------------------
  |  |  |  | 9566|   226k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.33k, False: 225k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.33k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.33k|        return true;                                                    \
  |  |  |  | 9569|  1.33k|    }
  |  |  ------------------
  |  |  108|   226k|                                                                        \
  |  |  109|   226k|    /* Flow table interaction. */                                       \
  |  |  110|   226k|    OFPACT(RESUBMIT,        ofpact_resubmit,    ofpact, "resubmit")     \
  |  |  ------------------
  |  |  |  | 9566|   225k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.41k, False: 222k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.41k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.41k|        return true;                                                    \
  |  |  |  | 9569|  2.41k|    }
  |  |  ------------------
  |  |  111|   225k|    OFPACT(LEARN,           ofpact_learn,       specs, "learn")         \
  |  |  ------------------
  |  |  |  | 9566|   222k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 36.3k, False: 186k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  36.3k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  36.3k|        return true;                                                    \
  |  |  |  | 9569|  36.3k|    }
  |  |  ------------------
  |  |  112|   222k|    OFPACT(CONJUNCTION,     ofpact_conjunction, ofpact, "conjunction")  \
  |  |  ------------------
  |  |  |  | 9566|   186k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 562, False: 186k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    562|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    562|        return true;                                                    \
  |  |  |  | 9569|    562|    }
  |  |  ------------------
  |  |  113|   186k|                                                                        \
  |  |  114|   186k|    /* Arithmetic. */                                                   \
  |  |  115|   186k|    OFPACT(MULTIPATH,       ofpact_multipath,   ofpact, "multipath")    \
  |  |  ------------------
  |  |  |  | 9566|   186k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 3.12k, False: 182k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  3.12k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  3.12k|        return true;                                                    \
  |  |  |  | 9569|  3.12k|    }
  |  |  ------------------
  |  |  116|   186k|                                                                        \
  |  |  117|   186k|    /* Other. */                                                        \
  |  |  118|   186k|    OFPACT(NOTE,            ofpact_note,        data, "note")           \
  |  |  ------------------
  |  |  |  | 9566|   182k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.46k, False: 180k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.46k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.46k|        return true;                                                    \
  |  |  |  | 9569|  2.46k|    }
  |  |  ------------------
  |  |  119|   182k|    OFPACT(EXIT,            ofpact_null,        ofpact, "exit")         \
  |  |  ------------------
  |  |  |  | 9566|   180k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.29k, False: 178k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.29k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.29k|        return true;                                                    \
  |  |  |  | 9569|  2.29k|    }
  |  |  ------------------
  |  |  120|   180k|    OFPACT(SAMPLE,          ofpact_sample,      ofpact, "sample")       \
  |  |  ------------------
  |  |  |  | 9566|   178k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.85k, False: 176k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.85k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.85k|        return true;                                                    \
  |  |  |  | 9569|  1.85k|    }
  |  |  ------------------
  |  |  121|   178k|    OFPACT(UNROLL_XLATE,    ofpact_unroll_xlate, ofpact, "unroll_xlate") \
  |  |  ------------------
  |  |  |  | 9566|   176k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1, False: 176k]
  |  |  |  |  ------------------
  |  |  |  | 9567|      1|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|      1|        return true;                                                    \
  |  |  |  | 9569|      1|    }
  |  |  ------------------
  |  |  122|   176k|    OFPACT(CT,              ofpact_conntrack,   ofpact, "ct")           \
  |  |  ------------------
  |  |  |  | 9566|   176k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 9.54k, False: 166k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  9.54k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  9.54k|        return true;                                                    \
  |  |  |  | 9569|  9.54k|    }
  |  |  ------------------
  |  |  123|   176k|    OFPACT(CT_CLEAR,        ofpact_null,        ofpact, "ct_clear")     \
  |  |  ------------------
  |  |  |  | 9566|   166k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.81k, False: 164k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.81k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.81k|        return true;                                                    \
  |  |  |  | 9569|  1.81k|    }
  |  |  ------------------
  |  |  124|   166k|    OFPACT(NAT,             ofpact_nat,         ofpact, "nat")          \
  |  |  ------------------
  |  |  |  | 9566|   164k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 8.71k, False: 156k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  8.71k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  8.71k|        return true;                                                    \
  |  |  |  | 9569|  8.71k|    }
  |  |  ------------------
  |  |  125|   164k|    OFPACT(OUTPUT_TRUNC,    ofpact_output_trunc,ofpact, "output_trunc") \
  |  |  ------------------
  |  |  |  | 9566|   156k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1, False: 156k]
  |  |  |  |  ------------------
  |  |  |  | 9567|      1|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|      1|        return true;                                                    \
  |  |  |  | 9569|      1|    }
  |  |  ------------------
  |  |  126|   156k|    OFPACT(CLONE,           ofpact_nest,        actions, "clone")       \
  |  |  ------------------
  |  |  |  | 9566|   156k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 9.50k, False: 146k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  9.50k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  9.50k|        return true;                                                    \
  |  |  |  | 9569|  9.50k|    }
  |  |  ------------------
  |  |  127|   156k|    OFPACT(CHECK_PKT_LARGER, ofpact_check_pkt_larger, ofpact,           \
  |  |  ------------------
  |  |  |  | 9566|   146k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 494, False: 146k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    494|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    494|        return true;                                                    \
  |  |  |  | 9569|    494|    }
  |  |  ------------------
  |  |  128|   146k|           "check_pkt_larger")                                          \
  |  |  129|   146k|                                                                        \
  |  |  130|   146k|    /* Debugging actions.                                               \
  |  |  131|   146k|     *                                                                  \
  |  |  132|   146k|     * These are intentionally undocumented, subject to change, and     \
  |  |  133|   146k|     * only accepted if ovs-vswitchd is started with --enable-dummy. */ \
  |  |  134|   146k|    OFPACT(DEBUG_RECIRC, ofpact_null,           ofpact, "debug_recirc") \
  |  |  ------------------
  |  |  |  | 9566|   146k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 1.48k, False: 144k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  1.48k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  1.48k|        return true;                                                    \
  |  |  |  | 9569|  1.48k|    }
  |  |  ------------------
  |  |  135|   146k|    OFPACT(DEBUG_SLOW,   ofpact_null,           ofpact, "debug_slow")   \
  |  |  ------------------
  |  |  |  | 9566|   144k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 2.00k, False: 142k]
  |  |  |  |  ------------------
  |  |  |  | 9567|  2.00k|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|  2.00k|        return true;                                                    \
  |  |  |  | 9569|  2.00k|    }
  |  |  ------------------
  |  |  136|   144k|                                                                        \
  |  |  137|   144k|    /* Instructions ("meter" is an action in OF1.5+). */                \
  |  |  138|   144k|    OFPACT(METER,           ofpact_meter,       ofpact, "meter")        \
  |  |  ------------------
  |  |  |  | 9566|   142k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 581, False: 142k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    581|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    581|        return true;                                                    \
  |  |  |  | 9569|    581|    }
  |  |  ------------------
  |  |  139|   142k|    OFPACT(CLEAR_ACTIONS,   ofpact_null,        ofpact, "clear_actions") \
  |  |  ------------------
  |  |  |  | 9566|   142k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 204, False: 141k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    204|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    204|        return true;                                                    \
  |  |  |  | 9569|    204|    }
  |  |  ------------------
  |  |  140|   142k|    OFPACT(WRITE_ACTIONS,   ofpact_nest,        actions, "write_actions") \
  |  |  ------------------
  |  |  |  | 9566|   141k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 911, False: 141k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    911|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    911|        return true;                                                    \
  |  |  |  | 9569|    911|    }
  |  |  ------------------
  |  |  141|   141k|    OFPACT(WRITE_METADATA,  ofpact_metadata,    ofpact, "write_metadata") \
  |  |  ------------------
  |  |  |  | 9566|   141k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 585, False: 140k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    585|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    585|        return true;                                                    \
  |  |  |  | 9569|    585|    }
  |  |  ------------------
  |  |  142|   141k|    OFPACT(GOTO_TABLE,      ofpact_goto_table,  ofpact, "goto_table")
  |  |  ------------------
  |  |  |  | 9566|   140k|    if (!strcasecmp(name, NAME)) {                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9566:9): [True: 213, False: 140k]
  |  |  |  |  ------------------
  |  |  |  | 9567|    213|        *type = OFPACT_##ENUM;                                          \
  |  |  |  | 9568|    213|        return true;                                                    \
  |  |  |  | 9569|    213|    }
  |  |  ------------------
  ------------------
 9571|   140k|#undef OFPACT
 9572|       |
 9573|   140k|    return false;
 9574|  13.1M|}
ofp-actions.c:ofpact_parse:
 9550|   193k|{
 9551|   193k|    switch (type) {
 9552|      0|#define OFPACT(ENUM, STRUCT, MEMBER, NAME)                              \
 9553|      0|        case OFPACT_##ENUM:                                             \
 9554|      0|            return parse_##ENUM(value, pp);
 9555|      0|        OFPACTS
  ------------------
  |  |   64|  1.76k|    OFPACT(OUTPUT,          ofpact_output,      ofpact, "output")       \
  |  |  ------------------
  |  |  |  | 9553|  1.76k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.76k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.76k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   65|  1.76k|    OFPACT(GROUP,           ofpact_group,       ofpact, "group")        \
  |  |  ------------------
  |  |  |  | 9553|    355|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 355, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    355|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   66|  10.4k|    OFPACT(CONTROLLER,      ofpact_controller,  userdata, "controller") \
  |  |  ------------------
  |  |  |  | 9553|  10.4k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 10.4k, False: 182k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  10.4k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   67|  10.4k|    OFPACT(ENQUEUE,         ofpact_enqueue,     ofpact, "enqueue")      \
  |  |  ------------------
  |  |  |  | 9553|  1.12k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.12k, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.12k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   68|  1.12k|    OFPACT(OUTPUT_REG,      ofpact_output_reg,  ofpact, "output_reg")   \
  |  |  ------------------
  |  |  |  | 9553|    418|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 418, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    418|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   69|  2.73k|    OFPACT(BUNDLE,          ofpact_bundle,      members, "bundle")      \
  |  |  ------------------
  |  |  |  | 9553|  2.73k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.73k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.73k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   70|  2.73k|                                                                        \
  |  |   71|  2.73k|    /* Header changes. */                                               \
  |  |   72|  47.1k|    OFPACT(SET_FIELD,       ofpact_set_field,   ofpact, "set_field")    \
  |  |  ------------------
  |  |  |  | 9553|  47.1k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 47.1k, False: 146k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  47.1k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   73|  47.1k|    OFPACT(SET_VLAN_VID,    ofpact_vlan_vid,    ofpact, "set_vlan_vid") \
  |  |  ------------------
  |  |  |  | 9553|    924|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 924, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    924|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   74|  1.05k|    OFPACT(SET_VLAN_PCP,    ofpact_vlan_pcp,    ofpact, "set_vlan_pcp") \
  |  |  ------------------
  |  |  |  | 9553|  1.05k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.05k, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.05k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   75|  1.05k|    OFPACT(STRIP_VLAN,      ofpact_null,        ofpact, "strip_vlan")   \
  |  |  ------------------
  |  |  |  | 9553|    788|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 788, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    788|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   76|  1.42k|    OFPACT(PUSH_VLAN,       ofpact_push_vlan,   ofpact, "push_vlan")    \
  |  |  ------------------
  |  |  |  | 9553|  1.42k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.42k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.42k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   77|  1.42k|    OFPACT(SET_ETH_SRC,     ofpact_mac,         ofpact, "mod_dl_src")   \
  |  |  ------------------
  |  |  |  | 9553|    396|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 396, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    396|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   78|    407|    OFPACT(SET_ETH_DST,     ofpact_mac,         ofpact, "mod_dl_dst")   \
  |  |  ------------------
  |  |  |  | 9553|    407|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 407, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    407|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   79|  1.00k|    OFPACT(SET_IPV4_SRC,    ofpact_ipv4,        ofpact, "mod_nw_src")   \
  |  |  ------------------
  |  |  |  | 9553|  1.00k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.00k, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.00k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   80|  1.00k|    OFPACT(SET_IPV4_DST,    ofpact_ipv4,        ofpact, "mod_nw_dst")   \
  |  |  ------------------
  |  |  |  | 9553|    767|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 767, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    767|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   81|  1.43k|    OFPACT(SET_IP_DSCP,     ofpact_dscp,        ofpact, "mod_nw_tos")   \
  |  |  ------------------
  |  |  |  | 9553|  1.43k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.43k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.43k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   82|  1.58k|    OFPACT(SET_IP_ECN,      ofpact_ecn,         ofpact, "mod_nw_ecn")   \
  |  |  ------------------
  |  |  |  | 9553|  1.58k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.58k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.58k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   83|  1.58k|    OFPACT(SET_IP_TTL,      ofpact_ip_ttl,      ofpact, "mod_nw_ttl")   \
  |  |  ------------------
  |  |  |  | 9553|    887|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 887, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    887|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   84|  2.80k|    OFPACT(SET_L4_SRC_PORT, ofpact_l4_port,     ofpact, "mod_tp_src")   \
  |  |  ------------------
  |  |  |  | 9553|  2.80k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.80k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.80k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   85|  2.80k|    OFPACT(SET_L4_DST_PORT, ofpact_l4_port,     ofpact, "mod_tp_dst")   \
  |  |  ------------------
  |  |  |  | 9553|  1.75k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.75k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.75k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   86|  1.75k|    OFPACT(REG_MOVE,        ofpact_reg_move,    ofpact, "move")         \
  |  |  ------------------
  |  |  |  | 9553|    544|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 544, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    544|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   87|    544|    OFPACT(STACK_PUSH,      ofpact_stack,       ofpact, "push")         \
  |  |  ------------------
  |  |  |  | 9553|    401|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 401, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    401|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   88|  1.90k|    OFPACT(STACK_POP,       ofpact_stack,       ofpact, "pop")          \
  |  |  ------------------
  |  |  |  | 9553|  1.90k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.90k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.90k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   89|  3.67k|    OFPACT(DEC_TTL,         ofpact_cnt_ids,     cnt_ids, "dec_ttl")     \
  |  |  ------------------
  |  |  |  | 9553|  3.67k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 3.67k, False: 189k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  3.67k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   90|  3.67k|    OFPACT(SET_MPLS_LABEL,  ofpact_mpls_label,  ofpact, "set_mpls_label") \
  |  |  ------------------
  |  |  |  | 9553|  1.46k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.46k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.46k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   91|  2.60k|    OFPACT(SET_MPLS_TC,     ofpact_mpls_tc,     ofpact, "set_mpls_tc")  \
  |  |  ------------------
  |  |  |  | 9553|  2.60k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.60k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.60k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   92|  2.60k|    OFPACT(SET_MPLS_TTL,    ofpact_mpls_ttl,    ofpact, "set_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9553|  2.09k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.09k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.09k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   93|  2.77k|    OFPACT(DEC_MPLS_TTL,    ofpact_null,        ofpact, "dec_mpls_ttl") \
  |  |  ------------------
  |  |  |  | 9553|  2.77k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.77k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.77k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   94|  2.77k|    OFPACT(PUSH_MPLS,       ofpact_push_mpls,   ofpact, "push_mpls")    \
  |  |  ------------------
  |  |  |  | 9553|    747|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 747, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    747|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   95|  2.19k|    OFPACT(POP_MPLS,        ofpact_pop_mpls,    ofpact, "pop_mpls")     \
  |  |  ------------------
  |  |  |  | 9553|  2.19k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.19k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.19k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   96|  2.19k|    OFPACT(DEC_NSH_TTL,     ofpact_null,        ofpact, "dec_nsh_ttl")  \
  |  |  ------------------
  |  |  |  | 9553|  1.28k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.28k, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.28k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   97|  1.28k|    OFPACT(DELETE_FIELD,    ofpact_delete_field, ofpact, "delete_field") \
  |  |  ------------------
  |  |  |  | 9553|    389|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 389, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    389|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |   98|    389|                                                                        \
  |  |   99|    389|    /* Generic encap & decap */                                         \
  |  |  100|  1.94k|    OFPACT(ENCAP,           ofpact_encap,       props, "encap")         \
  |  |  ------------------
  |  |  |  | 9553|  1.94k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.94k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.94k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  101|  3.47k|    OFPACT(DECAP,           ofpact_decap,       ofpact, "decap")        \
  |  |  ------------------
  |  |  |  | 9553|  3.47k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 3.47k, False: 189k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  3.47k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  102|  3.47k|                                                                        \
  |  |  103|  3.47k|    /* Metadata. */                                                     \
  |  |  104|  3.47k|    OFPACT(SET_TUNNEL,      ofpact_tunnel,      ofpact, "set_tunnel")   \
  |  |  ------------------
  |  |  |  | 9553|    684|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 684, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    684|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  105|    684|    OFPACT(SET_QUEUE,       ofpact_queue,       ofpact, "set_queue")    \
  |  |  ------------------
  |  |  |  | 9553|    581|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 581, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    581|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  106|    906|    OFPACT(POP_QUEUE,       ofpact_null,        ofpact, "pop_queue")    \
  |  |  ------------------
  |  |  |  | 9553|    906|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 906, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    906|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  107|  1.33k|    OFPACT(FIN_TIMEOUT,     ofpact_fin_timeout, ofpact, "fin_timeout")  \
  |  |  ------------------
  |  |  |  | 9553|  1.33k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.33k, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.33k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  108|  1.33k|                                                                        \
  |  |  109|  1.33k|    /* Flow table interaction. */                                       \
  |  |  110|  2.41k|    OFPACT(RESUBMIT,        ofpact_resubmit,    ofpact, "resubmit")     \
  |  |  ------------------
  |  |  |  | 9553|  2.41k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.41k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.41k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  111|  36.3k|    OFPACT(LEARN,           ofpact_learn,       specs, "learn")         \
  |  |  ------------------
  |  |  |  | 9553|  36.3k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 36.3k, False: 157k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  36.3k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  112|  36.3k|    OFPACT(CONJUNCTION,     ofpact_conjunction, ofpact, "conjunction")  \
  |  |  ------------------
  |  |  |  | 9553|    562|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 562, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    562|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  113|    562|                                                                        \
  |  |  114|    562|    /* Arithmetic. */                                                   \
  |  |  115|  3.12k|    OFPACT(MULTIPATH,       ofpact_multipath,   ofpact, "multipath")    \
  |  |  ------------------
  |  |  |  | 9553|  3.12k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 3.12k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  3.12k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  116|  3.12k|                                                                        \
  |  |  117|  3.12k|    /* Other. */                                                        \
  |  |  118|  3.12k|    OFPACT(NOTE,            ofpact_note,        data, "note")           \
  |  |  ------------------
  |  |  |  | 9553|  2.46k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.46k, False: 190k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.46k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  119|  2.46k|    OFPACT(EXIT,            ofpact_null,        ofpact, "exit")         \
  |  |  ------------------
  |  |  |  | 9553|  2.29k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.29k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.29k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  120|  2.29k|    OFPACT(SAMPLE,          ofpact_sample,      ofpact, "sample")       \
  |  |  ------------------
  |  |  |  | 9553|  1.85k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.85k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.85k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  121|  1.85k|    OFPACT(UNROLL_XLATE,    ofpact_unroll_xlate, ofpact, "unroll_xlate") \
  |  |  ------------------
  |  |  |  | 9553|      1|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1, False: 193k]
  |  |  |  |  ------------------
  |  |  |  | 9554|      1|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  122|  9.54k|    OFPACT(CT,              ofpact_conntrack,   ofpact, "ct")           \
  |  |  ------------------
  |  |  |  | 9553|  9.54k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 9.54k, False: 183k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  9.54k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  123|  9.54k|    OFPACT(CT_CLEAR,        ofpact_null,        ofpact, "ct_clear")     \
  |  |  ------------------
  |  |  |  | 9553|  1.81k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.81k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.81k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  124|  8.71k|    OFPACT(NAT,             ofpact_nat,         ofpact, "nat")          \
  |  |  ------------------
  |  |  |  | 9553|  8.71k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 8.71k, False: 184k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  8.71k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  125|  8.71k|    OFPACT(OUTPUT_TRUNC,    ofpact_output_trunc,ofpact, "output_trunc") \
  |  |  ------------------
  |  |  |  | 9553|      1|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1, False: 193k]
  |  |  |  |  ------------------
  |  |  |  | 9554|      1|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  126|  9.50k|    OFPACT(CLONE,           ofpact_nest,        actions, "clone")       \
  |  |  ------------------
  |  |  |  | 9553|  9.50k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 9.50k, False: 183k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  9.50k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  127|  9.50k|    OFPACT(CHECK_PKT_LARGER, ofpact_check_pkt_larger, ofpact,           \
  |  |  ------------------
  |  |  |  | 9553|    494|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 494, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    494|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  128|    494|           "check_pkt_larger")                                          \
  |  |  129|    494|                                                                        \
  |  |  130|    494|    /* Debugging actions.                                               \
  |  |  131|    494|     *                                                                  \
  |  |  132|    494|     * These are intentionally undocumented, subject to change, and     \
  |  |  133|    494|     * only accepted if ovs-vswitchd is started with --enable-dummy. */ \
  |  |  134|  1.48k|    OFPACT(DEBUG_RECIRC, ofpact_null,           ofpact, "debug_recirc") \
  |  |  ------------------
  |  |  |  | 9553|  1.48k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 1.48k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  1.48k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  135|  2.00k|    OFPACT(DEBUG_SLOW,   ofpact_null,           ofpact, "debug_slow")   \
  |  |  ------------------
  |  |  |  | 9553|  2.00k|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 2.00k, False: 191k]
  |  |  |  |  ------------------
  |  |  |  | 9554|  2.00k|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  136|  2.00k|                                                                        \
  |  |  137|  2.00k|    /* Instructions ("meter" is an action in OF1.5+). */                \
  |  |  138|  2.00k|    OFPACT(METER,           ofpact_meter,       ofpact, "meter")        \
  |  |  ------------------
  |  |  |  | 9553|    581|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 581, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    581|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  139|    581|    OFPACT(CLEAR_ACTIONS,   ofpact_null,        ofpact, "clear_actions") \
  |  |  ------------------
  |  |  |  | 9553|    204|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 204, False: 193k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    204|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  140|    911|    OFPACT(WRITE_ACTIONS,   ofpact_nest,        actions, "write_actions") \
  |  |  ------------------
  |  |  |  | 9553|    911|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 911, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    911|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  141|    911|    OFPACT(WRITE_METADATA,  ofpact_metadata,    ofpact, "write_metadata") \
  |  |  ------------------
  |  |  |  | 9553|    585|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 585, False: 192k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    585|            return parse_##ENUM(value, pp);
  |  |  ------------------
  |  |  142|    585|    OFPACT(GOTO_TABLE,      ofpact_goto_table,  ofpact, "goto_table")
  |  |  ------------------
  |  |  |  | 9553|    213|        case OFPACT_##ENUM:                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (9553:9): [True: 213, False: 193k]
  |  |  |  |  ------------------
  |  |  |  | 9554|    213|            return parse_##ENUM(value, pp);
  |  |  ------------------
  ------------------
 9556|      0|#undef OFPACT
 9557|      0|    default:
  ------------------
  |  Branch (9557:5): [True: 0, False: 193k]
  ------------------
 9558|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 9559|   193k|    }
 9560|   193k|}
ofp-actions.c:parse_OUTPUT:
  670|  2.18k|{
  671|  2.18k|    if (strstr(arg, "port") && strstr(arg, "max_len")) {
  ------------------
  |  Branch (671:9): [True: 900, False: 1.28k]
  |  Branch (671:32): [True: 834, False: 66]
  ------------------
  672|    834|        struct ofpact_output_trunc *output_trunc;
  673|       |
  674|    834|        output_trunc = ofpact_put_OUTPUT_TRUNC(pp->ofpacts);
  675|    834|        return parse_truncate_subfield(arg, pp, output_trunc);
  676|    834|    }
  677|       |
  678|  1.35k|    ofp_port_t port;
  679|  1.35k|    if (ofputil_port_from_string(arg, pp->port_map, &port)) {
  ------------------
  |  Branch (679:9): [True: 507, False: 844]
  ------------------
  680|    507|        struct ofpact_output *output = ofpact_put_OUTPUT(pp->ofpacts);
  681|    507|        output->port = port;
  682|    507|        output->max_len = output->port == OFPP_CONTROLLER ? UINT16_MAX : 0;
  ------------------
  |  |   45|    507|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  ------------------
  |  |  |  |  157|    507|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (682:27): [True: 0, False: 507]
  ------------------
  683|    507|        return NULL;
  684|    507|    }
  685|       |
  686|    844|    struct mf_subfield src;
  687|    844|    char *error = mf_parse_subfield(&src, arg);
  688|    844|    if (!error) {
  ------------------
  |  Branch (688:9): [True: 829, False: 15]
  ------------------
  689|    829|        struct ofpact_output_reg *output_reg;
  690|       |
  691|    829|        output_reg = ofpact_put_OUTPUT_REG(pp->ofpacts);
  692|    829|        output_reg->max_len = UINT16_MAX;
  693|    829|        output_reg->src = src;
  694|    829|        return NULL;
  695|    829|    }
  696|     15|    free(error);
  697|       |
  698|     15|    return xasprintf("%s: output to unknown port", arg);
  699|    844|}
ofp-actions.c:parse_truncate_subfield:
  630|    834|{
  631|    834|    char *key, *value;
  632|    834|    char *arg = CONST_CAST(char *, arg_);
  ------------------
  |  |   85|    834|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|    834|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|    834|     (TYPE) (POINTER))
  ------------------
  633|       |
  634|  3.45k|    while (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (634:12): [True: 2.67k, False: 777]
  ------------------
  635|  2.67k|        if (!strcmp(key, "port")) {
  ------------------
  |  Branch (635:13): [True: 1.58k, False: 1.09k]
  ------------------
  636|  1.58k|            if (!ofputil_port_from_string(value, pp->port_map,
  ------------------
  |  Branch (636:17): [True: 4, False: 1.57k]
  ------------------
  637|  1.58k|                                          &output_trunc->port)) {
  638|      4|                return xasprintf("output to unknown truncate port: %s",
  639|      4|                                  value);
  640|      4|            }
  641|  1.57k|            if (ofp_to_u16(output_trunc->port) > ofp_to_u16(OFPP_MAX)) {
  ------------------
  |  |   33|  1.57k|#define OFPP_MAX        OFP_PORT_C(0xff00) /* Max # of switch ports. */
  |  |  ------------------
  |  |  |  |  157|  1.57k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (641:17): [True: 652, False: 926]
  ------------------
  642|    652|                if (output_trunc->port != OFPP_LOCAL &&
  ------------------
  |  |   46|    652|#define OFPP_LOCAL      OFP_PORT_C(0xfffe) /* Local openflow "port". */
  |  |  ------------------
  |  |  |  |  157|  1.30k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (642:21): [True: 585, False: 67]
  ------------------
  643|    585|                    output_trunc->port != OFPP_IN_PORT)
  ------------------
  |  |   39|    585|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  ------------------
  |  |  |  |  157|    585|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (643:21): [True: 8, False: 577]
  ------------------
  644|      8|                return xasprintf("output to unsupported truncate port: %s",
  645|      8|                                 value);
  646|    652|            }
  647|  1.57k|        } else if (!strcmp(key, "max_len")) {
  ------------------
  |  Branch (647:20): [True: 1.06k, False: 26]
  ------------------
  648|  1.06k|            char *err;
  649|       |
  650|  1.06k|            err = str_to_u32(value, &output_trunc->max_len);
  651|  1.06k|            if (err) {
  ------------------
  |  Branch (651:17): [True: 17, False: 1.05k]
  ------------------
  652|     17|                return err;
  653|     17|            }
  654|       |
  655|  1.05k|            if (output_trunc->max_len < ETH_HEADER_LEN) {
  ------------------
  |  |  439|  1.05k|#define ETH_HEADER_LEN 14
  ------------------
  |  Branch (655:17): [True: 2, False: 1.05k]
  ------------------
  656|      2|                return xasprintf("max_len %"PRIu32" is less than the minimum "
  657|      2|                                 "value %d",
  658|      2|                                 output_trunc->max_len, ETH_HEADER_LEN);
  ------------------
  |  |  439|      2|#define ETH_HEADER_LEN 14
  ------------------
  659|      2|            }
  660|  1.05k|        } else {
  661|     26|            return xasprintf("invalid key '%s' in output_trunc argument",
  662|     26|                                key);
  663|     26|        }
  664|  2.67k|    }
  665|    777|    return NULL;
  666|    834|}
ofp-actions.c:parse_GROUP:
  741|    355|{
  742|    355|    return str_to_u32(arg, &ofpact_put_GROUP(pp->ofpacts)->group_id);
  743|    355|}
ofp-actions.c:parse_CONTROLLER:
  938|  10.4k|{
  939|  10.4k|    enum ofp_packet_in_reason reason = OFPR_ACTION;
  940|  10.4k|    uint16_t controller_id = 0;
  941|  10.4k|    uint16_t max_len = UINT16_MAX;
  942|  10.4k|    uint32_t meter_id = NX_CTLR_NO_METER;
  ------------------
  |  |  307|  10.4k|#define NX_CTLR_NO_METER 0
  ------------------
  943|  10.4k|    const char *userdata = NULL;
  944|  10.4k|    bool pause = false;
  945|       |
  946|  10.4k|    if (!arg[0]) {
  ------------------
  |  Branch (946:9): [True: 696, False: 9.77k]
  ------------------
  947|       |        /* Use defaults. */
  948|  9.77k|    } else if (strspn(arg, "0123456789") == strlen(arg)) {
  ------------------
  |  Branch (948:16): [True: 395, False: 9.37k]
  ------------------
  949|    395|        char *error = str_to_u16(arg, "max_len", &max_len);
  950|    395|        if (error) {
  ------------------
  |  Branch (950:13): [True: 1, False: 394]
  ------------------
  951|      1|            return error;
  952|      1|        }
  953|  9.37k|    } else {
  954|  9.37k|        char *name, *value;
  955|       |
  956|  21.2k|        while (ofputil_parse_key_value(&arg, &name, &value)) {
  ------------------
  |  Branch (956:16): [True: 12.0k, False: 9.27k]
  ------------------
  957|  12.0k|            if (!strcmp(name, "reason")) {
  ------------------
  |  Branch (957:17): [True: 833, False: 11.1k]
  ------------------
  958|    833|                if (!ofputil_packet_in_reason_from_string(value, &reason)) {
  ------------------
  |  Branch (958:21): [True: 69, False: 764]
  ------------------
  959|     69|                    return xasprintf("unknown reason \"%s\"", value);
  960|     69|                }
  961|  11.1k|            } else if (!strcmp(name, "max_len")) {
  ------------------
  |  Branch (961:24): [True: 520, False: 10.6k]
  ------------------
  962|    520|                char *error = str_to_u16(value, "max_len", &max_len);
  963|    520|                if (error) {
  ------------------
  |  Branch (963:21): [True: 2, False: 518]
  ------------------
  964|      2|                    return error;
  965|      2|                }
  966|  10.6k|            } else if (!strcmp(name, "id")) {
  ------------------
  |  Branch (966:24): [True: 1.33k, False: 9.32k]
  ------------------
  967|  1.33k|                char *error = str_to_u16(value, "id", &controller_id);
  968|  1.33k|                if (error) {
  ------------------
  |  Branch (968:21): [True: 3, False: 1.33k]
  ------------------
  969|      3|                    return error;
  970|      3|                }
  971|  9.32k|            } else if (!strcmp(name, "userdata")) {
  ------------------
  |  Branch (971:24): [True: 1.88k, False: 7.44k]
  ------------------
  972|  1.88k|                userdata = value;
  973|  7.44k|            } else if (!strcmp(name, "pause")) {
  ------------------
  |  Branch (973:24): [True: 6.96k, False: 471]
  ------------------
  974|  6.96k|                pause = true;
  975|  6.96k|            } else if (!strcmp(name, "meter_id")) {
  ------------------
  |  Branch (975:24): [True: 447, False: 24]
  ------------------
  976|    447|                char *error = str_to_u32(value, &meter_id);
  977|    447|                if (error) {
  ------------------
  |  Branch (977:21): [True: 1, False: 446]
  ------------------
  978|      1|                    return error;
  979|      1|                }
  980|    447|            } else {
  981|     24|                return xasprintf("unknown key \"%s\" parsing controller "
  982|     24|                                 "action", name);
  983|     24|            }
  984|  12.0k|        }
  985|  9.37k|    }
  986|       |
  987|  10.3k|    if (reason == OFPR_ACTION && controller_id == 0 && !userdata && !pause
  ------------------
  |  Branch (987:9): [True: 9.80k, False: 564]
  |  Branch (987:34): [True: 9.09k, False: 712]
  |  Branch (987:56): [True: 7.81k, False: 1.28k]
  |  Branch (987:69): [True: 1.85k, False: 5.95k]
  ------------------
  988|  1.85k|        && meter_id == NX_CTLR_NO_METER) {
  ------------------
  |  |  307|  1.85k|#define NX_CTLR_NO_METER 0
  ------------------
  |  Branch (988:12): [True: 1.44k, False: 413]
  ------------------
  989|  1.44k|        struct ofpact_output *output;
  990|       |
  991|  1.44k|        output = ofpact_put_OUTPUT(pp->ofpacts);
  992|  1.44k|        output->port = OFPP_CONTROLLER;
  ------------------
  |  |   45|  1.44k|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  ------------------
  |  |  |  |  157|  1.44k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  993|  1.44k|        output->max_len = max_len;
  994|  8.92k|    } else {
  995|  8.92k|        struct ofpact_controller *controller;
  996|       |
  997|  8.92k|        controller = ofpact_put_CONTROLLER(pp->ofpacts);
  998|  8.92k|        controller->max_len = max_len;
  999|  8.92k|        controller->reason = reason;
 1000|  8.92k|        controller->controller_id = controller_id;
 1001|  8.92k|        controller->pause = pause;
 1002|  8.92k|        controller->meter_id = meter_id;
 1003|       |
 1004|  8.92k|        if (userdata) {
  ------------------
  |  Branch (1004:13): [True: 1.28k, False: 7.64k]
  ------------------
 1005|  1.28k|            size_t start_ofs = pp->ofpacts->size;
 1006|  1.28k|            const char *end = ofpbuf_put_hex(pp->ofpacts, userdata, NULL);
 1007|  1.28k|            if (*end) {
  ------------------
  |  Branch (1007:17): [True: 8, False: 1.27k]
  ------------------
 1008|      8|                return xstrdup("bad hex digit in `controller' "
 1009|      8|                               "action `userdata'");
 1010|      8|            }
 1011|  1.27k|            size_t userdata_len = pp->ofpacts->size - start_ofs;
 1012|  1.27k|            controller = pp->ofpacts->header;
 1013|  1.27k|            controller->userdata_len = userdata_len;
 1014|  1.27k|        }
 1015|       |
 1016|  8.91k|        if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (1016:13): [True: 1, False: 8.91k]
  ------------------
 1017|      1|            return xasprintf("input too big");
 1018|      1|        }
 1019|       |
 1020|  8.91k|        ofpact_finish_CONTROLLER(pp->ofpacts, &controller);
 1021|  8.91k|    }
 1022|       |
 1023|  10.3k|    return NULL;
 1024|  10.3k|}
ofp-actions.c:parse_ENQUEUE:
 1131|  1.12k|{
 1132|  1.12k|    char *sp = NULL;
 1133|  1.12k|    char *port = strtok_r(arg, ":q,", &sp);
 1134|  1.12k|    char *queue = strtok_r(NULL, "", &sp);
 1135|  1.12k|    struct ofpact_enqueue *enqueue;
 1136|       |
 1137|  1.12k|    if (port == NULL || queue == NULL) {
  ------------------
  |  Branch (1137:9): [True: 2, False: 1.12k]
  |  Branch (1137:25): [True: 1, False: 1.12k]
  ------------------
 1138|      3|        return xstrdup("\"enqueue\" syntax is \"enqueue:PORT:QUEUE\" or "
 1139|      3|                       "\"enqueue(PORT,QUEUE)\"");
 1140|      3|    }
 1141|       |
 1142|  1.12k|    enqueue = ofpact_put_ENQUEUE(pp->ofpacts);
 1143|  1.12k|    if (!ofputil_port_from_string(port, pp->port_map, &enqueue->port)) {
  ------------------
  |  Branch (1143:9): [True: 1, False: 1.12k]
  ------------------
 1144|      1|        return xasprintf("%s: enqueue to unknown port", port);
 1145|      1|    }
 1146|  1.12k|    return str_to_u32(queue, &enqueue->queue);
 1147|  1.12k|}
ofp-actions.c:parse_OUTPUT_REG:
 1311|    418|{
 1312|    418|    return parse_OUTPUT(arg, pp);
 1313|    418|}
ofp-actions.c:parse_BUNDLE:
 1532|  2.73k|{
 1533|  2.73k|    return bundle_parse(arg, pp->port_map, pp->ofpacts);
 1534|  2.73k|}
ofp-actions.c:parse_SET_FIELD:
 3271|  47.1k|{
 3272|  47.1k|    char *copy = xstrdup(arg);
 3273|  47.1k|    char *error = set_field_parse__(copy, pp);
 3274|  47.1k|    free(copy);
 3275|  47.1k|    return error;
 3276|  47.1k|}
ofp-actions.c:set_field_parse__:
 3227|  47.1k|{
 3228|  47.1k|    char *value;
 3229|  47.1k|    char *delim;
 3230|  47.1k|    char *key;
 3231|  47.1k|    const struct mf_field *mf;
 3232|  47.1k|    union mf_value sf_value, sf_mask;
 3233|  47.1k|    char *error;
 3234|       |
 3235|  47.1k|    error = set_field_split_str(arg, &key, &value, &delim);
 3236|  47.1k|    if (error) {
  ------------------
  |  Branch (3236:9): [True: 14, False: 47.1k]
  ------------------
 3237|     14|        return error;
 3238|     14|    }
 3239|       |
 3240|  47.1k|    mf = mf_from_name(key);
 3241|  47.1k|    if (!mf) {
  ------------------
  |  Branch (3241:9): [True: 41, False: 47.1k]
  ------------------
 3242|     41|        return xasprintf("%s is not a valid OXM field name", key);
 3243|     41|    }
 3244|  47.1k|    if (!mf->writable) {
  ------------------
  |  Branch (3244:9): [True: 1, False: 47.1k]
  ------------------
 3245|      1|        return xasprintf("%s is read-only", key);
 3246|      1|    }
 3247|       |
 3248|  47.1k|    delim[0] = '\0';
 3249|  47.1k|    error = mf_parse(mf, value, pp->port_map, &sf_value, &sf_mask);
 3250|  47.1k|    if (error) {
  ------------------
  |  Branch (3250:9): [True: 5, False: 47.0k]
  ------------------
 3251|      5|        return error;
 3252|      5|    }
 3253|       |
 3254|  47.0k|    if (!mf_is_value_valid(mf, &sf_value)) {
  ------------------
  |  Branch (3254:9): [True: 4, False: 47.0k]
  ------------------
 3255|      4|        return xasprintf("%s is not a valid value for field %s", value, key);
 3256|      4|    }
 3257|       |
 3258|  47.0k|    *pp->usable_protocols &= mf->usable_protocols_exact;
 3259|       |
 3260|  47.0k|    ofpact_put_set_field(pp->ofpacts, mf, &sf_value, &sf_mask);
 3261|       |    return NULL;
 3262|  47.0k|}
ofp-actions.c:set_field_split_str:
 3195|  48.3k|{
 3196|  48.3k|    char *value_end;
 3197|       |
 3198|  48.3k|    *key = NULL;
 3199|  48.3k|    *value = arg;
 3200|  48.3k|    if (delim) {
  ------------------
  |  Branch (3200:9): [True: 47.6k, False: 723]
  ------------------
 3201|  47.6k|        *delim = NULL;
 3202|  47.6k|    }
 3203|       |
 3204|  48.3k|    value_end = strstr(arg, "->");
 3205|  48.3k|    if (!value_end) {
  ------------------
  |  Branch (3205:9): [True: 17, False: 48.3k]
  ------------------
 3206|     17|        return xasprintf("%s: missing `->'", arg);
 3207|     17|    }
 3208|       |
 3209|  48.3k|    *key = value_end + strlen("->");
 3210|  48.3k|    if (delim) {
  ------------------
  |  Branch (3210:9): [True: 47.6k, False: 722]
  ------------------
 3211|  47.6k|        *delim = value_end;
 3212|  47.6k|    }
 3213|  48.3k|    if (strlen(value_end) <= strlen("->")) {
  ------------------
  |  Branch (3213:9): [True: 3, False: 48.3k]
  ------------------
 3214|      3|        return xasprintf("%s: missing field name following `->'", arg);
 3215|      3|    }
 3216|       |
 3217|  48.3k|    return NULL;
 3218|  48.3k|}
ofp-actions.c:parse_SET_VLAN_VID:
 1634|    924|{
 1635|       |    return parse_set_vlan_vid(arg, false, pp);
 1636|    924|}
ofp-actions.c:parse_SET_VLAN_PCP:
 1742|  1.05k|{
 1743|       |    return parse_set_vlan_pcp(arg, false, pp);
 1744|  1.05k|}
ofp-actions.c:parse_STRIP_VLAN:
 1801|    788|{
 1802|    788|    ofpact_put_STRIP_VLAN(pp->ofpacts)->ofpact.raw = OFPAT_RAW10_STRIP_VLAN;
 1803|       |    return NULL;
 1804|    788|}
ofp-actions.c:parse_PUSH_VLAN:
 1864|  1.42k|{
 1865|  1.42k|    struct ofpact_push_vlan *push_vlan;
 1866|  1.42k|    uint16_t ethertype;
 1867|  1.42k|    char *error;
 1868|       |
 1869|  1.42k|    *pp->usable_protocols &= OFPUTIL_P_OF11_UP;
  ------------------
  |  |   92|  1.42k|#define OFPUTIL_P_OF11_UP (OFPUTIL_P_OF11_STD | OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|  1.42k|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|  1.42k|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|  1.42k|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|  1.42k|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 1870|  1.42k|    error = str_to_u16(arg, "ethertype", &ethertype);
 1871|  1.42k|    if (error) {
  ------------------
  |  Branch (1871:9): [True: 3, False: 1.42k]
  ------------------
 1872|      3|        return error;
 1873|      3|    }
 1874|       |
 1875|  1.42k|    if (!eth_type_vlan(htons(ethertype))) {
  ------------------
  |  Branch (1875:9): [True: 22, False: 1.40k]
  ------------------
 1876|     22|        return xasprintf("%s: not a valid VLAN ethertype", arg);
 1877|     22|    }
 1878|  1.40k|    push_vlan = ofpact_put_PUSH_VLAN(pp->ofpacts);
 1879|  1.40k|    push_vlan->ethertype = htons(ethertype);
 1880|       |    return NULL;
 1881|  1.42k|}
ofp-actions.c:parse_SET_ETH_SRC:
 1969|    396|{
 1970|    396|    return str_to_mac(arg, &ofpact_put_SET_ETH_SRC(pp->ofpacts)->mac);
 1971|    396|}
ofp-actions.c:parse_SET_ETH_DST:
 1975|    407|{
 1976|    407|    return str_to_mac(arg, &ofpact_put_SET_ETH_DST(pp->ofpacts)->mac);
 1977|    407|}
ofp-actions.c:parse_SET_IPV4_SRC:
 2061|  1.00k|{
 2062|  1.00k|    return str_to_ip(arg, &ofpact_put_SET_IPV4_SRC(pp->ofpacts)->ipv4);
 2063|  1.00k|}
ofp-actions.c:parse_SET_IPV4_DST:
 2067|    767|{
 2068|    767|    return str_to_ip(arg, &ofpact_put_SET_IPV4_DST(pp->ofpacts)->ipv4);
 2069|    767|}
ofp-actions.c:parse_SET_IP_DSCP:
 2140|  1.43k|{
 2141|  1.43k|    uint8_t tos;
 2142|  1.43k|    char *error;
 2143|       |
 2144|  1.43k|    error = str_to_u8(arg, "TOS", &tos);
 2145|  1.43k|    if (error) {
  ------------------
  |  Branch (2145:9): [True: 16, False: 1.42k]
  ------------------
 2146|     16|        return error;
 2147|     16|    }
 2148|       |
 2149|  1.42k|    if (tos & ~IP_DSCP_MASK) {
  ------------------
  |  |  724|  1.42k|#define IP_DSCP_MASK 0xfc
  ------------------
  |  Branch (2149:9): [True: 2, False: 1.41k]
  ------------------
 2150|      2|        return xasprintf("%s: not a valid TOS", arg);
 2151|      2|    }
 2152|  1.41k|    ofpact_put_SET_IP_DSCP(pp->ofpacts)->dscp = tos;
 2153|       |    return NULL;
 2154|  1.42k|}
ofp-actions.c:parse_SET_IP_ECN:
 2213|  1.58k|{
 2214|  1.58k|    uint8_t ecn;
 2215|  1.58k|    char *error;
 2216|       |
 2217|  1.58k|    error = str_to_u8(arg, "ECN", &ecn);
 2218|  1.58k|    if (error) {
  ------------------
  |  Branch (2218:9): [True: 11, False: 1.57k]
  ------------------
 2219|     11|        return error;
 2220|     11|    }
 2221|       |
 2222|  1.57k|    if (ecn & ~IP_ECN_MASK) {
  ------------------
  |  |  722|  1.57k|#define IP_ECN_MASK 0x03
  ------------------
  |  Branch (2222:9): [True: 1, False: 1.57k]
  ------------------
 2223|      1|        return xasprintf("%s: not a valid ECN", arg);
 2224|      1|    }
 2225|  1.57k|    ofpact_put_SET_IP_ECN(pp->ofpacts)->ecn = ecn;
 2226|       |    return NULL;
 2227|  1.57k|}
ofp-actions.c:parse_SET_L4_SRC_PORT:
 2362|  2.80k|{
 2363|  2.80k|    return str_to_u16(arg, "source port",
 2364|  2.80k|                      &ofpact_put_SET_L4_SRC_PORT(pp->ofpacts)->port);
 2365|  2.80k|}
ofp-actions.c:parse_SET_L4_DST_PORT:
 2369|  1.75k|{
 2370|  1.75k|    return str_to_u16(arg, "destination port",
 2371|  1.75k|                      &ofpact_put_SET_L4_DST_PORT(pp->ofpacts)->port);
 2372|  1.75k|}
ofp-actions.c:parse_REG_MOVE:
 2707|    544|{
 2708|    544|    struct ofpact_reg_move *move = ofpact_put_REG_MOVE(pp->ofpacts);
 2709|    544|    return nxm_parse_reg_move(move, arg);
 2710|    544|}
ofp-actions.c:parse_STACK_PUSH:
 3545|    401|{
 3546|    401|    return nxm_parse_stack_action(ofpact_put_STACK_PUSH(pp->ofpacts), arg);
 3547|    401|}
ofp-actions.c:parse_STACK_POP:
 3551|  1.90k|{
 3552|  1.90k|    return nxm_parse_stack_action(ofpact_put_STACK_POP(pp->ofpacts), arg);
 3553|  1.90k|}
ofp-actions.c:parse_DEC_TTL:
 3702|  3.67k|{
 3703|  3.67k|    if (*arg == '\0') {
  ------------------
  |  Branch (3703:9): [True: 756, False: 2.91k]
  ------------------
 3704|    756|        parse_noargs_dec_ttl(pp);
 3705|  2.91k|    } else {
 3706|  2.91k|        struct ofpact_cnt_ids *ids;
 3707|  2.91k|        char *cntr;
 3708|       |
 3709|  2.91k|        ids = ofpact_put_DEC_TTL(pp->ofpacts);
 3710|  2.91k|        ids->ofpact.raw = NXAST_RAW_DEC_TTL_CNT_IDS;
 3711|   736k|        for (cntr = strtok_r(arg, ", ", &arg); cntr != NULL;
  ------------------
  |  Branch (3711:48): [True: 733k, False: 2.91k]
  ------------------
 3712|   733k|             cntr = strtok_r(NULL, ", ", &arg)) {
 3713|   733k|            uint16_t id = atoi(cntr);
 3714|       |
 3715|   733k|            ofpbuf_put(pp->ofpacts, &id, sizeof id);
 3716|   733k|            ids = pp->ofpacts->header;
 3717|   733k|            ids->n_controllers++;
 3718|   733k|        }
 3719|  2.91k|        if (!ids->n_controllers) {
  ------------------
  |  Branch (3719:13): [True: 1, False: 2.91k]
  ------------------
 3720|      1|            return xstrdup("dec_ttl_cnt_ids: expected at least one controller "
 3721|      1|                           "id.");
 3722|      1|        }
 3723|       |
 3724|  2.91k|        if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (3724:13): [True: 6, False: 2.91k]
  ------------------
 3725|      6|            return xasprintf("input too big");
 3726|      6|        }
 3727|       |
 3728|  2.91k|        ofpact_finish_DEC_TTL(pp->ofpacts, &ids);
 3729|  2.91k|    }
 3730|  3.66k|    return NULL;
 3731|  3.67k|}
ofp-actions.c:parse_noargs_dec_ttl:
 3689|    756|{
 3690|    756|    struct ofpact_cnt_ids *ids;
 3691|    756|    uint16_t id = 0;
 3692|       |
 3693|    756|    ofpact_put_DEC_TTL(pp->ofpacts);
 3694|    756|    ofpbuf_put(pp->ofpacts, &id, sizeof id);
 3695|    756|    ids = pp->ofpacts->header;
 3696|    756|    ids->n_controllers++;
 3697|    756|    ofpact_finish_DEC_TTL(pp->ofpacts, &ids);
 3698|    756|}
ofp-actions.c:parse_SET_MPLS_LABEL:
 3784|  1.46k|{
 3785|  1.46k|    struct ofpact_mpls_label *mpls_label
 3786|  1.46k|        = ofpact_put_SET_MPLS_LABEL(pp->ofpacts);
 3787|  1.46k|    uint32_t label;
 3788|  1.46k|    char *error;
 3789|       |
 3790|  1.46k|    if (*arg == '\0') {
  ------------------
  |  Branch (3790:9): [True: 4, False: 1.45k]
  ------------------
 3791|      4|        return xstrdup("set_mpls_label: expected label.");
 3792|      4|    }
 3793|       |
 3794|  1.45k|    error = str_to_u32(arg, &label);
 3795|  1.45k|    if (error) {
  ------------------
  |  Branch (3795:9): [True: 4, False: 1.45k]
  ------------------
 3796|      4|        return error;
 3797|      4|    }
 3798|       |
 3799|  1.45k|    if (label & ~0xfffff) {
  ------------------
  |  Branch (3799:9): [True: 16, False: 1.43k]
  ------------------
 3800|     16|        return xasprintf("%s: not a valid MPLS label", arg);
 3801|     16|    }
 3802|  1.43k|    mpls_label->label = htonl(label);
 3803|       |    return NULL;
 3804|  1.45k|}
ofp-actions.c:parse_SET_MPLS_TC:
 3856|  2.60k|{
 3857|  2.60k|    struct ofpact_mpls_tc *mpls_tc = ofpact_put_SET_MPLS_TC(pp->ofpacts);
 3858|  2.60k|    uint8_t tc;
 3859|  2.60k|    char *error;
 3860|       |
 3861|  2.60k|    if (*arg == '\0') {
  ------------------
  |  Branch (3861:9): [True: 3, False: 2.60k]
  ------------------
 3862|      3|        return xstrdup("set_mpls_tc: expected tc.");
 3863|      3|    }
 3864|       |
 3865|  2.60k|    error = str_to_u8(arg, "MPLS TC", &tc);
 3866|  2.60k|    if (error) {
  ------------------
  |  Branch (3866:9): [True: 2, False: 2.60k]
  ------------------
 3867|      2|        return error;
 3868|      2|    }
 3869|       |
 3870|  2.60k|    if (tc & ~7) {
  ------------------
  |  Branch (3870:9): [True: 2, False: 2.59k]
  ------------------
 3871|      2|        return xasprintf("%s: not a valid MPLS TC", arg);
 3872|      2|    }
 3873|  2.59k|    mpls_tc->tc = tc;
 3874|       |    return NULL;
 3875|  2.60k|}
ofp-actions.c:parse_SET_MPLS_TTL:
 3918|  2.09k|{
 3919|  2.09k|    struct ofpact_mpls_ttl *mpls_ttl = ofpact_put_SET_MPLS_TTL(pp->ofpacts);
 3920|  2.09k|    uint8_t ttl;
 3921|  2.09k|    char *error;
 3922|       |
 3923|  2.09k|    if (*arg == '\0') {
  ------------------
  |  Branch (3923:9): [True: 1, False: 2.09k]
  ------------------
 3924|      1|        return xstrdup("set_mpls_ttl: expected ttl.");
 3925|      1|    }
 3926|       |
 3927|  2.09k|    error = str_to_u8(arg, "MPLS TTL", &ttl);
 3928|  2.09k|    if (error) {
  ------------------
  |  Branch (3928:9): [True: 6, False: 2.08k]
  ------------------
 3929|      6|        return error;
 3930|      6|    }
 3931|  2.08k|    mpls_ttl->ttl = ttl;
 3932|       |    return NULL;
 3933|  2.09k|}
ofp-actions.c:parse_DEC_MPLS_TTL:
 3969|  2.77k|{
 3970|  2.77k|    ofpact_put_DEC_MPLS_TTL(pp->ofpacts);
 3971|       |    return NULL;
 3972|  2.77k|}
ofp-actions.c:parse_PUSH_MPLS:
 4015|    747|{
 4016|    747|    uint16_t ethertype;
 4017|    747|    char *error;
 4018|       |
 4019|    747|    error = str_to_u16(arg, "push_mpls", &ethertype);
 4020|    747|    if (!error) {
  ------------------
  |  Branch (4020:9): [True: 743, False: 4]
  ------------------
 4021|       |        ofpact_put_PUSH_MPLS(pp->ofpacts)->ethertype = htons(ethertype);
 4022|    743|    }
 4023|    747|    return error;
 4024|    747|}
ofp-actions.c:parse_POP_MPLS:
 4073|  2.19k|{
 4074|  2.19k|    uint16_t ethertype;
 4075|  2.19k|    char *error;
 4076|       |
 4077|  2.19k|    error = str_to_u16(arg, "pop_mpls", &ethertype);
 4078|  2.19k|    if (!error) {
  ------------------
  |  Branch (4078:9): [True: 2.19k, False: 2]
  ------------------
 4079|       |        ofpact_put_POP_MPLS(pp->ofpacts)->ethertype = htons(ethertype);
 4080|  2.19k|    }
 4081|  2.19k|    return error;
 4082|  2.19k|}
ofp-actions.c:parse_DEC_NSH_TTL:
 4814|  1.28k|{
 4815|  1.28k|    ofpact_put_DEC_NSH_TTL(pp->ofpacts);
 4816|       |    return NULL;
 4817|  1.28k|}
ofp-actions.c:parse_DELETE_FIELD:
 4237|    389|{
 4238|    389|    struct ofpact_delete_field *delete_field;
 4239|       |
 4240|    389|    delete_field = ofpact_put_DELETE_FIELD(pp->ofpacts);
 4241|    389|    return mf_parse_field(&delete_field->field, arg);
 4242|    389|}
ofp-actions.c:parse_ENCAP:
 4571|  1.94k|{
 4572|  1.94k|    *pp->usable_protocols &= OFPUTIL_P_OF13_UP;
  ------------------
  |  |   95|  1.94k|#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
  |  |  ------------------
  |  |  |  |   96|  1.94k|#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|  1.94k|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4573|       |
 4574|  1.94k|    struct ofpact_encap *encap;
 4575|  1.94k|    char *key, *value, *str;
 4576|  1.94k|    char *error = NULL;
 4577|  1.94k|    uint16_t prop_class;
 4578|  1.94k|    int n_props = 0;
 4579|       |
 4580|  1.94k|    encap = ofpact_put_ENCAP(pp->ofpacts);
 4581|  1.94k|    encap->hdr_size = 0;
 4582|       |    /* Parse encap header type. */
 4583|  1.94k|    str = arg;
 4584|  1.94k|    if (!ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (4584:9): [True: 5, False: 1.93k]
  ------------------
 4585|      5|        return xasprintf("Missing encap hdr: %s", str);
 4586|      5|    }
 4587|  1.93k|    if (!parse_encap_header(key, &encap->new_pkt_type)) {
  ------------------
  |  Branch (4587:9): [True: 138, False: 1.79k]
  ------------------
 4588|    138|        return xasprintf("Encap hdr not supported: %s", value);
 4589|    138|    }
 4590|  1.79k|    if (!parse_ed_prop_class(key, &prop_class)) {
  ------------------
  |  Branch (4590:9): [True: 0, False: 1.79k]
  ------------------
 4591|      0|        return xasprintf("Invalid encap prop class: %s", key);
 4592|      0|    }
 4593|       |    /* Parse encap properties. */
 4594|  1.79k|    error = parse_ed_props(prop_class, &value, &n_props, pp->ofpacts);
 4595|  1.79k|    if (error != NULL) {
  ------------------
  |  Branch (4595:9): [True: 42, False: 1.75k]
  ------------------
 4596|     42|        return error;
 4597|     42|    }
 4598|       |    /* ofpbuf may have been re-allocated. */
 4599|  1.75k|    encap = pp->ofpacts->header;
 4600|  1.75k|    encap->n_props = n_props;
 4601|       |
 4602|  1.75k|    if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (4602:9): [True: 0, False: 1.75k]
  ------------------
 4603|      0|        return xasprintf("input too big");
 4604|      0|    }
 4605|       |
 4606|  1.75k|    ofpact_finish_ENCAP(pp->ofpacts, &encap);
 4607|       |    return NULL;
 4608|  1.75k|}
ofp-actions.c:parse_encap_header:
 4528|  1.93k|{
 4529|  1.93k|    if (strcmp(hdr, "ethernet") == 0) {
  ------------------
  |  Branch (4529:9): [True: 357, False: 1.57k]
  ------------------
 4530|    357|        *packet_type = htonl(PT_ETH);
 4531|  1.57k|    } else if (strcmp(hdr, "nsh") == 0) {
  ------------------
  |  Branch (4531:16): [True: 835, False: 744]
  ------------------
 4532|    835|        *packet_type = htonl(PT_NSH);
 4533|    835|    } else if (strcmp(hdr, "mpls") == 0) {
  ------------------
  |  Branch (4533:16): [True: 390, False: 354]
  ------------------
 4534|    390|        *packet_type = htonl(PT_MPLS);
 4535|    390|    } else if (strcmp(hdr, "mpls_mc") == 0) {
  ------------------
  |  Branch (4535:16): [True: 216, False: 138]
  ------------------
 4536|    216|        *packet_type = htonl(PT_MPLS_MC);
 4537|    216|    } else {
 4538|    138|        return false;
 4539|    138|    }
 4540|  1.79k|    return true;
 4541|  1.93k|}
ofp-actions.c:parse_ed_props:
 4545|  1.79k|{
 4546|  1.79k|    char *key, *value, *err;
 4547|  1.79k|    uint8_t prop_type;
 4548|       |
 4549|  3.18k|    while (ofputil_parse_key_value(arg, &key, &value)) {
  ------------------
  |  Branch (4549:12): [True: 1.42k, False: 1.75k]
  ------------------
 4550|  1.42k|        if (!parse_ed_prop_type(prop_class, key, &prop_type)) {
  ------------------
  |  Branch (4550:13): [True: 34, False: 1.39k]
  ------------------
 4551|     34|            return xasprintf("Invalid property: %s", key);
 4552|     34|        }
 4553|  1.39k|        if (value == NULL) {
  ------------------
  |  Branch (4553:13): [True: 0, False: 1.39k]
  ------------------
 4554|      0|            return xasprintf("Missing the value for property: %s", key);
 4555|      0|        }
 4556|  1.39k|        err = parse_ed_prop_value(prop_class, prop_type, value, out);
 4557|  1.39k|        if (err != NULL) {
  ------------------
  |  Branch (4557:13): [True: 8, False: 1.38k]
  ------------------
 4558|      8|            return err;
 4559|      8|        }
 4560|  1.38k|        (*n_props)++;
 4561|  1.38k|    }
 4562|  1.75k|    return NULL;
 4563|  1.79k|}
ofp-actions.c:parse_DECAP:
 4724|  3.47k|{
 4725|  3.47k|    struct ofpact_decap *decap;
 4726|  3.47k|    char *key, *value, *pos;
 4727|  3.47k|    char *error = NULL;
 4728|  3.47k|    uint16_t ns, type;
 4729|       |
 4730|  3.47k|    decap = ofpact_put_DECAP(pp->ofpacts);
 4731|       |    /* Default next packet_type is PT_USE_NEXT_PROTO. */
 4732|  3.47k|    decap->new_pkt_type = htonl(PT_USE_NEXT_PROTO);
 4733|       |
 4734|       |    /* Parse decap packet_type if given. */
 4735|  3.47k|    if (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (4735:9): [True: 102, False: 3.37k]
  ------------------
 4736|    102|        if (strcmp(key, "packet_type") == 0) {
  ------------------
  |  Branch (4736:13): [True: 22, False: 80]
  ------------------
 4737|     22|            pos = value;
 4738|     22|            if (!ofputil_parse_key_value(&pos, &key, &value)
  ------------------
  |  Branch (4738:17): [True: 1, False: 21]
  ------------------
 4739|     21|                || strcmp(key, "ns") != 0) {
  ------------------
  |  Branch (4739:20): [True: 6, False: 15]
  ------------------
 4740|      7|                return xstrdup("Missing packet_type attribute ns");
 4741|      7|            }
 4742|     15|            error = str_to_u16(value, "ns", &ns);
 4743|     15|            if (error) {
  ------------------
  |  Branch (4743:17): [True: 1, False: 14]
  ------------------
 4744|      1|                return error;
 4745|      1|            }
 4746|     14|            if (ns >= OFPHTN_N_TYPES) {
  ------------------
  |  Branch (4746:17): [True: 4, False: 10]
  ------------------
 4747|      4|                return xasprintf("Unsupported ns value: %"PRIu16, ns);
 4748|      4|            }
 4749|     10|            if (!ofputil_parse_key_value(&pos, &key, &value)
  ------------------
  |  Branch (4749:17): [True: 1, False: 9]
  ------------------
 4750|      9|                || strcmp(key, "type") != 0) {
  ------------------
  |  Branch (4750:20): [True: 7, False: 2]
  ------------------
 4751|      8|                return xstrdup("Missing packet_type attribute type");
 4752|      8|            }
 4753|      2|            error = str_to_u16(value, "type", &type);
 4754|      2|            if (error) {
  ------------------
  |  Branch (4754:17): [True: 1, False: 1]
  ------------------
 4755|      1|                return error;
 4756|      1|            }
 4757|      1|            decap->new_pkt_type = htonl(PACKET_TYPE(ns, type));
 4758|     80|        } else {
 4759|     80|            return xasprintf("Invalid decap argument: %s", key);
 4760|     80|        }
 4761|    102|    }
 4762|  3.37k|    return NULL;
 4763|  3.47k|}
ofp-actions.c:parse_SET_TUNNEL:
 4160|    684|{
 4161|    684|    return parse_set_tunnel(arg, NXAST_RAW_SET_TUNNEL, pp);
 4162|    684|}
ofp-actions.c:parse_SET_QUEUE:
 4284|    581|{
 4285|    581|    return str_to_u32(arg, &ofpact_put_SET_QUEUE(pp->ofpacts)->queue_id);
 4286|    581|}
ofp-actions.c:parse_POP_QUEUE:
 4322|    906|{
 4323|    906|    ofpact_put_POP_QUEUE(pp->ofpacts);
 4324|       |    return NULL;
 4325|    906|}
ofp-actions.c:parse_FIN_TIMEOUT:
 4400|  1.33k|{
 4401|  1.33k|    struct ofpact_fin_timeout *oft = ofpact_put_FIN_TIMEOUT(pp->ofpacts);
 4402|  1.33k|    char *key, *value;
 4403|       |
 4404|  2.25k|    while (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (4404:12): [True: 1.04k, False: 1.21k]
  ------------------
 4405|  1.04k|        char *error;
 4406|       |
 4407|  1.04k|        if (!strcmp(key, "idle_timeout")) {
  ------------------
  |  Branch (4407:13): [True: 320, False: 727]
  ------------------
 4408|    320|            error =  str_to_u16(value, key, &oft->fin_idle_timeout);
 4409|    727|        } else if (!strcmp(key, "hard_timeout")) {
  ------------------
  |  Branch (4409:20): [True: 606, False: 121]
  ------------------
 4410|    606|            error = str_to_u16(value, key, &oft->fin_hard_timeout);
 4411|    606|        } else {
 4412|    121|            error = xasprintf("invalid key '%s' in 'fin_timeout' argument",
 4413|    121|                              key);
 4414|    121|        }
 4415|       |
 4416|  1.04k|        if (error) {
  ------------------
  |  Branch (4416:13): [True: 127, False: 920]
  ------------------
 4417|    127|            return error;
 4418|    127|        }
 4419|  1.04k|    }
 4420|  1.21k|    return NULL;
 4421|  1.33k|}
ofp-actions.c:parse_RESUBMIT:
 4982|  2.41k|{
 4983|  2.41k|    struct ofpact_resubmit *resubmit;
 4984|  2.41k|    char *in_port_s, *table_s, *ct_s;
 4985|       |
 4986|  2.41k|    resubmit = ofpact_put_RESUBMIT(pp->ofpacts);
 4987|       |
 4988|  2.41k|    in_port_s = strsep(&arg, ",");
 4989|  2.41k|    if (in_port_s && in_port_s[0]) {
  ------------------
  |  Branch (4989:9): [True: 2.41k, False: 0]
  |  Branch (4989:22): [True: 1.64k, False: 765]
  ------------------
 4990|  1.64k|        if (!ofputil_port_from_string(in_port_s, pp->port_map,
  ------------------
  |  Branch (4990:13): [True: 1, False: 1.64k]
  ------------------
 4991|  1.64k|                                      &resubmit->in_port)) {
 4992|      1|            return xasprintf("%s: resubmit to unknown port", in_port_s);
 4993|      1|        }
 4994|  1.64k|    } else {
 4995|    765|        resubmit->in_port = OFPP_IN_PORT;
  ------------------
  |  |   39|    765|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  ------------------
  |  |  |  |  157|    765|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
 4996|    765|    }
 4997|       |
 4998|  2.41k|    table_s = strsep(&arg, ",");
 4999|  2.41k|    if (table_s && table_s[0]) {
  ------------------
  |  Branch (4999:9): [True: 1.90k, False: 505]
  |  Branch (4999:20): [True: 838, False: 1.06k]
  ------------------
 5000|    838|        if (!ofputil_table_from_string(table_s, pp->table_map,
  ------------------
  |  Branch (5000:13): [True: 1, False: 837]
  ------------------
 5001|    838|                                       &resubmit->table_id)) {
 5002|      1|            return xasprintf("%s: resubmit to unknown table", table_s);
 5003|      1|        }
 5004|  1.57k|    } else {
 5005|  1.57k|        resubmit->table_id = 255;
 5006|  1.57k|    }
 5007|       |
 5008|  2.41k|    ct_s = strsep(&arg, ",");
 5009|  2.41k|    if (ct_s && ct_s[0]) {
  ------------------
  |  Branch (5009:9): [True: 818, False: 1.59k]
  |  Branch (5009:17): [True: 511, False: 307]
  ------------------
 5010|    511|        if (strcmp(ct_s, "ct")) {
  ------------------
  |  Branch (5010:13): [True: 19, False: 492]
  ------------------
 5011|     19|            return xasprintf("%s: unknown parameter", ct_s);
 5012|     19|        }
 5013|    492|        resubmit->with_ct_orig = true;
 5014|  1.90k|    } else {
 5015|  1.90k|        resubmit->with_ct_orig = false;
 5016|  1.90k|    }
 5017|       |
 5018|  2.39k|    if (resubmit->in_port == OFPP_IN_PORT && resubmit->table_id == 255) {
  ------------------
  |  |   39|  2.39k|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  ------------------
  |  |  |  |  157|  4.78k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (5018:9): [True: 753, False: 1.63k]
  |  Branch (5018:46): [True: 16, False: 737]
  ------------------
 5019|     16|        return xstrdup("at least one \"in_port\" or \"table\" must be "
 5020|     16|                       "specified on resubmit");
 5021|     16|    }
 5022|  2.37k|    return NULL;
 5023|  2.39k|}
ofp-actions.c:parse_LEARN:
 5632|  36.3k|{
 5633|  36.3k|    return learn_parse(arg, pp->port_map, pp->table_map, pp->ofpacts);
 5634|  36.3k|}
ofp-actions.c:parse_CONJUNCTION:
 5710|    562|{
 5711|    562|    uint8_t n_clauses;
 5712|    562|    uint8_t clause;
 5713|    562|    uint32_t id;
 5714|    562|    int n;
 5715|       |
 5716|    562|    if (!ovs_scan(arg, "%"SCNi32" , %"SCNu8" / %"SCNu8" %n",
  ------------------
  |  Branch (5716:9): [True: 7, False: 555]
  ------------------
 5717|    562|                  &id, &clause, &n_clauses, &n) || n != strlen(arg)) {
  ------------------
  |  Branch (5717:52): [True: 15, False: 540]
  ------------------
 5718|     22|        return xstrdup("\"conjunction\" syntax is \"conjunction(id,i/n)\"");
 5719|     22|    }
 5720|       |
 5721|    540|    if (n_clauses < 2) {
  ------------------
  |  Branch (5721:9): [True: 1, False: 539]
  ------------------
 5722|      1|        return xstrdup("conjunction must have at least 2 clauses");
 5723|    539|    } else if (n_clauses > 64) {
  ------------------
  |  Branch (5723:16): [True: 3, False: 536]
  ------------------
 5724|      3|        return xstrdup("conjunction must have at most 64 clauses");
 5725|    536|    } else if (clause < 1) {
  ------------------
  |  Branch (5725:16): [True: 1, False: 535]
  ------------------
 5726|      1|        return xstrdup("clause index must be positive");
 5727|    535|    } else if (clause > n_clauses) {
  ------------------
  |  Branch (5727:16): [True: 1, False: 534]
  ------------------
 5728|      1|        return xstrdup("clause index must be less than or equal to "
 5729|      1|                       "number of clauses");
 5730|      1|    }
 5731|       |
 5732|    534|    add_conjunction(pp->ofpacts, id, clause - 1, n_clauses);
 5733|       |    return NULL;
 5734|    540|}
ofp-actions.c:parse_MULTIPATH:
 5859|  3.12k|{
 5860|  3.12k|    return multipath_parse(ofpact_put_MULTIPATH(pp->ofpacts), arg);
 5861|  3.12k|}
ofp-actions.c:parse_NOTE:
 5929|  2.46k|{
 5930|  2.46k|    size_t start_ofs = pp->ofpacts->size;
 5931|  2.46k|    ofpact_put_NOTE(pp->ofpacts);
 5932|  2.46k|    arg = ofpbuf_put_hex(pp->ofpacts, arg, NULL);
 5933|  2.46k|    if (arg[0]) {
  ------------------
  |  Branch (5933:9): [True: 9, False: 2.45k]
  ------------------
 5934|      9|        return xstrdup("bad hex digit in `note' argument");
 5935|      9|    }
 5936|  2.45k|    struct ofpact_note *note = ofpbuf_at_assert(pp->ofpacts, start_ofs,
 5937|  2.45k|                                                sizeof *note);
 5938|  2.45k|    note->length = pp->ofpacts->size - (start_ofs + sizeof *note);
 5939|       |
 5940|  2.45k|    if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (5940:9): [True: 1, False: 2.45k]
  ------------------
 5941|      1|        return xasprintf("input too big");
 5942|      1|    }
 5943|       |
 5944|  2.45k|    ofpact_finish_NOTE(pp->ofpacts, &note);
 5945|       |    return NULL;
 5946|  2.45k|}
ofp-actions.c:parse_EXIT:
 5981|  2.29k|{
 5982|  2.29k|    ofpact_put_EXIT(pp->ofpacts);
 5983|       |    return NULL;
 5984|  2.29k|}
ofp-actions.c:parse_SAMPLE:
 6454|  1.85k|{
 6455|  1.85k|    struct ofpact_sample *os = ofpact_put_SAMPLE(pp->ofpacts);
 6456|  1.85k|    os->sampling_port = OFPP_NONE;
  ------------------
  |  |   47|  1.85k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|  1.85k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
 6457|  1.85k|    os->direction = NX_ACTION_SAMPLE_DEFAULT;
 6458|       |
 6459|  1.85k|    char *key, *value;
 6460|  6.23k|    while (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (6460:12): [True: 4.54k, False: 1.68k]
  ------------------
 6461|  4.54k|        char *error = NULL;
 6462|       |
 6463|  4.54k|        if (!strcmp(key, "probability")) {
  ------------------
  |  Branch (6463:13): [True: 1.65k, False: 2.89k]
  ------------------
 6464|  1.65k|            error = str_to_u16(value, "probability", &os->probability);
 6465|  1.65k|            if (!error && os->probability == 0) {
  ------------------
  |  Branch (6465:17): [True: 1.65k, False: 1]
  |  Branch (6465:27): [True: 1, False: 1.65k]
  ------------------
 6466|      1|                error = xasprintf("invalid probability value \"%s\"", value);
 6467|      1|            }
 6468|  2.89k|        } else if (!strcmp(key, "collector_set_id")) {
  ------------------
  |  Branch (6468:20): [True: 76, False: 2.81k]
  ------------------
 6469|     76|            error = str_to_u32(value, &os->collector_set_id);
 6470|  2.81k|        } else if (!strcmp(key, "obs_domain_id")) {
  ------------------
  |  Branch (6470:20): [True: 615, False: 2.20k]
  ------------------
 6471|    615|            error = str_to_u32(value, &os->obs_domain_imm);
 6472|       |
 6473|    615|            if (error) {
  ------------------
  |  Branch (6473:17): [True: 290, False: 325]
  ------------------
 6474|    290|                free(error);
 6475|    290|                error = mf_parse_subfield(&os->obs_domain_src, value);
 6476|    290|                if (error) {
  ------------------
  |  Branch (6476:21): [True: 1, False: 289]
  ------------------
 6477|      1|                    return error;
 6478|      1|                }
 6479|    289|                if (os->obs_domain_src.n_bits > 32) {
  ------------------
  |  Branch (6479:21): [True: 1, False: 288]
  ------------------
 6480|      1|                    return xasprintf("size of obs_domain_id field (%d) "
 6481|      1|                                     "exceeds maximum (32)",
 6482|      1|                                     os->obs_domain_src.n_bits);
 6483|      1|                }
 6484|    289|            }
 6485|  2.20k|        } else if (!strcmp(key, "obs_point_id")) {
  ------------------
  |  Branch (6485:20): [True: 760, False: 1.44k]
  ------------------
 6486|    760|            error = str_to_u32(value, &os->obs_point_imm);
 6487|       |
 6488|    760|            if (error) {
  ------------------
  |  Branch (6488:17): [True: 288, False: 472]
  ------------------
 6489|    288|                free(error);
 6490|    288|                error = mf_parse_subfield(&os->obs_point_src, value);
 6491|    288|                if (error) {
  ------------------
  |  Branch (6491:21): [True: 5, False: 283]
  ------------------
 6492|      5|                    return error;
 6493|      5|                }
 6494|    283|                if (os->obs_point_src.n_bits > 32) {
  ------------------
  |  Branch (6494:21): [True: 1, False: 282]
  ------------------
 6495|      1|                    return xasprintf("size of obs_point_id field (%d) "
 6496|      1|                                     "exceeds maximum (32)",
 6497|      1|                                     os->obs_point_src.n_bits);
 6498|      1|                }
 6499|    283|            }
 6500|  1.44k|        } else if (!strcmp(key, "sampling_port")) {
  ------------------
  |  Branch (6500:20): [True: 276, False: 1.16k]
  ------------------
 6501|    276|            if (!ofputil_port_from_string(value, pp->port_map,
  ------------------
  |  Branch (6501:17): [True: 1, False: 275]
  ------------------
 6502|    276|                                          &os->sampling_port)) {
 6503|      1|                error = xasprintf("%s: unknown port", value);
 6504|      1|            }
 6505|  1.16k|        } else if (!strcmp(key, "ingress")) {
  ------------------
  |  Branch (6505:20): [True: 600, False: 565]
  ------------------
 6506|    600|            os->direction = NX_ACTION_SAMPLE_INGRESS;
 6507|    600|        } else if (!strcmp(key, "egress")) {
  ------------------
  |  Branch (6507:20): [True: 415, False: 150]
  ------------------
 6508|    415|            os->direction = NX_ACTION_SAMPLE_EGRESS;
 6509|    415|        } else {
 6510|    150|            error = xasprintf("invalid key \"%s\" in \"sample\" argument",
 6511|    150|                              key);
 6512|    150|        }
 6513|  4.53k|        if (error) {
  ------------------
  |  Branch (6513:13): [True: 159, False: 4.37k]
  ------------------
 6514|    159|            return error;
 6515|    159|        }
 6516|  4.53k|    }
 6517|  1.68k|    if (os->probability == 0) {
  ------------------
  |  Branch (6517:9): [True: 36, False: 1.64k]
  ------------------
 6518|     36|        return xstrdup("non-zero \"probability\" must be specified on sample");
 6519|     36|    }
 6520|       |
 6521|  1.64k|    return NULL;
 6522|  1.68k|}
ofp-actions.c:parse_UNROLL_XLATE:
 6013|      1|{
 6014|      1|    return xasprintf("UNROLL is an internal action "
 6015|      1|                     "that shouldn't be used via OpenFlow");
 6016|      1|}
ofp-actions.c:parse_CT:
 6924|  9.54k|{
 6925|  9.54k|    const size_t ct_offset = ofpacts_pull(pp->ofpacts);
 6926|  9.54k|    struct ofpact_conntrack *oc;
 6927|  9.54k|    char *error = NULL;
 6928|  9.54k|    char *key, *value;
 6929|       |
 6930|  9.54k|    oc = ofpact_put_CT(pp->ofpacts);
 6931|  9.54k|    oc->flags = 0;
 6932|  9.54k|    oc->recirc_table = NX_CT_RECIRC_NONE;
  ------------------
  |  |  692|  9.54k|#define NX_CT_RECIRC_NONE OFPTT_ALL
  ------------------
 6933|  77.1k|    while (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (6933:12): [True: 68.8k, False: 8.39k]
  ------------------
 6934|  68.8k|        if (!strcmp(key, "commit")) {
  ------------------
  |  Branch (6934:13): [True: 220, False: 68.5k]
  ------------------
 6935|    220|            oc->flags |= NX_CT_F_COMMIT;
 6936|  68.5k|        } else if (!strcmp(key, "force")) {
  ------------------
  |  Branch (6936:20): [True: 219, False: 68.3k]
  ------------------
 6937|    219|            oc->flags |= NX_CT_F_FORCE;
 6938|  68.3k|        } else if (!strcmp(key, "table")) {
  ------------------
  |  Branch (6938:20): [True: 315, False: 68.0k]
  ------------------
 6939|    315|            if (!ofputil_table_from_string(value, pp->table_map,
  ------------------
  |  Branch (6939:17): [True: 1, False: 314]
  ------------------
 6940|    315|                                           &oc->recirc_table)) {
 6941|      1|                error = xasprintf("unknown table %s", value);
 6942|    314|            } else if (oc->recirc_table == NX_CT_RECIRC_NONE) {
  ------------------
  |  |  692|    314|#define NX_CT_RECIRC_NONE OFPTT_ALL
  ------------------
  |  Branch (6942:24): [True: 1, False: 313]
  ------------------
 6943|      1|                error = xasprintf("invalid table %#"PRIx8, oc->recirc_table);
 6944|      1|            }
 6945|  68.0k|        } else if (!strcmp(key, "zone")) {
  ------------------
  |  Branch (6945:20): [True: 422, False: 67.6k]
  ------------------
 6946|    422|            error = str_to_u16(value, "zone", &oc->zone_imm);
 6947|       |
 6948|    422|            if (error) {
  ------------------
  |  Branch (6948:17): [True: 228, False: 194]
  ------------------
 6949|    228|                free(error);
 6950|    228|                error = mf_parse_subfield(&oc->zone_src, value);
 6951|    228|                if (error) {
  ------------------
  |  Branch (6951:21): [True: 8, False: 220]
  ------------------
 6952|      8|                    return error;
 6953|      8|                }
 6954|    228|            }
 6955|  67.6k|        } else if (!strcmp(key, "alg")) {
  ------------------
  |  Branch (6955:20): [True: 371, False: 67.2k]
  ------------------
 6956|    371|            error = str_to_connhelper(value, &oc->alg);
 6957|  67.2k|        } else if (!strcmp(key, "nat")) {
  ------------------
  |  Branch (6957:20): [True: 65.4k, False: 1.84k]
  ------------------
 6958|  65.4k|            const size_t nat_offset = ofpacts_pull(pp->ofpacts);
 6959|       |
 6960|  65.4k|            error = parse_NAT(value, pp);
 6961|       |            /* Update CT action pointer and length. */
 6962|  65.4k|            pp->ofpacts->header = ofpbuf_push_uninit(pp->ofpacts, nat_offset);
 6963|  65.4k|            oc = pp->ofpacts->header;
 6964|  65.4k|        } else if (!strcmp(key, "exec")) {
  ------------------
  |  Branch (6964:20): [True: 1.60k, False: 243]
  ------------------
 6965|       |            /* Hide existing actions from ofpacts_parse_copy(), so the
 6966|       |             * nesting can be handled transparently. */
 6967|  1.60k|            enum ofputil_protocol usable_protocols2;
 6968|  1.60k|            const size_t exec_offset = ofpacts_pull(pp->ofpacts);
 6969|       |
 6970|       |            /* Initializes 'usable_protocol2', fold it back to
 6971|       |             * '*usable_protocols' afterwards, so that we do not lose
 6972|       |             * restrictions already in there. */
 6973|  1.60k|            struct ofpact_parse_params pp2 = *pp;
 6974|  1.60k|            pp2.usable_protocols = &usable_protocols2;
 6975|  1.60k|            error = ofpacts_parse_copy(value, &pp2, false, OFPACT_CT);
 6976|  1.60k|            *pp->usable_protocols &= usable_protocols2;
 6977|  1.60k|            pp->ofpacts->header = ofpbuf_push_uninit(pp->ofpacts, exec_offset);
 6978|  1.60k|            oc = pp->ofpacts->header;
 6979|  1.60k|        } else {
 6980|    243|            error = xasprintf("invalid argument to \"ct\" action: `%s'", key);
 6981|    243|        }
 6982|  68.7k|        if (error) {
  ------------------
  |  Branch (6982:13): [True: 1.13k, False: 67.6k]
  ------------------
 6983|  1.13k|            break;
 6984|  1.13k|        }
 6985|  68.7k|    }
 6986|  9.53k|    if (!error && oc->flags & NX_CT_F_FORCE && !(oc->flags & NX_CT_F_COMMIT)) {
  ------------------
  |  Branch (6986:9): [True: 8.39k, False: 1.13k]
  |  Branch (6986:19): [True: 27, False: 8.36k]
  |  Branch (6986:48): [True: 9, False: 18]
  ------------------
 6987|      9|        error = xasprintf("\"force\" flag requires \"commit\" flag.");
 6988|      9|    }
 6989|       |
 6990|  9.53k|    if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (6990:9): [True: 2, False: 9.53k]
  ------------------
 6991|      2|        free(error);
 6992|      2|        return xasprintf("input too big");
 6993|      2|    }
 6994|       |
 6995|  9.53k|    ofpact_finish_CT(pp->ofpacts, &oc);
 6996|  9.53k|    ofpbuf_push_uninit(pp->ofpacts, ct_offset);
 6997|  9.53k|    return error;
 6998|  9.53k|}
ofp-actions.c:parse_CT_CLEAR:
 7107|  1.81k|{
 7108|  1.81k|    ofpact_put_CT_CLEAR(pp->ofpacts);
 7109|       |    return NULL;
 7110|  1.81k|}
ofp-actions.c:parse_NAT:
 7430|  74.1k|{
 7431|  74.1k|    struct ofpact_nat *on = ofpact_put_NAT(pp->ofpacts);
 7432|  74.1k|    char *key, *value;
 7433|       |
 7434|  74.1k|    on->flags = 0;
 7435|  74.1k|    on->range_af = AF_UNSPEC;
 7436|       |
 7437|   135k|    while (ofputil_parse_key_value(&arg, &key, &value)) {
  ------------------
  |  Branch (7437:12): [True: 61.0k, False: 73.9k]
  ------------------
 7438|  61.0k|        char *error = NULL;
 7439|       |
 7440|  61.0k|        if (!strcmp(key, "src")) {
  ------------------
  |  Branch (7440:13): [True: 1.88k, False: 59.1k]
  ------------------
 7441|  1.88k|            on->flags |= NX_NAT_F_SRC;
 7442|  1.88k|            error = str_to_nat_range(value, on);
 7443|  59.1k|        } else if (!strcmp(key, "dst")) {
  ------------------
  |  Branch (7443:20): [True: 58.4k, False: 698]
  ------------------
 7444|  58.4k|            on->flags |= NX_NAT_F_DST;
 7445|  58.4k|            error = str_to_nat_range(value, on);
 7446|  58.4k|        } else if (!strcmp(key, "persistent")) {
  ------------------
  |  Branch (7446:20): [True: 195, False: 503]
  ------------------
 7447|    195|            on->flags |= NX_NAT_F_PERSISTENT;
 7448|    503|        } else if (!strcmp(key, "hash")) {
  ------------------
  |  Branch (7448:20): [True: 257, False: 246]
  ------------------
 7449|    257|            on->flags |= NX_NAT_F_PROTO_HASH;
 7450|    257|        } else if (!strcmp(key, "random")) {
  ------------------
  |  Branch (7450:20): [True: 195, False: 51]
  ------------------
 7451|    195|            on->flags |= NX_NAT_F_PROTO_RANDOM;
 7452|    195|        } else {
 7453|     51|            error = xasprintf("invalid key \"%s\" in \"nat\" argument",
 7454|     51|                              key);
 7455|     51|        }
 7456|  61.0k|        if (error) {
  ------------------
  |  Branch (7456:13): [True: 143, False: 60.9k]
  ------------------
 7457|    143|            return error;
 7458|    143|        }
 7459|  61.0k|    }
 7460|  73.9k|    if (on->flags & NX_NAT_F_SRC && on->flags & NX_NAT_F_DST) {
  ------------------
  |  Branch (7460:9): [True: 495, False: 73.4k]
  |  Branch (7460:37): [True: 3, False: 492]
  ------------------
 7461|      3|        return xasprintf("May only specify one of \"src\" or \"dst\".");
 7462|      3|    }
 7463|  73.9k|    if (!(on->flags & NX_NAT_F_SRC || on->flags & NX_NAT_F_DST)) {
  ------------------
  |  Branch (7463:11): [True: 492, False: 73.4k]
  |  Branch (7463:39): [True: 57.4k, False: 16.0k]
  ------------------
 7464|  16.0k|        if (on->flags) {
  ------------------
  |  Branch (7464:13): [True: 16, False: 16.0k]
  ------------------
 7465|     16|            return xasprintf("Flags allowed only with \"src\" or \"dst\".");
 7466|     16|        }
 7467|  16.0k|        if (on->range_af != AF_UNSPEC) {
  ------------------
  |  Branch (7467:13): [True: 0, False: 16.0k]
  ------------------
 7468|      0|            return xasprintf("Range allowed only with \"src\" or \"dst\".");
 7469|      0|        }
 7470|  16.0k|    }
 7471|  73.9k|    if (on->flags & NX_NAT_F_PROTO_HASH && on->flags & NX_NAT_F_PROTO_RANDOM) {
  ------------------
  |  Branch (7471:9): [True: 196, False: 73.7k]
  |  Branch (7471:44): [True: 1, False: 195]
  ------------------
 7472|      1|        return xasprintf("Both \"hash\" and \"random\" are not allowed.");
 7473|      1|    }
 7474|       |
 7475|  73.9k|    return NULL;
 7476|  73.9k|}
ofp-actions.c:str_to_nat_range:
 7366|  60.3k|{
 7367|  60.3k|    char ipv6_s[IPV6_SCAN_LEN + 1];
 7368|  60.3k|    int n = 0;
 7369|       |
 7370|  60.3k|    on->range_af = AF_UNSPEC;
 7371|  60.3k|    if (ovs_scan_len(s, &n, IP_SCAN_FMT,
  ------------------
  |  |  645|  60.3k|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
  |  Branch (7371:9): [True: 883, False: 59.4k]
  ------------------
 7372|  60.3k|                     IP_SCAN_ARGS(&on->range.addr.ipv4.min))) {
  ------------------
  |  |  647|  60.3k|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|  60.3k|        &((uint8_t *) ip)[1],                               \
  |  |  649|  60.3k|        &((uint8_t *) ip)[2],                               \
  |  |  650|  60.3k|        &((uint8_t *) ip)[3]
  ------------------
 7373|    883|        on->range_af = AF_INET;
 7374|       |
 7375|    883|        if (s[n] == '-') {
  ------------------
  |  Branch (7375:13): [True: 266, False: 617]
  ------------------
 7376|    266|            n++;
 7377|    266|            if (!ovs_scan_len(s, &n, IP_SCAN_FMT,
  ------------------
  |  |  645|    266|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
  |  Branch (7377:17): [True: 1, False: 265]
  ------------------
 7378|    266|                              IP_SCAN_ARGS(&on->range.addr.ipv4.max))
  ------------------
  |  |  647|    266|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|    266|        &((uint8_t *) ip)[1],                               \
  |  |  649|    266|        &((uint8_t *) ip)[2],                               \
  |  |  650|    266|        &((uint8_t *) ip)[3]
  ------------------
 7379|    265|                || (ntohl(on->range.addr.ipv4.max)
  ------------------
  |  Branch (7379:20): [True: 3, False: 262]
  ------------------
 7380|    265|                    < ntohl(on->range.addr.ipv4.min))) {
 7381|      4|                goto error;
 7382|      4|            }
 7383|    266|        }
 7384|  59.4k|    } else if ((ovs_scan_len(s, &n, IPV6_SCAN_FMT, ipv6_s)
  ------------------
  |  | 1162|  59.4k|#define IPV6_SCAN_FMT "%46[0123456789abcdefABCDEF:.]"
  ------------------
  |  Branch (7384:17): [True: 56.1k, False: 3.36k]
  ------------------
 7385|  3.36k|                || ovs_scan_len(s, &n, "["IPV6_SCAN_FMT"]", ipv6_s))
  ------------------
  |  Branch (7385:20): [True: 2.15k, False: 1.20k]
  ------------------
 7386|  58.2k|               && inet_pton(AF_INET6, ipv6_s, &on->range.addr.ipv6.min) == 1) {
  ------------------
  |  Branch (7386:19): [True: 32.9k, False: 25.3k]
  ------------------
 7387|  32.9k|        on->range_af = AF_INET6;
 7388|       |
 7389|  32.9k|        if (s[n] == '-') {
  ------------------
  |  Branch (7389:13): [True: 1.82k, False: 31.1k]
  ------------------
 7390|  1.82k|            n++;
 7391|  1.82k|            if (!(ovs_scan_len(s, &n, IPV6_SCAN_FMT, ipv6_s)
  ------------------
  |  | 1162|  1.82k|#define IPV6_SCAN_FMT "%46[0123456789abcdefABCDEF:.]"
  ------------------
  |  Branch (7391:19): [True: 1.60k, False: 219]
  ------------------
 7392|    219|                  || ovs_scan_len(s, &n, "["IPV6_SCAN_FMT"]", ipv6_s))
  ------------------
  |  Branch (7392:22): [True: 212, False: 7]
  ------------------
 7393|  1.81k|                || inet_pton(AF_INET6, ipv6_s, &on->range.addr.ipv6.max) != 1
  ------------------
  |  Branch (7393:20): [True: 7, False: 1.80k]
  ------------------
 7394|  1.80k|                || memcmp(&on->range.addr.ipv6.max, &on->range.addr.ipv6.min,
  ------------------
  |  Branch (7394:20): [True: 8, False: 1.79k]
  ------------------
 7395|  1.80k|                          sizeof on->range.addr.ipv6.max) < 0) {
 7396|     22|                goto error;
 7397|     22|            }
 7398|  1.82k|        }
 7399|  32.9k|    }
 7400|  60.3k|    if (on->range_af != AF_UNSPEC && s[n] == ':') {
  ------------------
  |  Branch (7400:9): [True: 33.7k, False: 26.5k]
  |  Branch (7400:38): [True: 1.45k, False: 32.3k]
  ------------------
 7401|  1.45k|        n++;
 7402|  1.45k|        if (!ovs_scan_len(s, &n, "%"SCNu16, &on->range.proto.min)) {
  ------------------
  |  Branch (7402:13): [True: 3, False: 1.44k]
  ------------------
 7403|      3|            goto error;
 7404|      3|        }
 7405|  1.44k|        if (s[n] == '-') {
  ------------------
  |  Branch (7405:13): [True: 719, False: 728]
  ------------------
 7406|    719|            n++;
 7407|    719|            if (!ovs_scan_len(s, &n, "%"SCNu16, &on->range.proto.max)
  ------------------
  |  Branch (7407:17): [True: 5, False: 714]
  ------------------
 7408|    714|                || on->range.proto.max < on->range.proto.min) {
  ------------------
  |  Branch (7408:20): [True: 1, False: 713]
  ------------------
 7409|      6|                goto error;
 7410|      6|            }
 7411|    719|        }
 7412|  1.44k|    }
 7413|  60.3k|    if (strlen(s) != n) {
  ------------------
  |  Branch (7413:9): [True: 57, False: 60.2k]
  ------------------
 7414|     57|        return xasprintf("garbage (%s) after nat range \"%s\" (pos: %d)",
 7415|     57|                         &s[n], s, n);
 7416|     57|    }
 7417|  60.2k|    return NULL;
 7418|     35|error:
 7419|     35|    return xasprintf("invalid nat range \"%s\"", s);
 7420|  60.3k|}
ofp-actions.c:parse_OUTPUT_TRUNC:
 7532|      1|{
 7533|       |    /* Disable output_trunc parsing.  Expose as output(port=N,max_len=M) and
 7534|       |     * reuse parse_OUTPUT to parse output_trunc action. */
 7535|      1|    return xasprintf("unknown action %s", arg);
 7536|      1|}
ofp-actions.c:parse_CLONE:
 6090|  9.50k|{
 6091|  9.50k|    const size_t clone_offset = ofpacts_pull(pp->ofpacts);
 6092|  9.50k|    struct ofpact_nest *clone = ofpact_put_CLONE(pp->ofpacts);
 6093|  9.50k|    char *error;
 6094|       |
 6095|  9.50k|    ofpbuf_pull(pp->ofpacts, sizeof *clone);
 6096|  9.50k|    error = ofpacts_parse_copy(arg, pp, false, OFPACT_CLONE);
 6097|       |    /* header points to the action list */
 6098|  9.50k|    pp->ofpacts->header = ofpbuf_push_uninit(pp->ofpacts, sizeof *clone);
 6099|  9.50k|    clone = pp->ofpacts->header;
 6100|       |
 6101|  9.50k|    if (ofpbuf_oversized(pp->ofpacts)) {
  ------------------
  |  Branch (6101:9): [True: 1, False: 9.50k]
  ------------------
 6102|      1|        free(error);
 6103|      1|        return xasprintf("input too big");
 6104|      1|    }
 6105|       |
 6106|  9.50k|    ofpact_finish_CLONE(pp->ofpacts, &clone);
 6107|  9.50k|    ofpbuf_push_uninit(pp->ofpacts, clone_offset);
 6108|  9.50k|    return error;
 6109|  9.50k|}
ofp-actions.c:parse_CHECK_PKT_LARGER:
 7866|    494|{
 7867|    494|    char *value;
 7868|    494|    char *delim;
 7869|    494|    char *key;
 7870|    494|    char *error = set_field_split_str(arg, &key, &value, &delim);
 7871|    494|    if (error) {
  ------------------
  |  Branch (7871:9): [True: 4, False: 490]
  ------------------
 7872|      4|        return error;
 7873|      4|    }
 7874|       |
 7875|    490|    delim[0] = '\0';
 7876|    490|    if (value[strlen(value) - 1] == ')') {
  ------------------
  |  Branch (7876:9): [True: 270, False: 220]
  ------------------
 7877|    270|        value[strlen(value) - 1] = '\0';
 7878|    270|    }
 7879|    490|    struct mf_subfield dst;
 7880|    490|    error = mf_parse_subfield(&dst, key);
 7881|    490|    if (error) {
  ------------------
  |  Branch (7881:9): [True: 26, False: 464]
  ------------------
 7882|     26|        return error;
 7883|     26|    }
 7884|       |
 7885|    464|    if (dst.n_bits != 1) {
  ------------------
  |  Branch (7885:9): [True: 2, False: 462]
  ------------------
 7886|      2|        return xstrdup("Only 1-bit destination field is allowed");
 7887|      2|    }
 7888|       |
 7889|    462|    struct ofpact_check_pkt_larger *check_pkt_larger =
 7890|    462|        ofpact_put_CHECK_PKT_LARGER(pp->ofpacts);
 7891|    462|    error = str_to_u16(value, NULL, &check_pkt_larger->pkt_len);
 7892|    462|    if (error) {
  ------------------
  |  Branch (7892:9): [True: 1, False: 461]
  ------------------
 7893|      1|        return error;
 7894|      1|    }
 7895|    461|    check_pkt_larger->dst = dst;
 7896|       |    return NULL;
 7897|    462|}
ofp-actions.c:parse_DEBUG_RECIRC:
 6596|  1.48k|{
 6597|  1.48k|    ofpact_put_DEBUG_RECIRC(pp->ofpacts);
 6598|       |    return NULL;
 6599|  1.48k|}
ofp-actions.c:parse_DEBUG_SLOW:
 6636|  2.00k|{
 6637|  2.00k|    ofpact_put_DEBUG_SLOW(pp->ofpacts);
 6638|       |    return NULL;
 6639|  2.00k|}
ofp-actions.c:parse_METER:
 7585|    581|{
 7586|    581|    *pp->usable_protocols &= OFPUTIL_P_OF13_UP;
  ------------------
  |  |   95|    581|#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
  |  |  ------------------
  |  |  |  |   96|    581|#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|    581|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7587|    581|    return str_to_u32(arg, &ofpact_put_METER(pp->ofpacts)->meter_id);
 7588|    581|}
ofp-actions.c:parse_CLEAR_ACTIONS:
 7620|    204|{
 7621|    204|    ofpact_put_CLEAR_ACTIONS(pp->ofpacts);
 7622|       |    return NULL;
 7623|    204|}
ofp-actions.c:parse_WRITE_ACTIONS:
 7658|    911|{
 7659|    911|    size_t ofs = ofpacts_pull(pp->ofpacts);
 7660|    911|    struct ofpact_nest *on;
 7661|    911|    char *error;
 7662|       |
 7663|       |    /* Add a Write-Actions instruction and then pull it off. */
 7664|    911|    ofpact_put(pp->ofpacts, OFPACT_WRITE_ACTIONS, sizeof *on);
 7665|    911|    ofpbuf_pull(pp->ofpacts, sizeof *on);
 7666|       |
 7667|       |    /* Parse nested actions.
 7668|       |     *
 7669|       |     * We pulled off "write-actions" and the previous actions because the
 7670|       |     * OFPACT_WRITE_ACTIONS is only partially constructed: its length is such
 7671|       |     * that it doesn't actually include the nested actions.  That means that
 7672|       |     * ofpacts_parse() would reject them as being part of an Apply-Actions that
 7673|       |     * follows a Write-Actions, which is an invalid order.  */
 7674|    911|    error = ofpacts_parse(arg, pp, false, OFPACT_WRITE_ACTIONS);
 7675|       |
 7676|       |    /* Put the Write-Actions back on and update its length. */
 7677|    911|    on = ofpbuf_push_uninit(pp->ofpacts, sizeof *on);
 7678|    911|    on->ofpact.len = pp->ofpacts->size;
 7679|       |
 7680|       |    /* Put any previous actions or instructions back on. */
 7681|    911|    ofpbuf_push_uninit(pp->ofpacts, ofs);
 7682|       |
 7683|    911|    return error;
 7684|    911|}
ofp-actions.c:parse_WRITE_METADATA:
 7758|    585|{
 7759|    585|    struct ofpact_metadata *om;
 7760|    585|    char *mask = strchr(arg, '/');
 7761|       |
 7762|    585|    *pp->usable_protocols &= OFPUTIL_P_NXM_OF11_UP;
  ------------------
  |  |   87|    585|#define OFPUTIL_P_NXM_OF11_UP (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_OF11_STD | \
  |  |  ------------------
  |  |  |  |   59|    585|#define OFPUTIL_P_OF10_NXM_ANY (OFPUTIL_P_OF10_NXM | OFPUTIL_P_OF10_NXM_TID)
  |  |  ------------------
  |  |   88|    585|                               OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|    585|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|    585|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|    585|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|    585|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 7763|       |
 7764|    585|    om = ofpact_put_WRITE_METADATA(pp->ofpacts);
 7765|    585|    if (mask) {
  ------------------
  |  Branch (7765:9): [True: 282, False: 303]
  ------------------
 7766|    282|        char *error;
 7767|       |
 7768|    282|        *mask = '\0';
 7769|    282|        error = str_to_be64(mask + 1, &om->mask);
 7770|    282|        if (error) {
  ------------------
  |  Branch (7770:13): [True: 3, False: 279]
  ------------------
 7771|      3|            return error;
 7772|      3|        }
 7773|    303|    } else {
 7774|    303|        om->mask = OVS_BE64_MAX;
  ------------------
  |  |   44|    303|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
 7775|    303|    }
 7776|       |
 7777|    582|    return str_to_be64(arg, &om->metadata);
 7778|    585|}
ofp-actions.c:parse_GOTO_TABLE:
 7939|    213|{
 7940|    213|    struct ofpact_goto_table *ogt = ofpact_put_GOTO_TABLE(pp->ofpacts);
 7941|    213|    if (!ofputil_table_from_string(arg, pp->table_map, &ogt->table_id)) {
  ------------------
  |  Branch (7941:9): [True: 4, False: 209]
  ------------------
 7942|      4|        return xasprintf("unknown table \"%s\"", arg);
 7943|      4|    }
 7944|    209|    return NULL;
 7945|    213|}
ofp-actions.c:parse_set_vlan_vid:
 1613|  2.00k|{
 1614|  2.00k|    struct ofpact_vlan_vid *vlan_vid;
 1615|  2.00k|    uint16_t vid;
 1616|  2.00k|    char *error;
 1617|       |
 1618|  2.00k|    error = str_to_u16(arg, "VLAN VID", &vid);
 1619|  2.00k|    if (error) {
  ------------------
  |  Branch (1619:9): [True: 4, False: 2.00k]
  ------------------
 1620|      4|        return error;
 1621|      4|    }
 1622|       |
 1623|  2.00k|    if (vid & ~VLAN_VID_MASK) {
  ------------------
  |  |  494|  2.00k|#define VLAN_VID_MASK 0x0fff
  ------------------
  |  Branch (1623:9): [True: 8, False: 1.99k]
  ------------------
 1624|      8|        return xasprintf("%s: not a valid VLAN VID", arg);
 1625|      8|    }
 1626|  1.99k|    vlan_vid = ofpact_put_SET_VLAN_VID(pp->ofpacts);
 1627|  1.99k|    vlan_vid->vlan_vid = vid;
 1628|  1.99k|    vlan_vid->push_vlan_if_needed = push_vlan_if_needed;
 1629|       |    return NULL;
 1630|  2.00k|}
ofp-actions.c:parse_set_vlan_pcp:
 1721|  1.65k|{
 1722|  1.65k|    struct ofpact_vlan_pcp *vlan_pcp;
 1723|  1.65k|    uint8_t pcp;
 1724|  1.65k|    char *error;
 1725|       |
 1726|  1.65k|    error = str_to_u8(arg, "VLAN PCP", &pcp);
 1727|  1.65k|    if (error) {
  ------------------
  |  Branch (1727:9): [True: 14, False: 1.63k]
  ------------------
 1728|     14|        return error;
 1729|     14|    }
 1730|       |
 1731|  1.63k|    if (pcp & ~7) {
  ------------------
  |  Branch (1731:9): [True: 3, False: 1.63k]
  ------------------
 1732|      3|        return xasprintf("%s: not a valid VLAN PCP", arg);
 1733|      3|    }
 1734|  1.63k|    vlan_pcp = ofpact_put_SET_VLAN_PCP(pp->ofpacts);
 1735|  1.63k|    vlan_pcp->vlan_pcp = pcp;
 1736|  1.63k|    vlan_pcp->push_vlan_if_needed = push_vlan_if_needed;
 1737|       |    return NULL;
 1738|  1.63k|}
ofp-actions.c:parse_SET_IP_TTL:
 2271|  1.66k|{
 2272|  1.66k|    uint8_t ttl;
 2273|  1.66k|    char *error;
 2274|       |
 2275|  1.66k|    error = str_to_u8(arg, "TTL", &ttl);
 2276|  1.66k|    if (error) {
  ------------------
  |  Branch (2276:9): [True: 24, False: 1.63k]
  ------------------
 2277|     24|        return error;
 2278|     24|    }
 2279|       |
 2280|  1.63k|    ofpact_put_SET_IP_TTL(pp->ofpacts)->ttl = ttl;
 2281|       |    return NULL;
 2282|  1.66k|}
ofp-actions.c:parse_pop_vlan:
 1808|  1.63k|{
 1809|  1.63k|    ofpact_put_STRIP_VLAN(pp->ofpacts)->ofpact.raw = OFPAT_RAW11_POP_VLAN;
 1810|       |    return NULL;
 1811|  1.63k|}
ofp-actions.c:parse_set_tunnel:
 4150|  1.54k|{
 4151|  1.54k|    struct ofpact_tunnel *tunnel;
 4152|       |
 4153|  1.54k|    tunnel = ofpact_put_SET_TUNNEL(pp->ofpacts);
 4154|  1.54k|    tunnel->ofpact.raw = raw;
 4155|  1.54k|    return str_to_u64(arg, &tunnel->tun_id);
 4156|  1.54k|}
ofp-actions.c:parse_reg_load:
 3280|    723|{
 3281|    723|    struct mf_subfield dst;
 3282|    723|    char *key, *value_str;
 3283|    723|    union mf_value value;
 3284|    723|    char *error;
 3285|       |
 3286|    723|    error = set_field_split_str(arg, &key, &value_str, NULL);
 3287|    723|    if (error) {
  ------------------
  |  Branch (3287:9): [True: 2, False: 721]
  ------------------
 3288|      2|        return error;
 3289|      2|    }
 3290|       |
 3291|    721|    error = mf_parse_subfield(&dst, key);
 3292|    721|    if (error) {
  ------------------
  |  Branch (3292:9): [True: 6, False: 715]
  ------------------
 3293|      6|        return error;
 3294|      6|    }
 3295|       |
 3296|    715|    if (parse_int_string(value_str, (uint8_t *)&value, dst.field->n_bytes,
  ------------------
  |  Branch (3296:9): [True: 1, False: 714]
  ------------------
 3297|    715|                         &key)) {
 3298|      1|        return xasprintf("%s: cannot parse integer value", arg);
 3299|      1|    }
 3300|       |
 3301|    714|    if (!bitwise_is_all_zeros(&value, dst.field->n_bytes, dst.n_bits,
  ------------------
  |  Branch (3301:9): [True: 1, False: 713]
  ------------------
 3302|    714|                              dst.field->n_bytes * 8 - dst.n_bits)) {
 3303|      1|        struct ds ds;
 3304|       |
 3305|      1|        ds_init(&ds);
 3306|      1|        mf_format(dst.field, &value, NULL, NULL, &ds);
 3307|      1|        error = xasprintf("%s: value %s does not fit into %d bits",
 3308|      1|                          arg, ds_cstr(&ds), dst.n_bits);
 3309|      1|        ds_destroy(&ds);
 3310|      1|        return error;
 3311|      1|    }
 3312|       |
 3313|    713|    struct ofpact_set_field *sf = ofpact_put_reg_load(pp->ofpacts, dst.field,
 3314|    713|                                                      NULL, NULL);
 3315|       |
 3316|    713|    bitwise_copy(&value, dst.field->n_bytes, 0, sf->value,
 3317|    713|                 dst.field->n_bytes, dst.ofs, dst.n_bits);
 3318|    713|    bitwise_one(ofpact_set_field_mask(sf), dst.field->n_bytes, dst.ofs,
  ------------------
  |  |  563|    713|    ALIGNED_CAST(union mf_value *,                                          \
  |  |  ------------------
  |  |  |  |  434|    713|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  |  |  ------------------
  |  |  564|    713|                 (uint8_t *)(SF)->value +                                   \
  |  |  565|    713|                            ROUND_UP((SF)->field->n_bytes, OFPACT_ALIGNTO))
  ------------------
 3319|    713|                dst.n_bits);
 3320|       |    return NULL;
 3321|    714|}
ofp-actions.c:parse_bundle_load:
 1538|     22|{
 1539|     22|    return bundle_parse_load(arg, pp->port_map, pp->ofpacts);
 1540|     22|}

ofp-actions.c:put_OFPAT10_OUTPUT:
 4266|  70.2k|put_OFPAT10_OUTPUT(struct ofpbuf *openflow){
 4267|  70.2k|    return ofpact_put_raw(openflow, 1, OFPAT_RAW10_OUTPUT, 0);
 4268|  70.2k|}
ofp-actions.c:put_OFPAT11_OUTPUT:
 4271|  22.3k|put_OFPAT11_OUTPUT(struct ofpbuf *openflow){
 4272|  22.3k|    return ofpact_put_raw(openflow, 2, OFPAT_RAW11_OUTPUT, 0);
 4273|  22.3k|}
ofp-actions.c:put_OFPAT_GROUP:
 4391|    215|put_OFPAT_GROUP(struct ofpbuf *openflow, enum ofp_version version, uint32_t arg){
 4392|    215|    ofpact_put_raw(openflow, version, OFPAT_RAW_GROUP, arg);
 4393|    215|}
ofp-actions.c:put_NXAST_CONTROLLER2:
 4536|  6.94k|put_NXAST_CONTROLLER2(struct ofpbuf *openflow){
 4537|  6.94k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CONTROLLER2, 0);
 4538|  6.94k|}
ofp-actions.c:put_NXAST_CONTROLLER:
 4531|    454|put_NXAST_CONTROLLER(struct ofpbuf *openflow){
 4532|    454|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CONTROLLER, 0);
 4533|    454|}
ofp-actions.c:put_OFPAT10_ENQUEUE:
 4351|    373|put_OFPAT10_ENQUEUE(struct ofpbuf *openflow){
 4352|    373|    return ofpact_put_raw(openflow, 1, OFPAT_RAW10_ENQUEUE, 0);
 4353|    373|}
ofp-actions.c:put_OFPAT_SET_QUEUE:
 4386|  1.31k|put_OFPAT_SET_QUEUE(struct ofpbuf *openflow, enum ofp_version version, uint32_t arg){
 4387|  1.31k|    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_QUEUE, arg);
 4388|  1.31k|}
ofp-actions.c:put_NXAST_POP_QUEUE:
 4476|  1.49k|put_NXAST_POP_QUEUE(struct ofpbuf *openflow){
 4477|  1.49k|    ofpact_put_raw(openflow, 1, NXAST_RAW_POP_QUEUE, 0);
 4478|  1.49k|}
ofp-actions.c:put_NXAST_OUTPUT_REG2:
 4506|    373|put_NXAST_OUTPUT_REG2(struct ofpbuf *openflow){
 4507|    373|    return ofpact_put_raw(openflow, 1, NXAST_RAW_OUTPUT_REG2, 0);
 4508|    373|}
ofp-actions.c:put_NXAST_OUTPUT_REG:
 4501|    229|put_NXAST_OUTPUT_REG(struct ofpbuf *openflow){
 4502|    229|    return ofpact_put_raw(openflow, 1, NXAST_RAW_OUTPUT_REG, 0);
 4503|    229|}
ofp-actions.c:put_NXAST_BUNDLE_LOAD:
 4496|      5|put_NXAST_BUNDLE_LOAD(struct ofpbuf *openflow){
 4497|      5|    return ofpact_put_raw(openflow, 1, NXAST_RAW_BUNDLE_LOAD, 0);
 4498|      5|}
ofp-actions.c:put_NXAST_BUNDLE:
 4491|  1.39k|put_NXAST_BUNDLE(struct ofpbuf *openflow){
 4492|  1.39k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_BUNDLE, 0);
 4493|  1.39k|}
ofp-actions.c:put_OFPAT12_SET_FIELD:
 4411|  7.16k|put_OFPAT12_SET_FIELD(struct ofpbuf *openflow){
 4412|  7.16k|    return ofpact_put_raw(openflow, 3, OFPAT_RAW12_SET_FIELD, 0);
 4413|  7.16k|}
ofp-actions.c:put_NXAST_REG_LOAD2:
 4426|  9.62k|put_NXAST_REG_LOAD2(struct ofpbuf *openflow){
 4427|  9.62k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_REG_LOAD2, 0);
 4428|  9.62k|}
ofp-actions.c:put_NXAST_REG_LOAD:
 4421|   109k|put_NXAST_REG_LOAD(struct ofpbuf *openflow){
 4422|   109k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_REG_LOAD, 0);
 4423|   109k|}
ofp-actions.c:put_OFPAT10_SET_VLAN_VID:
 4276|  1.16k|put_OFPAT10_SET_VLAN_VID(struct ofpbuf *openflow, uint16_t arg){
 4277|  1.16k|    ofpact_put_raw(openflow, 1, OFPAT_RAW10_SET_VLAN_VID, arg);
 4278|  1.16k|}
ofp-actions.c:put_OFPAT10_SET_VLAN_PCP:
 4281|    790|put_OFPAT10_SET_VLAN_PCP(struct ofpbuf *openflow, uint8_t arg){
 4282|    790|    ofpact_put_raw(openflow, 1, OFPAT_RAW10_SET_VLAN_PCP, arg);
 4283|    790|}
ofp-actions.c:put_OFPAT10_STRIP_VLAN:
 4301|  1.46k|put_OFPAT10_STRIP_VLAN(struct ofpbuf *openflow){
 4302|  1.46k|    ofpact_put_raw(openflow, 1, OFPAT_RAW10_STRIP_VLAN, 0);
 4303|  1.46k|}
ofp-actions.c:put_OFPAT11_PUSH_VLAN:
 4296|  1.17k|put_OFPAT11_PUSH_VLAN(struct ofpbuf *openflow, ovs_be16 arg){
 4297|       |    ofpact_put_raw(openflow, 2, OFPAT_RAW11_PUSH_VLAN, ntohs(arg));
 4298|  1.17k|}
ofp-actions.c:put_OFPAT11_SET_VLAN_VID:
 4286|  1.00k|put_OFPAT11_SET_VLAN_VID(struct ofpbuf *openflow, uint16_t arg){
 4287|  1.00k|    ofpact_put_raw(openflow, 2, OFPAT_RAW11_SET_VLAN_VID, arg);
 4288|  1.00k|}
ofp-actions.c:put_OFPAT11_SET_VLAN_PCP:
 4291|  1.04k|put_OFPAT11_SET_VLAN_PCP(struct ofpbuf *openflow, uint8_t arg){
 4292|  1.04k|    ofpact_put_raw(openflow, 2, OFPAT_RAW11_SET_VLAN_PCP, arg);
 4293|  1.04k|}
ofp-actions.c:put_OFPAT11_POP_VLAN:
 4306|  1.09k|put_OFPAT11_POP_VLAN(struct ofpbuf *openflow){
 4307|  1.09k|    ofpact_put_raw(openflow, 2, OFPAT_RAW11_POP_VLAN, 0);
 4308|  1.09k|}
ofp-actions.c:put_OFPAT_SET_DL_SRC:
 4311|     66|put_OFPAT_SET_DL_SRC(struct ofpbuf *openflow, enum ofp_version version){
 4312|     66|    return ofpact_put_raw(openflow, version, OFPAT_RAW_SET_DL_SRC, 0);
 4313|     66|}
ofp-actions.c:put_OFPAT_SET_DL_DST:
 4316|     66|put_OFPAT_SET_DL_DST(struct ofpbuf *openflow, enum ofp_version version){
 4317|     66|    return ofpact_put_raw(openflow, version, OFPAT_RAW_SET_DL_DST, 0);
 4318|     66|}
ofp-actions.c:put_OFPAT_SET_NW_SRC:
 4321|    194|put_OFPAT_SET_NW_SRC(struct ofpbuf *openflow, enum ofp_version version, ovs_be32 arg){
 4322|       |    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_NW_SRC, ntohl(arg));
 4323|    194|}
ofp-actions.c:put_OFPAT_SET_NW_DST:
 4326|    194|put_OFPAT_SET_NW_DST(struct ofpbuf *openflow, enum ofp_version version, ovs_be32 arg){
 4327|       |    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_NW_DST, ntohl(arg));
 4328|    194|}
ofp-actions.c:put_OFPAT_SET_NW_TOS:
 4331|  1.29k|put_OFPAT_SET_NW_TOS(struct ofpbuf *openflow, enum ofp_version version, uint8_t arg){
 4332|  1.29k|    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_NW_TOS, arg);
 4333|  1.29k|}
ofp-actions.c:put_OFPAT_SET_TP_SRC:
 4341|    487|put_OFPAT_SET_TP_SRC(struct ofpbuf *openflow, ovs_be16 arg){
 4342|       |    ofpact_put_raw(openflow, 1, OFPAT_RAW_SET_TP_SRC, ntohs(arg));
 4343|    487|}
ofp-actions.c:put_OFPAT_SET_TP_DST:
 4346|    338|put_OFPAT_SET_TP_DST(struct ofpbuf *openflow, ovs_be16 arg){
 4347|       |    ofpact_put_raw(openflow, 1, OFPAT_RAW_SET_TP_DST, ntohs(arg));
 4348|    338|}
ofp-actions.c:put_OFPAT11_SET_NW_ECN:
 4336|    398|put_OFPAT11_SET_NW_ECN(struct ofpbuf *openflow, uint8_t arg){
 4337|    398|    ofpact_put_raw(openflow, 2, OFPAT_RAW11_SET_NW_ECN, arg);
 4338|    398|}
ofp-actions.c:put_OFPAT11_SET_NW_TTL:
 4396|    283|put_OFPAT11_SET_NW_TTL(struct ofpbuf *openflow, uint8_t arg){
 4397|    283|    ofpact_put_raw(openflow, 2, OFPAT_RAW11_SET_NW_TTL, arg);
 4398|    283|}
ofp-actions.c:put_NXAST_REG_MOVE:
 4441|    509|put_NXAST_REG_MOVE(struct ofpbuf *openflow){
 4442|    509|    return ofpact_put_raw(openflow, 1, NXAST_RAW_REG_MOVE, 0);
 4443|    509|}
ofp-actions.c:put_NXAST_STACK_PUSH:
 4546|    365|put_NXAST_STACK_PUSH(struct ofpbuf *openflow){
 4547|    365|    return ofpact_put_raw(openflow, 1, NXAST_RAW_STACK_PUSH, 0);
 4548|    365|}
ofp-actions.c:put_NXAST_STACK_POP:
 4551|  1.72k|put_NXAST_STACK_POP(struct ofpbuf *openflow){
 4552|  1.72k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_STACK_POP, 0);
 4553|  1.72k|}
ofp-actions.c:put_NXAST_DEC_TTL_CNT_IDS:
 4406|  2.63k|put_NXAST_DEC_TTL_CNT_IDS(struct ofpbuf *openflow){
 4407|  2.63k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_DEC_TTL_CNT_IDS, 0);
 4408|  2.63k|}
ofp-actions.c:put_OFPAT_DEC_NW_TTL:
 4401|    748|put_OFPAT_DEC_NW_TTL(struct ofpbuf *openflow, enum ofp_version version){
 4402|    748|    ofpact_put_raw(openflow, version, OFPAT_RAW_DEC_NW_TTL, 0);
 4403|    748|}
ofp-actions.c:put_OFPAT_SET_MPLS_LABEL:
 4356|    956|put_OFPAT_SET_MPLS_LABEL(struct ofpbuf *openflow, enum ofp_version version, ovs_be32 arg){
 4357|       |    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_MPLS_LABEL, ntohl(arg));
 4358|    956|}
ofp-actions.c:put_OFPAT_SET_MPLS_TC:
 4361|    786|put_OFPAT_SET_MPLS_TC(struct ofpbuf *openflow, enum ofp_version version, uint8_t arg){
 4362|    786|    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_MPLS_TC, arg);
 4363|    786|}
ofp-actions.c:put_OFPAT_SET_MPLS_TTL:
 4366|  2.05k|put_OFPAT_SET_MPLS_TTL(struct ofpbuf *openflow, enum ofp_version version, uint8_t arg){
 4367|  2.05k|    ofpact_put_raw(openflow, version, OFPAT_RAW_SET_MPLS_TTL, arg);
 4368|  2.05k|}
ofp-actions.c:put_OFPAT_DEC_MPLS_TTL:
 4371|  2.73k|put_OFPAT_DEC_MPLS_TTL(struct ofpbuf *openflow, enum ofp_version version){
 4372|  2.73k|    ofpact_put_raw(openflow, version, OFPAT_RAW_DEC_MPLS_TTL, 0);
 4373|  2.73k|}
ofp-actions.c:put_OFPAT_PUSH_MPLS:
 4376|    654|put_OFPAT_PUSH_MPLS(struct ofpbuf *openflow, enum ofp_version version, ovs_be16 arg){
 4377|       |    ofpact_put_raw(openflow, version, OFPAT_RAW_PUSH_MPLS, ntohs(arg));
 4378|    654|}
ofp-actions.c:put_OFPAT_POP_MPLS:
 4381|  2.17k|put_OFPAT_POP_MPLS(struct ofpbuf *openflow, enum ofp_version version, ovs_be16 arg){
 4382|       |    ofpact_put_raw(openflow, version, OFPAT_RAW_POP_MPLS, ntohs(arg));
 4383|  2.17k|}
ofp-actions.c:put_NXAST_DEC_NSH_TTL:
 4616|    518|put_NXAST_DEC_NSH_TTL(struct ofpbuf *openflow){
 4617|    518|    ofpact_put_raw(openflow, 4, NXAST_RAW_DEC_NSH_TTL, 0);
 4618|    518|}
ofp-actions.c:put_NXAST_DELETE_FIELD:
 4626|    244|put_NXAST_DELETE_FIELD(struct ofpbuf *openflow){
 4627|    244|    return ofpact_put_raw(openflow, 1, NXAST_RAW_DELETE_FIELD, 0);
 4628|    244|}
ofp-actions.c:put_NXAST_ENCAP:
 4606|  1.18k|put_NXAST_ENCAP(struct ofpbuf *openflow){
 4607|  1.18k|    return ofpact_put_raw(openflow, 4, NXAST_RAW_ENCAP, 0);
 4608|  1.18k|}
ofp-actions.c:put_NXAST_DECAP:
 4611|  2.64k|put_NXAST_DECAP(struct ofpbuf *openflow){
 4612|  2.64k|    return ofpact_put_raw(openflow, 4, NXAST_RAW_DECAP, 0);
 4613|  2.64k|}
ofp-actions.c:put_NXAST_SET_TUNNEL:
 4466|    366|put_NXAST_SET_TUNNEL(struct ofpbuf *openflow, uint32_t arg){
 4467|    366|    ofpact_put_raw(openflow, 1, NXAST_RAW_SET_TUNNEL, arg);
 4468|    366|}
ofp-actions.c:put_NXAST_SET_TUNNEL64:
 4471|    522|put_NXAST_SET_TUNNEL64(struct ofpbuf *openflow, uint64_t arg){
 4472|    522|    ofpact_put_raw(openflow, 1, NXAST_RAW_SET_TUNNEL64, arg);
 4473|    522|}
ofp-actions.c:put_NXAST_FIN_TIMEOUT:
 4526|    608|put_NXAST_FIN_TIMEOUT(struct ofpbuf *openflow){
 4527|    608|    return ofpact_put_raw(openflow, 1, NXAST_RAW_FIN_TIMEOUT, 0);
 4528|    608|}
ofp-actions.c:put_NXAST_RESUBMIT_TABLE_CT:
 4461|    483|put_NXAST_RESUBMIT_TABLE_CT(struct ofpbuf *openflow){
 4462|    483|    return ofpact_put_raw(openflow, 1, NXAST_RAW_RESUBMIT_TABLE_CT, 0);
 4463|    483|}
ofp-actions.c:put_NXAST_RESUBMIT_TABLE:
 4456|    663|put_NXAST_RESUBMIT_TABLE(struct ofpbuf *openflow){
 4457|    663|    return ofpact_put_raw(openflow, 1, NXAST_RAW_RESUBMIT_TABLE, 0);
 4458|    663|}
ofp-actions.c:put_NXAST_LEARN2:
 4516|  1.08k|put_NXAST_LEARN2(struct ofpbuf *openflow){
 4517|  1.08k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_LEARN2, 0);
 4518|  1.08k|}
ofp-actions.c:put_NXAST_LEARN:
 4511|  32.6k|put_NXAST_LEARN(struct ofpbuf *openflow){
 4512|  32.6k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_LEARN, 0);
 4513|  32.6k|}
ofp-actions.c:put_NXAST_CONJUNCTION:
 4576|    211|put_NXAST_CONJUNCTION(struct ofpbuf *openflow){
 4577|    211|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CONJUNCTION, 0);
 4578|    211|}
ofp-actions.c:put_NXAST_MULTIPATH:
 4486|    382|put_NXAST_MULTIPATH(struct ofpbuf *openflow){
 4487|    382|    return ofpact_put_raw(openflow, 1, NXAST_RAW_MULTIPATH, 0);
 4488|    382|}
ofp-actions.c:put_NXAST_NOTE:
 4481|  2.18k|put_NXAST_NOTE(struct ofpbuf *openflow){
 4482|  2.18k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_NOTE, 0);
 4483|  2.18k|}
ofp-actions.c:put_NXAST_EXIT:
 4521|  1.34k|put_NXAST_EXIT(struct ofpbuf *openflow){
 4522|  1.34k|    ofpact_put_raw(openflow, 1, NXAST_RAW_EXIT, 0);
 4523|  1.34k|}
ofp-actions.c:put_NXAST_SAMPLE4:
 4571|    467|put_NXAST_SAMPLE4(struct ofpbuf *openflow){
 4572|    467|    return ofpact_put_raw(openflow, 1, NXAST_RAW_SAMPLE4, 0);
 4573|    467|}
ofp-actions.c:put_NXAST_SAMPLE3:
 4566|    303|put_NXAST_SAMPLE3(struct ofpbuf *openflow){
 4567|    303|    return ofpact_put_raw(openflow, 1, NXAST_RAW_SAMPLE3, 0);
 4568|    303|}
ofp-actions.c:put_NXAST_SAMPLE2:
 4561|    211|put_NXAST_SAMPLE2(struct ofpbuf *openflow){
 4562|    211|    return ofpact_put_raw(openflow, 1, NXAST_RAW_SAMPLE2, 0);
 4563|    211|}
ofp-actions.c:put_NXAST_SAMPLE:
 4556|    457|put_NXAST_SAMPLE(struct ofpbuf *openflow){
 4557|    457|    return ofpact_put_raw(openflow, 1, NXAST_RAW_SAMPLE, 0);
 4558|    457|}
ofp-actions.c:put_NXAST_CT:
 4581|  7.29k|put_NXAST_CT(struct ofpbuf *openflow){
 4582|  7.29k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CT, 0);
 4583|  7.29k|}
ofp-actions.c:put_NXAST_CT_CLEAR:
 4601|  1.31k|put_NXAST_CT_CLEAR(struct ofpbuf *openflow){
 4602|  1.31k|    ofpact_put_raw(openflow, 1, NXAST_RAW_CT_CLEAR, 0);
 4603|  1.31k|}
ofp-actions.c:put_NXAST_NAT:
 4586|  5.58k|put_NXAST_NAT(struct ofpbuf *openflow){
 4587|  5.58k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_NAT, 0);
 4588|  5.58k|}
ofp-actions.c:put_NXAST_OUTPUT_TRUNC:
 4591|    692|put_NXAST_OUTPUT_TRUNC(struct ofpbuf *openflow){
 4592|    692|    return ofpact_put_raw(openflow, 1, NXAST_RAW_OUTPUT_TRUNC, 0);
 4593|    692|}
ofp-actions.c:put_NXAST_CLONE:
 4596|  6.56k|put_NXAST_CLONE(struct ofpbuf *openflow){
 4597|  6.56k|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CLONE, 0);
 4598|  6.56k|}
ofp-actions.c:put_NXAST_CHECK_PKT_LARGER:
 4621|    345|put_NXAST_CHECK_PKT_LARGER(struct ofpbuf *openflow){
 4622|    345|    return ofpact_put_raw(openflow, 1, NXAST_RAW_CHECK_PKT_LARGER, 0);
 4623|    345|}
ofp-actions.c:put_NXAST_DEBUG_RECIRC:
 4636|  1.17k|put_NXAST_DEBUG_RECIRC(struct ofpbuf *openflow){
 4637|  1.17k|    ofpact_put_raw(openflow, 1, NXAST_RAW_DEBUG_RECIRC, 0);
 4638|  1.17k|}
ofp-actions.c:put_NXAST_DEBUG_SLOW:
 4631|  1.98k|put_NXAST_DEBUG_SLOW(struct ofpbuf *openflow){
 4632|  1.98k|    ofpact_put_raw(openflow, 1, NXAST_RAW_DEBUG_SLOW, 0);
 4633|  1.98k|}
ofp-actions.c:put_NXAST_WRITE_METADATA:
 4541|      3|put_NXAST_WRITE_METADATA(struct ofpbuf *openflow){
 4542|      3|    return ofpact_put_raw(openflow, 1, NXAST_RAW_WRITE_METADATA, 0);
 4543|      3|}

encode_ed_prop:
   95|  1.08k|{
   96|  1.08k|    size_t prop_len;
   97|       |
   98|  1.08k|    switch ((*prop)->prop_class) {
   99|  1.08k|    case OFPPPC_NSH: {
  ------------------
  |  Branch (99:5): [True: 1.08k, False: 0]
  ------------------
  100|  1.08k|        switch ((*prop)->type) {
  101|  1.08k|        case OFPPPT_PROP_NSH_MDTYPE: {
  ------------------
  |  Branch (101:9): [True: 1.08k, False: 0]
  ------------------
  102|  1.08k|            struct ofpact_ed_prop_nsh_md_type *pnmt =
  103|  1.08k|                ALIGNED_CAST(struct ofpact_ed_prop_nsh_md_type *, *prop);
  ------------------
  |  |  434|  1.08k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  104|  1.08k|            struct ofp_ed_prop_nsh_md_type *opnmt =
  105|  1.08k|                    ofpbuf_put_uninit(out, sizeof(*opnmt));
  106|  1.08k|            opnmt->header.prop_class = htons((*prop)->prop_class);
  107|  1.08k|            opnmt->header.type = (*prop)->type;
  108|  1.08k|            opnmt->header.len =
  109|  1.08k|                    offsetof(struct ofp_ed_prop_nsh_md_type, pad);
  110|  1.08k|            opnmt->md_type = pnmt->md_type;
  111|  1.08k|            memset(opnmt->pad, 0, sizeof opnmt->pad);
  112|  1.08k|            prop_len = sizeof(*pnmt);
  113|  1.08k|            break;
  114|      0|        }
  115|      0|        case OFPPPT_PROP_NSH_TLV: {
  ------------------
  |  Branch (115:9): [True: 0, False: 1.08k]
  ------------------
  116|      0|            struct ofpact_ed_prop_nsh_tlv *pnt =
  117|      0|                ALIGNED_CAST(struct ofpact_ed_prop_nsh_tlv *, *prop);
  ------------------
  |  |  434|      0|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  118|      0|            struct ofp_ed_prop_nsh_tlv *opnt;
  119|      0|            size_t tlv_pad_len = ROUND_UP(pnt->tlv_len, 8);
  ------------------
  |  |  303|      0|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  120|      0|            size_t len = sizeof(*opnt) + tlv_pad_len;
  121|      0|            opnt = ofpbuf_put_uninit(out, len);
  122|      0|            opnt->header.prop_class = htons((*prop)->prop_class);
  123|      0|            opnt->header.type = (*prop)->type;
  124|      0|            opnt->header.len = len;
  125|      0|            opnt->tlv_class = pnt->tlv_class;
  126|      0|            opnt->tlv_type = pnt->tlv_type;
  127|      0|            opnt->tlv_len = pnt->tlv_len;
  128|      0|            memcpy(opnt->data, pnt->data, tlv_pad_len);
  129|      0|            prop_len = sizeof(*pnt) + tlv_pad_len;
  130|      0|            break;
  131|      0|        }
  132|      0|        default:
  ------------------
  |  Branch (132:9): [True: 0, False: 1.08k]
  ------------------
  133|      0|            return OFPERR_OFPBAC_BAD_ARGUMENT;
  134|  1.08k|        }
  135|  1.08k|        break;
  136|  1.08k|    }
  137|  1.08k|    default:
  ------------------
  |  Branch (137:5): [True: 0, False: 1.08k]
  ------------------
  138|      0|        return OFPERR_OFPBAC_BAD_ARGUMENT;
  139|  1.08k|    }
  140|       |
  141|  1.08k|    *prop = ALIGNED_CAST(const struct ofpact_ed_prop *,
  ------------------
  |  |  434|  1.08k|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  142|  1.08k|                         ((char *)(*prop) + prop_len));
  143|  1.08k|    return 0;
  144|  1.08k|}
parse_ed_prop_class:
  149|  1.79k|{
  150|  1.79k|    if (!strcmp(str,"basic")) {
  ------------------
  |  Branch (150:9): [True: 0, False: 1.79k]
  ------------------
  151|      0|        *prop_class = OFPPPC_BASIC;
  152|  1.79k|    } else if (!strcmp(str,"ethernet")) {
  ------------------
  |  Branch (152:16): [True: 357, False: 1.44k]
  ------------------
  153|    357|        *prop_class = OFPPPC_BASIC;
  154|  1.44k|    } else if (!strcmp(str,"mpls")) {
  ------------------
  |  Branch (154:16): [True: 390, False: 1.05k]
  ------------------
  155|    390|        *prop_class = OFPPPC_MPLS;
  156|  1.05k|    } else if (!strcmp(str,"mpls_mc")) {
  ------------------
  |  Branch (156:16): [True: 216, False: 835]
  ------------------
  157|    216|        *prop_class = OFPPPC_MPLS;
  158|    835|    } else if (!strcmp(str,"gre")) {
  ------------------
  |  Branch (158:16): [True: 0, False: 835]
  ------------------
  159|      0|        *prop_class = OFPPPC_GRE;
  160|    835|    } else if (!strcmp(str,"gtp")) {
  ------------------
  |  Branch (160:16): [True: 0, False: 835]
  ------------------
  161|      0|        *prop_class = OFPPPC_GTP;
  162|    835|    } else if (!strcmp(str,"nsh")) {
  ------------------
  |  Branch (162:16): [True: 835, False: 0]
  ------------------
  163|    835|        *prop_class = OFPPPC_NSH;
  164|    835|    } else {
  165|      0|        return false;
  166|      0|    }
  167|  1.79k|    return true;
  168|  1.79k|}
parse_ed_prop_type:
  174|  1.42k|{
  175|  1.42k|    switch (prop_class) {
  176|  1.42k|    case OFPPPC_NSH:
  ------------------
  |  Branch (176:5): [True: 1.42k, False: 3]
  ------------------
  177|  1.42k|        if (!strcmp(str, "md_type")) {
  ------------------
  |  Branch (177:13): [True: 1.38k, False: 33]
  ------------------
  178|  1.38k|            *type = OFPPPT_PROP_NSH_MDTYPE;
  179|  1.38k|            return true;
  180|  1.38k|        } else if (!strcmp(str, "tlv")) {
  ------------------
  |  Branch (180:20): [True: 2, False: 31]
  ------------------
  181|      2|            *type = OFPPPT_PROP_NSH_TLV;
  182|      2|            return true;
  183|     31|        } else {
  184|     31|            return false;
  185|     31|        }
  186|      3|    default:
  ------------------
  |  Branch (186:5): [True: 3, False: 1.42k]
  ------------------
  187|       |        return false;
  188|  1.42k|    }
  189|  1.42k|}
parse_ed_prop_value:
  201|  1.39k|{
  202|  1.39k|    char *error = NULL;
  203|       |
  204|  1.39k|    if (value == NULL || *value == '\0') {
  ------------------
  |  Branch (204:9): [True: 0, False: 1.39k]
  |  Branch (204:26): [True: 3, False: 1.38k]
  ------------------
  205|      3|        return xstrdup("Value missing for encap property");
  206|      3|    }
  207|       |
  208|  1.38k|    switch (prop_class) {
  209|  1.38k|    case OFPPPC_NSH:
  ------------------
  |  Branch (209:5): [True: 1.38k, False: 0]
  ------------------
  210|  1.38k|        switch (prop_type) {
  211|  1.38k|        case OFPPPT_PROP_NSH_MDTYPE: {
  ------------------
  |  Branch (211:9): [True: 1.38k, False: 1]
  ------------------
  212|       |            /* Format: "<md_type>:uint8_t". */
  213|  1.38k|            uint8_t md_type;
  214|  1.38k|            error = str_to_u8(value, "md_type", &md_type);
  215|  1.38k|            if (error != NULL) {
  ------------------
  |  Branch (215:17): [True: 1, False: 1.38k]
  ------------------
  216|      1|                return error;
  217|      1|            }
  218|  1.38k|            if (md_type < 1 || md_type > 2) {
  ------------------
  |  Branch (218:17): [True: 1, False: 1.38k]
  |  Branch (218:32): [True: 2, False: 1.38k]
  ------------------
  219|      3|                return xstrdup("invalid md_type");
  220|      3|            }
  221|  1.38k|            struct ofpact_ed_prop_nsh_md_type *pnmt =
  222|  1.38k|                    ofpbuf_put_uninit(out, sizeof(*pnmt));
  223|  1.38k|            pnmt->header.prop_class = prop_class;
  224|  1.38k|            pnmt->header.type = prop_type;
  225|  1.38k|            pnmt->header.len =
  226|  1.38k|                    offsetof(struct ofp_ed_prop_nsh_md_type, pad);
  227|  1.38k|            pnmt->md_type = md_type;
  228|  1.38k|            break;
  229|  1.38k|        }
  230|      1|        case OFPPPT_PROP_NSH_TLV: {
  ------------------
  |  Branch (230:9): [True: 1, False: 1.38k]
  ------------------
  231|       |            /* Format: "<class>:ovs_be16,<type>:uint8_t,<val>:hex_string" */
  232|      1|            struct ofpact_ed_prop_nsh_tlv *pnt;
  233|      1|            uint16_t tlv_class;
  234|      1|            uint8_t tlv_type;
  235|      1|            char buf[256];
  236|      1|            size_t tlv_value_len, padding;
  237|      1|            size_t start_ofs = out->size;
  238|       |
  239|      1|            if (!ovs_scan(value, "0x%"SCNx16",%"SCNu8",0x%251[0-9a-fA-F]",
  ------------------
  |  Branch (239:17): [True: 1, False: 0]
  ------------------
  240|      1|                          &tlv_class, &tlv_type, buf)) {
  241|      1|                return xasprintf("Invalid NSH TLV header: %s", value);
  242|      1|            }
  243|      0|            ofpbuf_put_uninit(out, sizeof(*pnt));
  244|      0|            ofpbuf_put_hex(out, buf, &tlv_value_len);
  245|      0|            pnt = ALIGNED_CAST(struct ofpact_ed_prop_nsh_tlv *,
  ------------------
  |  |  434|      0|#define ALIGNED_CAST(TYPE, ATTR) ((TYPE) (void *) (ATTR))
  ------------------
  246|      0|                               ((char *)out->data + start_ofs));
  247|      0|            padding = ROUND_UP(tlv_value_len, 8) - tlv_value_len;
  ------------------
  |  |  303|      0|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  248|      0|            pnt->header.prop_class = prop_class;
  249|      0|            pnt->header.type = prop_type;
  250|      0|            pnt->header.len = sizeof(*pnt) + tlv_value_len + padding;
  251|      0|            pnt->tlv_class = htons(tlv_class);
  252|      0|            pnt->tlv_type = tlv_type;
  253|      0|            pnt->tlv_len = tlv_value_len;
  254|      0|            if (padding > 0) {
  ------------------
  |  Branch (254:17): [True: 0, False: 0]
  ------------------
  255|      0|                ofpbuf_put_zeros(out, padding);
  256|      0|            }
  257|      0|            break;
  258|      1|        }
  259|      0|        default:
  ------------------
  |  Branch (259:9): [True: 0, False: 1.38k]
  ------------------
  260|       |            /* Unsupported property types rejected before. */
  261|      0|            OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  262|  1.38k|        }
  263|  1.38k|        break;
  264|  1.38k|    default:
  ------------------
  |  Branch (264:5): [True: 0, False: 1.38k]
  ------------------
  265|       |        /* Unsupported property classes rejected before. */
  266|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  267|  1.38k|    }
  268|       |
  269|  1.38k|    return NULL;
  270|  1.38k|}

ofperr_is_valid:
   76|  1.44k|{
   77|  1.44k|    return error >= OFPERR_OFS && error < OFPERR_OFS + OFPERR_N_ERRORS;
  ------------------
  |  |   52|  2.89k|#define OFPERR_OFS (1 << 30)
  ------------------
                  return error >= OFPERR_OFS && error < OFPERR_OFS + OFPERR_N_ERRORS;
  ------------------
  |  |   52|  1.44k|#define OFPERR_OFS (1 << 30)
  ------------------
                  return error >= OFPERR_OFS && error < OFPERR_OFS + OFPERR_N_ERRORS;
  ------------------
  |  |    3|  2.89k|#define OFPERR_N_ERRORS 198
  ------------------
  |  Branch (77:12): [True: 1.44k, False: 0]
  |  Branch (77:35): [True: 1.44k, False: 0]
  ------------------
   78|  1.44k|}
ofperr_get_name:
   98|    724|{
   99|    724|    return (ofperr_is_valid(error)
  ------------------
  |  Branch (99:13): [True: 724, False: 0]
  ------------------
  100|    724|            ? error_names[error - OFPERR_OFS]
  ------------------
  |  |   52|    724|#define OFPERR_OFS (1 << 30)
  ------------------
  101|    724|            : "<invalid>");
  102|    724|}
ofperr_to_string:
  361|    724|{
  362|    724|    return (ofperr_is_valid(error)
  ------------------
  |  Branch (362:13): [True: 724, False: 0]
  ------------------
  363|    724|            ? ofperr_get_name(error)
  364|    724|            : ovs_strerror(error));
  365|    724|}

ofputil_encode_flow_mod:
  374|  9.83k|{
  375|  9.83k|    enum ofp_version version = ofputil_protocol_to_ofp_version(protocol);
  376|  9.83k|    ovs_be16 raw_flags = ofputil_encode_flow_mod_flags(fm->flags, version);
  377|  9.83k|    struct ofpbuf *msg;
  378|       |
  379|  9.83k|    struct match match;
  380|  9.83k|    minimatch_expand(&fm->match, &match);
  381|       |
  382|  9.83k|    switch (protocol) {
  383|    193|    case OFPUTIL_P_OF11_STD:
  ------------------
  |  Branch (383:5): [True: 193, False: 9.63k]
  ------------------
  384|    309|    case OFPUTIL_P_OF12_OXM:
  ------------------
  |  Branch (384:5): [True: 116, False: 9.71k]
  ------------------
  385|    675|    case OFPUTIL_P_OF13_OXM:
  ------------------
  |  Branch (385:5): [True: 366, False: 9.46k]
  ------------------
  386|    675|    case OFPUTIL_P_OF14_OXM:
  ------------------
  |  Branch (386:5): [True: 0, False: 9.83k]
  ------------------
  387|    675|    case OFPUTIL_P_OF15_OXM: {
  ------------------
  |  Branch (387:5): [True: 0, False: 9.83k]
  ------------------
  388|    675|        struct ofp11_flow_mod *ofm;
  389|    675|        int tailroom;
  390|       |
  391|    675|        tailroom = ofputil_match_typical_len(protocol) + fm->ofpacts_len;
  392|    675|        msg = ofpraw_alloc(OFPRAW_OFPT11_FLOW_MOD, version, tailroom);
  393|    675|        ofm = ofpbuf_put_zeros(msg, sizeof *ofm);
  394|    675|        if ((protocol == OFPUTIL_P_OF11_STD
  ------------------
  |  Branch (394:14): [True: 193, False: 482]
  ------------------
  395|    193|             && (fm->command == OFPFC_MODIFY ||
  ------------------
  |  Branch (395:18): [True: 36, False: 157]
  ------------------
  396|    157|                 fm->command == OFPFC_MODIFY_STRICT)
  ------------------
  |  Branch (396:18): [True: 75, False: 82]
  ------------------
  397|    111|             && fm->cookie_mask == htonll(0))
  ------------------
  |  Branch (397:17): [True: 57, False: 54]
  ------------------
  398|    618|            || fm->command == OFPFC_ADD) {
  ------------------
  |  Branch (398:16): [True: 182, False: 436]
  ------------------
  399|    239|            ofm->cookie = fm->new_cookie;
  400|    436|        } else {
  401|    436|            ofm->cookie = fm->cookie & fm->cookie_mask;
  402|    436|        }
  403|    675|        ofm->cookie_mask = fm->cookie_mask;
  404|    675|        if (fm->table_id != OFPTT_ALL
  ------------------
  |  Branch (404:13): [True: 1, False: 674]
  ------------------
  405|    674|            || (protocol != OFPUTIL_P_OF11_STD
  ------------------
  |  Branch (405:17): [True: 482, False: 192]
  ------------------
  406|    482|                && (fm->command == OFPFC_DELETE ||
  ------------------
  |  Branch (406:21): [True: 4, False: 478]
  ------------------
  407|    478|                    fm->command == OFPFC_DELETE_STRICT))) {
  ------------------
  |  Branch (407:21): [True: 5, False: 473]
  ------------------
  408|     10|            ofm->table_id = fm->table_id;
  409|    665|        } else {
  410|    665|            ofm->table_id = 0;
  411|    665|        }
  412|    675|        ofm->command = fm->command;
  413|    675|        ofm->idle_timeout = htons(fm->idle_timeout);
  414|    675|        ofm->hard_timeout = htons(fm->hard_timeout);
  415|    675|        ofm->priority = htons(fm->priority);
  416|    675|        ofm->buffer_id = htonl(fm->buffer_id);
  417|    675|        ofm->out_port = ofputil_port_to_ofp11(fm->out_port);
  418|    675|        ofm->out_group = htonl(fm->out_group);
  419|    675|        ofm->flags = raw_flags;
  420|    675|        if (version >= OFP14_VERSION && fm->command == OFPFC_ADD) {
  ------------------
  |  Branch (420:13): [True: 0, False: 675]
  |  Branch (420:41): [True: 0, False: 0]
  ------------------
  421|      0|            ofm->importance = htons(fm->importance);
  422|    675|        } else {
  423|    675|            ofm->importance = 0;
  424|    675|        }
  425|    675|        ofputil_put_ofp11_match(msg, &match, protocol);
  426|    675|        ofpacts_put_openflow_instructions(fm->ofpacts, fm->ofpacts_len, msg,
  427|    675|                                          version);
  428|    675|        break;
  429|    675|    }
  430|       |
  431|  4.86k|    case OFPUTIL_P_OF10_STD:
  ------------------
  |  Branch (431:5): [True: 4.86k, False: 4.96k]
  ------------------
  432|  5.10k|    case OFPUTIL_P_OF10_STD_TID: {
  ------------------
  |  Branch (432:5): [True: 247, False: 9.58k]
  ------------------
  433|  5.10k|        struct ofp10_flow_mod *ofm;
  434|       |
  435|  5.10k|        msg = ofpraw_alloc(OFPRAW_OFPT10_FLOW_MOD, OFP10_VERSION,
  436|  5.10k|                           fm->ofpacts_len);
  437|  5.10k|        ofm = ofpbuf_put_zeros(msg, sizeof *ofm);
  438|  5.10k|        ofputil_match_to_ofp10_match(&match, &ofm->match);
  439|  5.10k|        ofm->cookie = fm->new_cookie;
  440|  5.10k|        ofm->command = ofputil_tid_command(fm, protocol);
  441|  5.10k|        ofm->idle_timeout = htons(fm->idle_timeout);
  442|  5.10k|        ofm->hard_timeout = htons(fm->hard_timeout);
  443|  5.10k|        ofm->priority = htons(fm->priority);
  444|  5.10k|        ofm->buffer_id = htonl(fm->buffer_id);
  445|  5.10k|        ofm->out_port = htons(ofp_to_u16(fm->out_port));
  446|  5.10k|        ofm->flags = raw_flags;
  447|  5.10k|        ofpacts_put_openflow_actions(fm->ofpacts, fm->ofpacts_len, msg,
  448|  5.10k|                                     version);
  449|  5.10k|        break;
  450|  4.86k|    }
  451|       |
  452|  4.03k|    case OFPUTIL_P_OF10_NXM:
  ------------------
  |  Branch (452:5): [True: 4.03k, False: 5.79k]
  ------------------
  453|  4.04k|    case OFPUTIL_P_OF10_NXM_TID: {
  ------------------
  |  Branch (453:5): [True: 13, False: 9.81k]
  ------------------
  454|  4.04k|        struct nx_flow_mod *nfm;
  455|  4.04k|        int match_len;
  456|       |
  457|  4.04k|        msg = ofpraw_alloc(OFPRAW_NXT_FLOW_MOD, OFP10_VERSION,
  458|  4.04k|                           NXM_TYPICAL_LEN + fm->ofpacts_len);
  ------------------
  |  |  179|  4.04k|#define NXM_TYPICAL_LEN 64
  ------------------
  459|  4.04k|        nfm = ofpbuf_put_zeros(msg, sizeof *nfm);
  460|  4.04k|        nfm->command = ofputil_tid_command(fm, protocol);
  461|  4.04k|        nfm->cookie = fm->new_cookie;
  462|  4.04k|        match_len = nx_put_match(msg, &match, fm->cookie, fm->cookie_mask);
  463|  4.04k|        nfm = msg->msg;
  464|  4.04k|        nfm->idle_timeout = htons(fm->idle_timeout);
  465|  4.04k|        nfm->hard_timeout = htons(fm->hard_timeout);
  466|  4.04k|        nfm->priority = htons(fm->priority);
  467|  4.04k|        nfm->buffer_id = htonl(fm->buffer_id);
  468|  4.04k|        nfm->out_port = htons(ofp_to_u16(fm->out_port));
  469|  4.04k|        nfm->flags = raw_flags;
  470|  4.04k|        nfm->match_len = htons(match_len);
  471|  4.04k|        ofpacts_put_openflow_actions(fm->ofpacts, fm->ofpacts_len, msg,
  472|  4.04k|                                     version);
  473|  4.04k|        break;
  474|  4.03k|    }
  475|       |
  476|      0|    default:
  ------------------
  |  Branch (476:5): [True: 0, False: 9.83k]
  ------------------
  477|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  478|  9.83k|    }
  479|       |
  480|  9.83k|    ofpmsg_update_length(msg);
  481|  9.83k|    return msg;
  482|  9.83k|}
parse_ofp_str:
 1795|  23.0k|{
 1796|  23.0k|    char *string = xstrdup(str_);
 1797|  23.0k|    char *error;
 1798|       |
 1799|  23.0k|    error = parse_ofp_str__(fm, command, string, port_map, table_map,
 1800|  23.0k|                            usable_protocols);
 1801|  23.0k|    if (error) {
  ------------------
  |  Branch (1801:9): [True: 12.9k, False: 10.0k]
  ------------------
 1802|  12.9k|        fm->ofpacts = NULL;
 1803|  12.9k|        fm->ofpacts_len = 0;
 1804|  12.9k|    }
 1805|       |
 1806|  23.0k|    free(string);
 1807|  23.0k|    return error;
 1808|  23.0k|}
parse_ofp_flow_mod_str:
 1825|  23.0k|{
 1826|  23.0k|    char *error = parse_ofp_str(fm, command, string, port_map, table_map,
 1827|  23.0k|                                usable_protocols);
 1828|       |
 1829|  23.0k|    if (!error) {
  ------------------
  |  Branch (1829:9): [True: 10.0k, False: 12.9k]
  ------------------
 1830|       |        /* Normalize a copy of the match.  This ensures that non-normalized
 1831|       |         * flows get logged but doesn't affect what gets sent to the switch, so
 1832|       |         * that the switch can do whatever it likes with the flow. */
 1833|  10.0k|        struct match match;
 1834|  10.0k|        minimatch_expand(&fm->match, &match);
 1835|  10.0k|        ofputil_normalize_match(&match);
 1836|  10.0k|    }
 1837|       |
 1838|  23.0k|    return error;
 1839|  23.0k|}
ofp-flow.c:ofputil_encode_flow_mod_flags:
   93|  9.83k|{
   94|  9.83k|    const struct ofputil_flow_mod_flag *f;
   95|  9.83k|    uint16_t raw_flags;
   96|       |
   97|  9.83k|    raw_flags = 0;
   98|  68.8k|    for (f = ofputil_flow_mod_flags; f->raw_flag; f++) {
  ------------------
  |  Branch (98:38): [True: 58.9k, False: 9.83k]
  ------------------
   99|  58.9k|        if (f->flag & flags
  ------------------
  |  Branch (99:13): [True: 161, False: 58.8k]
  ------------------
  100|    161|            && version >= f->min_version
  ------------------
  |  Branch (100:16): [True: 161, False: 0]
  ------------------
  101|    161|            && (!f->max_version || version <= f->max_version)) {
  ------------------
  |  Branch (101:17): [True: 161, False: 0]
  |  Branch (101:36): [True: 0, False: 0]
  ------------------
  102|    161|            raw_flags |= f->raw_flag;
  103|    161|        }
  104|  58.9k|    }
  105|       |
  106|       |    return htons(raw_flags);
  107|  9.83k|}
ofp-flow.c:ofputil_tid_command:
  363|  9.15k|{
  364|       |    return htons(protocol & OFPUTIL_P_TID
  ------------------
  |  Branch (364:12): [True: 260, False: 8.89k]
  ------------------
  365|  9.15k|                 ? (fm->command & 0xff) | (fm->table_id << 8)
  366|  9.15k|                 : fm->command);
  367|  9.15k|}
ofp-flow.c:parse_ofp_str__:
 1490|  23.0k|{
 1491|  23.0k|    enum {
 1492|  23.0k|        F_OUT_PORT = 1 << 0,
 1493|  23.0k|        F_ACTIONS = 1 << 1,
 1494|  23.0k|        F_IMPORTANCE = 1 << 2,
 1495|  23.0k|        F_TIMEOUT = 1 << 3,
 1496|  23.0k|        F_PRIORITY = 1 << 4,
 1497|  23.0k|        F_FLAGS = 1 << 5,
 1498|  23.0k|    } fields;
 1499|  23.0k|    char *act_str = NULL;
 1500|  23.0k|    char *name, *value;
 1501|       |
 1502|  23.0k|    *usable_protocols = OFPUTIL_P_ANY;
  ------------------
  |  |  100|  23.0k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
 1503|       |
 1504|  23.0k|    if (command == -2) {
  ------------------
  |  Branch (1504:9): [True: 2.38k, False: 20.6k]
  ------------------
 1505|  2.38k|        size_t len;
 1506|       |
 1507|  2.38k|        string += strspn(string, " \t\r\n");   /* Skip white space. */
 1508|  2.38k|        len = strcspn(string, ", \t\r\n"); /* Get length of the first token. */
 1509|       |
 1510|  2.38k|        if (!strncmp(string, "add", len)) {
  ------------------
  |  Branch (1510:13): [True: 7, False: 2.37k]
  ------------------
 1511|      7|            command = OFPFC_ADD;
 1512|  2.37k|        } else if (!strncmp(string, "delete", len)) {
  ------------------
  |  Branch (1512:20): [True: 7, False: 2.37k]
  ------------------
 1513|      7|            command = OFPFC_DELETE;
 1514|  2.37k|        } else if (!strncmp(string, "delete_strict", len)) {
  ------------------
  |  Branch (1514:20): [True: 1, False: 2.37k]
  ------------------
 1515|      1|            command = OFPFC_DELETE_STRICT;
 1516|  2.37k|        } else if (!strncmp(string, "modify", len)) {
  ------------------
  |  Branch (1516:20): [True: 1, False: 2.37k]
  ------------------
 1517|      1|            command = OFPFC_MODIFY;
 1518|  2.37k|        } else if (!strncmp(string, "modify_strict", len)) {
  ------------------
  |  Branch (1518:20): [True: 1, False: 2.36k]
  ------------------
 1519|      1|            command = OFPFC_MODIFY_STRICT;
 1520|  2.36k|        } else {
 1521|  2.36k|            len = 0;
 1522|  2.36k|            command = OFPFC_ADD;
 1523|  2.36k|        }
 1524|  2.38k|        string += len;
 1525|  2.38k|    }
 1526|       |
 1527|  23.0k|    switch (command) {
 1528|    806|    case -1:
  ------------------
  |  Branch (1528:5): [True: 806, False: 22.2k]
  ------------------
 1529|    806|        fields = F_OUT_PORT;
 1530|    806|        break;
 1531|       |
 1532|  4.19k|    case OFPFC_ADD:
  ------------------
  |  Branch (1532:5): [True: 4.19k, False: 18.8k]
  ------------------
 1533|  4.19k|        fields = F_ACTIONS | F_TIMEOUT | F_PRIORITY | F_FLAGS | F_IMPORTANCE;
 1534|  4.19k|        break;
 1535|       |
 1536|  3.51k|    case OFPFC_DELETE:
  ------------------
  |  Branch (1536:5): [True: 3.51k, False: 19.5k]
  ------------------
 1537|  3.51k|        fields = F_OUT_PORT;
 1538|  3.51k|        break;
 1539|       |
 1540|  3.76k|    case OFPFC_DELETE_STRICT:
  ------------------
  |  Branch (1540:5): [True: 3.76k, False: 19.2k]
  ------------------
 1541|  3.76k|        fields = F_OUT_PORT | F_PRIORITY;
 1542|  3.76k|        break;
 1543|       |
 1544|  6.60k|    case OFPFC_MODIFY:
  ------------------
  |  Branch (1544:5): [True: 6.60k, False: 16.4k]
  ------------------
 1545|  6.60k|        fields = F_ACTIONS | F_TIMEOUT | F_PRIORITY | F_FLAGS;
 1546|  6.60k|        break;
 1547|       |
 1548|  4.16k|    case OFPFC_MODIFY_STRICT:
  ------------------
  |  Branch (1548:5): [True: 4.16k, False: 18.8k]
  ------------------
 1549|  4.16k|        fields = F_ACTIONS | F_TIMEOUT | F_PRIORITY | F_FLAGS;
 1550|  4.16k|        break;
 1551|       |
 1552|      0|    default:
  ------------------
  |  Branch (1552:5): [True: 0, False: 23.0k]
  ------------------
 1553|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
 1554|  23.0k|    }
 1555|       |
 1556|  23.0k|    *fm = (struct ofputil_flow_mod) {
 1557|  23.0k|        .priority = OFP_DEFAULT_PRIORITY,
  ------------------
  |  |  138|  23.0k|#define OFP_DEFAULT_PRIORITY 0x8000
  ------------------
 1558|  23.0k|        .table_id = 0xff,
 1559|  23.0k|        .command = command,
 1560|  23.0k|        .buffer_id = UINT32_MAX,
 1561|  23.0k|        .out_port = OFPP_ANY,
  ------------------
  |  |   80|  23.0k|#define OFPP_ANY OFPP_NONE
  |  |  ------------------
  |  |  |  |   47|  23.0k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  |  |  ------------------
  |  |  |  |  |  |  157|  23.0k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1562|  23.0k|        .out_group = OFPG_ANY,
 1563|  23.0k|    };
 1564|       |    /* For modify, by default, don't update the cookie. */
 1565|  23.0k|    if (command == OFPFC_MODIFY || command == OFPFC_MODIFY_STRICT) {
  ------------------
  |  Branch (1565:9): [True: 6.60k, False: 16.4k]
  |  Branch (1565:36): [True: 4.16k, False: 12.2k]
  ------------------
 1566|  10.7k|        fm->new_cookie = OVS_BE64_MAX;
  ------------------
  |  |   44|  10.7k|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
 1567|  10.7k|    }
 1568|       |
 1569|  23.0k|    if (fields & F_ACTIONS) {
  ------------------
  |  Branch (1569:9): [True: 14.9k, False: 8.08k]
  ------------------
 1570|  14.9k|        act_str = ofp_extract_actions(string);
 1571|  14.9k|        if (!act_str) {
  ------------------
  |  Branch (1571:13): [True: 190, False: 14.7k]
  ------------------
 1572|    190|            return xstrdup("must specify an action");
 1573|    190|        }
 1574|  14.9k|    }
 1575|       |
 1576|  22.8k|    struct match match = MATCH_CATCHALL_INITIALIZER;
  ------------------
  |  |   47|  22.8k|#define MATCH_CATCHALL_INITIALIZER { .flow = { .dl_type = 0 } }
  ------------------
 1577|   202k|    while (ofputil_parse_key_value(&string, &name, &value)) {
  ------------------
  |  Branch (1577:12): [True: 184k, False: 18.1k]
  ------------------
 1578|   184k|        const struct ofp_protocol *p;
 1579|   184k|        const struct mf_field *mf;
 1580|   184k|        char *error = NULL;
 1581|       |
 1582|   184k|        if (ofp_parse_protocol(name, &p)) {
  ------------------
  |  Branch (1582:13): [True: 15.3k, False: 168k]
  ------------------
 1583|  15.3k|            match_set_dl_type(&match, htons(p->dl_type));
 1584|  15.3k|            if (p->nw_proto) {
  ------------------
  |  Branch (1584:17): [True: 3.84k, False: 11.5k]
  ------------------
 1585|  3.84k|                match_set_nw_proto(&match, p->nw_proto);
 1586|  3.84k|            }
 1587|  15.3k|            match_set_default_packet_type(&match);
 1588|   168k|        } else if (!strcmp(name, "eth")) {
  ------------------
  |  Branch (1588:20): [True: 2.28k, False: 166k]
  ------------------
 1589|  2.28k|            match_set_packet_type(&match, htonl(PT_ETH));
 1590|   166k|        } else if (fields & F_FLAGS && !strcmp(name, "send_flow_rem")) {
  ------------------
  |  Branch (1590:20): [True: 17.1k, False: 149k]
  |  Branch (1590:40): [True: 198, False: 16.9k]
  ------------------
 1591|    198|            fm->flags |= OFPUTIL_FF_SEND_FLOW_REM;
 1592|   166k|        } else if (fields & F_FLAGS && !strcmp(name, "check_overlap")) {
  ------------------
  |  Branch (1592:20): [True: 16.9k, False: 149k]
  |  Branch (1592:40): [True: 199, False: 16.7k]
  ------------------
 1593|    199|            fm->flags |= OFPUTIL_FF_CHECK_OVERLAP;
 1594|   166k|        } else if (fields & F_FLAGS && !strcmp(name, "reset_counts")) {
  ------------------
  |  Branch (1594:20): [True: 16.7k, False: 149k]
  |  Branch (1594:40): [True: 818, False: 15.9k]
  ------------------
 1595|    818|            fm->flags |= OFPUTIL_FF_RESET_COUNTS;
 1596|    818|            *usable_protocols &= OFPUTIL_P_OF12_UP;
  ------------------
  |  |   94|    818|#define OFPUTIL_P_OF12_UP (OFPUTIL_P_OF12_OXM | OFPUTIL_P_OF13_UP)
  |  |  ------------------
  |  |  |  |   95|    818|#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|    818|#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   97|    818|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1597|   165k|        } else if (fields & F_FLAGS && !strcmp(name, "no_packet_counts")) {
  ------------------
  |  Branch (1597:20): [True: 15.9k, False: 149k]
  |  Branch (1597:40): [True: 251, False: 15.7k]
  ------------------
 1598|    251|            fm->flags |= OFPUTIL_FF_NO_PKT_COUNTS;
 1599|    251|            *usable_protocols &= OFPUTIL_P_OF13_UP;
  ------------------
  |  |   95|    251|#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
  |  |  ------------------
  |  |  |  |   96|    251|#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|    251|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1600|   165k|        } else if (fields & F_FLAGS && !strcmp(name, "no_byte_counts")) {
  ------------------
  |  Branch (1600:20): [True: 15.7k, False: 149k]
  |  Branch (1600:40): [True: 258, False: 15.4k]
  ------------------
 1601|    258|            fm->flags |= OFPUTIL_FF_NO_BYT_COUNTS;
 1602|    258|            *usable_protocols &= OFPUTIL_P_OF13_UP;
  ------------------
  |  |   95|    258|#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
  |  |  ------------------
  |  |  |  |   96|    258|#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|    258|#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1603|   164k|        } else if (!strcmp(name, "no_readonly_table")
  ------------------
  |  Branch (1603:20): [True: 198, False: 164k]
  ------------------
 1604|   164k|                   || !strcmp(name, "allow_hidden_fields")) {
  ------------------
  |  Branch (1604:23): [True: 195, False: 164k]
  ------------------
 1605|       |             /* ignore these fields. */
 1606|   164k|        } else if ((mf = mf_from_name(name)) != NULL) {
  ------------------
  |  Branch (1606:20): [True: 85.4k, False: 79.0k]
  ------------------
 1607|  85.4k|            error = ofp_parse_field(mf, value, port_map,
 1608|  85.4k|                                    &match, usable_protocols);
 1609|  85.4k|        } else if (strchr(name, '[')) {
  ------------------
  |  Branch (1609:20): [True: 65.2k, False: 13.8k]
  ------------------
 1610|  65.2k|            error = parse_subfield(name, value, &match, usable_protocols);
 1611|  65.2k|        } else {
 1612|  13.8k|            if (!*value) {
  ------------------
  |  Branch (1612:17): [True: 1.71k, False: 12.1k]
  ------------------
 1613|  1.71k|                return xasprintf("field %s missing value", name);
 1614|  1.71k|            }
 1615|       |
 1616|  12.1k|            if (!strcmp(name, "table")) {
  ------------------
  |  Branch (1616:17): [True: 5.67k, False: 6.47k]
  ------------------
 1617|  5.67k|                if (!ofputil_table_from_string(value, table_map,
  ------------------
  |  Branch (1617:21): [True: 291, False: 5.37k]
  ------------------
 1618|  5.67k|                                               &fm->table_id)) {
 1619|    291|                    return xasprintf("unknown table \"%s\"", value);
 1620|    291|                }
 1621|  5.37k|                if (fm->table_id != 0xff) {
  ------------------
  |  Branch (1621:21): [True: 5.17k, False: 208]
  ------------------
 1622|  5.17k|                    *usable_protocols &= OFPUTIL_P_TID;
  ------------------
  |  |  103|  5.17k|#define OFPUTIL_P_TID (OFPUTIL_P_OF10_STD_TID | \
  |  |  104|  5.17k|                       OFPUTIL_P_OF10_NXM_TID | \
  |  |  105|  5.17k|                       OFPUTIL_P_OF11_STD |     \
  |  |  106|  5.17k|                       OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|  5.17k|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|  5.17k|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|  5.17k|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|  5.17k|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 1623|  5.17k|                }
 1624|  6.47k|            } else if (fields & F_OUT_PORT && !strcmp(name, "out_port")) {
  ------------------
  |  Branch (1624:24): [True: 4.16k, False: 2.30k]
  |  Branch (1624:47): [True: 211, False: 3.95k]
  ------------------
 1625|    211|                if (!ofputil_port_from_string(value, port_map,
  ------------------
  |  Branch (1625:21): [True: 1, False: 210]
  ------------------
 1626|    211|                                              &fm->out_port)) {
 1627|      1|                    error = xasprintf("%s is not a valid OpenFlow port",
 1628|      1|                                      value);
 1629|      1|                }
 1630|  6.26k|            } else if (fields & F_OUT_PORT && !strcmp(name, "out_group")) {
  ------------------
  |  Branch (1630:24): [True: 3.95k, False: 2.30k]
  |  Branch (1630:47): [True: 711, False: 3.24k]
  ------------------
 1631|    711|                *usable_protocols &= OFPUTIL_P_OF11_UP;
  ------------------
  |  |   92|    711|#define OFPUTIL_P_OF11_UP (OFPUTIL_P_OF11_STD | OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|    711|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|    711|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|    711|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|    711|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 1632|    711|                if (!ofputil_group_from_string(value, &fm->out_group)) {
  ------------------
  |  Branch (1632:21): [True: 52, False: 659]
  ------------------
 1633|     52|                    error = xasprintf("%s is not a valid OpenFlow group",
 1634|     52|                                      value);
 1635|     52|                }
 1636|  5.54k|            } else if (fields & F_PRIORITY && !strcmp(name, "priority")) {
  ------------------
  |  Branch (1636:24): [True: 3.57k, False: 1.97k]
  |  Branch (1636:47): [True: 339, False: 3.23k]
  ------------------
 1637|    339|                uint16_t priority = 0;
 1638|       |
 1639|    339|                error = str_to_u16(value, name, &priority);
 1640|    339|                fm->priority = priority;
 1641|  5.21k|            } else if (fields & F_TIMEOUT && !strcmp(name, "idle_timeout")) {
  ------------------
  |  Branch (1641:24): [True: 2.30k, False: 2.90k]
  |  Branch (1641:46): [True: 196, False: 2.10k]
  ------------------
 1642|    196|                error = str_to_u16(value, name, &fm->idle_timeout);
 1643|  5.01k|            } else if (fields & F_TIMEOUT && !strcmp(name, "hard_timeout")) {
  ------------------
  |  Branch (1643:24): [True: 2.10k, False: 2.90k]
  |  Branch (1643:46): [True: 194, False: 1.91k]
  ------------------
 1644|    194|                error = str_to_u16(value, name, &fm->hard_timeout);
 1645|  4.82k|            } else if (fields & F_IMPORTANCE && !strcmp(name, "importance")) {
  ------------------
  |  Branch (1645:24): [True: 696, False: 4.12k]
  |  Branch (1645:49): [True: 196, False: 500]
  ------------------
 1646|    196|                error = str_to_u16(value, name, &fm->importance);
 1647|  4.62k|            } else if (!strcmp(name, "cookie")) {
  ------------------
  |  Branch (1647:24): [True: 1.91k, False: 2.71k]
  ------------------
 1648|  1.91k|                char *mask = strchr(value, '/');
 1649|       |
 1650|  1.91k|                if (mask) {
  ------------------
  |  Branch (1650:21): [True: 1.12k, False: 792]
  ------------------
 1651|       |                    /* A mask means we're searching for a cookie. */
 1652|  1.12k|                    if (command == OFPFC_ADD) {
  ------------------
  |  Branch (1652:25): [True: 1, False: 1.12k]
  ------------------
 1653|      1|                        return xstrdup("flow additions cannot use "
 1654|      1|                                       "a cookie mask");
 1655|      1|                    }
 1656|  1.12k|                    *mask = '\0';
 1657|  1.12k|                    error = str_to_be64(value, &fm->cookie);
 1658|  1.12k|                    if (error) {
  ------------------
  |  Branch (1658:25): [True: 11, False: 1.10k]
  ------------------
 1659|     11|                        return error;
 1660|     11|                    }
 1661|  1.10k|                    error = str_to_be64(mask + 1, &fm->cookie_mask);
 1662|       |
 1663|       |                    /* Matching of the cookie is only supported through NXM or
 1664|       |                     * OF1.1+. */
 1665|  1.10k|                    if (fm->cookie_mask != htonll(0)) {
  ------------------
  |  Branch (1665:25): [True: 848, False: 261]
  ------------------
 1666|    848|                        *usable_protocols &= OFPUTIL_P_NXM_OF11_UP;
  ------------------
  |  |   87|    848|#define OFPUTIL_P_NXM_OF11_UP (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_OF11_STD | \
  |  |  ------------------
  |  |  |  |   59|    848|#define OFPUTIL_P_OF10_NXM_ANY (OFPUTIL_P_OF10_NXM | OFPUTIL_P_OF10_NXM_TID)
  |  |  ------------------
  |  |   88|    848|                               OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|    848|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|    848|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|    848|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|    848|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 1667|    848|                    }
 1668|  1.10k|                } else {
 1669|       |                    /* No mask means that the cookie is being set. */
 1670|    792|                    if (command != OFPFC_ADD && command != OFPFC_MODIFY
  ------------------
  |  Branch (1670:25): [True: 557, False: 235]
  |  Branch (1670:49): [True: 328, False: 229]
  ------------------
 1671|    328|                        && command != OFPFC_MODIFY_STRICT) {
  ------------------
  |  Branch (1671:28): [True: 1, False: 327]
  ------------------
 1672|      1|                        return xasprintf("cannot set cookie (to match on a "
 1673|      1|                                         "cookie, specify a mask, e.g. "
 1674|      1|                                         "cookie=%s/-1)", value);
 1675|      1|                    }
 1676|    791|                    error = str_to_be64(value, &fm->new_cookie);
 1677|    791|                    fm->modify_cookie = true;
 1678|    791|                }
 1679|  2.71k|            } else if (!strcmp(name, "duration")
  ------------------
  |  Branch (1679:24): [True: 272, False: 2.43k]
  ------------------
 1680|  2.43k|                       || !strcmp(name, "n_packets")
  ------------------
  |  Branch (1680:27): [True: 204, False: 2.23k]
  ------------------
 1681|  2.23k|                       || !strcmp(name, "n_bytes")
  ------------------
  |  Branch (1681:27): [True: 425, False: 1.81k]
  ------------------
 1682|  1.81k|                       || !strcmp(name, "idle_age")
  ------------------
  |  Branch (1682:27): [True: 266, False: 1.54k]
  ------------------
 1683|  1.71k|                       || !strcmp(name, "hard_age")) {
  ------------------
  |  Branch (1683:27): [True: 550, False: 994]
  ------------------
 1684|       |                /* Ignore these, so that users can feed the output of
 1685|       |                 * "ovs-ofctl dump-flows" back into commands that parse
 1686|       |                 * flows. */
 1687|  1.71k|            } else {
 1688|    994|                error = xasprintf("unknown keyword %s", name);
 1689|    994|            }
 1690|  12.1k|        }
 1691|       |
 1692|   182k|        if (error) {
  ------------------
  |  Branch (1692:13): [True: 2.73k, False: 179k]
  ------------------
 1693|  2.73k|            return error;
 1694|  2.73k|        }
 1695|   182k|    }
 1696|       |    /* Copy ethertype to flow->dl_type for matches on packet_type
 1697|       |     * (OFPHTN_ETHERTYPE, ethertype). */
 1698|  18.1k|    if (match.wc.masks.packet_type == OVS_BE32_MAX &&
  ------------------
  |  |   43|  36.2k|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (1698:9): [True: 4.66k, False: 13.4k]
  ------------------
 1699|  4.66k|            pt_ns(match.flow.packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (1699:13): [True: 165, False: 4.49k]
  ------------------
 1700|    165|        match.flow.dl_type = pt_ns_type_be(match.flow.packet_type);
 1701|    165|    }
 1702|       |    /* Check for usable protocol interdependencies between match fields. */
 1703|  18.1k|    if (match.flow.dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1703:9): [True: 913, False: 17.1k]
  ------------------
 1704|    913|        const struct flow_wildcards *wc = &match.wc;
 1705|       |        /* Only NXM and OXM support matching L3 and L4 fields within IPv6.
 1706|       |         *
 1707|       |         * (IPv6 specific fields as well as arp_sha, arp_tha, nw_frag, and
 1708|       |         *  nw_ttl are covered elsewhere so they don't need to be included in
 1709|       |         *  this test too.)
 1710|       |         */
 1711|    913|        if (wc->masks.nw_proto || wc->masks.nw_tos
  ------------------
  |  Branch (1711:13): [True: 385, False: 528]
  |  Branch (1711:35): [True: 1, False: 527]
  ------------------
 1712|    527|            || wc->masks.tp_src || wc->masks.tp_dst) {
  ------------------
  |  Branch (1712:16): [True: 1, False: 526]
  |  Branch (1712:36): [True: 2, False: 524]
  ------------------
 1713|    389|            *usable_protocols &= OFPUTIL_P_NXM_OXM_ANY;
  ------------------
  |  |   90|    389|#define OFPUTIL_P_NXM_OXM_ANY (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   59|    389|#define OFPUTIL_P_OF10_NXM_ANY (OFPUTIL_P_OF10_NXM | OFPUTIL_P_OF10_NXM_TID)
  |  |  ------------------
  |  |               #define OFPUTIL_P_NXM_OXM_ANY (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_ANY_OXM)
  |  |  ------------------
  |  |  |  |   82|    389|#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
  |  |  |  |   83|    389|                           OFPUTIL_P_OF13_OXM | \
  |  |  |  |   84|    389|                           OFPUTIL_P_OF14_OXM | \
  |  |  |  |   85|    389|                           OFPUTIL_P_OF15_OXM)
  |  |  ------------------
  ------------------
 1714|    389|        }
 1715|    913|    }
 1716|  18.1k|    if (!fm->cookie_mask && fm->new_cookie == OVS_BE64_MAX
  ------------------
  |  |   44|  36.0k|#define OVS_BE64_MAX ((OVS_FORCE ovs_be64) 0xffffffffffffffffULL)
  ------------------
  |  Branch (1716:9): [True: 17.9k, False: 161]
  |  Branch (1716:29): [True: 10.0k, False: 7.86k]
  ------------------
 1717|  10.0k|        && (command == OFPFC_MODIFY || command == OFPFC_MODIFY_STRICT)) {
  ------------------
  |  Branch (1717:13): [True: 6.23k, False: 3.84k]
  |  Branch (1717:40): [True: 3.84k, False: 1]
  ------------------
 1718|       |        /* On modifies without a mask, we are supposed to add a flow if
 1719|       |         * one does not exist.  If a cookie wasn't been specified, use a
 1720|       |         * default of zero. */
 1721|  10.0k|        fm->new_cookie = htonll(0);
 1722|  10.0k|    }
 1723|  18.1k|    if (fields & F_ACTIONS) {
  ------------------
  |  Branch (1723:9): [True: 13.9k, False: 4.14k]
  ------------------
 1724|  13.9k|        enum ofputil_protocol action_usable_protocols;
 1725|  13.9k|        struct ofpbuf ofpacts;
 1726|  13.9k|        char *error;
 1727|       |
 1728|  13.9k|        ofpbuf_init(&ofpacts, 32);
 1729|  13.9k|        struct ofpact_parse_params pp = {
 1730|  13.9k|            .port_map = port_map,
 1731|  13.9k|            .table_map = table_map,
 1732|  13.9k|            .ofpacts = &ofpacts,
 1733|  13.9k|            .usable_protocols = &action_usable_protocols
 1734|  13.9k|        };
 1735|  13.9k|        error = ofpacts_parse_instructions(act_str, &pp);
 1736|  13.9k|        *usable_protocols &= action_usable_protocols;
 1737|  13.9k|        if (!error) {
  ------------------
  |  Branch (1737:13): [True: 6.63k, False: 7.32k]
  ------------------
 1738|  6.63k|            enum ofperr err;
 1739|       |
 1740|  6.63k|            struct ofpact_check_params cp = {
 1741|  6.63k|                .match = &match,
 1742|  6.63k|                .max_ports = OFPP_MAX,
  ------------------
  |  |   33|  6.63k|#define OFPP_MAX        OFP_PORT_C(0xff00) /* Max # of switch ports. */
  |  |  ------------------
  |  |  |  |  157|  6.63k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
 1743|  6.63k|                .table_id = fm->table_id,
 1744|  6.63k|                .n_tables = 255,
 1745|  6.63k|            };
 1746|  6.63k|            err = ofpacts_check(ofpacts.data, ofpacts.size, &cp);
 1747|  6.63k|            *usable_protocols &= cp.usable_protocols;
 1748|  6.63k|            if (!err && !*usable_protocols) {
  ------------------
  |  Branch (1748:17): [True: 5.93k, False: 699]
  |  Branch (1748:25): [True: 25, False: 5.91k]
  ------------------
 1749|     25|                err = OFPERR_OFPBAC_MATCH_INCONSISTENT;
 1750|     25|            }
 1751|  6.63k|            if (err) {
  ------------------
  |  Branch (1751:17): [True: 724, False: 5.91k]
  ------------------
 1752|    724|                error = xasprintf("actions are invalid with specified match "
 1753|    724|                                  "(%s)", ofperr_to_string(err));
 1754|    724|            }
 1755|       |
 1756|  6.63k|        }
 1757|  13.9k|        if (error) {
  ------------------
  |  Branch (1757:13): [True: 8.04k, False: 5.91k]
  ------------------
 1758|  8.04k|            ofpbuf_uninit(&ofpacts);
 1759|  8.04k|            return error;
 1760|  8.04k|        }
 1761|       |
 1762|  5.91k|        fm->ofpacts_len = ofpacts.size;
 1763|  5.91k|        fm->ofpacts = ofpbuf_steal_data(&ofpacts);
 1764|  5.91k|    } else {
 1765|  4.14k|        fm->ofpacts_len = 0;
 1766|  4.14k|        fm->ofpacts = NULL;
 1767|  4.14k|    }
 1768|  10.0k|    minimatch_init(&fm->match, &match);
 1769|       |
 1770|       |    return NULL;
 1771|  18.1k|}
ofp-flow.c:parse_subfield:
 1446|  65.2k|{
 1447|  65.2k|    struct mf_subfield sf;
 1448|  65.2k|    char *error;
 1449|       |
 1450|  65.2k|    error = mf_parse_subfield(&sf, name);
 1451|  65.2k|    if (!error) {
  ------------------
  |  Branch (1451:9): [True: 64.7k, False: 510]
  ------------------
 1452|  64.7k|        union mf_value val;
 1453|  64.7k|        char *tail;
 1454|  64.7k|        if (parse_int_string(str_value, (uint8_t *)&val, sf.field->n_bytes,
  ------------------
  |  Branch (1454:13): [True: 31, False: 64.6k]
  ------------------
 1455|  64.7k|                             &tail) || *tail != 0) {
  ------------------
  |  Branch (1455:40): [True: 20, False: 64.6k]
  ------------------
 1456|     51|            return xasprintf("%s: cannot parse integer value: %s", name,
 1457|     51|                             str_value);
 1458|     51|        }
 1459|  64.6k|        if (!bitwise_is_all_zeros(&val, sf.field->n_bytes, sf.n_bits,
  ------------------
  |  Branch (1459:13): [True: 124, False: 64.5k]
  ------------------
 1460|  64.6k|                                  sf.field->n_bytes * 8 - sf.n_bits)) {
 1461|    124|            struct ds ds;
 1462|       |
 1463|    124|            ds_init(&ds);
 1464|    124|            mf_format(sf.field, &val, NULL, NULL, &ds);
 1465|    124|            error = xasprintf("%s: value %s does not fit into %d bits",
 1466|    124|                              name, ds_cstr(&ds), sf.n_bits);
 1467|    124|            ds_destroy(&ds);
 1468|    124|            return error;
 1469|    124|        }
 1470|       |
 1471|  64.5k|        const struct mf_field *field = sf.field;
 1472|  64.5k|        union mf_value value, mask;
 1473|  64.5k|        unsigned int size = field->n_bytes;
 1474|       |
 1475|  64.5k|        mf_get(field, match, &value, &mask);
 1476|  64.5k|        bitwise_copy(&val, size, 0, &value, size, sf.ofs, sf.n_bits);
 1477|  64.5k|        bitwise_one (               &mask,  size, sf.ofs, sf.n_bits);
 1478|  64.5k|        *usable_protocols &= mf_set(field, &value, &mask, match, &error);
 1479|       |
 1480|  64.5k|        match_add_ethernet_prereq(match, sf.field);
 1481|  64.5k|    }
 1482|  65.0k|    return error;
 1483|  65.2k|}

ofputil_group_from_string:
   46|    711|{
   47|    711|    if (!strcasecmp(s, "any")) {
  ------------------
  |  Branch (47:9): [True: 194, False: 517]
  ------------------
   48|    194|        *group_idp = OFPG_ANY;
   49|    517|    } else if (!strcasecmp(s, "all")) {
  ------------------
  |  Branch (49:16): [True: 194, False: 323]
  ------------------
   50|    194|        *group_idp = OFPG_ALL;
   51|    323|    } else if (!str_to_uint(s, 10, group_idp)) {
  ------------------
  |  Branch (51:16): [True: 52, False: 271]
  ------------------
   52|     52|        VLOG_WARN("%s is not a valid group ID.  (Valid group IDs are "
  ------------------
  |  |  209|     52|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|     52|    do {                                                \
  |  |  |  |  281|     52|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|     52|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|     52|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 52]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   53|     52|                  "32-bit nonnegative integers or the keywords ANY or "
   54|     52|                  "ALL.)", s);
   55|     52|        return false;
   56|     52|    }
   57|       |
   58|    659|    return true;
   59|    711|}

ofputil_match_to_ofp10_match:
  184|  5.10k|{
  185|  5.10k|    const struct flow_wildcards *wc = &match->wc;
  186|  5.10k|    uint32_t ofpfw;
  187|       |
  188|       |    /* Figure out most OpenFlow wildcards. */
  189|  5.10k|    ofpfw = 0;
  190|  5.10k|    if (!wc->masks.in_port.ofp_port) {
  ------------------
  |  Branch (190:9): [True: 5.10k, False: 5]
  ------------------
  191|  5.10k|        ofpfw |= OFPFW10_IN_PORT;
  192|  5.10k|    }
  193|  5.10k|    if (!wc->masks.dl_type) {
  ------------------
  |  Branch (193:9): [True: 3.82k, False: 1.28k]
  ------------------
  194|  3.82k|        ofpfw |= OFPFW10_DL_TYPE;
  195|  3.82k|    }
  196|  5.10k|    if (!wc->masks.nw_proto) {
  ------------------
  |  Branch (196:9): [True: 4.72k, False: 384]
  ------------------
  197|  4.72k|        ofpfw |= OFPFW10_NW_PROTO;
  198|  4.72k|    }
  199|  5.10k|    ofpfw |= (ofputil_netmask_to_wcbits(wc->masks.nw_src)
  200|  5.10k|              << OFPFW10_NW_SRC_SHIFT);
  201|  5.10k|    ofpfw |= (ofputil_netmask_to_wcbits(wc->masks.nw_dst)
  202|  5.10k|              << OFPFW10_NW_DST_SHIFT);
  203|  5.10k|    if (!(wc->masks.nw_tos & IP_DSCP_MASK)) {
  ------------------
  |  |  724|  5.10k|#define IP_DSCP_MASK 0xfc
  ------------------
  |  Branch (203:9): [True: 5.09k, False: 13]
  ------------------
  204|  5.09k|        ofpfw |= OFPFW10_NW_TOS;
  205|  5.09k|    }
  206|  5.10k|    if (!wc->masks.tp_src) {
  ------------------
  |  Branch (206:9): [True: 5.08k, False: 28]
  ------------------
  207|  5.08k|        ofpfw |= OFPFW10_TP_SRC;
  208|  5.08k|    }
  209|  5.10k|    if (!wc->masks.tp_dst) {
  ------------------
  |  Branch (209:9): [True: 5.09k, False: 18]
  ------------------
  210|  5.09k|        ofpfw |= OFPFW10_TP_DST;
  211|  5.09k|    }
  212|  5.10k|    if (eth_addr_is_zero(wc->masks.dl_src)) {
  ------------------
  |  Branch (212:9): [True: 5.10k, False: 8]
  ------------------
  213|  5.10k|        ofpfw |= OFPFW10_DL_SRC;
  214|  5.10k|    }
  215|  5.10k|    if (eth_addr_is_zero(wc->masks.dl_dst)) {
  ------------------
  |  Branch (215:9): [True: 5.10k, False: 9]
  ------------------
  216|  5.10k|        ofpfw |= OFPFW10_DL_DST;
  217|  5.10k|    }
  218|       |
  219|       |    /* Translate VLANs. */
  220|  5.10k|    ofmatch->dl_vlan = htons(0);
  221|  5.10k|    ofmatch->dl_vlan_pcp = 0;
  222|  5.10k|    if (match->wc.masks.vlans[0].tci == htons(0)) {
  ------------------
  |  Branch (222:9): [True: 5.04k, False: 64]
  ------------------
  223|  5.04k|        ofpfw |= OFPFW10_DL_VLAN | OFPFW10_DL_VLAN_PCP;
  224|  5.04k|    } else if (match->wc.masks.vlans[0].tci & htons(VLAN_CFI)
  ------------------
  |  Branch (224:16): [True: 64, False: 0]
  ------------------
  225|     64|               && !(match->flow.vlans[0].tci & htons(VLAN_CFI))) {
  ------------------
  |  Branch (225:19): [True: 23, False: 41]
  ------------------
  226|     23|        ofmatch->dl_vlan = htons(OFP10_VLAN_NONE);
  227|     41|    } else {
  228|     41|        if (!(match->wc.masks.vlans[0].tci & htons(VLAN_VID_MASK))) {
  ------------------
  |  Branch (228:13): [True: 14, False: 27]
  ------------------
  229|     14|            ofpfw |= OFPFW10_DL_VLAN;
  230|     27|        } else {
  231|     27|            ofmatch->dl_vlan =
  232|     27|                htons(vlan_tci_to_vid(match->flow.vlans[0].tci));
  233|     27|        }
  234|       |
  235|     41|        if (!(match->wc.masks.vlans[0].tci & htons(VLAN_PCP_MASK))) {
  ------------------
  |  Branch (235:13): [True: 27, False: 14]
  ------------------
  236|     27|            ofpfw |= OFPFW10_DL_VLAN_PCP;
  237|     27|        } else {
  238|     14|            ofmatch->dl_vlan_pcp = vlan_tci_to_pcp(match->flow.vlans[0].tci);
  239|     14|        }
  240|     41|    }
  241|       |
  242|       |    /* Compose most of the match structure. */
  243|  5.10k|    ofmatch->wildcards = htonl(ofpfw);
  244|  5.10k|    ofmatch->in_port = htons(ofp_to_u16(match->flow.in_port.ofp_port));
  245|  5.10k|    ofmatch->dl_src = match->flow.dl_src;
  246|  5.10k|    ofmatch->dl_dst = match->flow.dl_dst;
  247|  5.10k|    ofmatch->dl_type = ofputil_dl_type_to_openflow(match->flow.dl_type);
  248|  5.10k|    ofmatch->nw_src = match->flow.nw_src;
  249|  5.10k|    ofmatch->nw_dst = match->flow.nw_dst;
  250|  5.10k|    ofmatch->nw_tos = match->flow.nw_tos & IP_DSCP_MASK;
  ------------------
  |  |  724|  5.10k|#define IP_DSCP_MASK 0xfc
  ------------------
  251|  5.10k|    ofmatch->nw_proto = match->flow.nw_proto;
  252|  5.10k|    ofmatch->tp_src = match->flow.tp_src;
  253|  5.10k|    ofmatch->tp_dst = match->flow.tp_dst;
  254|  5.10k|    memset(ofmatch->pad1, '\0', sizeof ofmatch->pad1);
  255|  5.10k|    memset(ofmatch->pad2, '\0', sizeof ofmatch->pad2);
  256|  5.10k|}
ofputil_match_to_ofp11_match:
  453|    193|{
  454|    193|    uint32_t wc = 0;
  455|       |
  456|    193|    memset(ofmatch, 0, sizeof *ofmatch);
  457|    193|    ofmatch->omh.type = htons(OFPMT_STANDARD);
  458|    193|    ofmatch->omh.length = htons(OFPMT11_STANDARD_LENGTH);
  459|       |
  460|    193|    if (!match->wc.masks.in_port.ofp_port) {
  ------------------
  |  Branch (460:9): [True: 192, False: 1]
  ------------------
  461|    192|        wc |= OFPFW11_IN_PORT;
  462|    192|    } else {
  463|      1|        ofmatch->in_port = ofputil_port_to_ofp11(match->flow.in_port.ofp_port);
  464|      1|    }
  465|       |
  466|    193|    ofmatch->dl_src = match->flow.dl_src;
  467|    193|    ofmatch->dl_src_mask = eth_addr_invert(match->wc.masks.dl_src);
  468|    193|    ofmatch->dl_dst = match->flow.dl_dst;
  469|    193|    ofmatch->dl_dst_mask = eth_addr_invert(match->wc.masks.dl_dst);
  470|       |
  471|    193|    if (match->wc.masks.vlans[0].tci == htons(0)) {
  ------------------
  |  Branch (471:9): [True: 188, False: 5]
  ------------------
  472|    188|        wc |= OFPFW11_DL_VLAN | OFPFW11_DL_VLAN_PCP;
  473|    188|    } else if (match->wc.masks.vlans[0].tci & htons(VLAN_CFI)
  ------------------
  |  Branch (473:16): [True: 5, False: 0]
  ------------------
  474|      5|               && !(match->flow.vlans[0].tci & htons(VLAN_CFI))) {
  ------------------
  |  Branch (474:19): [True: 2, False: 3]
  ------------------
  475|      2|        ofmatch->dl_vlan = htons(OFPVID11_NONE);
  476|      2|        wc |= OFPFW11_DL_VLAN_PCP;
  477|      3|    } else {
  478|      3|        if (!(match->wc.masks.vlans[0].tci & htons(VLAN_VID_MASK))) {
  ------------------
  |  Branch (478:13): [True: 1, False: 2]
  ------------------
  479|      1|            ofmatch->dl_vlan = htons(OFPVID11_ANY);
  480|      2|        } else {
  481|      2|            ofmatch->dl_vlan =
  482|      2|                htons(vlan_tci_to_vid(match->flow.vlans[0].tci));
  483|      2|        }
  484|       |
  485|      3|        if (!(match->wc.masks.vlans[0].tci & htons(VLAN_PCP_MASK))) {
  ------------------
  |  Branch (485:13): [True: 2, False: 1]
  ------------------
  486|      2|            wc |= OFPFW11_DL_VLAN_PCP;
  487|      2|        } else {
  488|      1|            ofmatch->dl_vlan_pcp = vlan_tci_to_pcp(match->flow.vlans[0].tci);
  489|      1|        }
  490|      3|    }
  491|       |
  492|    193|    if (!match->wc.masks.dl_type) {
  ------------------
  |  Branch (492:9): [True: 139, False: 54]
  ------------------
  493|    139|        wc |= OFPFW11_DL_TYPE;
  494|    139|    } else {
  495|     54|        ofmatch->dl_type = ofputil_dl_type_to_openflow(match->flow.dl_type);
  496|     54|    }
  497|       |
  498|    193|    if (!(match->wc.masks.nw_tos & IP_DSCP_MASK)) {
  ------------------
  |  |  724|    193|#define IP_DSCP_MASK 0xfc
  ------------------
  |  Branch (498:9): [True: 192, False: 1]
  ------------------
  499|    192|        wc |= OFPFW11_NW_TOS;
  500|    192|    } else {
  501|      1|        ofmatch->nw_tos = match->flow.nw_tos & IP_DSCP_MASK;
  ------------------
  |  |  724|      1|#define IP_DSCP_MASK 0xfc
  ------------------
  502|      1|    }
  503|       |
  504|    193|    if (!match->wc.masks.nw_proto) {
  ------------------
  |  Branch (504:9): [True: 173, False: 20]
  ------------------
  505|    173|        wc |= OFPFW11_NW_PROTO;
  506|    173|    } else {
  507|     20|        ofmatch->nw_proto = match->flow.nw_proto;
  508|     20|    }
  509|       |
  510|    193|    ofmatch->nw_src = match->flow.nw_src;
  511|    193|    ofmatch->nw_src_mask = ~match->wc.masks.nw_src;
  512|    193|    ofmatch->nw_dst = match->flow.nw_dst;
  513|    193|    ofmatch->nw_dst_mask = ~match->wc.masks.nw_dst;
  514|       |
  515|    193|    if (!match->wc.masks.tp_src) {
  ------------------
  |  Branch (515:9): [True: 192, False: 1]
  ------------------
  516|    192|        wc |= OFPFW11_TP_SRC;
  517|    192|    } else {
  518|      1|        ofmatch->tp_src = match->flow.tp_src;
  519|      1|    }
  520|       |
  521|    193|    if (!match->wc.masks.tp_dst) {
  ------------------
  |  Branch (521:9): [True: 192, False: 1]
  ------------------
  522|    192|        wc |= OFPFW11_TP_DST;
  523|    192|    } else {
  524|      1|        ofmatch->tp_dst = match->flow.tp_dst;
  525|      1|    }
  526|       |
  527|    193|    if (!(match->wc.masks.mpls_lse[0] & htonl(MPLS_LABEL_MASK))) {
  ------------------
  |  Branch (527:9): [True: 192, False: 1]
  ------------------
  528|    192|        wc |= OFPFW11_MPLS_LABEL;
  529|    192|    } else {
  530|      1|        ofmatch->mpls_label = htonl(mpls_lse_to_label(
  531|      1|                                        match->flow.mpls_lse[0]));
  532|      1|    }
  533|       |
  534|    193|    if (!(match->wc.masks.mpls_lse[0] & htonl(MPLS_TC_MASK))) {
  ------------------
  |  Branch (534:9): [True: 192, False: 1]
  ------------------
  535|    192|        wc |= OFPFW11_MPLS_TC;
  536|    192|    } else {
  537|      1|        ofmatch->mpls_tc = mpls_lse_to_tc(match->flow.mpls_lse[0]);
  538|      1|    }
  539|       |
  540|    193|    ofmatch->metadata = match->flow.metadata;
  541|    193|    ofmatch->metadata_mask = ~match->wc.masks.metadata;
  542|       |
  543|       |    ofmatch->wildcards = htonl(wc);
  544|    193|}
ofputil_match_typical_len:
  550|    675|{
  551|    675|    switch (protocol) {
  552|      0|    case OFPUTIL_P_OF10_STD:
  ------------------
  |  Branch (552:5): [True: 0, False: 675]
  ------------------
  553|      0|    case OFPUTIL_P_OF10_STD_TID:
  ------------------
  |  Branch (553:5): [True: 0, False: 675]
  ------------------
  554|      0|        return sizeof(struct ofp10_match);
  555|       |
  556|      0|    case OFPUTIL_P_OF10_NXM:
  ------------------
  |  Branch (556:5): [True: 0, False: 675]
  ------------------
  557|      0|    case OFPUTIL_P_OF10_NXM_TID:
  ------------------
  |  Branch (557:5): [True: 0, False: 675]
  ------------------
  558|      0|        return NXM_TYPICAL_LEN;
  ------------------
  |  |  179|      0|#define NXM_TYPICAL_LEN 64
  ------------------
  559|       |
  560|    193|    case OFPUTIL_P_OF11_STD:
  ------------------
  |  Branch (560:5): [True: 193, False: 482]
  ------------------
  561|    193|        return sizeof(struct ofp11_match);
  562|       |
  563|    116|    case OFPUTIL_P_OF12_OXM:
  ------------------
  |  Branch (563:5): [True: 116, False: 559]
  ------------------
  564|    482|    case OFPUTIL_P_OF13_OXM:
  ------------------
  |  Branch (564:5): [True: 366, False: 309]
  ------------------
  565|    482|    case OFPUTIL_P_OF14_OXM:
  ------------------
  |  Branch (565:5): [True: 0, False: 675]
  ------------------
  566|    482|    case OFPUTIL_P_OF15_OXM:
  ------------------
  |  Branch (566:5): [True: 0, False: 675]
  ------------------
  567|    482|        return NXM_TYPICAL_LEN;
  ------------------
  |  |  179|    482|#define NXM_TYPICAL_LEN 64
  ------------------
  568|       |
  569|      0|    default:
  ------------------
  |  Branch (569:5): [True: 0, False: 675]
  ------------------
  570|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  571|    675|    }
  572|    675|}
ofputil_put_ofp11_match:
  586|    675|{
  587|    675|    switch (protocol) {
  ------------------
  |  Branch (587:13): [True: 675, False: 0]
  ------------------
  588|      0|    case OFPUTIL_P_OF10_STD:
  ------------------
  |  Branch (588:5): [True: 0, False: 675]
  ------------------
  589|      0|    case OFPUTIL_P_OF10_STD_TID:
  ------------------
  |  Branch (589:5): [True: 0, False: 675]
  ------------------
  590|      0|    case OFPUTIL_P_OF10_NXM:
  ------------------
  |  Branch (590:5): [True: 0, False: 675]
  ------------------
  591|      0|    case OFPUTIL_P_OF10_NXM_TID:
  ------------------
  |  Branch (591:5): [True: 0, False: 675]
  ------------------
  592|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  593|       |
  594|    193|    case OFPUTIL_P_OF11_STD: {
  ------------------
  |  Branch (594:5): [True: 193, False: 482]
  ------------------
  595|    193|        struct ofp11_match *om;
  596|       |
  597|       |        /* Make sure that no padding is needed. */
  598|    193|        BUILD_ASSERT_DECL(sizeof *om % 8 == 0);
  ------------------
  |  |  270|    193|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
  599|       |
  600|    193|        om = ofpbuf_put_uninit(b, sizeof *om);
  601|    193|        ofputil_match_to_ofp11_match(match, om);
  602|    193|        return sizeof *om;
  603|      0|    }
  604|       |
  605|    116|    case OFPUTIL_P_OF12_OXM:
  ------------------
  |  Branch (605:5): [True: 116, False: 559]
  ------------------
  606|    482|    case OFPUTIL_P_OF13_OXM:
  ------------------
  |  Branch (606:5): [True: 366, False: 309]
  ------------------
  607|    482|    case OFPUTIL_P_OF14_OXM:
  ------------------
  |  Branch (607:5): [True: 0, False: 675]
  ------------------
  608|    482|    case OFPUTIL_P_OF15_OXM:
  ------------------
  |  Branch (608:5): [True: 0, False: 675]
  ------------------
  609|    482|        return oxm_put_match(b, match,
  610|    482|                             ofputil_protocol_to_ofp_version(protocol));
  611|    675|    }
  612|       |
  613|      0|    OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  614|    675|}
ofputil_dl_type_to_openflow:
  621|  9.69k|{
  622|  9.69k|    return (flow_dl_type == htons(FLOW_DL_TYPE_NONE)
  ------------------
  |  Branch (622:13): [True: 2, False: 9.69k]
  ------------------
  623|  9.69k|            ? htons(OFP_DL_TYPE_NOT_ETH_TYPE)
  624|  9.69k|            : flow_dl_type);
  625|  9.69k|}
ofputil_normalize_match:
 1000|  10.0k|{
 1001|       |    ofputil_normalize_match__(match, true);
 1002|  10.0k|}
ofp-match.c:ofputil_netmask_to_wcbits:
   57|  10.2k|{
   58|  10.2k|    return 32 - ip_count_cidr_bits(netmask);
   59|  10.2k|}
ofp-match.c:ofputil_normalize_match__:
  867|  10.0k|{
  868|  10.0k|    enum {
  869|  10.0k|        MAY_NW_ADDR     = 1 << 0, /* nw_src, nw_dst */
  870|  10.0k|        MAY_TP_ADDR     = 1 << 1, /* tp_src, tp_dst */
  871|  10.0k|        MAY_NW_PROTO    = 1 << 2, /* nw_proto */
  872|  10.0k|        MAY_IPVx        = 1 << 3, /* tos, frag, ttl */
  873|  10.0k|        MAY_ARP_SHA     = 1 << 4, /* arp_sha */
  874|  10.0k|        MAY_ARP_THA     = 1 << 5, /* arp_tha */
  875|  10.0k|        MAY_IPV6        = 1 << 6, /* ipv6_src, ipv6_dst, ipv6_label */
  876|  10.0k|        MAY_ND_TARGET   = 1 << 7, /* nd_target */
  877|  10.0k|        MAY_MPLS        = 1 << 8, /* mpls label and tc */
  878|  10.0k|        MAY_ETHER       = 1 << 9, /* dl_src, dl_dst */
  879|  10.0k|    } may_match;
  880|       |
  881|  10.0k|    struct flow_wildcards wc = match->wc;
  882|  10.0k|    ovs_be16 dl_type;
  883|       |
  884|       |    /* Figure out what fields may be matched. */
  885|       |    /* Check the packet_type first and extract dl_type. */
  886|  10.0k|    if (wc.masks.packet_type == 0 || match_has_default_packet_type(match)) {
  ------------------
  |  Branch (886:9): [True: 6.05k, False: 4.00k]
  |  Branch (886:38): [True: 3.41k, False: 590]
  ------------------
  887|  9.46k|        may_match = MAY_ETHER;
  888|  9.46k|        dl_type = match->flow.dl_type;
  889|  9.46k|    } else if (wc.masks.packet_type == OVS_BE32_MAX &&
  ------------------
  |  |   43|  1.18k|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (889:16): [True: 590, False: 0]
  ------------------
  890|    590|               pt_ns(match->flow.packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (890:16): [True: 139, False: 451]
  ------------------
  891|    139|        may_match = 0;
  892|    139|        dl_type = pt_ns_type_be(match->flow.packet_type);
  893|    451|    } else {
  894|    451|        may_match = 0;
  895|    451|        dl_type = 0;
  896|    451|    }
  897|  10.0k|    if (dl_type == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (897:9): [True: 879, False: 9.17k]
  ------------------
  898|    879|        may_match |= MAY_NW_PROTO | MAY_IPVx | MAY_NW_ADDR;
  899|    879|        if (match->flow.nw_proto == IPPROTO_TCP ||
  ------------------
  |  Branch (899:13): [True: 134, False: 745]
  ------------------
  900|    745|            match->flow.nw_proto == IPPROTO_UDP ||
  ------------------
  |  Branch (900:13): [True: 236, False: 509]
  ------------------
  901|    509|            match->flow.nw_proto == IPPROTO_SCTP ||
  ------------------
  |  Branch (901:13): [True: 76, False: 433]
  ------------------
  902|    524|            match->flow.nw_proto == IPPROTO_ICMP) {
  ------------------
  |  Branch (902:13): [True: 78, False: 355]
  ------------------
  903|    524|            may_match |= MAY_TP_ADDR;
  904|    524|        }
  905|  9.17k|    } else if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (905:16): [True: 745, False: 8.43k]
  ------------------
  906|    745|        may_match |= MAY_NW_PROTO | MAY_IPVx | MAY_IPV6;
  907|    745|        if (match->flow.nw_proto == IPPROTO_TCP ||
  ------------------
  |  Branch (907:13): [True: 63, False: 682]
  ------------------
  908|    682|            match->flow.nw_proto == IPPROTO_UDP ||
  ------------------
  |  Branch (908:13): [True: 34, False: 648]
  ------------------
  909|    648|            match->flow.nw_proto == IPPROTO_SCTP) {
  ------------------
  |  Branch (909:13): [True: 28, False: 620]
  ------------------
  910|    125|            may_match |= MAY_TP_ADDR;
  911|    620|        } else if (match->flow.nw_proto == IPPROTO_ICMPV6) {
  ------------------
  |  Branch (911:20): [True: 143, False: 477]
  ------------------
  912|    143|            may_match |= MAY_TP_ADDR;
  913|    143|            if (match->flow.tp_src == htons(ND_NEIGHBOR_SOLICIT)) {
  ------------------
  |  Branch (913:17): [True: 24, False: 119]
  ------------------
  914|     24|                may_match |= MAY_ND_TARGET | MAY_ARP_SHA;
  915|    119|            } else if (match->flow.tp_src == htons(ND_NEIGHBOR_ADVERT)) {
  ------------------
  |  Branch (915:24): [True: 26, False: 93]
  ------------------
  916|     26|                may_match |= MAY_ND_TARGET | MAY_ARP_THA;
  917|     26|            }
  918|    143|        }
  919|  8.43k|    } else if (dl_type == htons(ETH_TYPE_ARP) ||
  ------------------
  |  Branch (919:16): [True: 38, False: 8.39k]
  ------------------
  920|  8.39k|               dl_type == htons(ETH_TYPE_RARP)) {
  ------------------
  |  Branch (920:16): [True: 26, False: 8.36k]
  ------------------
  921|     64|        may_match |= MAY_NW_PROTO | MAY_NW_ADDR | MAY_ARP_SHA | MAY_ARP_THA;
  922|  8.36k|    } else if (eth_type_mpls(dl_type)) {
  ------------------
  |  Branch (922:16): [True: 184, False: 8.18k]
  ------------------
  923|    184|        may_match |= MAY_MPLS;
  924|    184|    }
  925|       |
  926|       |    /* Clear the fields that may not be matched. */
  927|  10.0k|    if (!(may_match & MAY_ETHER)) {
  ------------------
  |  Branch (927:9): [True: 590, False: 9.46k]
  ------------------
  928|    590|        wc.masks.dl_src = wc.masks.dl_dst = eth_addr_zero;
  929|    590|    }
  930|  10.0k|    if (!(may_match & MAY_NW_ADDR)) {
  ------------------
  |  Branch (930:9): [True: 9.11k, False: 943]
  ------------------
  931|  9.11k|        wc.masks.nw_src = wc.masks.nw_dst = htonl(0);
  932|  9.11k|    }
  933|  10.0k|    if (!(may_match & MAY_TP_ADDR)) {
  ------------------
  |  Branch (933:9): [True: 9.26k, False: 792]
  ------------------
  934|  9.26k|        wc.masks.tp_src = wc.masks.tp_dst = htons(0);
  935|  9.26k|    }
  936|  10.0k|    if (!(may_match & MAY_NW_PROTO)) {
  ------------------
  |  Branch (936:9): [True: 8.36k, False: 1.68k]
  ------------------
  937|  8.36k|        wc.masks.nw_proto = 0;
  938|  8.36k|    }
  939|  10.0k|    if (!(may_match & MAY_IPVx)) {
  ------------------
  |  Branch (939:9): [True: 8.43k, False: 1.62k]
  ------------------
  940|  8.43k|        wc.masks.nw_tos = 0;
  941|  8.43k|        wc.masks.nw_ttl = 0;
  942|  8.43k|    }
  943|  10.0k|    if (!(may_match & MAY_ARP_SHA)) {
  ------------------
  |  Branch (943:9): [True: 9.96k, False: 88]
  ------------------
  944|  9.96k|        WC_UNMASK_FIELD(&wc, arp_sha);
  ------------------
  |  |  205|  9.96k|    memset(&(WC)->masks.FIELD, 0, sizeof (WC)->masks.FIELD)
  ------------------
  945|  9.96k|    }
  946|  10.0k|    if (!(may_match & MAY_ARP_THA)) {
  ------------------
  |  Branch (946:9): [True: 9.96k, False: 90]
  ------------------
  947|  9.96k|        WC_UNMASK_FIELD(&wc, arp_tha);
  ------------------
  |  |  205|  9.96k|    memset(&(WC)->masks.FIELD, 0, sizeof (WC)->masks.FIELD)
  ------------------
  948|  9.96k|    }
  949|  10.0k|    if (!(may_match & MAY_IPV6)) {
  ------------------
  |  Branch (949:9): [True: 9.31k, False: 745]
  ------------------
  950|  9.31k|        wc.masks.ipv6_src = wc.masks.ipv6_dst = in6addr_any;
  951|  9.31k|        wc.masks.ipv6_label = htonl(0);
  952|  9.31k|    }
  953|  10.0k|    if (!(may_match & MAY_ND_TARGET)) {
  ------------------
  |  Branch (953:9): [True: 10.0k, False: 50]
  ------------------
  954|  10.0k|        wc.masks.nd_target = in6addr_any;
  955|  10.0k|    }
  956|  10.0k|    if (!(may_match & MAY_MPLS)) {
  ------------------
  |  Branch (956:9): [True: 9.87k, False: 184]
  ------------------
  957|  9.87k|        memset(wc.masks.mpls_lse, 0, sizeof wc.masks.mpls_lse);
  958|  9.87k|    }
  959|       |
  960|       |    /* Log any changes. */
  961|  10.0k|    if (!flow_wildcards_equal(&wc, &match->wc)) {
  ------------------
  |  Branch (961:9): [True: 456, False: 9.59k]
  ------------------
  962|    456|        bool log = may_log && !VLOG_DROP_INFO(&rl);
  ------------------
  |  |  235|    912|#define VLOG_DROP_INFO(RL) vlog_should_drop(&this_module, VLL_INFO, RL)
  ------------------
  |  Branch (962:20): [True: 456, False: 0]
  |  Branch (962:31): [True: 0, False: 456]
  ------------------
  963|    456|        char *pre = (log
  ------------------
  |  Branch (963:22): [True: 0, False: 456]
  ------------------
  964|    456|                     ? match_to_string(match, NULL, OFP_DEFAULT_PRIORITY)
  ------------------
  |  |  138|      0|#define OFP_DEFAULT_PRIORITY 0x8000
  ------------------
  965|    456|                     : NULL);
  966|       |
  967|    456|        match->wc = wc;
  968|    456|        match_zero_wildcarded_fields(match);
  969|       |
  970|    456|        if (log) {
  ------------------
  |  Branch (970:13): [True: 0, False: 456]
  ------------------
  971|      0|            char *post = match_to_string(match, NULL, OFP_DEFAULT_PRIORITY);
  ------------------
  |  |  138|      0|#define OFP_DEFAULT_PRIORITY 0x8000
  ------------------
  972|      0|            VLOG_INFO("normalization changed ofp_match, details:");
  ------------------
  |  |  210|      0|#define VLOG_INFO(...) VLOG(VLL_INFO, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|      0|    do {                                                \
  |  |  |  |  281|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  973|      0|            VLOG_INFO(" pre: %s", pre);
  ------------------
  |  |  210|      0|#define VLOG_INFO(...) VLOG(VLL_INFO, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|      0|    do {                                                \
  |  |  |  |  281|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  974|      0|            VLOG_INFO("post: %s", post);
  ------------------
  |  |  210|      0|#define VLOG_INFO(...) VLOG(VLL_INFO, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|      0|    do {                                                \
  |  |  |  |  281|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  975|      0|            free(pre);
  976|      0|            free(post);
  977|      0|        }
  978|    456|    }
  979|  10.0k|}

ofphdrs_len:
  368|  1.46k|{
  369|  1.46k|    if (hdrs->type == OFPT_VENDOR) {
  ------------------
  |  |   32|  1.46k|#define OFPT_VENDOR 4
  ------------------
  |  Branch (369:9): [True: 127, False: 1.33k]
  ------------------
  370|    127|        return sizeof(struct ofp_vendor_header);
  371|    127|    }
  372|       |
  373|  1.33k|    switch ((enum ofp_version) hdrs->version) {
  ------------------
  |  Branch (373:13): [True: 342, False: 996]
  ------------------
  374|     49|    case OFP10_VERSION:
  ------------------
  |  Branch (374:5): [True: 49, False: 1.28k]
  ------------------
  375|     49|        if (hdrs->type == OFPT10_STATS_REQUEST ||
  ------------------
  |  |   33|     98|#define OFPT10_STATS_REQUEST 16
  ------------------
  |  Branch (375:13): [True: 15, False: 34]
  ------------------
  376|     34|            hdrs->type == OFPT10_STATS_REPLY) {
  ------------------
  |  |   34|     34|#define OFPT10_STATS_REPLY 17
  ------------------
  |  Branch (376:13): [True: 15, False: 19]
  ------------------
  377|     30|            return (hdrs->stat == OFPST_VENDOR
  ------------------
  |  |   37|     30|#define OFPST_VENDOR 0xffff
  ------------------
  |  Branch (377:21): [True: 16, False: 14]
  ------------------
  378|     30|                    ? sizeof(struct nicira10_stats_msg)
  379|     30|                    : sizeof(struct ofp10_stats_msg));
  380|     30|        }
  381|     19|        break;
  382|       |
  383|     47|    case OFP11_VERSION:
  ------------------
  |  Branch (383:5): [True: 47, False: 1.29k]
  ------------------
  384|     96|    case OFP12_VERSION:
  ------------------
  |  Branch (384:5): [True: 49, False: 1.28k]
  ------------------
  385|    157|    case OFP13_VERSION:
  ------------------
  |  Branch (385:5): [True: 61, False: 1.27k]
  ------------------
  386|    225|    case OFP14_VERSION:
  ------------------
  |  Branch (386:5): [True: 68, False: 1.27k]
  ------------------
  387|    293|    case OFP15_VERSION:
  ------------------
  |  Branch (387:5): [True: 68, False: 1.27k]
  ------------------
  388|    293|        if (hdrs->type == OFPT11_STATS_REQUEST ||
  ------------------
  |  |   35|    586|#define OFPT11_STATS_REQUEST 18
  ------------------
  |  Branch (388:13): [True: 81, False: 212]
  ------------------
  389|    212|            hdrs->type == OFPT11_STATS_REPLY) {
  ------------------
  |  |   36|    212|#define OFPT11_STATS_REPLY 19
  ------------------
  |  Branch (389:13): [True: 81, False: 131]
  ------------------
  390|    162|            return (hdrs->stat == OFPST_VENDOR
  ------------------
  |  |   37|    162|#define OFPST_VENDOR 0xffff
  ------------------
  |  Branch (390:21): [True: 28, False: 134]
  ------------------
  391|    162|                    ? sizeof(struct ofp11_vendor_stats_msg)
  392|    162|                    : sizeof(struct ofp11_stats_msg));
  393|    162|        }
  394|    131|        break;
  395|  1.33k|    }
  396|       |
  397|  1.14k|    return sizeof(struct ofp_header);
  398|  1.33k|}
ofpraw_alloc:
  580|  9.83k|{
  581|  9.83k|    return ofpraw_alloc_xid(raw, version, alloc_xid(), extra_tailroom);
  582|  9.83k|}
ofpraw_alloc_xid:
  588|  9.83k|{
  589|  9.83k|    struct ofpbuf *buf = ofpbuf_new(0);
  590|  9.83k|    ofpraw_put__(raw, version, xid, extra_tailroom, buf);
  591|  9.83k|    return buf;
  592|  9.83k|}
ofpmsg_update_length:
  882|  9.83k|{
  883|  9.83k|    struct ofp_header *oh = ofpbuf_at_assert(buf, 0, sizeof *oh);
  884|       |    oh->length = htons(buf->size);
  885|  9.83k|}
ofp-msgs.c:alloc_xid:
  185|  9.83k|{
  186|  9.83k|    static atomic_count next_xid = ATOMIC_COUNT_INIT(1);
  ------------------
  |  |  441|  9.83k|#define ATOMIC_COUNT_INIT(VALUE) { VALUE }
  ------------------
  187|       |
  188|       |    return htonl(atomic_count_inc(&next_xid));
  189|  9.83k|}
ofp-msgs.c:ofpraw_put__:
  712|  9.83k|{
  713|  9.83k|    const struct raw_info *info = raw_info_get(raw);
  714|  9.83k|    const struct raw_instance *instance = raw_instance_get(info, version);
  715|  9.83k|    const struct ofphdrs *hdrs = &instance->hdrs;
  716|  9.83k|    struct ofp_header *oh;
  717|       |
  718|  9.83k|    ofpbuf_prealloc_tailroom(buf, (instance->hdrs_len + info->min_body
  719|  9.83k|                                   + extra_tailroom));
  720|  9.83k|    buf->header = ofpbuf_put_uninit(buf, instance->hdrs_len);
  721|  9.83k|    buf->msg = ofpbuf_tail(buf);
  722|       |
  723|  9.83k|    oh = buf->header;
  724|  9.83k|    oh->version = version;
  725|  9.83k|    oh->type = hdrs->type;
  726|  9.83k|    oh->length = htons(buf->size);
  727|  9.83k|    oh->xid = xid;
  728|       |
  729|  9.83k|    if (hdrs->type == OFPT_VENDOR) {
  ------------------
  |  |   32|  9.83k|#define OFPT_VENDOR 4
  ------------------
  |  Branch (729:9): [True: 4.04k, False: 5.78k]
  ------------------
  730|  4.04k|        struct ofp_vendor_header *ovh = buf->header;
  731|       |
  732|  4.04k|        ovh->vendor = htonl(hdrs->vendor);
  733|  4.04k|        ovh->subtype = htonl(hdrs->subtype);
  734|  5.78k|    } else if (version == OFP10_VERSION
  ------------------
  |  Branch (734:16): [True: 5.10k, False: 675]
  ------------------
  735|  5.10k|               && (hdrs->type == OFPT10_STATS_REQUEST ||
  ------------------
  |  |   33|  10.2k|#define OFPT10_STATS_REQUEST 16
  ------------------
  |  Branch (735:20): [True: 0, False: 5.10k]
  ------------------
  736|  5.10k|                   hdrs->type == OFPT10_STATS_REPLY)) {
  ------------------
  |  |   34|  5.10k|#define OFPT10_STATS_REPLY 17
  ------------------
  |  Branch (736:20): [True: 0, False: 5.10k]
  ------------------
  737|      0|        struct ofp10_stats_msg *osm = buf->header;
  738|       |
  739|      0|        osm->type = htons(hdrs->stat);
  740|      0|        osm->flags = htons(0);
  741|       |
  742|      0|        if (hdrs->stat == OFPST_VENDOR) {
  ------------------
  |  |   37|      0|#define OFPST_VENDOR 0xffff
  ------------------
  |  Branch (742:13): [True: 0, False: 0]
  ------------------
  743|      0|            struct ofp10_vendor_stats_msg *ovsm = buf->header;
  744|       |
  745|      0|            ovsm->vendor = htonl(hdrs->vendor);
  746|      0|            if (hdrs->vendor == NX_VENDOR_ID) {
  ------------------
  |  |  110|      0|#define NX_VENDOR_ID    0x00002320 /* Nicira. */
  ------------------
  |  Branch (746:17): [True: 0, False: 0]
  ------------------
  747|      0|                struct nicira10_stats_msg *nsm = buf->header;
  748|       |
  749|      0|                nsm->subtype = htonl(hdrs->subtype);
  750|      0|                memset(nsm->pad, 0, sizeof nsm->pad);
  751|      0|            } else {
  752|      0|                OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  753|      0|            }
  754|      0|        }
  755|  5.78k|    } else if (version != OFP10_VERSION
  ------------------
  |  Branch (755:16): [True: 675, False: 5.10k]
  ------------------
  756|    675|               && (hdrs->type == OFPT11_STATS_REQUEST ||
  ------------------
  |  |   35|  1.35k|#define OFPT11_STATS_REQUEST 18
  ------------------
  |  Branch (756:20): [True: 0, False: 675]
  ------------------
  757|    675|                   hdrs->type == OFPT11_STATS_REPLY)) {
  ------------------
  |  |   36|    675|#define OFPT11_STATS_REPLY 19
  ------------------
  |  Branch (757:20): [True: 0, False: 675]
  ------------------
  758|      0|        struct ofp11_stats_msg *osm = buf->header;
  759|       |
  760|      0|        osm->type = htons(hdrs->stat);
  761|      0|        osm->flags = htons(0);
  762|      0|        memset(osm->pad, 0, sizeof osm->pad);
  763|       |
  764|      0|        if (hdrs->stat == OFPST_VENDOR) {
  ------------------
  |  |   37|      0|#define OFPST_VENDOR 0xffff
  ------------------
  |  Branch (764:13): [True: 0, False: 0]
  ------------------
  765|      0|            struct ofp11_vendor_stats_msg *ovsm = buf->header;
  766|       |
  767|      0|            ovsm->vendor = htonl(hdrs->vendor);
  768|       |            ovsm->subtype = htonl(hdrs->subtype);
  769|      0|        }
  770|      0|    }
  771|  9.83k|}
ofp-msgs.c:raw_info_get:
 1307|  9.83k|{
 1308|  9.83k|    ofpmsgs_init();
 1309|       |
 1310|  9.83k|    ovs_assert(raw < ARRAY_SIZE(raw_infos));
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(raw < ARRAY_SIZE(raw_infos));
  ------------------
  |  |  297|  9.83k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  9.83k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  9.83k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  9.83k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.83k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  9.83k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1311|  9.83k|    return &raw_infos[raw];
 1312|  9.83k|}
ofp-msgs.c:ofpmsgs_init:
 1363|  9.83k|{
 1364|  9.83k|    static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
  ------------------
  |  |  134|  9.83k|    {                                           \
  |  |  135|  9.83k|        false,                                  \
  |  |  136|  9.83k|        OVS_MUTEX_INITIALIZER,                  \
  |  |  ------------------
  |  |  |  |   45|  9.83k|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|  9.83k|                                "<unlocked>" }
  |  |  ------------------
  |  |  137|  9.83k|    }
  ------------------
 1365|  9.83k|    const struct raw_info *info;
 1366|       |
 1367|  9.83k|    if (!ovsthread_once_start(&once)) {
  ------------------
  |  Branch (1367:9): [True: 9.83k, False: 1]
  ------------------
 1368|  9.83k|        return;
 1369|  9.83k|    }
 1370|       |
 1371|      1|    hmap_init(&raw_instance_map);
 1372|    162|    for (info = raw_infos; info < &raw_infos[ARRAY_SIZE(raw_infos)]; info++)
  ------------------
  |  |  297|    162|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|    162|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    162|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|    162|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    162|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    162|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1372:28): [True: 161, False: 1]
  ------------------
 1373|    161|    {
 1374|    161|        int n_instances = info->max_version - info->min_version + 1;
 1375|    161|        struct raw_instance *inst;
 1376|       |
 1377|    161|        for (inst = info->instances;
 1378|  1.62k|             inst < &info->instances[n_instances];
  ------------------
  |  Branch (1378:14): [True: 1.46k, False: 161]
  ------------------
 1379|  1.46k|             inst++) {
 1380|  1.46k|            inst->hdrs_len = ofphdrs_len(&inst->hdrs);
 1381|  1.46k|            hmap_insert(&raw_instance_map, &inst->hmap_node,
  ------------------
  |  |  101|  1.46k|    hmap_insert_at(HMAP, NODE, HASH, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|  1.46k|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  1.46k|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|  1.46k|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1382|  1.46k|                        ofphdrs_hash(&inst->hdrs));
 1383|  1.46k|        }
 1384|    161|    }
 1385|       |
 1386|      1|    ovsthread_once_done(&once);
 1387|      1|}
ofp-msgs.c:ofphdrs_hash:
  193|  1.46k|{
  194|  1.46k|    BUILD_ASSERT_DECL(sizeof *hdrs % 4 == 0);
  ------------------
  |  |  270|  1.46k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
  195|  1.46k|    return hash_bytes32((const uint32_t *) hdrs, sizeof *hdrs, 0);
  196|  1.46k|}
ofp-msgs.c:raw_instance_get:
 1316|  9.83k|{
 1317|  9.83k|    ovs_assert(version >= info->min_version && version <= info->max_version);
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
  |  Branch (1317:16): [True: 9.83k, False: 0]
  |  Branch (1317:48): [True: 9.83k, False: 0]
  ------------------
 1318|  9.83k|    return &info->instances[version - info->min_version];
 1319|  9.83k|}

ofputil_packet_in_reason_to_string:
  710|  5.88k|{
  711|  5.88k|    switch (reason) {
  712|    833|    case OFPR_NO_MATCH:
  ------------------
  |  Branch (712:5): [True: 833, False: 5.05k]
  ------------------
  713|    833|        return "no_match";
  714|    833|    case OFPR_ACTION:
  ------------------
  |  Branch (714:5): [True: 833, False: 5.05k]
  ------------------
  715|    833|        return "action";
  716|    832|    case OFPR_INVALID_TTL:
  ------------------
  |  Branch (716:5): [True: 832, False: 5.05k]
  ------------------
  717|    832|        return "invalid_ttl";
  718|    831|    case OFPR_ACTION_SET:
  ------------------
  |  Branch (718:5): [True: 831, False: 5.05k]
  ------------------
  719|    831|        return "action_set";
  720|    830|    case OFPR_GROUP:
  ------------------
  |  Branch (720:5): [True: 830, False: 5.05k]
  ------------------
  721|    830|        return "group";
  722|    830|    case OFPR_PACKET_OUT:
  ------------------
  |  Branch (722:5): [True: 830, False: 5.05k]
  ------------------
  723|    830|        return "packet_out";
  724|    830|    case OFPR_EXPLICIT_MISS:
  ------------------
  |  Branch (724:5): [True: 830, False: 5.05k]
  ------------------
  725|    899|    case OFPR_IMPLICIT_MISS:
  ------------------
  |  Branch (725:5): [True: 69, False: 5.81k]
  ------------------
  726|    899|        return "";
  727|       |
  728|      0|    case OFPR_N_REASONS:
  ------------------
  |  Branch (728:5): [True: 0, False: 5.88k]
  ------------------
  729|      0|    default:
  ------------------
  |  Branch (729:5): [True: 0, False: 5.88k]
  ------------------
  730|      0|        snprintf(reasonbuf, bufsize, "%d", (int) reason);
  731|      0|        return reasonbuf;
  732|  5.88k|    }
  733|  5.88k|}
ofputil_packet_in_reason_from_string:
  738|    833|{
  739|    833|    int i;
  740|       |
  741|  5.95k|    for (i = 0; i < OFPR_N_REASONS; i++) {
  ------------------
  |  Branch (741:17): [True: 5.88k, False: 69]
  ------------------
  742|  5.88k|        char reasonbuf[OFPUTIL_PACKET_IN_REASON_BUFSIZE];
  743|  5.88k|        const char *reason_s;
  744|       |
  745|  5.88k|        reason_s = ofputil_packet_in_reason_to_string(i, reasonbuf,
  746|  5.88k|                                                      sizeof reasonbuf);
  747|  5.88k|        if (!strcasecmp(s, reason_s)) {
  ------------------
  |  Branch (747:13): [True: 764, False: 5.12k]
  ------------------
  748|    764|            *reason = i;
  749|    764|            return true;
  750|    764|        }
  751|  5.88k|    }
  752|     69|    return false;
  753|    833|}

str_to_u8:
   39|  12.4k|{
   40|  12.4k|    int value;
   41|       |
   42|  12.4k|    if (!str_to_int(str, 0, &value) || value < 0 || value > 255) {
  ------------------
  |  Branch (42:9): [True: 22, False: 12.3k]
  |  Branch (42:40): [True: 31, False: 12.3k]
  |  Branch (42:53): [True: 21, False: 12.3k]
  ------------------
   43|     74|        return xasprintf("invalid %s \"%s\"", name, str);
   44|     74|    }
   45|  12.3k|    *valuep = value;
   46|       |    return NULL;
   47|  12.4k|}
str_to_u16:
   57|  17.5k|{
   58|  17.5k|    int value;
   59|       |
   60|  17.5k|    if (!str_to_int(str, 0, &value) || value < 0 || value > 65535) {
  ------------------
  |  Branch (60:9): [True: 333, False: 17.2k]
  |  Branch (60:40): [True: 39, False: 17.2k]
  |  Branch (60:53): [True: 35, False: 17.1k]
  ------------------
   61|    407|        return xasprintf("invalid %s \"%s\"", name, str);
   62|    407|    }
   63|  17.1k|    *valuep = value;
   64|       |    return NULL;
   65|  17.5k|}
str_to_u32:
   73|  7.06k|{
   74|  7.06k|    unsigned long long value;
   75|       |
   76|  7.06k|    if (!str[0]) {
  ------------------
  |  Branch (76:9): [True: 40, False: 7.02k]
  ------------------
   77|     40|        return xstrdup("missing required numeric argument");
   78|     40|    }
   79|       |
   80|  7.02k|    if (!str_to_ullong(str, 0, &value) || value > UINT32_MAX) {
  ------------------
  |  Branch (80:9): [True: 592, False: 6.43k]
  |  Branch (80:43): [True: 32, False: 6.40k]
  ------------------
   81|    624|        return xasprintf("invalid numeric format %s", str);
   82|    624|    }
   83|  6.40k|    *valuep = value;
   84|       |    return NULL;
   85|  7.02k|}
str_to_u64:
   93|  5.43k|{
   94|  5.43k|    char *tail;
   95|  5.43k|    uint64_t value;
   96|       |
   97|  5.43k|    if (!str[0]) {
  ------------------
  |  Branch (97:9): [True: 23, False: 5.40k]
  ------------------
   98|     23|        return xstrdup("missing required numeric argument");
   99|     23|    }
  100|       |
  101|  5.43k|    errno = 0;
  102|  5.40k|    value = strtoull(str, &tail, 0);
  103|  5.40k|    if (errno == EINVAL || errno == ERANGE || *tail) {
  ------------------
  |  Branch (103:9): [True: 0, False: 5.40k]
  |  Branch (103:28): [True: 2, False: 5.40k]
  |  Branch (103:47): [True: 32, False: 5.37k]
  ------------------
  104|     34|        return xasprintf("invalid numeric format %s", str);
  105|     34|    }
  106|  5.37k|    *valuep = value;
  107|       |    return NULL;
  108|  5.40k|}
str_to_be64:
  117|  3.88k|{
  118|  3.88k|    uint64_t value = 0;
  119|  3.88k|    char *error;
  120|       |
  121|  3.88k|    error = str_to_u64(str, &value);
  122|  3.88k|    if (!error) {
  ------------------
  |  Branch (122:9): [True: 3.84k, False: 44]
  ------------------
  123|  3.84k|        *valuep = htonll(value);
  124|  3.84k|    }
  125|  3.88k|    return error;
  126|  3.88k|}
str_to_mac:
  134|    803|{
  135|    803|    if (!ovs_scan(str, ETH_ADDR_SCAN_FMT, ETH_ADDR_SCAN_ARGS(*mac))) {
  ------------------
  |  |  403|    803|#define ETH_ADDR_SCAN_FMT "%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8":%"SCNx8
  ------------------
                  if (!ovs_scan(str, ETH_ADDR_SCAN_FMT, ETH_ADDR_SCAN_ARGS(*mac))) {
  ------------------
  |  |  405|    803|    &(EA).ea[0], &(EA).ea[1], &(EA).ea[2], &(EA).ea[3], &(EA).ea[4], &(EA).ea[5]
  ------------------
  |  Branch (135:9): [True: 8, False: 795]
  ------------------
  136|      8|        return xasprintf("invalid mac address %s", str);
  137|      8|    }
  138|    795|    return NULL;
  139|    803|}
str_to_ip:
  147|  1.77k|{
  148|  1.77k|    struct in_addr in_addr;
  149|       |
  150|  1.77k|    if (lookup_ip(str, &in_addr)) {
  ------------------
  |  Branch (150:9): [True: 6, False: 1.76k]
  ------------------
  151|      6|        return xasprintf("%s: could not convert to IP address", str);
  152|      6|    }
  153|  1.76k|    *ip = in_addr.s_addr;
  154|       |    return NULL;
  155|  1.77k|}
str_to_connhelper:
  163|    371|{
  164|    371|    if (!strcmp(str, "ftp")) {
  ------------------
  |  Branch (164:9): [True: 105, False: 266]
  ------------------
  165|    105|        *alg = IPPORT_FTP;
  ------------------
  |  |  695|    105|#define IPPORT_FTP  21
  ------------------
  166|    105|        return NULL;
  167|    105|    }
  168|    266|    if (!strcmp(str, "tftp")) {
  ------------------
  |  Branch (168:9): [True: 217, False: 49]
  ------------------
  169|    217|        *alg = IPPORT_TFTP;
  ------------------
  |  |  699|    217|#define IPPORT_TFTP  69
  ------------------
  170|    217|        return NULL;
  171|    217|    }
  172|     49|    return xasprintf("invalid conntrack helper \"%s\"", str);
  173|    266|}
ofp_parse_protocol:
  177|   184k|{
  178|   184k|    static const struct ofp_protocol protocols[] = {
  179|   184k|        { "ip", ETH_TYPE_IP, 0 },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  180|   184k|        { "ipv4", ETH_TYPE_IP, 0 },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  181|   184k|        { "ip4", ETH_TYPE_IP, 0 },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  182|   184k|        { "arp", ETH_TYPE_ARP, 0 },
  ------------------
  |  |  408|   184k|#define ETH_TYPE_ARP           0x0806
  ------------------
  183|   184k|        { "icmp", ETH_TYPE_IP, IPPROTO_ICMP },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  184|   184k|        { "tcp", ETH_TYPE_IP, IPPROTO_TCP },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  185|   184k|        { "udp", ETH_TYPE_IP, IPPROTO_UDP },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  186|   184k|        { "sctp", ETH_TYPE_IP, IPPROTO_SCTP },
  ------------------
  |  |  407|   184k|#define ETH_TYPE_IP            0x0800
  ------------------
  187|   184k|        { "ipv6", ETH_TYPE_IPV6, 0 },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  188|   184k|        { "ip6", ETH_TYPE_IPV6, 0 },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  189|   184k|        { "icmp6", ETH_TYPE_IPV6, IPPROTO_ICMPV6 },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  190|   184k|        { "tcp6", ETH_TYPE_IPV6, IPPROTO_TCP },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  191|   184k|        { "udp6", ETH_TYPE_IPV6, IPPROTO_UDP },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  192|   184k|        { "sctp6", ETH_TYPE_IPV6, IPPROTO_SCTP },
  ------------------
  |  |  413|   184k|#define ETH_TYPE_IPV6          0x86dd
  ------------------
  193|   184k|        { "rarp", ETH_TYPE_RARP, 0},
  ------------------
  |  |  415|   184k|#define ETH_TYPE_RARP          0x8035
  ------------------
  194|   184k|        { "mpls", ETH_TYPE_MPLS, 0 },
  ------------------
  |  |  416|   184k|#define ETH_TYPE_MPLS          0x8847
  ------------------
  195|   184k|        { "mplsm", ETH_TYPE_MPLS_MCAST, 0 },
  ------------------
  |  |  417|   184k|#define ETH_TYPE_MPLS_MCAST    0x8848
  ------------------
  196|   184k|    };
  197|   184k|    const struct ofp_protocol *p;
  198|       |
  199|  3.14M|    for (p = protocols; p < &protocols[ARRAY_SIZE(protocols)]; p++) {
  ------------------
  |  |  297|  3.14M|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  3.14M|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  3.14M|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  3.14M|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.14M|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  3.14M|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (199:25): [True: 2.97M, False: 168k]
  ------------------
  200|  2.97M|        if (!strcmp(p->name, name)) {
  ------------------
  |  Branch (200:13): [True: 15.3k, False: 2.95M]
  ------------------
  201|  15.3k|            *p_out = p;
  202|  15.3k|            return true;
  203|  15.3k|        }
  204|  2.97M|    }
  205|   168k|    *p_out = NULL;
  206|       |    return false;
  207|   184k|}
ofp_parse_field:
  219|  85.4k|{
  220|  85.4k|    union mf_value value, mask;
  221|  85.4k|    char *error;
  222|       |
  223|  85.4k|    if (!*s) {
  ------------------
  |  Branch (223:9): [True: 44.9k, False: 40.5k]
  ------------------
  224|       |        /* If there's no string, we're just trying to match on the
  225|       |         * existence of the field, so use a no-op value. */
  226|  44.9k|        s = "0/0";
  227|  44.9k|    }
  228|       |
  229|  85.4k|    error = mf_parse(mf, s, port_map, &value, &mask);
  230|  85.4k|    if (!error) {
  ------------------
  |  Branch (230:9): [True: 84.8k, False: 665]
  ------------------
  231|  84.8k|        *usable_protocols &= mf_set(mf, &value, &mask, match, &error);
  232|  84.8k|        match_add_ethernet_prereq(match, mf);
  233|  84.8k|    }
  234|  85.4k|    return error;
  235|  85.4k|}
ofp_extract_actions:
  239|  14.9k|{
  240|  14.9k|    s = strstr(s, "action");
  241|  14.9k|    if (s) {
  ------------------
  |  Branch (241:9): [True: 14.7k, False: 189]
  ------------------
  242|  14.7k|        *s = '\0';
  243|  14.7k|        s = strchr(s + 1, '=');
  244|  14.7k|        return s ? s + 1 : NULL;
  ------------------
  |  Branch (244:16): [True: 14.7k, False: 1]
  ------------------
  245|  14.7k|    } else {
  246|       |        return NULL;
  247|    189|    }
  248|  14.9k|}
ofputil_parse_key_value:
  294|   910k|{
  295|       |    /* Skip white space and delimiters.  If that brings us to the end of the
  296|       |     * input string, we are done and there are no more key-value pairs. */
  297|   910k|    *stringp += strspn(*stringp, ", \t\r\n");
  298|   910k|    if (**stringp == '\0') {
  ------------------
  |  Branch (298:9): [True: 170k, False: 739k]
  ------------------
  299|   170k|        *keyp = *valuep = NULL;
  300|   170k|        return false;
  301|   170k|    }
  302|       |
  303|       |    /* Extract the key and the delimiter that ends the key-value pair or begins
  304|       |     * the value.  Advance the input position past the key and delimiter. */
  305|   739k|    char *key = *stringp;
  306|   739k|    size_t key_len = strcspn(key, ":=(, \t\r\n");
  307|   739k|    char key_delim = key[key_len];
  308|   739k|    key[key_len] = '\0';
  309|   739k|    *stringp += key_len + (key_delim != '\0');
  310|       |
  311|       |    /* Figure out what delimiter ends the value:
  312|       |     *
  313|       |     *     - If key_delim is ":" or "=", the value extends until white space
  314|       |     *       or a comma.
  315|       |     *
  316|       |     *     - If key_delim is "(", the value extends until ")".
  317|       |     *
  318|       |     * If there is no value, we are done. */
  319|   739k|    const char *value_delims;
  320|   739k|    if (key_delim == ':' || key_delim == '=') {
  ------------------
  |  Branch (320:9): [True: 239k, False: 500k]
  |  Branch (320:29): [True: 317k, False: 182k]
  ------------------
  321|   557k|        value_delims = ", \t\r\n";
  322|   557k|    } else if (key_delim == '(') {
  ------------------
  |  Branch (322:16): [True: 65.7k, False: 116k]
  ------------------
  323|  65.7k|        value_delims = ")";
  324|   116k|    } else {
  325|   116k|        *keyp = key;
  326|   116k|        *valuep = key + key_len; /* Empty string. */
  327|   116k|        return true;
  328|   116k|    }
  329|       |
  330|       |    /* Extract the value.  Advance the input position past the value and
  331|       |     * delimiter. */
  332|   623k|    char *value = *stringp;
  333|   623k|    size_t value_len = parse_value(value, value_delims);
  334|   623k|    char value_delim = value[value_len];
  335|       |
  336|       |    /* Handle the special case if the value is of the form "(x)->y".
  337|       |     * After parsing, 'valuep' will be pointing to - "x)->y".
  338|       |     * */
  339|   623k|    if (key_delim == '(' && value[value_len] == ')' &&
  ------------------
  |  Branch (339:9): [True: 65.7k, False: 557k]
  |  Branch (339:29): [True: 58.1k, False: 7.54k]
  ------------------
  340|  58.1k|        value[value_len + 1] == '-' && value[value_len + 2] == '>') {
  ------------------
  |  Branch (340:9): [True: 1.13k, False: 57.0k]
  |  Branch (340:40): [True: 743, False: 395]
  ------------------
  341|    743|        value_delims = ", \t\r\n";
  342|    743|        value_len += parse_value(&value[value_len], value_delims);
  343|    743|        value_delim = value[value_len];
  344|    743|    }
  345|   623k|    value[value_len] = '\0';
  346|   623k|    *stringp += value_len + (value_delim != '\0');
  347|       |
  348|   623k|    *keyp = key;
  349|   623k|    *valuep = value;
  350|       |    return true;
  351|   739k|}
ofp-parse.c:parse_value:
  252|   623k|{
  253|   623k|    size_t n = 0;
  254|       |
  255|       |    /* Iterate until we reach a delimiter.
  256|       |     *
  257|       |     * strchr(s, '\0') returns s+strlen(s), so this test handles the null
  258|       |     * terminator at the end of 's'.  */
  259|  17.6M|    while (!strchr(delimiters, s[n])) {
  ------------------
  |  Branch (259:12): [True: 17.0M, False: 620k]
  ------------------
  260|  17.0M|        if (s[n] == '(') {
  ------------------
  |  Branch (260:13): [True: 22.3k, False: 17.0M]
  ------------------
  261|  22.3k|            int level = 0;
  262|  50.8M|            do {
  263|  50.8M|                switch (s[n]) {
  ------------------
  |  Branch (263:25): [True: 355k, False: 50.5M]
  ------------------
  264|  3.59k|                case '\0':
  ------------------
  |  Branch (264:17): [True: 3.59k, False: 50.8M]
  ------------------
  265|  3.59k|                    return n;
  266|   232k|                case '(':
  ------------------
  |  Branch (266:17): [True: 232k, False: 50.6M]
  ------------------
  267|   232k|                    level++;
  268|   232k|                    break;
  269|   120k|                case ')':
  ------------------
  |  Branch (269:17): [True: 120k, False: 50.7M]
  ------------------
  270|   120k|                    level--;
  271|   120k|                    break;
  272|  50.8M|                }
  273|  50.8M|                n++;
  274|  50.8M|            } while (level > 0);
  ------------------
  |  Branch (274:22): [True: 50.8M, False: 18.7k]
  ------------------
  275|  17.0M|        } else {
  276|  17.0M|            n++;
  277|  17.0M|        }
  278|  17.0M|    }
  279|   620k|    return n;
  280|   623k|}

ofputil_port_map_get_name:
   53|     23|{
   54|     23|    struct namemap_node *node
   55|     23|        = (map
  ------------------
  |  Branch (55:12): [True: 0, False: 23]
  ------------------
   56|     23|           ? namemap_find_by_number(&map->map, ofp_to_u16(ofp_port))
   57|     23|           : NULL);
   58|     23|    return node && !node->duplicate ? node->name : NULL;
  ------------------
  |  Branch (58:12): [True: 0, False: 23]
  |  Branch (58:20): [True: 0, False: 0]
  ------------------
   59|     23|}
ofputil_port_map_get_number:
   64|  4.31k|{
   65|  4.31k|    struct namemap_node *node
   66|  4.31k|        = map ? namemap_find_by_name(&map->map, name) : NULL;
  ------------------
  |  Branch (66:11): [True: 0, False: 4.31k]
  ------------------
   67|  4.31k|    return node && !node->duplicate ? u16_to_ofp(node->number) : OFPP_NONE;
  ------------------
  |  |   47|  4.31k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|  4.31k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (67:12): [True: 0, False: 4.31k]
  |  Branch (67:20): [True: 0, False: 0]
  ------------------
   68|  4.31k|}
ofputil_port_from_ofp11:
   84|  1.57k|{
   85|  1.57k|    uint32_t ofp11_port_h = ntohl(ofp11_port);
   86|       |
   87|  1.57k|    if (ofp11_port_h < ofp_to_u16(OFPP_MAX)) {
  ------------------
  |  |   33|  1.57k|#define OFPP_MAX        OFP_PORT_C(0xff00) /* Max # of switch ports. */
  |  |  ------------------
  |  |  |  |  157|  1.57k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (87:9): [True: 532, False: 1.04k]
  ------------------
   88|    532|        *ofp10_port = u16_to_ofp(ofp11_port_h);
   89|    532|        return 0;
   90|  1.04k|    } else if (ofp11_port_h >= ofp11_to_u32(OFPP11_MAX)) {
  ------------------
  |  |   71|  1.04k|#define OFPP11_MAX    OFP11_PORT_C(0xffffff00)
  |  |  ------------------
  |  |  |  |  159|  1.04k|#define OFP11_PORT_C(X) ((OVS_FORCE ofp11_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (90:16): [True: 603, False: 438]
  ------------------
   91|    603|        *ofp10_port = u16_to_ofp(ofp11_port_h - OFPP11_OFFSET);
  ------------------
  |  |   72|    603|#define OFPP11_OFFSET 0xffff0000    /* OFPP11_MAX - OFPP_MAX */
  ------------------
   92|    603|        return 0;
   93|    603|    } else {
   94|    438|        *ofp10_port = OFPP_NONE;
  ------------------
  |  |   47|    438|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|    438|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
   95|       |
   96|    438|        static struct vlog_rate_limit rll = VLOG_RATE_LIMIT_INIT(1, 5);
  ------------------
  |  |  110|    438|        {                                                                 \
  |  |  111|    438|            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
  |  |  ------------------
  |  |  |  |   37|  1.75k|#define TOKEN_BUCKET_INIT(RATE, BURST) { RATE, BURST, 0, LLONG_MIN }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:48): [True: 0, Folded]
  |  |  |  |  |  Branch (37:48): [Folded, False: 438]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|    438|            0,                              /* first_dropped */           \
  |  |  113|    438|            0,                              /* last_dropped */            \
  |  |  114|    438|            0,                              /* n_dropped */               \
  |  |  115|    438|            OVS_MUTEX_INITIALIZER           /* mutex */                   \
  |  |  ------------------
  |  |  |  |   45|    438|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|    438|                                "<unlocked>" }
  |  |  ------------------
  |  |  116|    438|        }
  ------------------
   97|    438|        VLOG_WARN_RL(&rll, "port %"PRIu32" is outside the supported "
  ------------------
  |  |  224|    438|#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|    438|    do {                                                                \
  |  |  |  |  288|    438|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|    438|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 438]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|    438|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 438]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|    438|                     "range 0 through %d or 0x%"PRIx32" through 0x%"PRIx32,
   99|    438|                     ofp11_port_h, ofp_to_u16(OFPP_MAX) - 1,
  100|    438|                     ofp11_to_u32(OFPP11_MAX), UINT32_MAX);
  101|       |
  102|    438|        return OFPERR_OFPBAC_BAD_OUT_PORT;
  103|    438|    }
  104|  1.57k|}
ofputil_port_to_ofp11:
  112|  26.6k|{
  113|       |    return htonl(ofp_to_u16(ofp10_port) < ofp_to_u16(OFPP_MAX)
  ------------------
  |  Branch (113:12): [True: 22.0k, False: 4.62k]
  ------------------
  114|  26.6k|                 ? ofp_to_u16(ofp10_port)
  115|  26.6k|                 : ofp_to_u16(ofp10_port) + OFPP11_OFFSET);
  116|  26.6k|}
ofputil_port_from_string:
  152|   217k|{
  153|   217k|    unsigned int port32; /* int is at least 32 bits wide. */
  154|       |
  155|   217k|    if (*s == '-') {
  ------------------
  |  Branch (155:9): [True: 11, False: 217k]
  ------------------
  156|     11|        VLOG_WARN("Negative value %s is not a valid port number.", s);
  ------------------
  |  |  209|     11|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|     11|    do {                                                \
  |  |  |  |  281|     11|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|     11|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|     11|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|     11|        return false;
  158|     11|    }
  159|   217k|    *portp = 0;
  160|   217k|    if (str_to_uint(s, 10, &port32)) {
  ------------------
  |  Branch (160:9): [True: 210k, False: 7.18k]
  ------------------
  161|   210k|        if (port32 < ofp_to_u16(OFPP_MAX)) {
  ------------------
  |  |   33|   210k|#define OFPP_MAX        OFP_PORT_C(0xff00) /* Max # of switch ports. */
  |  |  ------------------
  |  |  |  |  157|   210k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (161:13): [True: 205k, False: 5.30k]
  ------------------
  162|       |            /* Pass. */
  163|   205k|        } else if (port32 < ofp_to_u16(OFPP_FIRST_RESV)) {
  ------------------
  |  |   34|  5.30k|#define OFPP_FIRST_RESV OFP_PORT_C(0xfff7) /* First assigned reserved port. */
  |  |  ------------------
  |  |  |  |  157|  5.30k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (163:20): [True: 283, False: 5.02k]
  ------------------
  164|    283|            VLOG_WARN("port %u is a reserved OF1.0 port number that will "
  ------------------
  |  |  209|    283|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|    283|    do {                                                \
  |  |  |  |  281|    283|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|    283|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 283]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|    283|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 283]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|    283|                      "be translated to %u when talking to an OF1.1 or "
  166|    283|                      "later controller", port32, port32 + OFPP11_OFFSET);
  167|  5.02k|        } else if (port32 <= ofp_to_u16(OFPP_LAST_RESV)) {
  ------------------
  |  |   35|  5.02k|#define OFPP_LAST_RESV  OFP_PORT_C(0xffff) /* Last assigned reserved port. */
  |  |  ------------------
  |  |  |  |  157|  5.02k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (167:20): [True: 4.74k, False: 284]
  ------------------
  168|  4.74k|            char name[OFP_MAX_PORT_NAME_LEN];
  169|       |
  170|  4.74k|            ofputil_port_to_string(u16_to_ofp(port32), NULL,
  171|  4.74k|                                   name, sizeof name);
  172|  4.74k|            VLOG_WARN_ONCE("referring to port %s as %"PRIu32" is deprecated "
  ------------------
  |  |  240|  4.74k|#define VLOG_WARN_ONCE(...) VLOG_ONCE(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  294|  4.74k|    do {                                                                \
  |  |  |  |  295|  4.74k|        static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|  4.74k|    {                                           \
  |  |  |  |  |  |  135|  4.74k|        false,                                  \
  |  |  |  |  |  |  136|  4.74k|        OVS_MUTEX_INITIALIZER,                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   45|  4.74k|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |  |  |  |  |   46|  4.74k|                                "<unlocked>" }
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|  4.74k|    }
  |  |  |  |  ------------------
  |  |  |  |  296|  4.74k|        if (ovsthread_once_start(&once)) {                              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (296:13): [True: 1, False: 4.74k]
  |  |  |  |  ------------------
  |  |  |  |  297|      1|            vlog(&this_module, LEVEL, __VA_ARGS__);                     \
  |  |  |  |  298|      1|            ovsthread_once_done(&once);                                 \
  |  |  |  |  299|      1|        }                                                               \
  |  |  |  |  300|  4.74k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (300:14): [Folded, False: 4.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|  4.74k|                           "for compatibility with OpenFlow 1.1 and later",
  174|  4.74k|                           name, port32);
  175|  4.74k|        } else if (port32 < ofp11_to_u32(OFPP11_MAX)) {
  ------------------
  |  |   71|    284|#define OFPP11_MAX    OFP11_PORT_C(0xffffff00)
  |  |  ------------------
  |  |  |  |  159|    284|#define OFP11_PORT_C(X) ((OVS_FORCE ofp11_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (175:20): [True: 74, False: 210]
  ------------------
  176|     74|            VLOG_WARN("port %u is outside the supported range 0 through "
  ------------------
  |  |  209|     74|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|     74|    do {                                                \
  |  |  |  |  281|     74|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|     74|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 74]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|     74|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 74]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|     74|                      "%x or 0x%x through 0x%"PRIx32, port32,
  178|     74|                      UINT16_MAX, ofp11_to_u32(OFPP11_MAX), UINT32_MAX);
  179|     74|            return false;
  180|    210|        } else {
  181|    210|            port32 -= OFPP11_OFFSET;
  ------------------
  |  |   72|    210|#define OFPP11_OFFSET 0xffff0000    /* OFPP11_MAX - OFPP_MAX */
  ------------------
  182|    210|        }
  183|       |
  184|   210k|        *portp = u16_to_ofp(port32);
  185|   210k|        return true;
  186|   210k|    } else {
  187|  7.18k|        struct pair {
  188|  7.18k|            const char *name;
  189|  7.18k|            ofp_port_t value;
  190|  7.18k|        };
  191|  7.18k|        static const struct pair pairs[] = {
  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  193|  7.18k|            OFPUTIL_NAMED_PORTS_WITH_NONE
  ------------------
  |  |  131|  7.18k|        OFPUTIL_NAMED_PORTS                     \
  |  |  ------------------
  |  |  |  |  119|  7.18k|        OFPUTIL_NAMED_PORT(IN_PORT)             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|  7.18k|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  120|  7.18k|        OFPUTIL_NAMED_PORT(TABLE)               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   40|  7.18k|#define OFPP_TABLE      OFP_PORT_C(0xfff9) /* Perform actions in flow table. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  7.18k|        OFPUTIL_NAMED_PORT(NORMAL)              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  7.18k|#define OFPP_NORMAL     OFP_PORT_C(0xfffa) /* Process with normal L2/L3. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|  7.18k|        OFPUTIL_NAMED_PORT(FLOOD)               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   42|  7.18k|#define OFPP_FLOOD      OFP_PORT_C(0xfffb) /* All ports except input port and
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  123|  7.18k|        OFPUTIL_NAMED_PORT(ALL)                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   44|  7.18k|#define OFPP_ALL        OFP_PORT_C(0xfffc) /* All ports except input port. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  124|  7.18k|        OFPUTIL_NAMED_PORT(CONTROLLER)          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   45|  7.18k|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  125|  7.18k|        OFPUTIL_NAMED_PORT(LOCAL)               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   46|  7.18k|#define OFPP_LOCAL      OFP_PORT_C(0xfffe) /* Local openflow "port". */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|  7.18k|        OFPUTIL_NAMED_PORT(ANY)                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   80|  7.18k|#define OFPP_ANY OFPP_NONE
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   47|  7.18k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  127|  7.18k|        OFPUTIL_NAMED_PORT(UNSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  7.18k|#define OFPP_UNSET      OFP_PORT_C(0xfff7) /* For OXM_OF_ACTSET_OUTPUT only. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|  7.18k|        OFPUTIL_NAMED_PORT(NONE)
  |  |  ------------------
  |  |  |  |  192|  7.18k|#define OFPUTIL_NAMED_PORT(NAME) {#NAME, OFPP_##NAME},
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|  7.18k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  7.18k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|  7.18k|#undef OFPUTIL_NAMED_PORT
  195|  7.18k|        };
  196|  7.18k|        const struct pair *p;
  197|       |
  198|  57.6k|        for (p = pairs; p < &pairs[ARRAY_SIZE(pairs)]; p++) {
  ------------------
  |  |  297|  57.6k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  57.6k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  57.6k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  57.6k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  57.6k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  57.6k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (198:25): [True: 53.2k, False: 4.36k]
  ------------------
  199|  53.2k|            if (!strcasecmp(s, p->name)) {
  ------------------
  |  Branch (199:17): [True: 2.82k, False: 50.4k]
  ------------------
  200|  2.82k|                *portp = p->value;
  201|  2.82k|                return true;
  202|  2.82k|            }
  203|  53.2k|        }
  204|       |
  205|  4.36k|        ofp_port_t ofp_port = OFPP_NONE;
  ------------------
  |  |   47|  4.36k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|  4.36k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  206|  4.36k|        if (s[0] != '"') {
  ------------------
  |  Branch (206:13): [True: 4.30k, False: 63]
  ------------------
  207|  4.30k|            ofp_port = ofputil_port_map_get_number(port_map, s);
  208|  4.30k|        } else {
  209|     63|            size_t length = strlen(s);
  210|     63|            char *name = NULL;
  211|     63|            if (length > 1
  ------------------
  |  Branch (211:17): [True: 62, False: 1]
  ------------------
  212|     62|                && s[length - 1] == '"'
  ------------------
  |  Branch (212:20): [True: 53, False: 9]
  ------------------
  213|     53|                && json_string_unescape(s + 1, length - 2, &name)) {
  ------------------
  |  Branch (213:20): [True: 15, False: 38]
  ------------------
  214|     15|                ofp_port = ofputil_port_map_get_number(port_map, name);
  215|     15|            }
  216|     63|            free(name);
  217|     63|        }
  218|  4.36k|        if (ofp_port != OFPP_NONE) {
  ------------------
  |  |   47|  4.36k|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  ------------------
  |  |  |  |  157|  4.36k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  ------------------
  ------------------
  |  Branch (218:13): [True: 0, False: 4.36k]
  ------------------
  219|      0|            *portp = ofp_port;
  220|      0|            return true;
  221|      0|        }
  222|       |
  223|  4.36k|        return false;
  224|  4.36k|    }
  225|   217k|}
ofputil_port_get_reserved_name:
  229|  4.77k|{
  230|  4.77k|    switch (port) {
  231|      0|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  232|      0|        OFPUTIL_NAMED_PORTS
  ------------------
  |  |  119|  1.52k|        OFPUTIL_NAMED_PORT(IN_PORT)             \
  |  |  ------------------
  |  |  |  |  231|  1.52k|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|  1.52k|#define OFPP_IN_PORT    OFP_PORT_C(0xfff8) /* Where the packet came in. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  1.52k|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 1.52k, False: 3.25k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|  1.52k|        OFPUTIL_NAMED_PORT(TABLE)               \
  |  |  ------------------
  |  |  |  |  231|    294|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    294|#define OFPP_TABLE      OFP_PORT_C(0xfff9) /* Perform actions in flow table. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    294|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 294, False: 4.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|    476|        OFPUTIL_NAMED_PORT(NORMAL)              \
  |  |  ------------------
  |  |  |  |  231|    476|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    476|#define OFPP_NORMAL     OFP_PORT_C(0xfffa) /* Process with normal L2/L3. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    476|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 476, False: 4.30k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|    476|        OFPUTIL_NAMED_PORT(FLOOD)               \
  |  |  ------------------
  |  |  |  |  231|    334|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|    334|#define OFPP_FLOOD      OFP_PORT_C(0xfffb) /* All ports except input port and
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    334|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 334, False: 4.44k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|    334|        OFPUTIL_NAMED_PORT(ALL)                 \
  |  |  ------------------
  |  |  |  |  231|    315|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    315|#define OFPP_ALL        OFP_PORT_C(0xfffc) /* All ports except input port. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    315|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 315, False: 4.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  124|    315|        OFPUTIL_NAMED_PORT(CONTROLLER)          \
  |  |  ------------------
  |  |  |  |  231|    206|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|    206|#define OFPP_CONTROLLER OFP_PORT_C(0xfffd) /* Send to controller. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    206|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 206, False: 4.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  125|    573|        OFPUTIL_NAMED_PORT(LOCAL)               \
  |  |  ------------------
  |  |  |  |  231|    573|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|    573|#define OFPP_LOCAL      OFP_PORT_C(0xfffe) /* Local openflow "port". */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    573|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 573, False: 4.20k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  126|    591|        OFPUTIL_NAMED_PORT(ANY)                 \
  |  |  ------------------
  |  |  |  |  231|    591|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|    591|#define OFPP_ANY OFPP_NONE
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    591|#define OFPP_NONE       OFP_PORT_C(0xffff) /* Not associated with any port. */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  157|    591|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 591, False: 4.18k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|    591|        OFPUTIL_NAMED_PORT(UNSET)
  |  |  ------------------
  |  |  |  |  231|    442|#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: return #NAME;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    442|#define OFPP_UNSET      OFP_PORT_C(0xfff7) /* For OXM_OF_ACTSET_OUTPUT only. */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    442|#define OFP_PORT_C(X) ((OVS_FORCE ofp_port_t) (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (231:34): [True: 442, False: 4.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|      0|#undef OFPUTIL_NAMED_PORT
  234|       |
  235|     23|    default:
  ------------------
  |  Branch (235:5): [True: 23, False: 4.75k]
  ------------------
  236|       |        return NULL;
  237|  4.77k|    }
  238|  4.77k|}
ofputil_format_port:
  246|     35|{
  247|     35|    const char *reserved_name = ofputil_port_get_reserved_name(port);
  248|     35|    if (reserved_name) {
  ------------------
  |  Branch (248:9): [True: 12, False: 23]
  ------------------
  249|     12|        ds_put_cstr(s, reserved_name);
  250|     12|        return;
  251|     12|    }
  252|       |
  253|     23|    const char *port_name = ofputil_port_map_get_name(port_map, port);
  254|     23|    if (port_name) {
  ------------------
  |  Branch (254:9): [True: 0, False: 23]
  ------------------
  255|      0|        namemap_put_name(port_name, s);
  256|      0|        return;
  257|      0|    }
  258|       |
  259|     23|    ds_put_format(s, "%"PRIu32, port);
  260|     23|}
ofputil_port_to_string:
  270|  4.74k|{
  271|  4.74k|    const char *reserved_name = ofputil_port_get_reserved_name(port);
  272|  4.74k|    if (reserved_name) {
  ------------------
  |  Branch (272:9): [True: 4.74k, False: 0]
  ------------------
  273|  4.74k|        ovs_strlcpy(namebuf, reserved_name, bufsize);
  274|  4.74k|        return;
  275|  4.74k|    }
  276|       |
  277|      0|    const char *port_name = ofputil_port_map_get_name(port_map, port);
  278|      0|    if (port_name) {
  ------------------
  |  Branch (278:9): [True: 0, False: 0]
  ------------------
  279|      0|        struct ds s = DS_EMPTY_INITIALIZER;
  ------------------
  |  |   46|      0|#define DS_EMPTY_INITIALIZER { NULL, 0, 0 }
  ------------------
  280|      0|        namemap_put_name(port_name, &s);
  281|      0|        ovs_strlcpy(namebuf, ds_cstr(&s), bufsize);
  282|      0|        ds_destroy(&s);
  283|      0|        return;
  284|      0|    }
  285|       |
  286|      0|    snprintf(namebuf, bufsize, "%"PRIu32, port);
  287|      0|}

ofpprop_put:
  323|  1.91k|{
  324|  1.91k|    size_t start_ofs = ofpprop_start(msg, type);
  325|  1.91k|    ofpbuf_put(msg, value, len);
  326|  1.91k|    ofpprop_end(msg, start_ofs);
  327|  1.91k|}
ofpprop_put_be16:
  354|    467|{
  355|    467|    if (!ofpprop_is_experimenter(type)) {
  ------------------
  |  Branch (355:9): [True: 467, False: 0]
  ------------------
  356|       |        /* The OpenFlow specs consistently (at least they're consistent!)  give
  357|       |         * properties with a 16-bit integer value a length of 8, not 6, so add
  358|       |         * two bytes of padding.  */
  359|    467|        ovs_be16 padded_value[2] = { value, 0 };
  360|    467|        ofpprop_put(msg, type, padded_value, sizeof padded_value);
  361|    467|    } else {
  362|       |        /* There's no precedent but let's assume that this is generally done
  363|       |         * sanely. */
  364|      0|        ofpprop_put(msg, type, &value, sizeof value);
  365|      0|    }
  366|    467|}
ofpprop_put_be32:
  371|    396|{
  372|    396|    ofpprop_put(msg, type, &value, sizeof value);
  373|    396|}
ofpprop_put_u8:
  395|    195|{
  396|       |    /* There's no precedent for 8-bit properties in OpenFlow 1.5 and earlier
  397|       |     * but let's assume they're done sanely. */
  398|    195|    ofpprop_put(msg, type, &value, 1);
  399|    195|}
ofpprop_put_u16:
  404|    467|{
  405|       |    ofpprop_put_be16(msg, type, htons(value));
  406|    467|}
ofpprop_put_u32:
  411|    396|{
  412|       |    ofpprop_put_be32(msg, type, htonl(value));
  413|    396|}
ofpprop_put_flag:
  447|  5.68k|{
  448|  5.68k|    size_t start = ofpprop_start(msg, type);
  449|  5.68k|    ofpprop_end(msg, start);
  450|  5.68k|}
ofpprop_start:
  478|  7.60k|{
  479|  7.60k|    size_t start_ofs = msg->size;
  480|  7.60k|    if (!ofpprop_is_experimenter(type)) {
  ------------------
  |  Branch (480:9): [True: 7.60k, False: 0]
  ------------------
  481|  7.60k|        struct ofp_prop_header *oph = ofpbuf_put_uninit(msg, sizeof *oph);
  482|  7.60k|        oph->type = htons(type);
  483|  7.60k|        oph->len = htons(4);
  484|  7.60k|    } else {
  485|      0|        struct ofp_prop_experimenter *ope
  486|      0|            = ofpbuf_put_uninit(msg, sizeof *ope);
  487|      0|        ope->type = htons(0xffff);
  488|      0|        ope->len = htons(12);
  489|      0|        ope->experimenter = htonl(ofpprop_type_to_exp_id(type));
  490|       |        ope->exp_type = htonl(ofpprop_type_to_exp_type(type));
  491|      0|    }
  492|  7.60k|    return start_ofs;
  493|  7.60k|}
ofpprop_end:
  501|  7.60k|{
  502|  7.60k|    struct ofp_prop_header *oph;
  503|       |
  504|  7.60k|    oph = ofpbuf_at_assert(msg, start_ofs, sizeof *oph);
  505|  7.60k|    oph->len = htons(msg->size - start_ofs);
  506|  7.60k|    ofpbuf_padto(msg, ROUND_UP(msg->size, 8));
  ------------------
  |  |  303|  7.60k|#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y))
  |  |  ------------------
  |  |  |  |  300|  7.60k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  507|  7.60k|}

ofputil_protocol_to_ofp_version:
   99|  10.3k|{
  100|  10.3k|    switch (protocol) {
  ------------------
  |  Branch (100:13): [True: 10.3k, False: 0]
  ------------------
  101|  4.86k|    case OFPUTIL_P_OF10_STD:
  ------------------
  |  Branch (101:5): [True: 4.86k, False: 5.45k]
  ------------------
  102|  5.10k|    case OFPUTIL_P_OF10_STD_TID:
  ------------------
  |  Branch (102:5): [True: 247, False: 10.0k]
  ------------------
  103|  9.14k|    case OFPUTIL_P_OF10_NXM:
  ------------------
  |  Branch (103:5): [True: 4.03k, False: 6.27k]
  ------------------
  104|  9.15k|    case OFPUTIL_P_OF10_NXM_TID:
  ------------------
  |  Branch (104:5): [True: 13, False: 10.3k]
  ------------------
  105|  9.15k|        return OFP10_VERSION;
  106|    193|    case OFPUTIL_P_OF11_STD:
  ------------------
  |  Branch (106:5): [True: 193, False: 10.1k]
  ------------------
  107|    193|        return OFP11_VERSION;
  108|    232|    case OFPUTIL_P_OF12_OXM:
  ------------------
  |  Branch (108:5): [True: 232, False: 10.0k]
  ------------------
  109|    232|        return OFP12_VERSION;
  110|    732|    case OFPUTIL_P_OF13_OXM:
  ------------------
  |  Branch (110:5): [True: 732, False: 9.58k]
  ------------------
  111|    732|        return OFP13_VERSION;
  112|      0|    case OFPUTIL_P_OF14_OXM:
  ------------------
  |  Branch (112:5): [True: 0, False: 10.3k]
  ------------------
  113|      0|        return OFP14_VERSION;
  114|      0|    case OFPUTIL_P_OF15_OXM:
  ------------------
  |  Branch (114:5): [True: 0, False: 10.3k]
  ------------------
  115|      0|        return OFP15_VERSION;
  116|  10.3k|    }
  117|       |
  118|      0|    OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  119|  10.3k|}
ofputil_protocol_to_string:
  254|  12.1k|{
  255|  12.1k|    const struct proto_abbrev *p;
  256|       |
  257|       |    /* Use a "switch" statement for single-bit names so that we get a compiler
  258|       |     * warning if we forget any. */
  259|  12.1k|    switch (protocol) {
  ------------------
  |  Branch (259:13): [True: 12.1k, False: 0]
  ------------------
  260|  4.03k|    case OFPUTIL_P_OF10_NXM:
  ------------------
  |  Branch (260:5): [True: 4.03k, False: 8.10k]
  ------------------
  261|  4.03k|        return "NXM-table_id";
  262|       |
  263|    273|    case OFPUTIL_P_OF10_NXM_TID:
  ------------------
  |  Branch (263:5): [True: 273, False: 11.8k]
  ------------------
  264|    273|        return "NXM+table_id";
  265|       |
  266|  4.86k|    case OFPUTIL_P_OF10_STD:
  ------------------
  |  Branch (266:5): [True: 4.86k, False: 7.27k]
  ------------------
  267|  4.86k|        return "OpenFlow10-table_id";
  268|       |
  269|    494|    case OFPUTIL_P_OF10_STD_TID:
  ------------------
  |  Branch (269:5): [True: 494, False: 11.6k]
  ------------------
  270|    494|        return "OpenFlow10+table_id";
  271|       |
  272|    894|    case OFPUTIL_P_OF11_STD:
  ------------------
  |  Branch (272:5): [True: 894, False: 11.2k]
  ------------------
  273|    894|        return "OpenFlow11";
  274|       |
  275|    116|    case OFPUTIL_P_OF12_OXM:
  ------------------
  |  Branch (275:5): [True: 116, False: 12.0k]
  ------------------
  276|    116|        return "OXM-OpenFlow12";
  277|       |
  278|    732|    case OFPUTIL_P_OF13_OXM:
  ------------------
  |  Branch (278:5): [True: 732, False: 11.4k]
  ------------------
  279|    732|        return "OXM-OpenFlow13";
  280|       |
  281|    366|    case OFPUTIL_P_OF14_OXM:
  ------------------
  |  Branch (281:5): [True: 366, False: 11.7k]
  ------------------
  282|    366|        return "OXM-OpenFlow14";
  283|       |
  284|    366|    case OFPUTIL_P_OF15_OXM:
  ------------------
  |  Branch (284:5): [True: 366, False: 11.7k]
  ------------------
  285|    366|        return "OXM-OpenFlow15";
  286|  12.1k|    }
  287|       |
  288|       |    /* Check abbreviations. */
  289|      0|    for (p = proto_abbrevs; p < &proto_abbrevs[N_PROTO_ABBREVS]; p++) {
  ------------------
  |  |   46|      0|#define N_PROTO_ABBREVS ARRAY_SIZE(proto_abbrevs)
  |  |  ------------------
  |  |  |  |  297|      0|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|      0|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   44|      0|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (289:29): [True: 0, False: 0]
  ------------------
  290|      0|        if (protocol == p->protocol) {
  ------------------
  |  Branch (290:13): [True: 0, False: 0]
  ------------------
  291|      0|            return p->name;
  292|      0|        }
  293|      0|    }
  294|       |
  295|      0|    return NULL;
  296|      0|}
ofputil_protocols_to_string:
  305|  10.0k|{
  306|  10.0k|    struct ds s;
  307|       |
  308|  10.0k|    ovs_assert(!(protocols & ~OFPUTIL_P_ANY));
  ------------------
  |  |   62|  10.0k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(!(protocols & ~OFPUTIL_P_ANY));
  ------------------
  |  |  100|  10.0k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
  309|  10.0k|    if (protocols == 0) {
  ------------------
  |  Branch (309:9): [True: 224, False: 9.83k]
  ------------------
  310|    224|        return xstrdup("none");
  311|    224|    }
  312|       |
  313|  9.83k|    ds_init(&s);
  314|  25.6k|    while (protocols) {
  ------------------
  |  Branch (314:12): [True: 15.8k, False: 9.83k]
  ------------------
  315|  15.8k|        const struct proto_abbrev *p;
  316|  15.8k|        int i;
  317|       |
  318|  15.8k|        if (s.length) {
  ------------------
  |  Branch (318:13): [True: 5.99k, False: 9.83k]
  ------------------
  319|  5.99k|            ds_put_char(&s, ',');
  320|  5.99k|        }
  321|       |
  322|  46.9k|        for (p = proto_abbrevs; p < &proto_abbrevs[N_PROTO_ABBREVS]; p++) {
  ------------------
  |  |   46|  46.9k|#define N_PROTO_ABBREVS ARRAY_SIZE(proto_abbrevs)
  |  |  ------------------
  |  |  |  |  297|  46.9k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  46.9k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  46.9k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|  46.9k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  46.9k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   44|  46.9k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (322:33): [True: 44.6k, False: 2.30k]
  ------------------
  323|  44.6k|            if ((protocols & p->protocol) == p->protocol) {
  ------------------
  |  Branch (323:17): [True: 13.5k, False: 31.1k]
  ------------------
  324|  13.5k|                ds_put_cstr(&s, p->name);
  325|  13.5k|                protocols &= ~p->protocol;
  326|  13.5k|                goto match;
  327|  13.5k|            }
  328|  44.6k|        }
  329|       |
  330|  13.8k|        for (i = 0; i < CHAR_BIT * sizeof(enum ofputil_protocol); i++) {
  ------------------
  |  Branch (330:21): [True: 13.8k, False: 0]
  ------------------
  331|  13.8k|            enum ofputil_protocol bit = 1u << i;
  332|       |
  333|  13.8k|            if (protocols & bit) {
  ------------------
  |  Branch (333:17): [True: 2.30k, False: 11.5k]
  ------------------
  334|  2.30k|                ds_put_cstr(&s, ofputil_protocol_to_string(bit));
  335|  2.30k|                protocols &= ~bit;
  336|  2.30k|                goto match;
  337|  2.30k|            }
  338|  13.8k|        }
  339|  2.30k|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  340|       |
  341|  15.8k|    match: ;
  342|  15.8k|    }
  343|  9.83k|    return ds_steal_cstr(&s);
  344|  9.83k|}

ofputil_table_map_get_number:
  132|    257|{
  133|    257|    struct namemap_node *node
  134|    257|        = map ? namemap_find_by_name(&map->map, name) : NULL;
  ------------------
  |  Branch (134:11): [True: 0, False: 257]
  ------------------
  135|    257|    return node && !node->duplicate ? node->number : UINT8_MAX;
  ------------------
  |  Branch (135:12): [True: 0, False: 257]
  |  Branch (135:20): [True: 0, False: 0]
  ------------------
  136|    257|}
ofputil_table_from_string:
  158|  8.29k|{
  159|  8.29k|    *tablep = 0;
  160|  8.29k|    if (*s == '-') {
  ------------------
  |  Branch (160:9): [True: 1, False: 8.29k]
  ------------------
  161|      1|        VLOG_WARN("Negative value %s is not a valid table number.", s);
  ------------------
  |  |  209|      1|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|      1|    do {                                                \
  |  |  |  |  281|      1|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|      1|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|      1|        return false;
  163|      1|    }
  164|       |
  165|  8.29k|    unsigned int table;
  166|  8.29k|    if (str_to_uint(s, 10, &table)) {
  ------------------
  |  Branch (166:9): [True: 1.22k, False: 7.07k]
  ------------------
  167|  1.22k|        if (table > 255) {
  ------------------
  |  Branch (167:13): [True: 40, False: 1.18k]
  ------------------
  168|     40|            VLOG_WARN("table %u is outside the supported range 0 through 255",
  ------------------
  |  |  209|     40|#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  280|     40|    do {                                                \
  |  |  |  |  281|     40|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  282|     40|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:13): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  |  |  283|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  284|      0|        }                                               \
  |  |  |  |  285|     40|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:14): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|     40|                      table);
  170|     40|            return false;
  171|     40|        }
  172|  1.18k|        *tablep = table;
  173|  1.18k|        return true;
  174|  7.07k|    } else {
  175|  7.07k|        if (s[0] != '"') {
  ------------------
  |  Branch (175:13): [True: 56, False: 7.01k]
  ------------------
  176|     56|            table = ofputil_table_map_get_number(table_map, s);
  177|  7.01k|        } else {
  178|  7.01k|            size_t length = strlen(s);
  179|  7.01k|            char *name = NULL;
  180|  7.01k|            if (length > 1
  ------------------
  |  Branch (180:17): [True: 6.51k, False: 504]
  ------------------
  181|  6.51k|                && s[length - 1] == '"'
  ------------------
  |  Branch (181:20): [True: 4.38k, False: 2.12k]
  ------------------
  182|  4.38k|                && json_string_unescape(s + 1, length - 2, &name)) {
  ------------------
  |  Branch (182:20): [True: 201, False: 4.18k]
  ------------------
  183|    201|                table = ofputil_table_map_get_number(table_map, name);
  184|    201|            }
  185|  7.01k|            free(name);
  186|  7.01k|        }
  187|  7.07k|        if (table != UINT8_MAX) {
  ------------------
  |  Branch (187:13): [True: 6.81k, False: 257]
  ------------------
  188|  6.81k|            *tablep = table;
  189|  6.81k|            return true;
  190|  6.81k|        }
  191|       |
  192|    257|        return false;
  193|  7.07k|    }
  194|  8.29k|}

ofpbuf_use_stack:
   81|  2.46k|{
   82|  2.46k|    ofpbuf_use__(b, base, allocated, 0, OFPBUF_STACK);
   83|  2.46k|}
ofpbuf_init:
  140|  23.7k|{
  141|  23.7k|    ofpbuf_use(b, size ? xmalloc(size) : NULL, size);
  ------------------
  |  Branch (141:19): [True: 13.9k, False: 9.83k]
  ------------------
  142|  23.7k|}
ofpbuf_uninit:
  147|  17.8k|{
  148|  17.8k|    if (b) {
  ------------------
  |  Branch (148:9): [True: 17.8k, False: 0]
  ------------------
  149|  17.8k|        if (b->source == OFPBUF_MALLOC) {
  ------------------
  |  Branch (149:13): [True: 17.8k, False: 0]
  ------------------
  150|  17.8k|            free(b->base);
  151|  17.8k|        }
  152|  17.8k|    }
  153|  17.8k|}
ofpbuf_new:
  167|  9.83k|{
  168|  9.83k|    struct ofpbuf *b = xmalloc(sizeof *b);
  169|  9.83k|    ofpbuf_init(b, size);
  170|  9.83k|    return b;
  171|  9.83k|}
ofpbuf_prealloc_tailroom:
  306|  3.50M|{
  307|  3.50M|    if (size > ofpbuf_tailroom(b)) {
  ------------------
  |  Branch (307:9): [True: 401k, False: 3.09M]
  ------------------
  308|   401k|        ofpbuf_resize__(b, ofpbuf_headroom(b), MAX(size, 64));
  ------------------
  |  |   95|   401k|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 48.6k, False: 353k]
  |  |  ------------------
  ------------------
  309|   401k|    }
  310|  3.50M|}
ofpbuf_prealloc_headroom:
  317|  93.1k|{
  318|  93.1k|    if (size > ofpbuf_headroom(b)) {
  ------------------
  |  Branch (318:9): [True: 0, False: 93.1k]
  ------------------
  319|      0|        ofpbuf_resize__(b, MAX(size, 64), ofpbuf_tailroom(b));
  ------------------
  |  |   95|      0|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  320|      0|    }
  321|  93.1k|}
ofpbuf_padto:
  368|   129k|{
  369|   129k|    if (b->size < length) {
  ------------------
  |  Branch (369:9): [True: 12.1k, False: 117k]
  ------------------
  370|  12.1k|        ofpbuf_put_zeros(b, length - b->size);
  371|  12.1k|    }
  372|   129k|}
ofpbuf_put_uninit:
  401|  3.49M|{
  402|  3.49M|    void *p;
  403|  3.49M|    ofpbuf_prealloc_tailroom(b, size);
  404|  3.49M|    p = ofpbuf_tail(b);
  405|  3.49M|    b->size += size;
  406|  3.49M|    return p;
  407|  3.49M|}
ofpbuf_put_zeros:
  414|   647k|{
  415|   647k|    void *dst = ofpbuf_put_uninit(b, size);
  416|   647k|    nullable_memset(dst, 0, size);
  417|   647k|    return dst;
  418|   647k|}
ofpbuf_put:
  425|  2.43M|{
  426|  2.43M|    if (!size) {
  ------------------
  |  Branch (426:9): [True: 13.4k, False: 2.42M]
  ------------------
  427|  13.4k|        return ofpbuf_tail(b);
  428|  13.4k|    }
  429|       |
  430|  2.42M|    void *dst = ofpbuf_put_uninit(b, size);
  431|  2.42M|    memcpy(dst, p, size);
  432|  2.42M|    return dst;
  433|  2.43M|}
ofpbuf_put_hex:
  442|  3.74k|{
  443|  3.74k|    size_t initial_size = b->size;
  444|  1.39M|    for (;;) {
  445|  1.39M|        uint8_t byte;
  446|  1.39M|        bool ok;
  447|       |
  448|  1.39M|        s += strspn(s, " .\t\r\n");
  449|  1.39M|        byte = hexits_value(s, 2, &ok);
  450|  1.39M|        if (!ok) {
  ------------------
  |  Branch (450:13): [True: 3.74k, False: 1.39M]
  ------------------
  451|  3.74k|            if (n) {
  ------------------
  |  Branch (451:17): [True: 0, False: 3.74k]
  ------------------
  452|      0|                *n = b->size - initial_size;
  453|      0|            }
  454|  3.74k|            return CONST_CAST(char *, s);
  ------------------
  |  |   85|  3.74k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  3.74k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  3.74k|     (TYPE) (POINTER))
  ------------------
  455|  3.74k|        }
  456|       |
  457|  1.39M|        ofpbuf_put(b, &byte, 1);
  458|  1.39M|        s += 2;
  459|  1.39M|    }
  460|  3.74k|}
ofpbuf_push_uninit:
  481|  97.3k|{
  482|  97.3k|    if (!size) {
  ------------------
  |  Branch (482:9): [True: 4.26k, False: 93.1k]
  ------------------
  483|  4.26k|        return b->data;
  484|  4.26k|    }
  485|       |
  486|  93.1k|    ofpbuf_prealloc_headroom(b, size);
  487|  93.1k|    b->data = (char*)b->data - size;
  488|  93.1k|    b->size += size;
  489|  93.1k|    return b->data;
  490|  97.3k|}
ofpbuf_insert:
  520|    377|{
  521|    377|    if (offset < b->size) {
  ------------------
  |  Branch (521:9): [True: 13, False: 364]
  ------------------
  522|     13|        ofpbuf_put_uninit(b, n); /* b->size gets increased. */
  523|     13|        memmove((char *) b->data + offset + n, (char *) b->data + offset,
  524|     13|                b->size - offset - n);
  525|     13|        memcpy((char *) b->data + offset, data, n);
  526|    364|    } else {
  527|    364|        ovs_assert(offset == b->size);
  ------------------
  |  |   62|    364|#define ovs_assert ovs_ignore
  ------------------
  528|    364|        ofpbuf_put(b, data, n);
  529|    364|    }
  530|    377|}
ofpbuf_steal_data:
  537|  5.91k|{
  538|  5.91k|    void *p;
  539|       |
  540|  5.91k|    if (b->source == OFPBUF_MALLOC && b->data == b->base) {
  ------------------
  |  Branch (540:9): [True: 5.91k, False: 0]
  |  Branch (540:39): [True: 5.91k, False: 0]
  ------------------
  541|  5.91k|        p = b->data;
  542|  5.91k|    } else {
  543|      0|        p = xmemdup(b->data, b->size);
  544|      0|        if (b->source == OFPBUF_MALLOC) {
  ------------------
  |  Branch (544:13): [True: 0, False: 0]
  ------------------
  545|      0|            free(b->base);
  546|      0|        }
  547|      0|    }
  548|  5.91k|    b->base = NULL;
  549|  5.91k|    b->data = NULL;
  550|  5.91k|    b->header = NULL;
  551|       |    b->msg = NULL;
  552|  5.91k|    return p;
  553|  5.91k|}
ofpbuf.c:ofpbuf_use__:
   37|  26.2k|{
   38|  26.2k|    b->base = base;
   39|  26.2k|    b->data = base;
   40|  26.2k|    b->size = size;
   41|       |
   42|  26.2k|    ofpbuf_init__(b, allocated, source);
   43|  26.2k|}
ofpbuf.c:ofpbuf_init__:
   26|  26.2k|{
   27|  26.2k|    b->allocated = allocated;
   28|  26.2k|    b->source = source;
   29|  26.2k|    b->header = NULL;
   30|       |    b->msg = NULL;
   31|  26.2k|    ovs_list_poison(&b->list_node);
   32|  26.2k|}
ofpbuf.c:ofpbuf_use:
   51|  23.7k|{
   52|  23.7k|    ofpbuf_use__(b, base, allocated, 0, OFPBUF_MALLOC);
   53|  23.7k|}
ofpbuf.c:ofpbuf_resize__:
  252|   401k|{
  253|   401k|    void *new_base, *new_data;
  254|   401k|    size_t new_allocated;
  255|       |
  256|   401k|    new_allocated = new_headroom + b->size + new_tailroom;
  257|       |
  258|   401k|    switch (b->source) {
  259|   401k|    case OFPBUF_MALLOC:
  ------------------
  |  Branch (259:5): [True: 401k, False: 0]
  ------------------
  260|   401k|        if (new_headroom == ofpbuf_headroom(b)) {
  ------------------
  |  Branch (260:13): [True: 401k, False: 0]
  ------------------
  261|   401k|            new_base = xrealloc(b->base, new_allocated);
  262|   401k|        } else {
  263|      0|            new_base = xmalloc(new_allocated);
  264|      0|            ofpbuf_copy__(b, new_base, new_headroom, new_tailroom);
  265|      0|            free(b->base);
  266|      0|        }
  267|   401k|        break;
  268|       |
  269|      0|    case OFPBUF_STACK:
  ------------------
  |  Branch (269:5): [True: 0, False: 401k]
  ------------------
  270|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  271|       |
  272|      0|    case OFPBUF_STUB:
  ------------------
  |  Branch (272:5): [True: 0, False: 401k]
  ------------------
  273|      0|        b->source = OFPBUF_MALLOC;
  274|      0|        new_base = xmalloc(new_allocated);
  275|      0|        ofpbuf_copy__(b, new_base, new_headroom, new_tailroom);
  276|      0|        break;
  277|       |
  278|      0|    default:
  ------------------
  |  Branch (278:5): [True: 0, False: 401k]
  ------------------
  279|      0|        OVS_NOT_REACHED();
  ------------------
  |  |  107|      0|#define OVS_NOT_REACHED() abort()
  ------------------
  280|   401k|    }
  281|       |
  282|   401k|    b->allocated = new_allocated;
  283|   401k|    b->base = new_base;
  284|       |
  285|   401k|    new_data = (char *) new_base + new_headroom;
  286|   401k|    if (b->data != new_data) {
  ------------------
  |  Branch (286:9): [True: 39.3k, False: 362k]
  ------------------
  287|  39.3k|        if (b->header) {
  ------------------
  |  Branch (287:13): [True: 26.0k, False: 13.2k]
  ------------------
  288|  26.0k|            ptrdiff_t header_offset = (char *) b->header - (char *) b->data;
  289|       |
  290|  26.0k|            b->header = (char *) new_data + header_offset;
  291|  26.0k|        }
  292|  39.3k|        if (b->msg) {
  ------------------
  |  Branch (292:13): [True: 962, False: 38.3k]
  ------------------
  293|    962|            ptrdiff_t msg_offset = (char *) b->msg - (char *) b->data;
  294|       |
  295|    962|            b->msg = (char *) new_data + msg_offset;
  296|    962|        }
  297|  39.3k|        b->data = new_data;
  298|  39.3k|    }
  299|   401k|}

ofp-msgs.c:atomic_count_inc:
  451|  9.83k|{
  452|  9.83k|    unsigned int old;
  453|       |
  454|  9.83k|    atomic_add_relaxed(&count->count, 1u, &old);
  ------------------
  |  |  414|  9.83k|    atomic_add_explicit(RMW, ARG, ORIG, memory_order_relaxed)
  |  |  ------------------
  |  |  |  |   85|  9.83k|    (*(ORIG) = __c11_atomic_fetch_add(RMW, ARG, ORDER), (void) 0)
  |  |  ------------------
  ------------------
  455|       |
  456|  9.83k|    return old;
  457|  9.83k|}

ovs_mutex_lock_at:
   58|    189|    { \
   59|    189|        struct ovs_##TYPE *l = CONST_CAST(struct ovs_##TYPE *, l_); \
  ------------------
  |  |   85|    189|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|    189|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|    189|     (TYPE) (POINTER))
  ------------------
   60|    189|        int error; \
   61|    189| \
   62|    189|        /* Verify that 'l' was initialized. */ \
   63|    189|        if (OVS_UNLIKELY(!l->where)) { \
  ------------------
  |  |   66|    189|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:33): [True: 0, False: 189]
  |  |  ------------------
  ------------------
   64|      0|            VLOG_ABORT("%s: %s() passed uninitialized ovs_"#TYPE, \
  ------------------
  |  |  206|      0|#define VLOG_ABORT(...) vlog_abort(&this_module, __VA_ARGS__)
  ------------------
   65|      0|                       where, __func__); \
   66|      0|        } \
   67|    189| \
   68|    189|        error = pthread_##TYPE##_##FUN(&l->lock); \
   69|    189|        if (OVS_UNLIKELY(error)) { \
  ------------------
  |  |   66|    189|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:33): [True: 0, False: 189]
  |  |  ------------------
  ------------------
   70|      0|            VLOG_ABORT("%s: pthread_%s_%s failed: %s", where, #TYPE, #FUN, \
  ------------------
  |  |  206|      0|#define VLOG_ABORT(...) vlog_abort(&this_module, __VA_ARGS__)
  ------------------
   71|      0|                       ovs_strerror(error)); \
   72|      0|        } \
   73|    189|        l->where = where; \
   74|    189| }
ovs_mutex_unlock:
  118|    189|    { \
  119|    189|        struct ovs_##TYPE *l = CONST_CAST(struct ovs_##TYPE *, l_); \
  ------------------
  |  |   85|    189|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|    189|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|    189|     (TYPE) (POINTER))
  ------------------
  120|    189|        int error; \
  121|    189| \
  122|    189|        /* Verify that 'l' was initialized. */ \
  123|    189|        ovs_assert(l->where); \
  ------------------
  |  |   62|    189|#define ovs_assert ovs_ignore
  ------------------
  124|    189| \
  125|    189|        l->where = WHERE; \
  126|    189|        error = pthread_##TYPE##_##FUN(&l->lock); \
  127|    189|        if (OVS_UNLIKELY(error)) { \
  ------------------
  |  |   66|    189|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (66:33): [True: 0, False: 189]
  |  |  ------------------
  ------------------
  128|      0|            VLOG_ABORT("%s: pthread_%s_%s failed: %s", l->where, #TYPE, #FUN, \
  ------------------
  |  |  206|      0|#define VLOG_ABORT(...) vlog_abort(&this_module, __VA_ARGS__)
  ------------------
  129|      0|                       ovs_strerror(error)); \
  130|      0|        } \
  131|    189|    }
ovsthread_once_start__:
  495|      4|{
  496|      4|    ovs_mutex_lock(&once->mutex);
  ------------------
  |  |   71|      4|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      4|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      4|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      4|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|       |    /* Mutex synchronizes memory, so we get the current value of 'done'. */
  498|      4|    if (!once->done) {
  ------------------
  |  Branch (498:9): [True: 4, False: 0]
  ------------------
  499|      4|        return true;
  500|      4|    }
  501|      0|    ovs_mutex_unlock(&once->mutex);
  502|       |    return false;
  503|      4|}
ovsthread_once_done:
  507|      4|{
  508|       |    /* We need release semantics here, so that the following store may not
  509|       |     * be moved ahead of any of the preceding initialization operations.
  510|       |     * A release atomic_thread_fence provides that prior memory accesses
  511|       |     * will not be reordered to take place after the following store. */
  512|      4|    atomic_thread_fence(memory_order_release);
  ------------------
  |  |   39|      4|#define atomic_thread_fence(ORDER) __c11_atomic_thread_fence(ORDER)
  ------------------
  513|       |    once->done = true;
  514|      4|    ovs_mutex_unlock(&once->mutex);
  515|      4|}

util.c:counter_util_xalloc_get:
  246|   675k|    {                                                                   \
  247|   675k|        return NAME##_get_unsafe();                                     \
  248|   675k|    }
util.c:counter_util_xalloc_get_unsafe:
  239|   675k|    {                                                                   \
  240|   675k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  241|   675k|        return &var;                                                    \
  242|   675k|    }                                                                   \
flow.c:counter_miniflow_malloc_get:
  246|  10.0k|    {                                                                   \
  247|  10.0k|        return NAME##_get_unsafe();                                     \
  248|  10.0k|    }
flow.c:counter_miniflow_malloc_get_unsafe:
  239|  10.0k|    {                                                                   \
  240|  10.0k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  241|  10.0k|        return &var;                                                    \
  242|  10.0k|    }                                                                   \
hmap.c:counter_hmap_pathological_get:
  246|     11|    {                                                                   \
  247|     11|        return NAME##_get_unsafe();                                     \
  248|     11|    }
hmap.c:counter_hmap_pathological_get_unsafe:
  239|     11|    {                                                                   \
  240|     11|        static thread_local NAME##_type var = __VA_ARGS__;              \
  241|     11|        return &var;                                                    \
  242|     11|    }                                                                   \
hmap.c:counter_hmap_expand_get:
  246|     34|    {                                                                   \
  247|     34|        return NAME##_get_unsafe();                                     \
  248|     34|    }
hmap.c:counter_hmap_expand_get_unsafe:
  239|     34|    {                                                                   \
  240|     34|        static thread_local NAME##_type var = __VA_ARGS__;              \
  241|     34|        return &var;                                                    \
  242|     34|    }                                                                   \

eth_addr_to_uint64:
   82|    389|{
   83|    389|    return (((uint64_t) ntohs(ea.be16[0]) << 32)
   84|    389|            | ((uint64_t) ntohs(ea.be16[1]) << 16)
   85|       |            | ntohs(ea.be16[2]));
   86|    389|}
set_mpls_lse_ttl:
  337|    868|{
  338|    868|    *lse &= ~htonl(MPLS_TTL_MASK);
  339|       |    *lse |= htonl((ttl << MPLS_TTL_SHIFT) & MPLS_TTL_MASK);
  340|    868|}
set_mpls_lse_tc:
  345|    770|{
  346|    770|    *lse &= ~htonl(MPLS_TC_MASK);
  347|       |    *lse |= htonl((tc << MPLS_TC_SHIFT) & MPLS_TC_MASK);
  348|    770|}
set_mpls_lse_label:
  353|    134|{
  354|    134|    *lse &= ~htonl(MPLS_LABEL_MASK);
  355|       |    *lse |= htonl((ntohl(label) << MPLS_LABEL_SHIFT) & MPLS_LABEL_MASK);
  356|    134|}
set_mpls_lse_bos:
  361|  1.76k|{
  362|  1.76k|    *lse &= ~htonl(MPLS_BOS_MASK);
  363|       |    *lse |= htonl((bos << MPLS_BOS_SHIFT) & MPLS_BOS_MASK);
  364|  1.76k|}
eth_format_masked:
  590|      1|{
  591|      1|    ds_put_format(s, ETH_ADDR_FMT, ETH_ADDR_ARGS(eth));
  ------------------
  |  |  370|      1|    "%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8
  ------------------
                  ds_put_format(s, ETH_ADDR_FMT, ETH_ADDR_ARGS(eth));
  ------------------
  |  |  371|      1|#define ETH_ADDR_ARGS(EA) ETH_ADDR_BYTES_ARGS((EA).ea)
  |  |  ------------------
  |  |  |  |  373|      1|         (EAB)[0], (EAB)[1], (EAB)[2], (EAB)[3], (EAB)[4], (EAB)[5]
  |  |  ------------------
  ------------------
  592|      1|    if (mask && !eth_mask_is_exact(*mask)) {
  ------------------
  |  Branch (592:9): [True: 0, False: 1]
  |  Branch (592:17): [True: 0, False: 0]
  ------------------
  593|      0|        ds_put_format(s, "/"ETH_ADDR_FMT, ETH_ADDR_ARGS(*mask));
  ------------------
  |  |  370|      0|    "%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8
  ------------------
                      ds_put_format(s, "/"ETH_ADDR_FMT, ETH_ADDR_ARGS(*mask));
  ------------------
  |  |  371|      0|#define ETH_ADDR_ARGS(EA) ETH_ADDR_BYTES_ARGS((EA).ea)
  |  |  ------------------
  |  |  |  |  373|      0|         (EAB)[0], (EAB)[1], (EAB)[2], (EAB)[3], (EAB)[4], (EAB)[5]
  |  |  ------------------
  ------------------
  594|      0|    }
  595|      1|}
ip_count_cidr_bits:
  677|  10.2k|{
  678|       |    return 32 - ctz32(ntohl(netmask));
  679|  10.2k|}
ip_format_masked:
  683|      1|{
  684|      1|    ds_put_format(s, IP_FMT, IP_ARGS(ip));
  ------------------
  |  |  628|      1|#define IP_FMT "%"PRIu32".%"PRIu32".%"PRIu32".%"PRIu32
  ------------------
                  ds_put_format(s, IP_FMT, IP_ARGS(ip));
  ------------------
  |  |  630|      1|    ntohl(ip) >> 24,                            \
  |  |  631|      1|    (ntohl(ip) >> 16) & 0xff,                   \
  |  |  632|      1|    (ntohl(ip) >> 8) & 0xff,                    \
  |  |  633|      1|    ntohl(ip) & 0xff
  ------------------
  685|      1|    if (mask != OVS_BE32_MAX) {
  ------------------
  |  |   43|      1|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  |  Branch (685:9): [True: 0, False: 1]
  ------------------
  686|      0|        if (ip_is_cidr(mask)) {
  ------------------
  |  Branch (686:13): [True: 0, False: 0]
  ------------------
  687|      0|            ds_put_format(s, "/%d", ip_count_cidr_bits(mask));
  688|      0|        } else {
  689|      0|            ds_put_format(s, "/"IP_FMT, IP_ARGS(mask));
  ------------------
  |  |  628|      0|#define IP_FMT "%"PRIu32".%"PRIu32".%"PRIu32".%"PRIu32
  ------------------
                          ds_put_format(s, "/"IP_FMT, IP_ARGS(mask));
  ------------------
  |  |  630|      0|    ntohl(ip) >> 24,                            \
  |  |  631|      0|    (ntohl(ip) >> 16) & 0xff,                   \
  |  |  632|      0|    (ntohl(ip) >> 8) & 0xff,                    \
  |  |  633|      0|    ntohl(ip) & 0xff
  ------------------
  690|      0|        }
  691|      0|    }
  692|      1|}
ip_parse:
  698|  1.77k|{
  699|       |    return inet_pton(AF_INET, s, ip) == 1;
  700|  1.77k|}
ip_parse_masked_len:
  730|  2.08k|{
  731|  2.08k|    int prefix;
  732|       |
  733|  2.08k|    if (ovs_scan_len(s, n, IP_SCAN_FMT"/"IP_SCAN_FMT,
  ------------------
  |  |  645|  2.08k|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
                  if (ovs_scan_len(s, n, IP_SCAN_FMT"/"IP_SCAN_FMT,
  ------------------
  |  |  645|  2.08k|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
  |  Branch (733:9): [True: 290, False: 1.79k]
  ------------------
  734|  2.08k|                 IP_SCAN_ARGS(ip), IP_SCAN_ARGS(mask))) {
  ------------------
  |  |  647|  2.08k|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|  2.08k|        &((uint8_t *) ip)[1],                               \
  |  |  649|  2.08k|        &((uint8_t *) ip)[2],                               \
  |  |  650|  2.08k|        &((uint8_t *) ip)[3]
  ------------------
                               IP_SCAN_ARGS(ip), IP_SCAN_ARGS(mask))) {
  ------------------
  |  |  647|  2.08k|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|  2.08k|        &((uint8_t *) ip)[1],                               \
  |  |  649|  2.08k|        &((uint8_t *) ip)[2],                               \
  |  |  650|  2.08k|        &((uint8_t *) ip)[3]
  ------------------
  735|       |        /* OK. */
  736|  1.79k|    } else if (ovs_scan_len(s, n, IP_SCAN_FMT"/%d",
  ------------------
  |  |  645|  1.79k|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
  |  Branch (736:16): [True: 1.04k, False: 755]
  ------------------
  737|  1.79k|                            IP_SCAN_ARGS(ip), &prefix)) {
  ------------------
  |  |  647|  1.79k|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|  1.79k|        &((uint8_t *) ip)[1],                               \
  |  |  649|  1.79k|        &((uint8_t *) ip)[2],                               \
  |  |  650|  1.79k|        &((uint8_t *) ip)[3]
  ------------------
  738|  1.04k|        if (prefix < 0 || prefix > 32) {
  ------------------
  |  Branch (738:13): [True: 17, False: 1.02k]
  |  Branch (738:27): [True: 24, False: 1.00k]
  ------------------
  739|     41|            return xasprintf("%s: IPv4 network prefix bits not between 0 and "
  740|     41|                              "32, inclusive", s);
  741|     41|        }
  742|  1.00k|        *mask = be32_prefix_mask(prefix);
  743|  1.00k|    } else if (ovs_scan_len(s, n, IP_SCAN_FMT, IP_SCAN_ARGS(ip))) {
  ------------------
  |  |  645|    755|#define IP_SCAN_FMT "%"SCNu8".%"SCNu8".%"SCNu8".%"SCNu8
  ------------------
                  } else if (ovs_scan_len(s, n, IP_SCAN_FMT, IP_SCAN_ARGS(ip))) {
  ------------------
  |  |  647|    755|        ((void) (ovs_be32) *(ip), &((uint8_t *) ip)[0]),    \
  |  |  648|    755|        &((uint8_t *) ip)[1],                               \
  |  |  649|    755|        &((uint8_t *) ip)[2],                               \
  |  |  650|    755|        &((uint8_t *) ip)[3]
  ------------------
  |  Branch (743:16): [True: 721, False: 34]
  ------------------
  744|    721|        *mask = OVS_BE32_MAX;
  ------------------
  |  |   43|    721|#define OVS_BE32_MAX ((OVS_FORCE ovs_be32) 0xffffffff)
  ------------------
  745|    721|    } else {
  746|     34|        return xasprintf("%s: invalid IP address", s);
  747|     34|    }
  748|  2.01k|    return NULL;
  749|  2.08k|}
ip_parse_masked:
  759|  2.08k|{
  760|  2.08k|    int n = 0;
  761|       |
  762|  2.08k|    char *error = ip_parse_masked_len(s, &n, ip, mask);
  763|  2.08k|    if (!error && s[n]) {
  ------------------
  |  Branch (763:9): [True: 2.01k, False: 75]
  |  Branch (763:19): [True: 6, False: 2.00k]
  ------------------
  764|      6|        return xasprintf("%s: invalid IP address", s);
  765|      6|    }
  766|  2.08k|    return error;
  767|  2.08k|}
ipv6_parse:
  808|  2.65k|{
  809|       |    return inet_pton(AF_INET6, s, ip) == 1;
  810|  2.65k|}
ipv6_parse_masked_len:
  822|  2.54k|{
  823|  2.54k|    char ipv6_s[IPV6_SCAN_LEN + 1];
  824|  2.54k|    int prefix;
  825|       |
  826|  2.54k|    if (ovs_scan_len(s, n, " "IPV6_SCAN_FMT, ipv6_s)
  ------------------
  |  | 1162|  2.54k|#define IPV6_SCAN_FMT "%46[0123456789abcdefABCDEF:.]"
  ------------------
  |  Branch (826:9): [True: 2.52k, False: 14]
  ------------------
  827|  2.52k|        && ipv6_parse(ipv6_s, ip)) {
  ------------------
  |  Branch (827:12): [True: 2.52k, False: 6]
  ------------------
  828|  2.52k|        if (ovs_scan_len(s, n, "/%d", &prefix)) {
  ------------------
  |  Branch (828:13): [True: 1.97k, False: 547]
  ------------------
  829|  1.97k|            if (prefix < 0 || prefix > 128) {
  ------------------
  |  Branch (829:17): [True: 12, False: 1.96k]
  |  Branch (829:31): [True: 21, False: 1.94k]
  ------------------
  830|     33|                return xasprintf("%s: IPv6 network prefix bits not between 0 "
  831|     33|                                 "and 128, inclusive", s);
  832|     33|            }
  833|  1.94k|            *mask = ipv6_create_mask(prefix);
  834|  1.94k|        } else if (ovs_scan_len(s, n, "/"IPV6_SCAN_FMT, ipv6_s)) {
  ------------------
  |  | 1162|    547|#define IPV6_SCAN_FMT "%46[0123456789abcdefABCDEF:.]"
  ------------------
  |  Branch (834:20): [True: 129, False: 418]
  ------------------
  835|    129|             if (!ipv6_parse(ipv6_s, mask)) {
  ------------------
  |  Branch (835:18): [True: 1, False: 128]
  ------------------
  836|      1|                 return xasprintf("%s: Invalid IPv6 mask", s);
  837|      1|             }
  838|       |            /* OK. */
  839|    418|        } else {
  840|       |            /* OK. No mask. */
  841|    418|            *mask = in6addr_exact;
  842|    418|        }
  843|  2.48k|        return NULL;
  844|  2.52k|    }
  845|     20|    return xasprintf("%s: invalid IPv6 address", s);
  846|  2.54k|}
ipv6_parse_masked:
  853|  2.54k|{
  854|  2.54k|    int n = 0;
  855|       |
  856|  2.54k|    char *error = ipv6_parse_masked_len(s, &n, ip, mask);
  857|  2.54k|    if (!error && s[n]) {
  ------------------
  |  Branch (857:9): [True: 2.48k, False: 54]
  |  Branch (857:19): [True: 2, False: 2.48k]
  ------------------
  858|      2|        return xasprintf("%s: invalid IPv6 address", s);
  859|      2|    }
  860|  2.54k|    return error;
  861|  2.54k|}
ipv6_format_addr:
  903|      1|{
  904|      1|    char *dst;
  905|       |
  906|      1|    ds_reserve(s, s->length + INET6_ADDRSTRLEN);
  907|       |
  908|      1|    dst = s->string + s->length;
  909|      1|    inet_ntop(AF_INET6, addr, dst, INET6_ADDRSTRLEN);
  910|      1|    s->length += strlen(dst);
  911|      1|}
ipv6_format_masked:
  942|      1|{
  943|      1|    ipv6_format_addr(addr, s);
  944|      1|    if (mask && !ipv6_mask_is_exact(mask)) {
  ------------------
  |  Branch (944:9): [True: 0, False: 1]
  |  Branch (944:17): [True: 0, False: 0]
  ------------------
  945|      0|        if (ipv6_is_cidr(mask)) {
  ------------------
  |  Branch (945:13): [True: 0, False: 0]
  ------------------
  946|      0|            int cidr_bits = ipv6_count_cidr_bits(mask);
  947|      0|            ds_put_format(s, "/%d", cidr_bits);
  948|      0|        } else {
  949|      0|            ds_put_char(s, '/');
  950|      0|            ipv6_format_addr(mask, s);
  951|      0|        }
  952|      0|    }
  953|      1|}
ipv6_addr_bitand:
  980|  2.14k|{
  981|  2.14k|   struct in6_addr dst;
  982|  8.58k|   IPV6_FOR_EACH (i) {
  ------------------
  |  |  972|  10.7k|#define IPV6_FOR_EACH(VAR) for (int VAR = 0; VAR < 4; VAR++)
  |  |  ------------------
  |  |  |  Branch (972:46): [True: 8.58k, False: 2.14k]
  |  |  ------------------
  ------------------
  983|  8.58k|       dst.s6_addrX[i] = a->s6_addrX[i] & b->s6_addrX[i];
  ------------------
  |  |  971|  8.58k|#define s6_addrX s6_addr32
  ------------------
                     dst.s6_addrX[i] = a->s6_addrX[i] & b->s6_addrX[i];
  ------------------
  |  |  971|  8.58k|#define s6_addrX s6_addr32
  ------------------
                     dst.s6_addrX[i] = a->s6_addrX[i] & b->s6_addrX[i];
  ------------------
  |  |  971|  8.58k|#define s6_addrX s6_addr32
  ------------------
  984|  8.58k|   }
  985|  2.14k|   return dst;
  986|  2.14k|}
ipv6_create_mask:
 1013|  1.94k|{
 1014|  1.94k|    struct in6_addr netmask;
 1015|  1.94k|    uint8_t *netmaskp = &netmask.s6_addr[0];
 1016|       |
 1017|  1.94k|    memset(&netmask, 0, sizeof netmask);
 1018|  5.62k|    while (mask > 8) {
  ------------------
  |  Branch (1018:12): [True: 3.68k, False: 1.94k]
  ------------------
 1019|  3.68k|        *netmaskp = 0xff;
 1020|  3.68k|        netmaskp++;
 1021|  3.68k|        mask -= 8;
 1022|  3.68k|    }
 1023|       |
 1024|  1.94k|    if (mask) {
  ------------------
  |  Branch (1024:9): [True: 1.16k, False: 773]
  ------------------
 1025|  1.16k|        *netmaskp = 0xff << (8 - mask);
 1026|  1.16k|    }
 1027|       |
 1028|  1.94k|    return netmask;
 1029|  1.94k|}
packet_tcp_flag_to_string:
 1717|  14.3k|{
 1718|  14.3k|    switch (flag) {
 1719|  1.25k|    case TCP_FIN:
  ------------------
  |  |  893|  1.25k|#define TCP_FIN 0x001
  ------------------
  |  Branch (1719:5): [True: 1.25k, False: 13.0k]
  ------------------
 1720|  1.25k|        return "fin";
 1721|  1.24k|    case TCP_SYN:
  ------------------
  |  |  894|  1.24k|#define TCP_SYN 0x002
  ------------------
  |  Branch (1721:5): [True: 1.24k, False: 13.0k]
  ------------------
 1722|  1.24k|        return "syn";
 1723|  1.24k|    case TCP_RST:
  ------------------
  |  |  895|  1.24k|#define TCP_RST 0x004
  ------------------
  |  Branch (1723:5): [True: 1.24k, False: 13.0k]
  ------------------
 1724|  1.24k|        return "rst";
 1725|  1.24k|    case TCP_PSH:
  ------------------
  |  |  896|  1.24k|#define TCP_PSH 0x008
  ------------------
  |  Branch (1725:5): [True: 1.24k, False: 13.0k]
  ------------------
 1726|  1.24k|        return "psh";
 1727|  1.24k|    case TCP_ACK:
  ------------------
  |  |  897|  1.24k|#define TCP_ACK 0x010
  ------------------
  |  Branch (1727:5): [True: 1.24k, False: 13.0k]
  ------------------
 1728|  1.24k|        return "ack";
 1729|  1.23k|    case TCP_URG:
  ------------------
  |  |  898|  1.23k|#define TCP_URG 0x020
  ------------------
  |  Branch (1729:5): [True: 1.23k, False: 13.0k]
  ------------------
 1730|  1.23k|        return "urg";
 1731|  1.23k|    case TCP_ECE:
  ------------------
  |  |  899|  1.23k|#define TCP_ECE 0x040
  ------------------
  |  Branch (1731:5): [True: 1.23k, False: 13.0k]
  ------------------
 1732|  1.23k|        return "ece";
 1733|  1.23k|    case TCP_CWR:
  ------------------
  |  |  900|  1.23k|#define TCP_CWR 0x080
  ------------------
  |  Branch (1733:5): [True: 1.23k, False: 13.0k]
  ------------------
 1734|  1.23k|        return "cwr";
 1735|  1.23k|    case TCP_NS:
  ------------------
  |  |  901|  1.23k|#define TCP_NS  0x100
  ------------------
  |  Branch (1735:5): [True: 1.23k, False: 13.0k]
  ------------------
 1736|  1.23k|        return "ns";
 1737|    870|    case 0x200:
  ------------------
  |  Branch (1737:5): [True: 870, False: 13.4k]
  ------------------
 1738|    870|        return "[200]";
 1739|    722|    case 0x400:
  ------------------
  |  Branch (1739:5): [True: 722, False: 13.6k]
  ------------------
 1740|    722|        return "[400]";
 1741|    555|    case 0x800:
  ------------------
  |  Branch (1741:5): [True: 555, False: 13.7k]
  ------------------
 1742|    555|        return "[800]";
 1743|    994|    default:
  ------------------
  |  Branch (1743:5): [True: 994, False: 13.3k]
  ------------------
 1744|       |        return NULL;
 1745|  14.3k|    }
 1746|  14.3k|}

ofp-flow.c:pt_ns:
 1570|  4.66k|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|  4.66k|}
ofp-flow.c:pt_ns_type_be:
 1577|    165|{
 1578|    165|    return be32_to_be16(packet_type);
 1579|    165|}
ofp-match.c:eth_addr_is_zero:
  246|  10.2k|{
  247|  10.2k|    return !(a.be16[0] | a.be16[1] | a.be16[2]);
  248|  10.2k|}
ofp-match.c:vlan_tci_to_vid:
  507|     29|{
  508|     29|    return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  494|     29|#define VLAN_VID_MASK 0x0fff
  ------------------
                  return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  495|     29|#define VLAN_VID_SHIFT 0
  ------------------
  509|     29|}
ofp-match.c:vlan_tci_to_pcp:
  515|     15|{
  516|     15|    return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  497|     15|#define VLAN_PCP_MASK 0xe000
  ------------------
                  return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  498|     15|#define VLAN_PCP_SHIFT 13
  ------------------
  517|     15|}
ofp-match.c:eth_addr_invert:
  301|    386|{
  302|    386|    struct eth_addr dst;
  303|       |
  304|  1.54k|    for (int i = 0; i < ARRAY_SIZE(src.be16); i++) {
  ------------------
  |  |  297|  1.54k|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|  1.54k|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.54k|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|  1.54k|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.54k|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.54k|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (304:21): [True: 1.15k, False: 386]
  ------------------
  305|  1.15k|        dst.be16[i] = ~src.be16[i];
  306|  1.15k|    }
  307|       |
  308|    386|    return dst;
  309|    386|}
ofp-match.c:eth_type_mpls:
  423|  8.36k|{
  424|  8.36k|    return eth_type == htons(ETH_TYPE_MPLS) ||
  ------------------
  |  Branch (424:12): [True: 92, False: 8.27k]
  ------------------
  425|  8.27k|        eth_type == htons(ETH_TYPE_MPLS_MCAST);
  ------------------
  |  Branch (425:9): [True: 92, False: 8.18k]
  ------------------
  426|  8.36k|}
ofp-match.c:mpls_lse_to_label:
  568|      1|{
  569|      1|    return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  554|      1|#define MPLS_LABEL_MASK     0xfffff000
  ------------------
                  return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  555|      1|#define MPLS_LABEL_SHIFT    12
  ------------------
  570|      1|}
ofp-match.c:mpls_lse_to_tc:
  576|      1|{
  577|      1|    return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  551|      1|#define MPLS_TC_MASK        0x00000e00
  ------------------
                  return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  552|      1|#define MPLS_TC_SHIFT       9
  ------------------
  578|      1|}
ofp-match.c:pt_ns:
 1570|    590|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|    590|}
ofp-match.c:pt_ns_type_be:
 1577|    139|{
 1578|    139|    return be32_to_be16(packet_type);
 1579|    139|}
flow.c:pt_ns_type_be:
 1577|     66|{
 1578|     66|    return be32_to_be16(packet_type);
 1579|     66|}
flow.c:pt_ns:
 1570|     66|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|     66|}
flow.c:pt_ns_type:
 1584|     66|{
 1585|       |    return ntohs(pt_ns_type_be(packet_type));
 1586|     66|}
meta-flow.c:pt_ns:
 1570|  9.46k|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|  9.46k|}
meta-flow.c:pt_ns_type_be:
 1577|  7.81k|{
 1578|  7.81k|    return be32_to_be16(packet_type);
 1579|  7.81k|}
meta-flow.c:eth_type_mpls:
  423|    426|{
  424|    426|    return eth_type == htons(ETH_TYPE_MPLS) ||
  ------------------
  |  Branch (424:12): [True: 208, False: 218]
  ------------------
  425|    218|        eth_type == htons(ETH_TYPE_MPLS_MCAST);
  ------------------
  |  Branch (425:9): [True: 192, False: 26]
  ------------------
  426|    426|}
meta-flow.c:vlan_tci_to_pcp:
  515|  1.21k|{
  516|  1.21k|    return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  497|  1.21k|#define VLAN_PCP_MASK 0xe000
  ------------------
                  return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  498|  1.21k|#define VLAN_PCP_SHIFT 13
  ------------------
  517|  1.21k|}
meta-flow.c:mpls_lse_to_label:
  568|    452|{
  569|    452|    return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  554|    452|#define MPLS_LABEL_MASK     0xfffff000
  ------------------
                  return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  555|    452|#define MPLS_LABEL_SHIFT    12
  ------------------
  570|    452|}
meta-flow.c:mpls_lse_to_tc:
  576|    516|{
  577|    516|    return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  551|    516|#define MPLS_TC_MASK        0x00000e00
  ------------------
                  return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  552|    516|#define MPLS_TC_SHIFT       9
  ------------------
  578|    516|}
meta-flow.c:mpls_lse_to_bos:
  624|    516|{
  625|       |    return (mpls_lse & htonl(MPLS_BOS_MASK)) != 0;
  626|    516|}
meta-flow.c:mpls_lse_to_ttl:
  584|    578|{
  585|    578|    return (ntohl(mpls_lse) & MPLS_TTL_MASK) >> MPLS_TTL_SHIFT;
  ------------------
  |  |  545|    578|#define MPLS_TTL_MASK       0x000000ff
  ------------------
                  return (ntohl(mpls_lse) & MPLS_TTL_MASK) >> MPLS_TTL_SHIFT;
  ------------------
  |  |  546|    578|#define MPLS_TTL_SHIFT      0
  ------------------
  586|    578|}
meta-flow.c:ip_is_cidr:
  664|  2.20k|{
  665|       |    uint32_t x = ~ntohl(netmask);
  666|  2.20k|    return !(x & (x + 1));
  667|  2.20k|}
meta-flow.c:dl_type_is_ip_any:
 1256|  3.80k|{
 1257|  3.80k|    return dl_type == htons(ETH_TYPE_IP)
  ------------------
  |  Branch (1257:12): [True: 1.90k, False: 1.90k]
  ------------------
 1258|  1.90k|        || dl_type == htons(ETH_TYPE_IPV6);
  ------------------
  |  Branch (1258:12): [True: 1.78k, False: 115]
  ------------------
 1259|  3.80k|}
nx-match.c:pt_ns:
 1570|  1.18k|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|  1.18k|}
nx-match.c:pt_ns_type_be:
 1577|    285|{
 1578|    285|    return be32_to_be16(packet_type);
 1579|    285|}
nx-match.c:vlan_tci_to_pcp:
  515|      4|{
  516|      4|    return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  497|      4|#define VLAN_PCP_MASK 0xe000
  ------------------
                  return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  498|      4|#define VLAN_PCP_SHIFT 13
  ------------------
  517|      4|}
nx-match.c:eth_type_mpls:
  423|  4.52k|{
  424|  4.52k|    return eth_type == htons(ETH_TYPE_MPLS) ||
  ------------------
  |  Branch (424:12): [True: 26, False: 4.50k]
  ------------------
  425|  4.50k|        eth_type == htons(ETH_TYPE_MPLS_MCAST);
  ------------------
  |  Branch (425:9): [True: 34, False: 4.46k]
  ------------------
  426|  4.52k|}
nx-match.c:mpls_lse_to_tc:
  576|      1|{
  577|      1|    return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  551|      1|#define MPLS_TC_MASK        0x00000e00
  ------------------
                  return (ntohl(mpls_lse) & MPLS_TC_MASK) >> MPLS_TC_SHIFT;
  ------------------
  |  |  552|      1|#define MPLS_TC_SHIFT       9
  ------------------
  578|      1|}
nx-match.c:mpls_lse_to_bos:
  624|      2|{
  625|       |    return (mpls_lse & htonl(MPLS_BOS_MASK)) != 0;
  626|      2|}
nx-match.c:mpls_lse_to_ttl:
  584|      1|{
  585|      1|    return (ntohl(mpls_lse) & MPLS_TTL_MASK) >> MPLS_TTL_SHIFT;
  ------------------
  |  |  545|      1|#define MPLS_TTL_MASK       0x000000ff
  ------------------
                  return (ntohl(mpls_lse) & MPLS_TTL_MASK) >> MPLS_TTL_SHIFT;
  ------------------
  |  |  546|      1|#define MPLS_TTL_SHIFT      0
  ------------------
  586|      1|}
nx-match.c:mpls_lse_to_label:
  568|      1|{
  569|      1|    return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  554|      1|#define MPLS_LABEL_MASK     0xfffff000
  ------------------
                  return (ntohl(mpls_lse) & MPLS_LABEL_MASK) >> MPLS_LABEL_SHIFT;
  ------------------
  |  |  555|      1|#define MPLS_LABEL_SHIFT    12
  ------------------
  570|      1|}
nx-match.c:dl_type_is_ip_any:
 1256|  4.52k|{
 1257|  4.52k|    return dl_type == htons(ETH_TYPE_IP)
  ------------------
  |  Branch (1257:12): [True: 262, False: 4.26k]
  ------------------
 1258|  4.26k|        || dl_type == htons(ETH_TYPE_IPV6);
  ------------------
  |  Branch (1258:12): [True: 324, False: 3.94k]
  ------------------
 1259|  4.52k|}
ofp-actions.c:eth_type_vlan:
  429|  1.42k|{
  430|  1.42k|    return eth_type == htons(ETH_TYPE_VLAN_8021Q) ||
  ------------------
  |  Branch (430:12): [True: 596, False: 830]
  ------------------
  431|    830|        eth_type == htons(ETH_TYPE_VLAN_8021AD);
  ------------------
  |  Branch (431:9): [True: 808, False: 22]
  ------------------
  432|  1.42k|}
ofp-actions.c:eth_type_mpls:
  423|  9.48k|{
  424|  9.48k|    return eth_type == htons(ETH_TYPE_MPLS) ||
  ------------------
  |  Branch (424:12): [True: 2.04k, False: 7.44k]
  ------------------
  425|  7.44k|        eth_type == htons(ETH_TYPE_MPLS_MCAST);
  ------------------
  |  Branch (425:9): [True: 3.09k, False: 4.34k]
  ------------------
  426|  9.48k|}
ofp-actions.c:ipv6_mask_is_any:
 1193|  6.15k|static inline bool ipv6_mask_is_any(const struct in6_addr *mask) {
 1194|  6.15k|    return ipv6_addr_equals(mask, &in6addr_any);
 1195|  6.15k|}
ofp-actions.c:ipv6_addr_equals:
 1184|  6.15k|{
 1185|  6.15k|#ifdef IN6_ARE_ADDR_EQUAL
 1186|  6.15k|    return IN6_ARE_ADDR_EQUAL(a, b);
 1187|       |#else
 1188|       |    return !memcmp(a, b, sizeof(*a));
 1189|       |#endif
 1190|  6.15k|}
ofp-actions.c:pt_ns:
 1570|  18.9k|{
 1571|       |    return ntohl(packet_type) >> 16;
 1572|  18.9k|}
ofp-actions.c:pt_ns_type_be:
 1577|  12.8k|{
 1578|  12.8k|    return be32_to_be16(packet_type);
 1579|  12.8k|}
ofp-actions.c:dl_type_is_ip_any:
 1256|  26.2k|{
 1257|  26.2k|    return dl_type == htons(ETH_TYPE_IP)
  ------------------
  |  Branch (1257:12): [True: 11.9k, False: 14.2k]
  ------------------
 1258|  14.2k|        || dl_type == htons(ETH_TYPE_IPV6);
  ------------------
  |  Branch (1258:12): [True: 6.76k, False: 7.51k]
  ------------------
 1259|  26.2k|}
ofp-actions.c:pt_ns_type:
 1584|    853|{
 1585|       |    return ntohs(pt_ns_type_be(packet_type));
 1586|    853|}
ofp-actions.c:vlan_tci_to_vid:
  507|  1.55k|{
  508|  1.55k|    return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  494|  1.55k|#define VLAN_VID_MASK 0x0fff
  ------------------
                  return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  495|  1.55k|#define VLAN_VID_SHIFT 0
  ------------------
  509|  1.55k|}
ofp-actions.c:vlan_tci_to_pcp:
  515|  1.55k|{
  516|  1.55k|    return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  497|  1.55k|#define VLAN_PCP_MASK 0xe000
  ------------------
                  return (ntohs(vlan_tci) & VLAN_PCP_MASK) >> VLAN_PCP_SHIFT;
  ------------------
  |  |  498|  1.55k|#define VLAN_PCP_SHIFT 13
  ------------------
  517|  1.55k|}

shash_init:
   34|      1|{
   35|      1|    hmap_init(&sh->map);
   36|      1|}
shash_add_nocopy:
  122|    228|{
  123|    228|    return shash_add_nocopy__(sh, name, data, hash_name(name));
  124|    228|}
shash_add:
  130|    228|{
  131|    228|    return shash_add_nocopy(sh, xstrdup(name), data);
  132|    228|}
shash_add_once:
  136|    228|{
  137|    228|    if (!shash_find(sh, name)) {
  ------------------
  |  Branch (137:9): [True: 228, False: 0]
  ------------------
  138|    228|        shash_add(sh, name, data);
  139|    228|        return true;
  140|    228|    } else {
  141|       |        return false;
  142|      0|    }
  143|    228|}
shash_find:
  236|   211k|{
  237|   211k|    return shash_find__(sh, name, strlen(name), hash_name(name));
  238|   211k|}
shash_find_len:
  244|   189k|{
  245|   189k|    return shash_find__(sh, name, len, hash_bytes(name, len, 0));
  246|   189k|}
shash_find_data:
  250|   211k|{
  251|   211k|    struct shash_node *node = shash_find(sh, name);
  252|   211k|    return node ? node->data : NULL;
  ------------------
  |  Branch (252:12): [True: 132k, False: 79.1k]
  ------------------
  253|   211k|}
shash.c:shash_add_nocopy__:
  110|    228|{
  111|    228|    struct shash_node *node = xmalloc(sizeof *node);
  112|    228|    node->name = name;
  113|    228|    node->data = CONST_CAST(void *, data);
  ------------------
  |  |   85|    228|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|    228|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|    228|     (TYPE) (POINTER))
  ------------------
  114|    228|    hmap_insert(&sh->map, &node->node, hash);
  ------------------
  |  |  101|    228|    hmap_insert_at(HMAP, NODE, HASH, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    228|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    228|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    228|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|    228|    return node;
  116|    228|}
shash.c:hash_name:
   28|   212k|{
   29|   212k|    return hash_string(name, 0);
   30|   212k|}
shash.c:shash_find__:
  222|   401k|{
  223|   401k|    struct shash_node *node;
  224|       |
  225|   401k|    HMAP_FOR_EACH_WITH_HASH (node, node, hash, &sh->map) {
  ------------------
  |  |  138|   401k|    for (INIT_MULTIVAR(NODE, MEMBER, hmap_first_with_hash(HMAP, HASH),        \
  |  |  ------------------
  |  |  |  |  171|   401k|    INIT_MULTIVAR_EXP(VAR, MEMBER, POINTER, ITER_TYPE, (void) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  174|   401k|    ITER_TYPE *ITER_VAR(VAR) = ( __VA_ARGS__ , (ITER_TYPE *) POINTER)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  139|   401k|                       struct hmap_node);                                     \
  |  |  140|   402k|         CONDITION_MULTIVAR(NODE, MEMBER, ITER_VAR(NODE) != NULL);            \
  |  |  ------------------
  |  |  |  |  185|   402k|    ((EXPR) ?                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:5): [True: 264k, False: 137k]
  |  |  |  |  |  Branch (185:6): [True: 264k, False: 137k]
  |  |  |  |  ------------------
  |  |  |  |  186|   402k|     (((VAR) = OBJECT_CONTAINING(ITER_VAR(VAR), VAR, MEMBER)), 1) :           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|   264k|    ((OVS_TYPEOF(OBJECT)) (void *)                                      \
  |  |  |  |  |  |  135|   264k|     ((char *) (POINTER) - OBJECT_OFFSETOF(OBJECT, MEMBER)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|   264k|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|   402k|     (((VAR) = NULL), 0))
  |  |  ------------------
  |  |  141|   401k|         UPDATE_MULTIVAR(NODE, hmap_next_with_hash(ITER_VAR(NODE))))
  |  |  ------------------
  |  |  |  |  193|    283|    (ITER_VAR(VAR) = NEXT_ITER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    283|#define ITER_VAR(NAME) NAME ## __iterator__
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|   264k|        if (!strncmp(node->name, name, name_len) && !node->name[name_len]) {
  ------------------
  |  Branch (226:13): [True: 264k, False: 283]
  |  Branch (226:53): [True: 264k, False: 0]
  ------------------
  227|   264k|            return node;
  228|   264k|        }
  229|   264k|    }
  230|   137k|    return NULL;
  231|   401k|}

lookup_ip:
  152|  1.77k|{
  153|  1.77k|    if (!ip_parse(host_name, &addr->s_addr)) {
  ------------------
  |  Branch (153:9): [True: 6, False: 1.76k]
  ------------------
  154|      6|        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
  ------------------
  |  |  110|      6|        {                                                                 \
  |  |  111|      6|            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
  |  |  ------------------
  |  |  |  |   37|     24|#define TOKEN_BUCKET_INIT(RATE, BURST) { RATE, BURST, 0, LLONG_MIN }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:48): [True: 0, Folded]
  |  |  |  |  |  Branch (37:48): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      6|            0,                              /* first_dropped */           \
  |  |  113|      6|            0,                              /* last_dropped */            \
  |  |  114|      6|            0,                              /* n_dropped */               \
  |  |  115|      6|            OVS_MUTEX_INITIALIZER           /* mutex */                   \
  |  |  ------------------
  |  |  |  |   45|      6|#define OVS_MUTEX_INITIALIZER { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, \
  |  |  |  |   46|      6|                                "<unlocked>" }
  |  |  ------------------
  |  |  116|      6|        }
  ------------------
  155|      6|        VLOG_ERR_RL(&rl, "\"%s\" is not a valid IP address", host_name);
  ------------------
  |  |  223|      6|#define VLOG_ERR_RL(RL, ...) VLOG_RL(RL, VLL_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  287|      6|    do {                                                                \
  |  |  |  |  288|      6|        enum vlog_level level__ = LEVEL;                                \
  |  |  |  |  289|      6|        if (this_module.min_level >= level__) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:13): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|            vlog_rate_limit(&this_module, level__, RL, __VA_ARGS__);    \
  |  |  |  |  291|      0|        }                                                               \
  |  |  |  |  292|      6|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|      6|        return ENOENT;
  157|      6|    }
  158|  1.76k|    return 0;
  159|  1.77k|}

tun_metadata_read:
  223|  79.2k|{
  224|  79.2k|    const struct tun_table *map = tnl->metadata.tab;
  225|  79.2k|    unsigned int idx = mf->id - MFF_TUN_METADATA0;
  226|  79.2k|    const struct tun_metadata_loc *loc;
  227|       |
  228|  79.2k|    if (!map) {
  ------------------
  |  Branch (228:9): [True: 79.2k, False: 0]
  ------------------
  229|  79.2k|        memset(value->tun_metadata, 0, mf->n_bytes);
  230|  79.2k|        return;
  231|  79.2k|    }
  232|       |
  233|      0|    loc = &map->entries[idx].loc;
  234|       |
  235|      0|    memset(value->tun_metadata, 0, mf->n_bytes - loc->len);
  236|      0|    memcpy_from_metadata(value->tun_metadata + mf->n_bytes - loc->len,
  237|      0|                         &tnl->metadata, loc);
  238|      0|}
tun_metadata_set_match:
  354|  40.1k|{
  355|  40.1k|    const struct tun_table *map = match->flow.tunnel.metadata.tab;
  356|  40.1k|    const struct tun_metadata_loc *loc;
  357|  40.1k|    unsigned int idx = mf->id - MFF_TUN_METADATA0;
  358|  40.1k|    unsigned int field_len;
  359|  40.1k|    bool is_masked;
  360|  40.1k|    unsigned int data_offset;
  361|  40.1k|    union mf_value data;
  362|       |
  363|  40.1k|    field_len = mf_field_len(mf, value, mask, &is_masked);
  364|  40.1k|    loc = metadata_loc_from_match(map, match, mf->name, idx, field_len,
  365|  40.1k|                                  is_masked, err_str);
  366|  40.1k|    if (!loc) {
  ------------------
  |  Branch (366:9): [True: 9.02k, False: 31.1k]
  ------------------
  367|  9.02k|        return;
  368|  9.02k|    }
  369|       |
  370|  31.1k|    data_offset = mf->n_bytes - loc->len;
  371|       |
  372|  31.1k|    if (!value) {
  ------------------
  |  Branch (372:9): [True: 0, False: 31.1k]
  ------------------
  373|      0|        memset(data.tun_metadata, 0, loc->len);
  374|  31.1k|    } else if (!mask) {
  ------------------
  |  Branch (374:16): [True: 15.5k, False: 15.6k]
  ------------------
  375|  15.5k|        memcpy(data.tun_metadata, value->tun_metadata + data_offset, loc->len);
  376|  15.6k|    } else {
  377|  15.6k|        int i;
  378|  43.7k|        for (i = 0; i < loc->len; i++) {
  ------------------
  |  Branch (378:21): [True: 28.0k, False: 15.6k]
  ------------------
  379|  28.0k|            data.tun_metadata[i] = value->tun_metadata[data_offset + i] &
  380|  28.0k|                                   mask->tun_metadata[data_offset + i];
  381|  28.0k|        }
  382|  15.6k|    }
  383|  31.1k|    memcpy_to_metadata(&match->flow.tunnel.metadata, data.tun_metadata,
  384|  31.1k|                       loc, idx);
  385|       |
  386|  31.1k|    if (!value) {
  ------------------
  |  Branch (386:9): [True: 0, False: 31.1k]
  ------------------
  387|      0|        memset(data.tun_metadata, 0, loc->len);
  388|  31.1k|    } else if (!mask) {
  ------------------
  |  Branch (388:16): [True: 15.5k, False: 15.6k]
  ------------------
  389|  15.5k|        memset(data.tun_metadata, 0xff, loc->len);
  390|  15.6k|    } else {
  391|  15.6k|        memcpy(data.tun_metadata, mask->tun_metadata + data_offset, loc->len);
  392|  15.6k|    }
  393|  31.1k|    memcpy_to_metadata(&match->wc.masks.tunnel.metadata, data.tun_metadata,
  394|  31.1k|                       loc, idx);
  395|  31.1k|}
tun_metadata_to_nx_match:
  879|  4.52k|{
  880|  4.52k|    int i;
  881|       |
  882|  4.52k|    ULLONG_FOR_EACH_1 (i, match->wc.masks.tunnel.metadata.present.map) {
  ------------------
  |  |  285|  4.52k|    for (uint64_t map__ = (MAP);                    \
  |  |  286|  4.91k|         map__ && (((IDX) = raw_ctz(map__)), true); \
  |  |  ------------------
  |  |  |  Branch (286:10): [True: 390, False: 4.52k]
  |  |  |  Branch (286:19): [True: 390, False: 0]
  |  |  ------------------
  |  |  287|  4.52k|         map__ = zero_rightmost_1bit(map__))
  ------------------
  883|    390|        const struct tun_metadata_loc *loc;
  884|    390|        bool is_masked;
  885|    390|        union mf_value opts;
  886|    390|        union mf_value mask_opts;
  887|       |
  888|    390|        loc = metadata_loc_from_match_read(match->flow.tunnel.metadata.tab,
  889|    390|                                           match, i, &match->wc.masks.tunnel,
  890|    390|                                           &is_masked);
  891|    390|        memcpy_from_metadata(opts.tun_metadata, &match->flow.tunnel.metadata,
  892|    390|                             loc);
  893|    390|        memcpy_from_metadata(mask_opts.tun_metadata,
  894|    390|                             &match->wc.masks.tunnel.metadata, loc);
  895|    390|        nxm_put_entry_raw(b, MFF_TUN_METADATA0 + i, oxm, opts.tun_metadata,
  896|    390|                          is_masked ? mask_opts.tun_metadata : NULL, loc->len);
  ------------------
  |  Branch (896:27): [True: 204, False: 186]
  ------------------
  897|    390|    }
  898|  4.52k|}
tun_metadata_allocation_clone:
  947|  10.0k|{
  948|  10.0k|    return src && src->valid ? xmemdup(src, sizeof *src) : NULL;
  ------------------
  |  Branch (948:12): [True: 10.0k, False: 0]
  |  Branch (948:19): [True: 328, False: 9.72k]
  ------------------
  949|  10.0k|}
tun_metadata_allocation_copy:
  954|  19.8k|{
  955|  19.8k|    if (src && src->valid) {
  ------------------
  |  Branch (955:9): [True: 655, False: 19.2k]
  |  Branch (955:16): [True: 655, False: 0]
  ------------------
  956|    655|        *dst = *src;
  957|  19.2k|    } else {
  958|  19.2k|        memset(dst, 0, sizeof *dst);
  959|  19.2k|    }
  960|  19.8k|}
tun-metadata.c:metadata_loc_from_match:
  285|  40.1k|{
  286|  40.1k|    ovs_assert(idx < TUN_METADATA_NUM_OPTS);
  ------------------
  |  |   62|  40.1k|#define ovs_assert ovs_ignore
  ------------------
                  ovs_assert(idx < TUN_METADATA_NUM_OPTS);
  ------------------
  |  |   26|  40.1k|#define TUN_METADATA_NUM_OPTS 64
  ------------------
  287|       |
  288|  40.1k|    if (err_str) {
  ------------------
  |  Branch (288:9): [True: 756, False: 39.4k]
  ------------------
  289|    756|        *err_str = NULL;
  290|    756|    }
  291|       |
  292|  40.1k|    if (map) {
  ------------------
  |  Branch (292:9): [True: 0, False: 40.1k]
  ------------------
  293|      0|        if (map->entries[idx].valid) {
  ------------------
  |  Branch (293:13): [True: 0, False: 0]
  ------------------
  294|      0|            return &map->entries[idx].loc;
  295|      0|        } else {
  296|      0|            return NULL;
  297|      0|        }
  298|      0|    }
  299|       |
  300|  40.1k|    if (match->tun_md.alloc_offset + field_len > TUN_METADATA_TOT_OPT_SIZE) {
  ------------------
  |  |   27|  40.1k|#define TUN_METADATA_TOT_OPT_SIZE 256
  ------------------
  |  Branch (300:9): [True: 398, False: 39.7k]
  ------------------
  301|    398|        if (err_str) {
  ------------------
  |  Branch (301:13): [True: 1, False: 397]
  ------------------
  302|      1|            *err_str = xasprintf("field %s exceeds maximum size for tunnel "
  303|      1|                                 "metadata (used %d, max %d)", name,
  304|      1|                                 match->tun_md.alloc_offset + field_len,
  305|      1|                                 TUN_METADATA_TOT_OPT_SIZE);
  ------------------
  |  |   27|      1|#define TUN_METADATA_TOT_OPT_SIZE 256
  ------------------
  306|      1|        }
  307|       |
  308|    398|        return NULL;
  309|    398|    }
  310|       |
  311|  39.7k|    if (ULLONG_GET(match->wc.masks.tunnel.metadata.present.map, idx)) {
  ------------------
  |  |  293|  39.7k|#define ULLONG_GET(MAP, OFFSET) !!((MAP) & (1ULL << (OFFSET)))
  |  |  ------------------
  |  |  |  Branch (293:33): [True: 8.62k, False: 31.1k]
  |  |  ------------------
  ------------------
  312|  8.62k|        if (err_str) {
  ------------------
  |  Branch (312:13): [True: 173, False: 8.45k]
  ------------------
  313|    173|            *err_str = xasprintf("field %s set multiple times", name);
  314|    173|        }
  315|       |
  316|  8.62k|        return NULL;
  317|  8.62k|    }
  318|       |
  319|  31.1k|    match->tun_md.entry[idx].loc.len = field_len;
  320|  31.1k|    match->tun_md.entry[idx].loc.c.offset = match->tun_md.alloc_offset;
  321|  31.1k|    match->tun_md.entry[idx].loc.c.len = field_len;
  322|  31.1k|    match->tun_md.entry[idx].loc.c.next = NULL;
  323|  31.1k|    match->tun_md.entry[idx].masked = masked;
  324|  31.1k|    match->tun_md.alloc_offset += field_len;
  325|  31.1k|    match->tun_md.valid = true;
  326|       |
  327|  31.1k|    return &match->tun_md.entry[idx].loc;
  328|  39.7k|}
tun-metadata.c:memcpy_to_metadata:
  445|  62.2k|{
  446|  62.2k|    const struct tun_metadata_loc_chain *chain = &loc->c;
  447|  62.2k|    int addr = 0;
  448|       |
  449|   124k|    while (chain) {
  ------------------
  |  Branch (449:12): [True: 62.2k, False: 62.2k]
  ------------------
  450|  62.2k|        memcpy(dst->opts.u8 + chain->offset, (uint8_t *)src + addr,
  451|  62.2k|               chain->len);
  452|  62.2k|        addr += chain->len;
  453|  62.2k|        chain = chain->next;
  454|  62.2k|    }
  455|       |
  456|  62.2k|    ULLONG_SET1(dst->present.map, idx);
  ------------------
  |  |  290|  62.2k|#define ULLONG_SET1(MAP, OFFSET) ((MAP) |= 1ULL << (OFFSET))
  ------------------
  457|  62.2k|}
tun-metadata.c:memcpy_from_metadata:
  462|    780|{
  463|    780|    const struct tun_metadata_loc_chain *chain = &loc->c;
  464|    780|    int addr = 0;
  465|       |
  466|  1.56k|    while (chain) {
  ------------------
  |  Branch (466:12): [True: 780, False: 780]
  ------------------
  467|    780|        memcpy((uint8_t *)dst + addr, src->opts.u8 + chain->offset,
  468|    780|               chain->len);
  469|    780|        addr += chain->len;
  470|    780|        chain = chain->next;
  471|    780|    }
  472|    780|}
tun-metadata.c:metadata_loc_from_match_read:
  857|    390|{
  858|    390|    union mf_value mask_opts;
  859|       |
  860|    390|    if (match->tun_md.valid) {
  ------------------
  |  Branch (860:9): [True: 390, False: 0]
  ------------------
  861|    390|        *is_masked = match->tun_md.entry[idx].masked;
  862|    390|        return &match->tun_md.entry[idx].loc;
  863|    390|    }
  864|       |
  865|      0|    memcpy_from_metadata(mask_opts.tun_metadata, &mask->metadata,
  866|      0|                         &map->entries[idx].loc);
  867|       |
  868|      0|    *is_masked = map->entries[idx].loc.len == 0 ||
  ------------------
  |  Branch (868:18): [True: 0, False: 0]
  ------------------
  869|      0|                 !is_all_ones(mask_opts.tun_metadata,
  ------------------
  |  Branch (869:18): [True: 0, False: 0]
  ------------------
  870|      0|                              map->entries[idx].loc.len);
  871|      0|    return &map->entries[idx].loc;
  872|    390|}

hash.c:get_unaligned_u32:
   74|  1.46M|get_unaligned_##ABBREV(const TYPE *p)           \
   75|  1.46M|{                                               \
   76|  1.46M|    return unaligned_##ABBREV(p)->x;            \
   77|  1.46M|}                                               \
hash.c:unaligned_u32:
   68|  1.46M|unaligned_##ABBREV(const TYPE *p)               \
   69|  1.46M|{                                               \
   70|  1.46M|    return (struct unaligned_##ABBREV *) p;     \
   71|  1.46M|}                                               \

utf16_decode_surrogate_pair:
   32|  4.61k|{
   33|       |    /*
   34|       |     *  Leading surrogate:         110110wwwwxxxxxx
   35|       |     * Trailing surrogate:         110111xxxxxxxxxx
   36|       |     *         Code point: 000uuuuuxxxxxxxxxxxxxxxx
   37|       |     */
   38|  4.61k|    int w = (leading >> 6) & 0xf;
   39|  4.61k|    int u = w + 1;
   40|  4.61k|    int x0 = leading & 0x3f;
   41|  4.61k|    int x1 = trailing & 0x3ff;
   42|  4.61k|    return (u << 16) | (x0 << 10) | x1;
   43|  4.61k|}

json.c:uc_is_leading_surrogate:
   34|  29.2k|{
   35|  29.2k|    return c >= 0xd800 && c <= 0xdbff;
  ------------------
  |  Branch (35:12): [True: 13.2k, False: 16.0k]
  |  Branch (35:27): [True: 6.23k, False: 7.03k]
  ------------------
   36|  29.2k|}
json.c:uc_is_trailing_surrogate:
   41|  4.82k|{
   42|  4.82k|    return c >= 0xdc00 && c <= 0xdfff;
  ------------------
  |  Branch (42:12): [True: 4.61k, False: 207]
  |  Branch (42:27): [True: 4.61k, False: 3]
  ------------------
   43|  4.82k|}

xmalloc__:
  137|   253k|{
  138|   253k|    void *p = malloc(size ? size : 1);
  ------------------
  |  Branch (138:22): [True: 253k, False: 0]
  ------------------
  139|   253k|    if (p == NULL) {
  ------------------
  |  Branch (139:9): [True: 0, False: 253k]
  ------------------
  140|      0|        out_of_memory();
  141|      0|    }
  142|   253k|    return p;
  143|   253k|}
xrealloc__:
  147|   422k|{
  148|   422k|    p = realloc(p, size ? size : 1);
  ------------------
  |  Branch (148:20): [True: 422k, False: 0]
  ------------------
  149|   422k|    if (p == NULL) {
  ------------------
  |  Branch (149:9): [True: 0, False: 422k]
  ------------------
  150|      0|        out_of_memory();
  151|      0|    }
  152|   422k|    return p;
  153|   422k|}
xmalloc:
  171|   253k|{
  172|   253k|    COVERAGE_INC(util_xalloc);
  ------------------
  |  |   83|   253k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|   253k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  173|   253k|    return xmalloc__(size);
  174|   253k|}
xrealloc:
  178|   422k|{
  179|   422k|    COVERAGE_INC(util_xalloc);
  ------------------
  |  |   83|   422k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|   422k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  180|   422k|    return xrealloc__(p, size);
  181|   422k|}
xmemdup:
  185|    328|{
  186|    328|    void *p = xmalloc(size);
  187|    328|    nullable_memcpy(p, p_, size);
  188|    328|    return p;
  189|    328|}
xmemdup0:
  193|   138k|{
  194|   138k|    char *p = xmalloc(length + 1);
  195|   138k|    memcpy(p, p_, length);
  196|   138k|    p[length] = '\0';
  197|   138k|    return p;
  198|   138k|}
xstrdup:
  202|   138k|{
  203|   138k|    return xmemdup0(s, strlen(s));
  204|   138k|}
xvasprintf:
  220|  71.1k|{
  221|  71.1k|    va_list args2;
  222|  71.1k|    size_t needed;
  223|  71.1k|    char *s;
  224|       |
  225|  71.1k|    ovs_assert(format);
  ------------------
  |  |   62|  71.1k|#define ovs_assert ovs_ignore
  ------------------
  226|       |
  227|  71.1k|    va_copy(args2, args);
  228|  71.1k|    needed = vsnprintf(NULL, 0, format, args);
  229|       |
  230|  71.1k|    s = xmalloc(needed + 1);
  231|       |
  232|  71.1k|    vsnprintf(s, needed + 1, format, args2);
  233|  71.1k|    va_end(args2);
  234|       |
  235|  71.1k|    return s;
  236|  71.1k|}
x2nrealloc:
  240|     18|{
  241|     18|    *n = *n == 0 ? 1 : 2 * *n;
  ------------------
  |  Branch (241:10): [True: 2, False: 16]
  ------------------
  242|     18|    return xrealloc(p, *n * s);
  243|     18|}
xasprintf:
  366|  70.9k|{
  367|  70.9k|    va_list args;
  368|  70.9k|    char *s;
  369|       |
  370|  70.9k|    va_start(args, format);
  371|  70.9k|    s = xvasprintf(format, args);
  372|  70.9k|    va_end(args);
  373|       |
  374|  70.9k|    return s;
  375|  70.9k|}
ovs_strlcpy:
  381|  4.74k|{
  382|  4.74k|    if (size > 0) {
  ------------------
  |  Branch (382:9): [True: 4.74k, False: 0]
  ------------------
  383|  4.74k|        size_t len = strnlen(src, size - 1);
  384|  4.74k|        memcpy(dst, src, len);
  385|  4.74k|        dst[len] = '\0';
  386|  4.74k|    }
  387|  4.74k|}
str_to_int:
  809|  30.0k|{
  810|  30.0k|    long long ll;
  811|  30.0k|    bool ok = str_to_llong(s, base, &ll);
  812|       |
  813|  30.0k|    if (!ok || ll < INT_MIN || ll > INT_MAX) {
  ------------------
  |  Branch (813:9): [True: 300, False: 29.7k]
  |  Branch (813:16): [True: 52, False: 29.6k]
  |  Branch (813:32): [True: 3, False: 29.6k]
  ------------------
  814|    355|        *i = 0;
  815|    355|        return false;
  816|    355|    }
  817|  29.6k|    *i = ll;
  818|       |    return true;
  819|  30.0k|}
str_to_llong:
  837|   256k|{
  838|   256k|    char *tail;
  839|   256k|    bool ok = str_to_llong_with_tail(s, &tail, base, x);
  840|   256k|    if (*tail != '\0') {
  ------------------
  |  Branch (840:9): [True: 14.4k, False: 241k]
  ------------------
  841|  14.4k|        *x = 0;
  842|  14.4k|        return false;
  843|  14.4k|    }
  844|   241k|    return ok;
  845|   256k|}
str_to_llong_with_tail:
  849|   256k|{
  850|   256k|    int save_errno = errno;
  851|   256k|    errno = 0;
  852|   256k|    *x = strtoll(s, tail, base);
  853|   256k|    if (errno == EINVAL || errno == ERANGE || *tail == s) {
  ------------------
  |  Branch (853:9): [True: 0, False: 256k]
  |  Branch (853:28): [True: 3, False: 256k]
  |  Branch (853:47): [True: 14.4k, False: 241k]
  ------------------
  854|  14.4k|        errno = save_errno;
  855|  14.4k|        *x = 0;
  856|  14.4k|        return false;
  857|   241k|    } else {
  858|   241k|        errno = save_errno;
  859|       |        return true;
  860|   241k|    }
  861|   256k|}
str_to_uint:
  865|   226k|{
  866|   226k|    long long ll;
  867|   226k|    bool ok = str_to_llong(s, base, &ll);
  868|   226k|    if (!ok || ll < 0 || ll > UINT_MAX) {
  ------------------
  |  Branch (868:9): [True: 14.2k, False: 211k]
  |  Branch (868:16): [True: 32, False: 211k]
  |  Branch (868:26): [True: 16, False: 211k]
  ------------------
  869|  14.3k|        *u = 0;
  870|  14.3k|        return false;
  871|   211k|    } else {
  872|   211k|        *u = ll;
  873|       |        return true;
  874|   211k|    }
  875|   226k|}
str_to_ullong:
  879|  7.02k|{
  880|  7.02k|    int save_errno = errno;
  881|  7.02k|    char *tail;
  882|       |
  883|  7.02k|    errno = 0;
  884|  7.02k|    *x = strtoull(s, &tail, base);
  885|  7.02k|    if (errno == EINVAL || errno == ERANGE || tail == s || *tail != '\0') {
  ------------------
  |  Branch (885:9): [True: 0, False: 7.02k]
  |  Branch (885:28): [True: 1, False: 7.02k]
  |  Branch (885:47): [True: 587, False: 6.43k]
  |  Branch (885:60): [True: 4, False: 6.43k]
  ------------------
  886|    592|        errno = save_errno;
  887|    592|        *x = 0;
  888|    592|        return false;
  889|  6.43k|    } else {
  890|  6.43k|        errno = save_errno;
  891|       |        return true;
  892|  6.43k|    }
  893|  7.02k|}
hexit_value:
  937|  4.10M|{
  938|  4.10M|    static const signed char tbl[UCHAR_MAX + 1] = {
  939|  4.10M|#define TBL(x)                                  \
  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  943|  4.10M|         : -1)
  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  946|  4.10M|#define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  947|  4.10M|        TBL2(0), TBL2(64), TBL2(128), TBL2(192)
  ------------------
  |  |  946|  4.10M|#define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      TBL2(0), TBL2(64), TBL2(128), TBL2(192)
  ------------------
  |  |  946|  4.10M|#define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [Folded, False: 4.10M]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [True: 0, Folded]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      TBL2(0), TBL2(64), TBL2(128), TBL2(192)
  ------------------
  |  |  946|  4.10M|#define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      TBL2(0), TBL2(64), TBL2(128), TBL2(192)
  ------------------
  |  |  946|  4.10M|#define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TBL2(x) TBL1(x), TBL1((x) + 16), TBL1((x) + 32), TBL1((x) + 48)
  |  |  ------------------
  |  |  |  |  945|  4.10M|#define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TBL1(x) TBL0(x), TBL0((x) + 4),  TBL0((x) + 8),  TBL0((x) + 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  944|  4.10M|#define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define TBL0(x)  TBL(x),  TBL((x) + 1),   TBL((x) + 2),   TBL((x) + 3)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  940|  4.10M|        (  x >= '0' && x <= '9' ? x - '0'       \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (940:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (940:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  941|  4.10M|         : x >= 'a' && x <= 'f' ? x - 'a' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (941:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (941:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  942|  4.10M|         : x >= 'A' && x <= 'F' ? x - 'A' + 0xa \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (942:12): [True: 0, Folded]
  |  |  |  |  |  |  |  |  |  Branch (942:24): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  943|  4.10M|         : -1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  948|  4.10M|    };
  949|       |
  950|  4.10M|    return tbl[c];
  951|  4.10M|}
hexits_value:
  959|  1.58M|{
  960|  1.58M|    uintmax_t value;
  961|  1.58M|    size_t i;
  962|       |
  963|  1.58M|    value = 0;
  964|  4.65M|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (964:17): [True: 3.08M, False: 1.57M]
  ------------------
  965|  3.08M|        int hexit = hexit_value(s[i]);
  966|  3.08M|        if (hexit < 0) {
  ------------------
  |  Branch (966:13): [True: 13.7k, False: 3.06M]
  ------------------
  967|  13.7k|            *ok = false;
  968|  13.7k|            return UINTMAX_MAX;
  969|  13.7k|        }
  970|  3.06M|        value = (value << 4) + hexit;
  971|  3.06M|    }
  972|  1.57M|    *ok = true;
  973|  1.57M|    return value;
  974|  1.58M|}
parse_int_string:
  988|   271k|{
  989|   271k|    unsigned long long int integer;
  990|   271k|    int i;
  991|       |
  992|   271k|    if (!strncmp(s, "0x", 2) || !strncmp(s, "0X", 2)) {
  ------------------
  |  Branch (992:9): [True: 7.00k, False: 264k]
  |  Branch (992:33): [True: 2.32k, False: 262k]
  ------------------
  993|  9.32k|        uint8_t *hexit_str;
  994|  9.32k|        int len = 0;
  995|  9.32k|        int val_idx;
  996|  9.32k|        int err = 0;
  997|       |
  998|  9.32k|        s += 2;
  999|  9.32k|        hexit_str = xmalloc(field_width * 2);
 1000|       |
 1001|   154k|        for (;;) {
 1002|   154k|            uint8_t hexit;
 1003|   154k|            bool ok;
 1004|       |
 1005|   154k|            s += strspn(s, " \t\r\n");
 1006|   154k|            hexit = hexits_value(s, 1, &ok);
 1007|   154k|            if (!ok) {
  ------------------
  |  Branch (1007:17): [True: 9.31k, False: 144k]
  ------------------
 1008|  9.31k|                *tail = CONST_CAST(char *, s);
  ------------------
  |  |   85|  9.31k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  9.31k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  9.31k|     (TYPE) (POINTER))
  ------------------
 1009|  9.31k|                break;
 1010|  9.31k|            }
 1011|       |
 1012|   144k|            if (hexit != 0 || len) {
  ------------------
  |  Branch (1012:17): [True: 107k, False: 37.4k]
  |  Branch (1012:31): [True: 36.5k, False: 907]
  ------------------
 1013|   143k|                if (DIV_ROUND_UP(len + 1, 2) > field_width) {
  ------------------
  |  |  300|   143k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  ------------------
  |  Branch (1013:21): [True: 6, False: 143k]
  ------------------
 1014|      6|                    err = ERANGE;
 1015|      6|                    goto free;
 1016|      6|                }
 1017|       |
 1018|   143k|                hexit_str[len] = hexit;
 1019|   143k|                len++;
 1020|   143k|            }
 1021|   144k|            s++;
 1022|   144k|        }
 1023|       |
 1024|  9.31k|        val_idx = field_width;
 1025|  83.8k|        for (i = len - 1; i >= 0; i -= 2) {
  ------------------
  |  Branch (1025:27): [True: 74.5k, False: 9.31k]
  ------------------
 1026|  74.5k|            val_idx--;
 1027|  74.5k|            valuep[val_idx] = hexit_str[i];
 1028|  74.5k|            if (i > 0) {
  ------------------
  |  Branch (1028:17): [True: 69.3k, False: 5.21k]
  ------------------
 1029|  69.3k|                valuep[val_idx] += hexit_str[i - 1] << 4;
 1030|  69.3k|            }
 1031|  74.5k|        }
 1032|       |
 1033|  9.31k|        memset(valuep, 0, val_idx);
 1034|       |
 1035|  9.32k|free:
 1036|  9.32k|        free(hexit_str);
 1037|  9.32k|        return err;
 1038|  9.31k|    }
 1039|       |
 1040|   271k|    errno = 0;
 1041|   262k|    integer = strtoull(s, tail, 0);
 1042|   262k|    if (errno || s == *tail) {
  ------------------
  |  Branch (1042:9): [True: 2, False: 262k]
  |  Branch (1042:18): [True: 410, False: 262k]
  ------------------
 1043|    412|        return errno ? errno : EINVAL;
  ------------------
  |  Branch (1043:16): [True: 2, False: 410]
  ------------------
 1044|    412|    }
 1045|       |
 1046|  7.02M|    for (i = field_width - 1; i >= 0; i--) {
  ------------------
  |  Branch (1046:31): [True: 6.76M, False: 262k]
  ------------------
 1047|  6.76M|        valuep[i] = integer;
 1048|  6.76M|        integer >>= 8;
 1049|  6.76M|    }
 1050|   262k|    if (integer) {
  ------------------
  |  Branch (1050:9): [True: 52, False: 262k]
  ------------------
 1051|     52|        return ERANGE;
 1052|     52|    }
 1053|       |
 1054|   262k|    return 0;
 1055|   262k|}
ovs_ignore:
 1265|  12.5M|void ovs_ignore(bool x OVS_UNUSED) { }
is_all_byte:
 1356|   746k|{
 1357|   746k|    const uint8_t *p = p_;
 1358|   746k|    size_t i;
 1359|       |
 1360|  11.2M|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (1360:17): [True: 10.7M, False: 512k]
  ------------------
 1361|  10.7M|        if (p[i] != byte) {
  ------------------
  |  Branch (1361:13): [True: 233k, False: 10.5M]
  ------------------
 1362|   233k|            return false;
 1363|   233k|        }
 1364|  10.7M|    }
 1365|   512k|    return true;
 1366|   746k|}
is_all_zeros:
 1371|   460k|{
 1372|   460k|    return is_all_byte(p, n, 0);
 1373|   460k|}
is_all_ones:
 1378|   286k|{
 1379|   286k|    return is_all_byte(p, n, 0xff);
 1380|   286k|}
bitwise_copy:
 1414|   225k|{
 1415|   225k|    const uint8_t *src = src_;
 1416|   225k|    uint8_t *dst = dst_;
 1417|       |
 1418|   225k|    src += src_len - (src_ofs / 8 + 1);
 1419|   225k|    src_ofs %= 8;
 1420|       |
 1421|   225k|    dst += dst_len - (dst_ofs / 8 + 1);
 1422|   225k|    dst_ofs %= 8;
 1423|       |
 1424|   225k|    if (src_ofs == 0 && dst_ofs == 0) {
  ------------------
  |  Branch (1424:9): [True: 135k, False: 89.9k]
  |  Branch (1424:25): [True: 95.6k, False: 40.2k]
  ------------------
 1425|  95.6k|        unsigned int n_bytes = n_bits / 8;
 1426|  95.6k|        if (n_bytes) {
  ------------------
  |  Branch (1426:13): [True: 50.2k, False: 45.3k]
  ------------------
 1427|  50.2k|            dst -= n_bytes - 1;
 1428|  50.2k|            src -= n_bytes - 1;
 1429|  50.2k|            memcpy(dst, src, n_bytes);
 1430|       |
 1431|  50.2k|            n_bits %= 8;
 1432|  50.2k|            src--;
 1433|  50.2k|            dst--;
 1434|  50.2k|        }
 1435|  95.6k|        if (n_bits) {
  ------------------
  |  Branch (1435:13): [True: 46.6k, False: 48.9k]
  ------------------
 1436|  46.6k|            uint8_t mask = (1 << n_bits) - 1;
 1437|  46.6k|            *dst = (*dst & ~mask) | (*src & mask);
 1438|  46.6k|        }
 1439|   130k|    } else {
 1440|   278k|        while (n_bits > 0) {
  ------------------
  |  Branch (1440:16): [True: 148k, False: 130k]
  ------------------
 1441|   148k|            unsigned int max_copy = 8 - MAX(src_ofs, dst_ofs);
  ------------------
  |  |   95|   148k|#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (95:20): [True: 97.0k, False: 51.1k]
  |  |  ------------------
  ------------------
 1442|   148k|            unsigned int chunk = MIN(n_bits, max_copy);
  ------------------
  |  |   91|   148k|#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (91:20): [True: 118k, False: 29.4k]
  |  |  ------------------
  ------------------
 1443|   148k|            uint8_t mask = ((1 << chunk) - 1) << dst_ofs;
 1444|       |
 1445|   148k|            *dst &= ~mask;
 1446|   148k|            *dst |= ((*src >> src_ofs) << dst_ofs) & mask;
 1447|       |
 1448|   148k|            src_ofs += chunk;
 1449|   148k|            if (src_ofs == 8) {
  ------------------
  |  Branch (1449:17): [True: 16.6k, False: 131k]
  ------------------
 1450|  16.6k|                src--;
 1451|  16.6k|                src_ofs = 0;
 1452|  16.6k|            }
 1453|   148k|            dst_ofs += chunk;
 1454|   148k|            if (dst_ofs == 8) {
  ------------------
  |  Branch (1454:17): [True: 12.7k, False: 135k]
  ------------------
 1455|  12.7k|                dst--;
 1456|  12.7k|                dst_ofs = 0;
 1457|  12.7k|            }
 1458|   148k|            n_bits -= chunk;
 1459|   148k|        }
 1460|   130k|    }
 1461|   225k|}
bitwise_one:
 1526|   118k|{
 1527|   118k|    uint8_t *dst = dst_;
 1528|       |
 1529|   118k|    if (!n_bits) {
  ------------------
  |  Branch (1529:9): [True: 0, False: 118k]
  ------------------
 1530|      0|        return;
 1531|      0|    }
 1532|       |
 1533|   118k|    dst += dst_len - (dst_ofs / 8 + 1);
 1534|   118k|    dst_ofs %= 8;
 1535|       |
 1536|   118k|    if (dst_ofs) {
  ------------------
  |  Branch (1536:9): [True: 40.2k, False: 77.7k]
  ------------------
 1537|  40.2k|        unsigned int chunk = MIN(n_bits, 8 - dst_ofs);
  ------------------
  |  |   91|  40.2k|#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (91:20): [True: 34.5k, False: 5.70k]
  |  |  ------------------
  ------------------
 1538|       |
 1539|  40.2k|        *dst |= ((1 << chunk) - 1) << dst_ofs;
 1540|       |
 1541|  40.2k|        n_bits -= chunk;
 1542|  40.2k|        if (!n_bits) {
  ------------------
  |  Branch (1542:13): [True: 39.7k, False: 506]
  ------------------
 1543|  39.7k|            return;
 1544|  39.7k|        }
 1545|       |
 1546|    506|        dst--;
 1547|    506|    }
 1548|       |
 1549|  3.06M|    while (n_bits >= 8) {
  ------------------
  |  Branch (1549:12): [True: 2.99M, False: 78.2k]
  ------------------
 1550|  2.99M|        *dst-- = 0xff;
 1551|  2.99M|        n_bits -= 8;
 1552|  2.99M|    }
 1553|       |
 1554|  78.2k|    if (n_bits) {
  ------------------
  |  Branch (1554:9): [True: 32.2k, False: 45.9k]
  ------------------
 1555|  32.2k|        *dst |= (1 << n_bits) - 1;
 1556|  32.2k|    }
 1557|  78.2k|}
bitwise_is_all_zeros:
 1575|  83.8k|{
 1576|  83.8k|    const uint8_t *p = p_;
 1577|       |
 1578|  83.8k|    if (!n_bits) {
  ------------------
  |  Branch (1578:9): [True: 10.8k, False: 72.9k]
  ------------------
 1579|  10.8k|        return true;
 1580|  10.8k|    }
 1581|       |
 1582|  72.9k|    p += len - (ofs / 8 + 1);
 1583|  72.9k|    ofs %= 8;
 1584|       |
 1585|  72.9k|    if (ofs) {
  ------------------
  |  Branch (1585:9): [True: 72.0k, False: 958]
  ------------------
 1586|  72.0k|        unsigned int chunk = MIN(n_bits, 8 - ofs);
  ------------------
  |  |   91|  72.0k|#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (91:20): [True: 0, False: 72.0k]
  |  |  ------------------
  ------------------
 1587|       |
 1588|  72.0k|        if (*p & (((1 << chunk) - 1) << ofs)) {
  ------------------
  |  Branch (1588:13): [True: 116, False: 71.9k]
  ------------------
 1589|    116|            return false;
 1590|    116|        }
 1591|       |
 1592|  71.9k|        n_bits -= chunk;
 1593|  71.9k|        if (!n_bits) {
  ------------------
  |  Branch (1593:13): [True: 11.9k, False: 59.9k]
  ------------------
 1594|  11.9k|            return true;
 1595|  11.9k|        }
 1596|       |
 1597|  59.9k|        p--;
 1598|  59.9k|    }
 1599|       |
 1600|  2.39M|    while (n_bits >= 8) {
  ------------------
  |  Branch (1600:12): [True: 2.33M, False: 60.8k]
  ------------------
 1601|  2.33M|        if (*p) {
  ------------------
  |  Branch (1601:13): [True: 16, False: 2.33M]
  ------------------
 1602|     16|            return false;
 1603|     16|        }
 1604|  2.33M|        n_bits -= 8;
 1605|  2.33M|        p--;
 1606|  2.33M|    }
 1607|       |
 1608|  60.8k|    if (n_bits && *p & ((1 << n_bits) - 1)) {
  ------------------
  |  Branch (1608:9): [True: 0, False: 60.8k]
  |  Branch (1608:19): [True: 0, False: 0]
  ------------------
 1609|      0|        return false;
 1610|      0|    }
 1611|       |
 1612|  60.8k|    return true;
 1613|  60.8k|}
bitwise_scan:
 1630|   222k|{
 1631|   222k|    unsigned int ofs;
 1632|       |
 1633|   947k|    for (ofs = start; ofs < end; ofs++) {
  ------------------
  |  Branch (1633:23): [True: 935k, False: 12.0k]
  ------------------
 1634|   935k|        if (bitwise_get_bit(p, len, ofs) == target) {
  ------------------
  |  Branch (1634:13): [True: 210k, False: 724k]
  ------------------
 1635|   210k|            break;
 1636|   210k|        }
 1637|   935k|    }
 1638|   222k|    return ofs;
 1639|   222k|}
bitwise_get:
 1742|   107k|{
 1743|   107k|    ovs_be64 value = htonll(0);
 1744|       |
 1745|   107k|    bitwise_copy(src, src_len, src_ofs,
 1746|   107k|                 &value, sizeof value, 0,
 1747|   107k|                 n_bits);
 1748|   107k|    return ntohll(value);
 1749|   107k|}
bitwise_get_bit:
 1765|   935k|{
 1766|   935k|    const uint8_t *src = src_;
 1767|       |
 1768|   935k|    return (src[len - (ofs / 8 + 1)] & (1u << (ofs % 8))) != 0;
 1769|   935k|}
ovs_scan:
 2291|   150k|{
 2292|   150k|    va_list args;
 2293|   150k|    bool res;
 2294|       |
 2295|   150k|    va_start(args, format);
 2296|   150k|    res = ovs_scan__(s, NULL, format, &args);
 2297|       |    va_end(args);
 2298|   150k|    return res;
 2299|   150k|}
ovs_scan_len:
 2307|   137k|{
 2308|   137k|    va_list args;
 2309|   137k|    bool success;
 2310|   137k|    int n1;
 2311|       |
 2312|   137k|    va_start(args, format);
 2313|   137k|    success = ovs_scan__(s + *n, &n1, format, &args);
 2314|   137k|    va_end(args);
 2315|   137k|    if (success) {
  ------------------
  |  Branch (2315:9): [True: 70.0k, False: 67.8k]
  ------------------
 2316|  70.0k|        *n = *n + n1;
 2317|  70.0k|    }
 2318|   137k|    return success;
 2319|   137k|}
util.c:ovs_scan__:
 2111|   288k|{
 2112|   288k|    const char *const start = s;
 2113|   288k|    bool ok = false;
 2114|   288k|    const char *p;
 2115|       |
 2116|   288k|    p = format;
 2117|   830k|    while (*p != '\0') {
  ------------------
  |  Branch (2117:12): [True: 683k, False: 146k]
  ------------------
 2118|   683k|        struct scan_spec spec;
 2119|   683k|        unsigned char c = *p++;
 2120|   683k|        bool discard;
 2121|       |
 2122|   683k|        if (isspace(c)) {
  ------------------
  |  Branch (2122:13): [True: 5.32k, False: 678k]
  ------------------
 2123|  5.32k|            s = skip_spaces(s);
 2124|  5.32k|            continue;
 2125|   678k|        } else if (c != '%') {
  ------------------
  |  Branch (2125:20): [True: 351k, False: 326k]
  ------------------
 2126|   351k|            if (*s != c) {
  ------------------
  |  Branch (2126:17): [True: 99.2k, False: 252k]
  ------------------
 2127|  99.2k|                goto exit;
 2128|  99.2k|            }
 2129|   252k|            s++;
 2130|   252k|            continue;
 2131|   351k|        } else if (*p == '%') {
  ------------------
  |  Branch (2131:20): [True: 0, False: 326k]
  ------------------
 2132|      0|            if (*s++ != '%') {
  ------------------
  |  Branch (2132:17): [True: 0, False: 0]
  ------------------
 2133|      0|                goto exit;
 2134|      0|            }
 2135|      0|            p++;
 2136|      0|            continue;
 2137|      0|        }
 2138|       |
 2139|       |        /* Parse '*' flag. */
 2140|   326k|        discard = *p == '*';
 2141|   326k|        p += discard;
 2142|       |
 2143|       |        /* Parse field width. */
 2144|   326k|        spec.width = 0;
 2145|   459k|        while (*p >= '0' && *p <= '9') {
  ------------------
  |  Branch (2145:16): [True: 459k, False: 0]
  |  Branch (2145:29): [True: 132k, False: 326k]
  ------------------
 2146|   132k|            spec.width = spec.width * 10 + (*p++ - '0');
 2147|   132k|        }
 2148|   326k|        if (spec.width == 0) {
  ------------------
  |  Branch (2148:13): [True: 260k, False: 66.3k]
  ------------------
 2149|   260k|            spec.width = UINT_MAX;
 2150|   260k|        }
 2151|       |
 2152|       |        /* Parse type modifier. */
 2153|   326k|        switch (*p) {
 2154|   101k|        case 'h':
  ------------------
  |  Branch (2154:9): [True: 101k, False: 225k]
  ------------------
 2155|   101k|            if (p[1] == 'h') {
  ------------------
  |  Branch (2155:17): [True: 99.3k, False: 2.16k]
  ------------------
 2156|  99.3k|                spec.type = SCAN_CHAR;
 2157|  99.3k|                p += 2;
 2158|  99.3k|            } else {
 2159|  2.16k|                spec.type = SCAN_SHORT;
 2160|  2.16k|                p++;
 2161|  2.16k|            }
 2162|   101k|            break;
 2163|       |
 2164|      0|        case 'j':
  ------------------
  |  Branch (2164:9): [True: 0, False: 326k]
  ------------------
 2165|      0|            spec.type = SCAN_INTMAX_T;
 2166|      0|            p++;
 2167|      0|            break;
 2168|       |
 2169|  4.35k|        case 'l':
  ------------------
  |  Branch (2169:9): [True: 4.35k, False: 322k]
  ------------------
 2170|  4.35k|            if (p[1] == 'l') {
  ------------------
  |  Branch (2170:17): [True: 4.35k, False: 0]
  ------------------
 2171|  4.35k|                spec.type = SCAN_LLONG;
 2172|  4.35k|                p += 2;
 2173|  4.35k|            } else {
 2174|      0|                spec.type = SCAN_LONG;
 2175|      0|                p++;
 2176|      0|            }
 2177|  4.35k|            break;
 2178|       |
 2179|      0|        case 'L':
  ------------------
  |  Branch (2179:9): [True: 0, False: 326k]
  ------------------
 2180|      0|        case 'q':
  ------------------
  |  Branch (2180:9): [True: 0, False: 326k]
  ------------------
 2181|      0|            spec.type = SCAN_LLONG;
 2182|      0|            p++;
 2183|      0|            break;
 2184|       |
 2185|      0|        case 't':
  ------------------
  |  Branch (2185:9): [True: 0, False: 326k]
  ------------------
 2186|      0|            spec.type = SCAN_PTRDIFF_T;
 2187|      0|            p++;
 2188|      0|            break;
 2189|       |
 2190|      0|        case 'z':
  ------------------
  |  Branch (2190:9): [True: 0, False: 326k]
  ------------------
 2191|      0|            spec.type = SCAN_SIZE_T;
 2192|      0|            p++;
 2193|      0|            break;
 2194|       |
 2195|   220k|        default:
  ------------------
  |  Branch (2195:9): [True: 220k, False: 105k]
  ------------------
 2196|   220k|            spec.type = SCAN_INT;
 2197|   220k|            break;
 2198|   326k|        }
 2199|       |
 2200|   326k|        if (discard) {
  ------------------
  |  Branch (2200:13): [True: 0, False: 326k]
  ------------------
 2201|      0|            spec.type = SCAN_DISCARD;
 2202|      0|        }
 2203|       |
 2204|   326k|        c = *p++;
 2205|   326k|        if (c != 'c' && c != 'n' && c != '[') {
  ------------------
  |  Branch (2205:13): [True: 326k, False: 0]
  |  Branch (2205:25): [True: 320k, False: 5.63k]
  |  Branch (2205:37): [True: 254k, False: 66.3k]
  ------------------
 2206|   254k|            s = skip_spaces(s);
 2207|   254k|        }
 2208|   326k|        switch (c) {
  ------------------
  |  Branch (2208:17): [True: 326k, False: 0]
  ------------------
 2209|   143k|        case 'd':
  ------------------
  |  Branch (2209:9): [True: 143k, False: 182k]
  ------------------
 2210|   143k|            s = scan_int(s, &spec, 10, args);
 2211|   143k|            break;
 2212|       |
 2213|  9.40k|        case 'i':
  ------------------
  |  Branch (2213:9): [True: 9.40k, False: 317k]
  ------------------
 2214|  9.40k|            s = scan_int(s, &spec, 0, args);
 2215|  9.40k|            break;
 2216|       |
 2217|      0|        case 'o':
  ------------------
  |  Branch (2217:9): [True: 0, False: 326k]
  ------------------
 2218|      0|            s = scan_int(s, &spec, 8, args);
 2219|      0|            break;
 2220|       |
 2221|  88.0k|        case 'u':
  ------------------
  |  Branch (2221:9): [True: 88.0k, False: 238k]
  ------------------
 2222|  88.0k|            s = scan_int(s, &spec, 10, args);
 2223|  88.0k|            break;
 2224|       |
 2225|  13.4k|        case 'x':
  ------------------
  |  Branch (2225:9): [True: 13.4k, False: 313k]
  ------------------
 2226|  13.4k|        case 'X':
  ------------------
  |  Branch (2226:9): [True: 0, False: 326k]
  ------------------
 2227|  13.4k|            s = scan_int(s, &spec, 16, args);
 2228|  13.4k|            break;
 2229|       |
 2230|      0|        case 'e':
  ------------------
  |  Branch (2230:9): [True: 0, False: 326k]
  ------------------
 2231|      0|        case 'f':
  ------------------
  |  Branch (2231:9): [True: 0, False: 326k]
  ------------------
 2232|      0|        case 'g':
  ------------------
  |  Branch (2232:9): [True: 0, False: 326k]
  ------------------
 2233|      0|        case 'E':
  ------------------
  |  Branch (2233:9): [True: 0, False: 326k]
  ------------------
 2234|      0|        case 'G':
  ------------------
  |  Branch (2234:9): [True: 0, False: 326k]
  ------------------
 2235|      0|            s = scan_float(s, &spec, args);
 2236|      0|            break;
 2237|       |
 2238|      0|        case 's':
  ------------------
  |  Branch (2238:9): [True: 0, False: 326k]
  ------------------
 2239|      0|            s = scan_string(s, &spec, args);
 2240|      0|            break;
 2241|       |
 2242|  66.3k|        case '[':
  ------------------
  |  Branch (2242:9): [True: 66.3k, False: 260k]
  ------------------
 2243|  66.3k|            s = scan_set(s, &spec, &p, args);
 2244|  66.3k|            break;
 2245|       |
 2246|      0|        case 'c':
  ------------------
  |  Branch (2246:9): [True: 0, False: 326k]
  ------------------
 2247|      0|            s = scan_chars(s, &spec, args);
 2248|      0|            break;
 2249|       |
 2250|  5.63k|        case 'n':
  ------------------
  |  Branch (2250:9): [True: 5.63k, False: 320k]
  ------------------
 2251|  5.63k|            if (spec.type != SCAN_DISCARD) {
  ------------------
  |  Branch (2251:17): [True: 5.63k, False: 0]
  ------------------
 2252|  5.63k|                *va_arg(*args, int *) = s - start;
 2253|  5.63k|            }
 2254|  5.63k|            break;
 2255|   326k|        }
 2256|       |
 2257|   326k|        if (!s) {
  ------------------
  |  Branch (2257:13): [True: 42.1k, False: 284k]
  ------------------
 2258|  42.1k|            goto exit;
 2259|  42.1k|        }
 2260|   326k|    }
 2261|   146k|    if (n) {
  ------------------
  |  Branch (2261:9): [True: 70.0k, False: 76.6k]
  ------------------
 2262|  70.0k|        *n = s - start;
 2263|  70.0k|    }
 2264|       |
 2265|   146k|    ok = true;
 2266|   288k|exit:
 2267|   288k|    return ok;
 2268|   146k|}
util.c:skip_spaces:
 1868|   259k|{
 1869|   259k|    while (isspace((unsigned char) *s)) {
  ------------------
  |  Branch (1869:12): [True: 1.67k, False: 259k]
  ------------------
 1870|  1.67k|        s++;
 1871|  1.67k|    }
 1872|   259k|    return s;
 1873|   259k|}
util.c:scan_int:
 1877|   254k|{
 1878|   254k|    const char *start = s;
 1879|   254k|    uintmax_t value;
 1880|   254k|    bool negative;
 1881|   254k|    int n_digits;
 1882|       |
 1883|   254k|    negative = *s == '-';
 1884|   254k|    s += *s == '-' || *s == '+';
  ------------------
  |  Branch (1884:10): [True: 2.57k, False: 252k]
  |  Branch (1884:23): [True: 641, False: 251k]
  ------------------
 1885|       |
 1886|   254k|    if ((!base || base == 16) && *s == '0' && (s[1] == 'x' || s[1] == 'X')) {
  ------------------
  |  Branch (1886:10): [True: 9.40k, False: 245k]
  |  Branch (1886:19): [True: 13.4k, False: 231k]
  |  Branch (1886:34): [True: 7.27k, False: 15.6k]
  |  Branch (1886:48): [True: 211, False: 7.06k]
  |  Branch (1886:63): [True: 278, False: 6.78k]
  ------------------
 1887|    489|        base = 16;
 1888|    489|        s += 2;
 1889|   254k|    } else if (!base) {
  ------------------
  |  Branch (1889:16): [True: 8.94k, False: 245k]
  ------------------
 1890|  8.94k|        base = *s == '0' ? 8 : 10;
  ------------------
  |  Branch (1890:16): [True: 4.62k, False: 4.32k]
  ------------------
 1891|  8.94k|    }
 1892|       |
 1893|   254k|    if (s - start >= spec->width) {
  ------------------
  |  Branch (1893:9): [True: 0, False: 254k]
  ------------------
 1894|      0|        return NULL;
 1895|      0|    }
 1896|       |
 1897|   254k|    value = 0;
 1898|   254k|    n_digits = 0;
 1899|  1.02M|    while (s - start < spec->width) {
  ------------------
  |  Branch (1899:12): [True: 1.02M, False: 0]
  ------------------
 1900|  1.02M|        int digit = hexit_value(*s);
 1901|       |
 1902|  1.02M|        if (digit < 0 || digit >= base) {
  ------------------
  |  Branch (1902:13): [True: 253k, False: 768k]
  |  Branch (1902:26): [True: 1.41k, False: 767k]
  ------------------
 1903|   254k|            break;
 1904|   254k|        }
 1905|   767k|        value = value * base + digit;
 1906|   767k|        n_digits++;
 1907|   767k|        s++;
 1908|   767k|    }
 1909|   254k|    if (!n_digits) {
  ------------------
  |  Branch (1909:9): [True: 38.5k, False: 216k]
  ------------------
 1910|  38.5k|        return NULL;
 1911|  38.5k|    }
 1912|       |
 1913|   216k|    if (negative) {
  ------------------
  |  Branch (1913:9): [True: 2.12k, False: 213k]
  ------------------
 1914|  2.12k|        value = -value;
 1915|  2.12k|    }
 1916|       |
 1917|   216k|    switch (spec->type) {
  ------------------
  |  Branch (1917:13): [True: 216k, False: 0]
  ------------------
 1918|      0|    case SCAN_DISCARD:
  ------------------
  |  Branch (1918:5): [True: 0, False: 216k]
  ------------------
 1919|      0|        break;
 1920|  63.7k|    case SCAN_CHAR:
  ------------------
  |  Branch (1920:5): [True: 63.7k, False: 152k]
  ------------------
 1921|  63.7k|        *va_arg(*args, char *) = value;
 1922|  63.7k|        break;
 1923|  2.16k|    case SCAN_SHORT:
  ------------------
  |  Branch (1923:5): [True: 2.16k, False: 213k]
  ------------------
 1924|  2.16k|        *va_arg(*args, short int *) = value;
 1925|  2.16k|        break;
 1926|   147k|    case SCAN_INT:
  ------------------
  |  Branch (1926:5): [True: 147k, False: 68.9k]
  ------------------
 1927|   147k|        *va_arg(*args, int *) = value;
 1928|   147k|        break;
 1929|      0|    case SCAN_LONG:
  ------------------
  |  Branch (1929:5): [True: 0, False: 216k]
  ------------------
 1930|      0|        *va_arg(*args, long int *) = value;
 1931|      0|        break;
 1932|  3.03k|    case SCAN_LLONG:
  ------------------
  |  Branch (1932:5): [True: 3.03k, False: 212k]
  ------------------
 1933|  3.03k|        *va_arg(*args, long long int *) = value;
 1934|  3.03k|        break;
 1935|      0|    case SCAN_INTMAX_T:
  ------------------
  |  Branch (1935:5): [True: 0, False: 216k]
  ------------------
 1936|      0|        *va_arg(*args, intmax_t *) = value;
 1937|      0|        break;
 1938|      0|    case SCAN_PTRDIFF_T:
  ------------------
  |  Branch (1938:5): [True: 0, False: 216k]
  ------------------
 1939|      0|        *va_arg(*args, ptrdiff_t *) = value;
 1940|      0|        break;
 1941|      0|    case SCAN_SIZE_T:
  ------------------
  |  Branch (1941:5): [True: 0, False: 216k]
  ------------------
 1942|      0|        *va_arg(*args, size_t *) = value;
 1943|      0|        break;
 1944|   216k|    }
 1945|   216k|    return s;
 1946|   216k|}
util.c:scan_output_string:
 2016|  62.7k|{
 2017|  62.7k|    if (spec->type != SCAN_DISCARD) {
  ------------------
  |  Branch (2017:9): [True: 62.7k, False: 0]
  ------------------
 2018|       |        char *out = va_arg(*args, char *);
 2019|  62.7k|        memcpy(out, s, n);
 2020|  62.7k|        out[n] = '\0';
 2021|  62.7k|    }
 2022|  62.7k|}
util.c:scan_set:
 2072|  66.3k|{
 2073|  66.3k|    unsigned long set[BITMAP_N_LONGS(UCHAR_MAX + 1)];
 2074|  66.3k|    bool complemented;
 2075|  66.3k|    unsigned int n;
 2076|       |
 2077|       |    /* Parse the scan set. */
 2078|  66.3k|    memset(set, 0, sizeof set);
 2079|  66.3k|    *pp = parse_scanset(*pp, set, &complemented);
 2080|       |
 2081|       |    /* Parse the data. */
 2082|  66.3k|    n = 0;
 2083|   575k|    while (s[n]
  ------------------
  |  Branch (2083:12): [True: 517k, False: 57.8k]
  ------------------
 2084|   517k|           && bitmap_is_set(set, (unsigned char) s[n]) == !complemented
  ------------------
  |  Branch (2084:15): [True: 508k, False: 8.51k]
  ------------------
 2085|   508k|           && n < spec->width) {
  ------------------
  |  Branch (2085:15): [True: 508k, False: 0]
  ------------------
 2086|   508k|        n++;
 2087|   508k|    }
 2088|  66.3k|    if (!n) {
  ------------------
  |  Branch (2088:9): [True: 3.60k, False: 62.7k]
  ------------------
 2089|  3.60k|        return NULL;
 2090|  3.60k|    }
 2091|  62.7k|    scan_output_string(spec, s, n, args);
 2092|  62.7k|    return s + n;
 2093|  66.3k|}
util.c:parse_scanset:
 2044|  66.3k|{
 2045|  66.3k|    const uint8_t *p = (const uint8_t *) p_;
 2046|       |
 2047|  66.3k|    *complemented = *p == '^';
 2048|  66.3k|    p += *complemented;
 2049|       |
 2050|  66.3k|    if (*p == ']') {
  ------------------
  |  Branch (2050:9): [True: 0, False: 66.3k]
  ------------------
 2051|      0|        bitmap_set1(set, ']');
 2052|      0|        p++;
 2053|      0|    }
 2054|       |
 2055|  1.65M|    while (*p && *p != ']') {
  ------------------
  |  Branch (2055:12): [True: 1.65M, False: 0]
  |  Branch (2055:18): [True: 1.59M, False: 66.3k]
  ------------------
 2056|  1.59M|        if (p[1] == '-' && p[2] != ']' && p[2] > *p) {
  ------------------
  |  Branch (2056:13): [True: 0, False: 1.59M]
  |  Branch (2056:28): [True: 0, False: 0]
  |  Branch (2056:43): [True: 0, False: 0]
  ------------------
 2057|      0|            bitmap_set_multiple(set, *p, p[2] - *p + 1, true);
 2058|      0|            p += 3;
 2059|  1.59M|        } else {
 2060|  1.59M|            bitmap_set1(set, *p++);
 2061|  1.59M|        }
 2062|  1.59M|    }
 2063|  66.3k|    if (*p == ']') {
  ------------------
  |  Branch (2063:9): [True: 66.3k, False: 0]
  ------------------
 2064|  66.3k|        p++;
 2065|  66.3k|    }
 2066|  66.3k|    return (const char *) p;
 2067|  66.3k|}

match.c:ovs_u128_and:
  515|  14.0k|{
  516|  14.0k|    ovs_u128 dst;
  517|       |
  518|  14.0k|    dst.u64.hi = a.u64.hi & b.u64.hi;
  519|  14.0k|    dst.u64.lo = a.u64.lo & b.u64.lo;
  520|       |
  521|  14.0k|    return dst;
  522|  14.0k|}
ofpbuf.c:nullable_memset:
  198|   647k|{
  199|   647k|    if (n) {
  ------------------
  |  Branch (199:9): [True: 627k, False: 20.3k]
  ------------------
  200|   627k|        memset(dst, c, n);
  201|   627k|    }
  202|   647k|}
packets.c:ctz32:
  284|  10.2k|{
  285|  10.2k|    return n ? raw_ctz(n) : 32;
  ------------------
  |  Branch (285:12): [True: 66, False: 10.1k]
  ------------------
  286|  10.2k|}
packets.c:raw_ctz:
  261|     66|{
  262|       |    /* With GCC 4.7 on 32-bit x86, if a 32-bit integer is passed as 'n', using
  263|       |     * a plain __builtin_ctzll() here always generates an out-of-line function
  264|       |     * call.  The test below helps it to emit a single 'bsf' instruction. */
  265|     66|    return (__builtin_constant_p(n <= UINT32_MAX) && n <= UINT32_MAX
  ------------------
  |  Branch (265:13): [True: 66, False: 0]
  |  Branch (265:54): [True: 66, False: 0]
  ------------------
  266|     66|            ? __builtin_ctz(n)
  267|     66|            : __builtin_ctzll(n));
  268|     66|}
packets.c:be32_prefix_mask:
  414|  1.00k|{
  415|       |    return htonl((uint64_t)UINT32_MAX << (32 - plen));
  416|  1.00k|}
tun-metadata.c:raw_ctz:
  261|    390|{
  262|       |    /* With GCC 4.7 on 32-bit x86, if a 32-bit integer is passed as 'n', using
  263|       |     * a plain __builtin_ctzll() here always generates an out-of-line function
  264|       |     * call.  The test below helps it to emit a single 'bsf' instruction. */
  265|    390|    return (__builtin_constant_p(n <= UINT32_MAX) && n <= UINT32_MAX
  ------------------
  |  Branch (265:13): [True: 0, False: 390]
  |  Branch (265:54): [True: 0, False: 0]
  ------------------
  266|    390|            ? __builtin_ctz(n)
  267|    390|            : __builtin_ctzll(n));
  268|    390|}
tun-metadata.c:zero_rightmost_1bit:
  390|    390|{
  391|    390|    return x & (x - 1);
  392|    390|}
util.c:nullable_memcpy:
  188|    328|{
  189|    328|    if (n) {
  ------------------
  |  Branch (189:9): [True: 328, False: 0]
  ------------------
  190|    328|        memcpy(dst, src, n);
  191|    328|    }
  192|    328|}
flow.c:rightmost_1bit:
  382|    209|{
  383|    209|    return x & -x;
  384|    209|}
flow.c:count_1bits:
  332|  20.1k|{
  333|       |#if (__GNUC__ >= 4 && __POPCNT__) || (defined(__aarch64__) && __GNUC__ >= 7)
  334|       |    return __builtin_popcountll(x);
  335|       |#elif defined(__aarch64__) && __GNUC__ >= 6
  336|       |    return vaddv_u8(vcnt_u8(vcreate_u8(x)));
  337|       |#else
  338|       |    /* This portable implementation is the fastest one we know of for 64
  339|       |     * bits, and about 3x faster than GCC 4.7 __builtin_popcountll(). */
  340|  20.1k|    const uint64_t h55 = UINT64_C(0x5555555555555555);
  341|  20.1k|    const uint64_t h33 = UINT64_C(0x3333333333333333);
  342|  20.1k|    const uint64_t h0F = UINT64_C(0x0F0F0F0F0F0F0F0F);
  343|       |    const uint64_t h01 = UINT64_C(0x0101010101010101);
  344|  20.1k|    x -= (x >> 1) & h55;               /* Count of each 2 bits in-place. */
  345|  20.1k|    x = (x & h33) + ((x >> 2) & h33);  /* Count of each 4 bits in-place. */
  346|  20.1k|    x = (x + (x >> 4)) & h0F;          /* Count of each 8 bits in-place. */
  347|  20.1k|    return (x * h01) >> 56;            /* Sum of all bytes. */
  348|  20.1k|#endif
  349|  20.1k|}
flow.c:raw_ctz:
  261|  61.8k|{
  262|       |    /* With GCC 4.7 on 32-bit x86, if a 32-bit integer is passed as 'n', using
  263|       |     * a plain __builtin_ctzll() here always generates an out-of-line function
  264|       |     * call.  The test below helps it to emit a single 'bsf' instruction. */
  265|  61.8k|    return (__builtin_constant_p(n <= UINT32_MAX) && n <= UINT32_MAX
  ------------------
  |  Branch (265:13): [True: 0, False: 61.8k]
  |  Branch (265:54): [True: 0, False: 0]
  ------------------
  266|  61.8k|            ? __builtin_ctz(n)
  267|  61.8k|            : __builtin_ctzll(n));
  268|  61.8k|}
flow.c:zero_rightmost_1bit:
  390|  61.8k|{
  391|  61.8k|    return x & (x - 1);
  392|  61.8k|}

vlog_get_level_val:
  189|      2|{
  190|      2|    return search_name_array(name, level_names, ARRAY_SIZE(level_names));
  ------------------
  |  |  297|      2|#define ARRAY_SIZE(ARRAY) __ARRAY_SIZE(ARRAY)
  |  |  ------------------
  |  |  |  |   46|      2|    __builtin_choose_expr(__ARRAY_CHECK(ARRAY),			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      2|    !__builtin_types_compatible_p(typeof(ARRAY), typeof(&ARRAY[0]))
  |  |  |  |  ------------------
  |  |  |  |   47|      2|        __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define __ARRAY_SIZE_NOCHECK(ARRAY) (sizeof(ARRAY) / sizeof((ARRAY)[0]))
  |  |  |  |  ------------------
  |  |  |  |                       __ARRAY_SIZE_NOCHECK(ARRAY), __ARRAY_FAIL(ARRAY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      2|#define __ARRAY_FAIL(ARRAY) (sizeof(char[-2*!__ARRAY_CHECK(ARRAY)]))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      2|}
vlog_get_destination_val:
  205|      1|{
  206|      1|    size_t i;
  207|       |
  208|      4|    for (i = 0; i < VLF_N_DESTINATIONS; i++) {
  ------------------
  |  Branch (208:17): [True: 3, False: 1]
  ------------------
  209|      3|        if (!strcasecmp(destinations[i].name, name)) {
  ------------------
  |  Branch (209:13): [True: 0, False: 3]
  ------------------
  210|      0|            break;
  211|      0|        }
  212|      3|    }
  213|      1|    return i;
  214|      1|}
vlog_insert_module:
  218|    182|{
  219|    182|    ovs_mutex_lock(&log_file_mutex);
  ------------------
  |  |   71|    182|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    182|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    182|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    182|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|    182|    ovs_list_insert(&vlog_modules, vlog);
  221|    182|    ovs_mutex_unlock(&log_file_mutex);
  222|    182|}
vlog_set_levels:
  303|      1|{
  304|      1|    assert(destination < VLF_N_DESTINATIONS ||
  305|      1|           destination == VLF_ANY_DESTINATION);
  306|      1|    if (destination == VLF_ANY_DESTINATION) {
  ------------------
  |  Branch (306:9): [True: 1, False: 0]
  ------------------
  307|      4|        for (destination = 0; destination < VLF_N_DESTINATIONS;
  ------------------
  |  Branch (307:31): [True: 3, False: 1]
  ------------------
  308|      3|             destination++) {
  309|      3|            set_destination_level(destination, module, level);
  310|      3|        }
  311|      1|    } else {
  312|      0|        set_destination_level(destination, module, level);
  313|      0|    }
  314|      1|}
vlog_set_levels_from_string:
  513|      1|{
  514|      1|    char *s = xstrdup(s_);
  515|      1|    char *save_ptr = NULL;
  516|      1|    char *msg = NULL;
  517|      1|    char *word;
  518|       |
  519|      1|    word = strtok_r(s, " ,:\t", &save_ptr);
  520|      1|    if (word && !strcasecmp(word, "PATTERN")) {
  ------------------
  |  Branch (520:9): [True: 1, False: 0]
  |  Branch (520:17): [True: 0, False: 1]
  ------------------
  521|      0|        enum vlog_destination destination;
  522|       |
  523|      0|        word = strtok_r(NULL, " ,:\t", &save_ptr);
  524|      0|        if (!word) {
  ------------------
  |  Branch (524:13): [True: 0, False: 0]
  ------------------
  525|      0|            msg = xstrdup("missing destination");
  526|      0|            goto exit;
  527|      0|        }
  528|       |
  529|      0|        destination = (!strcasecmp(word, "ANY")
  ------------------
  |  Branch (529:24): [True: 0, False: 0]
  ------------------
  530|      0|                       ? VLF_ANY_DESTINATION
  531|      0|                       : vlog_get_destination_val(word));
  532|      0|        if (destination == VLF_N_DESTINATIONS) {
  ------------------
  |  Branch (532:13): [True: 0, False: 0]
  ------------------
  533|      0|            msg = xasprintf("unknown destination \"%s\"", word);
  534|      0|            goto exit;
  535|      0|        }
  536|      0|        vlog_set_pattern(destination, save_ptr);
  537|      1|    } else if (word && !strcasecmp(word, "FACILITY")) {
  ------------------
  |  Branch (537:16): [True: 1, False: 0]
  |  Branch (537:24): [True: 0, False: 1]
  ------------------
  538|      0|        int value;
  539|       |
  540|      0|        if (!vlog_facility_exists(save_ptr, &value)) {
  ------------------
  |  Branch (540:13): [True: 0, False: 0]
  ------------------
  541|      0|            msg = xstrdup("invalid facility");
  542|      0|            goto exit;
  543|      0|        }
  544|      0|        atomic_store_explicit(&log_facility, value, memory_order_relaxed);
  ------------------
  |  |   45|      0|    __c11_atomic_store(DST, SRC, ORDER)
  ------------------
  545|      1|    } else {
  546|      1|        struct vlog_module *module = NULL;
  547|      1|        enum vlog_level level = VLL_N_LEVELS;
  548|      1|        enum vlog_destination destination = VLF_N_DESTINATIONS;
  549|       |
  550|      2|        for (; word != NULL; word = strtok_r(NULL, " ,:\t", &save_ptr)) {
  ------------------
  |  Branch (550:16): [True: 1, False: 1]
  ------------------
  551|      1|            if (!strcasecmp(word, "ANY")) {
  ------------------
  |  Branch (551:17): [True: 0, False: 1]
  ------------------
  552|      0|                continue;
  553|      1|            } else if (vlog_get_destination_val(word) != VLF_N_DESTINATIONS) {
  ------------------
  |  Branch (553:24): [True: 0, False: 1]
  ------------------
  554|      0|                if (destination != VLF_N_DESTINATIONS) {
  ------------------
  |  Branch (554:21): [True: 0, False: 0]
  ------------------
  555|      0|                    msg = xstrdup("cannot specify multiple destinations");
  556|      0|                    goto exit;
  557|      0|                }
  558|      0|                destination = vlog_get_destination_val(word);
  559|      1|            } else if (vlog_get_level_val(word) != VLL_N_LEVELS) {
  ------------------
  |  Branch (559:24): [True: 1, False: 0]
  ------------------
  560|      1|                if (level != VLL_N_LEVELS) {
  ------------------
  |  Branch (560:21): [True: 0, False: 1]
  ------------------
  561|      0|                    msg = xstrdup("cannot specify multiple levels");
  562|      0|                    goto exit;
  563|      0|                }
  564|      1|                level = vlog_get_level_val(word);
  565|      1|            } else if (vlog_module_from_name(word)) {
  ------------------
  |  Branch (565:24): [True: 0, False: 0]
  ------------------
  566|      0|                if (module) {
  ------------------
  |  Branch (566:21): [True: 0, False: 0]
  ------------------
  567|      0|                    msg = xstrdup("cannot specify multiple modules");
  568|      0|                    goto exit;
  569|      0|                }
  570|      0|                module = vlog_module_from_name(word);
  571|      0|            } else {
  572|      0|                msg = xasprintf("no destination, level, or module \"%s\"",
  573|      0|                                word);
  574|      0|                goto exit;
  575|      0|            }
  576|      1|        }
  577|       |
  578|      1|        if (destination == VLF_N_DESTINATIONS) {
  ------------------
  |  Branch (578:13): [True: 1, False: 0]
  ------------------
  579|      1|            destination = VLF_ANY_DESTINATION;
  580|      1|        }
  581|      1|        if (level == VLL_N_LEVELS) {
  ------------------
  |  Branch (581:13): [True: 0, False: 1]
  ------------------
  582|      0|            level = VLL_DBG;
  583|      0|        }
  584|      1|        vlog_set_levels(module, destination, level);
  585|      1|    }
  586|       |
  587|      1|exit:
  588|      1|    free(s);
  589|      1|    return msg;
  590|      1|}
vlog_set_verbosity:
  606|      1|{
  607|      1|    if (arg) {
  ------------------
  |  Branch (607:9): [True: 1, False: 0]
  ------------------
  608|      1|        char *msg = vlog_set_levels_from_string(arg);
  609|      1|        if (msg) {
  ------------------
  |  Branch (609:13): [True: 0, False: 1]
  ------------------
  610|      0|            ovs_fatal(0, "processing \"%s\": %s", arg, msg);
  611|      0|        }
  612|      1|    } else {
  613|       |        vlog_set_levels(NULL, VLF_ANY_DESTINATION, VLL_DBG);
  614|      0|    }
  615|      1|}
vlog_is_enabled:
 1000|    456|{
 1001|    456|    return module->min_level >= level;
 1002|    456|}
vlog_valist:
 1158|      1|{
 1159|      1|    bool log_to_console = module->levels[VLF_CONSOLE] >= level;
 1160|      1|    bool log_to_syslog = module->levels[VLF_SYSLOG] >= level;
 1161|      1|    bool log_to_file = module->levels[VLF_FILE]  >= level;
 1162|       |
 1163|      1|    if (!(log_to_console || log_to_syslog || log_to_file)) {
  ------------------
  |  Branch (1163:11): [True: 0, False: 1]
  |  Branch (1163:29): [True: 0, False: 1]
  |  Branch (1163:46): [True: 0, False: 1]
  ------------------
 1164|       |        /* fast path - all logging levels specify no logging, no
 1165|       |         * need to hog the log mutex
 1166|       |         */
 1167|      1|        return;
 1168|      1|    }
 1169|       |
 1170|      0|    ovs_mutex_lock(&log_file_mutex);
  ------------------
  |  |   71|      0|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      0|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      0|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1171|      0|    log_to_file &= (log_fd >= 0);
 1172|      0|    ovs_mutex_unlock(&log_file_mutex);
 1173|      0|    if (log_to_console || log_to_syslog || log_to_file) {
  ------------------
  |  Branch (1173:9): [True: 0, False: 0]
  |  Branch (1173:27): [True: 0, False: 0]
  |  Branch (1173:44): [True: 0, False: 0]
  ------------------
 1174|      0|        int save_errno = errno;
 1175|      0|        struct ds s;
 1176|       |
 1177|      0|        vlog_init();
 1178|       |
 1179|      0|        ds_init(&s);
 1180|      0|        ds_reserve(&s, 1024);
 1181|      0|        ++*msg_num_get();
 1182|       |
 1183|      0|        ovs_rwlock_rdlock(&pattern_rwlock);
  ------------------
  |  |   96|      0|        ovs_rwlock_rdlock_at(rwlock, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      0|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      0|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1184|      0|        if (log_to_console) {
  ------------------
  |  Branch (1184:13): [True: 0, False: 0]
  ------------------
 1185|      0|            format_log_message(module, level,
 1186|      0|                               destinations[VLF_CONSOLE].pattern, message,
 1187|      0|                               args, &s);
 1188|      0|            ds_put_char(&s, '\n');
 1189|      0|            fputs(ds_cstr(&s), stderr);
 1190|      0|        }
 1191|       |
 1192|      0|        if (log_to_syslog) {
  ------------------
  |  Branch (1192:13): [True: 0, False: 0]
  ------------------
 1193|      0|            int syslog_level = syslog_levels[level];
 1194|      0|            char *save_ptr = NULL;
 1195|      0|            char *line;
 1196|      0|            int facility;
 1197|       |
 1198|      0|            format_log_message(module, level, destinations[VLF_SYSLOG].pattern,
 1199|      0|                               message, args, &s);
 1200|      0|            for (line = strtok_r(s.string, "\n", &save_ptr); line;
  ------------------
  |  Branch (1200:62): [True: 0, False: 0]
  ------------------
 1201|      0|                 line = strtok_r(NULL, "\n", &save_ptr)) {
 1202|      0|                atomic_read_explicit(&log_facility, &facility,
  ------------------
  |  |   51|      0|    (*(DST) = __c11_atomic_load(SRC, ORDER), \
  |  |   52|      0|     (void) 0)
  ------------------
 1203|      0|                                     memory_order_relaxed);
 1204|      0|                syslogger->class->syslog(syslogger, syslog_level|facility, line);
 1205|      0|            }
 1206|       |
 1207|      0|            if (syslog_fd >= 0) {
  ------------------
  |  Branch (1207:17): [True: 0, False: 0]
  ------------------
 1208|      0|                format_log_message(module, level,
 1209|      0|                                   "<%B>1 %D{%Y-%m-%dT%H:%M:%S.###Z} "
 1210|      0|                                   "%E %A %P %c - \xef\xbb\xbf%m",
 1211|      0|                                   message, args, &s);
 1212|      0|                send_to_syslog_fd(ds_cstr(&s), s.length);
 1213|      0|            }
 1214|      0|        }
 1215|       |
 1216|      0|        if (log_to_file) {
  ------------------
  |  Branch (1216:13): [True: 0, False: 0]
  ------------------
 1217|      0|            format_log_message(module, level, destinations[VLF_FILE].pattern,
 1218|      0|                               message, args, &s);
 1219|      0|            ds_put_char(&s, '\n');
 1220|       |
 1221|      0|            ovs_mutex_lock(&log_file_mutex);
  ------------------
  |  |   71|      0|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      0|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      0|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|      0|            if (log_fd >= 0) {
  ------------------
  |  Branch (1222:17): [True: 0, False: 0]
  ------------------
 1223|      0|                if (log_writer) {
  ------------------
  |  Branch (1223:21): [True: 0, False: 0]
  ------------------
 1224|      0|                    async_append_write(log_writer, s.string, s.length);
 1225|      0|                    if (level == VLL_EMER) {
  ------------------
  |  Branch (1225:25): [True: 0, False: 0]
  ------------------
 1226|      0|                        async_append_flush(log_writer);
 1227|      0|                    }
 1228|      0|                } else {
 1229|      0|                    ovs_ignore(write(log_fd, s.string, s.length));
 1230|      0|                }
 1231|      0|            }
 1232|      0|            ovs_mutex_unlock(&log_file_mutex);
 1233|      0|        }
 1234|      0|        ovs_rwlock_unlock(&pattern_rwlock);
 1235|       |
 1236|      0|        ds_destroy(&s);
 1237|       |        errno = save_errno;
 1238|      0|    }
 1239|      0|}
vlog:
 1244|      1|{
 1245|      1|    va_list args;
 1246|       |
 1247|      1|    va_start(args, message);
 1248|      1|    vlog_valist(module, level, message, args);
 1249|       |    va_end(args);
 1250|      1|}
vlog_should_drop:
 1330|    456|{
 1331|    456|    if (!module->honor_rate_limits) {
  ------------------
  |  Branch (1331:9): [True: 0, False: 456]
  ------------------
 1332|      0|        return false;
 1333|      0|    }
 1334|       |
 1335|    456|    if (!vlog_is_enabled(module, level)) {
  ------------------
  |  Branch (1335:9): [True: 456, False: 0]
  ------------------
 1336|    456|        return true;
 1337|    456|    }
 1338|       |
 1339|      0|    ovs_mutex_lock(&rl->mutex);
  ------------------
  |  |   71|      0|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      0|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      0|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1340|      0|    if (!token_bucket_withdraw(&rl->token_bucket, VLOG_MSG_TOKENS)) {
  ------------------
  |  |  105|      0|#define VLOG_MSG_TOKENS (60 * 1000)
  ------------------
  |  Branch (1340:9): [True: 0, False: 0]
  ------------------
 1341|      0|        time_t now = time_now();
 1342|      0|        if (!rl->n_dropped) {
  ------------------
  |  Branch (1342:13): [True: 0, False: 0]
  ------------------
 1343|      0|            rl->first_dropped = now;
 1344|      0|        }
 1345|      0|        rl->last_dropped = now;
 1346|      0|        rl->n_dropped++;
 1347|      0|        ovs_mutex_unlock(&rl->mutex);
 1348|      0|        return true;
 1349|      0|    }
 1350|       |
 1351|      0|    if (!rl->n_dropped) {
  ------------------
  |  Branch (1351:9): [True: 0, False: 0]
  ------------------
 1352|      0|        ovs_mutex_unlock(&rl->mutex);
 1353|      0|    } else {
 1354|      0|        time_t now = time_now();
 1355|      0|        unsigned int n_dropped = rl->n_dropped;
 1356|      0|        unsigned int first_dropped_elapsed = now - rl->first_dropped;
 1357|      0|        unsigned int last_dropped_elapsed = now - rl->last_dropped;
 1358|      0|        rl->n_dropped = 0;
 1359|      0|        ovs_mutex_unlock(&rl->mutex);
 1360|       |
 1361|      0|        vlog(module, level,
 1362|      0|             "Dropped %u log messages in last %u seconds (most recently, "
 1363|      0|             "%u seconds ago) due to excessive rate",
 1364|      0|             n_dropped, first_dropped_elapsed, last_dropped_elapsed);
 1365|      0|    }
 1366|       |
 1367|       |    return false;
 1368|      0|}
vlog.c:search_name_array:
  165|      2|{
  166|      2|    size_t i;
  167|       |
  168|      2|    for (i = 0; i < n_names; i++) {
  ------------------
  |  Branch (168:17): [True: 2, False: 0]
  ------------------
  169|      2|        assert(names[i]);
  170|      2|        if (!strcasecmp(names[i], target)) {
  ------------------
  |  Branch (170:13): [True: 2, False: 0]
  ------------------
  171|      2|            break;
  172|      2|        }
  173|      2|    }
  174|      2|    return i;
  175|      2|}
vlog.c:set_destination_level:
  279|      3|{
  280|      3|    assert(destination >= 0 && destination < VLF_N_DESTINATIONS);
  281|      3|    assert(level < VLL_N_LEVELS);
  282|       |
  283|      3|    ovs_mutex_lock(&log_file_mutex);
  ------------------
  |  |   71|      3|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|      3|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      3|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|      3|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      3|    if (!module) {
  ------------------
  |  Branch (284:9): [True: 3, False: 0]
  ------------------
  285|      3|        struct vlog_module *mp;
  286|    273|        LIST_FOR_EACH (mp, list, &vlog_modules) {
  ------------------
  |  |   76|      3|    for (INIT_MULTIVAR(VAR, MEMBER, (LIST)->next, struct ovs_list);           \
  |  |  ------------------
  |  |  |  |  171|      3|    INIT_MULTIVAR_EXP(VAR, MEMBER, POINTER, ITER_TYPE, (void) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  174|      3|    ITER_TYPE *ITER_VAR(VAR) = ( __VA_ARGS__ , (ITER_TYPE *) POINTER)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|    276|         CONDITION_MULTIVAR(VAR, MEMBER, ITER_VAR(VAR) != (LIST));            \
  |  |  ------------------
  |  |  |  |  185|    276|    ((EXPR) ?                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:5): [True: 273, False: 3]
  |  |  |  |  |  Branch (185:6): [True: 273, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  186|    276|     (((VAR) = OBJECT_CONTAINING(ITER_VAR(VAR), VAR, MEMBER)), 1) :           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|    273|    ((OVS_TYPEOF(OBJECT)) (void *)                                      \
  |  |  |  |  |  |  135|    273|     ((char *) (POINTER) - OBJECT_OFFSETOF(OBJECT, MEMBER)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|    273|#define OBJECT_OFFSETOF(OBJECT, MEMBER) offsetof(typeof(*(OBJECT)), MEMBER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|    276|     (((VAR) = NULL), 0))
  |  |  ------------------
  |  |   78|    273|         UPDATE_MULTIVAR(VAR, ITER_VAR(VAR)->next))
  |  |  ------------------
  |  |  |  |  193|    273|    (ITER_VAR(VAR) = NEXT_ITER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  162|    273|#define ITER_VAR(NAME) NAME ## __iterator__
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  287|    273|            mp->levels[destination] = level;
  288|    273|            update_min_level(mp);
  289|    273|        }
  290|      3|    } else {
  291|      0|        module->levels[destination] = level;
  292|      0|        update_min_level(module);
  293|      0|    }
  294|      3|    ovs_mutex_unlock(&log_file_mutex);
  295|      3|}
vlog.c:update_min_level:
  262|    273|{
  263|    273|    enum vlog_destination destination;
  264|       |
  265|    273|    module->min_level = VLL_OFF;
  266|  1.09k|    for (destination = 0; destination < VLF_N_DESTINATIONS; destination++) {
  ------------------
  |  Branch (266:27): [True: 819, False: 273]
  ------------------
  267|    819|        if (log_fd >= 0 || destination != VLF_FILE) {
  ------------------
  |  Branch (267:13): [True: 0, False: 819]
  |  Branch (267:28): [True: 546, False: 273]
  ------------------
  268|    546|            enum vlog_level level = module->levels[destination];
  269|    546|            if (level > module->min_level) {
  ------------------
  |  Branch (269:17): [True: 91, False: 455]
  ------------------
  270|     91|                module->min_level = level;
  271|     91|            }
  272|    546|        }
  273|    819|    }
  274|    273|}

LLVMFuzzerTestOneInput:
   74|  23.0k|{
   75|       |    /* Bail out if we cannot construct at least a 1 char string.
   76|       |     * Reserve 1 byte to decide flow mod command.
   77|       |     *
   78|       |     * Here's the structure of data we expect
   79|       |     * |--Byte 1--|--Byte 2--|...|--Byte (size-1)--|
   80|       |     *
   81|       |     * where,
   82|       |     *
   83|       |     * Byte 1: Used to decide which ofp flow mod command to test
   84|       |     * Bytes 2--(size-1): The C string that is actually passed to
   85|       |     *                    ofctl_parse_flow() test API.
   86|       |     *
   87|       |     * This means that the fuzzed input is actually a C string of
   88|       |     * length = (size -2) with the terminal byte being the NUL
   89|       |     * character. Moreover, this string is expected to not contain
   90|       |     * a new-line character.
   91|       |     */
   92|  23.0k|    const char *stream = (const char *) data;
   93|  23.0k|    if (size < 3 || stream[size - 1] != '\0' || strchr(&stream[1], '\n') ||
  ------------------
  |  Branch (93:9): [True: 2, False: 23.0k]
  |  Branch (93:21): [True: 11, False: 23.0k]
  |  Branch (93:49): [True: 1, False: 23.0k]
  ------------------
   94|  23.0k|        strlen(&stream[1]) != size - 2) {
  ------------------
  |  Branch (94:9): [True: 20, False: 23.0k]
  ------------------
   95|     34|        return 0;
   96|     34|    }
   97|       |
   98|       |    /* Disable logging to avoid write to disk. */
   99|  23.0k|    static bool isInit = false;
  100|  23.0k|    if (!isInit) {
  ------------------
  |  Branch (100:9): [True: 1, False: 23.0k]
  ------------------
  101|      1|        vlog_set_verbosity("off");
  102|      1|        isInit = true;
  103|      1|    }
  104|       |
  105|       |    /* Decide test parameters using first byte of fuzzed input. */
  106|  23.0k|    int command = (stream[0] % OFPFC_DELETE_STRICT) + 1;
  107|       |
  108|       |    /* Fuzz extended match parsing. */
  109|  23.0k|    const char *input = &stream[1];
  110|  23.0k|    ofctl_parse_flow(input, command);
  111|       |
  112|  23.0k|    return 0;
  113|  23.0k|}
ofctl_parse_target.c:ofctl_parse_flow:
   57|  23.0k|{
   58|  23.0k|    enum ofputil_protocol usable_protocols;
   59|  23.0k|    struct ofputil_flow_mod fm;
   60|  23.0k|    char *error;
   61|       |
   62|  23.0k|    error = parse_ofp_flow_mod_str(&fm, input, NULL, NULL,
   63|  23.0k|                                   command, &usable_protocols);
   64|  23.0k|    if (error) {
  ------------------
  |  Branch (64:9): [True: 12.9k, False: 10.0k]
  ------------------
   65|  12.9k|        printf("Error encountered: %s\n", error);
   66|  12.9k|        free(error);
   67|  12.9k|    } else {
   68|  10.0k|        ofctl_parse_flows__(&fm, 1, usable_protocols);
   69|  10.0k|    }
   70|  23.0k|}
ofctl_parse_target.c:ofctl_parse_flows__:
   14|  10.0k|{
   15|  10.0k|    enum ofputil_protocol protocol = 0;
   16|  10.0k|    char *usable_s;
   17|  10.0k|    size_t i;
   18|       |
   19|  10.0k|    usable_s = ofputil_protocols_to_string(usable_protocols);
   20|  10.0k|    printf("usable protocols: %s\n", usable_s);
   21|  10.0k|    free(usable_s);
   22|       |
   23|  10.0k|    if (!(usable_protocols & OFPUTIL_P_ANY)) {
  ------------------
  |  |  100|  10.0k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
  |  Branch (23:9): [True: 224, False: 9.83k]
  ------------------
   24|    224|        printf("no usable protocol\n");
   25|    224|        goto free;
   26|    224|    }
   27|  21.7k|    for (i = 0; i < sizeof(enum ofputil_protocol) * CHAR_BIT; i++) {
  ------------------
  |  Branch (27:17): [True: 21.7k, False: 0]
  ------------------
   28|  21.7k|        protocol = 1u << i;
   29|  21.7k|        if (protocol & usable_protocols & OFPUTIL_P_ANY) {
  ------------------
  |  |  100|  21.7k|#define OFPUTIL_P_ANY ((1 << 9) - 1)
  ------------------
  |  Branch (29:13): [True: 9.83k, False: 11.9k]
  ------------------
   30|  9.83k|            break;
   31|  9.83k|        }
   32|  21.7k|    }
   33|  9.83k|    ovs_assert(is_pow2(protocol));
  ------------------
  |  |   62|  9.83k|#define ovs_assert ovs_ignore
  ------------------
   34|       |
   35|  9.83k|    printf("chosen protocol: %s\n", ofputil_protocol_to_string(protocol));
   36|       |
   37|  19.6k|    for (i = 0; i < n_fms; i++) {
  ------------------
  |  Branch (37:17): [True: 9.83k, False: 9.83k]
  ------------------
   38|  9.83k|        struct ofputil_flow_mod *fm = &fms[i];
   39|  9.83k|        struct ofpbuf *msg;
   40|       |
   41|  9.83k|        msg = ofputil_encode_flow_mod(fm, protocol);
   42|  9.83k|        ofpbuf_delete(msg);
   43|  9.83k|    }
   44|       |
   45|  10.0k|free:
   46|  20.1k|    for (i = 0; i < n_fms; i++) {
  ------------------
  |  Branch (46:17): [True: 10.0k, False: 10.0k]
  ------------------
   47|  10.0k|        struct ofputil_flow_mod *fm = &fms[i];
   48|  10.0k|        free(CONST_CAST(struct ofpact *, fm->ofpacts));
  ------------------
  |  |   85|  10.0k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   80|  10.0k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   86|  10.0k|     (TYPE) (POINTER))
  ------------------
   49|  10.0k|        minimatch_destroy(&fm->match);
   50|  10.0k|    }
   51|  10.0k|}

