user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %rbx
  cmp    $0x2,%edi
  jne    L10
  mov    0x8(%rsi),%rdi
  call   <atoi@plt>
  mov    %eax,%ebx
  lea    D25(%rip),%rdi
  call   <printf@plt>
  lea    D1(%rip),%rdi
  call   <printf@plt>
  cmp    $0x1,%ebx
  je     L36
  lea    D78(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <message_rcv_sync@plt>
  lea    D66(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_rcv_async@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_reply_sync@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_reply_async@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
L1:
  lea    D73(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
L28:
  pop    %rbx
  ret
L10:
  lea    D67(%rip),%rdi
  call   <printf@plt>
  mov    $0xffffffff,%eax
  jmp    L28
L36:
  lea    D71(%rip),%rdi
  call   <printf@plt>
  mov    $0x2,%edi
  call   <sleep@plt>
  mov    $0x0,%eax
  call   <message_send_sync@plt>
  lea    D66(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_send_async@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_send_receive@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <message_send_receive_a@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  jmp    L1
```

tool_calls: name: extract_symbolic_data
arguments: tag: D25
type_infered: string
name: extract_symbolic_data
arguments: tag: D1
type_infered: string
name: extract_symbolic_data
arguments: tag: D78
type_infered: string
name: extract_symbolic_data
arguments: tag: D66
type_infered: string
name: extract_symbolic_data
arguments: tag: D73
type_infered: string
name: extract_symbolic_data
arguments: tag: D67
type_infered: string
name: extract_symbolic_data
arguments: tag: D71
type_infered: string

tool: D25: 
STARTING THE MQSv DEMO


tool: D1: ======================


tool: D78: MessageQ Receiver Application 


tool: D66: Press Enter Key to Continue...


tool: D73: End of MessageService Demo. Press Enter Key to Quit


tool: D67: 
Wrong Arguments USAGE: <msg_demo><1(Sender)/0(Receiver)>


tool: D71: MessageQ Sender Application 


assistant: ```c
int main(int argc, char **argv) {
  unsigned int temp_var;
  if (argc != 2) {
    printf("\nWrong Arguments USAGE: <msg_demo><1(Sender)/0(Receiver)>\n");
    return -1;
  }
  temp_var = atoi(argv[1]);
  printf("\nSTARTING THE MQSv DEMO\n");
  printf("======================\n");
  if (temp_var == 1) {
    printf("MessageQ Sender Application \n");
    sleep(2);
    message_send_sync();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_send_async();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_send_receive();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_send_receive_a();
    printf("Press Enter Key to Continue...\n");
    getchar();
  } else {
    printf("MessageQ Receiver Application \n");
    message_rcv_sync();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_rcv_async();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_reply_sync();
    printf("Press Enter Key to Continue...\n");
    getchar();
    message_reply_async();
    printf("Press Enter Key to Continue...\n");
    getchar();
  }
  printf("End of MessageService Demo. Press Enter Key to Quit\n");
  getchar();
  return 0;
}
```