#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: 475: "
        "count of HDD\r\n");
  puts0(
      "07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\r\n07E00                "
      "      Boot sector end\r\n30000 or 30500 stage2 ('ct' file or kernel, "
      "3000 - fdd, 3050 - hdd)\r\n3FFFF or 404FF - end of kernel\r\n40500 - "
      "memory area #1\r\nMemTop (f.e. 9FFFF)\r\nB8000 CGA, EGA, VGA 1st "
      "videopage (mode=3, symbol mode)\r\nC8000 Additional ROM modules (2K "
      "blocks)\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 identification byte");
}


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

x86 assembly (clang, -O2):
<memmap>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts0@plt>
lea    0xf6d(%rip),%rdi
pop    %rax
jmp    1030 <puts0@plt>

LLVM IR (-O0):
@.str = [145 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: 475: count of HDD\0D\0A\00"
@.str.1 = [516 x i8] c"07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\0D\0A07E00 Boot sector end\0D\0A30000 or 30500 stage2 ('ct' file or kernel, 3000 - fdd, 3050 - hdd)\0D\0A3FFFF or 404FF - end of kernel\0D\0A40500 - memory area\0D\0AMemTop (f.e. 9FFFF)\0D\0AB8000 CGA, EGA, VGA 1st videopage (mode=3, symbol mode)\0D\0AC8000 Additional ROM modules (2K blocks)\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 identification byte\00"
define void @memmap() {
%1 = call i32 @puts0(i8* getelementptr inbounds ([145 x i8], [145 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @puts0(i8* getelementptr inbounds ([516 x i8], [516 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [145 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: 475: count of HDD\0D\0A\00"
@.str.1 = [516 x i8] c"07C00 =0:7C00 (=0070:7500) Boot sector (stage1)\0D\0A07E00 Boot sector end\0D\0A30000 or 30500 stage2 ('ct' file or kernel, 3000 - fdd, 3050 - hdd)\0D\0A3FFFF or 404FF - end of kernel\0D\0A40500 - memory area\0D\0AMemTop (f.e. 9FFFF)\0D\0AB8000 CGA, EGA, VGA 1st videopage (mode=3, symbol mode)\0D\0AC8000 Additional ROM modules (2K blocks)\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 identification byte\00"
define void @memmap() {
%1 = tail call i32 @puts0(i8* getelementptr inbounds ([145 x i8], [145 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @puts0(i8* getelementptr inbounds ([516 x i8], [516 x i8]* @.str.1, i64 0, i64 0))
ret void
}