user: 请将以下的汇编代码转换成C语言代码：

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  cmp    $0x2,%edi
  jne    L34
  mov    0x8(%rsi),%rdi
  call   <atoi@plt>
  lea    D9(%rip),%rdi
  mov    %eax,%ebx
  call   <printf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  cmp    $0x1,%ebx
  je     L7
  lea    D27(%rip),%rdi
  lea    D54(%rip),%rbp
  call   <printf@plt>
  xor    %eax,%eax
  call   <message_rcv_sync@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_rcv_async@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_reply_sync@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_reply_async@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
L22:
  lea    D63(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
L11:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L7:
  lea    D45(%rip),%rdi
  lea    D54(%rip),%rbp
  call   <printf@plt>
  mov    $0x2,%edi
  call   <sleep@plt>
  xor    %eax,%eax
  call   <message_send_sync@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_send_async@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_send_receive@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <message_send_receive_a@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L22
L34:
  lea    D57(%rip),%rdi
  call   <printf@plt>
  or     $0xffffffff,%eax
  jmp    L11
```

tool_calls: name: parse_data
arguments: data_tag: D9
datatype: string
name: parse_data
arguments: data_tag: D6
datatype: string
name: parse_data
arguments: data_tag: D27
datatype: string
name: parse_data
arguments: data_tag: D54
datatype: string
name: parse_data
arguments: data_tag: D63
datatype: string
name: parse_data
arguments: data_tag: D45
datatype: string
name: parse_data
arguments: data_tag: D57
datatype: string

tool: D9: 
STARTING THE MQSv DEMO


tool: D6: ======================


tool: D27: MessageQ Receiver Application 


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


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


tool: D45: MessageQ Sender Application 


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


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;
}
```