user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<generateVoipInvitePacket>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x420,%rsp
  mov    %rdi,-0x3f8(%rbp)
  mov    %rsi,-0x400(%rbp)
  mov    %rdx,-0x408(%rbp)
  mov    %rcx,-0x410(%rbp)
  mov    %r8,-0x418(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x400,%edi
  call   <malloc@plt>
  mov    %rax,-0x3e0(%rbp)
  movl   $0x0,-0x3e4(%rbp)
  movabs $0x20455449564e49,%rax
  mov    %rax,-0x3d8(%rbp)
  movq   $0x0,-0x310(%rbp)
  movq   $0x0,-0x308(%rbp)
  movq   $0x0,-0x300(%rbp)
  movq   $0x0,-0x2f8(%rbp)
  movq   $0x0,-0x2f0(%rbp)
  movq   $0x0,-0x2e8(%rbp)
  movq   $0x0,-0x2e0(%rbp)
  movq   $0x0,-0x2d8(%rbp)
  lea    -0x310(%rbp),%rax
  lea    D80(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x408(%rbp),%rdx
  lea    -0x310(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x310(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x410(%rbp),%rdx
  lea    -0x310(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x310(%rbp),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movabs $0xd302e322f504953,%rax
  mov    $0xa,%edx
  mov    %rax,-0x3d0(%rbp)
  mov    %rdx,-0x3c8(%rbp)
  movq   $0x0,-0x210(%rbp)
  movq   $0x0,-0x208(%rbp)
  movq   $0x0,-0x200(%rbp)
  movq   $0x0,-0x1f8(%rbp)
  movq   $0x0,-0x1f0(%rbp)
  movq   $0x0,-0x1e8(%rbp)
  movq   $0x0,-0x1e0(%rbp)
  movq   $0x0,-0x1d8(%rbp)
  movq   $0x0,-0x1d0(%rbp)
  movq   $0x0,-0x1c8(%rbp)
  movq   $0x0,-0x1c0(%rbp)
  movq   $0x0,-0x1b8(%rbp)
  movq   $0x0,-0x1b0(%rbp)
  movq   $0x0,-0x1a8(%rbp)
  movq   $0x0,-0x1a0(%rbp)
  movq   $0x0,-0x198(%rbp)
  lea    -0x210(%rbp),%rax
  lea    D188(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x418(%rbp),%rdx
  lea    -0x210(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x210(%rbp),%rax
  lea    D148(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x418(%rbp),%rdx
  lea    -0x210(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x210(%rbp),%rax
  lea    D91(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movq   $0x0,-0x190(%rbp)
  movq   $0x0,-0x188(%rbp)
  movq   $0x0,-0x180(%rbp)
  movq   $0x0,-0x178(%rbp)
  movq   $0x0,-0x170(%rbp)
  movq   $0x0,-0x168(%rbp)
  movq   $0x0,-0x160(%rbp)
  movq   $0x0,-0x158(%rbp)
  movq   $0x0,-0x150(%rbp)
  movq   $0x0,-0x148(%rbp)
  movq   $0x0,-0x140(%rbp)
  movq   $0x0,-0x138(%rbp)
  movq   $0x0,-0x130(%rbp)
  movq   $0x0,-0x128(%rbp)
  movq   $0x0,-0x120(%rbp)
  movq   $0x0,-0x118(%rbp)
  lea    -0x190(%rbp),%rax
  lea    D82(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x3f8(%rbp),%rdx
  lea    -0x190(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x190(%rbp),%rax
  lea    D98(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x400(%rbp),%rdx
  lea    -0x190(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x190(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x410(%rbp),%rdx
  lea    -0x190(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x190(%rbp),%rax
  lea    D64(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movq   $0x0,-0x110(%rbp)
  movq   $0x0,-0x108(%rbp)
  movq   $0x0,-0x100(%rbp)
  movq   $0x0,-0xf8(%rbp)
  movq   $0x0,-0xf0(%rbp)
  movq   $0x0,-0xe8(%rbp)
  movq   $0x0,-0xe0(%rbp)
  movq   $0x0,-0xd8(%rbp)
  movq   $0x0,-0xd0(%rbp)
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xc0(%rbp)
  movq   $0x0,-0xb8(%rbp)
  movq   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  lea    -0x110(%rbp),%rax
  lea    D90(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x408(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x110(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x410(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x110(%rbp),%rax
  lea    D63(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movq   $0x0,-0x2d0(%rbp)
  movq   $0x0,-0x2c8(%rbp)
  movq   $0x0,-0x2c0(%rbp)
  movq   $0x0,-0x2b8(%rbp)
  movq   $0x0,-0x2b0(%rbp)
  movq   $0x0,-0x2a8(%rbp)
  movq   $0x0,-0x2a0(%rbp)
  movq   $0x0,-0x298(%rbp)
  lea    -0x2d0(%rbp),%rax
  lea    D167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x2d0(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x418(%rbp),%rdx
  lea    -0x2d0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x2d0(%rbp),%rax
  lea    D142(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movabs $0x2031203a71655343,%rax
  movabs $0xa0d455449564e49,%rdx
  mov    %rax,-0x3b0(%rbp)
  mov    %rdx,-0x3a8(%rbp)
  movq   $0x0,-0x3a0(%rbp)
  movq   $0x0,-0x398(%rbp)
  movabs $0x6567412d72657355,%rax
  movabs $0x6f72654e203a746e,%rdx
  mov    %rax,-0x290(%rbp)
  mov    %rdx,-0x288(%rbp)
  movabs $0x4920535050495320,%rax
  movabs $0x20656e6f68502050,%rdx
  mov    %rax,-0x280(%rbp)
  mov    %rdx,-0x278(%rbp)
  movabs $0x206e6f6973726556,%rax
  movabs $0x312e31352e302e32,%rdx
  mov    %rax,-0x270(%rbp)
  mov    %rdx,-0x268(%rbp)
  movq   $0xa0d36,-0x260(%rbp)
  movq   $0x0,-0x258(%rbp)
  movabs $0x3a73657269707845,%rax
  movabs $0xa0d30323120,%rdx
  mov    %rax,-0x3c0(%rbp)
  mov    %rdx,-0x3b8(%rbp)
  movabs $0x203a747065636341,%rax
  movabs $0x746163696c707061,%rdx
  mov    %rax,-0x390(%rbp)
  mov    %rdx,-0x388(%rbp)
  movabs $0xd7064732f6e6f69,%rax
  mov    $0xa,%edx
  mov    %rax,-0x380(%rbp)
  mov    %rdx,-0x378(%rbp)
  movabs $0x2d746e65746e6f43,%rax
  movabs $0x7061203a65707954,%rdx
  mov    %rax,-0x370(%rbp)
  mov    %rdx,-0x368(%rbp)
  movabs $0x6f69746163696c70,%rax
  movabs $0xa0d7064732f6e,%rdx
  mov    %rax,-0x360(%rbp)
  mov    %rdx,-0x358(%rbp)
  movabs $0x2d746e65746e6f43,%rax
  movabs $0x203a6874676e654c,%rdx
  mov    %rax,-0x350(%rbp)
  mov    %rdx,-0x348(%rbp)
  movabs $0xa0d323732,%rax
  mov    $0x0,%edx
  mov    %rax,-0x340(%rbp)
  mov    %rdx,-0x338(%rbp)
  movq   $0x0,-0x250(%rbp)
  movq   $0x0,-0x248(%rbp)
  movq   $0x0,-0x240(%rbp)
  movq   $0x0,-0x238(%rbp)
  movq   $0x0,-0x230(%rbp)
  movq   $0x0,-0x228(%rbp)
  movq   $0x0,-0x220(%rbp)
  movq   $0x0,-0x218(%rbp)
  lea    -0x250(%rbp),%rax
  lea    D146(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x400(%rbp),%rdx
  lea    -0x250(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x250(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x418(%rbp),%rdx
  lea    -0x250(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x250(%rbp),%rax
  lea    D63(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  movabs $0x77726f462d78614d,%rax
  movabs $0x3037203a73647261,%rdx
  mov    %rax,-0x330(%rbp)
  mov    %rdx,-0x328(%rbp)
  movq   $0xa0d,-0x320(%rbp)
  movq   $0x0,-0x318(%rbp)
  movabs $0x49203a776f6c6c41,%rax
  movabs $0x41202c455449564e,%rdx
  mov    %rax,-0x90(%rbp)
  mov    %rdx,-0x88(%rbp)
  movabs $0x434e4143202c4b43,%rax
  movabs $0x2c455942202c4c45,%rdx
  mov    %rax,-0x80(%rbp)
  mov    %rdx,-0x78(%rbp)
  movabs $0x202c524546455220,%rax
  movabs $0x2c534e4f4954504f,%rdx
  mov    %rax,-0x70(%rbp)
  mov    %rdx,-0x68(%rbp)
  movabs $0x2c594649544f4e20,%rax
  movabs $0xd0a0d4f464e4920,%rdx
  mov    %rax,-0x60(%rbp)
  mov    %rdx,-0x58(%rbp)
  movq   $0xa,-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)
  lea    -0x3d8(%rbp),%rcx
  mov    -0x3e0(%rbp),%rax
  mov    $0x7,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  addl   $0x7,-0x3e4(%rbp)
  lea    -0x310(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x310(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x310(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x3e0(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  lea    -0x3d0(%rbp),%rax
  mov    $0x9,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  addl   $0x9,-0x3e4(%rbp)
  lea    -0x210(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x210(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x210(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x190(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x190(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x190(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x110(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x2d0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x2d0(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x2d0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x3b0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x3b0(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x3b0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x290(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x290(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x290(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x3c0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x3c0(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x3c0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x390(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x390(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x390(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x370(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x370(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x370(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x350(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x350(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x350(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x250(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x250(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x250(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x330(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x330(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x330(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  lea    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x3e0(%rbp),%rax
  add    %rax,%rcx
  lea    -0x90(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  lea    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x3e4(%rbp)
  mov    -0x3e4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x3e0(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0x3e0(%rbp),%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D80
data_type: string
name: extract_symbolic_data
arguments: data_label: D173
data_type: string
name: extract_symbolic_data
arguments: data_label: D43
data_type: string
name: extract_symbolic_data
arguments: data_label: D188
data_type: string
name: extract_symbolic_data
arguments: data_label: D148
data_type: string
name: extract_symbolic_data
arguments: data_label: D91
data_type: string
name: extract_symbolic_data
arguments: data_label: D82
data_type: string
name: extract_symbolic_data
arguments: data_label: D98
data_type: string
name: extract_symbolic_data
arguments: data_label: D64
data_type: string
name: extract_symbolic_data
arguments: data_label: D90
data_type: string
name: extract_symbolic_data
arguments: data_label: D63
data_type: string
name: extract_symbolic_data
arguments: data_label: D167
data_type: string
name: extract_symbolic_data
arguments: data_label: D142
data_type: string
name: extract_symbolic_data
arguments: data_label: D146
data_type: string

tool: D80: sip:

tool: D173: @

tool: D43:  

tool: D188: Via: SIP/2.0/UDP 

tool: D148: :5060;branch=z9hG4bKnp104984053-44ce4a41

tool: D91: ;rport


tool: D82: From: "

tool: D98: " <sip:

tool: D64: >;tag=6433ef9


tool: D90: To: <sip:

tool: D63: >


tool: D167: Call-ID: 105090259-446faf7a

tool: D142: 


tool: D146: Contact: <sip:

assistant: ```c
uint8_t *generateVoipInvitePacket(char *userName, char *fromPhoneNumber, char *toPhoneNumber, char *host, char *srcIp) {
  uint8_t *data = (uint8_t *)malloc(1024);
  int ic = 0;
  char method[8] = "INVITE ";
  char requestUri[64] = "";
  strcat(requestUri, "sip:");
  strcat(requestUri, toPhoneNumber);
  strcat(requestUri, "@");
  strcat(requestUri, host);
  strcat(requestUri, " ");
  char version[16] = "SIP/2.0\r\n";
  char via[128] = "";
  strcat(via, "Via: SIP/2.0/UDP ");
  strcat(via, srcIp);
  strcat(via, ":5060;branch=z9hG4bKnp104984053-44ce4a41");
  strcat(via, srcIp);
  strcat(via, ";rport\r\n");
  char from[128] = "";
  strcat(from, "From: \"");
  strcat(from, userName);
  strcat(from, "\" <sip:");
  strcat(from, fromPhoneNumber);
  strcat(from, "@");
  strcat(from, host);
  strcat(from, ">;tag=6433ef9\r\n");
  char to[128] = "";
  strcat(to, "To: <sip:");
  strcat(to, toPhoneNumber);
  strcat(to, "@");
  strcat(to, host);
  strcat(to, ">\r\n");
  char callId[64] = "";
  strcat(callId, "Call-ID: 105090259-446faf7a");
  strcat(callId, "@");
  strcat(callId, srcIp);
  strcat(callId, "\r\n");
  char cseq[32] = "CSeq: 1 INVITE\r\n";
  char userAgent[64] = "User-Agent: Nero SIPPS IP Phone Version 2.0.51.16\r\n";
  char expire[16] = "Expires: 120\r\n";
  char accept[32] = "Accept: application/sdp\r\n";
  char contentType[32] = "Content-Type: application/sdp\r\n";
  char contentLength[32] = "Content-Length: 272\r\n";
  char contact[64] = "";
  strcat(contact, "Contact: <sip:");
  strcat(contact, fromPhoneNumber);
  strcat(contact, "@");
  strcat(contact, srcIp);
  strcat(contact, ">\r\n");
  char maxForward[32] = "Max-Forwards: 70\r\n";
  char allow[128] = "Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, INFO\r\n\r\n";
  memcpy(data, method, 7);
  ic += 7;
  memcpy(data + ic, requestUri, strlen(requestUri));
  ic += strlen(requestUri);
  memcpy(data + ic, version, 9);
  ic += 9;
  memcpy(data + ic, via, strlen(via));
  ic += strlen(via);
  memcpy(data + ic, from, strlen(from));
  ic += strlen(from);
  memcpy(data + ic, to, strlen(to));
  ic += strlen(to);
  memcpy(data + ic, callId, strlen(callId));
  ic += strlen(callId);
  memcpy(data + ic, cseq, strlen(cseq));
  ic += strlen(cseq);
  memcpy(data + ic, userAgent, strlen(userAgent));
  ic += strlen(userAgent);
  memcpy(data + ic, expire, strlen(expire));
  ic += strlen(expire);
  memcpy(data + ic, accept, strlen(accept));
  ic += strlen(accept);
  memcpy(data + ic, contentType, strlen(contentType));
  ic += strlen(contentType);
  memcpy(data + ic, contentLength, strlen(contentLength));
  ic += strlen(contentLength);
  memcpy(data + ic, contact, strlen(contact));
  ic += strlen(contact);
  memcpy(data + ic, maxForward, strlen(maxForward));
  ic += strlen(maxForward);
  memcpy(data + ic, allow, strlen(allow));
  ic += strlen(allow);
  data[ic] = '\0';
  return data;
}
```