user: 下面的汇编指令对应的C源代码是什么:

```asm
<c1_look_ahead_test>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  mov    %edx,-0x40(%rbp)
  mov    %ecx,-0x44(%rbp)
  mov    %r8d,-0x48(%rbp)
  cmpl   $0x1,-0x44(%rbp)
  jne    L799
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  D351(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  D351(%rip),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  D351(%rip),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  D254(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
  jmp    L311
L799:
  movss  D351(%rip),%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  D254(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  D254(%rip),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  D254(%rip),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  D129(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
L311:
  cmpl   $0x6,-0x44(%rbp)
  je     L200
  cmpl   $0x6,-0x44(%rbp)
  jg     L309
  cmpl   $0x5,-0x44(%rbp)
  je     L262
  cmpl   $0x5,-0x44(%rbp)
  jg     L309
  cmpl   $0x2,-0x44(%rbp)
  je     L105
  cmpl   $0x4,-0x44(%rbp)
  je     L336
  jmp    L309
L105:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  jmp    L309
L336:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  jmp    L309
L200:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  jmp    L309
L262:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  nop
L309:
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  jmp    L261
L579:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  js     L686
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x25(%rbp)
  jmp    L210
L686:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  sub    $0x7f,%eax
  mov    %al,-0x25(%rbp)
L210:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jbe    L109
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  ja     L109
  movss  -0x24(%rbp),%xmm1
  movss  D147(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  jmp    L85
L109:
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L251
  movss  -0x24(%rbp),%xmm1
  movss  D254(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  jmp    L85
L251:
  movss  -0x24(%rbp),%xmm1
  movss  D351(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
L85:
  movl   $0x0,-0x10(%rbp)
  cmpb   $0x20,-0x25(%rbp)
  jne    L337
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movl   $0x1,-0x10(%rbp)
L337:
  cmpb   $0x2f,-0x25(%rbp)
  jle    L319
  cmpb   $0x39,-0x25(%rbp)
  jg     L319
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movl   $0x1,-0x10(%rbp)
L319:
  cmpb   $0x40,-0x25(%rbp)
  jle    L57
  cmpb   $0x5a,-0x25(%rbp)
  jg     L57
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movl   $0x1,-0x10(%rbp)
L57:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L523
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D380(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
L523:
  cmpl   $0x0,-0x10(%rbp)
  jne    L505
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D380(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
L505:
  movl   $0x0,-0x10(%rbp)
  cmpb   $0x20,-0x25(%rbp)
  jne    L126
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movl   $0x1,-0x10(%rbp)
L126:
  cmpb   $0x2f,-0x25(%rbp)
  jle    L291
  cmpb   $0x39,-0x25(%rbp)
  jg     L291
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movl   $0x1,-0x10(%rbp)
L291:
  cmpb   $0x60,-0x25(%rbp)
  jle    L268
  cmpb   $0x7a,-0x25(%rbp)
  jg     L268
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movl   $0x1,-0x10(%rbp)
L268:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L314
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D380(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
L314:
  cmpl   $0x0,-0x10(%rbp)
  jne    L304
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D380(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
L304:
  movl   $0x0,-0x10(%rbp)
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  jne    L575
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L575:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2a,%al
  jne    L755
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L755:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x3e,%al
  jne    L405
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L405:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L747
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L747:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jbe    L462
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  ja     L462
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L462:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jbe    L619
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x5a,%al
  ja     L619
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D253(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
L619:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L553
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D319(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  jmp    L447
L553:
  cmpl   $0x0,-0x10(%rbp)
  jne    L447
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D476(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
L447:
  cmpl   $0x0,-0x48(%rbp)
  je     L598
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x5b,%al
  jne    L598
  movss  -0x14(%rbp),%xmm1
  movss  D129(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
  jmp    L129
L598:
  movss  -0x14(%rbp),%xmm1
  movss  D351(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
L129:
  addl   $0x1,-0x4(%rbp)
L261:
  mov    -0x4(%rbp),%eax
  cmp    -0x3c(%rbp),%eax
  jge    L58
  mov    -0x40(%rbp),%eax
  add    $0x8,%eax
  cmp    %eax,-0x4(%rbp)
  jle    L579
L58:
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x20(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x1c(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x18(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  movd   %eax,%xmm0
  call   <froundup@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x1,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x3c(%rbp),%eax
  jne    L432
  movss  -0x18(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x8(%rbp),%xmm0
  comiss -0x1c(%rbp),%xmm0
  jb     L366
  movss  -0x1c(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  movl   $0x4,-0xc(%rbp)
L366:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x8(%rbp),%xmm0
  comiss -0x20(%rbp),%xmm0
  jb     L27
  movss  -0x20(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  movl   $0x2,-0xc(%rbp)
L27:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x8(%rbp),%xmm0
  comiss -0x24(%rbp),%xmm0
  jb     L335
  movss  -0x24(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  movl   $0x1,-0xc(%rbp)
L335:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x8(%rbp),%xmm0
  comiss -0x14(%rbp),%xmm0
  jb     L382
  movss  -0x14(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  movl   $0x6,-0xc(%rbp)
  jmp    L382
L432:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x24(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L298
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L298
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L298
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L298
  movl   $0x5,-0xc(%rbp)
L298:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x24(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L111
  pxor   %xmm1,%xmm1
  cvtss2sd -0x20(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L111
  movss  -0x18(%rbp),%xmm0
  comiss -0x20(%rbp),%xmm0
  jbe    L656
  movl   $0x2,-0xc(%rbp)
  jmp    L111
L656:
  movl   $0x0,-0x10(%rbp)
  movss  -0x20(%rbp),%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jp     L111
  movss  -0x20(%rbp),%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jne    L111
  mov    -0x40(%rbp),%edx
  mov    -0x3c(%rbp),%ecx
  mov    -0x38(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <dq4bi@plt>
  test   %rax,%rax
  je     L611
  movl   $0x5,-0xc(%rbp)
  jmp    L111
L611:
  movl   $0x2,-0xc(%rbp)
L111:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x24(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L396
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L396
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L396
  pxor   %xmm1,%xmm1
  cvtss2sd -0x1c(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x18(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L396
  movl   $0x4,-0xc(%rbp)
L396:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L4
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L4
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L4
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x18(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L4
  movl   $0x1,-0xc(%rbp)
L4:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x24(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L382
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L382
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L382
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D195(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x18(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jb     L382
  movl   $0x6,-0xc(%rbp)
L382:
  mov    -0xc(%rbp),%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D351
data_type: f32
name: retrieve_data
arguments: data_label: D254
data_type: f32
name: retrieve_data
arguments: data_label: D129
data_type: f32
name: retrieve_data
arguments: data_label: D147
data_type: f32
name: retrieve_data
arguments: data_label: D253
data_type: byte[8]
name: retrieve_data
arguments: data_label: D380
data_type: byte[8]
name: retrieve_data
arguments: data_label: D319
data_type: byte[8]
name: retrieve_data
arguments: data_label: D476
data_type: byte[8]
name: retrieve_data
arguments: data_label: D195
data_type: f32[2]

tool: D351: 1

tool: D254: 2

tool: D129: 3

tool: D147: 0.5

tool: {"D253": [0x55,0x55,0x55,0x55,0x55,0x55,0xe5,0x3f]}

tool: {"D380": [0x55,0x55,0x55,0x55,0x55,0x55,0xf5,0x3f]}

tool: {"D319": [0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x40]}

tool: {"D476": [0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0x0a,0x40]}

tool: {"D195": [0.0,1.875]}

assistant: ```c
int c1_look_ahead_test(unsigned char source[], int sourcelen, int position, int current_mode, int gs1) {
  float ascii_count, c40_count, text_count, edi_count, byte_count;
  char reduced_char;
  int done, best_scheme, best_count, sp;
  if (current_mode == 1) {
    ascii_count = 0.0;
    c40_count = 1.0;
    text_count = 1.0;
    edi_count = 1.0;
    byte_count = 2.0;
  } else {
    ascii_count = 1.0;
    c40_count = 2.0;
    text_count = 2.0;
    edi_count = 2.0;
    byte_count = 3.0;
  }
  switch (current_mode) {
  case 2:
    c40_count = 0.0;
    break;
  case 4:
    text_count = 0.0;
    break;
  case 6:
    byte_count = 0.0;
    break;
  case 5:
    edi_count = 0.0;
    break;
  }
  for (sp = position; (sp < sourcelen) && (sp <= (position + 8)); sp++) {
    if (source[sp] <= 127) {
      reduced_char = source[sp];
    } else {
      reduced_char = source[sp] - 127;
    }
    if ((source[sp] >= '0') && (source[sp] <= '9')) {
      ascii_count += 0.5;
    } else {
      ascii_count = froundup(ascii_count);
      if (source[sp] > 127) {
        ascii_count += 2.0;
      } else {
        ascii_count += 1.0;
      }
    }
    done = 0;
    if (reduced_char == ' ') {
      c40_count += (2.0 / 3.0);
      done = 1;
    }
    if ((reduced_char >= '0') && (reduced_char <= '9')) {
      c40_count += (2.0 / 3.0);
      done = 1;
    }
    if ((reduced_char >= 'A') && (reduced_char <= 'Z')) {
      c40_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] > 127) {
      c40_count += (4.0 / 3.0);
    }
    if (done == 0) {
      c40_count += (4.0 / 3.0);
    }
    done = 0;
    if (reduced_char == ' ') {
      text_count += (2.0 / 3.0);
      done = 1;
    }
    if ((reduced_char >= '0') && (reduced_char <= '9')) {
      text_count += (2.0 / 3.0);
      done = 1;
    }
    if ((reduced_char >= 'a') && (reduced_char <= 'z')) {
      text_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] > 127) {
      text_count += (4.0 / 3.0);
    }
    if (done == 0) {
      text_count += (4.0 / 3.0);
    }
    done = 0;
    if (source[sp] == 13) {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] == '*') {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] == '>') {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] == ' ') {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if ((source[sp] >= '0') && (source[sp] <= '9')) {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if ((source[sp] >= 'A') && (source[sp] <= 'Z')) {
      edi_count += (2.0 / 3.0);
      done = 1;
    }
    if (source[sp] > 127) {
      edi_count += (13.0 / 3.0);
    } else {
      if (done == 0) {
        edi_count += (10.0 / 3.0);
      }
    }
    if (gs1 && (source[sp] == '[')) {
      byte_count += 3.0;
    } else {
      byte_count += 1.0;
    }
  }
  ascii_count = froundup(ascii_count);
  c40_count = froundup(c40_count);
  text_count = froundup(text_count);
  edi_count = froundup(edi_count);
  byte_count = froundup(byte_count);
  best_scheme = 1;
  if (sp == sourcelen) {
    best_count = edi_count;
    if (text_count <= best_count) {
      best_count = text_count;
      best_scheme = 4;
    }
    if (c40_count <= best_count) {
      best_count = c40_count;
      best_scheme = 2;
    }
    if (ascii_count <= best_count) {
      best_count = ascii_count;
      best_scheme = 1;
    }
    if (byte_count <= best_count) {
      best_count = byte_count;
      best_scheme = 6;
    }
  } else {
    if (((edi_count + 1.0 <= ascii_count) && (edi_count + 1.0 <= c40_count)) && ((edi_count + 1.0 <= byte_count) && (edi_count + 1.0 <= text_count))) {
      best_scheme = 5;
    }
    if ((c40_count + 1.0 <= ascii_count) && (c40_count + 1.0 <= text_count)) {
      if (c40_count < edi_count) {
        best_scheme = 2;
      } else {
        done = 0;
        if (c40_count == edi_count) {
          if (dq4bi(source, sourcelen, position)) {
            best_scheme = 5;
          } else {
            best_scheme = 2;
          }
        }
      }
    }
    if (((text_count + 1.0 <= ascii_count) && (text_count + 1.0 <= c40_count)) && ((text_count + 1.0 <= byte_count) && (text_count + 1.0 <= edi_count))) {
      best_scheme = 4;
    }
    if (((ascii_count + 1.0 <= byte_count) && (ascii_count + 1.0 <= c40_count)) && ((ascii_count + 1.0 <= text_count) && (ascii_count + 1.0 <= edi_count))) {
      best_scheme = 1;
    }
    if (((byte_count + 1.0 <= ascii_count) && (byte_count + 1.0 <= c40_count)) && ((byte_count + 1.0 <= text_count) && (byte_count + 1.0 <= edi_count))) {
      best_scheme = 6;
    }
  }
  return best_scheme;
}
```