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     L3
  sub    $0x8,%rsp
  lea    D49(%rip),%rdx
  lea    D13(%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
L20:
  mov    %rbp,%rcx
  mov    $0x12d,%edx
  mov    $0x1,%esi
  lea    D10(%rip),%rdi
  call   <fwrite@plt>
  mov    0x10(%rsp),%rcx
  xor    %eax,%eax
  mov    %rbx,%r8
  mov    %r13,%rdx
  lea    D136(%rip),%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  test   %r12,%r12
  je     L61
  mov    %r12,%rdx
  lea    D60(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
L61:
  mov    $0x2e,%edx
  mov    %rbp,%rcx
  mov    $0x1,%esi
  lea    D76(%rip),%rdi
  call   <fwrite@plt>
  mov    0x8(%rsp),%rdx
  test   %rdx,%rdx
  je     L21
  mov    0x18(%rsp),%rax
  test   %rax,%rax
  jne    L0
L21:
  mov    %rbp,%rcx
  mov    $0x157,%edx
  mov    $0x1,%esi
  lea    D135(%rip),%rdi
  call   <fwrite@plt>
  lea    D48(%rip),%rdx
  lea    D19(%rip),%rsi
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    %rbp,%rcx
  mov    $0x9a,%edx
  mov    $0x1,%esi
  lea    D11(%rip),%rdi
  call   <fwrite@plt>
  xor    %eax,%eax
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    0x490(%rsp),%r8d
  lea    D49(%rip),%r9
  lea    D111(%rip),%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    0x428(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L17
  add    $0x438,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L3:
  mov    0x4a0(%rsp),%r8d
  mov    0x498(%rsp),%ecx
  mov    %r13,%rdi
  xor    %eax,%eax
  lea    D49(%rip),%rdx
  lea    D122(%rip),%rsi
  call   <sprintf@plt>
  jmp    L20
  nopl   0x0(%rax)
L0:
  mov    %rax,%rcx
  lea    D14(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L21
L17:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D49
type: string
name: retrieve_data
arguments: data_label: D13
type: string
name: retrieve_data
arguments: data_label: D10
type: string
name: retrieve_data
arguments: data_label: D136
type: string
name: retrieve_data
arguments: data_label: D60
type: string
name: retrieve_data
arguments: data_label: D76
type: string
name: retrieve_data
arguments: data_label: D135
type: string
name: retrieve_data
arguments: data_label: D48
type: string
name: retrieve_data
arguments: data_label: D19
type: string
name: retrieve_data
arguments: data_label: D11
type: string
name: retrieve_data
arguments: data_label: D111
type: string
name: retrieve_data
arguments: data_label: D122
type: string
name: retrieve_data
arguments: data_label: D14
type: string

tool: D49: map_canvas

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

tool: D10: <!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: D136: <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: D76: <script type="text/javascript">

//<![CDATA[



tool: D135: 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: D48: font-size: 2em;

tool: D19: 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: D11: var rectangle;
var rectangle_southwest_latitude;
var rectangle_southwest_longitude;
var rectangle_northeast_latitude;
var rectangle_northeast_longitude;



tool: D111: 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: D122: #%s {
	width: %dpx;
	height: %dpx
	}

tool: D14: 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");
}
```