#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*/ mvaddch(int, int, char);
int greet(void) {
  mvaddch(3, 5, 'G');
  mvaddch(5, 5, 'R');
  mvaddch(7, 5, 'E');
  mvaddch(9, 5, 'E');
  mvaddch(11, 5, 'T');
  mvaddch(13, 5, 'I');
  mvaddch(15, 5, 'N');
  mvaddch(17, 5, 'G');
  mvaddch(19, 5, 'S');
  return (0);
}


x86 assembly (clang, -O0):
<greet>:
push   %rbp
mov    %rsp,%rbp
mov    $0x3,%edi
mov    $0x5,%esi
mov    $0x47,%edx
call   1030 <mvaddch@plt>
mov    $0x5,%esi
mov    $0x52,%edx
mov    %esi,%edi
call   1030 <mvaddch@plt>
mov    $0x7,%edi
mov    $0x5,%esi
mov    $0x45,%edx
call   1030 <mvaddch@plt>
mov    $0x9,%edi
mov    $0x5,%esi
mov    $0x45,%edx
call   1030 <mvaddch@plt>
mov    $0xb,%edi
mov    $0x5,%esi
mov    $0x54,%edx
call   1030 <mvaddch@plt>
mov    $0xd,%edi
mov    $0x5,%esi
mov    $0x49,%edx
call   1030 <mvaddch@plt>
mov    $0xf,%edi
mov    $0x5,%esi
mov    $0x4e,%edx
call   1030 <mvaddch@plt>
mov    $0x11,%edi
mov    $0x5,%esi
mov    $0x47,%edx
call   1030 <mvaddch@plt>
mov    $0x13,%edi
mov    $0x5,%esi
mov    $0x53,%edx
call   1030 <mvaddch@plt>
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<greet>:
push   %rax
mov    $0x3,%edi
mov    $0x5,%esi
mov    $0x47,%edx
call   1030 <mvaddch@plt>
mov    $0x5,%edi
mov    $0x5,%esi
mov    $0x52,%edx
call   1030 <mvaddch@plt>
mov    $0x7,%edi
mov    $0x5,%esi
mov    $0x45,%edx
call   1030 <mvaddch@plt>
mov    $0x9,%edi
mov    $0x5,%esi
mov    $0x45,%edx
call   1030 <mvaddch@plt>
mov    $0xb,%edi
mov    $0x5,%esi
mov    $0x54,%edx
call   1030 <mvaddch@plt>
mov    $0xd,%edi
mov    $0x5,%esi
mov    $0x49,%edx
call   1030 <mvaddch@plt>
mov    $0xf,%edi
mov    $0x5,%esi
mov    $0x4e,%edx
call   1030 <mvaddch@plt>
mov    $0x11,%edi
mov    $0x5,%esi
mov    $0x47,%edx
call   1030 <mvaddch@plt>
mov    $0x13,%edi
mov    $0x5,%esi
mov    $0x53,%edx
call   1030 <mvaddch@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @greet() {
%1 = call i32 @mvaddch(i32 3, i32 5, i8 signext 71)
%2 = call i32 @mvaddch(i32 5, i32 5, i8 signext 82)
%3 = call i32 @mvaddch(i32 7, i32 5, i8 signext 69)
%4 = call i32 @mvaddch(i32 9, i32 5, i8 signext 69)
%5 = call i32 @mvaddch(i32 11, i32 5, i8 signext 84)
%6 = call i32 @mvaddch(i32 13, i32 5, i8 signext 73)
%7 = call i32 @mvaddch(i32 15, i32 5, i8 signext 78)
%8 = call i32 @mvaddch(i32 17, i32 5, i8 signext 71)
%9 = call i32 @mvaddch(i32 19, i32 5, i8 signext 83)
ret i32 0
}

LLVM IR (-O2):
define i32 @greet() {
%1 = tail call i32 @mvaddch(i32 3, i32 5, i8 signext 71)
%2 = tail call i32 @mvaddch(i32 5, i32 5, i8 signext 82)
%3 = tail call i32 @mvaddch(i32 7, i32 5, i8 signext 69)
%4 = tail call i32 @mvaddch(i32 9, i32 5, i8 signext 69)
%5 = tail call i32 @mvaddch(i32 11, i32 5, i8 signext 84)
%6 = tail call i32 @mvaddch(i32 13, i32 5, i8 signext 73)
%7 = tail call i32 @mvaddch(i32 15, i32 5, i8 signext 78)
%8 = tail call i32 @mvaddch(i32 17, i32 5, i8 signext 71)
%9 = tail call i32 @mvaddch(i32 19, i32 5, i8 signext 83)
ret i32 0
}