user: 请将以下的汇编代码转换成C语言代码：

```asm
<google_map_output_heading>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rdx,%rbx
  sub    $0x438,%rsp
  mov    %rcx,0x8(%rsp)
  mov    0x470(%rsp),%ecx
  lea    0x20(%rsp),%r13
  mov    %r8,0x18(%rsp)
  mov    0x478(%rsp),%r8d
  mov    %r9,0x10(%rsp)
  mov    0x480(%rsp),%r14
  mov    0x488(%rsp),%r15
  mov    %fs:0x28,%rax
  mov    %rax,0x428(%rsp)
  mov    %ecx,%eax
  add    %r8d,%eax
  je     L55
  sub    $0x8,%rsp
  lea    D44(%rip),%rdx
  lea    D134(%rip),%rsi
  mov    %r13,%rdi
  mov    0x4a8(%rsp),%eax
  push   %rax
  mov    0x4a8(%rsp),%r9d
  xor    %eax,%eax
  call   <sprintf@plt>
  pop    %rax
  pop    %rdx
L14:
  mov    %rbp,%rcx
  mov    $0x12d,%edx
  mov    $0x1,%esi
  lea    D143(%rip),%rdi
  call   <fwrite@plt>
  mov    0x10(%rsp),%rcx
  xor    %eax,%eax
  mov    %rbx,%r8
  mov    %r13,%rdx
  lea    D45(%rip),%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  test   %r12,%r12
  je     L7
  mov    %r12,%rdx
  lea    D60(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
L7:
  mov    $0x2e,%edx
  mov    %rbp,%rcx
  mov    $0x1,%esi
  lea    D49(%rip),%rdi
  call   <fwrite@plt>
  mov    0x8(%rsp),%rdx
  test   %rdx,%rdx
  je     L5
  mov    0x18(%rsp),%rax
  test   %rax,%rax
  jne    L24
L5:
  mov    %rbp,%rcx
  mov    $0x157,%edx
  mov    $0x1,%esi
  lea    D6(%rip),%rdi
  call   <fwrite@plt>
  lea    D89(%rip),%rdx
  lea    D24(%rip),%rsi
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    %rbp,%rcx
  mov    $0x9a,%edx
  mov    $0x1,%esi
  lea    D113(%rip),%rdi
  call   <fwrite@plt>
  xor    %eax,%eax
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    0x490(%rsp),%r8d
  lea    D44(%rip),%r9
  lea    D117(%rip),%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    0x428(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L43
  add    $0x438,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L55:
  mov    0x4a0(%rsp),%r8d
  mov    0x498(%rsp),%ecx
  mov    %r13,%rdi
  xor    %eax,%eax
  lea    D44(%rip),%rdx
  lea    D41(%rip),%rsi
  call   <sprintf@plt>
  jmp    L14
  nopl   0x0(%rax)
L24:
  mov    %rax,%rcx
  lea    D127(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L5
L43:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D44
type_infered: string
name: unpack_data
arguments: tag: D134
type_infered: string
name: unpack_data
arguments: tag: D143
type_infered: string
name: unpack_data
arguments: tag: D45
type_infered: string
name: unpack_data
arguments: tag: D60
type_infered: string
name: unpack_data
arguments: tag: D49
type_infered: string
name: unpack_data
arguments: tag: D6
type_infered: string
name: unpack_data
arguments: tag: D89
type_infered: string
name: unpack_data
arguments: tag: D24
type_infered: string
name: unpack_data
arguments: tag: D113
type_infered: string
name: unpack_data
arguments: tag: D117
type_infered: string
name: unpack_data
arguments: tag: D41
type_infered: string
name: unpack_data
arguments: tag: D127
type_infered: string

tool: D44: map_canvas

tool: D134: #%s {
	position: absolute;
	top: %dpx;
	left: %dpx;
	width: %dpx;
	height: %dpx
	}

tool: D143: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />


tool: D45: <style type="text/css">
%s
</style>
<link rel=stylesheet type=text/css href=/appaserver/%s/style.css>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=%s&sensor=false">
</script>


tool: D60: <title>%s</title>


tool: D49: <script type="text/javascript">

//<![CDATA[



tool: D6: function create_map_marker( map, point, click_message )
{
	var infowindow;

	infowindow = new google.maps.InfoWindow({
				content: '<br>' + click_message
			});

	var marker = new google.maps.Marker({
		position: point,
		map: map
  	});

	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open( map, marker );
		});
}


tool: D89: font-size: 2em;

tool: D24: var infowindow;
function create_selectable_map_marker( map, point, click_message )
{
	var content;
	var marker;

	content = '<u style="%s" onclick=onclick_selectable_function("' + click_message + '")>' + click_message + '</u>';

	marker = new google.maps.Marker({
		position: point,
		map: map
  	});

	infowindow = new google.maps.InfoWindow({
				content: '<br>' + click_message
			});

	google.maps.event.addListener(marker, 'click', function() {
		infowindow.setContent( content );
		infowindow.open( map, marker );
		});
}


tool: D113: var rectangle;
var rectangle_southwest_latitude;
var rectangle_southwest_longitude;
var rectangle_northeast_latitude;
var rectangle_northeast_longitude;



tool: D117: function initialize() {
	var point;
	var the_center = new google.maps.LatLng(%s,%s);

	var mapOptions = {
		center: the_center,
		zoom: %d,
		mapTypeId: google.maps.MapTypeId.SATELLITE
	};

	var map = new google.maps.Map(
			document.getElementById("%s"),
			mapOptions);



tool: D41: #%s {
	width: %dpx;
	height: %dpx
	}

tool: D127: function onclick_selectable_function( %s )
{
	%s;
	return true;
}



assistant: ```c
void google_map_output_heading(FILE *output_file, char *title, char *google_map_key_data, char *balloon_click_parameter, char *balloon_click_function, char *application_name, int absolute_position_top, int absolute_position_left, char *google_map_center_latitude, char *google_map_center_longitude, int google_map_starting_zoom, int google_map_width, int google_map_height) {
  char map_canvas[1024];
  char *font_style;
  font_style = "font-size: 2em;";
  if (absolute_position_top + absolute_position_left) {
    sprintf(map_canvas,
            "#%s {\n"
            "	position: absolute;\n"
            "	top: %dpx;\n"
            "	left: %dpx;\n"
            "	width: %dpx;\n"
            "	height: %dpx\n"
            "	}",
            "map_canvas", absolute_position_top, absolute_position_left, google_map_width, google_map_height);
  } else {
    sprintf(map_canvas,
            "#%s {\n"
            "	width: %dpx;\n"
            "	height: %dpx\n"
            "	}",
            "map_canvas", google_map_width, google_map_height);
  }
  fprintf(output_file, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
                       "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
                       "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
                       "<head>\n"
                       "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/>\n"
                       "<meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no\" />\n");
  fprintf(output_file,
          "<style type=\"text/css\">\n"
          "%s\n"
          "</style>\n"
          "<link rel=stylesheet type=text/css href=/appaserver/%s/style.css>\n"
          "<script type=\"text/javascript\"\n"
          "src=\"https://maps.googleapis.com/maps/api/js?key=%s&sensor=false\">\n"
          "</script>\n",
          map_canvas, application_name, google_map_key_data);
  if (title) {
    fprintf(output_file, "<title>%s</title>\n", title);
  }
  fprintf(output_file, "<script type=\"text/javascript\">\n"
                       "\n"
                       "//<![CDATA[\n"
                       "\n");
  if (balloon_click_parameter && balloon_click_function) {
    fprintf(output_file,
            "function onclick_selectable_function( %s )\n"
            "{\n"
            "	%s;\n"
            "	return true;\n"
            "}\n"
            "\n",
            balloon_click_parameter, balloon_click_function);
  }
  fprintf(output_file, "function create_map_marker( map, point, click_message )\n"
                       "{\n"
                       "	var infowindow;\n"
                       "\n"
                       "	infowindow = new google.maps.InfoWindow({\n"
                       "				content: '<br>' + click_message\n"
                       "			});\n"
                       "\n"
                       "	var marker = new google.maps.Marker({\n"
                       "		position: point,\n"
                       "		map: map\n"
                       "  	});\n"
                       "\n"
                       "	google.maps.event.addListener(marker, 'click', function() {\n"
                       "		infowindow.open( map, marker );\n"
                       "		});\n"
                       "}\n");
  fprintf(output_file,
          "var infowindow;\n"
          "function create_selectable_map_marker( map, point, click_message )\n"
          "{\n"
          "	var content;\n"
          "	var marker;\n"
          "\n"
          "	content = '<u style=\"%s\" onclick=onclick_selectable_function(\"' + click_message + '\")>' + click_message + '</u>';\n"
          "\n"
          "	marker = new google.maps.Marker({\n"
          "		position: point,\n"
          "		map: map\n"
          "  	});\n"
          "\n"
          "	infowindow = new google.maps.InfoWindow({\n"
          "				content: '<br>' + click_message\n"
          "			});\n"
          "\n"
          "	google.maps.event.addListener(marker, 'click', function() {\n"
          "		infowindow.setContent( content );\n"
          "		infowindow.open( map, marker );\n"
          "		});\n"
          "}\n",
          font_style);
  fprintf(output_file, "var rectangle;\n"
                       "var rectangle_southwest_latitude;\n"
                       "var rectangle_southwest_longitude;\n"
                       "var rectangle_northeast_latitude;\n"
                       "var rectangle_northeast_longitude;\n\n");
  fprintf(output_file,
          "function initialize() {\n"
          "	var point;\n"
          "	var the_center = new google.maps.LatLng(%s,%s);\n"
          "\n"
          "	var mapOptions = {\n"
          "		center: the_center,\n"
          "		zoom: %d,\n"
          "		mapTypeId: google.maps.MapTypeId.SATELLITE\n"
          "	};\n"
          "\n"
          "	var map = new google.maps.Map(\n"
          "			document.getElementById(\"%s\"),\n"
          "			mapOptions);\n"
          "\n",
          google_map_center_latitude, google_map_center_longitude, google_map_starting_zoom, "map_canvas");
}
```