let ssa_transform_function = function
    IL1declFunction(gsclass, ty, id, argnames, body) ->
    let f, max_variable_number, variable_environment = ssa_transform ty body argnames in
    {
     body = f;
     max_variable_number = max_variable_number;
     variable_environment = variable_environment;
     arguments = Array.of_list (match_parameter_type ty.ct_ty argnames);
   }
  | IL1declVariable(_) ->
      failwith "ssa_transform_function: not a function"