user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<objfunc>:
  endbr64
  sub    $0x8,%rsp
  addl   $0x1,(%rcx)
  cmpl   $0x2b,(%rsi)
  ja     L350
  mov    (%rsi),%eax
  lea    D14(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  mov    (%rdx),%esi
  call   <rastrigin@plt>
L282:
  add    $0x8,%rsp
  ret
  mov    (%rdx),%esi
  call   <schaffer@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <griewank@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <ackley@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <rosenbrock@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <sphere@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <mpe@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <schaffer_f6@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <g_schwefels@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <step@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <penalized1@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <levy@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <zakharov@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <egg_holder@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <holzman@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <michalewitz@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <penalized2@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <powell@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <rana@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shubert@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <stretchedV@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <multimod@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <schwefels222@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_sphere@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_schwefel_221@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_rosenbrock@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_rastrigin@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_griewank@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_ackley@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_schwefel_222@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_schwefel_12@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_extended_f10@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_bohachevsky@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <shifted_schaffer@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_1@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_2@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_3@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_4@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_5@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_6@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_7@plt>
  jmp    L282
  mov    (%rdx),%esi
  call   <hybrid_8@plt>
  jmp    L282
L350:
  lea    D4(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  jmp    L282
```

tool_calls: name: unpack_data
arguments: data_tag: D4
type_infered: string

tool: D4: 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);
  }
}
```