fun: gcc.Function('main')
  stmt: D.nnnnn = (const char * restrict) &"argc: %i\n"[0];
    node: <gcc.AddrExpr object at 0xdeadbeef> (&"argc: %i\n"[0])
    node: <gcc.ArrayRef object at 0xdeadbeef> ("argc: %i\n"[0])
    node: gcc.StringCst('argc: %i\n') ("argc: %i\n")
    node: gcc.IntegerCst(0) (0)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: printf (D.nnnnn, argc);
    node: <gcc.AddrExpr object at 0xdeadbeef> (printf)
    node: gcc.FunctionDecl('printf') (printf)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
    node: gcc.ParmDecl('argc') (argc)
  stmt: i = 0;
    node: gcc.IntegerCst(0) (0)
    node: gcc.VarDecl('i') (i)
  stmt: D.nnnnn = (long unsigned int) i;
    node: gcc.VarDecl('i') (i)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: D.nnnnn = D.nnnnn * 8;
    node: gcc.VarDecl(nnnn) (D.nnnnn)
    node: gcc.IntegerCst(8) (8)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: D.nnnnn = argv + D.nnnnn;
    node: gcc.ParmDecl('argv') (argv)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: D.nnnnn = *D.nnnnn;
    node: <gcc.MemRef object at 0xdeadbeef> (*D.nnnnn)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
    node: gcc.IntegerCst(0) (0B)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: D.nnnnn = (const char * restrict) &"argv[%i]: %s\n"[0];
    node: <gcc.AddrExpr object at 0xdeadbeef> (&"argv[%i]: %s\n"[0])
    node: <gcc.ArrayRef object at 0xdeadbeef> ("argv[%i]: %s\n"[0])
    node: gcc.StringCst('argv[%i]: %s\n') ("argv[%i]: %s\n")
    node: gcc.IntegerCst(0) (0)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: printf (D.nnnnn, i, D.nnnnn);
    node: <gcc.AddrExpr object at 0xdeadbeef> (printf)
    node: gcc.FunctionDecl('printf') (printf)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
    node: gcc.VarDecl('i') (i)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: i = i + 1;
    node: gcc.VarDecl('i') (i)
    node: gcc.IntegerCst(1) (1)
    node: gcc.VarDecl('i') (i)
  stmt: if (i < argc)
    node: gcc.VarDecl('i') (i)
    node: gcc.ParmDecl('argc') (argc)
  stmt: helper_function ();
    node: <gcc.AddrExpr object at 0xdeadbeef> (helper_function)
    node: gcc.FunctionDecl('helper_function') (helper_function)
  stmt: D.nnnnn = 0;
    node: gcc.IntegerCst(0) (0)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: return D.nnnnn;
    node: gcc.VarDecl(nnnn) (D.nnnnn)
fun: gcc.Function('helper_function')
  stmt: __builtin_puts (&"I am a helper function"[0]);
    node: <gcc.AddrExpr object at 0xdeadbeef> (__builtin_puts)
    node: gcc.FunctionDecl('__builtin_puts') (__builtin_puts)
    node: <gcc.AddrExpr object at 0xdeadbeef> (&"I am a helper function"[0])
    node: <gcc.ArrayRef object at 0xdeadbeef> ("I am a helper function"[0])
    node: gcc.StringCst('I am a helper function') ("I am a helper function")
    node: gcc.IntegerCst(0) (0)
  stmt: D.nnnnn = 42;
    node: gcc.IntegerCst(42) (42)
    node: gcc.VarDecl(nnnn) (D.nnnnn)
  stmt: return D.nnnnn;
    node: gcc.VarDecl(nnnn) (D.nnnnn)
