#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*/ umfpack_zi_solve(long, long *, long *, double *, double *,
                                    double *, double *, double *, double *,
                                    void *, double *, double *);
void umf4zsol(long *sys, double x[], double xz[], double b[], double bz[],
              void **Numeric, double Control[20], double Info[90]) {
  Control[7] = 0;
  (void)umfpack_zi_solve(*sys, (long *)0, (long *)0, (double *)0, (double *)0,
                         x, xz, b, bz, *Numeric, Control, Info);
}


x86 assembly (clang, -O0):
<umf4zsol>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x68,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %r8,-0x40(%rbp)
mov    %r9,-0x48(%rbp)
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x38(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r15
mov    -0x38(%rbp),%r14
mov    -0x40(%rbp),%rbx
mov    -0x48(%rbp),%rax
mov    (%rax),%r11
mov    0x10(%rbp),%r10
mov    0x18(%rbp),%rax
xor    %ecx,%ecx
mov    %ecx,%r8d
mov    %r8,%rsi
mov    %r8,%rdx
mov    %r8,%rcx
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1030 <umfpack_zi_solve@plt>
add    $0x68,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<umf4zsol>:
push   %r15
push   %r14
push   %rbx
mov    %r9,%rax
mov    %r8,%r10
mov    %rcx,%r11
mov    %rdx,%rbx
mov    %rsi,%r9
mov    0x28(%rsp),%r14
mov    0x20(%rsp),%r15
movq   $0x0,0x38(%r15)
mov    (%rdi),%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %r8d,%r8d
push   %r14
push   %r15
push   (%rax)
push   %r10
push   %r11
push   %rbx
call   1030 <umfpack_zi_solve@plt>
add    $0x30,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @umf4zsol(i64* %0, double* %1, double* %2, double* %3, double* %4, i8** %5, double* %6, double* %7) {
%9 = alloca i64*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca i8**
%15 = alloca double*
%16 = alloca double*
store i64* %0, i64** %9
store double* %1, double** %10
store double* %2, double** %11
store double* %3, double** %12
store double* %4, double** %13
store i8** %5, i8*** %14
store double* %6, double** %15
store double* %7, double** %16
%17 = load double*, double** %15
%18 = getelementptr inbounds double, double* %17, i64 7
store double 0.000000e+00, double* %18
%19 = load i64*, i64** %9
%20 = load i64, i64* %19
%21 = load double*, double** %10
%22 = load double*, double** %11
%23 = load double*, double** %12
%24 = load double*, double** %13
%25 = load i8**, i8*** %14
%26 = load i8*, i8** %25
%27 = load double*, double** %15
%28 = load double*, double** %16
%29 = call i32 @umfpack_zi_solve(i64 %20, i64* null, i64* null, double* null, double* null, double* %21, double* %22, double* %23, double* %24, i8* %26, double* %27, double* %28)
ret void
}

LLVM IR (-O2):
define void @umf4zsol(i64* nocapture %0, double* %1, double* %2, double* %3, double* %4, i8** nocapture %5, double* %6, double* %7) {
%9 = getelementptr inbounds double, double* %6, i64 7
store double 0.000000e+00, double* %9
%10 = load i64, i64* %0
%11 = load i8*, i8** %5
%12 = tail call i32 @umfpack_zi_solve(i64 %10, i64* null, i64* null, double* null, double* null, double* %1, double* %2, double* %3, double* %4, i8* %11, double* %6, double* %7)
ret void
}