#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*/ printf(char *, ...);
double sin(double);
void generate_sam2coef_tables(void) {
  int i;
  double angle;
  printf("#if defined(G722_1_USE_FIXED_POINT)\n");
  printf("const int16_t samples_to_rmlt_window[DCT_LENGTH] =\n{\n");
  for (i = 0; i < (640 >> 1); i++) {
    if (i % 10 == 0)
      printf("    ");
    angle = (3.141592653589793238462 / 2.0) * ((double)i + 0.5) /
            (double)(640 >> 1);
    printf("%5d,", (int)(18318.0 * sin(angle)));
    if (i % 10 == 9)
      printf("\n");
    else
      printf(" ");
  }
  printf("};\n\n");
  printf("const int16_t max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\n{\n");
  for (i = 0; i < 640; i++) {
    if (i % 10 == 0)
      printf("    ");
    angle = (3.141592653589793238462 / 2.0) * ((double)i + 0.5) / (double)640;
    printf("%5d,", (int)(18318.0 * sin(angle)));
    if (i % 10 == 9)
      printf("\n");
    else
      printf(" ");
  }
  printf("};\n\n");
  printf("#else\n");
  printf("const float samples_to_rmlt_window[DCT_LENGTH] =\n{\n");
  for (i = 0; i < (640 >> 1); i++) {
    angle = (3.141592653589793238462 / 2.0) * ((double)i + 0.5) /
            (double)(640 >> 1);
    printf("    %.15ef,\n", sin(angle));
  }
  printf("};\n\n");
  printf("const float max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\n{\n");
  for (i = 0; i < 640; i++) {
    angle = (3.141592653589793238462 / 2.0) * ((double)i + 0.5) / (double)640;
    printf("    %.15ef,\n", sin(angle));
  }
  printf("};\n\n");
  printf("#endif\n");
}


x86 assembly (clang, -O0):
<generate_sam2coef_tables>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0xef9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x140,-0x4(%rbp)
jge    121b <generate_sam2coef_tables+0xfb>
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    117a <generate_sam2coef_tables+0x5a>
lea    0xf10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0xe89(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xe75(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xe79(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  0xe63(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%esi
lea    0xebc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x9,%edx
jne    11fa <generate_sam2coef_tables+0xda>
lea    0xea2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1208 <generate_sam2coef_tables+0xe8>
lea    0xe85(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    120d <generate_sam2coef_tables+0xed>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    114b <generate_sam2coef_tables+0x2b>
lea    0xe6b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe62(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x280,-0x4(%rbp)
jge    130e <generate_sam2coef_tables+0x1ee>
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    126d <generate_sam2coef_tables+0x14d>
lea    0xe1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0xd96(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xd82(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd6e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  0xd70(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%esi
lea    0xdc9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x9,%edx
jne    12ed <generate_sam2coef_tables+0x1cd>
lea    0xdaf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fb <generate_sam2coef_tables+0x1db>
lea    0xd92(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1300 <generate_sam2coef_tables+0x1e0>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    123e <generate_sam2coef_tables+0x11e>
lea    0xd78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdad(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xda6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x140,-0x4(%rbp)
jge    13a0 <generate_sam2coef_tables+0x280>
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0xcb7(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xca3(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xca7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1040 <sin@plt>
lea    0xd80(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    133f <generate_sam2coef_tables+0x21f>
lea    0xce6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd63(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x280,-0x4(%rbp)
jge    1424 <generate_sam2coef_tables+0x304>
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0xc33(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xc1f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xc0b(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1040 <sin@plt>
lea    0xcfc(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    13c3 <generate_sam2coef_tables+0x2a3>
lea    0xc62(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd1b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<generate_sam2coef_tables>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
lea    0xef5(%rip),%rdi
call   1040 <puts@plt>
lea    0xf0d(%rip),%rdi
call   1040 <puts@plt>
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
lea    0xebd(%rip),%r14
lea    0xebb(%rip),%r12
mov    $0xa,%r15d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    11fe <generate_sam2coef_tables+0xbe>
cs nopw 0x0(%rax,%rax,1)
movsd  (%rsp),%xmm0
addsd  0xe63(%rip),%xmm0
mulsd  0xe63(%rip),%xmm0
divsd  0xe63(%rip),%xmm0
call   1060 <sin@plt>
mulsd  0xe5e(%rip),%xmm0
cvttsd2si %xmm0,%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %bx,%r13w
mov    $0x20,%edi
cmove  %r15d,%edi
call   1030 <putchar@plt>
movsd  0xe3e(%rip),%xmm0
movsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
add    $0xffffffff,%ebx
add    $0x1,%ebp
cmp    $0xfffffec0,%ebx
je     1231 <generate_sam2coef_tables+0xf1>
movzwl %bp,%eax
imul   $0xcccd,%eax,%eax
shr    $0x12,%eax
and    $0xfffffffe,%eax
lea    (%rax,%rax,4),%eax
neg    %eax
movzwl %ax,%eax
lea    -0x9(%rax),%r13d
cmp    %bx,%ax
jne    1190 <generate_sam2coef_tables+0x50>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1190 <generate_sam2coef_tables+0x50>
lea    0xf19(%rip),%rdi
call   1040 <puts@plt>
lea    0xe5c(%rip),%rdi
call   1040 <puts@plt>
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
lea    0xdd7(%rip),%r14
lea    0xdd5(%rip),%r12
mov    $0xa,%r15d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    12d2 <generate_sam2coef_tables+0x192>
nopl   0x0(%rax)
movsd  (%rsp),%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
divsd  0xda3(%rip),%xmm0
call   1060 <sin@plt>
mulsd  0xd86(%rip),%xmm0
cvttsd2si %xmm0,%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %bx,%r13w
mov    $0x20,%edi
cmove  %r15d,%edi
call   1030 <putchar@plt>
movsd  (%rsp),%xmm0
addsd  0xd61(%rip),%xmm0
movsd  %xmm0,(%rsp)
add    $0xffffffff,%ebx
add    $0x1,%ebp
cmp    $0xfffffd80,%ebx
je     1325 <generate_sam2coef_tables+0x1e5>
movzwl %bp,%eax
imul   $0xcccd,%eax,%eax
shr    $0x12,%eax
and    $0xfffffffe,%eax
lea    (%rax,%rax,4),%eax
neg    %eax
movzwl %ax,%eax
lea    -0x9(%rax),%r13d
cmp    %bx,%ax
movsd  0xd08(%rip),%xmm1
movsd  0xd08(%rip),%xmm2
jne    1270 <generate_sam2coef_tables+0x130>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsd  0xcf0(%rip),%xmm2
movsd  0xce0(%rip),%xmm1
jmp    1270 <generate_sam2coef_tables+0x130>
lea    0xe25(%rip),%rdi
call   1040 <puts@plt>
lea    0xda5(%rip),%rdi
call   1040 <puts@plt>
lea    0xd9f(%rip),%rdi
call   1040 <puts@plt>
xorpd  %xmm1,%xmm1
mov    $0x140,%ebp
lea    0xce1(%rip),%rbx
nopl   0x0(%rax)
movsd  %xmm1,(%rsp)
movapd %xmm1,%xmm0
addsd  0xc8f(%rip),%xmm0
mulsd  0xc8f(%rip),%xmm0
divsd  0xc8f(%rip),%xmm0
call   1060 <sin@plt>
mov    %rbx,%rdi
mov    $0x1,%al
call   1050 <printf@plt>
movsd  (%rsp),%xmm1
addsd  0xc83(%rip),%xmm1
add    $0xffffffff,%ebp
jne    1360 <generate_sam2coef_tables+0x220>
lea    0xda8(%rip),%rdi
call   1040 <puts@plt>
lea    0xd61(%rip),%rdi
call   1040 <puts@plt>
xorpd  %xmm1,%xmm1
mov    $0x280,%ebp
lea    0xc70(%rip),%rbx
nopw   0x0(%rax,%rax,1)
movsd  %xmm1,(%rsp)
movapd %xmm1,%xmm0
addsd  0xc1f(%rip),%xmm0
mulsd  0xc1f(%rip),%xmm0
divsd  0xc37(%rip),%xmm0
call   1060 <sin@plt>
mov    %rbx,%rdi
mov    $0x1,%al
call   1050 <printf@plt>
movsd  (%rsp),%xmm1
addsd  0xc13(%rip),%xmm1
add    $0xffffffff,%ebp
jne    13d0 <generate_sam2coef_tables+0x290>
lea    0xd38(%rip),%rdi
call   1040 <puts@plt>
lea    0xd30(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [37 x i8] c"#if defined(G722_1_USE_FIXED_POINT)\0A\00"
@.str.1 = [54 x i8] c"const int16_t samples_to_rmlt_window[DCT_LENGTH] =\0A{\0A\00"
@.str.2 = [5 x i8] c" \00"
@.str.3 = [5 x i8] c"%5d,\00"
@.str.4 = [2 x i8] c"\0A\00"
@.str.5 = [2 x i8] c" \00"
@.str.6 = [5 x i8] c"};\0A\0A\00"
@.str.7 = [62 x i8] c"const int16_t max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\0A{\0A\00"
@.str.8 = [7 x i8] c"#else\0A\00"
@.str.9 = [52 x i8] c"const float samples_to_rmlt_window[DCT_LENGTH] =\0A{\0A\00"
@.str.10 = [13 x i8] c" %.15ef,\0A\00"
@.str.11 = [60 x i8] c"const float max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\0A{\0A\00"
@.str.12 = [8 x i8] c"#endif\0A\00"
define void @generate_sam2coef_tables() {
%1 = alloca i32
%2 = alloca double
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %1
br label %5
5: ; preds = %33, %0
%6 = load i32, i32* %1
%7 = icmp slt i32 %6, 320
br i1 %7, label %8, label %36
8: ; preds = %5
%9 = load i32, i32* %1
%10 = srem i32 %9, 10
%11 = icmp eq i32 %10, 0
br i1 %11, label %12, label %14
12: ; preds = %8
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %14
14: ; preds = %12, %8
%15 = load i32, i32* %1
%16 = sitofp i32 %15 to double
%17 = fadd double %16, 5.000000e-01
%18 = fmul double 0x3FF921FB54442D18, %17
%19 = fdiv double %18, 3.200000e+02
store double %19, double* %2
%20 = load double, double* %2
%21 = call double @sin(double %20)
%22 = fmul double 1.831800e+04, %21
%23 = fptosi double %22 to i32
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %23)
%25 = load i32, i32* %1
%26 = srem i32 %25, 10
%27 = icmp eq i32 %26, 9
br i1 %27, label %28, label %30
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
br label %32
30: ; preds = %14
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %32
32: ; preds = %30, %28
br label %33
33: ; preds = %32
%34 = load i32, i32* %1
%35 = add nsw i32 %34, 1
store i32 %35, i32* %1
br label %5
36: ; preds = %5
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.7, i64 0, i64 0))
store i32 0, i32* %1
br label %39
39: ; preds = %67, %36
%40 = load i32, i32* %1
%41 = icmp slt i32 %40, 640
br i1 %41, label %42, label %70
42: ; preds = %39
%43 = load i32, i32* %1
%44 = srem i32 %43, 10
%45 = icmp eq i32 %44, 0
br i1 %45, label %46, label %48
46: ; preds = %42
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %48
48: ; preds = %46, %42
%49 = load i32, i32* %1
%50 = sitofp i32 %49 to double
%51 = fadd double %50, 5.000000e-01
%52 = fmul double 0x3FF921FB54442D18, %51
%53 = fdiv double %52, 6.400000e+02
store double %53, double* %2
%54 = load double, double* %2
%55 = call double @sin(double %54)
%56 = fmul double 1.831800e+04, %55
%57 = fptosi double %56 to i32
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %57)
%59 = load i32, i32* %1
%60 = srem i32 %59, 10
%61 = icmp eq i32 %60, 9
br i1 %61, label %62, label %64
62: ; preds = %48
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
br label %66
64: ; preds = %48
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %66
66: ; preds = %64, %62
br label %67
67: ; preds = %66
%68 = load i32, i32* %1
%69 = add nsw i32 %68, 1
store i32 %69, i32* %1
br label %39
70: ; preds = %39
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.9, i64 0, i64 0))
store i32 0, i32* %1
br label %74
74: ; preds = %86, %70
%75 = load i32, i32* %1
%76 = icmp slt i32 %75, 320
br i1 %76, label %77, label %89
77: ; preds = %74
%78 = load i32, i32* %1
%79 = sitofp i32 %78 to double
%80 = fadd double %79, 5.000000e-01
%81 = fmul double 0x3FF921FB54442D18, %80
%82 = fdiv double %81, 3.200000e+02
store double %82, double* %2
%83 = load double, double* %2
%84 = call double @sin(double %83)
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), double %84)
br label %86
86: ; preds = %77
%87 = load i32, i32* %1
%88 = add nsw i32 %87, 1
store i32 %88, i32* %1
br label %74
89: ; preds = %74
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.11, i64 0, i64 0))
store i32 0, i32* %1
br label %92
92: ; preds = %104, %89
%93 = load i32, i32* %1
%94 = icmp slt i32 %93, 640
br i1 %94, label %95, label %107
95: ; preds = %92
%96 = load i32, i32* %1
%97 = sitofp i32 %96 to double
%98 = fadd double %97, 5.000000e-01
%99 = fmul double 0x3FF921FB54442D18, %98
%100 = fdiv double %99, 6.400000e+02
store double %100, double* %2
%101 = load double, double* %2
%102 = call double @sin(double %101)
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), double %102)
br label %104
104: ; preds = %95
%105 = load i32, i32* %1
%106 = add nsw i32 %105, 1
store i32 %106, i32* %1
br label %92
107: ; preds = %92
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.2 = [5 x i8] c" \00"
@.str.3 = [5 x i8] c"%5d,\00"
@.str.10 = [13 x i8] c" %.15ef,\0A\00"
@str = [36 x i8] c"#if defined(G722_1_USE_FIXED_POINT)\00"
@str.13 = [53 x i8] c"const int16_t samples_to_rmlt_window[DCT_LENGTH] =\0A{\00"
@str.15 = [61 x i8] c"const int16_t max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\0A{\00"
@str.17 = [6 x i8] c"#else\00"
@str.18 = [51 x i8] c"const float samples_to_rmlt_window[DCT_LENGTH] =\0A{\00"
@str.20 = [59 x i8] c"const float max_samples_to_rmlt_window[MAX_DCT_LENGTH] =\0A{\00"
@str.21 = [4 x i8] c"};\0A\00"
@str.22 = [7 x i8] c"#endif\00"
define void @generate_sam2coef_tables() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.13, i64 0, i64 0))
br label %3
3: ; preds = %0, %10
%4 = phi i32 [ 0, %0 ], [ %22, %10 ]
%5 = trunc i32 %4 to i16
%6 = urem i16 %5, 10
%7 = icmp eq i16 %6, 0
br i1 %7, label %8, label %10
8: ; preds = %3
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %10
10: ; preds = %8, %3
%11 = sitofp i32 %4 to double
%12 = fadd double %11, 5.000000e-01
%13 = fmul double %12, 0x3FF921FB54442D18
%14 = fdiv double %13, 3.200000e+02
%15 = tail call double @sin(double %14)
%16 = fmul double %15, 1.831800e+04
%17 = fptosi double %16 to i32
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %17)
%19 = icmp eq i16 %6, 9
%20 = select i1 %19, i32 10, i32 32
%21 = tail call i32 @putchar(i32 %20)
%22 = add nuw nsw i32 %4, 1
%23 = icmp eq i32 %22, 320
br i1 %23, label %24, label %3
24: ; preds = %10
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.21, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.15, i64 0, i64 0))
br label %27
27: ; preds = %24, %34
%28 = phi i32 [ 0, %24 ], [ %46, %34 ]
%29 = trunc i32 %28 to i16
%30 = urem i16 %29, 10
%31 = icmp eq i16 %30, 0
br i1 %31, label %32, label %34
32: ; preds = %27
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %34
34: ; preds = %32, %27
%35 = sitofp i32 %28 to double
%36 = fadd double %35, 5.000000e-01
%37 = fmul double %36, 0x3FF921FB54442D18
%38 = fdiv double %37, 6.400000e+02
%39 = tail call double @sin(double %38)
%40 = fmul double %39, 1.831800e+04
%41 = fptosi double %40 to i32
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %41)
%43 = icmp eq i16 %30, 9
%44 = select i1 %43, i32 10, i32 32
%45 = tail call i32 @putchar(i32 %44)
%46 = add nuw nsw i32 %28, 1
%47 = icmp eq i32 %46, 640
br i1 %47, label %48, label %27
48: ; preds = %34
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.21, i64 0, i64 0))
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i64 0, i64 0))
%51 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.18, i64 0, i64 0))
br label %52
52: ; preds = %48, %52
%53 = phi i32 [ 0, %48 ], [ %60, %52 ]
%54 = sitofp i32 %53 to double
%55 = fadd double %54, 5.000000e-01
%56 = fmul double %55, 0x3FF921FB54442D18
%57 = fdiv double %56, 3.200000e+02
%58 = tail call double @sin(double %57)
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), double %58)
%60 = add nuw nsw i32 %53, 1
%61 = icmp eq i32 %60, 320
br i1 %61, label %62, label %52
62: ; preds = %52
%63 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.21, i64 0, i64 0))
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.20, i64 0, i64 0))
br label %65
65: ; preds = %62, %65
%66 = phi i32 [ 0, %62 ], [ %73, %65 ]
%67 = sitofp i32 %66 to double
%68 = fadd double %67, 5.000000e-01
%69 = fmul double %68, 0x3FF921FB54442D18
%70 = fdiv double %69, 6.400000e+02
%71 = tail call double @sin(double %70)
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), double %71)
%73 = add nuw nsw i32 %66, 1
%74 = icmp eq i32 %73, 640
br i1 %74, label %75, label %65
75: ; preds = %65
%76 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.21, i64 0, i64 0))
%77 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.22, i64 0, i64 0))
ret void
}