user: Demonstrate the C code that generates the assembly output below:

```asm
<HTTP_PostPkt>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  mov    %rdx,-0x98(%rbp)
  mov    %rcx,-0xa0(%rbp)
  mov    %r8,-0xa8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movq   $0x0,-0x60(%rbp)
  movq   $0x0,-0x58(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
  movq   $0x0,-0x7a(%rbp)
  movw   $0x0,-0x72(%rbp)
  mov    -0x88(%rbp),%rax
  movb   $0x0,(%rax)
  mov    -0xa8(%rbp),%rcx
  mov    -0xa0(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  lea    D7(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0x7a(%rbp),%rax
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    -0x88(%rbp),%rax
  lea    D87(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x98(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D84(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D79(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x90(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D89(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D44(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x7a(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  lea    D12(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x70(%rbp),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L9
  call   <__stack_chk_fail@plt>
L9:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D7
datatype: string
name: disassemble_data
arguments: label: D14
datatype: string
name: disassemble_data
arguments: label: D87
datatype: string
name: disassemble_data
arguments: label: D84
datatype: string
name: disassemble_data
arguments: label: D79
datatype: string
name: disassemble_data
arguments: label: D89
datatype: string
name: disassemble_data
arguments: label: D15
datatype: string
name: disassemble_data
arguments: label: D44
datatype: string
name: disassemble_data
arguments: label: D12
datatype: string

tool: D7: ,;%s,%s

tool: D14: %d

tool: D87: POST /devices/

tool: D84: /datapoints?type=5 HTTP/1.1


tool: D79: api-key:

tool: D89: 


tool: D15: Host:api.heclouds.com


tool: D44: Content-Length:

tool: D12: 



assistant: ```c
uint32_t HTTP_PostPkt(char *pkt, char *key, char *devid, char *dsid, char *val) {
  char dataBuf[100] = {0};
  char lenBuf[10] = {0};
  *pkt = 0;
  sprintf(dataBuf, ",;%s,%s", dsid, val);
  sprintf(lenBuf, "%d", strlen(dataBuf));
  strcat(pkt, "POST /devices/");
  strcat(pkt, devid);
  strcat(pkt, "/datapoints?type=5 HTTP/1.1\r\n");
  strcat(pkt, "api-key:");
  strcat(pkt, key);
  strcat(pkt, "\r\n");
  strcat(pkt, "Host:api.heclouds.com\r\n");
  strcat(pkt, "Content-Length:");
  strcat(pkt, lenBuf);
  strcat(pkt, "\r\n\r\n");
  strcat(pkt, dataBuf);
  return strlen(pkt);
}
```