code: def get_cfg(ast_func):
      
      cfg_func = cfg.Function()
      for ast_var in ast_func.input_variable_list:
          cfg_var = cfg_func.get_variable(ast_var.name)
          cfg_func.add_input_variable(cfg_var)
      for ast_var in ast_func.output_variable_list:
          cfg_var = cfg_func.get_variable(ast_var.name)
          cfg_func.add_output_variable(cfg_var)
      bb_start  = cfg.BasicBlock()
      cfg_func.add_basic_block(bb_start)
      for stmt in ast_func.body:
          bb_temp = bb_start
          bb_temp = process_cfg(stmt, bb_temp, cfg_func)
      cfg_func.clean_up()
      cfg_func.add_summary(ast_func.summary)
      return cfg_func
docs: Traverses the AST and returns the corresponding CFG
  
      :param ast_func: The AST representation of function
      :type ast_func: ast.Function
  
      :returns: The CFG representation of the function
      :rtype: cfg.Function