int dseupd(int RVEC, char HOWMNY, int *SELECT, double *D, double *Z, int LDZ,
           double SIGMA, unsigned char BMAT, int N, unsigned char *WHICH,
           int NEV, double TOL, double *RESID, int NCV, double *V, int LDV,
           int *IPARAM, int *IPNTR, double *WORKD, double *WORKL, int LWORKL,
           int *INFO) {
  extern int dseupd_(int *RVEC, char *HOWMNY, int *SELECT, double *D, double *Z,
                     int *LDZ, double *SIGMA, unsigned char *BMAT, int *N,
                     unsigned char *WHICH, int *NEV, double *TOL, double *RESID,
                     int *NCV, double *V, int *LDV, int *IPARAM, int *IPNTR,
                     double *WORKD, double *WORKL, int *LWORKL, int *INFO);
  return dseupd_(&RVEC, &HOWMNY, SELECT, D, Z, &LDZ, &SIGMA, &BMAT, &N, WHICH,
                 &NEV, &TOL, RESID, &NCV, V, &LDV, IPARAM, IPNTR, WORKD, WORKL,
                 &LWORKL, INFO);
}


x86 assembly (clang, -O0):
<dseupd>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
mov    %sil,%al
mov    0x78(%rbp),%rsi
mov    0x70(%rbp),%esi
mov    0x68(%rbp),%rsi
mov    0x60(%rbp),%rsi
mov    0x58(%rbp),%rsi
mov    0x50(%rbp),%rsi
mov    0x48(%rbp),%esi
mov    0x40(%rbp),%rsi
mov    0x38(%rbp),%esi
mov    0x30(%rbp),%rsi
mov    0x28(%rbp),%esi
mov    0x20(%rbp),%rsi
mov    0x18(%rbp),%esi
mov    0x10(%rbp),%sil
mov    %edi,-0x2c(%rbp)
mov    %al,-0x2d(%rbp)
mov    %rdx,-0x38(%rbp)
mov    %rcx,-0x40(%rbp)
mov    %r8,-0x48(%rbp)
mov    %r9d,-0x4c(%rbp)
movsd  %xmm0,-0x58(%rbp)
movsd  %xmm1,-0x60(%rbp)
mov    -0x38(%rbp),%rdx
mov    -0x40(%rbp),%rcx
mov    -0x48(%rbp),%r8
mov    0x20(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    0x30(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    0x40(%rbp),%r13
mov    0x50(%rbp),%r15
mov    0x58(%rbp),%r14
mov    0x60(%rbp),%rbx
mov    0x68(%rbp),%r11
mov    0x78(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x2c(%rbp),%rdi
lea    -0x2d(%rbp),%rsi
lea    -0x4c(%rbp),%r9
lea    -0x58(%rbp),%rax
lea    0x10(%rbp),%r10
mov    %r10,-0xa0(%rbp)
lea    0x18(%rbp),%r10
mov    %r10,-0x98(%rbp)
lea    0x28(%rbp),%r10
mov    %r10,-0x88(%rbp)
lea    -0x60(%rbp),%r10
mov    %r10,-0x80(%rbp)
lea    0x38(%rbp),%r10
mov    %r10,-0x70(%rbp)
lea    0x48(%rbp),%r12
lea    0x70(%rbp),%r10
mov    %rax,(%rsp)
mov    -0xa0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x98(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0x90(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0x88(%rbp),%rax
mov    %rax,0x20(%rsp)
mov    -0x80(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0x78(%rbp),%rax
mov    %rax,0x30(%rsp)
mov    -0x70(%rbp),%rax
mov    %rax,0x38(%rsp)
mov    -0x68(%rbp),%rax
mov    %r13,0x40(%rsp)
mov    %r12,0x48(%rsp)
mov    %r15,0x50(%rsp)
mov    %r14,0x58(%rsp)
mov    %rbx,0x60(%rsp)
mov    %r11,0x68(%rsp)
mov    %r10,0x70(%rsp)
mov    %rax,0x78(%rsp)
call   1030 <dseupd_@plt>
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dseupd>:
push   %rbx
sub    $0xa0,%rsp
mov    0xc0(%rsp),%r10
mov    0xd0(%rsp),%r11
mov    0xe0(%rsp),%rax
movaps 0xf0(%rsp),%xmm2
movaps 0x100(%rsp),%xmm3
mov    0x118(%rsp),%rbx
mov    %edi,0x8c(%rsp)
mov    %sil,0x87(%rsp)
mov    %r9d,0x88(%rsp)
movsd  %xmm0,0x98(%rsp)
movsd  %xmm1,0x90(%rsp)
mov    %rbx,0x78(%rsp)
lea    0x110(%rsp),%rsi
mov    %rsi,0x70(%rsp)
movups %xmm3,0x60(%rsp)
movups %xmm2,0x50(%rsp)
lea    0xe8(%rsp),%rsi
mov    %rsi,0x48(%rsp)
mov    %rax,0x40(%rsp)
lea    0xd8(%rsp),%rax
mov    %rax,0x38(%rsp)
mov    %r11,0x30(%rsp)
lea    0x90(%rsp),%rax
mov    %rax,0x28(%rsp)
lea    0xc8(%rsp),%rax
mov    %rax,0x20(%rsp)
mov    %r10,0x18(%rsp)
lea    0xb8(%rsp),%rax
mov    %rax,0x10(%rsp)
lea    0xb0(%rsp),%rax
mov    %rax,0x8(%rsp)
lea    0x98(%rsp),%rax
mov    %rax,(%rsp)
lea    0x8c(%rsp),%rdi
lea    0x87(%rsp),%rsi
lea    0x88(%rsp),%r9
call   1030 <dseupd_@plt>
add    $0xa0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define i32 @dseupd(i32 %0, i8 signext %1, i32* %2, double* %3, double* %4, i32 %5, double %6, i8 zeroext %7, i32 %8, i8* %9, i32 %10, double %11, double* %12, i32 %13, double* %14, i32 %15, i32* %16, i32* %17, double* %18, double* %19, i32 %20, i32* %21) {
%23 = alloca i32
%24 = alloca i8
%25 = alloca i32*
%26 = alloca double*
%27 = alloca double*
%28 = alloca i32
%29 = alloca double
%30 = alloca i8
%31 = alloca i32
%32 = alloca i8*
%33 = alloca i32
%34 = alloca double
%35 = alloca double*
%36 = alloca i32
%37 = alloca double*
%38 = alloca i32
%39 = alloca i32*
%40 = alloca i32*
%41 = alloca double*
%42 = alloca double*
%43 = alloca i32
%44 = alloca i32*
store i32 %0, i32* %23
store i8 %1, i8* %24
store i32* %2, i32** %25
store double* %3, double** %26
store double* %4, double** %27
store i32 %5, i32* %28
store double %6, double* %29
store i8 %7, i8* %30
store i32 %8, i32* %31
store i8* %9, i8** %32
store i32 %10, i32* %33
store double %11, double* %34
store double* %12, double** %35
store i32 %13, i32* %36
store double* %14, double** %37
store i32 %15, i32* %38
store i32* %16, i32** %39
store i32* %17, i32** %40
store double* %18, double** %41
store double* %19, double** %42
store i32 %20, i32* %43
store i32* %21, i32** %44
%45 = load i32*, i32** %25
%46 = load double*, double** %26
%47 = load double*, double** %27
%48 = load i8*, i8** %32
%49 = load double*, double** %35
%50 = load double*, double** %37
%51 = load i32*, i32** %39
%52 = load i32*, i32** %40
%53 = load double*, double** %41
%54 = load double*, double** %42
%55 = load i32*, i32** %44
%56 = call i32 @dseupd_(i32* %23, i8* %24, i32* %45, double* %46, double* %47, i32* %28, double* %29, i8* %30, i32* %31, i8* %48, i32* %33, double* %34, double* %49, i32* %36, double* %50, i32* %38, i32* %51, i32* %52, double* %53, double* %54, i32* %43, i32* %55)
ret i32 %56
}

LLVM IR (-O2):
define i32 @dseupd(i32 %0, i8 signext %1, i32* %2, double* %3, double* %4, i32 %5, double %6, i8 zeroext %7, i32 %8, i8* %9, i32 %10, double %11, double* %12, i32 %13, double* %14, i32 %15, i32* %16, i32* %17, double* %18, double* %19, i32 %20, i32* %21) {
%23 = alloca i32
%24 = alloca i8
%25 = alloca i32
%26 = alloca double
%27 = alloca i8
%28 = alloca i32
%29 = alloca i32
%30 = alloca double
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
store i32 %0, i32* %23
store i8 %1, i8* %24
store i32 %5, i32* %25
store double %6, double* %26
store i8 %7, i8* %27
store i32 %8, i32* %28
store i32 %10, i32* %29
store double %11, double* %30
store i32 %13, i32* %31
store i32 %15, i32* %32
store i32 %20, i32* %33
%34 = call i32 @dseupd_(i32* %23, i8* %24, i32* %2, double* %3, double* %4, i32* %25, double* %26, i8* %27, i32* %28, i8* %9, i32* %29, double* %30, double* %12, i32* %31, double* %14, i32* %32, i32* %16, i32* %17, double* %18, double* %19, i32* %33, i32* %21)
ret i32 %34
}