// File: mateuz[P]MTS-LS1/source/main.cpp
// Function: generateFuncObj(int)
Benchmarks* generateFuncObj(int funcID){
  Benchmarks *fp;
  // run each of specified function in "configure.ini"
  if (funcID==1){
    fp = new F1();
  }else if (funcID==2){
    fp = new F2();
  }else if (funcID==3){
    fp = new F3();
  }else if (funcID==4){
    fp = new F4();
  }else if (funcID==5){
    fp = new F5();
  }else if (funcID==6){
    fp = new F6();
  }else if (funcID==7){
    fp = new F7();
  }else if (funcID==8){
    fp = new F8();
  }else if (funcID==9){
    fp = new F9();
  }else if (funcID==10){
    fp = new F10();
  }else if (funcID==11){
    fp = new F11();
  }else if (funcID==12){
    fp = new F12();
  }else if (funcID==13){
    fp = new F13();
  }else if (funcID==14){
    fp = new F14();
  }else if (funcID==15){
    fp = new F15();
  }else{
    cerr<<"Fail to locate Specified Function Index"<<endl;
    exit(-1);
  }
  return fp;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movl %edi, -0x4(%rbp)
cmpl $0x1, -0x4(%rbp)
jne 0xd7c6
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x28(%rbp)
callq 0x8b90
jmp 0xd79f
movq -0x28(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc13
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x2, -0x4(%rbp)
jne 0xd80e
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x30(%rbp)
callq 0xa2f0
jmp 0xd7e7
movq -0x30(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc11
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x3, -0x4(%rbp)
jne 0xd856
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x38(%rbp)
callq 0xa4f0
jmp 0xd82f
movq -0x38(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc0f
movq -0x38(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x4, -0x4(%rbp)
jne 0xd89e
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
callq 0xa6f0
jmp 0xd877
movq -0x40(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc0d
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x5, -0x4(%rbp)
jne 0xd8e6
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
callq 0xac20
jmp 0xd8bf
movq -0x48(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc0b
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x6, -0x4(%rbp)
jne 0xd92e
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x50(%rbp)
callq 0xb150
jmp 0xd907
movq -0x50(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc09
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x7, -0x4(%rbp)
jne 0xd976
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
callq 0xb680
jmp 0xd94f
movq -0x58(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc07
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x8, -0x4(%rbp)
jne 0xd9be
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x60(%rbp)
callq 0xbbb0
jmp 0xd997
movq -0x60(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc05
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0x9, -0x4(%rbp)
jne 0xda06
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
callq 0xc020
jmp 0xd9df
movq -0x68(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc03
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xa, -0x4(%rbp)
jne 0xda4e
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x70(%rbp)
callq 0x8d90
jmp 0xda27
movq -0x70(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdc01
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xb, -0x4(%rbp)
jne 0xda96
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x78(%rbp)
callq 0x9200
jmp 0xda6f
movq -0x78(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdbff
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xc, -0x4(%rbp)
jne 0xdade
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x80(%rbp)
callq 0x9670
jmp 0xdab7
movq -0x80(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdbfd
movq -0x80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xd, -0x4(%rbp)
jne 0xdb2f
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x88(%rbp)
callq 0x9870
jmp 0xdb02
movq -0x88(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdbfb
movq -0x88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xe, -0x4(%rbp)
jne 0xdb80
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x90(%rbp)
callq 0x9cf0
jmp 0xdb53
movq -0x90(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdbf9
movq -0x90(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
cmpl $0xf, -0x4(%rbp)
jne 0xdbcb
movl $0x100, %edi            # imm = 0x100
callq 0x31e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
callq 0xa0f0
jmp 0xdba4
movq -0x98(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xdbf7
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31b0
jmp 0xdc20
movq 0xc41e(%rip), %rdi      # 0x19ff0
leaq 0x56f6(%rip), %rsi      # 0x132cf
callq 0x31d0
movq %rax, %rdi
movq 0xc3d0(%rip), %rsi      # 0x19fb8
callq 0x31f0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3210
jmp 0xdbf9
jmp 0xdbfb
jmp 0xdbfd
jmp 0xdbff
jmp 0xdc01
jmp 0xdc03
jmp 0xdc05
jmp 0xdc07
jmp 0xdc09
jmp 0xdc0b
jmp 0xdc0d
jmp 0xdc0f
jmp 0xdc11
jmp 0xdc13
movq -0x10(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x3320
nopl (%rax)