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

```asm
<main>:
  endbr64
  push   %r12
  mov    $0x5,%esi
  push   %rbp
  push   %rbx
  add    $0xffffffffffffff80,%rsp
  movdqa D188(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x78(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  movl   $0x3,0x10(%rsp)
  mov    %rbp,%rdi
  movaps %xmm0,(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x3,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D158(%rip),%xmm0
  mov    %rbp,%rdi
  mov    $0x9,%esi
  movl   $0x4,0x20(%rsp)
  movaps %xmm0,(%rsp)
  movdqa D114(%rip),%xmm0
  movaps %xmm0,0x10(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x1,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D246(%rip),%xmm0
  mov    $0x8,%esi
  mov    %rbp,%rdi
  movaps %xmm0,(%rsp)
  movdqa D122(%rip),%xmm0
  movaps %xmm0,0x10(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x11,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D137(%rip),%xmm0
  mov    $0x7,%esi
  mov    %rbp,%rdi
  mov    D47(%rip),%r12
  movl   $0x7,0x18(%rsp)
  movaps %xmm0,(%rsp)
  mov    %r12,0x10(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x2,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D80(%rip),%xmm0
  mov    $0xe,%esi
  mov    %rbp,%rdi
  movdqa D175(%rip),%xmm1
  mov    D89(%rip),%rbx
  movaps %xmm0,(%rsp)
  movdqa D120(%rip),%xmm0
  movaps %xmm1,0x20(%rsp)
  movaps %xmm0,0x10(%rsp)
  mov    %rbx,0x30(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x2c,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D141(%rip),%xmm0
  mov    $0x1e,%esi
  mov    %rbp,%rdi
  mov    D57(%rip),%rax
  movaps %xmm0,(%rsp)
  movaps %xmm0,0x10(%rsp)
  movaps %xmm0,0x20(%rsp)
  movdqa D117(%rip),%xmm0
  mov    %rax,0x70(%rsp)
  movaps %xmm0,0x30(%rsp)
  movdqa D22(%rip),%xmm0
  movaps %xmm0,0x40(%rsp)
  movaps %xmm0,0x50(%rsp)
  movdqa D34(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x3e8,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D15(%rip),%xmm0
  mov    %rbp,%rdi
  mov    $0x5,%esi
  movl   $0xfffffffd,0x10(%rsp)
  movaps %xmm0,(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0xfffffffd,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D131(%rip),%xmm0
  mov    %rbp,%rdi
  mov    $0xd,%esi
  movl   $0x4,0x30(%rsp)
  movaps %xmm0,(%rsp)
  movdqa D216(%rip),%xmm0
  movaps %xmm0,0x10(%rsp)
  movdqa D238(%rip),%xmm0
  movaps %xmm0,0x20(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0xffffffdd,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D33(%rip),%xmm0
  mov    $0x7,%esi
  mov    %rbp,%rdi
  mov    %r12,0x10(%rsp)
  movaps %xmm0,(%rsp)
  movl   $0x7,0x18(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0xffffffec,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D155(%rip),%xmm0
  mov    $0xe,%esi
  mov    %rbp,%rdi
  movdqa D175(%rip),%xmm1
  mov    %rbx,0x30(%rsp)
  movaps %xmm0,(%rsp)
  movdqa D58(%rip),%xmm0
  movaps %xmm1,0x20(%rsp)
  movaps %xmm0,0x10(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0xffffffd4,%eax
  sete   %dil
  call   <assert@plt>
  mov    D218(%rip),%rax
  mov    %rbp,%rdi
  mov    $0x3,%esi
  movl   $0x0,0x8(%rsp)
  mov    %rax,(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  cmp    $0x1,%eax
  sete   %dil
  call   <assert@plt>
  movdqa D190(%rip),%xmm0
  mov    %rbp,%rdi
  mov    D260(%rip),%rax
  mov    $0x7,%esi
  movl   $0x7,0x18(%rsp)
  mov    %rax,0x10(%rsp)
  movaps %xmm0,(%rsp)
  call   <find_outlier@plt>
  xor    %edi,%edi
  test   %eax,%eax
  sete   %dil
  call   <assert@plt>
  mov    0x78(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  sub    $0xffffffffffffff80,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D188
data_type: byte[16]
name: unpack_data
arguments: tag: D158
data_type: byte[16]
name: unpack_data
arguments: tag: D114
data_type: byte[16]
name: unpack_data
arguments: tag: D246
data_type: byte[16]
name: unpack_data
arguments: tag: D122
data_type: byte[16]
name: unpack_data
arguments: tag: D137
data_type: byte[16]
name: unpack_data
arguments: tag: D47
data_type: byte[8]
name: unpack_data
arguments: tag: D80
data_type: byte[16]
name: unpack_data
arguments: tag: D175
data_type: byte[16]
name: unpack_data
arguments: tag: D89
data_type: byte[8]
name: unpack_data
arguments: tag: D120
data_type: byte[16]
name: unpack_data
arguments: tag: D141
data_type: byte[16]
name: unpack_data
arguments: tag: D57
data_type: byte[8]
name: unpack_data
arguments: tag: D117
data_type: byte[16]
name: unpack_data
arguments: tag: D22
data_type: byte[16]
name: unpack_data
arguments: tag: D34
data_type: byte[16]
name: unpack_data
arguments: tag: D15
data_type: byte[16]
name: unpack_data
arguments: tag: D131
data_type: byte[16]
name: unpack_data
arguments: tag: D216
data_type: byte[16]
name: unpack_data
arguments: tag: D238
data_type: byte[16]
name: unpack_data
arguments: tag: D33
data_type: byte[16]
name: unpack_data
arguments: tag: D155
data_type: byte[16]
name: unpack_data
arguments: tag: D58
data_type: byte[16]
name: unpack_data
arguments: tag: D218
data_type: byte[8]
name: unpack_data
arguments: tag: D190
data_type: byte[16]
name: unpack_data
arguments: tag: D260
data_type: byte[8]

tool: {"D188": [0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0a,0x00,0x00,0x00]}

tool: {"D158": [0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xc8,0x00,0x00,0x00]}

tool: {"D114": [0xbc,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x0a,0x00,0x00,0x00]}

tool: {"D246": [0x11,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0a,0x00,0x00,0x00]}

tool: {"D122": [0x06,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x24,0x00,0x00,0x00]}

tool: {"D137": [0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x11,0x00,0x00,0x00]}

tool: {"D47": [0x13,0x00,0x00,0x00,0xd3,0x00,0x00,0x00]}

tool: {"D80": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

tool: {"D175": [0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D89": [0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D120": [0x01,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D141": [0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D57": [0x07,0x00,0x00,0x00,0xe8,0x03,0x00,0x00]}

tool: {"D117": [0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x05,0x00,0x00,0x00]}

tool: {"D22": [0x05,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x00,0x00]}

tool: {"D34": [0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D15": [0x02,0x00,0x00,0x00,0xfa,0xff,0xff,0xff,0x08,0x00,0x00,0x00,0xf6,0xff,0xff,0xff]}

tool: {"D131": [0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00]}

tool: {"D216": [0xbe,0xff,0xff,0xff,0x22,0x00,0x00,0x00,0xdd,0xff,0xff,0xff,0x42,0x00,0x00,0x00]}

tool: {"D238": [0xbc,0x02,0x00,0x00,0xea,0x03,0x00,0x00,0xac,0xff,0xff,0xff,0x0a,0x00,0x00,0x00]}

tool: {"D33": [0xec,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x11,0x00,0x00,0x00]}

tool: {"D155": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00]}

tool: {"D58": [0x01,0x00,0x00,0x00,0xd4,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D218": [0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D190": [0x03,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x9d,0xff,0xff,0xff,0x51,0x00,0x00,0x00]}

tool: {"D260": [0x63,0x60,0x01,0x00,0x00,0x00,0x00,0x00]}

assistant: ```c
int main() {
  {
    int values[] = {2, 6, 8, 10, 3};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 3;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {2, 6, 8, 200, 700, 1, 84, 10, 4};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 1;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {17, 6, 8, 10, 6, 12, 24, 36};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 17;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {2, 1, 7, 17, 19, 211, 7};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 2;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {1, 1, 1, 1, 1, 44, 7, 7, 7, 7, 7, 7, 7, 7};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 44;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 35, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 1000};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 1000;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {2, -6, 8, -10, -3};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = -3;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {2, 6, 8, 2, -66, 34, -35, 66, 700, 1002, -84, 10, 4};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = -35;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {-20, 1, 7, 17, 19, 211, 7};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = -20;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {1, 1, -1, 1, 1, -44, 7, 7, 7, 7, 7, 7, 7, 7};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = -44;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {1, 0, 0};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 1;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
  {
    int values[] = {3, 7, -99, 81, 90211, 0, 7};
    size_t count = sizeof(values) / sizeof(values[0]);
    int expected = 0;
    int received = find_outlier(values, count);
    assert(expected == received);
  }
}
```