#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 */
int /*<<< orphan*/ f77dkernel400_(int *, int *, int *, int *, int *, double *,
                                  double *, int *, double *, double *, double *,
                                  double *, double *, double *, double *, int *,
                                  int *, double *, double *, double *, double *,
                                  double *, double *, double *, double *, int *,
                                  int *, void *, int *, int *, double *);
void nb_kernel400_f77_double(int *nri, int *iinr, int *jindex, int *jjnr,
                             int *shift, double *shiftvec, double *fshift,
                             int *gid, double *pos, double *faction,
                             double *charge, double *facel, double *krf,
                             double *crf, double *Vc, int *type, int *ntype,
                             double *vdwparam, double *Vvdw, double *tadirale,
                             double *VFtab, double *invsqrta, double *dvda,
                             double *gbtadirale, double *GBtab, int *nthreads,
                             int *count, void *mtx, int *outeriter,
                             int *inneriter, double *work) {
  f77dkernel400_(nri, iinr, jindex, jjnr, shift, shiftvec, fshift, gid, pos,
                 faction, charge, facel, krf, crf, Vc, type, ntype, vdwparam,
                 Vvdw, tadirale, VFtab, invsqrta, dvda, gbtadirale, GBtab,
                 nthreads, count, mtx, outeriter, inneriter, work);
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x188,%rsp
mov    0xd0(%rbp),%rax
mov    0xc8(%rbp),%rax
mov    0xc0(%rbp),%rax
mov    0xb8(%rbp),%rax
mov    0xb0(%rbp),%rax
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
mov    -0x40(%rbp),%rdx
mov    -0x48(%rbp),%rcx
mov    -0x50(%rbp),%r8
mov    -0x58(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    0x18(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    0x20(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    0x28(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    0x30(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    0x38(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    0x40(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    0x48(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    0x50(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    0x58(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    0x60(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    0x68(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    0x70(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    0x78(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    0x80(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    0x88(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    0x90(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    0x98(%rbp),%r13
mov    0xa0(%rbp),%r12
mov    0xa8(%rbp),%r15
mov    0xb0(%rbp),%r14
mov    0xb8(%rbp),%rbx
mov    0xc0(%rbp),%r11
mov    0xc8(%rbp),%r10
mov    0xd0(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xe0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0xd8(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0xd0(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0xc8(%rbp),%rax
mov    %rax,0x20(%rsp)
mov    -0xc0(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0xb8(%rbp),%rax
mov    %rax,0x30(%rsp)
mov    -0xb0(%rbp),%rax
mov    %rax,0x38(%rsp)
mov    -0xa8(%rbp),%rax
mov    %rax,0x40(%rsp)
mov    -0xa0(%rbp),%rax
mov    %rax,0x48(%rsp)
mov    -0x98(%rbp),%rax
mov    %rax,0x50(%rsp)
mov    -0x90(%rbp),%rax
mov    %rax,0x58(%rsp)
mov    -0x88(%rbp),%rax
mov    %rax,0x60(%rsp)
mov    -0x80(%rbp),%rax
mov    %rax,0x68(%rsp)
mov    -0x78(%rbp),%rax
mov    %rax,0x70(%rsp)
mov    -0x70(%rbp),%rax
mov    %rax,0x78(%rsp)
mov    -0x68(%rbp),%rax
mov    %rax,0x80(%rsp)
mov    -0x60(%rbp),%rax
mov    %r13,0x88(%rsp)
mov    %r12,0x90(%rsp)
mov    %r15,0x98(%rsp)
mov    %r14,0xa0(%rsp)
mov    %rbx,0xa8(%rsp)
mov    %r11,0xb0(%rsp)
mov    %r10,0xb8(%rsp)
mov    %rax,0xc0(%rsp)
call   1030 <f77dkernel400_@plt>
add    $0x188,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
jmp    1030 <f77dkernel400_@plt>

LLVM IR (-O0):
define void @nb_kernel400_f77_double(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, double* %5, double* %6, i32* %7, double* %8, double* %9, double* %10, double* %11, double* %12, double* %13, double* %14, i32* %15, i32* %16, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double* %23, double* %24, i32* %25, i32* %26, i8* %27, i32* %28, i32* %29, double* %30) {
%32 = alloca i32*
%33 = alloca i32*
%34 = alloca i32*
%35 = alloca i32*
%36 = alloca i32*
%37 = alloca double*
%38 = alloca double*
%39 = alloca i32*
%40 = alloca double*
%41 = alloca double*
%42 = alloca double*
%43 = alloca double*
%44 = alloca double*
%45 = alloca double*
%46 = alloca double*
%47 = alloca i32*
%48 = alloca i32*
%49 = alloca double*
%50 = alloca double*
%51 = alloca double*
%52 = alloca double*
%53 = alloca double*
%54 = alloca double*
%55 = alloca double*
%56 = alloca double*
%57 = alloca i32*
%58 = alloca i32*
%59 = alloca i8*
%60 = alloca i32*
%61 = alloca i32*
%62 = alloca double*
store i32* %0, i32** %32
store i32* %1, i32** %33
store i32* %2, i32** %34
store i32* %3, i32** %35
store i32* %4, i32** %36
store double* %5, double** %37
store double* %6, double** %38
store i32* %7, i32** %39
store double* %8, double** %40
store double* %9, double** %41
store double* %10, double** %42
store double* %11, double** %43
store double* %12, double** %44
store double* %13, double** %45
store double* %14, double** %46
store i32* %15, i32** %47
store i32* %16, i32** %48
store double* %17, double** %49
store double* %18, double** %50
store double* %19, double** %51
store double* %20, double** %52
store double* %21, double** %53
store double* %22, double** %54
store double* %23, double** %55
store double* %24, double** %56
store i32* %25, i32** %57
store i32* %26, i32** %58
store i8* %27, i8** %59
store i32* %28, i32** %60
store i32* %29, i32** %61
store double* %30, double** %62
%63 = load i32*, i32** %32
%64 = load i32*, i32** %33
%65 = load i32*, i32** %34
%66 = load i32*, i32** %35
%67 = load i32*, i32** %36
%68 = load double*, double** %37
%69 = load double*, double** %38
%70 = load i32*, i32** %39
%71 = load double*, double** %40
%72 = load double*, double** %41
%73 = load double*, double** %42
%74 = load double*, double** %43
%75 = load double*, double** %44
%76 = load double*, double** %45
%77 = load double*, double** %46
%78 = load i32*, i32** %47
%79 = load i32*, i32** %48
%80 = load double*, double** %49
%81 = load double*, double** %50
%82 = load double*, double** %51
%83 = load double*, double** %52
%84 = load double*, double** %53
%85 = load double*, double** %54
%86 = load double*, double** %55
%87 = load double*, double** %56
%88 = load i32*, i32** %57
%89 = load i32*, i32** %58
%90 = load i8*, i8** %59
%91 = load i32*, i32** %60
%92 = load i32*, i32** %61
%93 = load double*, double** %62
%94 = call i32 @f77dkernel400_(i32* %63, i32* %64, i32* %65, i32* %66, i32* %67, double* %68, double* %69, i32* %70, double* %71, double* %72, double* %73, double* %74, double* %75, double* %76, double* %77, i32* %78, i32* %79, double* %80, double* %81, double* %82, double* %83, double* %84, double* %85, double* %86, double* %87, i32* %88, i32* %89, i8* %90, i32* %91, i32* %92, double* %93)
ret void
}

LLVM IR (-O2):
define void @nb_kernel400_f77_double(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, double* %5, double* %6, i32* %7, double* %8, double* %9, double* %10, double* %11, double* %12, double* %13, double* %14, i32* %15, i32* %16, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double* %23, double* %24, i32* %25, i32* %26, i8* %27, i32* %28, i32* %29, double* %30) {
%32 = tail call i32 @f77dkernel400_(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, double* %5, double* %6, i32* %7, double* %8, double* %9, double* %10, double* %11, double* %12, double* %13, double* %14, i32* %15, i32* %16, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double* %23, double* %24, i32* %25, i32* %26, i8* %27, i32* %28, i32* %29, double* %30)
ret void
}