user: Converte this assembly snippet into its equivalent C code:

```asm
<net_config_mac>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x220,%rsp
  mov    %rdi,-0x218(%rbp)
  mov    %rsi,-0x220(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x220(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  movzbl %al,%edi
  mov    -0x220(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x220(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%r9d
  mov    -0x220(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%r8d
  mov    -0x220(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0x220(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  lea    -0x208(%rbp),%rax
  push   %rdi
  push   %rsi
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <asprintf@plt>
  add    $0x10,%rsp
  cmp    $0xffffffff,%eax
  jne    L10
  lea    -0x200(%rbp),%rax
  sub    $0x8,%rsp
  lea    D79(%rip),%rdx
  push   %rdx
  mov    $0xfe,%r9d
  lea    D31(%rip),%r8
  lea    D23(%rip),%rdx
  mov    %rdx,%rcx
  lea    D72(%rip),%rdx
  mov    $0x1f4,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <snprintf@plt>
  add    $0x10,%rsp
  lea    -0x200(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <perror@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L10:
  mov    -0x208(%rbp),%rax
  mov    -0x218(%rbp),%rdx
  sub    $0x8,%rsp
  push   %rax
  mov    %rdx,%r9
  lea    D22(%rip),%r8
  lea    D51(%rip),%rax
  mov    %rax,%rcx
  lea    D44(%rip),%rax
  mov    %rax,%rdx
  mov    $0x5,%esi
  mov    $0x15,%edi
  mov    $0x0,%eax
  call   <sbox_run@plt>
  add    $0x10,%rsp
  mov    -0x208(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L11
  call   <__stack_chk_fail@plt>
L11:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D0
type: string
name: retrieve_data
arguments: label: D79
type: string
name: retrieve_data
arguments: label: D31
type: string
name: retrieve_data
arguments: label: D23
type: string
name: retrieve_data
arguments: label: D72
type: string
name: retrieve_data
arguments: label: D22
type: string
name: retrieve_data
arguments: label: D51
type: string
name: retrieve_data
arguments: label: D44
type: string

tool: D0: %02x:%02x:%02x:%02x:%02x:%02x

tool: D79: net_config_mac

tool: D31: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Fred-Barclay/firejail/refs/heads/master/src/firejail/network.c

tool: D23: asprintf

tool: D72: Error %s: %s:%d %s

tool: D22: mac

tool: D51: config

tool: D44: /run/firejail/lib/fnet

assistant: ```c
int net_config_mac(const char *ifname, const unsigned char mac[6]) {
  char *macstr;
  if (asprintf(&macstr, "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]) == -1)
    do {
      char msgout[500];
      snprintf(msgout, 500, "Error %s: %s:%d %s", "asprintf", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Fred-Barclay/firejail/refs/heads/master/src/firejail/network.c", 254, __FUNCTION__);
      perror(msgout);
      exit(1);
    } while (0);
  sbox_run((1 << 0) | (1 << 4) | (1 << 2), 5,
           ("/run"
            "/firejail"
            "/lib"
            "/fnet"),
           "config", "mac", ifname, macstr);
  free(macstr);
  return 0;
}
```