user: Please show me the C implementation that matches the assembly code listed below:

```asm
<test_pointer>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  movl   $0x0,0x14(%rsp)
  movb   $0x1,0x13(%rsp)
  lea    0x13(%rsp),%r13
  mov    %r13,%rcx
  lea    D99(%rip),%r12
  mov    %r12,%rdx
  mov    $0xdd,%esi
  lea    D16(%rip),%rbx
  mov    %rbx,%rdi
  call   <test_ptr@plt>
  mov    %eax,%edx
  lea    D115(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  mov    %eax,%r14d
  mov    $0x0,%ecx
  lea    D172(%rip),%rbp
  mov    %rbp,%rdx
  mov    $0xde,%esi
  mov    %rbx,%rdi
  call   <test_ptr@plt>
  mov    %eax,%edx
  lea    D86(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %r14d,%r14d
  sete   %r14b
  test   %eax,%eax
  sete   %al
  or     %eax,%r14d
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    $0xdf,%esi
  mov    %rbx,%rdi
  call   <test_ptr_null@plt>
  mov    %eax,%edx
  lea    D54(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %r15b
  or     %r14d,%r15d
  mov    $0x0,%ecx
  mov    %rbp,%rdx
  mov    $0xe0,%esi
  mov    %rbx,%rdi
  call   <test_ptr_null@plt>
  mov    %eax,%edx
  lea    D97(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %r14b
  or     %r15d,%r14d
  mov    $0x0,%r9d
  mov    $0x0,%r8d
  mov    %rbp,%rcx
  mov    %rbp,%rdx
  mov    $0xe1,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_eq@plt>
  mov    %eax,%edx
  lea    D114(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %r15b
  or     %r14d,%r15d
  mov    %r13,%r9
  mov    $0x0,%r8d
  mov    %r12,%rcx
  mov    %rbp,%rdx
  mov    $0xe2,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_eq@plt>
  mov    %eax,%edx
  lea    D10(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %r14b
  or     %r15d,%r14d
  mov    $0x0,%r9d
  mov    %r13,%r8
  mov    %rbp,%rcx
  mov    %r12,%rdx
  mov    $0xe3,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_eq@plt>
  mov    %eax,%edx
  lea    D69(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     %r14d,%eax
  mov    %al,0xf(%rsp)
  lea    0x14(%rsp),%r15
  mov    %r15,%r9
  mov    %r13,%r8
  lea    D5(%rip),%r14
  mov    %r14,%rcx
  mov    %r12,%rdx
  mov    $0xe4,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_eq@plt>
  mov    %eax,%edx
  lea    D63(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     0xf(%rsp),%al
  mov    %al,0xf(%rsp)
  mov    %r15,%r9
  mov    %r15,%r8
  mov    %r14,%rcx
  mov    %r14,%rdx
  mov    $0xe5,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_eq@plt>
  mov    %eax,%edx
  lea    D91(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     0xf(%rsp),%al
  mov    %al,0xf(%rsp)
  mov    $0x0,%r9d
  mov    $0x0,%r8d
  mov    %rbp,%rcx
  mov    %rbp,%rdx
  mov    $0xe6,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_ne@plt>
  mov    %eax,%edx
  lea    D53(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     0xf(%rsp),%al
  mov    %al,0xf(%rsp)
  mov    %r13,%r9
  mov    $0x0,%r8d
  mov    %r12,%rcx
  mov    %rbp,%rdx
  mov    $0xe7,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_ne@plt>
  mov    %eax,%edx
  lea    D94(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     0xf(%rsp),%al
  mov    %al,0xf(%rsp)
  mov    $0x0,%r9d
  mov    %r13,%r8
  mov    %rbp,%rcx
  mov    %r12,%rdx
  mov    $0xe8,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_ne@plt>
  mov    %eax,%edx
  lea    D107(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %bpl
  or     0xf(%rsp),%bpl
  mov    %r15,%r9
  mov    %r13,%r8
  mov    %r14,%rcx
  mov    %r12,%rdx
  mov    $0xe9,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_ne@plt>
  mov    %eax,%edx
  lea    D122(%rip),%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     %eax,%ebp
  mov    %r15,%r9
  mov    %r15,%r8
  mov    %r14,%rcx
  mov    %r14,%rdx
  mov    $0xea,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <test_ptr_ne@plt>
  mov    %eax,%edx
  lea    D36(%rip),%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     %ebp,%eax
  xor    $0x1,%eax
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L8
  movzbl %al,%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L8:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D99
type_infered: string
name: disassemble_data
arguments: data_label: D16
type_infered: string
name: disassemble_data
arguments: data_label: D115
type_infered: string
name: disassemble_data
arguments: data_label: D172
type_infered: string
name: disassemble_data
arguments: data_label: D86
type_infered: string
name: disassemble_data
arguments: data_label: D54
type_infered: string
name: disassemble_data
arguments: data_label: D97
type_infered: string
name: disassemble_data
arguments: data_label: D114
type_infered: string
name: disassemble_data
arguments: data_label: D10
type_infered: string
name: disassemble_data
arguments: data_label: D69
type_infered: string
name: disassemble_data
arguments: data_label: D5
type_infered: string
name: disassemble_data
arguments: data_label: D63
type_infered: string
name: disassemble_data
arguments: data_label: D91
type_infered: string
name: disassemble_data
arguments: data_label: D53
type_infered: string
name: disassemble_data
arguments: data_label: D94
type_infered: string
name: disassemble_data
arguments: data_label: D107
type_infered: string
name: disassemble_data
arguments: data_label: D122
type_infered: string
name: disassemble_data
arguments: data_label: D36
type_infered: string

tool: D99: &y

tool: D16: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c

tool: D115: TEST_ptr(&y)

tool: D172: NULL

tool: D86: TEST_ptr(NULL)

tool: D54: TEST_ptr_null(&y)

tool: D97: TEST_ptr_null(NULL)

tool: D114: TEST_ptr_eq(NULL, NULL)

tool: D10: TEST_ptr_eq(NULL, &y)

tool: D69: TEST_ptr_eq(&y, NULL)

tool: D5: &x

tool: D63: TEST_ptr_eq(&y, &x)

tool: D91: TEST_ptr_eq(&x, &x)

tool: D53: TEST_ptr_ne(NULL, NULL)

tool: D94: TEST_ptr_ne(NULL, &y)

tool: D107: TEST_ptr_ne(&y, NULL)

tool: D122: TEST_ptr_ne(&y, &x)

tool: D36: TEST_ptr_ne(&x, &x)

assistant: ```c
int test_pointer(void) {
  int x = 0;
  char y = 1;
  if (!test_case((1), "TEST_ptr(&y)", (test_ptr("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 221, "&y", &y))) | !test_case((0), "TEST_ptr(NULL)", (test_ptr("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 222, "NULL", NULL))) | !test_case((0), "TEST_ptr_null(&y)", (test_ptr_null("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 223, "&y", &y))) | !test_case((1), "TEST_ptr_null(NULL)", (test_ptr_null("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 224, "NULL", NULL))) | !test_case((1), "TEST_ptr_eq(NULL, NULL)", (test_ptr_eq("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 225, "NULL", "NULL", NULL, NULL))) | !test_case((0), "TEST_ptr_eq(NULL, &y)", (test_ptr_eq("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 226, "NULL", "&y", NULL, &y))) | !test_case((0), "TEST_ptr_eq(&y, NULL)", (test_ptr_eq("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 227, "&y", "NULL", &y, NULL))) | !test_case((0), "TEST_ptr_eq(&y, &x)", (test_ptr_eq("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 228, "&y", "&x", &y, &x))) | !test_case((1), "TEST_ptr_eq(&x, &x)", (test_ptr_eq("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 229, "&x", "&x", &x, &x))) | !test_case((0), "TEST_ptr_ne(NULL, NULL)", (test_ptr_ne("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 230, "NULL", "NULL", NULL, NULL))) | !test_case((1), "TEST_ptr_ne(NULL, &y)", (test_ptr_ne("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 231, "NULL", "&y", NULL, &y))) | !test_case((1), "TEST_ptr_ne(&y, NULL)", (test_ptr_ne("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 232, "&y", "NULL", &y, NULL))) | !test_case((1), "TEST_ptr_ne(&y, &x)", (test_ptr_ne("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 233, "&y", "&x", &y, &x))) | !test_case((0), "TEST_ptr_ne(&x, &x)", (test_ptr_ne("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/test_test.c", 234, "&x", "&x", &x, &x))))
    goto err;
  return 1;
err:
  return 0;
}
```