user: 这段汇编代码用C语言表示是什么样的?

```asm
<Create_Action_Message>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  lea    0x107(%rax),%rbx
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rax,%rbx
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rax,%rbx
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %rbx,%rax
  add    $0x1,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  test   %rax,%rax
  jne    L4
  mov    $0xfffffe0d,%eax
  jmp    L5
L4:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  mov    -0x20(%rbp),%rdi
  mov    -0x28(%rbp),%rsi
  mov    -0x18(%rbp),%rcx
  mov    -0x20(%rbp),%rdx
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D8(%rip),%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    $0x0,%eax
L5:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D8
datatype: string

tool: D8: <?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:%s xmlns:u="urn:schemas-upnp-org:service:%s">
%s</u:%s>
</s:Body>
</s:Envelope>


assistant: ```c
int Create_Action_Message(const char *service_type, const char *action_name, const char *action_params, char **action_message) {
  *action_message = (char *)malloc(strlen("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
                                          "<s:Envelope xmlns:s="
                                          "\"http://schemas.xmlsoap.org/soap/envelope/\" "
                                          "s:encodingStyle="
                                          "\"http://schemas.xmlsoap.org/soap/encoding/\">\r\n"
                                          "<s:Body>\r\n"
                                          "<u:%s xmlns:u="
                                          "\"urn:schemas-upnp-org:service:%s\">\r\n%s"
                                          "</u:%s>\r\n"
                                          "</s:Body>\r\n"
                                          "</s:Envelope>\r\n") +
                                   strlen(service_type) + strlen(action_name) + strlen(action_params) + strlen(action_name) + 1);
  if (NULL == *action_message) {
    return -499;
  }
  (void)sprintf(*action_message,
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
                "<s:Envelope xmlns:s="
                "\"http://schemas.xmlsoap.org/soap/envelope/\" "
                "s:encodingStyle="
                "\"http://schemas.xmlsoap.org/soap/encoding/\">\r\n"
                "<s:Body>\r\n"
                "<u:%s xmlns:u="
                "\"urn:schemas-upnp-org:service:%s\">\r\n%s"
                "</u:%s>\r\n"
                "</s:Body>\r\n"
                "</s:Envelope>\r\n",
                action_name, service_type, action_params, action_name);
  return 0;
}
```