f: function
    with parameters
      signed int 
      signed int 
    returning 
      signed int 

g: function
    with parameters
      signed int 
      signed int 
      signed int 
    returning 
      signed int 

h: static function
    with parameters
      a: signed int 
      b: signed int 
      c: pointer to signed int 
      d: pointer to char 
    returning 
      signed int 
      pointer to signed int 
      pointer to signed int 
      signed int 

struct inner
    with members
      f2: signed int 
      f3: signed int 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct inner 
      _src: instance of struct inner 
    returning 
      instance of struct inner 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    f2: signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct inner 
                Member Expression, with field: 
                  f2: signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct inner 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    f3: signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct inner 
                Member Expression, with field: 
                  f3: signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct inner 

                  Return Statement, returning: Variable Expression: _src: instance of struct inner 



struct outer
    with members
      f1: signed int 
      i: instance of struct inner 
      f4: double 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct outer 
      _src: instance of struct outer 
    returning 
      instance of struct outer 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    f1: signed int 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct outer 
                Member Expression, with field: 
                  f1: signed int 
                from aggregate: 
                  Variable Expression: _src: instance of struct outer 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    i: instance of struct inner 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct outer 
                Member Expression, with field: 
                  i: instance of struct inner 
                from aggregate: 
                  Variable Expression: _src: instance of struct outer 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    f4: double 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct outer 
                Member Expression, with field: 
                  f4: double 
                from aggregate: 
                  Variable Expression: _src: instance of struct outer 

                  Return Statement, returning: Variable Expression: _src: instance of struct outer 



s: instance of struct outer 
sp: pointer to instance of struct outer 
t1: const volatile tuple of types
    signed int 
    signed int 

t2: static const tuple of types
    signed int 
    const signed int 

t3: static const tuple of types
    signed int 
    const signed int 

printf: function
    with parameters
      fmt: pointer to char 
      and a variable number of other arguments
    returning 
      rc: signed int 

printf: function
    with parameters
      fmt: pointer to char 
      and a variable number of other arguments
    returning 
      signed int 

f1: function
    with parameters
      w: signed int 
    returning 
      x: short signed int 
      y: unsigned int 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: y

                                          Name: x

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Tuple:
                                                  Name: x

                                                  Name: y

                    Tuple:
                                              Name: w

                      constant expression 23 signed int 


g1: function
    returning 
      r: tuple of types
          signed int 
          char 
          long signed int 
          signed int 

    with body 
      CompoundStmt
        Declaration of x: short signed int 
        Declaration of p: short signed int 
        Declaration of y: unsigned int 
        Declaration of z: tuple of types
            signed int 
            signed int 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: x

                                          Name: y

                                          Name: z

                Tuple:
                                      Name: p

                                      Applying untyped: 
                        Name: f
                    ...to: 
constant expression 17 signed int 
                  constant expression 3 signed int 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: x

                                          Name: y

                                          Name: z

                Cast of:
                  Tuple:
                                          Name: p

                                          Applying untyped: 
                          Name: f
                      ...to: 
constant expression 17 signed int 
                    constant expression 3 signed int 

                to:
                  short signed int 
                  unsigned int 
                  tuple of types
                      signed int 
                      signed int 


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: r
                Tuple:
                                      Name: x

                                      Name: y

                                      Name: z



main: C function
    with parameters
      argc: signed int 
      argv: pointer to pointer to char 
    returning 
      rc: signed int 
    with body 
      CompoundStmt
        Declaration of a: signed int 
        Declaration of b: signed int 
        Declaration of c: signed int 
        Declaration of d: signed int 
        Declaration of t: instance of struct outer with initializer 
          Compound initializer:  
            Simple Initializer:               Tuple:
                                  Name: 1

                constant expression 7.0 double 

              designated by:                 Name: f1
                Name: f4

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Tuple:
                  constant expression 3 signed int 
                  constant expression 5 signed int 

                  Expression Statement:
            Applying untyped: 
                Name: g
            ...to: 
                Tuple:
                  constant expression 3 signed int 
                  constant expression 5 signed int 
constant expression 3 signed int 
                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: t1

                  Expression Statement:
            Applying untyped: 
                Name: g
            ...to: 
                Name: t1
constant expression 3 signed int 
                  Expression Statement:
            Tuple:

                  Expression Statement:
            Tuple:
              constant expression 3 signed int 
              constant expression 5 signed int 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

constant expression 3 signed int 
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Tuple:
                  constant expression 4.6 double 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Tuple:
                                                  Name: c

                                                  Name: d

                    Tuple:
                      constant expression 3 signed int 
                      constant expression 5 signed int 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                                          Tuple:
                                                  Name: c


                Tuple:
                  constant expression 2 signed int 
                                      Tuple:
                                              Name: a

                                              Name: b



                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Conditional expression on: 
                  Cast of:
                    Applying untyped: 
                        Name: ?!=?
                    ...to: 
                        Applying untyped: 
                            Name: ?>?
                        ...to: 
constant expression 3 signed int constant expression 4 signed int                         Name: 0

                  to:
                    signed int 
                First alternative:
                  Tuple:
                                          Name: b

                    constant expression 6 signed int 
                Second alternative:
                  Tuple:
                    constant expression 7 signed int 
                    constant expression 8 signed int 


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: t1
                Tuple:
                                      Name: a

                                      Name: b


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: t1
                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Name: t2
                    Tuple:
                                              Name: a

                                              Name: b


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Tuple:
                                                  Name: c

                                                  Name: d

                    Applying untyped: 
                        Name: ?+=?
                    ...to: 
                        Address of:
                          Name: d
                        Applying untyped: 
                            Name: ?+=?
                        ...to: 
                            Address of:
                              Name: c
                            Name: 1

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Tuple:
                                                  Name: c

                                                  Name: d

                    Name: t1

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Name: t1
                    Tuple:
                                              Name: c

                                              Name: d


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Name: t1
                    Applying untyped: 
                        Name: ?=?
                    ...to: 
                        Address of:
                          Name: t2
                        Tuple:
                                                      Name: c

                                                      Name: d


                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: t1
                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Tuple:
                        constant expression 3 signed int 
                        constant expression 4 signed int 
                    Applying untyped: 
                        Name: ?=?
                    ...to: 
                        Address of:
                          Tuple:
                            constant expression 3 signed int 
                            constant expression 4 signed int 
                        Applying untyped: 
                            Name: ?=?
                        ...to: 
                            Address of:
                              Name: t1
                            Tuple:
                              constant expression 3 signed int 
                              constant expression 4 signed int 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: s
                Tuple:
                  constant expression 11 signed int 
                  constant expression 12 signed int 
                  constant expression 13 signed int 
                  constant expression 3.14159 double 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: s
                Applying untyped: 
                    Name: h
                ...to: 
constant expression 3 signed int constant expression 3 signed int                     Name: 0
constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Tuple:
                                          Name: a

                                          Name: b

                Applying untyped: 
                    Name: h
                ...to: 
constant expression 3 signed int constant expression 3 signed int                     Name: 0
constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: sp
                Name: sp

                  Expression Statement:
            Applying untyped: 
                Name: printf
            ...to: 
constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int                 Name: s

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: rc
                Name: 0


