void difbxa_(double *t, double *u, double *ux, double *dbdu, double *dbdux,
             double *dbdt, int *npde) {
  (void)t;
  (void)u;
  (void)ux;
  (void)npde;
  dbdu[0] = -100.;
  dbdu[4] = 0.;
  dbdu[8] = 0.;
  dbdu[12] = 0.;
  dbdu[1] = 0.;
  dbdu[5] = -100.;
  dbdu[9] = 0.;
  dbdu[13] = 0.;
  dbdu[2] = 0.;
  dbdu[6] = 0.;
  dbdu[10] = 0.;
  dbdu[14] = 0.;
  dbdu[3] = 0.;
  dbdu[7] = 0.;
  dbdu[11] = 0.;
  dbdu[15] = 0.;
  dbdux[0] = 1.;
  dbdux[4] = 0.;
  dbdux[8] = 0.;
  dbdux[12] = 0.;
  dbdux[1] = 0.;
  dbdux[5] = 1.;
  dbdux[9] = 0.;
  dbdux[13] = 0.;
  dbdux[2] = 0.;
  dbdux[6] = 0.;
  dbdux[10] = 1.;
  dbdux[14] = 0.;
  dbdux[3] = 0.;
  dbdux[7] = 0.;
  dbdux[11] = 0.;
  dbdux[15] = 1.;
  dbdt[0] = 0.;
  dbdt[1] = 0.;
  dbdt[2] = 0.;
  dbdt[3] = 0.;
}


x86 assembly (clang, -O0):
<difbxa_>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  0xedc(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x20(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x60(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x20(%rbp),%rax
movsd  0xe9c(%rip),%xmm0
movsd  %xmm0,0x28(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x48(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x68(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x50(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x70(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x38(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x58(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x78(%rax)
mov    -0x28(%rbp),%rax
movsd  0xe0b(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x20(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x60(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x28(%rbp),%rax
movsd  0xdcb(%rip),%xmm0
movsd  %xmm0,0x28(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x48(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x68(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
mov    -0x28(%rbp),%rax
movsd  0xd8a(%rip),%xmm0
movsd  %xmm0,0x50(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x70(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x38(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x58(%rax)
mov    -0x28(%rbp),%rax
movsd  0xd49(%rip),%xmm0
movsd  %xmm0,0x78(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x18(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<difbxa_>:
movq   $0x0,0x40(%rcx)
movsd  0xef0(%rip),%xmm0
movups %xmm0,(%rcx)
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
movhps 0xee0(%rip),%xmm1
movups %xmm1,0x20(%rcx)
movups %xmm0,0x10(%rcx)
movups %xmm0,0x30(%rcx)
movups %xmm0,0x48(%rcx)
movups %xmm0,0x58(%rcx)
movups %xmm0,0x68(%rcx)
movq   $0x0,0x78(%rcx)
movsd  0xec0(%rip),%xmm1
movups %xmm1,(%r8)
xorps  %xmm2,%xmm2
movhps 0xeb2(%rip),%xmm2
movups %xmm2,0x20(%r8)
movups %xmm0,0x40(%r8)
movups %xmm0,0x60(%r8)
movups %xmm0,0x10(%r8)
movups %xmm0,0x30(%r8)
movups %xmm1,0x50(%r8)
movups %xmm2,0x70(%r8)
movups %xmm0,0x10(%r9)
movups %xmm0,(%r9)
ret

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

LLVM IR (-O2):
define void @difbxa_(double* nocapture readnone %0, double* nocapture readnone %1, double* nocapture readnone %2, double* nocapture writeonly %3, double* nocapture writeonly %4, double* nocapture writeonly %5, i32* nocapture readnone %6) {
%8 = getelementptr inbounds double, double* %3, i64 4
%9 = getelementptr inbounds double, double* %3, i64 8
store double 0.000000e+00, double* %9
%10 = getelementptr inbounds double, double* %3, i64 12
store double 0.000000e+00, double* %10
%11 = bitcast double* %3 to <2 x double>*
store <2 x double> <double -1.000000e+02, double 0.000000e+00>, <2 x double>* %11
%12 = bitcast double* %8 to <2 x double>*
store <2 x double> <double 0.000000e+00, double -1.000000e+02>, <2 x double>* %12
%13 = getelementptr inbounds double, double* %3, i64 9
%14 = getelementptr inbounds double, double* %3, i64 13
%15 = getelementptr inbounds double, double* %3, i64 2
%16 = getelementptr inbounds double, double* %3, i64 6
%17 = bitcast double* %15 to i8*
%18 = bitcast double* %16 to i8*
%19 = bitcast double* %13 to i8*
%20 = bitcast double* %14 to i8*
%21 = getelementptr inbounds double, double* %4, i64 4
%22 = getelementptr inbounds double, double* %4, i64 8
%23 = getelementptr inbounds double, double* %4, i64 12
%24 = bitcast double* %4 to <2 x double>*
store <2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double>* %24
%25 = bitcast double* %21 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 1.000000e+00>, <2 x double>* %25
%26 = bitcast double* %22 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %26
%27 = bitcast double* %23 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %27
%28 = getelementptr inbounds double, double* %4, i64 2
%29 = getelementptr inbounds double, double* %4, i64 6
%30 = getelementptr inbounds double, double* %4, i64 10
%31 = getelementptr inbounds double, double* %4, i64 14
%32 = bitcast double* %28 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %32
%33 = bitcast double* %29 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %33
%34 = bitcast double* %30 to <2 x double>*
store <2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double>* %34
%35 = bitcast double* %31 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 1.000000e+00>, <2 x double>* %35
%36 = bitcast double* %5 to i8*
ret void
}