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

```asm
<test_ulong>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x397,%r9d
  mov    $0x397,%r8d
  lea    D398(%rip),%rax
  mov    %rax,%rcx
  lea    D398(%rip),%rax
  mov    %rax,%rdx
  mov    $0x95,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_eq@plt>
  mov    %eax,%edx
  lea    D188(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %bl
  mov    $0x27fa,%r9d
  mov    $0x397,%r8d
  lea    D326(%rip),%rax
  mov    %rax,%rcx
  lea    D398(%rip),%rax
  mov    %rax,%rdx
  mov    $0x96,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_eq@plt>
  mov    %eax,%edx
  lea    D139(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  or     %ebx,%eax
  movzbl %al,%ebx
  mov    $0x42,%r9d
  mov    $0x1ffe,%r8d
  lea    D413(%rip),%rax
  mov    %rax,%rcx
  lea    D136(%rip),%rax
  mov    %rax,%rdx
  mov    $0x97,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_ne@plt>
  mov    %eax,%edx
  lea    D455(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x293b,%r9d
  mov    $0x293b,%r8d
  lea    D537(%rip),%rax
  mov    %rax,%rcx
  lea    D537(%rip),%rax
  mov    %rax,%rdx
  mov    $0x98,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_ne@plt>
  mov    %eax,%edx
  lea    D539(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0xf4240,%r9d
  mov    $0x27fa,%r8d
  lea    D19(%rip),%rax
  mov    %rax,%rcx
  lea    D326(%rip),%rax
  mov    %rax,%rdx
  mov    $0x99,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_lt@plt>
  mov    %eax,%edx
  lea    D347(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x27fa,%r9d
  mov    $0xf4240,%r8d
  lea    D326(%rip),%rax
  mov    %rax,%rcx
  lea    D19(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9a,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_lt@plt>
  mov    %eax,%edx
  lea    D439(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0xf4240,%r9d
  mov    $0x27fa,%r8d
  lea    D19(%rip),%rax
  mov    %rax,%rcx
  lea    D326(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9b,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_le@plt>
  mov    %eax,%edx
  lea    D216(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x186a0,%r9d
  mov    $0x186a0,%r8d
  lea    D121(%rip),%rax
  mov    %rax,%rcx
  lea    D121(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9c,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_le@plt>
  mov    %eax,%edx
  lea    D183(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x27fa,%r9d
  mov    $0xf4240,%r8d
  lea    D326(%rip),%rax
  mov    %rax,%rcx
  lea    D19(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9d,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_le@plt>
  mov    %eax,%edx
  lea    D270(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x16,%r9d
  mov    $0x5f5e100,%r8d
  lea    D9(%rip),%rax
  mov    %rax,%rcx
  lea    D169(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9e,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_gt@plt>
  mov    %eax,%edx
  lea    D63(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x5f5e100,%r9d
  mov    $0x16,%r8d
  lea    D169(%rip),%rax
  mov    %rax,%rcx
  lea    D9(%rip),%rax
  mov    %rax,%rdx
  mov    $0x9f,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_gt@plt>
  mov    %eax,%edx
  lea    D118(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x16,%r9d
  mov    $0x5f5e100,%r8d
  lea    D9(%rip),%rax
  mov    %rax,%rcx
  lea    D169(%rip),%rax
  mov    %rax,%rdx
  mov    $0xa0,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_ge@plt>
  mov    %eax,%edx
  lea    D276(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x293b,%r9d
  mov    $0x293b,%r8d
  lea    D537(%rip),%rax
  mov    %rax,%rcx
  lea    D537(%rip),%rax
  mov    %rax,%rdx
  mov    $0xa1,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_ge@plt>
  mov    %eax,%edx
  lea    D232(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %eax,%ebx
  mov    $0x5f5e100,%r9d
  mov    $0x16,%r8d
  lea    D169(%rip),%rax
  mov    %rax,%rcx
  lea    D9(%rip),%rax
  mov    %rax,%rdx
  mov    $0xa2,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <test_ulong_ge@plt>
  mov    %eax,%edx
  lea    D405(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <test_case@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  or     %ebx,%eax
  test   %eax,%eax
  jne    L17
  mov    $0x1,%eax
  jmp    L2
L17:
  nop
  mov    $0x0,%eax
L2:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D398
type: string
name: disassemble_data
arguments: tag: D8
type: string
name: disassemble_data
arguments: tag: D188
type: string
name: disassemble_data
arguments: tag: D326
type: string
name: disassemble_data
arguments: tag: D139
type: string
name: disassemble_data
arguments: tag: D413
type: string
name: disassemble_data
arguments: tag: D136
type: string
name: disassemble_data
arguments: tag: D455
type: string
name: disassemble_data
arguments: tag: D537
type: string
name: disassemble_data
arguments: tag: D539
type: string
name: disassemble_data
arguments: tag: D19
type: string
name: disassemble_data
arguments: tag: D347
type: string
name: disassemble_data
arguments: tag: D439
type: string
name: disassemble_data
arguments: tag: D216
type: string
name: disassemble_data
arguments: tag: D121
type: string
name: disassemble_data
arguments: tag: D183
type: string
name: disassemble_data
arguments: tag: D270
type: string
name: disassemble_data
arguments: tag: D9
type: string
name: disassemble_data
arguments: tag: D169
type: string
name: disassemble_data
arguments: tag: D63
type: string
name: disassemble_data
arguments: tag: D118
type: string
name: disassemble_data
arguments: tag: D276
type: string
name: disassemble_data
arguments: tag: D232
type: string
name: disassemble_data
arguments: tag: D405
type: string

tool: D398: 919ul

tool: D8: /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: D188: TEST_ulong_eq(919ul, 919ul)

tool: D326: 10234ul

tool: D139: TEST_ulong_eq(919ul, 10234ul)

tool: D413: 66ul

tool: D136: 8190ul

tool: D455: TEST_ulong_ne(8190ul, 66ul)

tool: D537: 10555ul

tool: D539: TEST_ulong_ne(10555ul, 10555ul)

tool: D19: 1000000ul

tool: D347: TEST_ulong_lt(10234ul, 1000000ul)

tool: D439: TEST_ulong_lt(1000000ul, 10234ul)

tool: D216: TEST_ulong_le(10234ul, 1000000ul)

tool: D121: 100000ul

tool: D183: TEST_ulong_le(100000ul, 100000ul)

tool: D270: TEST_ulong_le(1000000ul, 10234ul)

tool: D9: 22ul

tool: D169: 100000000ul

tool: D63: TEST_ulong_gt(100000000ul, 22ul)

tool: D118: TEST_ulong_gt(22ul, 100000000ul)

tool: D276: TEST_ulong_ge(100000000ul, 22ul)

tool: D232: TEST_ulong_ge(10555ul, 10555ul)

tool: D405: TEST_ulong_ge(22ul, 100000000ul)

assistant: ```c
int test_ulong(void) {
  if (!test_case((1), "TEST_ulong_eq(919ul, 919ul)", (test_ulong_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", 149, "919ul", "919ul", 919ul, 919ul))) | !test_case((0), "TEST_ulong_eq(919ul, 10234ul)", (test_ulong_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", 150, "919ul", "10234ul", 919ul, 10234ul))) | !test_case((1), "TEST_ulong_ne(8190ul, 66ul)", (test_ulong_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", 151, "8190ul", "66ul", 8190ul, 66ul))) | !test_case((0), "TEST_ulong_ne(10555ul, 10555ul)", (test_ulong_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", 152, "10555ul", "10555ul", 10555ul, 10555ul))) | !test_case((1), "TEST_ulong_lt(10234ul, 1000000ul)", (test_ulong_lt("/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", 153, "10234ul", "1000000ul", 10234ul, 1000000ul))) | !test_case((0), "TEST_ulong_lt(1000000ul, 10234ul)", (test_ulong_lt("/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", 154, "1000000ul", "10234ul", 1000000ul, 10234ul))) | !test_case((1), "TEST_ulong_le(10234ul, 1000000ul)", (test_ulong_le("/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", 155, "10234ul", "1000000ul", 10234ul, 1000000ul))) | !test_case((1), "TEST_ulong_le(100000ul, 100000ul)", (test_ulong_le("/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", 156, "100000ul", "100000ul", 100000ul, 100000ul))) | !test_case((0), "TEST_ulong_le(1000000ul, 10234ul)", (test_ulong_le("/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", 157, "1000000ul", "10234ul", 1000000ul, 10234ul))) | !test_case((1), "TEST_ulong_gt(100000000ul, 22ul)", (test_ulong_gt("/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", 158, "100000000ul", "22ul", 100000000ul, 22ul))) | !test_case((0), "TEST_ulong_gt(22ul, 100000000ul)", (test_ulong_gt("/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", 159, "22ul", "100000000ul", 22ul, 100000000ul))) | !test_case((1), "TEST_ulong_ge(100000000ul, 22ul)", (test_ulong_ge("/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", 160, "100000000ul", "22ul", 100000000ul, 22ul))) | !test_case((1), "TEST_ulong_ge(10555ul, 10555ul)", (test_ulong_ge("/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", 161, "10555ul", "10555ul", 10555ul, 10555ul))) | !test_case((0), "TEST_ulong_ge(22ul, 100000000ul)", (test_ulong_ge("/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", 162, "22ul", "100000000ul", 22ul, 100000000ul))))
    goto err;
  return 1;
err:
  return 0;
}
```