user: Translate the below assembly code into C programming language:

```asm
<lancement_service>:
  endbr64
  push   %r12
  pxor   %xmm0,%xmm0
  mov    $0xff,%edx
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  sub    $0x210,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x208(%rsp)
  xor    %eax,%eax
  lea    0x100(%rsp),%r12
  movaps %xmm0,(%rsp)
  mov    %r12,%rsi
  movaps %xmm0,0x10(%rsp)
  movaps %xmm0,0x20(%rsp)
  movaps %xmm0,0x30(%rsp)
  movaps %xmm0,0x40(%rsp)
  movaps %xmm0,0x50(%rsp)
  movaps %xmm0,0x60(%rsp)
  movaps %xmm0,0x70(%rsp)
  movaps %xmm0,0x80(%rsp)
  movaps %xmm0,0x90(%rsp)
  movaps %xmm0,0xa0(%rsp)
  movaps %xmm0,0xb0(%rsp)
  movaps %xmm0,0xc0(%rsp)
  movaps %xmm0,0xd0(%rsp)
  movaps %xmm0,0xe0(%rsp)
  movaps %xmm0,0xf0(%rsp)
  movaps %xmm0,0x100(%rsp)
  movaps %xmm0,0x110(%rsp)
  movaps %xmm0,0x120(%rsp)
  movaps %xmm0,0x130(%rsp)
  movaps %xmm0,0x140(%rsp)
  movaps %xmm0,0x150(%rsp)
  movaps %xmm0,0x160(%rsp)
  movaps %xmm0,0x170(%rsp)
  movaps %xmm0,0x180(%rsp)
  movaps %xmm0,0x190(%rsp)
  movaps %xmm0,0x1a0(%rsp)
  movaps %xmm0,0x1b0(%rsp)
  movaps %xmm0,0x1c0(%rsp)
  movaps %xmm0,0x1d0(%rsp)
  movaps %xmm0,0x1e0(%rsp)
  movaps %xmm0,0x1f0(%rsp)
  call   <read@plt>
  test   %eax,%eax
  jle    L82
L80:
  mov    %ebp,%edi
  mov    %rsp,%rbx
  lea    D6(%rip),%r12
  call   <liste_referentiel@plt>
  nopl   (%rax)
L88:
  mov    %ebp,%edi
  call   <lecture_s@plt>
  xor    %eax,%eax
  call   <get_message@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %eax,%edi
  call   <sscanf@plt>
  test   %rax,%rax
  jg     L20
L49:
  cmpb   $0x71,(%rbx)
  jne    L18
  cmpb   $0x0,0x1(%rbx)
  je     L101
L18:
  cmpb   $0x51,(%rbx)
  jne    L88
  cmpb   $0x0,0x1(%rbx)
  jne    L88
L101:
  mov    %ebp,%edi
  call   <quitter@plt>
  mov    0x208(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L17
  add    $0x210,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L23:
  mov    %ebp,%edi
  call   <ecriture_s@plt>
L20:
  mov    %rbx,%rdi
  call   <lecture@plt>
  cmp    $0x1,%eax
  je     L23
  test   %eax,%eax
  jns    L49
  mov    %rbx,%rdi
  call   <creation_message_erreur@plt>
  mov    %ebp,%edi
  call   <diffusion_erreur@plt>
  jmp    L49
L82:
  lea    D16(%rip),%rsi
  mov    %r12,%rdi
  call   <strcpy@plt>
  jmp    L80
L17:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D6
type_infered: string
name: disassemble_data
arguments: tag: D16
type_infered: string

tool: D6: %s

tool: D16: sombre inconnu

assistant: ```c
void lancement_service(int ta_socket) {
  int n;
  int choix;
  choix = 1;
  char mMessage[256] = "";
  char reponse[256] = "";
  char nom[256] = "";
  if ((n = read(ta_socket, nom, 256 - 1)) > 0)
    ;
  else
    strcpy(nom, "sombre inconnu");
  liste_referentiel(ta_socket);
  while (choix) {
    n = lecture_s(ta_socket);
    if (sscanf(get_message(), "%s", mMessage) > 0) {
      while ((n = lecture(mMessage)) == 1) {
        ecriture_s(ta_socket);
      }
      if (n < 0) {
        creation_message_erreur(mMessage);
        diffusion_erreur(ta_socket);
      }
    }
    if (!strcmp(mMessage, "q") || !strcmp(mMessage, "Q")) {
      choix = 0;
      quitter(ta_socket);
    }
  }
}
```