user: 下面的汇编指令对应的C源代码是什么:

```asm
<skeleton>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x1f8,%rsp
  mov    %rdi,-0x1f8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    D2(%rip),%rax
  mov    %rax,-0x1d8(%rbp)
  lea    D46(%rip),%rax
  mov    %rax,-0x1d0(%rbp)
  mov    -0x1f8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rbx
  mov    -0x1d8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rax,%rbx
  mov    -0x1d0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rbx,%rax
  add    $0x1,%rax
  lea    D184(%rip),%rdx
  mov    $0x1dd,%esi
  mov    %rax,%rdi
  call   <eipa_malloc@plt>
  mov    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  mov    -0x1d8(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x1e8(%rbp),%rax
  mov    -0x1f8(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x1e8(%rbp),%rax
  mov    -0x1d0(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    D412(%rip),%rax
  mov    %rax,-0x1c8(%rbp)
  lea    D377(%rip),%rax
  mov    %rax,-0x1c0(%rbp)
  mov    -0x1f8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rbx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rax,%rbx
  mov    -0x1c0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rbx,%rax
  add    $0x1,%rax
  lea    D184(%rip),%rdx
  mov    $0x1e5,%esi
  mov    %rax,%rdi
  call   <eipa_malloc@plt>
  mov    %rax,-0x1e0(%rbp)
  mov    -0x1e0(%rbp),%rax
  mov    -0x1c8(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x1e0(%rbp),%rax
  mov    -0x1f8(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x1e0(%rbp),%rax
  mov    -0x1c0(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    D29(%rip),%rax
  mov    %rax,-0x1b0(%rbp)
  lea    D353(%rip),%rax
  mov    %rax,-0x1a8(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x1a0(%rbp)
  mov    -0x1e8(%rbp),%rax
  mov    %rax,-0x198(%rbp)
  lea    D485(%rip),%rax
  mov    %rax,-0x190(%rbp)
  lea    D32(%rip),%rax
  mov    %rax,-0x188(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x180(%rbp)
  lea    D87(%rip),%rax
  mov    %rax,-0x178(%rbp)
  lea    D102(%rip),%rax
  mov    %rax,-0x170(%rbp)
  lea    D340(%rip),%rax
  mov    %rax,-0x168(%rbp)
  lea    D300(%rip),%rax
  mov    %rax,-0x160(%rbp)
  lea    D500(%rip),%rax
  mov    %rax,-0x158(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0x150(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x148(%rbp)
  lea    D58(%rip),%rax
  mov    %rax,-0x140(%rbp)
  lea    D340(%rip),%rax
  mov    %rax,-0x138(%rbp)
  lea    D352(%rip),%rax
  mov    %rax,-0x130(%rbp)
  lea    D331(%rip),%rax
  mov    %rax,-0x128(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0x120(%rbp)
  lea    D412(%rip),%rax
  mov    %rax,-0x118(%rbp)
  lea    D40(%rip),%rax
  mov    %rax,-0x110(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x108(%rbp)
  lea    D112(%rip),%rax
  mov    %rax,-0x100(%rbp)
  lea    D273(%rip),%rax
  mov    %rax,-0xf8(%rbp)
  lea    D278(%rip),%rax
  mov    %rax,-0xf0(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0xe8(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0xe0(%rbp)
  lea    D256(%rip),%rax
  mov    %rax,-0xd8(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0xd0(%rbp)
  lea    D128(%rip),%rax
  mov    %rax,-0xc8(%rbp)
  lea    D260(%rip),%rax
  mov    %rax,-0xc0(%rbp)
  lea    D15(%rip),%rax
  mov    %rax,-0xb8(%rbp)
  mov    -0x1e0(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  lea    D526(%rip),%rax
  mov    %rax,-0xa8(%rbp)
  lea    D42(%rip),%rax
  mov    %rax,-0xa0(%rbp)
  lea    D73(%rip),%rax
  mov    %rax,-0x98(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x90(%rbp)
  lea    D495(%rip),%rax
  mov    %rax,-0x88(%rbp)
  lea    D327(%rip),%rax
  mov    %rax,-0x80(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0x78(%rbp)
  lea    D412(%rip),%rax
  mov    %rax,-0x70(%rbp)
  lea    D447(%rip),%rax
  mov    %rax,-0x68(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x60(%rbp)
  lea    D132(%rip),%rax
  mov    %rax,-0x58(%rbp)
  lea    D263(%rip),%rax
  mov    %rax,-0x50(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0x48(%rbp)
  lea    D412(%rip),%rax
  mov    %rax,-0x40(%rbp)
  lea    D434(%rip),%rax
  mov    %rax,-0x38(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,-0x30(%rbp)
  lea    D63(%rip),%rax
  mov    %rax,-0x28(%rbp)
  lea    D32(%rip),%rax
  mov    %rax,-0x20(%rbp)
  lea    -0x1b0(%rbp),%rax
  mov    $0x33,%esi
  mov    %rax,%rdi
  call   <buildString@plt>
  mov    %rax,-0x1b8(%rbp)
  lea    -0x1e8(%rbp),%rax
  lea    D184(%rip),%rdx
  mov    $0x222,%esi
  mov    %rax,%rdi
  call   <eipa_free@plt>
  lea    -0x1e0(%rbp),%rax
  lea    D184(%rip),%rdx
  mov    $0x223,%esi
  mov    %rax,%rdi
  call   <eipa_free@plt>
  mov    -0x1b8(%rbp),%rax
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D2
datatype: string
name: extract_symbolic_data
arguments: data_label: D46
datatype: string
name: extract_symbolic_data
arguments: data_label: D184
datatype: string
name: extract_symbolic_data
arguments: data_label: D412
datatype: string
name: extract_symbolic_data
arguments: data_label: D377
datatype: string
name: extract_symbolic_data
arguments: data_label: D29
datatype: string
name: extract_symbolic_data
arguments: data_label: D353
datatype: string
name: extract_symbolic_data
arguments: data_label: D389
datatype: string
name: extract_symbolic_data
arguments: data_label: D485
datatype: string
name: extract_symbolic_data
arguments: data_label: D32
datatype: string
name: extract_symbolic_data
arguments: data_label: D87
datatype: string
name: extract_symbolic_data
arguments: data_label: D102
datatype: string
name: extract_symbolic_data
arguments: data_label: D340
datatype: string
name: extract_symbolic_data
arguments: data_label: D300
datatype: string
name: extract_symbolic_data
arguments: data_label: D500
datatype: string
name: extract_symbolic_data
arguments: data_label: D114
datatype: string
name: extract_symbolic_data
arguments: data_label: D58
datatype: string
name: extract_symbolic_data
arguments: data_label: D352
datatype: string
name: extract_symbolic_data
arguments: data_label: D331
datatype: string
name: extract_symbolic_data
arguments: data_label: D40
datatype: string
name: extract_symbolic_data
arguments: data_label: D112
datatype: string
name: extract_symbolic_data
arguments: data_label: D273
datatype: string
name: extract_symbolic_data
arguments: data_label: D278
datatype: string
name: extract_symbolic_data
arguments: data_label: D256
datatype: string
name: extract_symbolic_data
arguments: data_label: D128
datatype: string
name: extract_symbolic_data
arguments: data_label: D260
datatype: string
name: extract_symbolic_data
arguments: data_label: D15
datatype: string
name: extract_symbolic_data
arguments: data_label: D526
datatype: string
name: extract_symbolic_data
arguments: data_label: D42
datatype: string
name: extract_symbolic_data
arguments: data_label: D73
datatype: string
name: extract_symbolic_data
arguments: data_label: D495
datatype: string
name: extract_symbolic_data
arguments: data_label: D327
datatype: string
name: extract_symbolic_data
arguments: data_label: D447
datatype: string
name: extract_symbolic_data
arguments: data_label: D132
datatype: string
name: extract_symbolic_data
arguments: data_label: D263
datatype: string
name: extract_symbolic_data
arguments: data_label: D434
datatype: string
name: extract_symbolic_data
arguments: data_label: D63
datatype: string

tool: D2: __global__ void 

tool: D46: (TODO:add parameters) {

tool: D184: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/WikiDreams/CUDA-SAK/refs/heads/master/Cuda-SAK/functions.c

tool: D412: 	

tool: D377: <<<blocks,grid>>>(TODO:parameters);

tool: D29: #include <stdio.h>

tool: D353: #include "HandleError.h"

tool: 

tool: D485: 	//TODO: Kernel code here

tool: D32: }

tool: D87: int main(void) {

tool: D102: 	/*TODO: declare and initialize variables for device and host

tool: D340: 	* Example:

tool: D300: 	* int histo_h[256];	

tool: D500: 	* unsigned int *histo_d;

tool: D114: 	*/

tool: D58: 	/*TODO: prepare device memory

tool: D352: 	* size_t histo_size_bytes = 256 * sizeof(unsigned int);

tool: D331: 	* HANDLE_ERROR( cudaMalloc((int**)&histo_d,histo_size_bytes) );

tool: D40: 	HANDLE_ERROR( cudaMalloc((TODO:add cast to variable type)&TODO:device variable name,TODO:size to allocate in the device memory);

tool: D112: 	/*TODO: initialize device variables

tool: D273: 	* Example: 

tool: D278: 	* HANDLE_ERROR(cudaMemcpy(buffer_d,buffer_h,buffer_size_bytes,cudaMemcpyHostToDevice));

tool: D256: 	HANDLE_ERROR(cudaMemcpy(TODO:device variable,TODO:host variable,TODO:size allocated to device variable, cudaMemcpyHostToDevice))

tool: D128: 	//Kernel Call

tool: D260: 	dim3 grid(TODO:set grid dimensions);

tool: D15: 	dim3 blocks(TODO:set block dimensions);

tool: D526: 	cudaDeviceSynchronize();

tool: D42: 	cudaError_t err = cudaGetLastError();

tool: D73: 	HANDLE_ERROR( err );

tool: D495: 	/*TODO: copy variables from device to host

tool: D327: 	* Example: HANDLE_ERROR(cudaMemcpy(histo_h,histo_d,histo_size_bytes,cudaMemcpyDeviceToHost));

tool: D447: 	HANDLE_ERROR(cudaMemcpy(TODO:host variable,TODO:device variable,TODO: size allocated to device variable, cudaMemcpyDeviceToHost));

tool: D132: 	/*TODO: free device memory

tool: D263: 	* Example: HANDLE_ERROR(cudaFree(buffer_d));

tool: D434: 	HANDLE_ERROR(cudaFree(TODO:variable to free));

tool: D63: 	return 0;

assistant: ```c
char *skeleton(char *kernel_name) {
  char *aux1 = "__global__ void ";
  char *aux2 = "(TODO:add parameters) {";
  char *aux3 = eipa_malloc((strlen(kernel_name) + strlen(aux1) + strlen(aux2) + 1), 477, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/WikiDreams/CUDA-SAK/refs/heads/master/Cuda-SAK/functions.c");
  strcpy(aux3, aux1);
  strcat(aux3, kernel_name);
  strcat(aux3, aux2);
  char *aux4 = "	";
  char *aux5 = "<<<blocks,grid>>>(TODO:parameters);";
  char *aux6 = eipa_malloc((strlen(kernel_name) + strlen(aux4) + strlen(aux5) + 1), 485, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/WikiDreams/CUDA-SAK/refs/heads/master/Cuda-SAK/functions.c");
  strcpy(aux6, aux4);
  strcat(aux6, kernel_name);
  strcat(aux6, aux5);
  char *string[51] = {"#include <stdio.h>", "#include \"HandleError.h\"", "", aux3, "	//TODO: Kernel code here", "}", "", "int main(void) {", "	/*TODO: declare and initialize variables for device and host", "	* Example:", "	* int histo_h[256];	", "	* unsigned int *histo_d;", "	*/", "", "	/*TODO: prepare device memory", "	* Example:", "	* size_t histo_size_bytes = 256 * sizeof(unsigned int);", "	* HANDLE_ERROR( cudaMalloc((int**)&histo_d,histo_size_bytes) );", "	*/", "	", "	HANDLE_ERROR( cudaMalloc((TODO:add cast to variable type)&TODO:device variable name,TODO:size to allocate in the device memory);", "", "	/*TODO: initialize device variables", "	* Example: ", "	* HANDLE_ERROR(cudaMemcpy(buffer_d,buffer_h,buffer_size_bytes,cudaMemcpyHostToDevice));", "	*/", "", "	HANDLE_ERROR(cudaMemcpy(TODO:device variable,TODO:host variable,TODO:size allocated to device variable, cudaMemcpyHostToDevice))", "", "	//Kernel Call", "	dim3 grid(TODO:set grid dimensions);", "	dim3 blocks(TODO:set block dimensions);", aux6, "	cudaDeviceSynchronize();", "	cudaError_t err = cudaGetLastError();", "	HANDLE_ERROR( err );", "", "	/*TODO: copy variables from device to host", "	* Example: HANDLE_ERROR(cudaMemcpy(histo_h,histo_d,histo_size_bytes,cudaMemcpyDeviceToHost));", "	*/", "	", "	HANDLE_ERROR(cudaMemcpy(TODO:host variable,TODO:device variable,TODO: size allocated to device variable, cudaMemcpyDeviceToHost));", "", "	/*TODO: free device memory", "	* Example: HANDLE_ERROR(cudaFree(buffer_d));", "	*/", "	", "	HANDLE_ERROR(cudaFree(TODO:variable to free));", "", "	return 0;", "}"};
  char *final = buildString(string, 51);
  eipa_free((void **)(&(aux3)), 546, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/WikiDreams/CUDA-SAK/refs/heads/master/Cuda-SAK/functions.c");
  eipa_free((void **)(&(aux6)), 547, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/WikiDreams/CUDA-SAK/refs/heads/master/Cuda-SAK/functions.c");
  return final;
}
```