#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double ackley(double *, int const);
double egg_holder(double *, int const);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
double g_schwefels(double *, int const);
double griewank(double *, int const);
double holzman(double *, int const);
double hybrid_1(double *, int const);
double hybrid_2(double *, int const);
double hybrid_3(double *, int const);
double hybrid_4(double *, int const);
double hybrid_5(double *, int const);
double hybrid_6(double *, int const);
double hybrid_7(double *, int const);
double hybrid_8(double *, int const);
double levy(double *, int const);
double michalewitz(double *, int const);
double mpe(double *, int const);
double multimod(double *, int const);
double penalized1(double *, int const);
double penalized2(double *, int const);
double powell(double *, int const);
int /*<<< orphan*/ printf(char *);
double rana(double *, int const);
double rastrigin(double *, int const);
double rosenbrock(double *, int const);
double schaffer(double *, int const);
double schaffer_f6(double *, int const);
double schwefels222(double *, int const);
double shifted_ackley(double *, int const);
double shifted_bohachevsky(double *, int const);
double shifted_extended_f10(double *, int const);
double shifted_griewank(double *, int const);
double shifted_rastrigin(double *, int const);
double shifted_rosenbrock(double *, int const);
double shifted_schaffer(double *, int const);
double shifted_schwefel_12(double *, int const);
double shifted_schwefel_221(double *, int const);
double shifted_schwefel_222(double *, int const);
double shifted_sphere(double *, int const);
double shubert(double *, int const);
double sphere(double *, int const);
double step(double *, int const);
double stretchedV(double *, int const);
double zakharov(double *, int const);
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);
  }
}


x86 assembly (clang, -O0):
<objfunc>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %rax,-0x30(%rbp)
sub    $0x2b,%rax
ja     1825 <objfunc+0x465>
mov    -0x30(%rbp),%rax
lea    0xbfe(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1170 <rastrigin@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1090 <schaffer@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11c0 <griewank@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1270 <ackley@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   12a0 <rosenbrock@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1260 <sphere@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1130 <mpe@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11b0 <schaffer_f6@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1120 <g_schwefels@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1180 <step@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1040 <penalized1@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1200 <levy@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   12b0 <zakharov@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1190 <egg_holder@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10f0 <holzman@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1110 <michalewitz@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11d0 <penalized2@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1060 <powell@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1210 <rana@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   12c0 <shubert@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1050 <stretchedV@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1150 <multimod@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10e0 <schwefels222@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1160 <shifted_sphere@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1290 <shifted_schwefel_221@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   12e0 <shifted_rosenbrock@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1140 <shifted_rastrigin@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11e0 <shifted_griewank@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11f0 <shifted_ackley@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1100 <shifted_schwefel_222@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   11a0 <shifted_schwefel_12@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   12d0 <shifted_extended_f10@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1070 <shifted_bohachevsky@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1030 <shifted_schaffer@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10d0 <hybrid_1@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1250 <hybrid_2@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10c0 <hybrid_3@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1240 <hybrid_4@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10b0 <hybrid_5@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1230 <hybrid_6@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   10a0 <hybrid_7@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
call   1220 <hybrid_8@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    1838 <objfunc+0x478>
lea    0x884(%rip),%rdi
call   1080 <printf@plt>
xor    %edi,%edi
call   1280 <exit@plt>
movsd  -0x8(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<objfunc>:
push   %rax
addl   $0x1,(%rcx)
mov    (%rsi),%eax
cmp    $0x2b,%rax
ja     1530 <objfunc+0x170>
lea    0xc29(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    (%rdx),%esi
pop    %rax
jmp    1170 <rastrigin@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1090 <schaffer@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11c0 <griewank@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1270 <ackley@plt>
mov    (%rdx),%esi
pop    %rax
jmp    12a0 <rosenbrock@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1260 <sphere@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1130 <mpe@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11b0 <schaffer_f6@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1120 <g_schwefels@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1180 <step@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1050 <penalized1@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1200 <levy@plt>
mov    (%rdx),%esi
pop    %rax
jmp    12b0 <zakharov@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1190 <egg_holder@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10f0 <holzman@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1110 <michalewitz@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11d0 <penalized2@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1070 <powell@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1210 <rana@plt>
mov    (%rdx),%esi
pop    %rax
jmp    12c0 <shubert@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1060 <stretchedV@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1150 <multimod@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10e0 <schwefels222@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1160 <shifted_sphere@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1290 <shifted_schwefel_221@plt>
mov    (%rdx),%esi
pop    %rax
jmp    12e0 <shifted_rosenbrock@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1140 <shifted_rastrigin@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11e0 <shifted_griewank@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11f0 <shifted_ackley@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1100 <shifted_schwefel_222@plt>
mov    (%rdx),%esi
pop    %rax
jmp    11a0 <shifted_schwefel_12@plt>
mov    (%rdx),%esi
pop    %rax
jmp    12d0 <shifted_extended_f10@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1080 <shifted_bohachevsky@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1040 <shifted_schaffer@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10d0 <hybrid_1@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1250 <hybrid_2@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10c0 <hybrid_3@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1240 <hybrid_4@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10b0 <hybrid_5@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1230 <hybrid_6@plt>
mov    (%rdx),%esi
pop    %rax
jmp    10a0 <hybrid_7@plt>
mov    (%rdx),%esi
pop    %rax
jmp    1220 <hybrid_8@plt>
lea    0xb79(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1280 <exit@plt>

LLVM IR (-O0):
@.str = [25 x i8] c"Info: Invalid function.\0A\00"
define double @objfunc(double* %0, i32* %1, i32* %2, i32* %3) {
%5 = alloca double
%6 = alloca double*
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32*
store double* %0, double** %6
store i32* %1, i32** %7
store i32* %2, i32** %8
store i32* %3, i32** %9
%10 = load i32*, i32** %9
%11 = load i32, i32* %10
%12 = add nsw i32 %11, 1
store i32 %12, i32* %10
%13 = load i32*, i32** %7
%14 = load i32, i32* %13
switch i32 %14, label %225 [
i32 0, label %15
i32 1, label %20
i32 2, label %25
i32 3, label %30
i32 4, label %35
i32 5, label %40
i32 6, label %45
i32 7, label %50
i32 8, label %55
i32 9, label %60
i32 11, label %65
i32 12, label %70
i32 13, label %75
i32 14, label %80
i32 15, label %85
i32 16, label %90
i32 17, label %95
i32 18, label %100
i32 19, label %105
i32 20, label %110
i32 21, label %115
i32 22, label %120
i32 23, label %125
i32 25, label %130
i32 26, label %135
i32 27, label %140
i32 28, label %145
i32 29, label %150
i32 30, label %155
i32 31, label %160
i32 32, label %165
i32 33, label %170
i32 34, label %175
i32 35, label %180
i32 36, label %185
i32 37, label %190
i32 38, label %195
i32 39, label %200
i32 40, label %205
i32 41, label %210
i32 42, label %215
i32 43, label %220
]
15: ; preds = %4
%16 = load double*, double** %6
%17 = load i32*, i32** %8
%18 = load i32, i32* %17
%19 = call double @rastrigin(double* %16, i32 %18)
store double %19, double* %5
br label %228
20: ; preds = %4
%21 = load double*, double** %6
%22 = load i32*, i32** %8
%23 = load i32, i32* %22
%24 = call double @schaffer(double* %21, i32 %23)
store double %24, double* %5
br label %228
25: ; preds = %4
%26 = load double*, double** %6
%27 = load i32*, i32** %8
%28 = load i32, i32* %27
%29 = call double @griewank(double* %26, i32 %28)
store double %29, double* %5
br label %228
30: ; preds = %4
%31 = load double*, double** %6
%32 = load i32*, i32** %8
%33 = load i32, i32* %32
%34 = call double @ackley(double* %31, i32 %33)
store double %34, double* %5
br label %228
35: ; preds = %4
%36 = load double*, double** %6
%37 = load i32*, i32** %8
%38 = load i32, i32* %37
%39 = call double @rosenbrock(double* %36, i32 %38)
store double %39, double* %5
br label %228
40: ; preds = %4
%41 = load double*, double** %6
%42 = load i32*, i32** %8
%43 = load i32, i32* %42
%44 = call double @sphere(double* %41, i32 %43)
store double %44, double* %5
br label %228
45: ; preds = %4
%46 = load double*, double** %6
%47 = load i32*, i32** %8
%48 = load i32, i32* %47
%49 = call double @mpe(double* %46, i32 %48)
store double %49, double* %5
br label %228
50: ; preds = %4
%51 = load double*, double** %6
%52 = load i32*, i32** %8
%53 = load i32, i32* %52
%54 = call double @schaffer_f6(double* %51, i32 %53)
store double %54, double* %5
br label %228
55: ; preds = %4
%56 = load double*, double** %6
%57 = load i32*, i32** %8
%58 = load i32, i32* %57
%59 = call double @g_schwefels(double* %56, i32 %58)
store double %59, double* %5
br label %228
60: ; preds = %4
%61 = load double*, double** %6
%62 = load i32*, i32** %8
%63 = load i32, i32* %62
%64 = call double @step(double* %61, i32 %63)
store double %64, double* %5
br label %228
65: ; preds = %4
%66 = load double*, double** %6
%67 = load i32*, i32** %8
%68 = load i32, i32* %67
%69 = call double @penalized1(double* %66, i32 %68)
store double %69, double* %5
br label %228
70: ; preds = %4
%71 = load double*, double** %6
%72 = load i32*, i32** %8
%73 = load i32, i32* %72
%74 = call double @levy(double* %71, i32 %73)
store double %74, double* %5
br label %228
75: ; preds = %4
%76 = load double*, double** %6
%77 = load i32*, i32** %8
%78 = load i32, i32* %77
%79 = call double @zakharov(double* %76, i32 %78)
store double %79, double* %5
br label %228
80: ; preds = %4
%81 = load double*, double** %6
%82 = load i32*, i32** %8
%83 = load i32, i32* %82
%84 = call double @egg_holder(double* %81, i32 %83)
store double %84, double* %5
br label %228
85: ; preds = %4
%86 = load double*, double** %6
%87 = load i32*, i32** %8
%88 = load i32, i32* %87
%89 = call double @holzman(double* %86, i32 %88)
store double %89, double* %5
br label %228
90: ; preds = %4
%91 = load double*, double** %6
%92 = load i32*, i32** %8
%93 = load i32, i32* %92
%94 = call double @michalewitz(double* %91, i32 %93)
store double %94, double* %5
br label %228
95: ; preds = %4
%96 = load double*, double** %6
%97 = load i32*, i32** %8
%98 = load i32, i32* %97
%99 = call double @penalized2(double* %96, i32 %98)
store double %99, double* %5
br label %228
100: ; preds = %4
%101 = load double*, double** %6
%102 = load i32*, i32** %8
%103 = load i32, i32* %102
%104 = call double @powell(double* %101, i32 %103)
store double %104, double* %5
br label %228
105: ; preds = %4
%106 = load double*, double** %6
%107 = load i32*, i32** %8
%108 = load i32, i32* %107
%109 = call double @rana(double* %106, i32 %108)
store double %109, double* %5
br label %228
110: ; preds = %4
%111 = load double*, double** %6
%112 = load i32*, i32** %8
%113 = load i32, i32* %112
%114 = call double @shubert(double* %111, i32 %113)
store double %114, double* %5
br label %228
115: ; preds = %4
%116 = load double*, double** %6
%117 = load i32*, i32** %8
%118 = load i32, i32* %117
%119 = call double @stretchedV(double* %116, i32 %118)
store double %119, double* %5
br label %228
120: ; preds = %4
%121 = load double*, double** %6
%122 = load i32*, i32** %8
%123 = load i32, i32* %122
%124 = call double @multimod(double* %121, i32 %123)
store double %124, double* %5
br label %228
125: ; preds = %4
%126 = load double*, double** %6
%127 = load i32*, i32** %8
%128 = load i32, i32* %127
%129 = call double @schwefels222(double* %126, i32 %128)
store double %129, double* %5
br label %228
130: ; preds = %4
%131 = load double*, double** %6
%132 = load i32*, i32** %8
%133 = load i32, i32* %132
%134 = call double @shifted_sphere(double* %131, i32 %133)
store double %134, double* %5
br label %228
135: ; preds = %4
%136 = load double*, double** %6
%137 = load i32*, i32** %8
%138 = load i32, i32* %137
%139 = call double @shifted_schwefel_221(double* %136, i32 %138)
store double %139, double* %5
br label %228
140: ; preds = %4
%141 = load double*, double** %6
%142 = load i32*, i32** %8
%143 = load i32, i32* %142
%144 = call double @shifted_rosenbrock(double* %141, i32 %143)
store double %144, double* %5
br label %228
145: ; preds = %4
%146 = load double*, double** %6
%147 = load i32*, i32** %8
%148 = load i32, i32* %147
%149 = call double @shifted_rastrigin(double* %146, i32 %148)
store double %149, double* %5
br label %228
150: ; preds = %4
%151 = load double*, double** %6
%152 = load i32*, i32** %8
%153 = load i32, i32* %152
%154 = call double @shifted_griewank(double* %151, i32 %153)
store double %154, double* %5
br label %228
155: ; preds = %4
%156 = load double*, double** %6
%157 = load i32*, i32** %8
%158 = load i32, i32* %157
%159 = call double @shifted_ackley(double* %156, i32 %158)
store double %159, double* %5
br label %228
160: ; preds = %4
%161 = load double*, double** %6
%162 = load i32*, i32** %8
%163 = load i32, i32* %162
%164 = call double @shifted_schwefel_222(double* %161, i32 %163)
store double %164, double* %5
br label %228
165: ; preds = %4
%166 = load double*, double** %6
%167 = load i32*, i32** %8
%168 = load i32, i32* %167
%169 = call double @shifted_schwefel_12(double* %166, i32 %168)
store double %169, double* %5
br label %228
170: ; preds = %4
%171 = load double*, double** %6
%172 = load i32*, i32** %8
%173 = load i32, i32* %172
%174 = call double @shifted_extended_f10(double* %171, i32 %173)
store double %174, double* %5
br label %228
175: ; preds = %4
%176 = load double*, double** %6
%177 = load i32*, i32** %8
%178 = load i32, i32* %177
%179 = call double @shifted_bohachevsky(double* %176, i32 %178)
store double %179, double* %5
br label %228
180: ; preds = %4
%181 = load double*, double** %6
%182 = load i32*, i32** %8
%183 = load i32, i32* %182
%184 = call double @shifted_schaffer(double* %181, i32 %183)
store double %184, double* %5
br label %228
185: ; preds = %4
%186 = load double*, double** %6
%187 = load i32*, i32** %8
%188 = load i32, i32* %187
%189 = call double @hybrid_1(double* %186, i32 %188)
store double %189, double* %5
br label %228
190: ; preds = %4
%191 = load double*, double** %6
%192 = load i32*, i32** %8
%193 = load i32, i32* %192
%194 = call double @hybrid_2(double* %191, i32 %193)
store double %194, double* %5
br label %228
195: ; preds = %4
%196 = load double*, double** %6
%197 = load i32*, i32** %8
%198 = load i32, i32* %197
%199 = call double @hybrid_3(double* %196, i32 %198)
store double %199, double* %5
br label %228
200: ; preds = %4
%201 = load double*, double** %6
%202 = load i32*, i32** %8
%203 = load i32, i32* %202
%204 = call double @hybrid_4(double* %201, i32 %203)
store double %204, double* %5
br label %228
205: ; preds = %4
%206 = load double*, double** %6
%207 = load i32*, i32** %8
%208 = load i32, i32* %207
%209 = call double @hybrid_5(double* %206, i32 %208)
store double %209, double* %5
br label %228
210: ; preds = %4
%211 = load double*, double** %6
%212 = load i32*, i32** %8
%213 = load i32, i32* %212
%214 = call double @hybrid_6(double* %211, i32 %213)
store double %214, double* %5
br label %228
215: ; preds = %4
%216 = load double*, double** %6
%217 = load i32*, i32** %8
%218 = load i32, i32* %217
%219 = call double @hybrid_7(double* %216, i32 %218)
store double %219, double* %5
br label %228
220: ; preds = %4
%221 = load double*, double** %6
%222 = load i32*, i32** %8
%223 = load i32, i32* %222
%224 = call double @hybrid_8(double* %221, i32 %223)
store double %224, double* %5
br label %228
225: ; preds = %4
%226 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0))
%227 = call i32 @exit(i32 0)
unreachable
228: ; preds = %220, %215, %210, %205, %200, %195, %190, %185, %180, %175, %170, %165, %160, %155, %150, %145, %140, %135, %130, %125, %120, %115, %110, %105, %100, %95, %90, %85, %80, %75, %70, %65, %60, %55, %50, %45, %40, %35, %30, %25, %20, %15
%229 = load double, double* %5
ret double %229
}

LLVM IR (-O2):
@str = [24 x i8] c"Info: Invalid function.\00"
define double @objfunc(double* %0, i32* nocapture %1, i32* %2, i32* nocapture %3) {
%5 = load i32, i32* %3
%6 = add nsw i32 %5, 1
store i32 %6, i32* %3
%7 = load i32, i32* %1
switch i32 %7, label %134 [
i32 0, label %8
i32 1, label %11
i32 2, label %14
i32 3, label %17
i32 4, label %20
i32 5, label %23
i32 6, label %26
i32 7, label %29
i32 8, label %32
i32 9, label %35
i32 11, label %38
i32 12, label %41
i32 13, label %44
i32 14, label %47
i32 15, label %50
i32 16, label %53
i32 17, label %56
i32 18, label %59
i32 19, label %62
i32 20, label %65
i32 21, label %68
i32 22, label %71
i32 23, label %74
i32 25, label %77
i32 26, label %80
i32 27, label %83
i32 28, label %86
i32 29, label %89
i32 30, label %92
i32 31, label %95
i32 32, label %98
i32 33, label %101
i32 34, label %104
i32 35, label %107
i32 36, label %110
i32 37, label %113
i32 38, label %116
i32 39, label %119
i32 40, label %122
i32 41, label %125
i32 42, label %128
i32 43, label %131
]
8: ; preds = %4
%9 = load i32, i32* %2
%10 = tail call double @rastrigin(double* %0, i32 %9)
br label %137
11: ; preds = %4
%12 = load i32, i32* %2
%13 = tail call double @schaffer(double* %0, i32 %12)
br label %137
14: ; preds = %4
%15 = load i32, i32* %2
%16 = tail call double @griewank(double* %0, i32 %15)
br label %137
17: ; preds = %4
%18 = load i32, i32* %2
%19 = tail call double @ackley(double* %0, i32 %18)
br label %137
20: ; preds = %4
%21 = load i32, i32* %2
%22 = tail call double @rosenbrock(double* %0, i32 %21)
br label %137
23: ; preds = %4
%24 = load i32, i32* %2
%25 = tail call double @sphere(double* %0, i32 %24)
br label %137
26: ; preds = %4
%27 = load i32, i32* %2
%28 = tail call double @mpe(double* %0, i32 %27)
br label %137
29: ; preds = %4
%30 = load i32, i32* %2
%31 = tail call double @schaffer_f6(double* %0, i32 %30)
br label %137
32: ; preds = %4
%33 = load i32, i32* %2
%34 = tail call double @g_schwefels(double* %0, i32 %33)
br label %137
35: ; preds = %4
%36 = load i32, i32* %2
%37 = tail call double @step(double* %0, i32 %36)
br label %137
38: ; preds = %4
%39 = load i32, i32* %2
%40 = tail call double @penalized1(double* %0, i32 %39)
br label %137
41: ; preds = %4
%42 = load i32, i32* %2
%43 = tail call double @levy(double* %0, i32 %42)
br label %137
44: ; preds = %4
%45 = load i32, i32* %2
%46 = tail call double @zakharov(double* %0, i32 %45)
br label %137
47: ; preds = %4
%48 = load i32, i32* %2
%49 = tail call double @egg_holder(double* %0, i32 %48)
br label %137
50: ; preds = %4
%51 = load i32, i32* %2
%52 = tail call double @holzman(double* %0, i32 %51)
br label %137
53: ; preds = %4
%54 = load i32, i32* %2
%55 = tail call double @michalewitz(double* %0, i32 %54)
br label %137
56: ; preds = %4
%57 = load i32, i32* %2
%58 = tail call double @penalized2(double* %0, i32 %57)
br label %137
59: ; preds = %4
%60 = load i32, i32* %2
%61 = tail call double @powell(double* %0, i32 %60)
br label %137
62: ; preds = %4
%63 = load i32, i32* %2
%64 = tail call double @rana(double* %0, i32 %63)
br label %137
65: ; preds = %4
%66 = load i32, i32* %2
%67 = tail call double @shubert(double* %0, i32 %66)
br label %137
68: ; preds = %4
%69 = load i32, i32* %2
%70 = tail call double @stretchedV(double* %0, i32 %69)
br label %137
71: ; preds = %4
%72 = load i32, i32* %2
%73 = tail call double @multimod(double* %0, i32 %72)
br label %137
74: ; preds = %4
%75 = load i32, i32* %2
%76 = tail call double @schwefels222(double* %0, i32 %75)
br label %137
77: ; preds = %4
%78 = load i32, i32* %2
%79 = tail call double @shifted_sphere(double* %0, i32 %78)
br label %137
80: ; preds = %4
%81 = load i32, i32* %2
%82 = tail call double @shifted_schwefel_221(double* %0, i32 %81)
br label %137
83: ; preds = %4
%84 = load i32, i32* %2
%85 = tail call double @shifted_rosenbrock(double* %0, i32 %84)
br label %137
86: ; preds = %4
%87 = load i32, i32* %2
%88 = tail call double @shifted_rastrigin(double* %0, i32 %87)
br label %137
89: ; preds = %4
%90 = load i32, i32* %2
%91 = tail call double @shifted_griewank(double* %0, i32 %90)
br label %137
92: ; preds = %4
%93 = load i32, i32* %2
%94 = tail call double @shifted_ackley(double* %0, i32 %93)
br label %137
95: ; preds = %4
%96 = load i32, i32* %2
%97 = tail call double @shifted_schwefel_222(double* %0, i32 %96)
br label %137
98: ; preds = %4
%99 = load i32, i32* %2
%100 = tail call double @shifted_schwefel_12(double* %0, i32 %99)
br label %137
101: ; preds = %4
%102 = load i32, i32* %2
%103 = tail call double @shifted_extended_f10(double* %0, i32 %102)
br label %137
104: ; preds = %4
%105 = load i32, i32* %2
%106 = tail call double @shifted_bohachevsky(double* %0, i32 %105)
br label %137
107: ; preds = %4
%108 = load i32, i32* %2
%109 = tail call double @shifted_schaffer(double* %0, i32 %108)
br label %137
110: ; preds = %4
%111 = load i32, i32* %2
%112 = tail call double @hybrid_1(double* %0, i32 %111)
br label %137
113: ; preds = %4
%114 = load i32, i32* %2
%115 = tail call double @hybrid_2(double* %0, i32 %114)
br label %137
116: ; preds = %4
%117 = load i32, i32* %2
%118 = tail call double @hybrid_3(double* %0, i32 %117)
br label %137
119: ; preds = %4
%120 = load i32, i32* %2
%121 = tail call double @hybrid_4(double* %0, i32 %120)
br label %137
122: ; preds = %4
%123 = load i32, i32* %2
%124 = tail call double @hybrid_5(double* %0, i32 %123)
br label %137
125: ; preds = %4
%126 = load i32, i32* %2
%127 = tail call double @hybrid_6(double* %0, i32 %126)
br label %137
128: ; preds = %4
%129 = load i32, i32* %2
%130 = tail call double @hybrid_7(double* %0, i32 %129)
br label %137
131: ; preds = %4
%132 = load i32, i32* %2
%133 = tail call double @hybrid_8(double* %0, i32 %132)
br label %137
134: ; preds = %4
%135 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str, i64 0, i64 0))
%136 = tail call i32 @exit(i32 0)
unreachable
137: ; preds = %131, %128, %125, %122, %119, %116, %113, %110, %107, %104, %101, %98, %95, %92, %89, %86, %83, %80, %77, %74, %71, %68, %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8
%138 = phi double [ %133, %131 ], [ %130, %128 ], [ %127, %125 ], [ %124, %122 ], [ %121, %119 ], [ %118, %116 ], [ %115, %113 ], [ %112, %110 ], [ %109, %107 ], [ %106, %104 ], [ %103, %101 ], [ %100, %98 ], [ %97, %95 ], [ %94, %92 ], [ %91, %89 ], [ %88, %86 ], [ %85, %83 ], [ %82, %80 ], [ %79, %77 ], [ %76, %74 ], [ %73, %71 ], [ %70, %68 ], [ %67, %65 ], [ %64, %62 ], [ %61, %59 ], [ %58, %56 ], [ %55, %53 ], [ %52, %50 ], [ %49, %47 ], [ %46, %44 ], [ %43, %41 ], [ %40, %38 ], [ %37, %35 ], [ %34, %32 ], [ %31, %29 ], [ %28, %26 ], [ %25, %23 ], [ %22, %20 ], [ %19, %17 ], [ %16, %14 ], [ %13, %11 ], [ %10, %8 ]
ret double %138
}