#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*/ animateBox(int, int, int, int);
int /*<<< orphan*/ flushBuffer();
int /*<<< orphan*/ getch();
int /*<<< orphan*/ output(char *);
int /*<<< orphan*/ setLineAlign(int);
int /*<<< orphan*/ startBuffer(int);
void showCredits() {
  animateBox(25, 8, 66, 17);
  startBuffer(66);
  setLineAlign(0);
  output("____ ____ ____ ___  _ ___ ____ \n|    |__/ |___ |  \\ |  |  [__  "
         "\n|___ |  \\ |___ |__/ |  |  ___] \n\n");
  setLineAlign(-1);
  output("  Niko Berkmann | @n2code\n    n2code@users.noreply.github.com\n");
  setLineAlign(+1);
  output("Steffen Wagner | @wagnst  \nmail@wagnst.de    \n");
  setLineAlign(-1);
  output("  Marvin Klose | @marvinklose\n    marvinklose@gmx.net\n");
  setLineAlign(+1);
  output("Michael Wieneke | @momoxd  \nmail@momoxd.de    \n");
  setLineAlign(-1);
  output("  Inga Miadowicz | @IngaMiad\n    inga.miadowicz@gmx.de\n");
  setLineAlign(0);
  output("\nPress any key to return to main menu.\n");
  flushBuffer();
  getch();
  animateBox(66, 17, 25, 8);
}


x86 assembly (clang, -O0):
<showCredits>:
push   %rbp
mov    %rsp,%rbp
mov    $0x19,%edi
mov    $0x8,%esi
mov    $0x42,%edx
mov    $0x11,%ecx
call   1050 <animateBox@plt>
mov    $0x42,%edi
call   1030 <startBuffer@plt>
xor    %edi,%edi
call   1080 <setLineAlign@plt>
lea    0xe6b(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xeb7(%rip),%rdi
call   1040 <output@plt>
mov    $0x1,%edi
call   1080 <setLineAlign@plt>
lea    0xee0(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xef9(%rip),%rdi
call   1040 <output@plt>
mov    $0x1,%edi
call   1080 <setLineAlign@plt>
lea    0xf1a(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xf34(%rip),%rdi
call   1040 <output@plt>
xor    %edi,%edi
call   1080 <setLineAlign@plt>
lea    0xf59(%rip),%rdi
call   1040 <output@plt>
mov    $0x0,%al
call   1060 <flushBuffer@plt>
mov    $0x0,%al
call   1070 <getch@plt>
mov    $0x42,%edi
mov    $0x11,%esi
mov    $0x19,%edx
mov    $0x8,%ecx
call   1050 <animateBox@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<showCredits>:
push   %rax
mov    $0x19,%edi
mov    $0x8,%esi
mov    $0x42,%edx
mov    $0x11,%ecx
call   1050 <animateBox@plt>
mov    $0x42,%edi
call   1030 <startBuffer@plt>
xor    %edi,%edi
call   1080 <setLineAlign@plt>
lea    0xe6e(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xeba(%rip),%rdi
call   1040 <output@plt>
mov    $0x1,%edi
call   1080 <setLineAlign@plt>
lea    0xee3(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xefc(%rip),%rdi
call   1040 <output@plt>
mov    $0x1,%edi
call   1080 <setLineAlign@plt>
lea    0xf1d(%rip),%rdi
call   1040 <output@plt>
mov    $0xffffffff,%edi
call   1080 <setLineAlign@plt>
lea    0xf37(%rip),%rdi
call   1040 <output@plt>
xor    %edi,%edi
call   1080 <setLineAlign@plt>
lea    0xf5c(%rip),%rdi
call   1040 <output@plt>
xor    %eax,%eax
call   1060 <flushBuffer@plt>
xor    %eax,%eax
call   1070 <getch@plt>
mov    $0x42,%edi
mov    $0x11,%esi
mov    $0x19,%edx
mov    $0x8,%ecx
pop    %rax
jmp    1050 <animateBox@plt>

LLVM IR (-O0):
@.str = [98 x i8] c"____ ____ ____ ___ _ ___ ____ \0A| |__/ |___ | \\ | | [__ \0A|___ | \\ |___ |__/ | | ___] \0A\0A\00"
@.str.1 = [63 x i8] c" Niko Berkmann | @n2code\0A n2code@users.noreply.github.com\0A\00"
@.str.2 = [47 x i8] c"Steffen Wagner | @wagnst \0Amail@wagnst.de \0A\00"
@.str.3 = [55 x i8] c" Marvin Klose | @marvinklose\0A marvinklose@gmx.net\0A\00"
@.str.4 = [48 x i8] c"Michael Wieneke | @momoxd \0Amail@momoxd.de \0A\00"
@.str.5 = [56 x i8] c" Inga Miadowicz | @IngaMiad\0A inga.miadowicz@gmx.de\0A\00"
@.str.6 = [40 x i8] c"\0APress any key to return to main menu.\0A\00"
define void @showCredits() {
%1 = call i32 @animateBox(i32 25, i32 8, i32 66, i32 17)
%2 = call i32 @startBuffer(i32 66)
%3 = call i32 @setLineAlign(i32 0)
%4 = call i32 @output(i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @setLineAlign(i32 -1)
%6 = call i32 @output(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 @setLineAlign(i32 1)
%8 = call i32 @output(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.2, i64 0, i64 0))
%9 = call i32 @setLineAlign(i32 -1)
%10 = call i32 @output(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.3, i64 0, i64 0))
%11 = call i32 @setLineAlign(i32 1)
%12 = call i32 @output(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.4, i64 0, i64 0))
%13 = call i32 @setLineAlign(i32 -1)
%14 = call i32 @output(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.5, i64 0, i64 0))
%15 = call i32 @setLineAlign(i32 0)
%16 = call i32 @output(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.6, i64 0, i64 0))
%17 = call i32 (...) @flushBuffer()
%18 = call i32 (...) @getch()
%19 = call i32 @animateBox(i32 66, i32 17, i32 25, i32 8)
ret void
}

LLVM IR (-O2):
@.str = [98 x i8] c"____ ____ ____ ___ _ ___ ____ \0A| |__/ |___ | \\ | | [__ \0A|___ | \\ |___ |__/ | | ___] \0A\0A\00"
@.str.1 = [63 x i8] c" Niko Berkmann | @n2code\0A n2code@users.noreply.github.com\0A\00"
@.str.2 = [47 x i8] c"Steffen Wagner | @wagnst \0Amail@wagnst.de \0A\00"
@.str.3 = [55 x i8] c" Marvin Klose | @marvinklose\0A marvinklose@gmx.net\0A\00"
@.str.4 = [48 x i8] c"Michael Wieneke | @momoxd \0Amail@momoxd.de \0A\00"
@.str.5 = [56 x i8] c" Inga Miadowicz | @IngaMiad\0A inga.miadowicz@gmx.de\0A\00"
@.str.6 = [40 x i8] c"\0APress any key to return to main menu.\0A\00"
define void @showCredits() {
%1 = tail call i32 @animateBox(i32 25, i32 8, i32 66, i32 17)
%2 = tail call i32 @startBuffer(i32 66)
%3 = tail call i32 @setLineAlign(i32 0)
%4 = tail call i32 @output(i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str, i64 0, i64 0))
%5 = tail call i32 @setLineAlign(i32 -1)
%6 = tail call i32 @output(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0))
%7 = tail call i32 @setLineAlign(i32 1)
%8 = tail call i32 @output(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.2, i64 0, i64 0))
%9 = tail call i32 @setLineAlign(i32 -1)
%10 = tail call i32 @output(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.3, i64 0, i64 0))
%11 = tail call i32 @setLineAlign(i32 1)
%12 = tail call i32 @output(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.4, i64 0, i64 0))
%13 = tail call i32 @setLineAlign(i32 -1)
%14 = tail call i32 @output(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.5, i64 0, i64 0))
%15 = tail call i32 @setLineAlign(i32 0)
%16 = tail call i32 @output(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.6, i64 0, i64 0))
%17 = tail call i32 (...) @flushBuffer()
%18 = tail call i32 (...) @getch()
%19 = tail call i32 @animateBox(i32 66, i32 17, i32 25, i32 8)
ret void
}