#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*/ puts0(char *);
void memmap(void) {
  puts0("Memory map for Proolix-l (real mode)\r\n0 - 1FF  Vectors\r\n200 - 3FF "
        "free area (stack of boot sector)\r\n400 - 4FF ROM BIOS data\r\n600 "
        "=0060:0000 - load kernel address (see src/stage2/boot.S, KernelSeg "
        "constant)\r\n07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\r\n07E00 "
        "                     Boot sector end\r\n30500 (=3050:0000) stage2 "
        "(see src/boot-sector/boots.S, stage2_seg constant)\r\nMemTop (f.e. "
        "9FFFF)\r\nA0000 EGA (in graph modes)\r\nB0000 MDA, Hercules 1st "
        "videopage\r\nB8000 CGA, EGA, VGA 1st videopage (mode=3, symbol "
        "mode)\r\nC8000 Additional ROM modules (2K blocks)\r\nE0000 End of "
        "addtn ROM\r\nE0000 Bg  AT ROM BIOS\r\nEFFFF End AT ROM BIOS\r\nF6000 "
        "ROM Basic\r\nFE000 ROM BIOS, POST\r\nFFFF0 JMP - COLD REBOOT\r\nFFFF5 "
        "BIOS version/date (ASCII)\r\nFFFFE PC/XT/AT identefication byte\r\n");
}


x86 assembly (clang, -O0):
<memmap>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <puts0@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<memmap>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts0@plt>

LLVM IR (-O0):
@.str = [765 x i8] c"Memory map for Proolix-l (real mode)\0D\0A0 - 1FF Vectors\0D\0A200 - 3FF free area (stack of boot sector)\0D\0A400 - 4FF ROM BIOS data\0D\0A600 =0060:0000 - load kernel address (see src/stage2/boot.S, KernelSeg constant)\0D\0A07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\0D\0A07E00 Boot sector end\0D\0A30500 (=3050:0000) stage2 (see src/boot-sector/boots.S, stage2_seg constant)\0D\0AMemTop (f.e. 9FFFF)\0D\0AA0000 EGA (in graph modes)\0D\0AB0000 MDA, Hercules 1st videopage\0D\0AB8000 CGA, EGA, VGA 1st videopage (mode=3, symbol mode)\0D\0AC8000 Additional ROM modules (2K blocks)\0D\0AE0000 End of addtn ROM\0D\0AE0000 Bg AT ROM BIOS\0D\0AEFFFF End AT ROM BIOS\0D\0AF6000 ROM Basic\0D\0AFE000 ROM BIOS, POST\0D\0AFFFF0 JMP - COLD REBOOT\0D\0AFFFF5 BIOS version/date (ASCII)\0D\0AFFFFE PC/XT/AT identefication byte\0D\0A\00"
define void @memmap() {
%1 = call i32 @puts0(i8* getelementptr inbounds ([765 x i8], [765 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [765 x i8] c"Memory map for Proolix-l (real mode)\0D\0A0 - 1FF Vectors\0D\0A200 - 3FF free area (stack of boot sector)\0D\0A400 - 4FF ROM BIOS data\0D\0A600 =0060:0000 - load kernel address (see src/stage2/boot.S, KernelSeg constant)\0D\0A07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\0D\0A07E00 Boot sector end\0D\0A30500 (=3050:0000) stage2 (see src/boot-sector/boots.S, stage2_seg constant)\0D\0AMemTop (f.e. 9FFFF)\0D\0AA0000 EGA (in graph modes)\0D\0AB0000 MDA, Hercules 1st videopage\0D\0AB8000 CGA, EGA, VGA 1st videopage (mode=3, symbol mode)\0D\0AC8000 Additional ROM modules (2K blocks)\0D\0AE0000 End of addtn ROM\0D\0AE0000 Bg AT ROM BIOS\0D\0AEFFFF End AT ROM BIOS\0D\0AF6000 ROM Basic\0D\0AFE000 ROM BIOS, POST\0D\0AFFFF0 JMP - COLD REBOOT\0D\0AFFFF5 BIOS version/date (ASCII)\0D\0AFFFFE PC/XT/AT identefication byte\0D\0A\00"
define void @memmap() {
%1 = tail call i32 @puts0(i8* getelementptr inbounds ([765 x i8], [765 x i8]* @.str, i64 0, i64 0))
ret void
}