#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 M_PI;
double acos(int);
int cos(int);
int pow(int, double);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, int *);
double sin(double);
double sqrt(int);
int main(void) {
  int AB = 0.0;
  int CA = 0.0;
  int CAB = 0.0;
  double BC = 0.0;
  double BCA = 0.0;
  double ABC = 0.0;
  double HA = 0.0;
  double HB = 0.0;
  double HC = 0.0;
  double area = 0.0;
  printf("\nEnter the length of side AB: ");
  scanf("%d", &AB);
  printf("Enter the length of side CA: ");
  scanf("%d", &CA);
  printf("Enter the angle (degrees) of CAB: ");
  scanf("%d", &CAB);
  BC = sqrt(pow(AB, 2.0) + pow(CA, 2.0) -
            (2 * AB * CA * cos(CAB * M_PI / (180.0))));
  ABC = acos((pow(AB, 2.0) + (pow(BC, 2.0) - pow(CA, 2.0))) / (2 * BC * AB));
  ABC = ABC * (180.0 / M_PI);
  BCA = acos((pow(CA, 2.0) + (pow(BC, 2.0) - pow(AB, 2.0))) / (2 * CA * BC));
  BCA = BCA * (180.0 / M_PI);
  HA = sin(BCA * M_PI / 180) * CA;
  HB = sin(CAB * M_PI / 180) * AB;
  HC = sin(ABC * M_PI / 180) * BC;
  area = 0.5 * HB * CA;
  printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  printf("\nArea of triangle:%18.1lf", area);
  printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  printf("\nLength of side AB:%17.1lf", (double)AB);
  printf("\nLength of side BC:%17.1lf", BC);
  printf("\nLength of side CA:%17.1lf", (double)CA);
  printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  printf("\nValue of angle CAB:%16.2lf", (double)CAB);
  printf("\nValue of angle BCA:%16.2lf", BCA);
  printf("\nValue of angle ABC:%16.2lf", ABC);
  printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  printf("\nHeight-A of triangle:%14.3lf", HA);
  printf("\nHeight-B of triangle:%14.3lf", HB);
  printf("\nHeight-C of triangle:%14.3lf\n\n", HC);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
lea    0xe45(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe56(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe38(%rip),%rdi
lea    -0xc(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe1a(%rip),%rdi
lea    -0x10(%rbp),%rsi
call   1060 <scanf@plt>
mov    -0x8(%rbp),%edi
movsd  0xddf(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,-0x64(%rbp)
mov    -0xc(%rbp),%edi
movsd  0xdcc(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ecx
mov    -0x64(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x60(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
imul   -0xc(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x10(%rbp),%eax
mov    0x2d7e(%rip),%rcx
imul   (%rcx),%eax
cvtsi2sd %eax,%xmm0
movsd  0xd8f(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1070 <cos@plt>
mov    -0x60(%rbp),%edi
mov    %eax,%ecx
mov    -0x5c(%rbp),%eax
imul   %ecx,%eax
sub    %eax,%edi
call   1090 <sqrt@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%edi
movsd  0xd68(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,-0x54(%rbp)
cvttsd2si -0x18(%rbp),%edi
movsd  0xd53(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,-0x58(%rbp)
mov    -0xc(%rbp),%edi
movsd  0xd40(%rip),%xmm0
call   1080 <pow@plt>
mov    -0x58(%rbp),%ecx
mov    %eax,%edx
mov    -0x54(%rbp),%eax
sub    %edx,%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  0xd23(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
cvtsi2sdl -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <acos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mov    0x2ccf(%rip),%rax
cvtsi2sdl (%rax),%xmm2
movsd  0xce3(%rip),%xmm1
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0xc(%rbp),%edi
movsd  0xcd3(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,-0x4c(%rbp)
cvttsd2si -0x18(%rbp),%edi
movsd  0xcbe(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,-0x50(%rbp)
mov    -0x8(%rbp),%edi
movsd  0xcab(%rip),%xmm0
call   1080 <pow@plt>
mov    -0x50(%rbp),%ecx
mov    %eax,%edx
mov    -0x4c(%rbp),%eax
sub    %edx,%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
mov    -0xc(%rbp),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm1
mulsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <acos@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    0x2c41(%rip),%rax
cvtsi2sdl (%rax),%xmm2
movsd  0xc55(%rip),%xmm1
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    0x2c1c(%rip),%rax
cvtsi2sdl (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc2c(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1050 <sin@plt>
cvtsi2sdl -0xc(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%eax
mov    0x2beb(%rip),%rcx
imul   (%rcx),%eax
mov    $0xb4,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
call   1050 <sin@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
mov    0x2bbd(%rip),%rax
cvtsi2sdl (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbcd(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1050 <sin@plt>
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xbaa(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
lea    0xc0b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x48(%rbp),%xmm0
lea    0xc1d(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xbea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cvtsi2sdl -0x8(%rbp),%xmm0
lea    0xc16(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x18(%rbp),%xmm0
lea    0xc1e(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
cvtsi2sdl -0xc(%rbp),%xmm0
lea    0xc26(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xba3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cvtsi2sdl -0x10(%rbp),%xmm0
lea    0xc20(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x20(%rbp),%xmm0
lea    0xc29(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x28(%rbp),%xmm0
lea    0xc32(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xb5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
lea    0xc2d(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x38(%rbp),%xmm0
lea    0xc38(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x40(%rbp),%xmm0
lea    0xc43(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x48,%rsp
movl   $0x0,0x8(%rsp)
movl   $0x0,0x4(%rsp)
movl   $0x0,0xc(%rsp)
lea    0xe7f(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xe90(%rip),%rbx
lea    0x8(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xe7f(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x4(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xe82(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xc(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    0x8(%rsp),%edi
movsd  0xe0a(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ebx
mov    0x4(%rsp),%edi
movsd  0xdf7(%rip),%xmm0
call   1080 <pow@plt>
add    %eax,%ebx
mov    0x8(%rsp),%ebp
imul   0x4(%rsp),%ebp
mov    0x2dc8(%rip),%r15
mov    (%r15),%eax
imul   0xc(%rsp),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xdd1(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1070 <cos@plt>
imul   %ebp,%eax
add    %eax,%eax
sub    %eax,%ebx
mov    %ebx,%edi
call   1090 <sqrt@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x8(%rsp),%edi
movsd  0xda0(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ebp
cvttsd2si 0x10(%rsp),%r14d
mov    %r14d,%edi
movsd  0xd87(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ebx
mov    0x4(%rsp),%edi
movsd  0xd74(%rip),%xmm0
call   1080 <pow@plt>
add    %ebp,%ebx
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  0x10(%rsp),%xmm1
addsd  %xmm1,%xmm1
cvtsi2sdl 0x8(%rsp),%xmm2
mulsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <acos@plt>
xorps  %xmm1,%xmm1
cvtsi2sdl (%r15),%xmm1
movsd  0xd3b(%rip),%xmm2
divsd  %xmm1,%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,0x20(%rsp)
mov    0x4(%rsp),%edi
movsd  0xd19(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ebx
mov    %r14d,%edi
movsd  0xd07(%rip),%xmm0
call   1080 <pow@plt>
mov    %eax,%ebp
mov    0x8(%rsp),%edi
movsd  0xcf4(%rip),%xmm0
call   1080 <pow@plt>
add    %ebx,%ebp
sub    %eax,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
mov    0x4(%rsp),%eax
add    %eax,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0x10(%rsp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <acos@plt>
movapd %xmm0,%xmm3
xorps  %xmm0,%xmm0
cvtsi2sdl (%r15),%xmm0
movsd  0xcb8(%rip),%xmm2
movapd %xmm2,%xmm1
divsd  %xmm0,%xmm1
mulsd  %xmm1,%xmm3
movsd  %xmm3,0x38(%rsp)
mulsd  %xmm3,%xmm0
divsd  %xmm2,%xmm0
call   1050 <sin@plt>
xorps  %xmm1,%xmm1
cvtsi2sdl 0x4(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x40(%rsp)
mov    (%r15),%eax
imul   0xc(%rsp),%eax
cltq
imul   $0xffffffffb60b60b7,%rax,%rcx
shr    $0x20,%rcx
add    %ecx,%eax
mov    %eax,%ecx
shr    $0x1f,%ecx
sar    $0x7,%eax
add    %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
call   1050 <sin@plt>
xorps  %xmm1,%xmm1
cvtsi2sdl 0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sdl (%r15),%xmm0
mulsd  0x20(%rsp),%xmm0
divsd  0xc30(%rip),%xmm0
call   1050 <sin@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xc1f(%rip),%xmm0
mulsd  0x18(%rsp),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sdl 0x4(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x28(%rsp)
lea    0xc6a(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xc7e(%rip),%rdi
movsd  0x28(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
xorps  %xmm0,%xmm0
cvtsi2sdl 0x8(%rsp),%xmm0
lea    0xc71(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc7e(%rip),%rdi
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
xorps  %xmm0,%xmm0
cvtsi2sdl 0x4(%rsp),%xmm0
lea    0xc7c(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
xorps  %xmm0,%xmm0
cvtsi2sdl 0xc(%rsp),%xmm0
lea    0xc76(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc84(%rip),%rdi
movsd  0x38(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc8c(%rip),%rdi
movsd  0x20(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xc8a(%rip),%rdi
movsd  0x40(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc94(%rip),%rdi
movsd  0x18(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc9e(%rip),%rdi
movsd  0x30(%rsp),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [31 x i8] c"\0AEnter the length of side AB: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [30 x i8] c"Enter the length of side CA: \00"
@.str.3 = [35 x i8] c"Enter the angle (degrees) of CAB: \00"
@M_PI = global i32 0
@.str.4 = [37 x i8] c"\0A-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\00"
@.str.5 = [26 x i8] c"\0AArea of triangle:%18.1lf\00"
@.str.6 = [27 x i8] c"\0ALength of side AB:%17.1lf\00"
@.str.7 = [27 x i8] c"\0ALength of side BC:%17.1lf\00"
@.str.8 = [27 x i8] c"\0ALength of side CA:%17.1lf\00"
@.str.9 = [28 x i8] c"\0AValue of angle CAB:%16.2lf\00"
@.str.10 = [28 x i8] c"\0AValue of angle BCA:%16.2lf\00"
@.str.11 = [28 x i8] c"\0AValue of angle ABC:%16.2lf\00"
@.str.12 = [30 x i8] c"\0AHeight-A of triangle:%14.3lf\00"
@.str.13 = [30 x i8] c"\0AHeight-B of triangle:%14.3lf\00"
@.str.14 = [32 x i8] c"\0AHeight-C of triangle:%14.3lf\0A\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
store i32 0, i32* %1
store i32 0, i32* %2
store i32 0, i32* %3
store i32 0, i32* %4
store double 0.000000e+00, double* %5
store double 0.000000e+00, double* %6
store double 0.000000e+00, double* %7
store double 0.000000e+00, double* %8
store double 0.000000e+00, double* %9
store double 0.000000e+00, double* %10
store double 0.000000e+00, double* %11
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0))
%13 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %2)
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0))
%15 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %3)
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.3, i64 0, i64 0))
%17 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %4)
%18 = load i32, i32* %2
%19 = call i32 @pow(i32 %18, double 2.000000e+00)
%20 = load i32, i32* %3
%21 = call i32 @pow(i32 %20, double 2.000000e+00)
%22 = add nsw i32 %19, %21
%23 = load i32, i32* %2
%24 = mul nsw i32 2, %23
%25 = load i32, i32* %3
%26 = mul nsw i32 %24, %25
%27 = load i32, i32* %4
%28 = load i32, i32* @M_PI
%29 = mul nsw i32 %27, %28
%30 = sitofp i32 %29 to double
%31 = fdiv double %30, 1.800000e+02
%32 = fptosi double %31 to i32
%33 = call i32 @cos(i32 %32)
%34 = mul nsw i32 %26, %33
%35 = sub nsw i32 %22, %34
%36 = call double @sqrt(i32 %35)
store double %36, double* %5
%37 = load i32, i32* %2
%38 = call i32 @pow(i32 %37, double 2.000000e+00)
%39 = load double, double* %5
%40 = fptosi double %39 to i32
%41 = call i32 @pow(i32 %40, double 2.000000e+00)
%42 = load i32, i32* %3
%43 = call i32 @pow(i32 %42, double 2.000000e+00)
%44 = sub nsw i32 %41, %43
%45 = add nsw i32 %38, %44
%46 = sitofp i32 %45 to double
%47 = load double, double* %5
%48 = fmul double 2.000000e+00, %47
%49 = load i32, i32* %2
%50 = sitofp i32 %49 to double
%51 = fmul double %48, %50
%52 = fdiv double %46, %51
%53 = fptosi double %52 to i32
%54 = call double @acos(i32 %53)
store double %54, double* %7
%55 = load double, double* %7
%56 = load i32, i32* @M_PI
%57 = sitofp i32 %56 to double
%58 = fdiv double 1.800000e+02, %57
%59 = fmul double %55, %58
store double %59, double* %7
%60 = load i32, i32* %3
%61 = call i32 @pow(i32 %60, double 2.000000e+00)
%62 = load double, double* %5
%63 = fptosi double %62 to i32
%64 = call i32 @pow(i32 %63, double 2.000000e+00)
%65 = load i32, i32* %2
%66 = call i32 @pow(i32 %65, double 2.000000e+00)
%67 = sub nsw i32 %64, %66
%68 = add nsw i32 %61, %67
%69 = sitofp i32 %68 to double
%70 = load i32, i32* %3
%71 = mul nsw i32 2, %70
%72 = sitofp i32 %71 to double
%73 = load double, double* %5
%74 = fmul double %72, %73
%75 = fdiv double %69, %74
%76 = fptosi double %75 to i32
%77 = call double @acos(i32 %76)
store double %77, double* %6
%78 = load double, double* %6
%79 = load i32, i32* @M_PI
%80 = sitofp i32 %79 to double
%81 = fdiv double 1.800000e+02, %80
%82 = fmul double %78, %81
store double %82, double* %6
%83 = load double, double* %6
%84 = load i32, i32* @M_PI
%85 = sitofp i32 %84 to double
%86 = fmul double %83, %85
%87 = fdiv double %86, 1.800000e+02
%88 = call double @sin(double %87)
%89 = load i32, i32* %3
%90 = sitofp i32 %89 to double
%91 = fmul double %88, %90
store double %91, double* %8
%92 = load i32, i32* %4
%93 = load i32, i32* @M_PI
%94 = mul nsw i32 %92, %93
%95 = sdiv i32 %94, 180
%96 = sitofp i32 %95 to double
%97 = call double @sin(double %96)
%98 = load i32, i32* %2
%99 = sitofp i32 %98 to double
%100 = fmul double %97, %99
store double %100, double* %9
%101 = load double, double* %7
%102 = load i32, i32* @M_PI
%103 = sitofp i32 %102 to double
%104 = fmul double %101, %103
%105 = fdiv double %104, 1.800000e+02
%106 = call double @sin(double %105)
%107 = load double, double* %5
%108 = fmul double %106, %107
store double %108, double* %10
%109 = load double, double* %9
%110 = fmul double 5.000000e-01, %109
%111 = load i32, i32* %3
%112 = sitofp i32 %111 to double
%113 = fmul double %110, %112
store double %113, double* %11
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%115 = load double, double* %11
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i64 0, i64 0), double %115)
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%118 = load i32, i32* %2
%119 = sitofp i32 %118 to double
%120 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i64 0, i64 0), double %119)
%121 = load double, double* %5
%122 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0), double %121)
%123 = load i32, i32* %3
%124 = sitofp i32 %123 to double
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), double %124)
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%127 = load i32, i32* %4
%128 = sitofp i32 %127 to double
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.9, i64 0, i64 0), double %128)
%130 = load double, double* %6
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0), double %130)
%132 = load double, double* %7
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0), double %132)
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%135 = load double, double* %8
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.12, i64 0, i64 0), double %135)
%137 = load double, double* %9
%138 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.13, i64 0, i64 0), double %137)
%139 = load double, double* %10
%140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0), double %139)
ret i32 0
}

LLVM IR (-O2):
@.str = [31 x i8] c"\0AEnter the length of side AB: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [30 x i8] c"Enter the length of side CA: \00"
@.str.3 = [35 x i8] c"Enter the angle (degrees) of CAB: \00"
@M_PI = global i32 0
@.str.4 = [37 x i8] c"\0A-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\00"
@.str.5 = [26 x i8] c"\0AArea of triangle:%18.1lf\00"
@.str.6 = [27 x i8] c"\0ALength of side AB:%17.1lf\00"
@.str.7 = [27 x i8] c"\0ALength of side BC:%17.1lf\00"
@.str.8 = [27 x i8] c"\0ALength of side CA:%17.1lf\00"
@.str.9 = [28 x i8] c"\0AValue of angle CAB:%16.2lf\00"
@.str.10 = [28 x i8] c"\0AValue of angle BCA:%16.2lf\00"
@.str.11 = [28 x i8] c"\0AValue of angle ABC:%16.2lf\00"
@.str.12 = [30 x i8] c"\0AHeight-A of triangle:%14.3lf\00"
@.str.13 = [30 x i8] c"\0AHeight-B of triangle:%14.3lf\00"
@.str.14 = [32 x i8] c"\0AHeight-C of triangle:%14.3lf\0A\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = bitcast i32* %1 to i8*
store i32 0, i32* %1
%5 = bitcast i32* %2 to i8*
store i32 0, i32* %2
%6 = bitcast i32* %3 to i8*
store i32 0, i32* %3
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0))
%8 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %1)
%9 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0))
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %2)
%11 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.3, i64 0, i64 0))
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %3)
%13 = load i32, i32* %1
%14 = call i32 @pow(i32 %13, double 2.000000e+00)
%15 = load i32, i32* %2
%16 = call i32 @pow(i32 %15, double 2.000000e+00)
%17 = add nsw i32 %16, %14
%18 = load i32, i32* %1
%19 = mul i32 %18, -2
%20 = load i32, i32* %2
%21 = mul i32 %19, %20
%22 = load i32, i32* %3
%23 = load i32, i32* @M_PI
%24 = mul nsw i32 %23, %22
%25 = sitofp i32 %24 to double
%26 = fdiv double %25, 1.800000e+02
%27 = fptosi double %26 to i32
%28 = call i32 @cos(i32 %27)
%29 = mul i32 %21, %28
%30 = add i32 %17, %29
%31 = call double @sqrt(i32 %30)
%32 = load i32, i32* %1
%33 = call i32 @pow(i32 %32, double 2.000000e+00)
%34 = fptosi double %31 to i32
%35 = call i32 @pow(i32 %34, double 2.000000e+00)
%36 = load i32, i32* %2
%37 = call i32 @pow(i32 %36, double 2.000000e+00)
%38 = add i32 %35, %33
%39 = sub i32 %38, %37
%40 = sitofp i32 %39 to double
%41 = fmul double %31, 2.000000e+00
%42 = load i32, i32* %1
%43 = sitofp i32 %42 to double
%44 = fmul double %41, %43
%45 = fdiv double %40, %44
%46 = fptosi double %45 to i32
%47 = call double @acos(i32 %46)
%48 = load i32, i32* @M_PI
%49 = sitofp i32 %48 to double
%50 = fdiv double 1.800000e+02, %49
%51 = fmul double %47, %50
%52 = load i32, i32* %2
%53 = call i32 @pow(i32 %52, double 2.000000e+00)
%54 = call i32 @pow(i32 %34, double 2.000000e+00)
%55 = load i32, i32* %1
%56 = call i32 @pow(i32 %55, double 2.000000e+00)
%57 = add i32 %54, %53
%58 = sub i32 %57, %56
%59 = sitofp i32 %58 to double
%60 = load i32, i32* %2
%61 = shl nsw i32 %60, 1
%62 = sitofp i32 %61 to double
%63 = fmul double %31, %62
%64 = fdiv double %59, %63
%65 = fptosi double %64 to i32
%66 = call double @acos(i32 %65)
%67 = load i32, i32* @M_PI
%68 = sitofp i32 %67 to double
%69 = fdiv double 1.800000e+02, %68
%70 = fmul double %66, %69
%71 = fmul double %70, %68
%72 = fdiv double %71, 1.800000e+02
%73 = call double @sin(double %72)
%74 = load i32, i32* %2
%75 = sitofp i32 %74 to double
%76 = fmul double %73, %75
%77 = load i32, i32* %3
%78 = load i32, i32* @M_PI
%79 = mul nsw i32 %78, %77
%80 = sdiv i32 %79, 180
%81 = sitofp i32 %80 to double
%82 = call double @sin(double %81)
%83 = load i32, i32* %1
%84 = sitofp i32 %83 to double
%85 = fmul double %82, %84
%86 = load i32, i32* @M_PI
%87 = sitofp i32 %86 to double
%88 = fmul double %51, %87
%89 = fdiv double %88, 1.800000e+02
%90 = call double @sin(double %89)
%91 = fmul double %31, %90
%92 = fmul double %85, 5.000000e-01
%93 = load i32, i32* %2
%94 = sitofp i32 %93 to double
%95 = fmul double %92, %94
%96 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%97 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i64 0, i64 0), double %95)
%98 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%99 = load i32, i32* %1
%100 = sitofp i32 %99 to double
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i64 0, i64 0), double %100)
%102 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0), double %31)
%103 = load i32, i32* %2
%104 = sitofp i32 %103 to double
%105 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), double %104)
%106 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%107 = load i32, i32* %3
%108 = sitofp i32 %107 to double
%109 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.9, i64 0, i64 0), double %108)
%110 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0), double %70)
%111 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0), double %51)
%112 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%113 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.12, i64 0, i64 0), double %76)
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.13, i64 0, i64 0), double %85)
%115 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0), double %91)
ret i32 0
}