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

```asm
<test_arithmetic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r12
  push   %rbx
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%ebx
  mov    $0x0,%r12d
  lea    (%rbx,%r12,1),%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x24,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  cmp    %r12d,%ebx
  sete   %al
  movzbl %al,%eax
  mov    $0x25,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %r12d,%eax
  imul   %ebx,%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x26,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  add    $0x1,%eax
  cmp    $0x2,%eax
  setbe  %al
  movzbl %al,%eax
  mov    $0x27,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0x1,%ebx
  mov    $0x1,%r12d
  lea    (%rbx,%r12,1),%eax
  cmp    $0x2,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x2b,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  cmp    %r12d,%ebx
  sete   %al
  movzbl %al,%eax
  mov    $0x2c,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %r12d,%eax
  imul   %ebx,%eax
  cmp    $0x1,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x2d,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  add    $0x1,%eax
  cmp    $0x2,%eax
  setbe  %al
  movzbl %al,%eax
  mov    $0x2e,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  sar    $0x1f,%eax
  shr    $0x1f,%eax
  mov    %eax,%edx
  lea    (%rbx,%rdx,1),%eax
  and    $0x1,%eax
  sub    %edx,%eax
  cmp    $0x1,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x2f,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0x2,%ebx
  mov    $0x2,%r12d
  lea    (%rbx,%r12,1),%eax
  cmp    $0x4,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x33,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  lea    (%rbx,%rbx,1),%eax
  sub    %r12d,%eax
  cmp    $0x2,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x34,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %r12d,%eax
  imul   %ebx,%eax
  cmp    $0x4,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x35,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  sub    $0x2,%eax
  cmp    $0x1,%eax
  setbe  %al
  movzbl %al,%eax
  mov    $0x36,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  and    $0x1,%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x37,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0xb3,%ebx
  mov    $0xa,%r12d
  mov    %ebx,%eax
  imul   %r12d,%eax
  cmp    $0x6fe,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x3b,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  cmp    $0x11,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x3c,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  mov    %edx,%eax
  cmp    $0x9,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x3d,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0x1,%ebx
  mov    $0xffffffff,%r12d
  lea    (%rbx,%r12,1),%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x41,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  sub    %r12d,%eax
  cmp    $0x2,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x42,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  imul   %r12d,%eax
  cmp    $0xffffffff,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x43,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %r12d,%eax
  imul   %r12d,%eax
  cmp    $0x1,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x44,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0x7530,%ebx
  mov    $0xfffffffb,%r12d
  mov    %ebx,%eax
  imul   %r12d,%eax
  cmp    $0xfffdb610,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x48,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  cmp    $0xffffe890,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x49,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  mov    %edx,%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x4a,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    $0xffffff4d,%ebx
  mov    $0xa,%r12d
  mov    %ebx,%eax
  imul   %r12d,%eax
  cmp    $0xfffff902,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x4e,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  cmp    $0xffffffef,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x4f,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r12d
  mov    %edx,%eax
  cmp    $0xfffffff7,%eax
  sete   %al
  movzbl %al,%eax
  mov    $0x50,%edx
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <_assert@plt>
  nop
  pop    %rbx
  pop    %r12
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D188
data_type: string
name: extract_symbolic_data
arguments: label: D53
data_type: string

tool: D188: --- testing arithmetic


tool: D53: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c

assistant: ```c
void test_arithmetic(void) {
  register int i, j;
  puts("--- testing arithmetic\n");
  i = 0;
  j = 0;
  _assert((i + j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 36);
  _assert((i - j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 37);
  _assert((i * j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 38);
  _assert((i / 2 == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 39);
  i = 1;
  j = 1;
  _assert((i + j == 2), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 43);
  _assert((i - j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 44);
  _assert((i * j == 1), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 45);
  _assert((i / 2 == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 46);
  _assert((i % 2 == 1), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 47);
  i = 2;
  j = 2;
  _assert((i + j == 4), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 51);
  _assert((2 * i - j == 2), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 52);
  _assert((i * j == 4), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 53);
  _assert((i / 2 == 1), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 54);
  _assert((i % 2 == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 55);
  i = 179;
  j = 10;
  _assert((i * j == 1790), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 59);
  _assert((i / j == 17), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 60);
  _assert((i % j == 9), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 61);
  i = 1;
  j = -1;
  _assert((i + j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 65);
  _assert((i - j == 2), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 66);
  _assert((i * j == -1), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 67);
  _assert((j * j == 1), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 68);
  i = 30000;
  j = -5;
  _assert((i * j == -150000), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 72);
  _assert((i / j == -6000), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 73);
  _assert((i % j == 0), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 74);
  i = -179;
  j = 10;
  _assert((i * j == -1790), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 78);
  _assert((i / j == -17), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 79);
  _assert((i % j == -9), "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/BSVC/bsvc/refs/heads/master/samples/m68360/gcc5/test5.c", 80);
}
```