#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 */
struct DMSpoint {
  int dummy;
};

/* Variables and functions */
int /*<<< orphan*/ DEM_DMStoFloat(struct DMSpoint *, double *, double *);
double fabs(double);
long labs(long);
int /*<<< orphan*/ modf(double, double *);
char *DEM_DMStoGrid(char *str, struct DMSpoint *point) {
  long c;
  double g4, R, M, L4;
  double TEMP, TEMP1;
  double LocLat, LocLon;
  DEM_DMStoFloat(point, &LocLat, &LocLon);
  LocLon *= -1.0;
  g4 = 180 - LocLon;
  c = (long)(g4 / 20);
  str[0] = (char)(c + 65);
  R = fabs(LocLon / 20);
  modf(R, &TEMP);
  modf((R - TEMP) * 20, &TEMP1);
  R = TEMP1;
  c = (long)(R / 2);
  if (LocLon >= 0)
    c = labs(c - 9L);
  str[2] = (char)(c + 48);
  M = fabs(LocLon * 60.0) / 120.0;
  modf(M, &TEMP);
  M = (M - TEMP) * 120.0;
  modf(M, &TEMP);
  M = TEMP;
  c = (long)(M / 5.0);
  if (LocLon >= 0)
    c = labs(c - 23);
  str[4] = (char)(c + 'a');
  L4 = LocLat + 90.0;
  c = (long)(L4 / 10.0);
  str[1] = (char)(c + 65);
  R = fabs(LocLat / 10.0);
  modf(R, &TEMP);
  modf((R - TEMP) * 10.0, &TEMP1);
  R = TEMP1;
  c = (long)R;
  if (LocLat < 0)
    c = labs(c - 9);
  str[3] = (char)(c + 48);
  M = fabs(LocLat * 60.0) / 60.0;
  modf(M, &TEMP);
  M = (M - TEMP) * 60.0;
  c = (long)(M / 2.5);
  if (LocLat < 0)
    c = labs(c - 23);
  str[5] = (char)(c + 'a');
  str[6] = '\000';
  return str;
}


x86 assembly (clang, -O0):
<DEM_DMStoGrid>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x50(%rbp),%rsi
lea    -0x58(%rbp),%rdx
call   1050 <DEM_DMStoFloat@plt>
movsd  0xebf(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xea5(%rip),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xe86(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x41,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
movsd  -0x58(%rbp),%xmm0
movsd  0xe5c(%rip),%xmm1
divsd  %xmm1,%xmm0
movaps 0xe99(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
lea    -0x40(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x28(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xe28(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    -0x48(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  0xdfc(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x18(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1234 <DEM_DMStoGrid+0x104>
mov    -0x18(%rbp),%rdi
sub    $0x9,%rdi
call   1030 <labs@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x30,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x2(%rax)
movsd  0xde3(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
movaps 0xdf7(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xdc3(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
lea    -0x40(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x30(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xd9a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
lea    -0x40(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xd64(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x18(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     12ec <DEM_DMStoGrid+0x1bc>
mov    -0x18(%rbp),%rdi
sub    $0x17,%rdi
call   1030 <labs@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x61,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x4(%rax)
movsd  0xd3b(%rip),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xd1c(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x41,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1(%rax)
movsd  -0x50(%rbp),%xmm0
movsd  0xcf1(%rip),%xmm1
divsd  %xmm1,%xmm0
movaps 0xcfe(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
lea    -0x40(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x28(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xcbd(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    -0x48(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
cvttsd2si -0x28(%rbp),%rax
mov    %rax,-0x18(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    13bb <DEM_DMStoGrid+0x28b>
mov    -0x18(%rbp),%rdi
sub    $0x9,%rdi
call   1030 <labs@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x30,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x3(%rax)
movsd  0xc5c(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movaps 0xc70(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xc44(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
lea    -0x40(%rbp),%rdi
call   1040 <modf@plt>
movsd  -0x30(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xc1b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xc1d(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x18(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1457 <DEM_DMStoGrid+0x327>
mov    -0x18(%rbp),%rdi
sub    $0x17,%rdi
call   1030 <labs@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x61,%rax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x5(%rax)
mov    -0x8(%rbp),%rax
movb   $0x0,0x6(%rax)
mov    -0x8(%rbp),%rax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<DEM_DMStoGrid>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x30,%rsp
mov    %rsi,%rax
mov    %rdi,%rbx
lea    0x20(%rsp),%rsi
lea    0x8(%rsp),%rdx
mov    %rax,%rdi
call   1040 <DEM_DMStoFloat@plt>
movsd  0x8(%rsp),%xmm0
movapd 0xeae(%rip),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x8(%rsp)
movsd  0xebc(%rip),%xmm1
addsd  %xmm0,%xmm1
divsd  0xeb8(%rip),%xmm1
cvttsd2si %xmm1,%rax
add    $0x41,%al
mov    %al,(%rbx)
divsd  0xeaf(%rip),%xmm0
andpd  0xe87(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
mov    %rsp,%r14
mov    %r14,%rdi
call   1030 <modf@plt>
movapd 0x10(%rsp),%xmm0
subsd  (%rsp),%xmm0
mulsd  0xe7b(%rip),%xmm0
lea    0x28(%rsp),%r15
mov    %r15,%rdi
call   1030 <modf@plt>
movsd  0x28(%rsp),%xmm0
mulsd  0xe70(%rip),%xmm0
cvttsd2si %xmm0,%rax
movsd  0x8(%rsp),%xmm1
mov    $0x9,%cl
sub    %al,%cl
lea    -0x9(%rax),%edx
cmp    $0x9,%rax
movzbl %cl,%ecx
movzbl %dl,%edx
cmovl  %ecx,%edx
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
cmovae %edx,%eax
mov    $0x9,%bpl
add    $0x30,%al
mov    %al,0x2(%rbx)
mulsd  0xe3e(%rip),%xmm1
andpd  0xe06(%rip),%xmm1
divsd  0xe36(%rip),%xmm1
movapd %xmm1,%xmm0
movapd %xmm1,0x10(%rsp)
mov    %r14,%rdi
call   1030 <modf@plt>
movapd 0x10(%rsp),%xmm0
subsd  (%rsp),%xmm0
mulsd  0xe11(%rip),%xmm0
mov    %r14,%rdi
call   1030 <modf@plt>
movsd  (%rsp),%xmm0
divsd  0xe04(%rip),%xmm0
cvttsd2si %xmm0,%rax
movsd  0x8(%rsp),%xmm0
mov    $0x17,%cl
sub    %al,%cl
lea    -0x17(%rax),%edx
cmp    $0x17,%rax
movzbl %cl,%ecx
movzbl %dl,%edx
cmovl  %ecx,%edx
ucomisd 0xdfd(%rip),%xmm0
mov    $0x17,%r12b
cmovae %edx,%eax
add    $0x61,%al
mov    %al,0x4(%rbx)
movsd  0x20(%rsp),%xmm0
movsd  0xdcc(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xdc8(%rip),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%rax
add    $0x41,%al
mov    %al,0x1(%rbx)
divsd  %xmm2,%xmm0
andpd  0xd5e(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
mov    %r14,%rdi
call   1030 <modf@plt>
movapd 0x10(%rsp),%xmm0
subsd  (%rsp),%xmm0
mulsd  0xd8d(%rip),%xmm0
mov    %r15,%rdi
call   1030 <modf@plt>
cvttsd2si 0x28(%rsp),%rax
movsd  0x20(%rsp),%xmm1
sub    %al,%bpl
lea    -0x9(%rax),%ecx
cmp    $0x9,%rax
movzbl %bpl,%edx
movzbl %cl,%ecx
cmovl  %edx,%ecx
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
add    $0x30,%al
mov    %al,0x3(%rbx)
movsd  0xd2c(%rip),%xmm0
mulsd  %xmm0,%xmm1
andpd  0xcf0(%rip),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
mov    %r14,%rdi
call   1030 <modf@plt>
movapd 0x10(%rsp),%xmm0
subsd  (%rsp),%xmm0
mulsd  0xcf7(%rip),%xmm0
divsd  0xd17(%rip),%xmm0
cvttsd2si %xmm0,%rax
sub    %al,%r12b
lea    -0x17(%rax),%ecx
cmp    $0x17,%rax
movzbl %r12b,%edx
movzbl %cl,%ecx
cmovl  %edx,%ecx
xorpd  %xmm0,%xmm0
ucomisd 0x20(%rsp),%xmm0
cmova  %ecx,%eax
add    $0x61,%al
mov    %al,0x5(%rbx)
movb   $0x0,0x6(%rbx)
mov    %rbx,%rax
add    $0x30,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.DMSpoint = type { i32 }
define i8* @DEM_DMStoGrid(i8* %0, %struct.DMSpoint* %1) {
%3 = alloca i8*
%4 = alloca %struct.DMSpoint*
%5 = alloca i64
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
store i8* %0, i8** %3
store %struct.DMSpoint* %1, %struct.DMSpoint** %4
%14 = load %struct.DMSpoint*, %struct.DMSpoint** %4
%15 = call i32 @DEM_DMStoFloat(%struct.DMSpoint* %14, double* %12, double* %13)
%16 = load double, double* %13
%17 = fmul double %16, -1.000000e+00
store double %17, double* %13
%18 = load double, double* %13
%19 = fsub double 1.800000e+02, %18
store double %19, double* %6
%20 = load double, double* %6
%21 = fdiv double %20, 2.000000e+01
%22 = fptosi double %21 to i64
store i64 %22, i64* %5
%23 = load i64, i64* %5
%24 = add nsw i64 %23, 65
%25 = trunc i64 %24 to i8
%26 = load i8*, i8** %3
%27 = getelementptr inbounds i8, i8* %26, i64 0
store i8 %25, i8* %27
%28 = load double, double* %13
%29 = fdiv double %28, 2.000000e+01
%30 = call double @llvm.fabs.f64(double %29)
store double %30, double* %7
%31 = load double, double* %7
%32 = call i32 @modf(double %31, double* %10)
%33 = load double, double* %7
%34 = load double, double* %10
%35 = fsub double %33, %34
%36 = fmul double %35, 2.000000e+01
%37 = call i32 @modf(double %36, double* %11)
%38 = load double, double* %11
store double %38, double* %7
%39 = load double, double* %7
%40 = fdiv double %39, 2.000000e+00
%41 = fptosi double %40 to i64
store i64 %41, i64* %5
%42 = load double, double* %13
%43 = fcmp oge double %42, 0.000000e+00
br i1 %43, label %44, label %48
44: ; preds = %2
%45 = load i64, i64* %5
%46 = sub nsw i64 %45, 9
%47 = call i64 @labs(i64 %46)
store i64 %47, i64* %5
br label %48
48: ; preds = %44, %2
%49 = load i64, i64* %5
%50 = add nsw i64 %49, 48
%51 = trunc i64 %50 to i8
%52 = load i8*, i8** %3
%53 = getelementptr inbounds i8, i8* %52, i64 2
store i8 %51, i8* %53
%54 = load double, double* %13
%55 = fmul double %54, 6.000000e+01
%56 = call double @llvm.fabs.f64(double %55)
%57 = fdiv double %56, 1.200000e+02
store double %57, double* %8
%58 = load double, double* %8
%59 = call i32 @modf(double %58, double* %10)
%60 = load double, double* %8
%61 = load double, double* %10
%62 = fsub double %60, %61
%63 = fmul double %62, 1.200000e+02
store double %63, double* %8
%64 = load double, double* %8
%65 = call i32 @modf(double %64, double* %10)
%66 = load double, double* %10
store double %66, double* %8
%67 = load double, double* %8
%68 = fdiv double %67, 5.000000e+00
%69 = fptosi double %68 to i64
store i64 %69, i64* %5
%70 = load double, double* %13
%71 = fcmp oge double %70, 0.000000e+00
br i1 %71, label %72, label %76
72: ; preds = %48
%73 = load i64, i64* %5
%74 = sub nsw i64 %73, 23
%75 = call i64 @labs(i64 %74)
store i64 %75, i64* %5
br label %76
76: ; preds = %72, %48
%77 = load i64, i64* %5
%78 = add nsw i64 %77, 97
%79 = trunc i64 %78 to i8
%80 = load i8*, i8** %3
%81 = getelementptr inbounds i8, i8* %80, i64 4
store i8 %79, i8* %81
%82 = load double, double* %12
%83 = fadd double %82, 9.000000e+01
store double %83, double* %9
%84 = load double, double* %9
%85 = fdiv double %84, 1.000000e+01
%86 = fptosi double %85 to i64
store i64 %86, i64* %5
%87 = load i64, i64* %5
%88 = add nsw i64 %87, 65
%89 = trunc i64 %88 to i8
%90 = load i8*, i8** %3
%91 = getelementptr inbounds i8, i8* %90, i64 1
store i8 %89, i8* %91
%92 = load double, double* %12
%93 = fdiv double %92, 1.000000e+01
%94 = call double @llvm.fabs.f64(double %93)
store double %94, double* %7
%95 = load double, double* %7
%96 = call i32 @modf(double %95, double* %10)
%97 = load double, double* %7
%98 = load double, double* %10
%99 = fsub double %97, %98
%100 = fmul double %99, 1.000000e+01
%101 = call i32 @modf(double %100, double* %11)
%102 = load double, double* %11
store double %102, double* %7
%103 = load double, double* %7
%104 = fptosi double %103 to i64
store i64 %104, i64* %5
%105 = load double, double* %12
%106 = fcmp olt double %105, 0.000000e+00
br i1 %106, label %107, label %111
107: ; preds = %76
%108 = load i64, i64* %5
%109 = sub nsw i64 %108, 9
%110 = call i64 @labs(i64 %109)
store i64 %110, i64* %5
br label %111
111: ; preds = %107, %76
%112 = load i64, i64* %5
%113 = add nsw i64 %112, 48
%114 = trunc i64 %113 to i8
%115 = load i8*, i8** %3
%116 = getelementptr inbounds i8, i8* %115, i64 3
store i8 %114, i8* %116
%117 = load double, double* %12
%118 = fmul double %117, 6.000000e+01
%119 = call double @llvm.fabs.f64(double %118)
%120 = fdiv double %119, 6.000000e+01
store double %120, double* %8
%121 = load double, double* %8
%122 = call i32 @modf(double %121, double* %10)
%123 = load double, double* %8
%124 = load double, double* %10
%125 = fsub double %123, %124
%126 = fmul double %125, 6.000000e+01
store double %126, double* %8
%127 = load double, double* %8
%128 = fdiv double %127, 2.500000e+00
%129 = fptosi double %128 to i64
store i64 %129, i64* %5
%130 = load double, double* %12
%131 = fcmp olt double %130, 0.000000e+00
br i1 %131, label %132, label %136
132: ; preds = %111
%133 = load i64, i64* %5
%134 = sub nsw i64 %133, 23
%135 = call i64 @labs(i64 %134)
store i64 %135, i64* %5
br label %136
136: ; preds = %132, %111
%137 = load i64, i64* %5
%138 = add nsw i64 %137, 97
%139 = trunc i64 %138 to i8
%140 = load i8*, i8** %3
%141 = getelementptr inbounds i8, i8* %140, i64 5
store i8 %139, i8* %141
%142 = load i8*, i8** %3
%143 = getelementptr inbounds i8, i8* %142, i64 6
store i8 0, i8* %143
%144 = load i8*, i8** %3
ret i8* %144
}

LLVM IR (-O2):
%struct.DMSpoint = type { i32 }
define i8* @DEM_DMStoGrid(i8* returned writeonly %0, %struct.DMSpoint* %1) {
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = bitcast double* %3 to i8*
%8 = bitcast double* %4 to i8*
%9 = bitcast double* %5 to i8*
%10 = bitcast double* %6 to i8*
%11 = call i32 @DEM_DMStoFloat(%struct.DMSpoint* %1, double* %5, double* %6)
%12 = load double, double* %6
%13 = fneg double %12
store double %13, double* %6
%14 = fadd double %12, 1.800000e+02
%15 = fdiv double %14, 2.000000e+01
%16 = fptosi double %15 to i64
%17 = trunc i64 %16 to i8
%18 = add i8 %17, 65
store i8 %18, i8* %0
%19 = fdiv double %12, -2.000000e+01
%20 = call double @llvm.fabs.f64(double %19)
%21 = call i32 @modf(double %20, double* %3)
%22 = load double, double* %3
%23 = fsub double %20, %22
%24 = fmul double %23, 2.000000e+01
%25 = call i32 @modf(double %24, double* %4)
%26 = load double, double* %4
%27 = fmul double %26, 5.000000e-01
%28 = fptosi double %27 to i64
%29 = load double, double* %6
%30 = fcmp ult double %29, 0.000000e+00
%31 = add i64 %28, 247
%32 = icmp slt i64 %28, 9
%33 = sub i64 9, %28
%34 = select i1 %32, i64 %33, i64 %31
%35 = select i1 %30, i64 %28, i64 %34
%36 = trunc i64 %35 to i8
%37 = add i8 %36, 48
%38 = getelementptr inbounds i8, i8* %0, i64 2
store i8 %37, i8* %38
%39 = fmul double %29, 6.000000e+01
%40 = call double @llvm.fabs.f64(double %39)
%41 = fdiv double %40, 1.200000e+02
%42 = call i32 @modf(double %41, double* %3)
%43 = load double, double* %3
%44 = fsub double %41, %43
%45 = fmul double %44, 1.200000e+02
%46 = call i32 @modf(double %45, double* %3)
%47 = load double, double* %3
%48 = fdiv double %47, 5.000000e+00
%49 = fptosi double %48 to i64
%50 = load double, double* %6
%51 = fcmp ult double %50, 0.000000e+00
%52 = add i64 %49, 233
%53 = icmp slt i64 %49, 23
%54 = sub i64 23, %49
%55 = select i1 %53, i64 %54, i64 %52
%56 = select i1 %51, i64 %49, i64 %55
%57 = trunc i64 %56 to i8
%58 = add i8 %57, 97
%59 = getelementptr inbounds i8, i8* %0, i64 4
store i8 %58, i8* %59
%60 = load double, double* %5
%61 = fadd double %60, 9.000000e+01
%62 = fdiv double %61, 1.000000e+01
%63 = fptosi double %62 to i64
%64 = trunc i64 %63 to i8
%65 = add i8 %64, 65
%66 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %65, i8* %66
%67 = fdiv double %60, 1.000000e+01
%68 = call double @llvm.fabs.f64(double %67)
%69 = call i32 @modf(double %68, double* %3)
%70 = load double, double* %3
%71 = fsub double %68, %70
%72 = fmul double %71, 1.000000e+01
%73 = call i32 @modf(double %72, double* %4)
%74 = load double, double* %4
%75 = fptosi double %74 to i64
%76 = load double, double* %5
%77 = fcmp olt double %76, 0.000000e+00
%78 = add i64 %75, 247
%79 = icmp slt i64 %75, 9
%80 = sub i64 9, %75
%81 = select i1 %79, i64 %80, i64 %78
%82 = select i1 %77, i64 %81, i64 %75
%83 = trunc i64 %82 to i8
%84 = add i8 %83, 48
%85 = getelementptr inbounds i8, i8* %0, i64 3
store i8 %84, i8* %85
%86 = fmul double %76, 6.000000e+01
%87 = call double @llvm.fabs.f64(double %86)
%88 = fdiv double %87, 6.000000e+01
%89 = call i32 @modf(double %88, double* %3)
%90 = load double, double* %3
%91 = fsub double %88, %90
%92 = fmul double %91, 6.000000e+01
%93 = fdiv double %92, 2.500000e+00
%94 = fptosi double %93 to i64
%95 = load double, double* %5
%96 = fcmp olt double %95, 0.000000e+00
%97 = add i64 %94, 233
%98 = icmp slt i64 %94, 23
%99 = sub i64 23, %94
%100 = select i1 %98, i64 %99, i64 %97
%101 = select i1 %96, i64 %100, i64 %94
%102 = trunc i64 %101 to i8
%103 = add i8 %102, 97
%104 = getelementptr inbounds i8, i8* %0, i64 5
store i8 %103, i8* %104
%105 = getelementptr inbounds i8, i8* %0, i64 6
store i8 0, i8* %105
ret i8* %0
}