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

```asm
<tst_doublesize>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x2,%ebx
  mov    $0x0,%r12d
  lea    D162(%rip),%r14
  lea    D154(%rip),%r13
  jmp    L25
L43:
  lea    D68(%rip),%rdi
  call   <rm@plt>
  lea    D232(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L34
L29:
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
L0:
  add    $0x1,%ebp
L17:
  mov    $0x6,%esi
  mov    $0x15,%edi
  call   <cup@plt>
  cmp    $0x1,%ebp
  je     L29
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  cmp    $0x1,%ebp
  jle    L0
  add    $0x1,%r12d
  add    $0xd,%ebx
  cmp    $0x2,%r12d
  je     L35
L25:
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  test   %r12d,%r12d
  je     L43
  lea    D68(%rip),%rdi
  call   <sm@plt>
  lea    D214(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L34:
  lea    -0x1(%rbx,%rbx,1),%ebp
  mov    %ebp,%esi
  mov    $0x5,%edi
  call   <cup@plt>
  lea    D257(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebp,%esi
  mov    $0x7,%edi
  call   <cup@plt>
  lea    D187(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    %ebx,%esi
  mov    $0x9,%edi
  call   <cup@plt>
  lea    D215(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    %ebx,%esi
  mov    $0xb,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  lea    D202(%rip),%r15
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x2,%edi
  call   <el@plt>
  lea    D125(%rip),%r15
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  mov    $0xf,%edi
  call   <cup@plt>
  mov    $0x0,%eax
  call   <decdwl@plt>
  mov    $0x0,%eax
  call   <decswl@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebp,%esi
  mov    $0x11,%edi
  call   <cup@plt>
  lea    D103(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x15,%edi
  call   <cup@plt>
  lea    D102(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%ebp
  jmp    L17
L35:
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x3,%edi
  call   <tbc@plt>
  mov    $0x11,%ebx
L72:
  mov    $0x8,%edi
  call   <cuf@plt>
  mov    $0x0,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L72
  lea    D68(%rip),%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x30,%esi
  mov    $0x0,%edi
  call   <scs@plt>
  mov    $0x1,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  lea    D158(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x9,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x9,%r9d
  mov    $0x9,%r8d
  mov    $0x9,%ecx
  mov    $0x9,%edx
  mov    $0x9,%esi
  lea    D66(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xb,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x9,%r9d
  mov    $0x9,%r8d
  mov    $0x9,%ecx
  mov    $0x9,%edx
  mov    $0x9,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  mov    $0x9,%r9d
  mov    $0x9,%r8d
  mov    $0x9,%ecx
  mov    $0x9,%edx
  mov    $0x9,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xd,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    $0x9,%r9d
  mov    $0x9,%r8d
  mov    $0x9,%ecx
  mov    $0x9,%edx
  mov    $0x9,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  lea    D172(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xf,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <decdhl@plt>
  lea    D71(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x11,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <decdhl@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x42,%esi
  mov    $0x0,%edi
  call   <scs@plt>
  lea    D250(%rip),%rdi
  call   <sgr@plt>
  mov    $0x3,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D183(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x3,%esi
  mov    $0xd,%edi
  call   <cup@plt>
  mov    $0x9,%edi
  call   <putchar@plt>
  mov    $0x6,%edi
  call   <cub@plt>
  lea    D128(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <sgr@plt>
  mov    $0x1,%esi
  mov    $0x16,%edi
  call   <cup@plt>
  lea    D255(%rip),%rdi
  call   <println@plt>
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x18,%esi
  mov    $0x8,%edi
  call   <decstbm@plt>
  mov    $0x1,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  mov    $0xc,%ebx
L14:
  mov    $0x0,%eax
  call   <ri@plt>
  sub    $0x1,%ebx
  jne    L14
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <decstbm@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D107(%rip),%rsi
  lea    D149(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D162
data_type: string
name: retrieve_data
arguments: data_label: D154
data_type: string
name: retrieve_data
arguments: data_label: D68
data_type: string
name: retrieve_data
arguments: data_label: D232
data_type: string
name: retrieve_data
arguments: data_label: D214
data_type: string
name: retrieve_data
arguments: data_label: D257
data_type: string
name: retrieve_data
arguments: data_label: D187
data_type: string
name: retrieve_data
arguments: data_label: D215
data_type: string
name: retrieve_data
arguments: data_label: D202
data_type: string
name: retrieve_data
arguments: data_label: D125
data_type: string
name: retrieve_data
arguments: data_label: D103
data_type: string
name: retrieve_data
arguments: data_label: D102
data_type: string
name: retrieve_data
arguments: data_label: D158
data_type: string
name: retrieve_data
arguments: data_label: D66
data_type: string
name: retrieve_data
arguments: data_label: D172
data_type: string
name: retrieve_data
arguments: data_label: D71
data_type: string
name: retrieve_data
arguments: data_label: D250
data_type: string
name: retrieve_data
arguments: data_label: D183
data_type: string
name: retrieve_data
arguments: data_label: D128
data_type: string
name: retrieve_data
arguments: data_label: D45
data_type: string
name: retrieve_data
arguments: data_label: D255
data_type: string
name: retrieve_data
arguments: data_label: D48
data_type: string
name: retrieve_data
arguments: data_label: D107
data_type: string
name: retrieve_data
arguments: data_label: D149
data_type: string

tool: D162: is not

tool: D154: **is**

tool: D68: ?3

tool: D232:  80 column mode

tool: D214: 132 column mode

tool: D257: v------- left margin

tool: D187: This is a normal-sized line

tool: D215: This is a Double-width line

tool: D202: This is a Double-width-and-height line

tool: D125: This is another such line

tool: D103: ^------- left margin

tool: D102: This is not a double-width line

tool: D158: lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk

tool: D66: x%c%c%c%c%cx

tool: D172: x                                      x

tool: D71: mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

tool: D250: 1;5

tool: D183: * The mad programmer strikes again * 

tool: D128: * The mad programmer strikes again *

tool: D45: 0

tool: D255: Another test pattern...  a frame with blinking bold text,

tool: D48: all in double-height double-width size. 

tool: D107: Exactly half of the box should remain. 

tool: D149: %s

assistant: ```c
tst_doublesize() {
  int col, i, w, w1;
  for (w = 0; w <= 1; w++) {
    w1 = 13 * w;
    ed(2);
    cup(1, 1);
    if (w) {
      sm("?3");
      printf("132 column mode");
    } else {
      rm("?3");
      printf(" 80 column mode");
    }
    cup(5, 3 + 2 * w1);
    printf("v------- left margin");
    cup(7, 3 + 2 * w1);
    printf("This is a normal-sized line");
    decdhl(0);
    decdhl(1);
    decdwl();
    decswl();
    cup(9, 2 + w1);
    printf("This is a Double-width line");
    decswl();
    decdhl(0);
    decdhl(1);
    decdwl();
    cup(11, 2 + w1);
    decdwl();
    decswl();
    decdhl(1);
    decdhl(0);
    printf("This is a Double-width-and-height line");
    cup(12, 2 + w1);
    decdwl();
    decswl();
    decdhl(0);
    decdhl(1);
    printf("This is a Double-width-and-height line");
    cup(14, 2 + w1);
    decdwl();
    decswl();
    decdhl(1);
    decdhl(0);
    el(2);
    printf("This is another such line");
    cup(15, 2 + w1);
    decdwl();
    decswl();
    decdhl(0);
    decdhl(1);
    printf("This is another such line");
    cup(17, 3 + 2 * w1);
    printf("^------- left margin");
    cup(21, 1);
    printf("This is not a double-width line");
    for (i = 0; i <= 1; i++) {
      cup(21, 6);
      if (i) {
        printf("**is**");
        decdwl();
      } else {
        printf("is not");
        decswl();
      }
      cup(23, 1);
      holdit();
    }
  }
  cup(1, 1);
  tbc(3);
  for (col = 1; col <= 132; col += 8) {
    cuf(8);
    hts();
  }
  rm("?3");
  ed(2);
  scs(0, '0');
  cup(8, 1);
  decdhl(0);
  printf("lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk");
  cup(9, 1);
  decdhl(1);
  printf("lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk");
  cup(10, 1);
  decdhl(0);
  printf("x%c%c%c%c%cx", 9, 9, 9, 9, 9);
  cup(11, 1);
  decdhl(1);
  printf("x%c%c%c%c%cx", 9, 9, 9, 9, 9);
  cup(12, 1);
  decdhl(0);
  printf("x%c%c%c%c%cx", 9, 9, 9, 9, 9);
  cup(13, 1);
  decdhl(1);
  printf("x%c%c%c%c%cx", 9, 9, 9, 9, 9);
  cup(14, 1);
  decdhl(0);
  printf("x                                      x");
  cup(15, 1);
  decdhl(1);
  printf("x                                      x");
  cup(16, 1);
  decdhl(0);
  printf("mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj");
  cup(17, 1);
  decdhl(1);
  printf("mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj");
  scs(0, 'B');
  sgr("1;5");
  cup(12, 3);
  printf("* The mad programmer strikes again * ");
  cup(13, 3);
  printf("%c", 9);
  cub(6);
  printf("* The mad programmer strikes again *");
  sgr("0");
  cup(22, 1);
  println("Another test pattern...  a frame with blinking bold text,");
  printf("all in double-height double-width size. ");
  holdit();
  decstbm(8, 24);
  cup(8, 1);
  for (i = 1; i <= 12; i++)
    ri();
  decstbm(0, 0);
  cup(1, 1);
  printf("%s", "Exactly half of the box should remain. ");
  holdit();
}
```