#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 *, ...);
void printMeter100Scale(void) {
  printf("\x1b[0K");
  printf(
      "\x1b[%dm0   10   20   30   40   50   60   70   80   90  100\x1b[39m\n",
      36);
  printf("\x1b[0K");
  printf("\x1b[%dm|\x1b[%dm----\x1b[%dm+\x1b[%dm----\x1b[%dm|\x1b[%dm----\x1b[%"
         "dm+\x1b[%dm----\x1b[%dm|\x1b[%dm----\x1b[%dm+\x1b[%dm----\x1b[%dm|"
         "\x1b[%dm----\x1b[%dm+\x1b[%dm----\x1b[%dm|\x1b[%dm----\x1b[%dm+\x1b[%"
         "dm----\x1b[%dm|\x1b[39m\n",
         36, 34, 36, 34, 36, 34, 36, 34, 36, 34, 36, 34, 36, 34, 36, 34, 36, 34,
         36, 34, 36);
  return;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
lea    0xede(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xed5(%rip),%rdi
mov    $0x24,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xebd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef3(%rip),%rdi
mov    $0x24,%r9d
mov    $0x22,%r8d
mov    %r9d,%esi
mov    %r8d,%edx
mov    %r9d,%ecx
movl   $0x22,(%rsp)
movl   $0x24,0x8(%rsp)
movl   $0x22,0x10(%rsp)
movl   $0x24,0x18(%rsp)
movl   $0x22,0x20(%rsp)
movl   $0x24,0x28(%rsp)
movl   $0x22,0x30(%rsp)
movl   $0x24,0x38(%rsp)
movl   $0x22,0x40(%rsp)
movl   $0x24,0x48(%rsp)
movl   $0x22,0x50(%rsp)
movl   $0x24,0x58(%rsp)
movl   $0x22,0x60(%rsp)
movl   $0x24,0x68(%rsp)
movl   $0x22,0x70(%rsp)
movl   $0x24,0x78(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %rbx
lea    0xee8(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xedc(%rip),%rdi
mov    $0x24,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xefe(%rip),%rdi
mov    $0x24,%esi
mov    $0x22,%edx
mov    $0x24,%ecx
mov    $0x22,%r8d
mov    $0x24,%r9d
xor    %eax,%eax
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
push   $0x24
push   $0x22
call   1030 <printf@plt>
add    $0x80,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [5 x i8] c"\1B[0K\00"
@.str.1 = [63 x i8] c"\1B[%dm0 10 20 30 40 50 60 70 80 90 100\1B[39m\0A\00"
@.str.2 = [163 x i8] c"\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[39m\0A\00"
define void @printMeter100Scale() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), i32 36)
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.str.2, i64 0, i64 0), i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36)
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c"\1B[0K\00"
@.str.1 = [63 x i8] c"\1B[%dm0 10 20 30 40 50 60 70 80 90 100\1B[39m\0A\00"
@.str.2 = [163 x i8] c"\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[%dm----\1B[%dm+\1B[%dm----\1B[%dm|\1B[39m\0A\00"
define void @printMeter100Scale() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), i32 36)
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([163 x i8], [163 x i8]* @.str.2, i64 0, i64 0), i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36, i32 34, i32 36)
ret void
}