?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

a: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of f: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              nothing 

        Declaration of g: function
            with parameters
              p: pointer to forall
                    U: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type U (not function type) 
                              instance of type U (not function type) 
                            returning 
                              instance of type U (not function type) 


                  function
                  with parameters
                    instance of type U (not function type) 
                  returning 
                    nothing 

            returning 
              nothing 

                  Expression Statement:
            Application of
              Variable Expression: g: function
                  with parameters
                    p: pointer to forall
                          U: type
                            with assertions
                              ?=?: pointer to function
                                  with parameters
                                    pointer to instance of type U (not function type) 
                                    instance of type U (not function type) 
                                  returning 
                                    instance of type U (not function type) 


                        function
                        with parameters
                          instance of type U (not function type) 
                        returning 
                          nothing 

                  returning 
                    nothing 

            to arguments
                              Variable Expression: f: forall
                      T: type
                        with assertions
                          ?=?: pointer to function
                              with parameters
                                pointer to instance of type T (not function type) 
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 


                    function
                    with parameters
                      instance of type T (not function type) 
                    returning 
                      nothing 


            with inferred parameters:
              ?=?: pointer to function
                with parameters
                  pointer to instance of type U (not function type) 
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 

            with environment:
              Types:
                _1_T -> instance of type _0_U (not function type) 
              Non-types:


g: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of h: function
            with parameters
              null: pointer to signed int 
            returning 
              nothing 

        Declaration of id: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        Declaration of 0: forall
              T: incomplete type
            pointer to instance of type T (not function type) 
        Declaration of 0: signed int 
                  Expression Statement:
            Application of
              Variable Expression: h: function
                  with parameters
                    null: pointer to signed int 
                  returning 
                    nothing 

            to arguments
                              Application of
                  Variable Expression: id: forall
                        T: type
                          with assertions
                            ?=?: pointer to function
                                with parameters
                                  pointer to instance of type T (not function type) 
                                  instance of type T (not function type) 
                                returning 
                                  instance of type T (not function type) 


                      function
                      with parameters
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                to arguments
                                      Application of
                      Variable Expression: id: forall
                            T: type
                              with assertions
                                ?=?: pointer to function
                                    with parameters
                                      pointer to instance of type T (not function type) 
                                      instance of type T (not function type) 
                                    returning 
                                      instance of type T (not function type) 


                          function
                          with parameters
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 

                    to arguments
                                              Application of
                          Variable Expression: id: forall
                                T: type
                                  with assertions
                                    ?=?: pointer to function
                                        with parameters
                                          pointer to instance of type T (not function type) 
                                          instance of type T (not function type) 
                                        returning 
                                          instance of type T (not function type) 


                              function
                              with parameters
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 

                        to arguments
                                                      Variable Expression: 0: forall
                                  T: incomplete type
                                pointer to instance of type T (not function type) 

                        with inferred parameters:
                          ?=?: forall
                              DT: incomplete type
                            function
                            with parameters
                              pointer to pointer to instance of type DT (not function type) 
                              pointer to instance of type DT (not function type) 
                            returning 
                              pointer to instance of type DT (not function type) 


                    with inferred parameters:
                      ?=?: forall
                          DT: incomplete type
                        function
                        with parameters
                          pointer to pointer to instance of type DT (not function type) 
                          pointer to instance of type DT (not function type) 
                        returning 
                          pointer to instance of type DT (not function type) 


                with inferred parameters:
                  ?=?: forall
                      DT: incomplete type
                    function
                    with parameters
                      pointer to pointer to instance of type DT (not function type) 
                      pointer to instance of type DT (not function type) 
                    returning 
                      pointer to instance of type DT (not function type) 


            with environment:
              Types:
                _0_T -> forall
                      _3_T: incomplete type
                    pointer to instance of type _3_T (not function type) 
                _1_T -> forall
                      _3_T: incomplete type
                    pointer to instance of type _3_T (not function type) 
                _2_T -> forall
                      _3_T: incomplete type
                    pointer to instance of type _3_T (not function type) 
                _3_T -> signed int 
                _5_DT -> signed int 
                _7_DT -> signed int 
                _9_DT -> signed int 
              Non-types:


int ___operator_assign__Fi_Pii_(int *, int );
void *___operator_assign__A0_1_0__FPd0_PPd0Pd0_(void **, void *);
void __a__F__(){
    void __f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *);
    void __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(void (*__p__PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0_)(void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void *));
    __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(__f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_);
}
void __g__F__(){
    void __h__F_Pi_(int *__null__Pi);
    void __id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *, void *);
    void *___constant_zero__A0_1_0__Pd0;
    int ___constant_zero__i;
    void *_thunk0(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_thunk1(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_thunk2(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_temp0;
    void _adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((_3_T **)_ret))=((void *(*)(void **, void *))_adaptee)(_p0, (*((_3_T **)_p1))));
    }
    void *_temp1;
    void *_temp2;
    __h__F_Pi_((__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk2)), (&_temp2), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk1)), (&_temp1), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk0)), (&_temp0), (&___constant_zero__A0_1_0__Pd0)) , _temp0))) , _temp1))) , _temp2));
}
