user: Please show me the C implementation that matches the assembly code listed below:

```asm
<objfunc>:
  endbr64
  addl   $0x1,(%rcx)
  cmpl   $0x2b,(%rsi)
  ja     L3
  mov    (%rsi),%eax
  lea    D17(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14f0 <hybrid_8@plt>
  nop
  mov    (%rdx),%esi
  jmp    1370 <hybrid_7@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1500 <hybrid_6@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1380 <hybrid_5@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1510 <hybrid_4@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1390 <hybrid_3@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1520 <hybrid_2@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13a0 <hybrid_1@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1300 <shifted_schaffer@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1340 <shifted_bohachevsky@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    15a0 <shifted_extended_f10@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1470 <shifted_schwefel_12@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13d0 <shifted_schwefel_222@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14c0 <shifted_ackley@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14b0 <shifted_griewank@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1410 <shifted_rastrigin@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    15b0 <shifted_rosenbrock@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1560 <shifted_schwefel_221@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1430 <shifted_sphere@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13b0 <schwefels222@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1420 <multimod@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1320 <stretchedV@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1590 <shubert@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14e0 <rana@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1330 <powell@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14a0 <penalized2@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13e0 <michalewitz@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13c0 <holzman@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1460 <egg_holder@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1580 <zakharov@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    14d0 <levy@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1310 <penalized1@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1450 <step@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    13f0 <g_schwefels@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1480 <schaffer_f6@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1400 <mpe@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1530 <sphere@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1570 <rosenbrock@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1540 <ackley@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1490 <griewank@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1360 <schaffer@plt>
  nopw   0x0(%rax,%rax,1)
  mov    (%rdx),%esi
  jmp    1440 <rastrigin@plt>
  nopw   0x0(%rax,%rax,1)
L3:
  sub    $0x8,%rsp
  lea    D2(%rip),%rdi
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: read_data
arguments: label: D2
type: string

tool: D2: Info: Invalid function.


assistant: ```c
double objfunc(double sol[], const int *FUNCTION, const int *DIM, int *cont) {
  *cont += 1;
  switch (*FUNCTION) {
  case 0:
    return rastrigin(sol, *DIM);
    break;
  case 1:
    return schaffer(sol, *DIM);
    break;
  case 2:
    return griewank(sol, *DIM);
    break;
  case 3:
    return ackley(sol, *DIM);
    break;
  case 4:
    return rosenbrock(sol, *DIM);
    break;
  case 5:
    return sphere(sol, *DIM);
    break;
  case 6:
    return mpe(sol, *DIM);
    break;
  case 7:
    return schaffer_f6(sol, *DIM);
    break;
  case 8:
    return g_schwefels(sol, *DIM);
    break;
  case 9:
    return step(sol, *DIM);
    break;
  case 11:
    return penalized1(sol, *DIM);
    break;
  case 12:
    return levy(sol, *DIM);
    break;
  case 13:
    return zakharov(sol, *DIM);
    break;
  case 14:
    return egg_holder(sol, *DIM);
    break;
  case 15:
    return holzman(sol, *DIM);
    break;
  case 16:
    return michalewitz(sol, *DIM);
    break;
  case 17:
    return penalized2(sol, *DIM);
    break;
  case 18:
    return powell(sol, *DIM);
    break;
  case 19:
    return rana(sol, *DIM);
    break;
  case 20:
    return shubert(sol, *DIM);
    break;
  case 21:
    return stretchedV(sol, *DIM);
    break;
  case 22:
    return multimod(sol, *DIM);
    break;
  case 23:
    return schwefels222(sol, *DIM);
    break;
  case 25:
    return shifted_sphere(sol, *DIM);
    break;
  case 26:
    return shifted_schwefel_221(sol, *DIM);
    break;
  case 27:
    return shifted_rosenbrock(sol, *DIM);
    break;
  case 28:
    return shifted_rastrigin(sol, *DIM);
    break;
  case 29:
    return shifted_griewank(sol, *DIM);
    break;
  case 30:
    return shifted_ackley(sol, *DIM);
    break;
  case 31:
    return shifted_schwefel_222(sol, *DIM);
    break;
  case 32:
    return shifted_schwefel_12(sol, *DIM);
    break;
  case 33:
    return shifted_extended_f10(sol, *DIM);
    break;
  case 34:
    return shifted_bohachevsky(sol, *DIM);
    break;
  case 35:
    return shifted_schaffer(sol, *DIM);
    break;
  case 36:
    return hybrid_1(sol, *DIM);
    break;
  case 37:
    return hybrid_2(sol, *DIM);
    break;
  case 38:
    return hybrid_3(sol, *DIM);
    break;
  case 39:
    return hybrid_4(sol, *DIM);
    break;
  case 40:
    return hybrid_5(sol, *DIM);
    break;
  case 41:
    return hybrid_6(sol, *DIM);
    break;
  case 42:
    return hybrid_7(sol, *DIM);
    break;
  case 43:
    return hybrid_8(sol, *DIM);
    break;
  default:
    printf("Info: Invalid function.\n");
    exit(0);
  }
}
```