void ra2hms(double ra, char *rach, char *rast) {
  double temp;
  int h, m, itemp, i, recog, toHours;
  float s;
  char rectypes[8][5] = {"RA  ", "GLON", "ELON", "LL  ",
                         "DEC ", "GLAT", "ELAT", "MM  "};
  char minus[2] = "-";
  toHours =
      (!strncmp(rach, rectypes[0], 2)) || (!strncmp(rach, rectypes[3], 2));
  temp = ra;
  if (temp > 360.0)
    temp = temp - 360.0;
  if (toHours) {
    if (temp < 0.0)
      temp = temp + 360.0;
    temp = temp / 15.0;
  }
  itemp = (int)temp;
  h = itemp;
  temp = temp - (double)itemp;
  if (temp < 0.0)
    temp = -temp;
  temp = temp * 60.0;
  itemp = (int)temp;
  m = itemp;
  temp = temp - (double)itemp;
  temp = temp * 60.0;
  s = (float)temp;
  for (i = 0; i < 4; i++)
    rast[i] = ' ';
  rast[4] = 0;
  for (i = 0; i < 4; i++) {
    if (rach[i] == minus[0])
      break;
    rast[i] = rach[i];
  }
  recog = 0;
  for (i = 0; i < 8; i++)
    recog = recog || (!strcmp(rast, rectypes[i]));
  if (recog) {
    if (toHours)
      sprintf(&rast[4], "%2.2d %2.2d %6.4f", h, m, s);
    else
      sprintf(&rast[4], "%3.2d %2.2d %6.3f", h, m, s);
  } else
    sprintf(&rast[4], "%13.6lg", ra);
}


x86 assembly (clang, -O0):
<ra2hms>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
lea    -0x70(%rbp),%rdi
lea    0xebd(%rip),%rsi
mov    $0x28,%edx
call   1050 <memcpy@plt>
mov    0xed4(%rip),%ax
mov    %ax,-0x72(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x70(%rbp),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
mov    %eax,%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x73(%rbp)
je     11bb <ra2hms+0x7b>
mov    -0x10(%rbp),%rdi
lea    -0x70(%rbp),%rsi
add    $0xf,%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
mov    %al,-0x73(%rbp)
mov    -0x73(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x38(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xe23(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11fd <ra2hms+0xbd>
movsd  -0x20(%rbp),%xmm0
movsd  0xe0c(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
cmpl   $0x0,-0x38(%rbp)
je     123d <ra2hms+0xfd>
xorps  %xmm0,%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    1227 <ra2hms+0xe7>
movsd  0xde3(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xdd4(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
cvttsd2si -0x20(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x24(%rbp)
movsd  -0x20(%rbp),%xmm0
cvtsi2sdl -0x2c(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    128d <ra2hms+0x14d>
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xd7b(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
cvttsd2si -0x20(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
cvtsi2sdl -0x2c(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xd48(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    130b <ra2hms+0x1cb>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12e7 <ra2hms+0x1a7>
mov    -0x18(%rbp),%rax
movb   $0x0,0x4(%rax)
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    1365 <ra2hms+0x225>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x72(%rbp),%ecx
cmp    %ecx,%eax
jne    1341 <ra2hms+0x201>
jmp    1365 <ra2hms+0x225>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    131a <ra2hms+0x1da>
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    13c8 <ra2hms+0x288>
mov    $0x1,%al
cmpl   $0x0,-0x34(%rbp)
mov    %al,-0x74(%rbp)
jne    13af <ra2hms+0x26f>
mov    -0x18(%rbp),%rdi
movslq -0x30(%rbp),%rax
lea    -0x70(%rbp),%rsi
imul   $0x5,%rax,%rax
add    %rax,%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
mov    %al,-0x74(%rbp)
mov    -0x74(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1373 <ra2hms+0x233>
cmpl   $0x0,-0x34(%rbp)
je     1430 <ra2hms+0x2f0>
cmpl   $0x0,-0x38(%rbp)
je     1406 <ra2hms+0x2c6>
mov    -0x18(%rbp),%rdi
add    $0x4,%rdi
mov    -0x24(%rbp),%edx
mov    -0x28(%rbp),%ecx
movss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc50(%rip),%rsi
mov    $0x1,%al
call   1060 <sprintf@plt>
jmp    142b <ra2hms+0x2eb>
mov    -0x18(%rbp),%rdi
add    $0x4,%rdi
mov    -0x24(%rbp),%edx
mov    -0x28(%rbp),%ecx
movss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc38(%rip),%rsi
mov    $0x1,%al
call   1060 <sprintf@plt>
jmp    144b <ra2hms+0x30b>
mov    -0x18(%rbp),%rdi
add    $0x4,%rdi
movsd  -0x8(%rbp),%xmm0
lea    0xc2a(%rip),%rsi
mov    $0x1,%al
call   1060 <sprintf@plt>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ra2hms>:
push   %rbp
push   %r14
push   %rbx
sub    $0x20,%rsp
mov    %rsi,%rbx
mov    %rdi,%r14
movaps %xmm0,(%rsp)
lea    0xee7(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     119d <ra2hms+0x6d>
lea    0xee1(%rip),%rsi
mov    $0x2,%edx
mov    %r14,%rdi
call   1030 <strncmp@plt>
movsd  0xe8d(%rip),%xmm0
movapd (%rsp),%xmm3
addsd  %xmm3,%xmm0
movsd  0xe84(%rip),%xmm4
cmpltsd %xmm3,%xmm4
andpd  %xmm4,%xmm0
andnpd %xmm3,%xmm4
orpd   %xmm0,%xmm4
test   %eax,%eax
je     11c7 <ra2hms+0x97>
xor    %ebp,%ebp
jmp    11fb <ra2hms+0xcb>
movsd  0xe5b(%rip),%xmm0
movapd (%rsp),%xmm3
addsd  %xmm3,%xmm0
movsd  0xe52(%rip),%xmm4
cmpltsd %xmm3,%xmm4
andpd  %xmm4,%xmm0
andnpd %xmm3,%xmm4
orpd   %xmm0,%xmm4
movsd  0xe39(%rip),%xmm0
addsd  %xmm4,%xmm0
xorpd  %xmm1,%xmm1
movapd %xmm4,%xmm2
cmpltsd %xmm1,%xmm2
andpd  %xmm2,%xmm0
andnpd %xmm4,%xmm2
orpd   %xmm0,%xmm2
divsd  0xe1c(%rip),%xmm2
mov    $0x1,%bpl
movapd %xmm2,%xmm4
movapd %xmm4,0x10(%rsp)
movl   $0x20202020,(%rbx)
movb   $0x0,0x4(%rbx)
mov    (%r14),%al
cmp    $0x2d,%al
je     1235 <ra2hms+0x105>
mov    %al,(%rbx)
mov    0x1(%r14),%al
cmp    $0x2d,%al
je     1235 <ra2hms+0x105>
mov    %al,0x1(%rbx)
mov    0x2(%r14),%al
cmp    $0x2d,%al
je     1235 <ra2hms+0x105>
mov    %al,0x2(%rbx)
mov    0x3(%r14),%al
cmp    $0x2d,%al
je     1235 <ra2hms+0x105>
mov    %al,0x3(%rbx)
lea    0x4(%rbx),%r14
lea    0xdf0(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xdde(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xdcc(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xdbe(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xdb0(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xda2(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xd94(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xd86(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     12f6 <ra2hms+0x1c6>
lea    0xd9c(%rip),%rsi
mov    %r14,%rdi
movaps (%rsp),%xmm0
mov    $0x1,%al
add    $0x20,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1050 <sprintf@plt>
movapd 0x10(%rsp),%xmm4
cvttpd2dq %xmm4,%xmm0
cvtdq2pd %xmm0,%xmm0
movapd %xmm4,%xmm1
subsd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
movapd 0xd08(%rip),%xmm2
xorpd  %xmm1,%xmm2
movapd %xmm1,%xmm3
cmpltsd %xmm0,%xmm3
andpd  %xmm3,%xmm2
andnpd %xmm1,%xmm3
orpd   %xmm2,%xmm3
movsd  0xcdf(%rip),%xmm0
mulsd  %xmm0,%xmm3
cvttpd2dq %xmm3,%xmm1
cvtdq2pd %xmm1,%xmm1
cvttsd2si %xmm3,%ecx
subsd  %xmm1,%xmm3
mulsd  %xmm0,%xmm3
cvttsd2si %xmm4,%edx
xorps  %xmm0,%xmm0
cvtsd2ss %xmm3,%xmm0
cvtss2sd %xmm0,%xmm0
test   %bpl,%bpl
je     136e <ra2hms+0x23e>
lea    0xcec(%rip),%rsi
jmp    1375 <ra2hms+0x245>
lea    0xcf5(%rip),%rsi
mov    %r14,%rdi
mov    $0x1,%al
add    $0x20,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1050 <sprintf@plt>

LLVM IR (-O0):
@__const.ra2hms.rectypes = [8 x [5 x i8]] [[5 x i8] c"RA \00", [5 x i8] c"GLON\00", [5 x i8] c"ELON\00", [5 x i8] c"LL \00", [5 x i8] c"DEC \00", [5 x i8] c"GLAT\00", [5 x i8] c"ELAT\00", [5 x i8] c"MM \00"]
@__const.ra2hms.minus = [2 x i8] c"-\00"
@.str = [18 x i8] c"%2.2d %2.2d %6.4f\00"
@.str.1 = [18 x i8] c"%3.2d %2.2d %6.3f\00"
@.str.2 = [8 x i8] c"%13.6lg\00"
define void @ra2hms(double %0, i8* %1, i8* %2) {
%4 = alloca double
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca double
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca float
%15 = alloca [8 x [5 x i8]]
%16 = alloca [2 x i8]
store double %0, double* %4
store i8* %1, i8** %5
store i8* %2, i8** %6
%17 = bitcast [8 x [5 x i8]]* %15 to i8*
%18 = bitcast [2 x i8]* %16 to i8*
%19 = load i8*, i8** %5
%20 = getelementptr inbounds [8 x [5 x i8]], [8 x [5 x i8]]* %15, i64 0, i64 0
%21 = getelementptr inbounds [5 x i8], [5 x i8]* %20, i64 0, i64 0
%22 = call i32 @strncmp(i8* %19, i8* %21, i64 2)
%23 = icmp ne i32 %22, 0
br i1 %23, label %24, label %31
24: ; preds = %3
%25 = load i8*, i8** %5
%26 = getelementptr inbounds [8 x [5 x i8]], [8 x [5 x i8]]* %15, i64 0, i64 3
%27 = getelementptr inbounds [5 x i8], [5 x i8]* %26, i64 0, i64 0
%28 = call i32 @strncmp(i8* %25, i8* %27, i64 2)
%29 = icmp ne i32 %28, 0
%30 = xor i1 %29, true
br label %31
31: ; preds = %24, %3
%32 = phi i1 [ true, %3 ], [ %30, %24 ]
%33 = zext i1 %32 to i32
store i32 %33, i32* %13
%34 = load double, double* %4
store double %34, double* %7
%35 = load double, double* %7
%36 = fcmp ogt double %35, 3.600000e+02
br i1 %36, label %37, label %40
37: ; preds = %31
%38 = load double, double* %7
%39 = fsub double %38, 3.600000e+02
store double %39, double* %7
br label %40
40: ; preds = %37, %31
%41 = load i32, i32* %13
%42 = icmp ne i32 %41, 0
br i1 %42, label %43, label %52
43: ; preds = %40
%44 = load double, double* %7
%45 = fcmp olt double %44, 0.000000e+00
br i1 %45, label %46, label %49
46: ; preds = %43
%47 = load double, double* %7
%48 = fadd double %47, 3.600000e+02
store double %48, double* %7
br label %49
49: ; preds = %46, %43
%50 = load double, double* %7
%51 = fdiv double %50, 1.500000e+01
store double %51, double* %7
br label %52
52: ; preds = %49, %40
%53 = load double, double* %7
%54 = fptosi double %53 to i32
store i32 %54, i32* %10
%55 = load i32, i32* %10
store i32 %55, i32* %8
%56 = load double, double* %7
%57 = load i32, i32* %10
%58 = sitofp i32 %57 to double
%59 = fsub double %56, %58
store double %59, double* %7
%60 = load double, double* %7
%61 = fcmp olt double %60, 0.000000e+00
br i1 %61, label %62, label %65
62: ; preds = %52
%63 = load double, double* %7
%64 = fneg double %63
store double %64, double* %7
br label %65
65: ; preds = %62, %52
%66 = load double, double* %7
%67 = fmul double %66, 6.000000e+01
store double %67, double* %7
%68 = load double, double* %7
%69 = fptosi double %68 to i32
store i32 %69, i32* %10
%70 = load i32, i32* %10
store i32 %70, i32* %9
%71 = load double, double* %7
%72 = load i32, i32* %10
%73 = sitofp i32 %72 to double
%74 = fsub double %71, %73
store double %74, double* %7
%75 = load double, double* %7
%76 = fmul double %75, 6.000000e+01
store double %76, double* %7
%77 = load double, double* %7
%78 = fptrunc double %77 to float
store float %78, float* %14
store i32 0, i32* %11
br label %79
79: ; preds = %87, %65
%80 = load i32, i32* %11
%81 = icmp slt i32 %80, 4
br i1 %81, label %82, label %90
82: ; preds = %79
%83 = load i8*, i8** %6
%84 = load i32, i32* %11
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds i8, i8* %83, i64 %85
store i8 32, i8* %86
br label %87
87: ; preds = %82
%88 = load i32, i32* %11
%89 = add nsw i32 %88, 1
store i32 %89, i32* %11
br label %79
90: ; preds = %79
%91 = load i8*, i8** %6
%92 = getelementptr inbounds i8, i8* %91, i64 4
store i8 0, i8* %92
store i32 0, i32* %11
br label %93
93: ; preds = %118, %90
%94 = load i32, i32* %11
%95 = icmp slt i32 %94, 4
br i1 %95, label %96, label %121
96: ; preds = %93
%97 = load i8*, i8** %5
%98 = load i32, i32* %11
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds i8, i8* %97, i64 %99
%101 = load i8, i8* %100
%102 = sext i8 %101 to i32
%103 = getelementptr inbounds [2 x i8], [2 x i8]* %16, i64 0, i64 0
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %102, %105
br i1 %106, label %107, label %108
107: ; preds = %96
br label %121
108: ; preds = %96
%109 = load i8*, i8** %5
%110 = load i32, i32* %11
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %109, i64 %111
%113 = load i8, i8* %112
%114 = load i8*, i8** %6
%115 = load i32, i32* %11
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i8, i8* %114, i64 %116
store i8 %113, i8* %117
br label %118
118: ; preds = %108
%119 = load i32, i32* %11
%120 = add nsw i32 %119, 1
store i32 %120, i32* %11
br label %93
121: ; preds = %107, %93
store i32 0, i32* %12
store i32 0, i32* %11
br label %122
122: ; preds = %140, %121
%123 = load i32, i32* %11
%124 = icmp slt i32 %123, 8
br i1 %124, label %125, label %143
125: ; preds = %122
%126 = load i32, i32* %12
%127 = icmp ne i32 %126, 0
br i1 %127, label %137, label %128
128: ; preds = %125
%129 = load i8*, i8** %6
%130 = load i32, i32* %11
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [8 x [5 x i8]], [8 x [5 x i8]]* %15, i64 0, i64 %131
%133 = getelementptr inbounds [5 x i8], [5 x i8]* %132, i64 0, i64 0
%134 = call i32 @strcmp(i8* %129, i8* %133)
%135 = icmp ne i32 %134, 0
%136 = xor i1 %135, true
br label %137
137: ; preds = %128, %125
%138 = phi i1 [ true, %125 ], [ %136, %128 ]
%139 = zext i1 %138 to i32
store i32 %139, i32* %12
br label %140
140: ; preds = %137
%141 = load i32, i32* %11
%142 = add nsw i32 %141, 1
store i32 %142, i32* %11
br label %122
143: ; preds = %122
%144 = load i32, i32* %12
%145 = icmp ne i32 %144, 0
br i1 %145, label %146, label %166
146: ; preds = %143
%147 = load i32, i32* %13
%148 = icmp ne i32 %147, 0
br i1 %148, label %149, label %157
149: ; preds = %146
%150 = load i8*, i8** %6
%151 = getelementptr inbounds i8, i8* %150, i64 4
%152 = load i32, i32* %8
%153 = load i32, i32* %9
%154 = load float, float* %14
%155 = fpext float %154 to double
%156 = call i32 (i8*, i8*, ...) @sprintf(i8* %151, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i32 %152, i32 %153, double %155)
br label %165
157: ; preds = %146
%158 = load i8*, i8** %6
%159 = getelementptr inbounds i8, i8* %158, i64 4
%160 = load i32, i32* %8
%161 = load i32, i32* %9
%162 = load float, float* %14
%163 = fpext float %162 to double
%164 = call i32 (i8*, i8*, ...) @sprintf(i8* %159, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i32 %160, i32 %161, double %163)
br label %165
165: ; preds = %157, %149
br label %171
166: ; preds = %143
%167 = load i8*, i8** %6
%168 = getelementptr inbounds i8, i8* %167, i64 4
%169 = load double, double* %4
%170 = call i32 (i8*, i8*, ...) @sprintf(i8* %168, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), double %169)
br label %171
171: ; preds = %166, %165
ret void
}

LLVM IR (-O2):
@__const.ra2hms.rectypes = [8 x [5 x i8]] [[5 x i8] c"RA \00", [5 x i8] c"GLON\00", [5 x i8] c"ELON\00", [5 x i8] c"LL \00", [5 x i8] c"DEC \00", [5 x i8] c"GLAT\00", [5 x i8] c"ELAT\00", [5 x i8] c"MM \00"]
@.str = [18 x i8] c"%2.2d %2.2d %6.4f\00"
@.str.1 = [18 x i8] c"%3.2d %2.2d %6.3f\00"
@.str.2 = [8 x i8] c"%13.6lg\00"
define void @ra2hms(double %0, i8* nocapture %1, i8* nocapture %2) {
%4 = tail call i32 @strncmp(i8* dereferenceable(1) %1, i8* dereferenceable(1) getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 0, i64 0), i64 2)
%5 = icmp eq i32 %4, 0
br i1 %5, label %6, label %10
6: ; preds = %3
%7 = fcmp ogt double %0, 3.600000e+02
%8 = fadd double %0, -3.600000e+02
%9 = select i1 %7, double %8, double %0
br label %16
10: ; preds = %3
%11 = tail call i32 @strncmp(i8* dereferenceable(1) %1, i8* dereferenceable(1) getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 3, i64 0), i64 2)
%12 = icmp eq i32 %11, 0
%13 = fcmp ogt double %0, 3.600000e+02
%14 = fadd double %0, -3.600000e+02
%15 = select i1 %13, double %14, double %0
br i1 %12, label %16, label %22
16: ; preds = %6, %10
%17 = phi double [ %9, %6 ], [ %15, %10 ]
%18 = fcmp olt double %17, 0.000000e+00
%19 = fadd double %17, 3.600000e+02
%20 = select i1 %18, double %19, double %17
%21 = fdiv double %20, 1.500000e+01
br label %22
22: ; preds = %16, %10
%23 = phi i1 [ true, %16 ], [ false, %10 ]
%24 = phi double [ %21, %16 ], [ %15, %10 ]
%25 = fptosi double %24 to i32
%26 = sitofp i32 %25 to double
%27 = fsub double %24, %26
%28 = fcmp olt double %27, 0.000000e+00
%29 = fneg double %27
%30 = select i1 %28, double %29, double %27
%31 = fmul double %30, 6.000000e+01
%32 = fptosi double %31 to i32
%33 = sitofp i32 %32 to double
%34 = fsub double %31, %33
%35 = fmul double %34, 6.000000e+01
%36 = bitcast i8* %2 to i32*
store i32 538976288, i32* %36
%37 = fptrunc double %35 to float
%38 = getelementptr inbounds i8, i8* %2, i64 4
store i8 0, i8* %38
%39 = load i8, i8* %1
%40 = icmp eq i8 %39, 45
br i1 %40, label %57, label %41
41: ; preds = %22
store i8 %39, i8* %2
%42 = getelementptr inbounds i8, i8* %1, i64 1
%43 = load i8, i8* %42
%44 = icmp eq i8 %43, 45
br i1 %44, label %57, label %45
45: ; preds = %41
%46 = getelementptr inbounds i8, i8* %2, i64 1
store i8 %43, i8* %46
%47 = getelementptr inbounds i8, i8* %1, i64 2
%48 = load i8, i8* %47
%49 = icmp eq i8 %48, 45
br i1 %49, label %57, label %50
50: ; preds = %45
%51 = getelementptr inbounds i8, i8* %2, i64 2
store i8 %48, i8* %51
%52 = getelementptr inbounds i8, i8* %1, i64 3
%53 = load i8, i8* %52
%54 = icmp eq i8 %53, 45
br i1 %54, label %57, label %55
55: ; preds = %50
%56 = getelementptr inbounds i8, i8* %2, i64 3
store i8 %53, i8* %56
br label %57
57: ; preds = %55, %50, %45, %41, %22
%58 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 0, i64 0))
%59 = icmp eq i32 %58, 0
br i1 %59, label %81, label %60
60: ; preds = %57
%61 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 1, i64 0))
%62 = icmp eq i32 %61, 0
br i1 %62, label %81, label %63
63: ; preds = %60
%64 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 2, i64 0))
%65 = icmp eq i32 %64, 0
br i1 %65, label %81, label %66
66: ; preds = %63
%67 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 3, i64 0))
%68 = icmp eq i32 %67, 0
br i1 %68, label %81, label %69
69: ; preds = %66
%70 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 4, i64 0))
%71 = icmp eq i32 %70, 0
br i1 %71, label %81, label %72
72: ; preds = %69
%73 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 5, i64 0))
%74 = icmp eq i32 %73, 0
br i1 %74, label %81, label %75
75: ; preds = %72
%76 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 6, i64 0))
%77 = icmp eq i32 %76, 0
br i1 %77, label %81, label %78
78: ; preds = %75
%79 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* getelementptr inbounds ([8 x [5 x i8]], [8 x [5 x i8]]* @__const.ra2hms.rectypes, i64 0, i64 7, i64 0))
%80 = icmp eq i32 %79, 0
br i1 %80, label %81, label %87
81: ; preds = %57, %60, %63, %66, %69, %72, %75, %78
%82 = fpext float %37 to double
br i1 %23, label %83, label %85
83: ; preds = %81
%84 = tail call i32 (i8*, i8*, ...) @sprintf(i8* %38, i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i32 %25, i32 %32, double %82)
br label %89
85: ; preds = %81
%86 = tail call i32 (i8*, i8*, ...) @sprintf(i8* %38, i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i32 %25, i32 %32, double %82)
br label %89
87: ; preds = %78
%88 = tail call i32 (i8*, i8*, ...) @sprintf(i8* %38, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), double %0)
br label %89
89: ; preds = %83, %85, %87
ret void
}