user: What would the C source look like for the assembly code provided here:

```asm
<test_row_xy2d>:
  endbr64
  push   %r13
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x10,%edi
  push   %r12
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <row_xy2d@plt>
  mov    %eax,%r8d
  lea    D80(%rip),%rax
  test   %r8d,%r8d
  je     L64
L103:
  mov    0x8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L148
  add    $0x18,%rsp
  pop    %r12
  pop    %r13
  ret
  cs nopw 0x0(%rax,%rax,1)
L64:
  mov    $0xf,%edx
  xor    %esi,%esi
  mov    $0x10,%edi
  call   <row_xy2d@plt>
  mov    %eax,%r8d
  lea    D15(%rip),%rax
  cmp    $0xff,%r8d
  jne    L103
  mov    $0x10,%edx
  xor    %esi,%esi
  mov    $0x10,%edi
  call   <row_xy2d@plt>
  mov    %eax,%r8d
  lea    D4(%rip),%rax
  cmp    $0x100,%r8d
  jne    L103
  mov    $0x1f,%edx
  xor    %esi,%esi
  mov    $0x10,%edi
  call   <row_xy2d@plt>
  mov    %eax,%r8d
  lea    D86(%rip),%rax
  cmp    $0x1ff,%r8d
  jne    L103
  xor    %edx,%edx
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <row_xy2d@plt>
  mov    %eax,%r8d
  lea    D59(%rip),%rax
  cmp    $0x3,%r8d
  jne    L103
  lea    0x4(%rsp),%r13
  mov    %rsp,%r12
  xor    %esi,%esi
  mov    $0x10,%edi
  mov    %r12,%rdx
  mov    %r13,%rcx
  call   <row_d2xy@plt>
  mov    (%rsp),%edx
  or     0x4(%rsp),%edx
  lea    D8(%rip),%rax
  jne    L103
  mov    %r12,%rdx
  mov    %r13,%rcx
  mov    $0xff,%esi
  mov    $0x10,%edi
  call   <row_d2xy@plt>
  mov    (%rsp),%edx
  lea    D95(%rip),%rax
  test   %edx,%edx
  jne    L103
  cmpl   $0xf,0x4(%rsp)
  jne    L103
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    $0x100,%esi
  mov    $0x10,%edi
  call   <row_d2xy@plt>
  cmpl   $0x0,(%rsp)
  lea    D50(%rip),%rax
  jne    L103
  cmpl   $0x10,0x4(%rsp)
  jne    L103
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    $0x1ff,%esi
  mov    $0x10,%edi
  call   <row_d2xy@plt>
  cmpl   $0x0,(%rsp)
  lea    D2(%rip),%rax
  jne    L103
  cmpl   $0x1f,0x4(%rsp)
  jne    L103
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    $0x3,%esi
  mov    $0x10,%edi
  call   <row_d2xy@plt>
  cmpl   $0x1,(%rsp)
  lea    D32(%rip),%rax
  jne    L103
  xor    %edx,%edx
  cmpl   $0x0,0x4(%rsp)
  cmove  %rdx,%rax
  jmp    L103
L148:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D80
type: string
name: parse_data
arguments: data_label: D15
type: string
name: parse_data
arguments: data_label: D4
type: string
name: parse_data
arguments: data_label: D86
type: string
name: parse_data
arguments: data_label: D59
type: string
name: parse_data
arguments: data_label: D8
type: string
name: parse_data
arguments: data_label: D95
type: string
name: parse_data
arguments: data_label: D50
type: string
name: parse_data
arguments: data_label: D2
type: string
name: parse_data
arguments: data_label: D32
type: string

tool: D80: row_xy2d(16, 0, 0) != 0

tool: D15: row_xy2d(16, 0, 15) != 255

tool: D4: row_xy2d(16, 0, 16) != 255

tool: D86: row_xy2d(16, 0, 31) != 255

tool: D59: row_xy2d(16, 1, 0) != 0

tool: D8: row_d2xy(16, 0, x, y) -> (0, 0)

tool: D95: row_d2xy(16, 255, x, y) -> (0,15)

tool: D50: row_d2xy(16, 256, x, y) -> (0,16)

tool: D2: row_d2xy(16, 511, x, y) -> (0,31)

tool: D32: row_d2xy(16, 3, x, y) -> (1, 0)

assistant: ```c
char *test_row_xy2d() {
  do {
    if (!(row_xy2d(16, 0, 0) == 0))
      return "row_xy2d(16, 0, 0) != 0";
  } while (0);
  do {
    if (!(row_xy2d(16, 0, 15) == 255))
      return "row_xy2d(16, 0, 15) != 255";
  } while (0);
  do {
    if (!(row_xy2d(16, 0, 16) == 256))
      return "row_xy2d(16, 0, 16) != 255";
  } while (0);
  do {
    if (!(row_xy2d(16, 0, 31) == 511))
      return "row_xy2d(16, 0, 31) != 255";
  } while (0);
  do {
    if (!(row_xy2d(16, 1, 0) == 3))
      return "row_xy2d(16, 1, 0) != 0";
  } while (0);
  int x, y;
  row_d2xy(16, 0, &x, &y);
  do {
    if (!(x == 0 && y == 0))
      return "row_d2xy(16, 0, x, y) -> (0, 0)";
  } while (0);
  row_d2xy(16, 255, &x, &y);
  do {
    if (!(x == 0 && y == 15))
      return "row_d2xy(16, 255, x, y) -> (0,15)";
  } while (0);
  row_d2xy(16, 256, &x, &y);
  do {
    if (!(x == 0 && y == 16))
      return "row_d2xy(16, 256, x, y) -> (0,16)";
  } while (0);
  row_d2xy(16, 511, &x, &y);
  do {
    if (!(x == 0 && y == 31))
      return "row_d2xy(16, 511, x, y) -> (0,31)";
  } while (0);
  row_d2xy(16, 3, &x, &y);
  do {
    if (!(x == 1 && y == 0))
      return "row_d2xy(16, 3, x, y) -> (1, 0)";
  } while (0);
  return 0;
}
```