let c_procedure (out: out_channel) (ic: intermediateCode) (proct: proc_table) (Ide(id): ide) (p: proc_entry) = match p with 
          Subroutine(r,dlist,dect,funcPar)  ->  (
                                                 let oldinstr = ic#getInstructionClass in (
                                                     ic#setInstructionClass funcPar;
                                                     print_DecTable (out) (dect);
                                                     output_string out (
                                                         (print_return r) ^ (id) ^ "(int baseptr) {\n" ^ 
                                                         (newstack_pointer ((Hashtbl.length dect) - List.length dlist))
                                                     );
                                                     c_generator (funcPar#getInl) (ic) (out) (0) [] proct;
                                                     output_string out "}\n\013";
                                                     ic#setInstructionClass oldinstr;
                                                 )
                                                )
        | Building(r,dlist)                 ->  raise (CONFIRM_RULE "Why should I have some subroutines in building phase here?")