#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 abs(int);
int /*<<< orphan*/ sprintf(char *, char *, int, char *, ...);
int /*<<< orphan*/ strcat(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
int strlen(char *);
int /*<<< orphan*/ swe_revjul(double, short, int *, int *, int *, double *);
void swi_gen_filename(double tjd, int ipli, char *fname) {
  int icty;
  int ncties = (int)6.0;
  short gregflag;
  int jmon, jday, jyear, sgn;
  double jut;
  char *sform;
  switch (ipli) {
  case 1:
    strcpy(fname, "semo");
    break;
  case 0:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
    strcpy(fname, "sepl");
    break;
  case 14:
  case 15:
  case 16:
  case 17:
  case 12:
  case 13:
    strcpy(fname, "seas");
    break;
  default:
    sform = "ast%d%sse%05d.%s";
    if (ipli - 10000 > 99999)
      sform = "ast%d%ss%06d.%s";
    sprintf(fname, sform, (ipli - 10000) / 1000, "/", ipli - 10000, "se1");
    return;
  }
  if (tjd >= 2305447.5) {
    gregflag = 1;
    swe_revjul(tjd, gregflag, &jyear, &jmon, &jday, &jut);
  } else {
    gregflag = 0;
    swe_revjul(tjd, gregflag, &jyear, &jmon, &jday, &jut);
  }
  if (jyear < 0)
    sgn = -1;
  else
    sgn = 1;
  icty = jyear / 100;
  if (sgn < 0 && jyear % 100 != 0)
    icty -= 1;
  while (icty % ncties != 0)
    icty--;
  if (icty < 0)
    strcat(fname, "m");
  else
    strcat(fname, "_");
  icty = abs(icty);
  sprintf(fname + strlen(fname), "%02d.%s", icty, "se1");
}


x86 assembly (clang, -O0):
<swi_gen_filename>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
mov    %rsi,-0x18(%rbp)
movl   $0x6,-0x20(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x4c(%rbp)
test   %eax,%eax
je     11dc <swi_gen_filename+0x7c>
jmp    118e <swi_gen_filename+0x2e>
mov    -0x4c(%rbp),%eax
sub    $0x1,%eax
je     11c7 <swi_gen_filename+0x67>
jmp    119f <swi_gen_filename+0x3f>
mov    -0x4c(%rbp),%eax
add    $0xfffffffe,%eax
sub    $0x9,%eax
jb     11dc <swi_gen_filename+0x7c>
jmp    11b3 <swi_gen_filename+0x53>
mov    -0x4c(%rbp),%eax
add    $0xfffffff4,%eax
sub    $0x6,%eax
jb     11f1 <swi_gen_filename+0x91>
jmp    1206 <swi_gen_filename+0xa6>
mov    -0x18(%rbp),%rdi
lea    0xe36(%rip),%rsi
call   1030 <strcpy@plt>
jmp    126e <swi_gen_filename+0x10e>
mov    -0x18(%rbp),%rdi
lea    0xe26(%rip),%rsi
call   1030 <strcpy@plt>
jmp    126e <swi_gen_filename+0x10e>
mov    -0x18(%rbp),%rdi
lea    0xe16(%rip),%rsi
call   1030 <strcpy@plt>
jmp    126e <swi_gen_filename+0x10e>
lea    0xe0a(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x2710,%eax
cmp    $0x1869f,%eax
jle    122f <swi_gen_filename+0xcf>
lea    0xdfd(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0x48(%rbp),%rsi
mov    -0xc(%rbp),%eax
sub    $0x2710,%eax
mov    $0x3e8,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
mov    -0xc(%rbp),%r8d
sub    $0x2710,%r8d
lea    0xddd(%rip),%rcx
lea    0xdd8(%rip),%r9
mov    $0x0,%al
call   1080 <sprintf@plt>
jmp    13b3 <swi_gen_filename+0x253>
movsd  -0x8(%rbp),%xmm0
movsd  0xd85(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     12ae <swi_gen_filename+0x14e>
movw   $0x1,-0x22(%rbp)
movsd  -0x8(%rbp),%xmm0
lea    -0x30(%rbp),%rsi
lea    -0x28(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
lea    -0x40(%rbp),%r8
movswl -0x22(%rbp),%edi
call   1050 <swe_revjul@plt>
jmp    12d2 <swi_gen_filename+0x172>
movw   $0x0,-0x22(%rbp)
movsd  -0x8(%rbp),%xmm0
lea    -0x30(%rbp),%rsi
lea    -0x28(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
lea    -0x40(%rbp),%r8
movswl -0x22(%rbp),%edi
call   1050 <swe_revjul@plt>
cmpl   $0x0,-0x30(%rbp)
jge    12e8 <swi_gen_filename+0x188>
movl   $0xffffffff,-0x34(%rbp)
jmp    12ef <swi_gen_filename+0x18f>
movl   $0x1,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x34(%rbp)
jge    1324 <swi_gen_filename+0x1c4>
mov    -0x30(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1324 <swi_gen_filename+0x1c4>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1329 <swi_gen_filename+0x1c9>
mov    -0x1c(%rbp),%eax
cltd
idivl  -0x20(%rbp)
cmp    $0x0,%edx
je     1347 <swi_gen_filename+0x1e7>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    1329 <swi_gen_filename+0x1c9>
cmpl   $0x0,-0x1c(%rbp)
jge    1366 <swi_gen_filename+0x206>
mov    -0x18(%rbp),%rdi
lea    0xce2(%rip),%rsi
call   1070 <strcat@plt>
jmp    1376 <swi_gen_filename+0x216>
mov    -0x18(%rbp),%rdi
lea    0xccf(%rip),%rsi
call   1070 <strcat@plt>
mov    -0x1c(%rbp),%edi
call   1040 <abs@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x18(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x58(%rbp),%rdi
cltq
add    %rax,%rdi
mov    -0x1c(%rbp),%edx
lea    0xc9d(%rip),%rsi
lea    0xc8e(%rip),%rcx
mov    $0x0,%al
call   1080 <sprintf@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<swi_gen_filename>:
push   %rbp
push   %r14
push   %rbx
sub    $0x20,%rsp
mov    %rsi,%r14
cmp    $0x12,%edi
jae    116a <swi_gen_filename+0x1a>
mov    $0x3f7ff,%eax
bt     %edi,%eax
jb     11bf <swi_gen_filename+0x6f>
lea    -0x2710(%rdi),%eax
cmp    $0x1adb0,%edi
lea    0xeab(%rip),%rcx
lea    0xe93(%rip),%rsi
cmovge %rcx,%rsi
movslq %eax,%r8
imul   $0x10624dd3,%r8,%rdx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0x26,%rdx
add    %eax,%edx
lea    0xe92(%rip),%rcx
lea    0xe8d(%rip),%r9
mov    %r14,%rdi
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1070 <sprintf@plt>
movslq %edi,%rax
lea    0xe83(%rip),%rcx
movslq (%rcx,%rax,4),%rsi
add    %rcx,%rsi
mov    %r14,%rdi
movsd  %xmm0,0x8(%rsp)
call   1030 <strcpy@plt>
xor    %edi,%edi
movsd  0x8(%rsp),%xmm0
ucomisd 0xe12(%rip),%xmm0
setae  %dil
lea    0x4(%rsp),%rsi
lea    0x14(%rsp),%rdx
lea    0x10(%rsp),%rcx
lea    0x18(%rsp),%r8
call   1040 <swe_revjul@plt>
movslq 0x4(%rsp),%rax
test   %rax,%rax
sets   %cl
imul   $0x51eb851f,%rax,%rbx
mov    %rbx,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rbx
add    %edx,%ebx
imul   $0xc28f5c29,%eax,%eax
add    $0x51eb850,%eax
ror    $0x2,%eax
cmp    $0x28f5c29,%eax
setae  %al
and    %cl,%al
movzbl %al,%eax
sub    %eax,%ebx
nopw   0x0(%rax,%rax,1)
imul   $0xaaaaaaab,%ebx,%eax
add    $0x2aaaaaaa,%eax
ror    %eax
add    $0xffffffff,%ebx
cmp    $0x2aaaaaaa,%eax
ja     1250 <swi_gen_filename+0x100>
add    $0x1,%ebx
lea    0xdcd(%rip),%rax
lea    0xdc8(%rip),%rsi
cmovs  %rax,%rsi
mov    %r14,%rdi
call   1060 <strcat@plt>
mov    %ebx,%ebp
neg    %ebp
cmovs  %ebx,%ebp
mov    %r14,%rdi
call   1050 <strlen@plt>
movslq %eax,%rdi
add    %r14,%rdi
lea    0xda2(%rip),%rsi
lea    0xd93(%rip),%rcx
mov    %ebp,%edx
xor    %eax,%eax
call   1070 <sprintf@plt>
add    $0x20,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [5 x i8] c"semo\00"
@.str.1 = [5 x i8] c"sepl\00"
@.str.2 = [5 x i8] c"seas\00"
@.str.3 = [17 x i8] c"ast%d%sse%05d.%s\00"
@.str.4 = [16 x i8] c"ast%d%ss%06d.%s\00"
@.str.5 = [2 x i8] c"/\00"
@.str.6 = [4 x i8] c"se1\00"
@.str.7 = [2 x i8] c"m\00"
@.str.8 = [2 x i8] c"_\00"
@.str.9 = [8 x i8] c"%02d.%s\00"
define void @swi_gen_filename(double %0, i32 %1, i8* %2) {
%4 = alloca double
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i16
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca double
%15 = alloca i8*
store double %0, double* %4
store i32 %1, i32* %5
store i8* %2, i8** %6
store i32 6, i32* %8
%16 = load i32, i32* %5
switch i32 %16, label %26 [
i32 1, label %17
i32 0, label %20
i32 2, label %20
i32 3, label %20
i32 4, label %20
i32 5, label %20
i32 6, label %20
i32 7, label %20
i32 8, label %20
i32 9, label %20
i32 10, label %20
i32 14, label %23
i32 15, label %23
i32 16, label %23
i32 17, label %23
i32 12, label %23
i32 13, label %23
]
17: ; preds = %3
%18 = load i8*, i8** %6
%19 = call i32 @strcpy(i8* %18, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
br label %40
20: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3, %3
%21 = load i8*, i8** %6
%22 = call i32 @strcpy(i8* %21, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
br label %40
23: ; preds = %3, %3, %3, %3, %3, %3
%24 = load i8*, i8** %6
%25 = call i32 @strcpy(i8* %24, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %40
26: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0), i8** %15
%27 = load i32, i32* %5
%28 = sub nsw i32 %27, 10000
%29 = icmp sgt i32 %28, 99999
br i1 %29, label %30, label %31
30: ; preds = %26
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), i8** %15
br label %31
31: ; preds = %30, %26
%32 = load i8*, i8** %6
%33 = load i8*, i8** %15
%34 = load i32, i32* %5
%35 = sub nsw i32 %34, 10000
%36 = sdiv i32 %35, 1000
%37 = load i32, i32* %5
%38 = sub nsw i32 %37, 10000
%39 = call i32 (i8*, i8*, i32, i8*, ...) @sprintf(i8* %32, i8* %33, i32 %36, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0), i32 %38, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %96
40: ; preds = %23, %20, %17
%41 = load double, double* %4
%42 = fcmp oge double %41, 0x414196D3C0000000
br i1 %42, label %43, label %47
43: ; preds = %40
store i16 1, i16* %9
%44 = load double, double* %4
%45 = load i16, i16* %9
%46 = call i32 @swe_revjul(double %44, i16 signext %45, i32* %12, i32* %10, i32* %11, double* %14)
br label %51
47: ; preds = %40
store i16 0, i16* %9
%48 = load double, double* %4
%49 = load i16, i16* %9
%50 = call i32 @swe_revjul(double %48, i16 signext %49, i32* %12, i32* %10, i32* %11, double* %14)
br label %51
51: ; preds = %47, %43
%52 = load i32, i32* %12
%53 = icmp slt i32 %52, 0
br i1 %53, label %54, label %55
54: ; preds = %51
store i32 -1, i32* %13
br label %56
55: ; preds = %51
store i32 1, i32* %13
br label %56
56: ; preds = %55, %54
%57 = load i32, i32* %12
%58 = sdiv i32 %57, 100
store i32 %58, i32* %7
%59 = load i32, i32* %13
%60 = icmp slt i32 %59, 0
br i1 %60, label %61, label %68
61: ; preds = %56
%62 = load i32, i32* %12
%63 = srem i32 %62, 100
%64 = icmp ne i32 %63, 0
br i1 %64, label %65, label %68
65: ; preds = %61
%66 = load i32, i32* %7
%67 = sub nsw i32 %66, 1
store i32 %67, i32* %7
br label %68
68: ; preds = %65, %61, %56
br label %69
69: ; preds = %74, %68
%70 = load i32, i32* %7
%71 = load i32, i32* %8
%72 = srem i32 %70, %71
%73 = icmp ne i32 %72, 0
br i1 %73, label %74, label %77
74: ; preds = %69
%75 = load i32, i32* %7
%76 = add nsw i32 %75, -1
store i32 %76, i32* %7
br label %69
77: ; preds = %69
%78 = load i32, i32* %7
%79 = icmp slt i32 %78, 0
br i1 %79, label %80, label %83
80: ; preds = %77
%81 = load i8*, i8** %6
%82 = call i32 @strcat(i8* %81, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %86
83: ; preds = %77
%84 = load i8*, i8** %6
%85 = call i32 @strcat(i8* %84, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0))
br label %86
86: ; preds = %83, %80
%87 = load i32, i32* %7
%88 = call i32 @abs(i32 %87)
store i32 %88, i32* %7
%89 = load i8*, i8** %6
%90 = load i8*, i8** %6
%91 = call i32 @strlen(i8* %90)
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i8, i8* %89, i64 %92
%94 = load i32, i32* %7
%95 = call i32 (i8*, i8*, i32, i8*, ...) @sprintf(i8* %93, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0), i32 %94, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %96
96: ; preds = %86, %31
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c"semo\00"
@.str.1 = [5 x i8] c"sepl\00"
@.str.2 = [5 x i8] c"seas\00"
@.str.3 = [17 x i8] c"ast%d%sse%05d.%s\00"
@.str.4 = [16 x i8] c"ast%d%ss%06d.%s\00"
@.str.5 = [2 x i8] c"/\00"
@.str.6 = [4 x i8] c"se1\00"
@.str.7 = [2 x i8] c"m\00"
@.str.8 = [2 x i8] c"_\00"
@.str.9 = [8 x i8] c"%02d.%s\00"
@reltable.swi_gen_filename = [18 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.1 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([18 x i32]* @reltable.swi_gen_filename to i64)) to i32)]
define void @swi_gen_filename(double %0, i32 %1, i8* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca double
%8 = bitcast i32* %4 to i8*
%9 = bitcast i32* %5 to i8*
%10 = bitcast i32* %6 to i8*
%11 = bitcast double* %7 to i8*
%12 = icmp ult i32 %1, 18
br i1 %12, label %19, label %13
13: ; preds = %19, %3
%14 = add nsw i32 %1, -10000
%15 = icmp sgt i32 %1, 109999
%16 = select i1 %15, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0)
%17 = sdiv i32 %14, 1000
%18 = tail call i32 (i8*, i8*, i32, i8*, ...) @sprintf(i8* dereferenceable(1) %2, i8* dereferenceable(1) %16, i32 %17, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0), i32 %14, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %53
19: ; preds = %3
%20 = lshr i32 260095, %1
%21 = and i32 %20, 1
%22 = icmp eq i32 %21, 0
br i1 %22, label %13, label %23
23: ; preds = %19
%24 = sext i32 %1 to i64
%25 = shl i64 %24, 2
%26 = call i8* @llvm.load.relative.i64(i8* bitcast ([18 x i32]* @reltable.swi_gen_filename to i8*), i64 %25)
%27 = tail call i32 @strcpy(i8* %2, i8* %26)
%28 = fcmp oge double %0, 0x414196D3C0000000
%29 = zext i1 %28 to i16
%30 = call i32 @swe_revjul(double %0, i16 signext %29, i32* %6, i32* %4, i32* %5, double* %7)
%31 = load i32, i32* %6
%32 = icmp slt i32 %31, 0
%33 = sdiv i32 %31, 100
%34 = srem i32 %31, 100
%35 = icmp ne i32 %34, 0
%36 = and i1 %32, %35
%37 = sext i1 %36 to i32
%38 = add nsw i32 %33, %37
br label %39
39: ; preds = %39, %23
%40 = phi i32 [ %38, %23 ], [ %43, %39 ]
%41 = srem i32 %40, 6
%42 = icmp eq i32 %41, 0
%43 = add nsw i32 %40, -1
br i1 %42, label %44, label %39
44: ; preds = %39
%45 = icmp slt i32 %40, 0
%46 = select i1 %45, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0)
%47 = call i32 @strcat(i8* %2, i8* %46)
%48 = call i32 @llvm.abs.i32(i32 %40, i1 true)
%49 = call i32 @strlen(i8* %2)
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i8, i8* %2, i64 %50
%52 = call i32 (i8*, i8*, i32, i8*, ...) @sprintf(i8* dereferenceable(1) %51, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0), i32 %48, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %53
53: ; preds = %44, %13
ret void
}