user: Converte this assembly snippet into its equivalent C code:

```asm
<parse_line>:
  endbr64
  push   %r15
  mov    $0x1,%r9d
  mov    $0x3,%r10d
  mov    $0x5,%r11d
  push   %r14
  mov    $0x664,%r15d
  xor    %r14d,%r14d
  push   %r13
  mov    %rdi,%r13
  push   %r12
  mov    %rsi,%r12
  xor    %esi,%esi
  push   %rbp
  push   %rbx
  movabs $0x730000000032726f,%rbx
  sub    $0x3e8,%rsp
  movdqa D153(%rip),%xmm0
  mov    %rdx,0x20(%rsp)
  mov    $0x1,%edx
  mov    %rcx,0x18(%rsp)
  mov    $0x3,%ecx
  mov    %r8,0x10(%rsp)
  mov    $0x73,%r8d
  mov    %fs:0x28,%rax
  mov    %rax,0x3d8(%rsp)
  xor    %eax,%eax
  movaps %xmm0,0x260(%rsp)
  movdqa D146(%rip),%xmm0
  movabs $0x6400000000000000,%rax
  movl   $0x0,0x270(%rsp)
  movups %xmm0,0x278(%rsp)
  movdqa D178(%rip),%xmm0
  movl   $0x0,0x274(%rsp)
  movaps %xmm0,0x290(%rsp)
  movdqa D91(%rip),%xmm0
  movl   $0x0,0x288(%rsp)
  movups %xmm0,0x2a8(%rsp)
  movdqa D14(%rip),%xmm0
  movl   $0x20,0x28c(%rsp)
  movl   $0x0,0x2a0(%rsp)
  movl   $0x40,0x2a4(%rsp)
  movl   $0x0,0x2b8(%rsp)
  movl   $0x60,0x2bc(%rsp)
  movl   $0x0,0x2d0(%rsp)
  movl   $0x80,0x2d4(%rsp)
  movaps %xmm0,0x2c0(%rsp)
  movdqa D162(%rip),%xmm0
  movdqa D87(%rip),%xmm1
  mov    %cx,0x162(%rsp)
  movabs $0x726f6c6f63,%rcx
  movups %xmm0,0x2d8(%rsp)
  movdqa D254(%rip),%xmm0
  movups %xmm1,0x14a(%rsp)
  movdqa D51(%rip),%xmm1
  movaps %xmm0,0x2f0(%rsp)
  movdqa D84(%rip),%xmm0
  movups %xmm1,0x1fa(%rsp)
  movdqa D26(%rip),%xmm1
  movups %xmm0,0x308(%rsp)
  movdqa D64(%rip),%xmm0
  mov    %rax,0x140(%rsp)
  mov    %dx,0x148(%rsp)
  mov    $0x1,%edx
  mov    %rax,0x15a(%rsp)
  mov    %rcx,0x164(%rsp)
  xor    %ecx,%ecx
  mov    %si,0x16c(%rsp)
  movabs $0x656c616373786574,%rsi
  mov    %r8w,0x16e(%rsp)
  xor    %r8d,%r8d
  mov    %rax,0x1f0(%rsp)
  mov    %r9w,0x1f8(%rsp)
  mov    $0x1,%r9d
  mov    %rax,0x20a(%rsp)
  mov    %r10w,0x212(%rsp)
  xor    %r10d,%r10d
  movaps %xmm0,0x130(%rsp)
  movaps %xmm0,0x1e0(%rsp)
  movl   $0x0,0x2e8(%rsp)
  movl   $0xa0,0x2ec(%rsp)
  movl   $0x0,0x300(%rsp)
  movl   $0xc0,0x304(%rsp)
  movl   $0x0,0x318(%rsp)
  movl   $0xe0,0x31c(%rsp)
  movb   $0x0,0x170(%rsp)
  movups %xmm1,0x214(%rsp)
  movdqa D192(%rip),%xmm1
  movaps %xmm0,0x70(%rsp)
  movdqa D98(%rip),%xmm0
  movups %xmm1,0x22e(%rsp)
  movdqa D257(%rip),%xmm1
  movups %xmm0,0x8a(%rsp)
  movaps %xmm1,0xb0(%rsp)
  movdqa D99(%rip),%xmm1
  movups %xmm0,0xca(%rsp)
  movups %xmm0,0x10a(%rsp)
  movdqa D245(%rip),%xmm0
  mov    %rbx,0x23e(%rsp)
  mov    $0x1,%ebx
  mov    %rsi,0x248(%rsp)
  mov    $0x1,%esi
  mov    %dx,0x88(%rsp)
  movabs $0x730000000000726f,%rdx
  mov    %rax,0x224(%rsp)
  mov    %r11w,0x22c(%rsp)
  mov    $0x1,%r11d
  mov    %bx,0x246(%rsp)
  xor    %ebx,%ebx
  mov    %r14w,0x250(%rsp)
  mov    $0x264,%r14d
  mov    %r15w,0x252(%rsp)
  mov    $0x1,%r15d
  mov    %rax,0x80(%rsp)
  mov    %rdx,0x9a(%rsp)
  mov    %cx,0xa2(%rsp)
  mov    $0x5,%ecx
  mov    %rax,0xc0(%rsp)
  mov    %si,0xc8(%rsp)
  xor    %esi,%esi
  mov    %rdx,0xda(%rsp)
  mov    %r8w,0xe2(%rsp)
  mov    $0x664,%r8d
  mov    %rax,0x100(%rsp)
  mov    %r9w,0x108(%rsp)
  mov    %rdx,0x11a(%rsp)
  mov    $0x3,%edx
  mov    %r10w,0x122(%rsp)
  movaps %xmm1,0xf0(%rsp)
  movb   $0x0,0x254(%rsp)
  movaps %xmm0,0x40(%rsp)
  movaps %xmm0,0x180(%rsp)
  movdqa D89(%rip),%xmm0
  mov    %bx,0x62(%rsp)
  movups %xmm0,0x19a(%rsp)
  movdqa D16(%rip),%xmm0
  mov    %rax,0x50(%rsp)
  mov    %r11w,0x58(%rsp)
  movq   $0x7a,0x5a(%rsp)
  mov    %r14w,0x64(%rsp)
  movb   $0x0,0x66(%rsp)
  mov    %rax,0x190(%rsp)
  mov    %r15w,0x198(%rsp)
  mov    %rax,0x1aa(%rsp)
  mov    %dx,0x1b2(%rsp)
  mov    %rax,0x1c4(%rsp)
  mov    %cx,0x1cc(%rsp)
  movq   $0x746f72,0x1ce(%rsp)
  mov    %si,0x1d6(%rsp)
  mov    %r8w,0x1d8(%rsp)
  movb   $0x0,0x1da(%rsp)
  movups %xmm0,0x1b4(%rsp)
  call   <strlen@plt>
  mov    %eax,0xc(%rsp)
  mov    %rax,%rbx
  cltq
  cmpb   $0x29,-0x1(%r13,%rax,1)
  jne    L1328
  movzbl 0x0(%r13),%eax
  cmp    $0x28,%al
  je     L1199
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x330(%rsp)
  movzbl 0x1(%r13),%eax
  cmp    $0x28,%al
  je     L1403
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x331(%rsp)
  movzbl 0x2(%r13),%eax
  cmp    $0x28,%al
  je     L1256
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x332(%rsp)
  movzbl 0x3(%r13),%eax
  cmp    $0x28,%al
  je     L43
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x333(%rsp)
  movzbl 0x4(%r13),%eax
  cmp    $0x28,%al
  je     L1244
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x334(%rsp)
  movzbl 0x5(%r13),%eax
  cmp    $0x28,%al
  je     L138
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x335(%rsp)
  movzbl 0x6(%r13),%eax
  cmp    $0x28,%al
  je     L540
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x336(%rsp)
  movzbl 0x7(%r13),%eax
  cmp    $0x28,%al
  je     L386
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x337(%rsp)
  movzbl 0x8(%r13),%eax
  cmp    $0x28,%al
  je     L561
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x338(%rsp)
  movzbl 0x9(%r13),%eax
  cmp    $0x28,%al
  je     L529
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x339(%rsp)
  movzbl 0xa(%r13),%eax
  cmp    $0x28,%al
  je     L1090
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x33a(%rsp)
  movzbl 0xb(%r13),%eax
  cmp    $0x28,%al
  je     L662
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x33b(%rsp)
  movzbl 0xc(%r13),%eax
  cmp    $0x28,%al
  je     L1673
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x33c(%rsp)
  movzbl 0xd(%r13),%eax
  cmp    $0x28,%al
  je     L1416
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x33d(%rsp)
  movzbl 0xe(%r13),%eax
  cmp    $0x28,%al
  je     L1625
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L569
  mov    %al,0x33e(%rsp)
  movzbl 0xf(%r13),%eax
  cmp    $0x28,%al
  je     L835
  sub    $0x61,%eax
  cmp    $0x19,%al
  seta   %al
  movzbl %al,%eax
  sub    $0x8,%eax
L1079:
  mov    0x3d8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L554
  add    $0x3e8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L569:
  mov    $0xfffffff9,%eax
  jmp    L1079
L529:
  mov    $0x9,%eax
  nopl   0x0(%rax)
L486:
  lea    0x330(%rsp),%r15
  movb   $0x0,0x330(%rsp,%rax,1)
  lea    D201(%rip),%rsi
  mov    %r15,%rdi
  lea    0x1(%rax),%r14d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L978
  lea    D256(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L604
  lea    D82(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L379
  lea    D58(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1494
  mov    $0x8,%edx
  lea    D196(%rip),%rsi
  mov    %r15,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L1245
  lea    D199(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1512
  lea    D252(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1190
  lea    D149(%rip),%rsi
  mov    %r15,%rdi
  call   <strcmp@plt>
  mov    %eax,%r8d
  mov    $0xfffffff6,%eax
  test   %r8d,%r8d
  jne    L1079
  lea    0xf0(%rsp),%rsi
  mov    $0x3,%eax
  mov    %rsi,0x28(%rsp)
L1285:
  mov    0x20(%rsp),%rdi
  movl   $0x4,0x20(%rsp)
  mov    %eax,(%rdi)
  movl   $0x5,(%r12)
  cmp    %r14d,%ebx
  jle    L1485
  nopl   0x0(%rax)
L310:
  movl   $0x0,0x38(%rsp)
  movslq %r14d,%rbx
  xor    %eax,%eax
  lea    0x380(%rsp),%r15
  jmp    L1106
  nopw   0x0(%rax,%rax,1)
L1641:
  movslq %eax,%rsi
  lea    0x1(%rax),%edi
  mov    %dl,0x380(%rsp,%rsi,1)
  cmp    $0x4a,%eax
  je     L356
  movslq %edi,%rax
L550:
  add    $0x1,%rbx
  cmp    %ebx,0xc(%rsp)
  jle    L1485
L1106:
  movzbl 0x0(%r13,%rbx,1),%edx
  cmp    $0x3b,%dl
  je     L492
  cmp    $0x29,%dl
  jne    L1641
  mov    0xc(%rsp),%ecx
  lea    -0x1(%rcx),%esi
  cmp    %ebx,%esi
  jne    L1641
L492:
  movb   $0x0,0x380(%rsp,%rax,1)
  movzbl 0x380(%rsp),%eax
  test   %al,%al
  je     L607
  cmp    $0x3d,%al
  je     L607
  xor    %r14d,%r14d
  xor    %r12d,%r12d
  jmp    L1658
  nopw   0x0(%rax,%rax,1)
L1005:
  cmp    $0xa,%r14
  je     L1004
  cmp    $0x3d,%al
  je     L307
  mov    %al,0x326(%rsp,%r14,1)
L999:
  add    $0x1,%r14
L1658:
  mov    %r15,%rdi
  call   <strlen@plt>
  cmp    %r14,%rax
  jbe    L1709
  movzbl (%r15,%r14,1),%eax
  test   %r12d,%r12d
  je     L1005
  movslq %ebp,%rdx
  lea    0x1(%rbp),%ecx
  mov    %al,0x340(%rsp,%rdx,1)
  cmp    $0x3f,%ebp
  je     L1097
  mov    %ecx,%ebp
  jmp    L999
  nopw   0x0(%rax,%rax,1)
L307:
  movb   $0x0,0x326(%rsp,%r14,1)
  xor    %ebp,%ebp
  mov    $0x1,%r12d
  jmp    L999
  nopl   0x0(%rax,%rax,1)
L1004:
  mov    $0xffffffe2,%eax
  jmp    L1079
  nopw   0x0(%rax,%rax,1)
L1709:
  mov    0x28(%rsp),%r14
  lea    0x326(%rsp),%r12
  movslq %ebp,%rax
  mov    %r12,%rdi
  movb   $0x0,0x340(%rsp,%rax,1)
  mov    %r14,%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L195
  lea    0xd(%r14),%rdx
  mov    %r12,%rdi
  mov    %rdx,%rsi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  lea    0x1a(%r14),%rdx
  mov    %r12,%rdi
  mov    %rdx,%rsi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x3,0x20(%rsp)
  lea    0x27(%r14),%rdx
  je     L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x4,0x20(%rsp)
  lea    0x34(%r14),%rdx
  je     L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x5,0x20(%rsp)
  lea    0x41(%r14),%rdx
  je     L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x6,0x20(%rsp)
  lea    0x4e(%r14),%rdx
  je     L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x7,0x20(%rsp)
  lea    0x5b(%r14),%rdx
  je     L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
  cmpl   $0x9,0x20(%rsp)
  lea    0x68(%r14),%rdx
  jne    L122
  mov    %rdx,%rsi
  mov    %r12,%rdi
  mov    %rdx,0x30(%rsp)
  call   <strcmp@plt>
  mov    0x30(%rsp),%rdx
  test   %eax,%eax
  je     L446
L122:
  mov    $0xffffffe0,%eax
  jmp    L1079
L195:
  mov    %r14,%rdx
L446:
  cmpb   $0x0,0xc(%rdx)
  jne    L588
  cmpb   $0x64,0xa(%rdx)
  je     L1691
  mov    0x260(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L388
L215:
  movzwl 0x26a(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L1113
L306:
  mov    0x278(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L50
  movzwl 0x282(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L1283
L286:
  mov    0x290(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L1395
L71:
  movzwl 0x29a(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L879
L401:
  mov    0x2a8(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L670
L1242:
  movzwl 0x2b2(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L1621
L693:
  mov    0x2c0(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L694
L1189:
  movzwl 0x2ca(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L944
L65:
  mov    0x2d8(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L87
L1573:
  movzwl 0x2e2(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L437
L1250:
  mov    0x2f0(%rsp),%rax
  cmp    %rax,0x340(%rsp)
  je     L1585
  movzwl 0x2fa(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L146
L628:
  mov    0x308(%rsp),%eax
  cmp    %eax,0x340(%rsp)
  je     L1121
L982:
  movzwl 0x312(%rsp),%eax
  cmp    %ax,0x340(%rsp)
  je     L393
L956:
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  je     L1289
L337:
  movzbl 0xb(%rdx),%eax
  mov    0x10(%rsp),%rdi
  movl   $0x1,0x38(%rsp)
  movzbl 0x3f(%rsp),%ecx
  mov    %cl,(%rdi,%rax,1)
L1183:
  movb   $0x1,0xc(%rdx)
  xor    %eax,%eax
  jmp    L550
  nopl   0x0(%rax)
L978:
  lea    0x130(%rsp),%rdi
  movl   $0x5,0x20(%rsp)
  mov    $0x3,%eax
  mov    %rdi,0x28(%rsp)
L417:
  mov    %eax,(%r12)
  cmp    %r14d,%ebx
  jg     L310
L1639:
  mov    $0xfffffff2,%eax
  jmp    L1079
L604:
  lea    0x1e0(%rsp),%rdi
  movl   $0x9,0x20(%rsp)
  mov    $0x4,%eax
  mov    %rdi,0x28(%rsp)
  jmp    L417
L1097:
  mov    $0xffffffe1,%eax
  jmp    L1079
L1691:
  lea    0x340(%rsp),%r12
  xor    %eax,%eax
  mov    %rdx,0x30(%rsp)
  mov    %r12,%rdi
  call   <is_double@plt>
  test   %eax,%eax
  je     L323
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <atof@plt>
  pxor   %xmm0,%xmm0
  mov    0x30(%rsp),%rdx
  mov    0x18(%rsp),%rdi
  mov    %eax,%r8d
  cvtsi2sd %r8d,%xmm0
  movzbl 0xb(%rdx),%eax
  movsd  %xmm0,(%rdi,%rax,8)
  jmp    L1183
L379:
  lea    0x180(%rsp),%rsi
  movl   $0x7,0x20(%rsp)
  mov    $0x1,%eax
  mov    %rsi,0x28(%rsp)
  jmp    L417
L1199:
  xor    %eax,%eax
  jmp    L486
L1403:
  mov    $0x1,%eax
  jmp    L486
L1256:
  mov    $0x2,%eax
  jmp    L486
L43:
  mov    $0x3,%eax
  jmp    L486
L1485:
  mov    0x28(%rsp),%rax
  cmpb   $0x0,0xc(%rax)
  je     L1639
  cmpb   $0x0,0x19(%rax)
  je     L1639
  cmpb   $0x0,0x26(%rax)
  je     L1639
  mov    0x20(%rsp),%ebx
  cmp    $0x3,%ebx
  je     L251
  cmpb   $0x0,0x33(%rax)
  je     L1639
  cmp    $0x4,%ebx
  je     L251
  cmpb   $0x0,0x40(%rax)
  je     L1639
  cmp    $0x5,%ebx
  je     L251
  cmpb   $0x0,0x4d(%rax)
  je     L1639
  cmp    $0x6,%ebx
  je     L251
  cmpb   $0x0,0x5a(%rax)
  je     L1639
  cmp    $0x7,%ebx
  je     L251
  cmpb   $0x0,0x67(%rax)
  je     L1639
  cmp    $0x9,%ebx
  jne    L251
  cmpb   $0x1,0x74(%rax)
  sbb    %eax,%eax
  and    $0xfffffff2,%eax
  jmp    L1079
L1244:
  mov    $0x4,%eax
  jmp    L486
L1494:
  lea    0x40(%rsp),%rcx
  movl   $0x3,0x20(%rsp)
  mov    $0x2,%eax
  mov    %rcx,0x28(%rsp)
  jmp    L417
L1283:
  movzbl 0x284(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L286
L50:
  movb   $0x20,0x3f(%rsp)
  jmp    L337
L138:
  mov    $0x5,%eax
  jmp    L486
L540:
  mov    $0x6,%eax
  jmp    L486
L356:
  mov    $0xfffffffc,%eax
  jmp    L1079
L386:
  mov    $0x7,%eax
  jmp    L486
L388:
  movzwl 0x264(%rsp),%eax
  cmp    %ax,0x344(%rsp)
  jne    L215
L916:
  movb   $0x0,0x3f(%rsp)
  jmp    L337
L1113:
  movzbl 0x26c(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L306
  jmp    L916
L1328:
  mov    $0xfffffff3,%eax
  jmp    L1079
L561:
  mov    $0x8,%eax
  jmp    L486
L146:
  movzbl 0x2fc(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L628
L1585:
  movb   $0xc0,0x3f(%rsp)
  jmp    L337
L879:
  movzbl 0x29c(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L401
L203:
  movb   $0x40,0x3f(%rsp)
  jmp    L337
L1395:
  movzwl 0x294(%rsp),%eax
  cmp    %ax,0x344(%rsp)
  jne    L71
  jmp    L203
L1512:
  lea    0x70(%rsp),%rcx
  mov    $0x1,%eax
  mov    %rcx,0x28(%rsp)
  jmp    L1285
L670:
  movzbl 0x2ac(%rsp),%eax
  cmp    %al,0x344(%rsp)
  jne    L1242
L808:
  movb   $0x60,0x3f(%rsp)
  jmp    L337
L1090:
  mov    $0xa,%eax
  jmp    L486
L694:
  movzwl 0x2c4(%rsp),%eax
  cmp    %ax,0x344(%rsp)
  jne    L1189
  movzbl 0x2c6(%rsp),%eax
  cmp    %al,0x346(%rsp)
  jne    L1189
L190:
  movb   $0x80,0x3f(%rsp)
  jmp    L337
L1621:
  movzbl 0x2b4(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L693
  jmp    L808
L944:
  movzbl 0x2cc(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L65
  jmp    L190
L662:
  mov    $0xb,%eax
  jmp    L486
L437:
  movzbl 0x2e4(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L1250
L703:
  movb   $0xa0,0x3f(%rsp)
  jmp    L337
L87:
  movzbl 0x2dc(%rsp),%eax
  cmp    %al,0x344(%rsp)
  jne    L1573
  jmp    L703
L1673:
  mov    $0xc,%eax
  jmp    L486
L1416:
  mov    $0xd,%eax
  jmp    L486
L1121:
  movzwl 0x30c(%rsp),%eax
  cmp    %ax,0x344(%rsp)
  jne    L982
L915:
  movb   $0xe0,0x3f(%rsp)
  jmp    L337
L393:
  movzbl 0x314(%rsp),%eax
  cmp    %al,0x342(%rsp)
  jne    L956
  jmp    L915
L1625:
  mov    $0xe,%eax
  jmp    L486
L835:
  mov    $0xf,%eax
  jmp    L486
L1190:
  lea    0xb0(%rsp),%rsi
  mov    $0x2,%eax
  mov    %rsi,0x28(%rsp)
  jmp    L1285
L607:
  mov    $0xffffffde,%eax
  jmp    L1079
L251:
  xor    %eax,%eax
  jmp    L1079
L588:
  mov    $0xffffffdf,%eax
  jmp    L1079
L1289:
  mov    $0xffffffe8,%eax
  jmp    L1079
L554:
  call   <__stack_chk_fail@plt>
L1245:
  mov    $0xfffffff6,%eax
  jmp    L1079
L323:
  mov    $0xfffffff4,%eax
  jmp    L1079
```

tool_calls: name: unpack_data
arguments: data_label: D153
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D146
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D178
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D91
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D14
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D162
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D87
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D254
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D51
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D84
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D26
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D64
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D192
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D98
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D257
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D99
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D245
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D89
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D16
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D201
type_guessed: string
name: unpack_data
arguments: data_label: D256
type_guessed: string
name: unpack_data
arguments: data_label: D82
type_guessed: string
name: unpack_data
arguments: data_label: D58
type_guessed: string
name: unpack_data
arguments: data_label: D196
type_guessed: string
name: unpack_data
arguments: data_label: D199
type_guessed: string
name: unpack_data
arguments: data_label: D252
type_guessed: string
name: unpack_data
arguments: data_label: D149
type_guessed: string

tool: {"D153": [0x77,0x68,0x69,0x74,0x65,0x00,0x00,0x00,0x00,0x00,0x63,0x31,0x00,0x00,0x00,0x00]}

tool: {"D146": [0x72,0x65,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x32,0x00,0x00,0x00,0x00]}

tool: {"D178": [0x67,0x72,0x65,0x65,0x6e,0x00,0x00,0x00,0x00,0x00,0x63,0x33,0x00,0x00,0x00,0x00]}

tool: {"D91": [0x62,0x6c,0x75,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x34,0x00,0x00,0x00,0x00]}

tool: {"D14": [0x79,0x65,0x6c,0x6c,0x6f,0x77,0x00,0x00,0x00,0x00,0x63,0x35,0x00,0x00,0x00,0x00]}

tool: {"D162": [0x63,0x79,0x61,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x00,0x00,0x00,0x00]}

tool: {"D87": [0x7a,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x00,0x72,0x00,0x00]}

tool: {"D254": [0x6d,0x61,0x67,0x65,0x6e,0x74,0x61,0x00,0x00,0x00,0x63,0x37,0x00,0x00,0x00,0x00]}

tool: {"D51": [0x7a,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x00,0x61,0x00,0x00]}

tool: {"D84": [0x62,0x6c,0x75,0x65,0x32,0x00,0x00,0x00,0x00,0x00,0x63,0x38,0x00,0x00,0x00,0x00]}

tool: {"D26": [0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x04,0x00,0x63,0x00,0x00]}

tool: {"D64": [0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x79,0x30,0x00]}

tool: {"D192": [0x63,0x6f,0x6c,0x6f,0x72,0x31,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x63,0x6f,0x6c]}

tool: {"D98": [0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x00,0x63,0x6f,0x6c]}

tool: {"D257": [0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x7a,0x30,0x00]}

tool: {"D99": [0x79,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x7a,0x30,0x00]}

tool: {"D245": [0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x79,0x00,0x00]}

tool: {"D89": [0x7a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x00,0x6c,0x78,0x00]}

tool: {"D16": [0x6c,0x79,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x04,0x00,0x6c,0x7a,0x00]}

tool: D201: sphere

tool: D256: plane

tool: D82: camera

tool: D58: light

tool: D196: cylinder

tool: D199: cylinderxy

tool: D252: cylinderxz

tool: D149: cylinderyz

assistant: ```c
int parse_line(char *line, int *id, int *cyl_type, double *d_tab, unsigned char *b_tab) {
  typedef struct tS {
    char label[10];
    char data_type;
    unsigned char index;
    unsigned char ok;
  } S;
  typedef struct tCOL {
    char name[10], alt_name[10];
    int id;
  } COL;
  COL col_tab[8] = {{"white", "c1", 0}, {"red", "c2", 32}, {"green", "c3", 64}, {"blue", "c4", 96}, {"yellow", "c5", 128}, {"cyan", "c6", 160}, {"magenta", "c7", 192}, {"blue2", "c8", 224}};
  S s_sph[5] = {{"x0", 'd', 0, 0}, {"y0", 'd', 1, 0}, {"z0", 'd', 2, 0}, {"r", 'd', 3, 0}, {"color", 's', 0, 0}};
  S s_pln[9] = {{"x0", 'd', 0, 0}, {"y0", 'd', 1, 0}, {"z0", 'd', 2, 0}, {"a", 'd', 3, 0}, {"b", 'd', 4, 0}, {"c", 'd', 5, 0}, {"color1", 's', 0, 0}, {"color2", 's', 1, 0}, {"texscale", 'd', 6, 0}};
  S s_cxy[4] = {{"x0", 'd', 0, 0}, {"y0", 'd', 1, 0}, {"r", 'd', 2, 0}, {"color", 's', 0, 0}};
  S s_cxz[4] = {{"x0", 'd', 0, 0}, {"z0", 'd', 1, 0}, {"r", 'd', 2, 0}, {"color", 's', 0, 0}};
  S s_cyz[4] = {{"y0", 'd', 0, 0}, {"z0", 'd', 1, 0}, {"r", 'd', 2, 0}, {"color", 's', 0, 0}};
  S s_lig[3] = {{"x", 'd', 0, 0}, {"y", 'd', 1, 0}, {"z", 'd', 2, 0}};
  S s_cam[7] = {{"x", 'd', 0, 0}, {"y", 'd', 1, 0}, {"z", 'd', 2, 0}, {"lx", 'd', 3, 0}, {"ly", 'd', 4, 0}, {"lz", 'd', 5, 0}, {"rot", 'd', 6, 0}};
  int ln = strlen(line);
  int i, j, k;
  char name[16], c;
  S *s_tab;
  S *s;
  char str[10 + 64 + 1];
  int str_i = 0;
  char label[10];
  char val[64];
  int mode;
  int found_label;
  unsigned char col;
  int num_of_s;
  int ci, col_found = 0;
  if (line[ln - 1] != ')')
    return -13;
  for (i = 0;; i++) {
    if (i == 16)
      return -8;
    c = line[i];
    if (c == '(')
      break;
    if (c < 'a' || c > 'z')
      return -7;
    name[i] = c;
  }
  name[i++] = 0;
  if (strcmp(name, "sphere") == 0) {
    *id = 3;
    s_tab = s_sph;
    num_of_s = 5;
  } else if (strcmp(name, "plane") == 0) {
    *id = 4;
    s_tab = s_pln;
    num_of_s = 9;
  } else if (strcmp(name, "camera") == 0) {
    *id = 1;
    s_tab = s_cam;
    num_of_s = 7;
  } else if (strcmp(name, "light") == 0) {
    *id = 2;
    s_tab = s_lig;
    num_of_s = 3;
  } else if (strncmp(name, "cylinder", 8) == 0) {
    if (strcmp(name, "cylinderxy") == 0) {
      *cyl_type = 1;
      s_tab = s_cxy;
    } else if (strcmp(name, "cylinderxz") == 0) {
      *cyl_type = 2;
      s_tab = s_cxz;
    } else if (strcmp(name, "cylinderyz") == 0) {
      *cyl_type = 3;
      s_tab = s_cyz;
    } else
      return -10;
    *id = 5;
    num_of_s = 4;
  } else
    return -10;
  for (; i < ln; i++) {
    c = line[i];
    if (c == ';' || ((c == ')') && (i == (ln - 1)))) {
      str[str_i] = 0;
      str_i = 0;
      if (!strlen(str) || (str[0] == '='))
        return -34;
      mode = 0;
      for (j = 0; j < strlen(str); j++) {
        c = str[j];
        if (mode == 0) {
          if (j == 10)
            return -30;
          if (c == '=') {
            mode++;
            k = 0;
            label[j] = 0;
          } else
            label[j] = c;
        } else {
          val[k++] = c;
          if (k == 64)
            return -31;
        }
      }
      val[k] = 0;
      s = s_tab;
      found_label = 0;
      for (j = 0; j < num_of_s; j++, s++) {
        if (strcmp(label, s->label) == 0) {
          found_label = 1;
          break;
        }
      }
      if (!found_label)
        return -32;
      if (s->ok)
        return -33;
      if (s->data_type == 'd') {
        if (!is_double(val))
          return -12;
        d_tab[s->index] = atof(val);
      } else {
        for (ci = 0; ci < 8; ci++) {
          if (strcmp(val, col_tab[ci].name) == 0 || strcmp(val, col_tab[ci].alt_name) == 0) {
            col = col_tab[ci].id;
            col_found = 1;
            break;
          }
        }
        if (!col_found)
          return -24;
        b_tab[s->index] = col;
      }
      s->ok = 1;
    } else {
      str[str_i++] = c;
      if (str_i == (10 + 64 + 1))
        return -4;
    }
  }
  s = s_tab;
  for (i = 0; i < num_of_s; i++, s++) {
    if (!s->ok)
      return -14;
  }
  return 0;
}
```