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

```asm
<cmdline>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0xb8,%rsp
  mov    %edi,-0xd4(%rbp)
  mov    %rsi,-0xe0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  movw   $0xb,-0xba(%rbp)
  mov    $0x0,%eax
  call   <get_Clkgen@plt>
  mov    %al,-0xc1(%rbp)
  movabs $0x7361632d2d,%rax
  mov    %rax,-0xa0(%rbp)
  movb   $0x0,-0x98(%rbp)
  movabs $0x6372742d2d,%rax
  mov    %rax,-0x97(%rbp)
  movb   $0x0,-0x8f(%rbp)
  movabs $0x736172742d2d,%rax
  mov    %rax,-0x8e(%rbp)
  movb   $0x0,-0x86(%rbp)
  movabs $0x7277742d2d,%rax
  mov    %rax,-0x85(%rbp)
  movb   $0x0,-0x7d(%rbp)
  movabs $0x64726d742d2d,%rax
  mov    %rax,-0x7c(%rbp)
  movb   $0x0,-0x74(%rbp)
  movabs $0x636672742d2d,%rax
  mov    %rax,-0x73(%rbp)
  movb   $0x0,-0x6b(%rbp)
  movabs $0x7072742d2d,%rax
  mov    %rax,-0x6a(%rbp)
  movb   $0x0,-0x62(%rbp)
  movabs $0x646372742d2d,%rax
  mov    %rax,-0x61(%rbp)
  movb   $0x0,-0x59(%rbp)
  movabs $0x7669646d61722d2d,%rax
  mov    %rax,-0x58(%rbp)
  movb   $0x0,-0x50(%rbp)
  movabs $0x6b6c637570632d2d,%rax
  mov    %rax,-0x4f(%rbp)
  movb   $0x0,-0x47(%rbp)
  movabs $0x7669647570632d2d,%rax
  mov    %rax,-0x46(%rbp)
  movb   $0x0,-0x3e(%rbp)
  movzwl -0xba(%rbp),%eax
  movswq %ax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0xb0(%rbp)
  movswq %ax,%rdx
  mov    %rdx,%r14
  mov    $0x0,%r15d
  movswq %ax,%rdx
  mov    %rdx,%r12
  mov    $0x0,%r13d
  movswq %ax,%rax
  lea    (%rax,%rax,1),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L30:
  cmp    %rdx,%rsp
  je     L402
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L30
L402:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L25
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L25:
  mov    %rsp,%rax
  add    $0x1,%rax
  shr    %rax
  add    %rax,%rax
  mov    %rax,-0xa8(%rbp)
  movw   $0x0,-0xbe(%rbp)
  jmp    L88
L210:
  movswl -0xbe(%rbp),%edx
  mov    -0xa8(%rbp),%rax
  movslq %edx,%rdx
  movw   $0xffff,(%rax,%rdx,2)
  movzwl -0xbe(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0xbe(%rbp)
L88:
  movzwl -0xbe(%rbp),%eax
  cmp    -0xba(%rbp),%ax
  jl     L210
  movw   $0xff9c,-0xbc(%rbp)
  movl   $0xffffffff,-0xb8(%rbp)
  movss  D79(%rip),%xmm0
  movss  %xmm0,-0xb4(%rbp)
  movw   $0x1,-0xc0(%rbp)
  jmp    L217
L102:
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D12(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L186
  movb   $0x0,-0xc1(%rbp)
L186:
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D41(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L9
  movb   $0x1,-0xc1(%rbp)
L9:
  movw   $0x0,-0xbe(%rbp)
  jmp    L341
L271:
  movswl -0xbe(%rbp),%eax
  lea    -0xa0(%rbp),%rcx
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  lea    (%rcx,%rax,1),%rdx
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0xe0(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L515
  movswl -0xc0(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xd4(%rbp)
  jne    L318
  movswl -0xbe(%rbp),%eax
  lea    -0xa0(%rbp),%rcx
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  add    %rcx,%rax
  mov    %rax,%rsi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <gp2x_deinit@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L318:
  movswq -0xc0(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  movswl -0xbe(%rbp),%edx
  mov    %eax,%ecx
  mov    -0xa8(%rbp),%rax
  movslq %edx,%rdx
  mov    %cx,(%rax,%rdx,2)
L515:
  movzwl -0xbe(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0xbe(%rbp)
L341:
  movzwl -0xbe(%rbp),%eax
  cmp    -0xba(%rbp),%ax
  jl     L271
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D53(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L418
  movswl -0xc0(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xd4(%rbp)
  jne    L508
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <gp2x_deinit@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L508:
  movswq -0xc0(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  mov    %eax,-0xb8(%rbp)
L418:
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L259
  movswl -0xc0(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xd4(%rbp)
  jne    L130
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <gp2x_deinit@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L130:
  movswq -0xc0(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atof@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0xb4(%rbp)
L259:
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D75(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L311
  movswl -0xc0(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xd4(%rbp)
  jne    L516
  movswq -0xc0(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <gp2x_deinit@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L516:
  movswq -0xc0(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  mov    %ax,-0xbc(%rbp)
L311:
  movzwl -0xc0(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0xc0(%rbp)
L217:
  movswl -0xc0(%rbp),%eax
  cmp    %eax,-0xd4(%rbp)
  jg     L102
  cmpb   $0x0,-0xc1(%rbp)
  jne    L462
  cmpw   $0xffec,-0xbc(%rbp)
  jl     L500
  cmpw   $0x24,-0xbc(%rbp)
  jg     L462
  movswl -0xbc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_add_FLCDCLK@plt>
  jmp    L462
L500:
  movsbl -0xc1(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <get_LCDClk@plt>
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_add_FLCDCLK@plt>
L462:
  cmpb   $0x1,-0xc1(%rbp)
  jne    L42
  cmpw   $0xfffa,-0xbc(%rbp)
  jl     L147
  cmpw   $0xa,-0xbc(%rbp)
  jg     L42
  movswl -0xbc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_add_ULCDCLK@plt>
  jmp    L42
L147:
  movsbl -0xc1(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <get_LCDClk@plt>
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_add_ULCDCLK@plt>
L42:
  cmpl   $0x0,-0xb8(%rbp)
  jle    L270
  cmpl   $0xffff,-0xb8(%rbp)
  jg     L270
  mov    -0xb8(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_REFPERD@plt>
L270:
  movss  -0xb4(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comiss %xmm1,%xmm0
  jbe    L358
  movss  D92(%rip),%xmm0
  comiss -0xb4(%rbp),%xmm0
  jbe    L358
  pxor   %xmm2,%xmm2
  cvtss2sd -0xb4(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <set_gamma@plt>
L358:
  mov    -0xa8(%rbp),%rax
  movzwl (%rax),%eax
  cmp    $0x1,%ax
  jle    L169
  mov    -0xa8(%rbp),%rax
  movzwl (%rax),%eax
  cmp    $0x3,%ax
  jg     L169
  mov    -0xa8(%rbp),%rax
  movzwl (%rax),%eax
  cwtl
  sub    $0x2,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_CAS@plt>
L169:
  mov    -0xa8(%rbp),%rax
  movzwl 0x2(%rax),%eax
  test   %ax,%ax
  jle    L124
  mov    -0xa8(%rbp),%rax
  movzwl 0x2(%rax),%eax
  cmp    $0x10,%ax
  jg     L124
  mov    -0xa8(%rbp),%rax
  movzwl 0x2(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tRC@plt>
L124:
  mov    -0xa8(%rbp),%rax
  movzwl 0x4(%rax),%eax
  test   %ax,%ax
  jle    L122
  mov    -0xa8(%rbp),%rax
  movzwl 0x4(%rax),%eax
  cmp    $0x10,%ax
  jg     L122
  mov    -0xa8(%rbp),%rax
  movzwl 0x4(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tRAS@plt>
L122:
  mov    -0xa8(%rbp),%rax
  movzwl 0x6(%rax),%eax
  test   %ax,%ax
  jle    L264
  mov    -0xa8(%rbp),%rax
  movzwl 0x6(%rax),%eax
  cmp    $0x10,%ax
  jg     L264
  mov    -0xa8(%rbp),%rax
  movzwl 0x6(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tWR@plt>
L264:
  mov    -0xa8(%rbp),%rax
  movzwl 0x8(%rax),%eax
  test   %ax,%ax
  jle    L140
  mov    -0xa8(%rbp),%rax
  movzwl 0x8(%rax),%eax
  cmp    $0x10,%ax
  jg     L140
  mov    -0xa8(%rbp),%rax
  movzwl 0x8(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tMRD@plt>
L140:
  mov    -0xa8(%rbp),%rax
  movzwl 0xa(%rax),%eax
  test   %ax,%ax
  jle    L254
  mov    -0xa8(%rbp),%rax
  movzwl 0xa(%rax),%eax
  cmp    $0x10,%ax
  jg     L254
  mov    -0xa8(%rbp),%rax
  movzwl 0xa(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tRFC@plt>
L254:
  mov    -0xa8(%rbp),%rax
  movzwl 0xc(%rax),%eax
  test   %ax,%ax
  jle    L178
  mov    -0xa8(%rbp),%rax
  movzwl 0xc(%rax),%eax
  cmp    $0xf,%ax
  jg     L178
  mov    -0xa8(%rbp),%rax
  movzwl 0xc(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tRP@plt>
L178:
  mov    -0xa8(%rbp),%rax
  movzwl 0xe(%rax),%eax
  test   %ax,%ax
  jle    L388
  mov    -0xa8(%rbp),%rax
  movzwl 0xe(%rax),%eax
  cmp    $0x10,%ax
  jg     L388
  mov    -0xa8(%rbp),%rax
  movzwl 0xe(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_tRCD@plt>
L388:
  mov    -0xa8(%rbp),%rax
  movzwl 0x10(%rax),%eax
  test   %ax,%ax
  jle    L119
  mov    -0xa8(%rbp),%rax
  movzwl 0x10(%rax),%eax
  cmp    $0x8,%ax
  jg     L119
  mov    -0xa8(%rbp),%rax
  movzwl 0x10(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_DCLK_Div@plt>
L119:
  mov    -0xa8(%rbp),%rax
  movzwl 0x12(%rax),%eax
  cmp    $0x20,%ax
  jle    L246
  mov    -0xa8(%rbp),%rax
  movzwl 0x12(%rax),%eax
  cmp    $0x154,%ax
  jg     L246
  mov    -0xa8(%rbp),%rax
  movzwl 0x12(%rax),%eax
  cwtl
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_FCLK@plt>
L246:
  mov    -0xa8(%rbp),%rax
  movzwl 0x14(%rax),%eax
  test   %ax,%ax
  jle    L265
  mov    -0xa8(%rbp),%rax
  movzwl 0x14(%rax),%eax
  cmp    $0x8,%ax
  jg     L265
  mov    -0xa8(%rbp),%rax
  movzwl 0x14(%rax),%eax
  cwtl
  sub    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <set_920_Div@plt>
L265:
  mov    %rbx,%rsp
  nop
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L267
  call   <__stack_chk_fail@plt>
L267:
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: label: D79
data_type: byte[4]
name: read_data
arguments: label: D12
data_type: string
name: read_data
arguments: label: D41
data_type: string
name: read_data
arguments: label: D32
data_type: string
name: read_data
arguments: label: D53
data_type: string
name: read_data
arguments: label: D18
data_type: string
name: read_data
arguments: label: D75
data_type: string
name: read_data
arguments: label: D92
data_type: f32

tool: {"D79": [0x00,0x00,0x80,0xbf]}

tool: D12: --fpll

tool: D41: --upll

tool: D32: %s is missing it's parameter


tool: D53: --refperd

tool: D18: --gamma

tool: D75: --timing

tool: D92: 15

assistant: ```c
void cmdline(int argc, char *argv[]) {
  short i, n;
  short varis = 11;
  char clockgen = get_Clkgen();
  char var[11][9] = {"--cas", "--trc", "--tras", "--twr", "--tmrd", "--trfc", "--trp", "--trcd", "--ramdiv", "--cpuclk", "--cpudiv"};
  short val[varis];
  for (n = 0; n < varis; n++) {
    val[n] = -1;
  }
  short timing = -100;
  int refperd = -1;
  float gamma = -1.;
  for (i = 1; i < argc; i++) {
    if (strcmp(argv[i], "--fpll") == 0)
      clockgen = 0;
    if (strcmp(argv[i], "--upll") == 0)
      clockgen = 1;
    for (n = 0; n < varis; n++) {
      if (strcmp(argv[i], var[n]) == 0) {
        if (i + 1 == argc) {
          printf("%s is missing it's parameter\r\n", var[n]);
          gp2x_deinit();
          exit(1);
        }
        val[n] = atoi(argv[i + 1]);
      }
    }
    if (strcmp(argv[i], "--refperd") == 0) {
      if (i + 1 == argc) {
        printf("%s is missing it's parameter\r\n", argv[i]);
        gp2x_deinit();
        exit(1);
      }
      refperd = atoi(argv[i + 1]);
    }
    if (strcmp(argv[i], "--gamma") == 0) {
      if (i + 1 == argc) {
        printf("%s is missing it's parameter\r\n", argv[i]);
        gp2x_deinit();
        exit(1);
      }
      gamma = atof(argv[i + 1]);
    }
    if (strcmp(argv[i], "--timing") == 0) {
      if (i + 1 == argc) {
        printf("%s is missing it's parameter\r\n", argv[i]);
        gp2x_deinit();
        exit(1);
      }
      timing = atoi(argv[i + 1]);
    }
  }
  if (clockgen == 0) {
    if (timing > -21) {
      if (timing < 37)
        set_add_FLCDCLK(timing);
    } else
      set_add_FLCDCLK(get_LCDClk(clockgen));
  }
  if (clockgen == 1) {
    if (timing > -7) {
      if (timing < 11)
        set_add_ULCDCLK(timing);
    } else
      set_add_ULCDCLK(get_LCDClk(clockgen));
  }
  if (refperd - 1 > -1) {
    if (refperd - 1 < 0xffff)
      set_REFPERD(refperd - 1);
  }
  if (gamma > 0.) {
    if (gamma < 15.)
      set_gamma(gamma);
  }
  if (val[0] - 2 > -1) {
    if (val[0] - 2 < 2)
      set_CAS(val[0] - 2);
  }
  if (val[1] - 1 > -1) {
    if (val[1] - 1 < 16)
      set_tRC(val[1] - 1);
  }
  if (val[2] - 1 > -1) {
    if (val[2] - 1 < 16)
      set_tRAS(val[2] - 1);
  }
  if (val[3] - 1 > -1) {
    if (val[3] - 1 < 16)
      set_tWR(val[3] - 1);
  }
  if (val[4] - 1 > -1) {
    if (val[4] - 1 < 16)
      set_tMRD(val[4] - 1);
  }
  if (val[5] - 1 > -1) {
    if (val[5] - 1 < 16)
      set_tRFC(val[5] - 1);
  }
  if (val[6] - 1 > -1) {
    if (val[6] < 16)
      set_tRP(val[6] - 1);
  }
  if (val[7] - 1 > -1) {
    if (val[7] - 1 < 16)
      set_tRCD(val[7] - 1);
  }
  if (val[8] - 1 > -1) {
    if (val[8] - 1 < 8)
      set_DCLK_Div(val[8] - 1);
  }
  if (val[9] > 32) {
    if (val[9] < 341)
      set_FCLK(val[9]);
  }
  if (val[10] - 1 > -1) {
    if (val[10] - 1 < 8)
      set_920_Div(val[10] - 1);
  }
}
```