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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xd8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0xc8(%rsp)
  xor    %eax,%eax
  lea    D343(%rip),%rdi
  call   <logComment@plt>
  lea    0x68(%rsp),%rax
  mov    %rax,(%rsp)
  mov    %rax,%rcx
  lea    D286(%rip),%r12
  mov    %r12,%rdx
  lea    D372(%rip),%rsi
  lea    D365(%rip),%rbx
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x70(%rsp),%rdx
  mov    %rdx,0x8(%rsp)
  mov    %rdx,%rcx
  mov    %r12,%rdx
  lea    D220(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x78(%rsp),%rsi
  mov    %rsi,0x10(%rsp)
  mov    %rsi,%rcx
  lea    D30(%rip),%rbp
  mov    %rbp,%rdx
  lea    D162(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x80(%rsp),%rdi
  mov    %rdi,0x18(%rsp)
  mov    %rdi,%rcx
  mov    %rbp,%rdx
  lea    D386(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x88(%rsp),%r10
  mov    %r10,0x20(%rsp)
  mov    %r10,%rcx
  mov    %rbp,%rdx
  lea    D394(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x90(%rsp),%r11
  mov    %r11,0x28(%rsp)
  mov    %r11,%rcx
  mov    %rbp,%rdx
  lea    D11(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0x98(%rsp),%r14
  mov    %r14,0x30(%rsp)
  mov    %r14,%rcx
  mov    %rbp,%rdx
  lea    D385(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0xa0(%rsp),%r15
  mov    %r15,0x38(%rsp)
  mov    %r15,%rcx
  mov    %rbp,%rdx
  lea    D439(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0xa8(%rsp),%r8
  mov    %r8,0x40(%rsp)
  mov    %r8,%rcx
  mov    %rbp,%rdx
  lea    D285(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0xb0(%rsp),%r9
  mov    %r9,0x48(%rsp)
  mov    %r9,%rcx
  mov    %rbp,%rdx
  lea    D168(%rip),%r15
  mov    %r15,%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0xb8(%rsp),%r13
  mov    %r13,0x58(%rsp)
  mov    %r13,%rcx
  mov    %rbp,%rdx
  lea    D150(%rip),%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  lea    0xc0(%rsp),%rax
  mov    %rax,0x50(%rsp)
  mov    %rax,%rcx
  mov    %rbp,%rdx
  lea    D257(%rip),%r14
  mov    %r14,%rsi
  mov    %rbx,%rdi
  call   <logVarInScope@plt>
  mov    $0x0,%eax
  call   <create@plt>
  mov    %rax,0x70(%rsp)
  mov    $0x39,%esi
  lea    D384(%rip),%rbx
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  lea    D109(%rip),%rdx
  push   %rdx
  lea    D396(%rip),%r13
  push   %r13
  mov    0x90(%rsp),%r9
  lea    D220(%rip),%r8
  mov    %r12,%rcx
  mov    0x28(%rsp),%rdx
  mov    $0x39,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0x70(%rsp),%r9
  mov    %r9,0x68(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  lea    D220(%rip),%rdi
  push   %rdi
  push   %r13
  lea    D372(%rip),%r8
  mov    %r12,%rcx
  mov    0x20(%rsp),%rdx
  mov    $0x39,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x3b,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    $0x1,%edi
  call   <node_malloc@plt>
  mov    %rax,0x80(%rsp)
  mov    $0x3b,%esi
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  lea    D422(%rip),%r13
  push   %r13
  lea    D374(%rip),%r12
  push   %r12
  mov    0xa0(%rsp),%r9
  lea    D386(%rip),%r8
  mov    %rbp,%rcx
  mov    0x38(%rsp),%rdx
  mov    $0x3b,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0x80(%rsp),%r9
  mov    %r9,0x78(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  lea    D386(%rip),%rdi
  push   %rdi
  push   %r12
  lea    D162(%rip),%r8
  mov    %rbp,%rcx
  mov    0x30(%rsp),%rdx
  mov    $0x3b,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x3c,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    $0x2,%edi
  call   <node_malloc@plt>
  mov    %rax,0x90(%rsp)
  mov    $0x3c,%esi
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  push   %r13
  push   %r12
  mov    0xb0(%rsp),%r9
  lea    D11(%rip),%r8
  mov    %rbp,%rcx
  mov    0x48(%rsp),%rdx
  mov    $0x3c,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0x90(%rsp),%r9
  mov    %r9,0x88(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  lea    D11(%rip),%rdi
  push   %rdi
  push   %r12
  lea    D394(%rip),%r8
  mov    %rbp,%rcx
  mov    0x40(%rsp),%rdx
  mov    $0x3c,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x3d,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    $0x3,%edi
  call   <node_malloc@plt>
  mov    %rax,0xa0(%rsp)
  mov    $0x3d,%esi
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  push   %r13
  push   %r12
  mov    0xc0(%rsp),%r9
  lea    D439(%rip),%r8
  mov    %rbp,%rcx
  mov    0x58(%rsp),%rdx
  mov    $0x3d,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0xa0(%rsp),%r9
  mov    %r9,0x98(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  lea    D439(%rip),%rdi
  push   %rdi
  push   %r12
  lea    D385(%rip),%r8
  mov    %rbp,%rcx
  mov    0x50(%rsp),%rdx
  mov    $0x3d,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x3e,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    $0x4,%edi
  call   <node_malloc@plt>
  mov    %rax,0xb0(%rsp)
  mov    $0x3e,%esi
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  push   %r13
  push   %r12
  mov    0xd0(%rsp),%r9
  mov    %r15,%r8
  mov    %rbp,%rcx
  mov    0x68(%rsp),%rdx
  mov    $0x3e,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0xb0(%rsp),%r9
  mov    %r9,0xa8(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  push   %r15
  push   %r12
  lea    D285(%rip),%r8
  mov    %rbp,%rcx
  mov    0x60(%rsp),%rdx
  mov    $0x3e,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x3f,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    $0x5,%edi
  call   <node_malloc@plt>
  mov    %rax,0xc0(%rsp)
  mov    $0x3f,%esi
  mov    %rbx,%rdi
  call   <logBlockEntry@plt>
  sub    $0x8,%rsp
  push   $0x0
  push   %r13
  push   %r12
  mov    0xe0(%rsp),%r9
  mov    %r14,%r8
  mov    %rbp,%rcx
  mov    0x70(%rsp),%rdx
  mov    $0x3f,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    0xc0(%rsp),%r9
  mov    %r9,0xb8(%rsp)
  sub    $0x8,%rsp
  push   $0x0
  push   %r14
  push   %r12
  lea    D150(%rip),%r8
  mov    %rbp,%rcx
  mov    0x78(%rsp),%r13
  mov    %r13,%rdx
  mov    $0x3f,%esi
  mov    %rbx,%rdi
  call   <logAssignNoOffset@plt>
  add    $0x20,%rsp
  mov    $0x40,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    0x78(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  call   <insertHead@plt>
  mov    $0xffffffff,%esi
  lea    D281(%rip),%rbp
  mov    %rbp,%rdi
  call   <logBlockEntry@plt>
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    $0x41,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    0x88(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  call   <insertHead@plt>
  mov    $0xffffffff,%esi
  mov    %rbp,%rdi
  call   <logBlockEntry@plt>
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    $0x42,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    0x98(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  call   <insertHead@plt>
  mov    $0xffffffff,%esi
  mov    %rbp,%rdi
  call   <logBlockEntry@plt>
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    $0x43,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    0xa8(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  call   <insertHead@plt>
  mov    $0xffffffff,%esi
  mov    %rbp,%rdi
  call   <logBlockEntry@plt>
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    $0x44,%esi
  mov    %rbx,%rdi
  call   <logBlockExit@plt>
  mov    0xb8(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  call   <insertHead@plt>
  mov    $0xffffffff,%esi
  mov    %rbp,%rdi
  call   <logBlockEntry@plt>
  mov    $0x0,%eax
  call   <dumpVarsOutOfScope@plt>
  mov    $0xffffffff,%esi
  mov    %rbp,%rdi
  call   <logBlockExit@plt>
  mov    (%rsp),%rsi
  lea    D372(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x8(%rsp),%rsi
  lea    D220(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x10(%rsp),%rsi
  lea    D162(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x18(%rsp),%rsi
  lea    D386(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x20(%rsp),%rsi
  lea    D394(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x28(%rsp),%rsi
  lea    D11(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x30(%rsp),%rsi
  lea    D385(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x38(%rsp),%rsi
  lea    D439(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x40(%rsp),%rsi
  lea    D285(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x48(%rsp),%rsi
  mov    %r15,%rdi
  call   <logVarOutOfScope@plt>
  mov    %r13,%rsi
  lea    D150(%rip),%rdi
  call   <logVarOutOfScope@plt>
  mov    0x50(%rsp),%rsi
  mov    %r14,%rdi
  call   <logVarOutOfScope@plt>
  lea    D161(%rip),%rdi
  call   <logComment@plt>
  mov    0xc8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L7
  mov    $0x0,%eax
  add    $0xd8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L7:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D343
datatype: string
name: extract_symbolic_data
arguments: tag: D286
datatype: string
name: extract_symbolic_data
arguments: tag: D372
datatype: string
name: extract_symbolic_data
arguments: tag: D365
datatype: string
name: extract_symbolic_data
arguments: tag: D220
datatype: string
name: extract_symbolic_data
arguments: tag: D30
datatype: string
name: extract_symbolic_data
arguments: tag: D162
datatype: string
name: extract_symbolic_data
arguments: tag: D386
datatype: string
name: extract_symbolic_data
arguments: tag: D394
datatype: string
name: extract_symbolic_data
arguments: tag: D11
datatype: string
name: extract_symbolic_data
arguments: tag: D385
datatype: string
name: extract_symbolic_data
arguments: tag: D439
datatype: string
name: extract_symbolic_data
arguments: tag: D285
datatype: string
name: extract_symbolic_data
arguments: tag: D168
datatype: string
name: extract_symbolic_data
arguments: tag: D150
datatype: string
name: extract_symbolic_data
arguments: tag: D257
datatype: string
name: extract_symbolic_data
arguments: tag: D384
datatype: string
name: extract_symbolic_data
arguments: tag: D109
datatype: string
name: extract_symbolic_data
arguments: tag: D396
datatype: string
name: extract_symbolic_data
arguments: tag: D422
datatype: string
name: extract_symbolic_data
arguments: tag: D374
datatype: string
name: extract_symbolic_data
arguments: tag: D281
datatype: string
name: extract_symbolic_data
arguments: tag: D161
datatype: string

tool: D343: Function Entered

tool: D286: struct dll *

tool: D372: dll

tool: D365: local

tool: D220: tmp

tool: D30: struct node *

tool: D162: n1

tool: D386: tmp___0

tool: D394: n2

tool: D11: tmp___1

tool: D385: n3

tool: D439: tmp___2

tool: D285: n4

tool: D168: tmp___3

tool: D150: n5

tool: D257: tmp___4

tool: D384: dll_2.c

tool: D109: create

tool: D396: struct dll

tool: D422: node_malloc

tool: D374: struct node

tool: 

tool: D161: Function Exited

assistant: ```c
int main(void) {
  struct dll *dll;
  struct dll *tmp;
  struct node *n1;
  struct node *tmp___0;
  struct node *n2;
  struct node *tmp___1;
  struct node *n3;
  struct node *tmp___2;
  struct node *n4;
  struct node *tmp___3;
  struct node *n5;
  struct node *tmp___4;
  {
    logComment("Function Entered");
    logVarInScope("local", "dll", "struct dll *", &dll);
    logVarInScope("local", "tmp", "struct dll *", &tmp);
    logVarInScope("local", "n1", "struct node *", &n1);
    logVarInScope("local", "tmp___0", "struct node *", &tmp___0);
    logVarInScope("local", "n2", "struct node *", &n2);
    logVarInScope("local", "tmp___1", "struct node *", &tmp___1);
    logVarInScope("local", "n3", "struct node *", &n3);
    logVarInScope("local", "tmp___2", "struct node *", &tmp___2);
    logVarInScope("local", "n4", "struct node *", &n4);
    logVarInScope("local", "tmp___3", "struct node *", &tmp___3);
    logVarInScope("local", "n5", "struct node *", &n5);
    logVarInScope("local", "tmp___4", "struct node *", &tmp___4);
    tmp = create();
    logBlockEntry("dll_2.c", 57);
    logAssignNoOffset("dll_2.c", 57, &tmp, "struct dll *", "tmp", tmp, "struct dll", "create", 0);
    dumpVarsOutOfScope();
    dll = tmp;
    logAssignNoOffset("dll_2.c", 57, &dll, "struct dll *", "dll", dll, "struct dll", "tmp", 0);
    logBlockExit("dll_2.c", 59);
    tmp___0 = node_malloc(1);
    logBlockEntry("dll_2.c", 59);
    logAssignNoOffset("dll_2.c", 59, &tmp___0, "struct node *", "tmp___0", tmp___0, "struct node", "node_malloc", 0);
    dumpVarsOutOfScope();
    n1 = tmp___0;
    logAssignNoOffset("dll_2.c", 59, &n1, "struct node *", "n1", n1, "struct node", "tmp___0", 0);
    logBlockExit("dll_2.c", 60);
    tmp___1 = node_malloc(2);
    logBlockEntry("dll_2.c", 60);
    logAssignNoOffset("dll_2.c", 60, &tmp___1, "struct node *", "tmp___1", tmp___1, "struct node", "node_malloc", 0);
    dumpVarsOutOfScope();
    n2 = tmp___1;
    logAssignNoOffset("dll_2.c", 60, &n2, "struct node *", "n2", n2, "struct node", "tmp___1", 0);
    logBlockExit("dll_2.c", 61);
    tmp___2 = node_malloc(3);
    logBlockEntry("dll_2.c", 61);
    logAssignNoOffset("dll_2.c", 61, &tmp___2, "struct node *", "tmp___2", tmp___2, "struct node", "node_malloc", 0);
    dumpVarsOutOfScope();
    n3 = tmp___2;
    logAssignNoOffset("dll_2.c", 61, &n3, "struct node *", "n3", n3, "struct node", "tmp___2", 0);
    logBlockExit("dll_2.c", 62);
    tmp___3 = node_malloc(4);
    logBlockEntry("dll_2.c", 62);
    logAssignNoOffset("dll_2.c", 62, &tmp___3, "struct node *", "tmp___3", tmp___3, "struct node", "node_malloc", 0);
    dumpVarsOutOfScope();
    n4 = tmp___3;
    logAssignNoOffset("dll_2.c", 62, &n4, "struct node *", "n4", n4, "struct node", "tmp___3", 0);
    logBlockExit("dll_2.c", 63);
    tmp___4 = node_malloc(5);
    logBlockEntry("dll_2.c", 63);
    logAssignNoOffset("dll_2.c", 63, &tmp___4, "struct node *", "tmp___4", tmp___4, "struct node", "node_malloc", 0);
    dumpVarsOutOfScope();
    n5 = tmp___4;
    logAssignNoOffset("dll_2.c", 63, &n5, "struct node *", "n5", n5, "struct node", "tmp___4", 0);
    logBlockExit("dll_2.c", 64);
    insertHead(dll, n1);
    logBlockEntry("", -1);
    dumpVarsOutOfScope();
    logBlockExit("dll_2.c", 65);
    insertHead(dll, n2);
    logBlockEntry("", -1);
    dumpVarsOutOfScope();
    logBlockExit("dll_2.c", 66);
    insertHead(dll, n3);
    logBlockEntry("", -1);
    dumpVarsOutOfScope();
    logBlockExit("dll_2.c", 67);
    insertHead(dll, n4);
    logBlockEntry("", -1);
    dumpVarsOutOfScope();
    logBlockExit("dll_2.c", 68);
    insertHead(dll, n5);
    logBlockEntry("", -1);
    dumpVarsOutOfScope();
    logBlockExit("", -1);
    {
      logVarOutOfScope("dll", &dll);
      logVarOutOfScope("tmp", &tmp);
      logVarOutOfScope("n1", &n1);
      logVarOutOfScope("tmp___0", &tmp___0);
      logVarOutOfScope("n2", &n2);
      logVarOutOfScope("tmp___1", &tmp___1);
      logVarOutOfScope("n3", &n3);
      logVarOutOfScope("tmp___2", &tmp___2);
      logVarOutOfScope("n4", &n4);
      logVarOutOfScope("tmp___3", &tmp___3);
      logVarOutOfScope("n5", &n5);
      logVarOutOfScope("tmp___4", &tmp___4);
      {
        logComment("Function Exited");
        return (0);
      }
    }
  }
}
```