#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*/ dc3d0_(float *, float *, float *, float *, float *, float *,
                          float *, float *, float *, float *, float *, float *,
                          float *, float *, float *, float *, float *, float *,
                          float *, float *, float *, float *, int *);
float ux(float alpha, float x, float y, float z, float depth, float dip,
         float pot1, float pot2, float pot3, float pot4) {
  float ux, uy, uz, uxx, uyx, uzx, uxy, uyy, uzy, uxz, uyz, uzz;
  int iret;
  dc3d0_(&alpha, &x, &y, &z, &depth, &dip, &pot1, &pot2, &pot3, &pot4, &ux, &uy,
         &uz, &uxx, &uyx, &uzx, &uxy, &uyy, &uzy, &uxz, &uyz, &uzz, &iret);
  return ux;
}


x86 assembly (clang, -O0):
<ux>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x138,%rsp
movss  0x18(%rbp),%xmm8
movss  0x10(%rbp),%xmm8
movss  %xmm0,-0x2c(%rbp)
movss  %xmm1,-0x30(%rbp)
movss  %xmm2,-0x34(%rbp)
movss  %xmm3,-0x38(%rbp)
movss  %xmm4,-0x3c(%rbp)
movss  %xmm5,-0x40(%rbp)
movss  %xmm6,-0x44(%rbp)
movss  %xmm7,-0x48(%rbp)
lea    -0x2c(%rbp),%rdi
lea    -0x30(%rbp),%rsi
lea    -0x34(%rbp),%rdx
lea    -0x38(%rbp),%rcx
lea    -0x3c(%rbp),%r8
lea    -0x40(%rbp),%r9
lea    -0x44(%rbp),%rax
mov    %rax,-0xd0(%rbp)
lea    -0x48(%rbp),%rax
mov    %rax,-0xc8(%rbp)
lea    0x10(%rbp),%rax
mov    %rax,-0xc0(%rbp)
lea    0x18(%rbp),%rax
mov    %rax,-0xb8(%rbp)
lea    -0x4c(%rbp),%rax
mov    %rax,-0xb0(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0xa8(%rbp)
lea    -0x54(%rbp),%rax
mov    %rax,-0xa0(%rbp)
lea    -0x58(%rbp),%rax
mov    %rax,-0x98(%rbp)
lea    -0x5c(%rbp),%rax
mov    %rax,-0x90(%rbp)
lea    -0x60(%rbp),%r13
lea    -0x64(%rbp),%r12
lea    -0x68(%rbp),%r15
lea    -0x6c(%rbp),%r14
lea    -0x70(%rbp),%rbx
lea    -0x74(%rbp),%r11
lea    -0x78(%rbp),%r10
lea    -0x7c(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0xd0(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xc8(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0xc0(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0xb8(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0xb0(%rbp),%rax
mov    %rax,0x20(%rsp)
mov    -0xa8(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0xa0(%rbp),%rax
mov    %rax,0x30(%rsp)
mov    -0x98(%rbp),%rax
mov    %rax,0x38(%rsp)
mov    -0x90(%rbp),%rax
mov    %rax,0x40(%rsp)
mov    -0x88(%rbp),%rax
mov    %r13,0x48(%rsp)
mov    %r12,0x50(%rsp)
mov    %r15,0x58(%rsp)
mov    %r14,0x60(%rsp)
mov    %rbx,0x68(%rsp)
mov    %r11,0x70(%rsp)
mov    %r10,0x78(%rsp)
mov    %rax,0x80(%rsp)
call   1030 <dc3d0_@plt>
movss  -0x4c(%rbp),%xmm0
add    $0x138,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<ux>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
movss  %xmm0,0x24(%rsp)
movss  %xmm1,0x20(%rsp)
movss  %xmm2,0x1c(%rsp)
movss  %xmm3,0x18(%rsp)
movss  %xmm4,0x14(%rsp)
movss  %xmm5,0x10(%rsp)
movss  %xmm6,0xc(%rsp)
movss  %xmm7,0x8(%rsp)
sub    $0x8,%rsp
lea    0x30(%rsp),%rax
lea    0x34(%rsp),%r10
lea    0x38(%rsp),%r11
lea    0x3c(%rsp),%rbx
lea    0x40(%rsp),%r14
lea    0x44(%rsp),%r15
lea    0x48(%rsp),%r12
lea    0x4c(%rsp),%r13
lea    0x50(%rsp),%rbp
lea    0x2c(%rsp),%rdi
lea    0x28(%rsp),%rsi
lea    0x24(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x1c(%rsp),%r8
lea    0x18(%rsp),%r9
push   %rax
push   %r10
push   %r11
push   %rbx
push   %r14
push   %r15
push   %r12
push   %r13
push   %rbp
lea    0x9c(%rsp),%rax
push   %rax
lea    0xa8(%rsp),%rax
push   %rax
lea    0xb4(%rsp),%rax
push   %rax
lea    0x6c(%rsp),%rax
push   %rax
lea    0x108(%rsp),%rax
push   %rax
lea    0x108(%rsp),%rax
push   %rax
lea    0x88(%rsp),%rax
push   %rax
lea    0x94(%rsp),%rax
push   %rax
call   1030 <dc3d0_@plt>
add    $0x90,%rsp
movss  0x4(%rsp),%xmm0
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define float @ux(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9) {
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
%33 = alloca i32
store float %0, float* %11
store float %1, float* %12
store float %2, float* %13
store float %3, float* %14
store float %4, float* %15
store float %5, float* %16
store float %6, float* %17
store float %7, float* %18
store float %8, float* %19
store float %9, float* %20
%34 = call i32 @dc3d0_(float* %11, float* %12, float* %13, float* %14, float* %15, float* %16, float* %17, float* %18, float* %19, float* %20, float* %21, float* %22, float* %23, float* %24, float* %25, float* %26, float* %27, float* %28, float* %29, float* %30, float* %31, float* %32, i32* %33)
%35 = load float, float* %21
ret float %35
}

LLVM IR (-O2):
define float @ux(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9) {
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
%33 = alloca i32
store float %0, float* %11
store float %1, float* %12
store float %2, float* %13
store float %3, float* %14
store float %4, float* %15
store float %5, float* %16
store float %6, float* %17
store float %7, float* %18
store float %8, float* %19
store float %9, float* %20
%34 = bitcast float* %21 to i8*
%35 = bitcast float* %22 to i8*
%36 = bitcast float* %23 to i8*
%37 = bitcast float* %24 to i8*
%38 = bitcast float* %25 to i8*
%39 = bitcast float* %26 to i8*
%40 = bitcast float* %27 to i8*
%41 = bitcast float* %28 to i8*
%42 = bitcast float* %29 to i8*
%43 = bitcast float* %30 to i8*
%44 = bitcast float* %31 to i8*
%45 = bitcast float* %32 to i8*
%46 = bitcast i32* %33 to i8*
%47 = call i32 @dc3d0_(float* %11, float* %12, float* %13, float* %14, float* %15, float* %16, float* %17, float* %18, float* %19, float* %20, float* %21, float* %22, float* %23, float* %24, float* %25, float* %26, float* %27, float* %28, float* %29, float* %30, float* %31, float* %32, i32* %33)
%48 = load float, float* %21
ret float %48
}