        -:    0:Source:test.cpp
        -:    0:Graph:objdir/test.gcno
        -:    0:Data:objdir/test.gcda
        -:    0:Runs:2
        -:    0:Programs:1
        -:    1:#include "test.h"
        -:    2:#include <cstdlib>
        -:    3:
        -:    4:bool on = false;
        -:    5:int len = 42;
        -:    6:double grid[10][10] = {0};
        -:    7:const char * hello = "world";
        -:    8:const char * world = "hello";
        -:    9:
8589934592:   10:void A::B() {}
        -:   11:
    #####:   12:void useless() {}
        -:   13:
        -:   14:double more_useless() {
    #####:   15:  return 0;
        -:   16:}
        -:   17:
        -:   18:int foo() {
        2:   19:  on = true;
        2:   20:  return 3;
        -:   21:}
        -:   22:
        -:   23:int bar() {
    #####:   24:  len--;
    #####:   25:  return foo() + 45;
        -:   26:}
        -:   27:
        8:   28:void assign(int ii, int jj) {
        8:   29:  grid[ii][jj] = (ii+1) * (jj+1);
        8:   30:}
        -:   31:
        -:   32:void initialize_grid() {
        6:   33:  for (int ii = 0; ii < 2; ii++)
       12:   34:    for (int jj = 0; jj < 2; jj++)
       12:   35:      assign(ii, jj);
        2:   36:}
        -:   37:
        -:   38:int main() {
        2:   39:  initialize_grid();
        -:   40:
        2:   41:  int a = 2;
        2:   42:  on = rand() % 2;
        2:   43:  if (on) {
        2:   44:    foo();
        2:   45:    ++a;
        2:   46:  } else {
    #####:   47:    bar();
    #####:   48:    a += rand();
        -:   49:  }
        -:   50:
       22:   51:  for (int ii = 0; ii < 10; ++ii) {
       20:   52:    switch (rand() % 5) {
        -:   53:      case 0:
        4:   54:        a += rand();
        4:   55:        break;
        -:   56:      case 1:
        -:   57:      case 2:
        2:   58:        a += rand() / rand();
        2:   59:        break;
        -:   60:      case 3:
        6:   61:        a -= rand();
        6:   62:        break;
        -:   63:      default:
        8:   64:        a = -1;
        8:   65:    }
       20:   66:  }
        -:   67:
        2:   68:  A thing;
8589934594:   69:  for (uint64_t ii = 0; ii < 4294967296; ++ii)
8589934592:   70:    thing.B();
        -:   71:
        2:   72:  return a + 8 + grid[2][3] + len;
        -:   73:  return more_useless();
        -:   74:}
