Full Code of xt-sys/exectos for AI

master 19092eda2ebf cached
347 files
2.8 MB
741.9k tokens
2810 symbols
1 requests
Download .txt
Showing preview only (2,964K chars total). Download the full file or copy to clipboard to get everything.
Repository: xt-sys/exectos
Branch: master
Commit: 19092eda2ebf
Files: 347
Total size: 2.8 MB

Directory structure:
gitextract_3qi0z4ew/

├── .clangd
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CMakeLists.txt
├── CONTRIBUTING.md
├── COPYING.md
├── ExectOS.code-workspace
├── README.md
├── boot/
│   ├── CMakeLists.txt
│   ├── bootdata/
│   │   ├── CMakeLists.txt
│   │   └── xtldr/
│   │       ├── CMakeLists.txt
│   │       └── xtldr.ini
│   ├── bootsect/
│   │   ├── CMakeLists.txt
│   │   ├── amd64/
│   │   │   └── cpu.S
│   │   ├── espboot.S
│   │   ├── i686/
│   │   │   └── cpu.S
│   │   └── mbrboot.S
│   └── xtldr/
│       ├── CMakeLists.txt
│       ├── README.md
│       ├── arch/
│       │   ├── amd64/
│       │   │   └── memory.cc
│       │   └── i686/
│       │       └── memory.cc
│       ├── biosutil.cc
│       ├── bootutil.cc
│       ├── config.cc
│       ├── console.cc
│       ├── data.cc
│       ├── debug.cc
│       ├── efiutils.cc
│       ├── includes/
│       │   ├── libxtos.hh
│       │   └── xtldr.hh
│       ├── library/
│       │   └── modproto.cc
│       ├── memory.cc
│       ├── modules/
│       │   ├── CMakeLists.txt
│       │   ├── acpi/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── acpi.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── acpi.hh
│       │   ├── beep/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── beep.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── beep.hh
│       │   ├── chainldr/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── chainldr.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── chainldr.hh
│       │   ├── dummy/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── dummy.cc
│       │   │   └── includes/
│       │   │       └── dummy.hh
│       │   ├── framebuf/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── framebuf.cc
│       │   │   └── includes/
│       │   │       └── framebuf.hh
│       │   ├── pecoff/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── includes/
│       │   │   │   └── pecoff.hh
│       │   │   └── pecoff.cc
│       │   └── xtos_o/
│       │       ├── CMakeLists.txt
│       │       ├── amd64/
│       │       │   └── memory.cc
│       │       ├── data.cc
│       │       ├── i686/
│       │       │   └── memory.cc
│       │       ├── includes/
│       │       │   └── xtos.hh
│       │       └── xtos.cc
│       ├── protocol.cc
│       ├── shell.cc
│       ├── textui.cc
│       ├── volume.cc
│       └── xtldr.cc
├── configure.ps1
├── configure.sh
├── drivers/
│   ├── CMakeLists.txt
│   └── ntosdrv/
│       ├── CMakeLists.txt
│       ├── ntosdrv.cc
│       ├── ntosdrv.spec
│       └── rtl.cc
├── sdk/
│   ├── CMakeLists.txt
│   ├── cmake/
│   │   ├── README.md
│   │   ├── baseaddress/
│   │   │   ├── amd64.cmake
│   │   │   └── i686.cmake
│   │   ├── emulation.cmake
│   │   ├── functions.cmake
│   │   ├── toolchain.cmake
│   │   ├── version/
│   │   │   └── xtver.h.cmake
│   │   ├── version.cmake
│   │   └── xtchain.cmake
│   ├── firmware/
│   │   ├── README.md
│   │   ├── bochsrc_amd64.cfg
│   │   ├── bochsrc_i686.cfg
│   │   ├── ovmf_amd64.fd
│   │   └── ovmf_i686.fd
│   ├── xtadk/
│   │   ├── CMakeLists.txt
│   │   ├── amd64/
│   │   │   └── ke.cc
│   │   ├── i686/
│   │   │   └── ke.cc
│   │   └── includes/
│   │       └── adkdefs.h
│   └── xtdk/
│       ├── README.md
│       ├── amd64/
│       │   ├── artypes.h
│       │   ├── hlfuncs.h
│       │   ├── hltypes.h
│       │   ├── ketypes.h
│       │   ├── mmtypes.h
│       │   └── xtstruct.h
│       ├── blfuncs.h
│       ├── bltarget.h
│       ├── bltypes.h
│       ├── exfuncs.h
│       ├── extypes.h
│       ├── hlfuncs.h
│       ├── hltypes.h
│       ├── i686/
│       │   ├── artypes.h
│       │   ├── hlfuncs.h
│       │   ├── hltypes.h
│       │   ├── ketypes.h
│       │   ├── mmtypes.h
│       │   └── xtstruct.h
│       ├── iotypes.h
│       ├── kdfuncs.h
│       ├── kdtypes.h
│       ├── kefuncs.h
│       ├── ketypes.h
│       ├── ldrtypes.h
│       ├── mmfuncs.h
│       ├── mmtypes.h
│       ├── potypes.h
│       ├── pstypes.h
│       ├── rtlfuncs.h
│       ├── rtltypes.h
│       ├── xtbase.h
│       ├── xtblapi.h
│       ├── xtcompat.h
│       ├── xtdebug.h
│       ├── xtdefs.h
│       ├── xtfont.h
│       ├── xtfw.h
│       ├── xtglyph.h
│       ├── xtguid.h
│       ├── xtimage.h
│       ├── xtkmapi.h
│       ├── xtstatus.h
│       ├── xtstruct.h
│       ├── xttarget.h
│       ├── xttypes.h
│       └── xtuefi.h
└── xtoskrnl/
    ├── CMakeLists.txt
    ├── README.md
    ├── ar/
    │   ├── amd64/
    │   │   ├── archsup.S
    │   │   ├── cpufunc.cc
    │   │   ├── data.cc
    │   │   ├── procsup.cc
    │   │   └── traps.cc
    │   └── i686/
    │       ├── archsup.S
    │       ├── cpufunc.cc
    │       ├── data.cc
    │       ├── procsup.cc
    │       └── traps.cc
    ├── ex/
    │   ├── exports.cc
    │   └── rundown.cc
    ├── hl/
    │   ├── acpi.cc
    │   ├── amd64/
    │   │   ├── cpu.cc
    │   │   ├── firmware.cc
    │   │   ├── ioport.cc
    │   │   ├── irq.cc
    │   │   ├── pic.cc
    │   │   ├── rtc.cc
    │   │   ├── runlevel.cc
    │   │   └── timer.cc
    │   ├── cport.cc
    │   ├── data.cc
    │   ├── exports.cc
    │   ├── fbdev.cc
    │   ├── i686/
    │   │   ├── cpu.cc
    │   │   ├── firmware.cc
    │   │   ├── ioport.cc
    │   │   ├── irq.cc
    │   │   ├── pic.cc
    │   │   ├── rtc.cc
    │   │   ├── runlevel.cc
    │   │   └── timer.cc
    │   ├── init.cc
    │   ├── ioreg.cc
    │   └── x86/
    │       ├── cpu.cc
    │       ├── firmware.cc
    │       ├── pic.cc
    │       ├── rtc.cc
    │       └── timer.cc
    ├── includes/
    │   ├── ar/
    │   │   ├── amd64/
    │   │   │   ├── asmsup.hh
    │   │   │   ├── cpufunc.hh
    │   │   │   ├── procsup.hh
    │   │   │   └── traps.hh
    │   │   └── i686/
    │   │       ├── asmsup.hh
    │   │       ├── cpufunc.hh
    │   │       ├── procsup.hh
    │   │       └── traps.hh
    │   ├── ar.hh
    │   ├── ex/
    │   │   └── rundown.hh
    │   ├── ex.hh
    │   ├── hl/
    │   │   ├── acpi.hh
    │   │   ├── cport.hh
    │   │   ├── cpu.hh
    │   │   ├── fbdev.hh
    │   │   ├── firmware.hh
    │   │   ├── init.hh
    │   │   ├── ioport.hh
    │   │   ├── ioreg.hh
    │   │   ├── irq.hh
    │   │   ├── pic.hh
    │   │   ├── rtc.hh
    │   │   ├── runlevel.hh
    │   │   └── timer.hh
    │   ├── hl.hh
    │   ├── kd/
    │   │   ├── dbg.hh
    │   │   └── dbgio.hh
    │   ├── kd.hh
    │   ├── ke/
    │   │   ├── apc.hh
    │   │   ├── bootinfo.hh
    │   │   ├── crash.hh
    │   │   ├── dispatch.hh
    │   │   ├── dpc.hh
    │   │   ├── event.hh
    │   │   ├── guard.hh
    │   │   ├── kprocess.hh
    │   │   ├── krnlinit.hh
    │   │   ├── kthread.hh
    │   │   ├── kubsan.hh
    │   │   ├── proc.hh
    │   │   ├── runlevel.hh
    │   │   ├── semphore.hh
    │   │   ├── shdata.hh
    │   │   ├── spinlock.hh
    │   │   ├── sysres.hh
    │   │   ├── systime.hh
    │   │   └── timer.hh
    │   ├── ke.hh
    │   ├── mm/
    │   │   ├── alloc.hh
    │   │   ├── amd64/
    │   │   │   ├── pagemap.hh
    │   │   │   ├── paging.hh
    │   │   │   └── pte.hh
    │   │   ├── colors.hh
    │   │   ├── guard.hh
    │   │   ├── hlpool.hh
    │   │   ├── i686/
    │   │   │   ├── pagemap.hh
    │   │   │   ├── paging.hh
    │   │   │   └── pte.hh
    │   │   ├── kpool.hh
    │   │   ├── mmgr.hh
    │   │   ├── pfault.hh
    │   │   ├── pfn.hh
    │   │   └── pool.hh
    │   ├── mm.hh
    │   ├── po/
    │   │   └── idle.hh
    │   ├── po.hh
    │   ├── rtl/
    │   │   ├── amd64/
    │   │   │   └── intrin.hh
    │   │   ├── atomic.hh
    │   │   ├── bitmap.hh
    │   │   ├── dispatch.hh
    │   │   ├── endian.hh
    │   │   ├── guid.hh
    │   │   ├── i686/
    │   │   │   └── intrin.hh
    │   │   ├── llist.hh
    │   │   ├── math.hh
    │   │   ├── memory.hh
    │   │   ├── sha1.hh
    │   │   ├── slist.hh
    │   │   ├── string.hh
    │   │   ├── time.hh
    │   │   └── widestr.hh
    │   ├── rtl.hh
    │   └── xtos.hh
    ├── kd/
    │   ├── data.cc
    │   ├── dbgio.cc
    │   └── exports.cc
    ├── ke/
    │   ├── amd64/
    │   │   ├── dispatch.cc
    │   │   ├── krnlinit.cc
    │   │   ├── kthread.cc
    │   │   └── proc.cc
    │   ├── apc.cc
    │   ├── bootinfo.cc
    │   ├── crash.cc
    │   ├── data.cc
    │   ├── dispatch.cc
    │   ├── dpc.cc
    │   ├── event.cc
    │   ├── exports.cc
    │   ├── i686/
    │   │   ├── dispatch.cc
    │   │   ├── krnlinit.cc
    │   │   ├── kthread.cc
    │   │   └── proc.cc
    │   ├── kprocess.cc
    │   ├── krnlinit.cc
    │   ├── kthread.cc
    │   ├── kubsan.cc
    │   ├── runlevel.cc
    │   ├── semphore.cc
    │   ├── shdata.cc
    │   ├── spinlock.cc
    │   ├── sysres.cc
    │   ├── systime.cc
    │   └── timer.cc
    ├── mm/
    │   ├── alloc.cc
    │   ├── amd64/
    │   │   ├── mmgr.cc
    │   │   ├── pagemap.cc
    │   │   ├── paging.cc
    │   │   ├── pfault.cc
    │   │   ├── pfn.cc
    │   │   ├── pool.cc
    │   │   └── pte.cc
    │   ├── colors.cc
    │   ├── data.cc
    │   ├── exports.cc
    │   ├── hlpool.cc
    │   ├── i686/
    │   │   ├── mmgr.cc
    │   │   ├── pagemap.cc
    │   │   ├── paging.cc
    │   │   ├── pfault.cc
    │   │   ├── pfn.cc
    │   │   ├── pool.cc
    │   │   └── pte.cc
    │   ├── kpool.cc
    │   ├── mmgr.cc
    │   ├── paging.cc
    │   ├── pfn.cc
    │   ├── pool.cc
    │   └── pte.cc
    ├── po/
    │   └── idle.cc
    ├── rtl/
    │   ├── amd64/
    │   │   ├── dispatch.cc
    │   │   ├── exsup.cc
    │   │   └── intrin.cc
    │   ├── atomic.cc
    │   ├── bitmap.cc
    │   ├── data.cc
    │   ├── endian.cc
    │   ├── exports.cc
    │   ├── guid.cc
    │   ├── i686/
    │   │   ├── dispatch.cc
    │   │   ├── exsup.cc
    │   │   └── intrin.cc
    │   ├── llist.cc
    │   ├── math.cc
    │   ├── memory.cc
    │   ├── sha1.cc
    │   ├── slist.cc
    │   ├── string.cc
    │   ├── time.cc
    │   └── widestr.cc
    └── xtoskrnl.spec

================================================
FILE CONTENTS
================================================

================================================
FILE: .clangd
================================================
Diagnostics:
  Suppress: 'pp_including_mainfile_in_preamble'

InlayHints:
  Enabled: No


================================================
FILE: .github/CODEOWNERS
================================================
*                    @Belliash


================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!--
    1. Please speak English, this is the language all of us can speak and write.
    2. Please take a moment to check that your issue doesn't already exist.
    3. Please give all relevant information below for bug reports, because 
       incomplete details will be handled as an invalid report.
-->

## ExectOS Information
 - ExectOS Version (or commit ref):
 - System Architecture (eg. i686, amd64, ...):
 - Hypervisor Information (use `[X]`):
   - [ ] Bare metal
   - [ ] Bochs
   - [ ] Hyper-V
   - [ ] Qemu (KVM)
   - [ ] Qemu (TCG)
   - [ ] VirtualBox
   - [ ] VmWare
   - [ ] Other

## Your problem description
Please provide here as much information as possible, including a code snippet if applicable.

## Expected results
Describe here, what output and/or software behave did you expect.

## Current results
Provide here current result and program output.

## Debug backtrace and logs
Provide here logs and debug bugtrace if applicable.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
    1. Please speak English, this is the language all of us can speak and write.
    2. Please follow the CONTRIBUTING.md to make your changes smoothly merged.
-->

## Purpose
_Do a quick recap of your work here._
_If it fixes some bug, don't forget to mention it here._

## Proposed changes
_Describe what you propose to change/add/fix with this pull request._
- 
- 

## TODO
_Use a TODO when your pull request is Work in Progress._
- [ ] 
- [ ] 
- [ ]

## Agreements
- [ ] I have read the Contributors License Agreement and I consent to those terms.


================================================
FILE: .github/workflows/build.yml
================================================
name: Builds
run-name: ${{ github.actor }} runs Gitea Actions
on: [push]

jobs:
  ExectOS:
    strategy:
      matrix:
        arch: [amd64, i686]
        build: [debug, release]
    runs-on: oscw
    container:
      image: codingworkshop/oscw-runner:latest
    steps:
      - name: Clone repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Build ExectOS
        run: |
          echo "charch ${{ matrix.arch }} && chbuild ${{ matrix.build }} && ./configure.sh && cd build-${{ matrix.arch }}-${{ matrix.build }} && xbuild -v && xbuild diskimg -v" > build.cmds
          xtchain < build.cmds
      - name: Publish binaries
        if: ${{ github.ref == 'refs/heads/master' }}
        env:
          OSCW_ARTIFACTS_HOSTNAME: ${{ secrets.OSCW_ARTIFACTS_HOSTNAME }}
          OSCW_ARTIFACTS_USERNAME: ${{ secrets.OSCW_ARTIFACTS_USERNAME }}
          OSCW_ARTIFACTS_USERKEY: ${{ secrets.OSCW_ARTIFACTS_USERKEY }}
        run: |
          tar -I 'gzip' -cpf ExectOS-$(date +'%Y%m%d')-${GITHUB_SHA:0:10}-${{ matrix.arch }}-${{ matrix.build }}-bin.tar.gz -C build-${{ matrix.arch }}-${{ matrix.build }}/output/binaries .
          tar -I 'gzip' -cpf ExectOS-$(date +'%Y%m%d')-${GITHUB_SHA:0:10}-${{ matrix.arch }}-${{ matrix.build }}-sdk.tar.gz -C build-${{ matrix.arch }}-${{ matrix.build }}/output/sdk .
          tar -I 'gzip' -cpf ExectOS-$(date +'%Y%m%d')-${GITHUB_SHA:0:10}-${{ matrix.arch }}-${{ matrix.build }}-sym.tar.gz -C build-${{ matrix.arch }}-${{ matrix.build }}/output/symbols .
          gzip -c build-${{ matrix.arch }}-${{ matrix.build }}/output/disk.img > ExectOS-$(date +'%Y%m%d')-${GITHUB_SHA:0:10}-${{ matrix.arch }}-${{ matrix.build }}.img.gz
          artifact_publish "ExectOS-$(date +'%Y%m%d')-${GITHUB_SHA:0:10}-${{ matrix.arch }}-${{ matrix.build }}*.gz" ExectOS


================================================
FILE: .gitignore
================================================
.cache
.vscode
build
build-*


================================================
FILE: CMakeLists.txt
================================================
# Minimum CMake version requirement
cmake_minimum_required(VERSION 3.19.0)

# Lowercase target architecture
string(TOLOWER ${ARCH} ARCH)

# Validate and set architectures specific definitions
if(ARCH STREQUAL "i686")
    add_definitions(-D__i386__ -D__i686__)
elseif(ARCH STREQUAL "amd64")
    add_definitions(-D__amd64__ -D__x86_64__)
else()
    message(FATAL_ERROR "Unknown target architecture (${ARCH}) set!")
endif()

# Print target architecture
message("-- Target architecture: ${ARCH}")

# Set the build type
if(NOT BUILD_TYPE)
    set(BUILD_TYPE DEBUG)
endif()
string(TOUPPER ${BUILD_TYPE} BUILD_TYPE)

# Set build type specific definitions
if(BUILD_TYPE STREQUAL "DEBUG")
    add_definitions(-DDBG=1)
    set(CMAKE_BUILD_TYPE DEBUG)
else()
    set(BUILD_TYPE RELEASE)
    set(CMAKE_BUILD_TYPE NONE)
endif()

# Print build type
message("-- Target build type: ${BUILD_TYPE}")

# Set toolchain file
set(CMAKE_TOOLCHAIN_FILE "sdk/cmake/toolchain.cmake")

# Set project name
project(EXECTOS)

# Load all the CMake SDK
include(sdk/cmake/baseaddress/${ARCH}.cmake)
include(sdk/cmake/emulation.cmake)
include(sdk/cmake/functions.cmake)
include(sdk/cmake/version.cmake)
include(sdk/cmake/xtchain.cmake)

# Enable compilers
enable_language(ASM C CXX)

# Add project specific definitions
add_definitions(-D__XTOS__)
add_definitions(-DXTOS_SOURCE_DIR="${EXECTOS_SOURCE_DIR}")
add_definitions(-DXTOS_BINARY_DIR="${EXECTOS_BINARY_DIR}")

# Add assembler flags
add_compiler_asmflags(-D__XTOS_ASSEMBLER__)

# Compute __FILE__ definition
file(RELATIVE_PATH _PATH_PREFIX ${EXECTOS_BINARY_DIR} ${EXECTOS_SOURCE_DIR})
add_compiler_flags(-D__RELFILE__="&__FILE__[__FILE__[0] == '.' ? sizeof \\\"${_PATH_PREFIX}\\\" - 1 : sizeof XTOS_SOURCE_DIR]")

# Set the virtual disk image size (in MiB)
set_disk_image_size(48)

# Build all subprojects
add_subdirectory(boot)
add_subdirectory(drivers)
add_subdirectory(sdk)
add_subdirectory(xtoskrnl)


================================================
FILE: CONTRIBUTING.md
================================================
## Contributing
We appreciate any form for contribution you want to make to the project! ExectOS is purely driven by passion, and we
dedicate any and all available spare time to this project. Contributions of any kind are deerly welcome, but should
follow the below guidelines.

## Where To Start?
There is a ton of work to do in ExectOS and we appreciate any help. If you are interested in writing features,
porting drivers, fixing bugs, writing tests, creating documentation, or helping out in any other way, we would
love the help.

## Wish List
If you are looking for a way to contribute, but you are not sure where to start, check our list of
[open issues](https://git.codingworkshop.eu.org/xt-sys/exectos/issues). If you find interesting task and you are serious
about tackling one, feel free to contact us. We will be able to provide a more detailed information and suggestions
towards getting started.

## Reporting Bugs
When submitting issues, please take care that the bug report is not a duplicate of an already existing, open issue.
Please follow the template specified for issues.

## Feature Requests
ExectOS is currently in early development stage, thus we do not accept feature requests yet. We focus currently on the
system core components.

## Submissions
If you want to contribute on the project please fork the repository, and contribute by opening a 
[Pull Request](https://git.codingworkshop.eu.org/xt-sys/exectos/pulls). There is a pull request template you can use.
While doing this, please follow few, simple rules:
 * Provide your real name and e-mail address
 * Do not commit code that doesn't compile
 * Test your changes before committing
 * Always add descriptive log messages
 * Don't mix formatting changes with code changes

Good luck!


================================================
FILE: COPYING.md
================================================
# GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007

Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/)

Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.

## Preamble

The GNU General Public License is a free, copyleft license for software and
other kinds of works.

The licenses for most software and other practical works are designed to take
away your freedom to share and change the works. By contrast, the GNU General
Public License is intended to guarantee your freedom to share and change all
versions of a program--to make sure it remains free software for all its users.
We, the Free Software Foundation, use the GNU General Public License for most
of our software; it applies also to any other work released this way by its
authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for them if you wish), that you
receive source code or can get it if you want it, that you can change the
software or use pieces of it in new free programs, and that you know you can do
these things.

To protect your rights, we need to prevent others from denying you these rights
or asking you to surrender the rights. Therefore, you have certain
responsibilities if you distribute copies of the software, or if you modify it:
responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for
a fee, you must pass on to the recipients the same freedoms that you received.
You must make sure that they, too, receive or can get the source code. And you
must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps:

  1. assert copyright on the software, and
  2. offer you this License giving you legal permission to copy, distribute
     and/or modify it.

For the developers' and authors' protection, the GPL clearly explains that
there is no warranty for this free software. For both users' and authors' sake,
the GPL requires that modified versions be marked as changed, so that their
problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified
versions of the software inside them, although the manufacturer can do so. This
is fundamentally incompatible with the aim of protecting users' freedom to
change the software. The systematic pattern of such abuse occurs in the area of
products for individuals to use, which is precisely where it is most
unacceptable. Therefore, we have designed this version of the GPL to prohibit
the practice for those products. If such problems arise substantially in other
domains, we stand ready to extend this provision to those domains in future
versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States
should not allow patents to restrict development and use of software on
general-purpose computers, but in those that do, we wish to avoid the special
danger that patents applied to a free program could make it effectively
proprietary. To prevent this, the GPL assures that patents cannot be used to
render the program non-free.

The precise terms and conditions for copying, distribution and modification
follow.

## TERMS AND CONDITIONS

### 0. Definitions.

*This License* refers to version 3 of the GNU General Public License.

*Copyright* also means copyright-like laws that apply to other kinds of works,
such as semiconductor masks.

*The Program* refers to any copyrightable work licensed under this License.
Each licensee is addressed as *you*. *Licensees* and *recipients* may be
individuals or organizations.

To *modify* a work means to copy from or adapt all or part of the work in a
fashion requiring copyright permission, other than the making of an exact copy.
The resulting work is called a *modified version* of the earlier work or a work
*based on* the earlier work.

A *covered work* means either the unmodified Program or a work based on the
Program.

To *propagate* a work means to do anything with it that, without permission,
would make you directly or secondarily liable for infringement under applicable
copyright law, except executing it on a computer or modifying a private copy.
Propagation includes copying, distribution (with or without modification),
making available to the public, and in some countries other activities as well.

To *convey* a work means any kind of propagation that enables other parties to
make or receive copies. Mere interaction with a user through a computer
network, with no transfer of a copy, is not conveying.

An interactive user interface displays *Appropriate Legal Notices* to the
extent that it includes a convenient and prominently visible feature that

  1. displays an appropriate copyright notice, and
  2. tells the user that there is no warranty for the work (except to the
     extent that warranties are provided), that licensees may convey the work
     under this License, and how to view a copy of this License.

If the interface presents a list of user commands or options, such as a menu, a
prominent item in the list meets this criterion.

### 1. Source Code.

The *source code* for a work means the preferred form of the work for making
modifications to it. *Object code* means any non-source form of a work.

A *Standard Interface* means an interface that either is an official standard
defined by a recognized standards body, or, in the case of interfaces specified
for a particular programming language, one that is widely used among developers
working in that language.

The *System Libraries* of an executable work include anything, other than the
work as a whole, that (a) is included in the normal form of packaging a Major
Component, but which is not part of that Major Component, and (b) serves only
to enable use of the work with that Major Component, or to implement a Standard
Interface for which an implementation is available to the public in source code
form. A *Major Component*, in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system (if any) on
which the executable work runs, or a compiler used to produce the work, or an
object code interpreter used to run it.

The *Corresponding Source* for a work in object code form means all the source
code needed to generate, install, and (for an executable work) run the object
code and to modify the work, including scripts to control those activities.
However, it does not include the work's System Libraries, or general-purpose
tools or generally available free programs which are used unmodified in
performing those activities but which are not part of the work. For example,
Corresponding Source includes interface definition files associated with source
files for the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require, such as
by intimate data communication or control flow between those subprograms and
other parts of the work.

The Corresponding Source need not include anything that users can regenerate
automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.

### 2. Basic Permissions.

All rights granted under this License are granted for the term of copyright on
the Program, and are irrevocable provided the stated conditions are met. This
License explicitly affirms your unlimited permission to run the unmodified
Program. The output from running a covered work is covered by this License only
if the output, given its content, constitutes a covered work. This License
acknowledges your rights of fair use or other equivalent, as provided by
copyright law.

You may make, run and propagate covered works that you do not convey, without
conditions so long as your license otherwise remains in force. You may convey
covered works to others for the sole purpose of having them make modifications
exclusively for you, or provide you with facilities for running those works,
provided that you comply with the terms of this License in conveying all
material for which you do not control copyright. Those thus making or running
the covered works for you must do so exclusively on your behalf, under your
direction and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

Conveying under any other circumstances is permitted solely under the
conditions stated below. Sublicensing is not allowed; section 10 makes it
unnecessary.

### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.

No covered work shall be deemed part of an effective technological measure
under any applicable law fulfilling obligations under article 11 of the WIPO
copyright treaty adopted on 20 December 1996, or similar laws prohibiting or
restricting circumvention of such measures.

When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention is
effected by exercising rights under this License with respect to the covered
work, and you disclaim any intention to limit operation or modification of the
work as a means of enforcing, against the work's users, your or third parties'
legal rights to forbid circumvention of technological measures.

### 4. Conveying Verbatim Copies.

You may convey verbatim copies of the Program's source code as you receive it,
in any medium, provided that you conspicuously and appropriately publish on
each copy an appropriate copyright notice; keep intact all notices stating that
this License and any non-permissive terms added in accord with section 7 apply
to the code; keep intact all notices of the absence of any warranty; and give
all recipients a copy of this License along with the Program.

You may charge any price or no price for each copy that you convey, and you may
offer support or warranty protection for a fee.

### 5. Conveying Modified Source Versions.

You may convey a work based on the Program, or the modifications to produce it
from the Program, in the form of source code under the terms of section 4,
provided that you also meet all of these conditions:

  - a) The work must carry prominent notices stating that you modified it, and
    giving a relevant date.
  - b) The work must carry prominent notices stating that it is released under
    this License and any conditions added under section 7. This requirement
    modifies the requirement in section 4 to *keep intact all notices*.
  - c) You must license the entire work, as a whole, under this License to
    anyone who comes into possession of a copy. This License will therefore
    apply, along with any applicable section 7 additional terms, to the whole
    of the work, and all its parts, regardless of how they are packaged. This
    License gives no permission to license the work in any other way, but it
    does not invalidate such permission if you have separately received it.
  - d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your work need
    not make them do so.

A compilation of a covered work with other separate and independent works,
which are not by their nature extensions of the covered work, and which are not
combined with it such as to form a larger program, in or on a volume of a
storage or distribution medium, is called an *aggregate* if the compilation and
its resulting copyright are not used to limit the access or legal rights of the
compilation's users beyond what the individual works permit. Inclusion of a
covered work in an aggregate does not cause this License to apply to the other
parts of the aggregate.

### 6. Conveying Non-Source Forms.

You may convey a covered work in object code form under the terms of sections 4
and 5, provided that you also convey the machine-readable Corresponding Source
under the terms of this License, in one of these ways:

  - a) Convey the object code in, or embodied in, a physical product (including
    a physical distribution medium), accompanied by the Corresponding Source
    fixed on a durable physical medium customarily used for software
    interchange.
  - b) Convey the object code in, or embodied in, a physical product (including
    a physical distribution medium), accompanied by a written offer, valid for
    at least three years and valid for as long as you offer spare parts or
    customer support for that product model, to give anyone who possesses the
    object code either
    1. a copy of the Corresponding Source for all the software in the product
       that is covered by this License, on a durable physical medium
       customarily used for software interchange, for a price no more than your
       reasonable cost of physically performing this conveying of source, or
    2. access to copy the Corresponding Source from a network server at no
       charge.
  - c) Convey individual copies of the object code with a copy of the written
    offer to provide the Corresponding Source. This alternative is allowed only
    occasionally and noncommercially, and only if you received the object code
    with such an offer, in accord with subsection 6b.
  - d) Convey the object code by offering access from a designated place
    (gratis or for a charge), and offer equivalent access to the Corresponding
    Source in the same way through the same place at no further charge. You
    need not require recipients to copy the Corresponding Source along with the
    object code. If the place to copy the object code is a network server, the
    Corresponding Source may be on a different server operated by you or a
    third party) that supports equivalent copying facilities, provided you
    maintain clear directions next to the object code saying where to find the
    Corresponding Source. Regardless of what server hosts the Corresponding
    Source, you remain obligated to ensure that it is available for as long as
    needed to satisfy these requirements.
  - e) Convey the object code using peer-to-peer transmission, provided you
    inform other peers where the object code and Corresponding Source of the
    work are being offered to the general public at no charge under subsection
    6d.

A separable portion of the object code, whose source code is excluded from the
Corresponding Source as a System Library, need not be included in conveying the
object code work.

A *User Product* is either

  1. a *consumer product*, which means any tangible personal property which is
     normally used for personal, family, or household purposes, or
  2. anything designed or sold for incorporation into a dwelling.

In determining whether a product is a consumer product, doubtful cases shall be
resolved in favor of coverage. For a particular product received by a
particular user, *normally used* refers to a typical or common use of that
class of product, regardless of the status of the particular user or of the way
in which the particular user actually uses, or expects or is expected to use,
the product. A product is a consumer product regardless of whether the product
has substantial commercial, industrial or non-consumer uses, unless such uses
represent the only significant mode of use of the product.

*Installation Information* for a User Product means any methods, procedures,
authorization keys, or other information required to install and execute
modified versions of a covered work in that User Product from a modified
version of its Corresponding Source. The information must suffice to ensure
that the continued functioning of the modified object code is in no case
prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as part of a
transaction in which the right of possession and use of the User Product is
transferred to the recipient in perpetuity or for a fixed term (regardless of
how the transaction is characterized), the Corresponding Source conveyed under
this section must be accompanied by the Installation Information. But this
requirement does not apply if neither you nor any third party retains the
ability to install modified object code on the User Product (for example, the
work has been installed in ROM).

The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates for a
work that has been modified or installed by the recipient, or for the User
Product in which it has been modified or installed. Access to a network may be
denied when the modification itself materially and adversely affects the
operation of the network or violates the rules and protocols for communication
across the network.

Corresponding Source conveyed, and Installation Information provided, in accord
with this section must be in a format that is publicly documented (and with an
implementation available to the public in source code form), and must require
no special password or key for unpacking, reading or copying.

### 7. Additional Terms.

*Additional permissions* are terms that supplement the terms of this License by
making exceptions from one or more of its conditions. Additional permissions
that are applicable to the entire Program shall be treated as though they were
included in this License, to the extent that they are valid under applicable
law. If additional permissions apply only to part of the Program, that part may
be used separately under those permissions, but the entire Program remains
governed by this License without regard to the additional permissions.

When you convey a copy of a covered work, you may at your option remove any
additional permissions from that copy, or from any part of it. (Additional
permissions may be written to require their own removal in certain cases when
you modify the work.) You may place additional permissions on material, added
by you to a covered work, for which you have or can give appropriate copyright
permission.

Notwithstanding any other provision of this License, for material you add to a
covered work, you may (if authorized by the copyright holders of that material)
supplement the terms of this License with terms:

  - a) Disclaiming warranty or limiting liability differently from the terms of
    sections 15 and 16 of this License; or
  - b) Requiring preservation of specified reasonable legal notices or author
    attributions in that material or in the Appropriate Legal Notices displayed
    by works containing it; or
  - c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in reasonable
    ways as different from the original version; or
  - d) Limiting the use for publicity purposes of names of licensors or authors
    of the material; or
  - e) Declining to grant rights under trademark law for use of some trade
    names, trademarks, or service marks; or
  - f) Requiring indemnification of licensors and authors of that material by
    anyone who conveys the material (or modified versions of it) with
    contractual assumptions of liability to the recipient, for any liability
    that these contractual assumptions directly impose on those licensors and
    authors.

All other non-permissive additional terms are considered *further restrictions*
within the meaning of section 10. If the Program as you received it, or any
part of it, contains a notice stating that it is governed by this License along
with a term that is a further restriction, you may remove that term. If a
license document contains a further restriction but permits relicensing or
conveying under this License, you may add to a covered work material governed
by the terms of that license document, provided that the further restriction
does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you must place,
in the relevant source files, a statement of the additional terms that apply to
those files, or a notice indicating where to find the applicable terms.

Additional terms, permissive or non-permissive, may be stated in the form of a
separately written license, or stated as exceptions; the above requirements
apply either way.

### 8. Termination.

You may not propagate or modify a covered work except as expressly provided
under this License. Any attempt otherwise to propagate or modify it is void,
and will automatically terminate your rights under this License (including any
patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a
particular copyright holder is reinstated

  - a) provisionally, unless and until the copyright holder explicitly and
    finally terminates your license, and
  - b) permanently, if the copyright holder fails to notify you of the
    violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated
permanently if the copyright holder notifies you of the violation by some
reasonable means, this is the first time you have received notice of violation
of this License (for any work) from that copyright holder, and you cure the
violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses
of parties who have received copies or rights from you under this License. If
your rights have been terminated and not permanently reinstated, you do not
qualify to receive new licenses for the same material under section 10.

### 9. Acceptance Not Required for Having Copies.

You are not required to accept this License in order to receive or run a copy
of the Program. Ancillary propagation of a covered work occurring solely as a
consequence of using peer-to-peer transmission to receive a copy likewise does
not require acceptance. However, nothing other than this License grants you
permission to propagate or modify any covered work. These actions infringe
copyright if you do not accept this License. Therefore, by modifying or
propagating a covered work, you indicate your acceptance of this License to do
so.

### 10. Automatic Licensing of Downstream Recipients.

Each time you convey a covered work, the recipient automatically receives a
license from the original licensors, to run, modify and propagate that work,
subject to this License. You are not responsible for enforcing compliance by
third parties with this License.

An *entity transaction* is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered work
results from an entity transaction, each party to that transaction who receives
a copy of the work also receives whatever licenses to the work the party's
predecessor in interest had or could give under the previous paragraph, plus a
right to possession of the Corresponding Source of the work from the
predecessor in interest, if the predecessor has it or can get it with
reasonable efforts.

You may not impose any further restrictions on the exercise of the rights
granted or affirmed under this License. For example, you may not impose a
license fee, royalty, or other charge for exercise of rights granted under this
License, and you may not initiate litigation (including a cross-claim or
counterclaim in a lawsuit) alleging that any patent claim is infringed by
making, using, selling, offering for sale, or importing the Program or any
portion of it.

### 11. Patents.

A *contributor* is a copyright holder who authorizes use under this License of
the Program or a work on which the Program is based. The work thus licensed is
called the contributor's *contributor version*.

A contributor's *essential patent claims* are all patent claims owned or
controlled by the contributor, whether already acquired or hereafter acquired,
that would be infringed by some manner, permitted by this License, of making,
using, or selling its contributor version, but do not include claims that would
be infringed only as a consequence of further modification of the contributor
version. For purposes of this definition, *control* includes the right to grant
patent sublicenses in a manner consistent with the requirements of this
License.

Each contributor grants you a non-exclusive, worldwide, royalty-free patent
license under the contributor's essential patent claims, to make, use, sell,
offer for sale, import and otherwise run, modify and propagate the contents of
its contributor version.

In the following three paragraphs, a *patent license* is any express agreement
or commitment, however denominated, not to enforce a patent (such as an express
permission to practice a patent or covenant not to sue for patent
infringement). To *grant* such a patent license to a party means to make such
an agreement or commitment not to enforce a patent against the party.

If you convey a covered work, knowingly relying on a patent license, and the
Corresponding Source of the work is not available for anyone to copy, free of
charge and under the terms of this License, through a publicly available
network server or other readily accessible means, then you must either

  1. cause the Corresponding Source to be so available, or
  2. arrange to deprive yourself of the benefit of the patent license for this
     particular work, or
  3. arrange, in a manner consistent with the requirements of this License, to
     extend the patent license to downstream recipients.

*Knowingly relying* means you have actual knowledge that, but for the patent
license, your conveying the covered work in a country, or your recipient's use
of the covered work in a country, would infringe one or more identifiable
patents in that country that you have reason to believe are valid.

If, pursuant to or in connection with a single transaction or arrangement, you
convey, or propagate by procuring conveyance of, a covered work, and grant a
patent license to some of the parties receiving the covered work authorizing
them to use, propagate, modify or convey a specific copy of the covered work,
then the patent license you grant is automatically extended to all recipients
of the covered work and works based on it.

A patent license is *discriminatory* if it does not include within the scope of
its coverage, prohibits the exercise of, or is conditioned on the non-exercise
of one or more of the rights that are specifically granted under this License.
You may not convey a covered work if you are a party to an arrangement with a
third party that is in the business of distributing software, under which you
make payment to the third party based on the extent of your activity of
conveying the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory patent
license

  - a) in connection with copies of the covered work conveyed by you (or copies
    made from those copies), or
  - b) primarily for and in connection with specific products or compilations
    that contain the covered work, unless you entered into that arrangement, or
    that patent license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting any implied
license or other defenses to infringement that may otherwise be available to
you under applicable patent law.

### 12. No Surrender of Others' Freedom.

If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not excuse
you from the conditions of this License. If you cannot convey a covered work so
as to satisfy simultaneously your obligations under this License and any other
pertinent obligations, then as a consequence you may not convey it at all. For
example, if you agree to terms that obligate you to collect a royalty for
further conveying from those to whom you convey the Program, the only way you
could satisfy both those terms and this License would be to refrain entirely
from conveying the Program.

### 13. Use with the GNU Affero General Public License.

Notwithstanding any other provision of this License, you have permission to
link or combine any covered work with a work licensed under version 3 of the
GNU Affero General Public License into a single combined work, and to convey
the resulting work. The terms of this License will continue to apply to the
part which is the covered work, but the special requirements of the GNU Affero
General Public License, section 13, concerning interaction through a network
will apply to the combination as such.

### 14. Revised Versions of this License.

The Free Software Foundation may publish revised and/or new versions of the GNU
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.

Each version is given a distinguishing version number. If the Program specifies
that a certain numbered version of the GNU General Public License *or any later
version* applies to it, you have the option of following the terms and
conditions either of that numbered version or of any later version published by
the Free Software Foundation. If the Program does not specify a version number
of the GNU General Public License, you may choose any version ever published by
the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the
GNU General Public License can be used, that proxy's public statement of
acceptance of a version permanently authorizes you to choose that version for
the Program.

Later license versions may give you additional or different permissions.
However, no additional obligations are imposed on any author or copyright
holder as a result of your choosing to follow a later version.

### 15. Disclaimer of Warranty.

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
PARTIES PROVIDE THE PROGRAM *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.

### 16. Limitation of Liability.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS
PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

### 17. Interpretation of Sections 15 and 16.

If the disclaimer of warranty and limitation of liability provided above cannot
be given local legal effect according to their terms, reviewing courts shall
apply local law that most closely approximates an absolute waiver of all civil
liability in connection with the Program, unless a warranty or assumption of
liability accompanies a copy of the Program in return for a fee.

## END OF TERMS AND CONDITIONS ###

### How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible
use to the public, the best way to achieve this is to make it free software
which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach
them to the start of each source file to most effectively state the exclusion
of warranty; and each file should have at least the *copyright* line and a
pointer to where the full notice is found.

	<one line to give the program's name and a brief idea of what it does.>
	Copyright (C) <year>  <name of author>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like
this when it starts in an interactive mode:

	<program>  Copyright (C) <year>  <name of author>
	This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
	This is free software, and you are welcome to redistribute it
	under certain conditions; type `show c' for details.

The hypothetical commands `show w` and `show c` should show the appropriate
parts of the General Public License. Of course, your program's commands might
be different; for a GUI interface, you would use an *about box*.

You should also get your employer (if you work as a programmer) or school, if
any, to sign a *copyright disclaimer* for the program, if necessary. For more
information on this, and how to apply and follow the GNU GPL, see
[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/).

The GNU General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may consider
it more useful to permit linking proprietary applications with the library. If
this is what you want to do, use the GNU Lesser General Public License instead
of this License. But first, please read
[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html).


================================================
FILE: ExectOS.code-workspace
================================================
{
	"folders": [
		{
			"path": "."
		}
	],
	"settings": {
		"clangd.arguments": [
			"--compile-commands-dir=${workspaceFolder}/build/",
			"--header-insertion=never",
			"--enable-config",
			"--log=verbose"
		],
		"editor.rulers": [
			120
		],
		"terminal.integrated.profiles.linux": {
			"xtchain": {
				"path": "xtchain"
			}
		},
		"terminal.integrated.defaultProfile.linux": "xtchain",
	}
}

================================================
FILE: README.md
================================================
<p align=center>
  <a href="https://git.codingworkshop.eu.org/xt-sys/exectos">
    <img alt="GIT Repository" src="https://img.shields.io/badge/Source-GIT-purple">
  </a>
  <a href="https://git.codingworkshop.eu.org/xt-sys/exectos/activity/monthly">
    <img alt="Commits" src="https://img.shields.io/github/commit-activity/m/xt-sys/exectos?label=Commits">
  </a>
  <a href="https://git.codingworkshop.eu.org/xt-sys/exectos/actions">
    <img alt="Build Status" src="https://codingworkshop.eu.org/actions.php?project=xt-sys/exectos">
  </a>
  <a href="https://artifacts.codingworkshop.eu.org/ExectOS/?C=M&O=D">
    <img alt="CI/CD Artifacts" src="https://img.shields.io/badge/Download-%F0%9F%A1%87-blueviolet">
  </a>
  <a href="https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/COPYING.md">
    <img alt="License" src="https://img.shields.io/badge/License-GPLv3-blue.svg">
  </a>
  <a href="https://exectos.eu.org/ai-assisted">
    <img alt="AI Assisted" src="https://img.shields.io/badge/AI-Assisted-darkcyan">
  </a>
  <a href="https://github.com/sponsors/xt-sys/">
    <img alt="Sponsor" src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-red?logo=GitHub">
  </a>
  <a href="https://discord.com/invite/zBzJ5qMGX7">
    <img alt="Discord" src="https://img.shields.io/badge/Chat-Join%20Discord-success">
  </a>
</p>

---

# ExectOS Operating System
ExectOS is an open-source, general purpose operating system written from scratch. It aims to be modular,
maintainable and compatible with existing software. It implements a brand new XT architecture and features
own native application interface. On the backend, it contains a powerful driver model between device drivers
and the kernel, that enables kernel level components to be upgraded without a need to recompile all drivers.

# XT Architecture
ExectOS is a preemptive, reentrant multitasking operating system that implements the XT architecture which derives
from NT architecture. It is modular, and consists of two main layers: microkernel and user modes. Its' kernel mode has
full access to the hardware and system resources and runs code in a protected memory area. It consists of executive
services, which is itself made up on many modules that do specific tasks, a kernel and drivers. Unlike the NT, system
does not feature a separate Hardware Abstraction Layer (HAL) between the physical hardware and the rest of the OS.
Instead, XT architecture integrates a hardware specific code with the kernel. The user mode is made up of subsystems
and it has been designed to run applications written for many different types of operating systems. This allows to
implement any environment subsystem to support applications that are strictly written to the corresponding standard
(eg. DOS, or POSIX).

# Features
 * Modern, EFI enabled operating system
 * Runs on x86 and x86_64 architectures
 * Portable to other architectures
 * Modular design, open-source project
 * Own drivers for commonly used devices
 * NT drivers compatibility layer

# Requirements
ExectOS is currently in a very early stage of development, so its specific requirements are not fully defined yet.
However, based on the current design, it requires modern EFI hardware. You cannot boot ExectOS on a legacy BIOS
right now, but there are plans to add BIOS support in the future.

# Source structure
| Directory        | Description                                                  |
|------------------|--------------------------------------------------------------|
| boot/bootdata    | default configuration and data needed to boot XTOS           |
| boot/bootsect    | boot sector code (MBR & VBR) initializing the boot process   |
| boot/xtldr       | XTOS boot loader source code                                 |
| drivers          | XT native drivers source code                                |
| sdk/cmake        | host toolchain configuration and build-related functions     |
| sdk/firmware     | firmware enabling XTOS to boot on virtual machines           |
| sdk/xtdk         | XT Software Development Kit headers                          |
| services         | integral subsystems services source code                     |
| subsystems       | environment subsystems source code                           |
| xtoskrnl         | XTOS kernel source code                                      |

# Build
XTOS can only be built using [XTchain](https://git.codingworkshop.eu.org/xt-sys/xtchain), a dedicated toolchain designed
specifically for compiling XT software. XTChain is currently available for both Linux and Windows. Detailed instructions
on how to configure and run XTChain can be found [here](https://exectos.eu.org/contributing/setting-up-xtchain).

With the XTchain environment already running, navigate to the directory containing the ExectOS source code and use the
following commands to set the target build architecture and configure the sources:
```
charch [i686|amd64]
chbuild [DEBUG|RELEASE]
./configure.sh
```
Once the sources are configured, enter the build directory and compile the source code:
```
cd build
xbuild
```
It is also possible to build a disk image ready to use with QEMU with the following command:
```
xbuild diskimg
```

# Contributing
There is a ton of work to do in ExectOS and we appreciate any help. If you are interested in writing features,
porting drivers, fixing bugs, writing tests, creating documentation, or helping out in any other way, we would
love the help. More details on how to contrubite can be found it [CONTRIBUTING.md](CONTRIBUTING.md) file.

# Licensing
ExectOS is licensed to the public under the terms of the GNU General Public License, version 3. For more
detailed information check the [COPYING.md](COPYING.md) file.

# GIT Mirrors
 * Main GIT Repository: https://git.codingworkshop.eu.org/xt-sys/exectos
 * GitHub Mirror: https://github.com/xt-sys/exectos
 * GitLab Mirror: https://gitlab.com/xt-sys/exectos

# Contact
 * Discord Server: https://discord.com/invite/zBzJ5qMGX7


================================================
FILE: boot/CMakeLists.txt
================================================
add_subdirectory(bootdata)
add_subdirectory(bootsect)
add_subdirectory(xtldr)


================================================
FILE: boot/bootdata/CMakeLists.txt
================================================
add_subdirectory(xtldr)


================================================
FILE: boot/bootdata/xtldr/CMakeLists.txt
================================================
set_install_file(xtldr.ini efi/boot/xtldr)


================================================
FILE: boot/bootdata/xtldr/xtldr.ini
================================================
# This is the XT Boot Loader (XTLDR) configuration file. It follows an INI format and is divided into sections, which
# contain a properties. Each property has a name and value delimited by an equal (=) character. Comments must start
# with a semicolon (;) or a hash character (#) and run to the end of the line.
#
# Basic section is [XTLDR] which contains a bootloader specific options:
# Debug        - enables the debugging port and consists of two comma-separated parameters: com port and baud rate;
#                it is also possible to specify custom port address with: COM0:[address],[baud_rate]
# Default      - specifies which operating system listen in config file will be started if no choice is made
# KeepLastBoot - specifies whether last booted OS should be stored in NVRAM and booted automatically next time, or not;
#                this parameter takes 'true' or 'false' value
# Modules      - supplies a list of modules that will be loaded in orded to extend XTLDR functionality
# Timeout      - sets the countdown timer (in seconds) before the default OS get started automatically
# Tune         - plays a tune on the pcspeaker right before the XTLDR boot menu shows up
#
# Another type of section is [OS-Section] which adds a new position (operating system) to the boot menu. Each type
# of the operating system provides a set of available parameters. If unsupported option is added, it is being ignored
# by the XT Boot Loader. The available options are:
# BootModules  - supplies a list of additional modules that will be loaded just before invoking the boot protocol
# SystemName   - sets a long operating system name that will be shown on the boot menu
# SystemType   - specifies an OS type from a predefined list of supported boot protocols
# SystemPath   - the ARC path, eg. multi(0)disk(0)rdisk(0)partition(1)
# KernelFile   - sets kernel filename with optional path relative to SystemPath
# InitrdFile   - sets initramfs image filename with optional path relative to SystemPath
# HalFile      - sets HAL filename with optional path relative to SystemPath
# Parameters   - specifies extra boot options for the kernel

[XTLDR]
Debug=COM1,115200
Default=ExectOS
KeepLastBoot=TRUE
Modules=beep
Timeout=10
Tune=400 880 2 988 2 783 2 392 2 587 3

[ExectOS]
SystemName="ExectOS Operating System"
SystemType=XTOS
BootModules=xtos_o
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
KernelFile=xtoskrnl.exe
Parameters=DEBUG=COM1,115200

[ExectOS_FBDEBUG]
SystemName="ExectOS Operating System (FBDEBUG)"
SystemType=XTOS
BootModules=xtos_o
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
KernelFile=xtoskrnl.exe
Parameters=DEBUG=COM1,115200;SCREEN

[ExectOS_NOXPA]
SystemName="ExectOS Operating System (NOXPA)"
SystemType=XTOS
BootModules=xtos_o
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
KernelFile=xtoskrnl.exe
Parameters=DEBUG=COM1,115200 NOXPA

[ExectOS_NOXPA_FBDEBUG]
SystemName="ExectOS Operating System (NOXPA / FBDEBUG)"
SystemType=XTOS
BootModules=xtos_o
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
KernelFile=xtoskrnl.exe
Parameters=DEBUG=COM1,115200;SCREEN NOXPA

[Windows]
SystemName="Microsoft Windows 2000"
SystemType=NT50
BootModules=ntos
SystemPath=multi(0)disk(0)rdisk(0)partition(2)/Windows
KernelFile=ntoskrnl.exe
HalFile=hal.dll
Parameters=/NOGUIBOOT /MININT

[Linux]
SystemName="GNU/Linux"
SystemType=LINUX
BootModules=linux
SystemPath=multi(0)disk(0)rdisk(0)partition(3)/boot
KernelFile=vmlinuz
InitrdFile=initramfs.cpio.gz
Parameters=root=/dev/xvda3 rootfstype=ext4

[EFI Shell]
SystemName="EFI Shell"
SystemType=CHAINLOADER
BootModules=chainldr
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/efi/boot
KernelFile=efishell.efi


================================================
FILE: boot/bootsect/CMakeLists.txt
================================================
# XT Boot Sector
PROJECT(BOOTSECT)

add_definitions("-DARCH_ESP_SOURCE=\\\"${ARCH}/cpu.S\\\"")

# Compile boot sectors
compile_bootsector(mbrboot ${BOOTSECT_SOURCE_DIR}/mbrboot.S 0x7C00 Start)
compile_bootsector(espboot ${BOOTSECT_SOURCE_DIR}/espboot.S 0x7C00 Start)


================================================
FILE: boot/bootsect/amd64/cpu.S
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            boot/bootsect/amd64/cpu.S
 * DESCRIPTION:     Low-level support for CPU initialization
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */


BuildPageMap:
    /* Generate page map for first 1GB of memory */
    pushaw
    pushw %es
    cld
    movw $(0x1000 / 16), %ax
    movw %ax, %es
    xorw %di, %di
    movl $(0x2000 | 0x07), %eax
    stosl
    xorl %eax, %eax
    movw $1021, %cx
    rep stosl
    movw $(0x2000 / 16), %ax
    movw %ax, %es
    xorw %di, %di
    movl $(0x3000 | 0x07), %eax
    stosl
    xorl %eax, %eax
    movw $1021, %cx
    rep stosl
    movw $(0x3000 / 16), %ax
    movw %ax, %es
    xorw %di, %di
    movw $512, %cx
    movl $0x00000083, %eax
.BuildPageMapLoop:
    /* Identity map 512 pages of 2MB */
    movl %eax, %es:(%di)
    addl $2097152, %eax
    addw $0x08, %di
    loop .BuildPageMapLoop
    popw %es
    popaw
    ret

InitializeCpu:
    /* Check if CPU supports CPUID, long mode and PAE */
    pushal
    pushfl
    popl %eax
    movl %eax, %ebx
    xorl $0x00200000, %eax
    pushl %eax
    popfl
    pushfl
    popl %eax
    cmpl %ebx, %eax
    je CpuUnsupported
    movl $0x01, %eax
    cpuid
    testl $0x40, %edx
    jz CpuUnsupported
    movl $0x80000000, %eax
    cpuid
    cmpl $0x80000000, %eax
    jbe CpuUnsupported
    movl $0x80000001, %eax
    cpuid
    testl $0x20000000, %edx
    jz CpuUnsupported
    popal
    call LoadGdt
    ret

LoadGdt:
    /* Load Global Descriptor Table */
    lgdt .GdtPointer
    ret

RunStage2:
    /* Switch to long mode and pass control to Stage 2 */
    call BuildPageMap
    call ParseExecutableHeader
    xorl %edx, %edx
    pushl %edx
    pushl %eax
    cli
    xorw %ax, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %fs
    movw %ax, %gs
    movw %ax, %ss
    movl %cr4, %eax
    orl $0x00A0, %eax
    movl %eax, %cr4
    movl $0x00001000, %eax
    movl %eax, %cr3
    movl $0xC0000080, %ecx
    rdmsr
    orl $0x00000100, %eax
    wrmsr
    movl %cr0, %eax
    orl $0x80000001, %eax
    movl %eax, %cr0
    ljmp $0x10, $.Stage2LongMode
.code64
.Stage2LongMode:
    /* Set segments and stack, then jump to Stage 2 */
    movw $0x18, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %ss
    xorw %ax, %ax
    movw %ax, %fs
    movw %ax, %gs
    popq %rax
    xorq %rbx, %rbx
    xorq %rcx, %rcx
    xorq %rdx, %rdx
    xorq %rsi, %rsi
    xorq %rdi, %rdi
    xorq %rbp, %rbp
    jmp *%rax

.code16
.GdtDescriptor:
    /* Global Descriptor Table */
    .quad 0x0000000000000000
    .quad 0x0000000000000000
    .quad 0x00AF9A000000FFFF
    .quad 0x00CF92000000FFFF
    .quad 0x00009E000000FFFF
    .quad 0x000092000000FFFF
    .quad 0x00CF9B000000FFFF

.GdtPointer:
    /* Pointer to Global Descriptor Table */
    .word .GdtPointer - .GdtDescriptor - 1
    .long .GdtDescriptor

.Stage2FileName:
    /* Name of Stage 2 executable file */
    .ascii "BOOTX64 EFI"


================================================
FILE: boot/bootsect/espboot.S
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            boot/bootsect/espboot.S
 * DESCRIPTION:     XT Boot Loader ESP boot code (FAT32)
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */

.text
.code16


.global Start
Start:
    /* Jump to the real start to omit the BPB (BIOS Parameter Block) */
    jmp RealStart
    nop

/* BIOS Parameter Block */
OsName:
    .ascii "XTOS "
OsVersion:
    .ascii "1.0"
BytesPerSector:
    .word 512
SectorsPerCluster:
    .byte 2
ReservedSectors:
    .word 8
FatCopies:
    .byte 1
RootDirEntries:
    .word 1024
TotalSectors:
    .word 0
MediaType:
    .byte 0xF8
SectorsPerFat:
    .word 0
SectorsPerTrack:
    .word 17
NumberOfHeads:
    .word 0
HiddenSectors:
    .long 0
TotalBigSectors:
    .long 0x200000
BigSectorsPerFat:
    .long 0x1FE0
ExtendedFlags:
    .word 0
FsVersion:
    .word 0
RootDirStartCluster:
    .long 0
FSInfoSector:
    .word 0
BackupBootSector:
    .word 6
Reserved:
    .fill 12, 1, 0
DriveNumber:
    .byte 0x80
CurrentHead:
    .byte 0
Signature:
    .byte 0x29
SerialNumber:
    .long 0
VolumeLabel:
    .ascii "NO NAME    "
FileSystem:
    .ascii "FAT32   "

RealStart:
    /* Set segments and stack */
    cli
    cld
    xorw %ax, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %ss
    movw $0x7C00, %bp
    leaw -16(%bp), %sp
    sti

    /* Get drive number */
    cmpb $0xFF, DriveNumber - Start(%bp)
    jne GetDriveParameters
    movb %dl, DriveNumber - Start(%bp)

GetDriveParameters:
    /* Get drive parameters from the BIOS */
    movb DriveNumber - Start(%bp), %dl
    movb $0x08, %ah
    movb $0x00, %al
    int $0x13
    jnc GetDriveSize
    movw $0xFFFF, %cx
    movb %cl, %dh

GetDriveSize:
    /* Get drive size from the BIOS */
    movzbl %dh, %eax
    incw %ax
    movzbl %cl, %edx
    andb $0x3F, %dl
    mulw %dx
    xchgb %cl, %ch
    shrb $0x06, %ch
    incw %cx
    movzwl %cx, %ecx
    mull %ecx
    movl %eax, %edi

VerifyBiosParameterBlock:
    /* Verify the FAT32 BPB */
    cmpw $0x00, SectorsPerFat - Start(%bp)
    jne FsError
    cmpw $0x00, FsVersion - Start(%bp)
    ja FsError

ReadExtraCode:
    /* Read second VBR sector with extra boot code (3 sectors starting from sector 2) */
    movl HiddenSectors - Start(%bp), %eax
    addl $0x02, %eax
    movw $0x03, %cx
    xorw %bx, %bx
    movw %bx, %es
    movw $0x7E00, %bx
    call ReadSectors
    jmp StartExtraCode

ReadSectors:
    /* Check for extended BIOS functions and use it only if available */
    pushw %es
    pushal
    movb $0x41, %ah
    movw $0x55AA, %bx
    movb DriveNumber - Start(%bp), %dl
    int $0x13
    jc .ReadCHS
    cmpw $0xAA55, %bx
    jne .ReadCHS
    testb $0x01, %cl
    jz .ReadCHS

    /* Verify drive size and determine whether to use CHS or LBA */
    cmpl %edi, %eax
    jnb .ReadLBA

.ReadCHS:
    /* Read sectors using CHS */
    popal

.CHSLoop:
    /* Read sector by sector using CHS */
    pushw %cx
    pushal
    xorl %edx, %edx
    movzwl SectorsPerTrack - Start(%bp), %ecx
    divl %ecx
    incb %dl
    movb %dl, %cl
    movl %eax, %edx
    shrl $0x10, %edx
    divw NumberOfHeads - Start(%bp)
    movb %dl, %dh
    movb DriveNumber - Start(%bp), %dl
    movb %al, %ch
    rorb $0x01, %ah
    rorb $0x01, %ah
    orb %ah, %cl
    movw $0x0201, %ax
    int $0x13
    popal
    popw %cx
    jc DiskError
    incl %eax
    movw %es, %dx
    addw $0x20, %dx
    movw %dx, %es
    loop .CHSLoop
    popw %es
    ret

.ReadLBA:
    /* Prepare DAP packet and read sectors using LBA */
    popal
    pushw %cx
    pushal
    pushw $0x00
    pushw $0x00
    pushl %eax
    pushw %es
    pushw %bx
    pushw %cx
    pushw $0x10
    movw %sp, %si
    movb DriveNumber - Start(%bp), %dl
    movb $0x42, %ah
    int $0x13
    jc DiskError
    addw $0x10, %sp
    popal
    popw %si
    pushw %bx
    movzwl %si, %ebx
    addl %ebx, %eax
    shll $0x05, %ebx
    movw %es, %dx
    addw %bx, %dx
    movw %dx, %es
    popw %bx
    subw %si, %cx
    jnz .ReadLBA
    popw %es
    ret

DiskError:
    /* Display disk error message and reboot */
    movw $.MsgDiskError, %si
    call Print
    jmp Reboot

FsError:
    /* Display FS error message and reboot */
    movw $.MsgFsError, %si
    call Print
    jmp Reboot

Print:
    /* Simple routine to print messages */
    lodsb
    orb     %al, %al
    jz      .DonePrint
    movb    $0x0E, %ah
    movw    $0x07, %bx
    int     $0x10
    jmp     Print
.DonePrint:
    retw

Reboot:
    /* Display a message, wait for a key press and reboot */
    movw $.MsgAnyKey, %si
    call Print
    xorw %ax, %ax
    int $0x16
    int $0x19

.MsgAnyKey:
    .ascii "Press any key to restart...\r\n\0"

.MsgDiskError:
    .ascii "Disk error!\r\n\0"

.MsgFsError:
    .ascii "File system error!\r\n\0"

/* Fill the rest of the VBR with zeros and add VBR signature at the end */
.fill (510 - (. - Start)), 1, 0
.word 0xAA55


StartExtraCode:
    /* Load XTLDR file from disk */
    call LoadStage2

    /* Enable A20 gate */
    call EnableA20

    /* Call architecture specific initialization code */
    call InitializeCpu

    /* Jump to Stage2 */
    call RunStage2

Clear8042:
    /* Clear 8042 PS/2 buffer */
    nop
    nop
    nop
    nop
    inb $0x64, %al
    cmpb $0xff, %al
    je .Clear8042_Done
    testb $0x02, %al
    jnz Clear8042
.Clear8042_Done:
    ret

EnableA20:
    /* Enable A20 gate */
    pushaw
    call Clear8042
    movb $0xD1, %al
    outb %al, $0x64
    call Clear8042
    movb $0xDF, %al
    outb %al, $0x60
    call Clear8042
    movb $0xFF, %al
    outb %al, $0x64
    call Clear8042
    popaw
    ret

FindFatEntry:
    /* Find a file or directory in the FAT table */
    pushw %bx
    pushw %cx
    pushw %dx
    pushw %si
    pushw %di
.FindFatCluster:
    /* Find FAT32 cluster holding the entry */
    cmp $0x0FFFFFF8, %eax
    jae .FindEntryFail
    pushl %eax
    movw $0x0200, %bx
    movw %bx, %es
    call ReadCluster
    popl %eax
    movb SectorsPerCluster - Start(%bp), %cl
    shlw $0x04, %cx
    xorw %di, %di
.FindEntryLoop:
    /* Find the entry */
    movb %es:(%di), %al
    cmpb $0x00, %al
    je .FindEntryFail
    cmpb $0xE5, %al
    je .FindSkipEntry
    movb %es:0x0B(%di), %ah
    cmpb $0x0F, %ah
    je .FindSkipEntry
    pushw %di
    pushw %si
    pushw %cx
    movw $0x0B, %cx
    repe cmpsb
    popw %cx
    popw %si
    popw %di
    jnz .FindSkipEntry
    movw %es:0x1A(%di), %ax
    movw %es:0x14(%di), %dx
    shll $0x10, %edx
    orl %edx, %eax
    clc
    jmp .FindEntryDone
.FindSkipEntry:
    /* Skip to the next entry */
    addw $0x20, %di
    decw %cx
    jnz .FindEntryLoop
    call GetFatEntry
    jmp .FindFatCluster
.FindEntryFail:
    /* Error, file/directory not found */
    stc
.FindEntryDone:
    /* Clean up the stack */
    popw %di
    popw %si
    popw %dx
    popw %cx
    popw %bx
    ret

GetFatEntry:
    /* Get FAT32 sector and offset from FAT table */
    shll $0x02, %eax
    movl %eax, %ecx
    xorl %edx, %edx
    movzwl BytesPerSector - Start(%bp), %ebx
    pushl %ebx
    divl %ebx
    movzwl ReservedSectors - Start(%bp), %ebx
    addl %ebx, %eax
    movl HiddenSectors - Start(%bp), %ebx
    addl %ebx, %eax
    popl %ebx
    decl %ebx
    andl %ebx, %ecx
    movzwl ExtendedFlags - Start(%bp), %ebx
    andw $0x0F, %bx
    jz LoadFatSector
    cmpb FatCopies - Start(%bp), %bl
    jae FsError
    pushl %eax
    movl BigSectorsPerFat - Start(%bp), %eax
    mull %ebx
    popl %edx
    addl %edx, %eax

LoadFatSector:
    /* Load FAT32 sector from disk */
    pushl %ecx
    movw $0x9000, %bx
    movw %bx, %es
    cmpl %esi, %eax
    je .LoadFatSectorDone
    movl %eax, %esi
    xorw %bx, %bx
    movw $0x01, %cx
    call ReadSectors
.LoadFatSectorDone:
    /* Clean up the stack */
    popl %ecx
    movl %es:(%ecx), %eax
    andl $0x0FFFFFFF, %eax
    ret

LoadStage2:
    /* Load Stage2 executable, first find file in the path */
    movl $0xFFFFFFFF, %esi
    pushl %esi
    movl 0x7C2C, %eax
    movw $.EfiDirName, %si
    call FindFatEntry
    jc Stage2NotLoaded
    movw $.BootDirName, %si
    call FindFatEntry
    jc Stage2NotLoaded
    movw $.Stage2FileName, %si
    call FindFatEntry
    jc Stage2NotLoaded
    popl %esi
    /* Load XTLDR file from disk */
    cmpl $0x02, %eax
    jb FileNotFound
    cmpl $0x0FFFFFF8, %eax
    jae FileNotFound
    movw $(0xF800 / 16), %bx
    movw %bx, %es
.LoadStage2Loop:
    /* Load file data from disk */
    pushl %eax
    xorw %bx, %bx
    pushw %es
    call ReadCluster
    popw %es
    xorw %bx, %bx
    movb SectorsPerCluster - Start(%bp), %bl
    shlw $0x05, %bx
    movw %es, %ax
    addw %bx, %ax
    movw %ax, %es
    popl %eax
    pushw %es
    call GetFatEntry
    popw %es
    cmpl $0x0FFFFFF8, %eax
    jb .LoadStage2Loop
    ret

ParseExecutableHeader:
    /* Parse Stage2 PE/COFF executable header */
    pushw %es
    movw $(0xF800 / 16), %ax
    movw %ax, %es
    movl %es:60, %eax
    addl $(4 + 20), %eax
    movl %es:16(%eax), %eax
    addl $0xF800, %eax
    popw %es
    ret

ReadCluster:
    /* Read FAT32 cluster from disk */
    decl %eax
    decl %eax
    xorl %edx, %edx
    movzbl SectorsPerCluster - Start(%bp), %ebx
    mull %ebx
    pushl %eax
    xorl %edx, %edx
    movzbl FatCopies - Start(%bp), %eax
    mull BigSectorsPerFat - Start(%bp)
    movzwl ReservedSectors - Start(%bp), %ebx
    addl %ebx, %eax
    addl HiddenSectors - Start(%bp), %eax
    popl %ebx
    addl %ebx, %eax
    xorw %bx, %bx
    movzbw SectorsPerCluster - Start(%bp), %cx
    call ReadSectors
    ret

/* Include architecture specific code */
.include ARCH_ESP_SOURCE

CpuUnsupported:
    /* Display CPU unsupported message and reboot */
    popal
    movw $.MsgCpuUnsupported, %si
    call Print
    jmp Reboot

FileNotFound:
    /* Display XTLDR not found message and reboot */
    movw $.MsgXtLdrNotFound, %si
    call Print
    jmp Reboot

Stage2NotLoaded:
    /* Clean up the stack and display XTLDR not found message and reboot */
    popl %esi
    jmp FileNotFound

.BootDirName:
    /* Boot directory name */
    .ascii "BOOT       "

.EfiDirName:
    /* EFI directory name */
    .ascii "EFI        "

.MsgCpuUnsupported:
    .ascii "CPU not supported!\r\n\0"

.MsgXtLdrNotFound:
    .ascii "XTLDR Stage2 not found!\r\n\0"

/* Fill the rest of the extra VBR with zeros and add signature */
.fill (2043 - (. - Start)), 1, 0
.ascii "XTLDR"


================================================
FILE: boot/bootsect/i686/cpu.S
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            boot/bootsect/i686/cpu.S
 * DESCRIPTION:     Low-level support for CPU initialization
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */


BuildPageMap:
    /* Generate page map for first 16MB of memory */
    pushaw
    pushw %es
    cld
    movw $(0x1000 >> 0x04), %ax
    movw %ax, %es
    xorw %di, %di
    movl $(0x2000 | 0x03), %eax
    stosl
    movl $(0x3000 | 0x03), %eax
    stosl
    movl $(0x4000 | 0x03), %eax
    stosl
    movl $(0x5000 | 0x03), %eax
    stosl
    xorl %eax, %eax
    movw $(1024 - 4), %cx
    rep stosl
    movl $0x00000003, %eax
    movl $4, %edx
    movw $(0x2000 >> 0x04), %bx
.BuildPageMapLoop:
    /* Identity map 1024 pages of 4KB */
    movw %bx, %es
    xorw %di, %di
    pushl %edx
    movw $1024, %cx
.FillPageMapTable:
    /* Fill the page table */
    movl %eax, %es:(%di)
    addl $4096, %eax
    addw $0x04, %di
    loop .FillPageMapTable
    popl %edx
    addw $(0x1000 >> 0x04), %bx
    decl %edx
    jnz .BuildPageMapLoop
    popw %es
    popaw
    ret

InitializeCpu:
    /* Check if CPU supports CPUID */
    pushal
    pushfl
    popl %eax
    movl %eax, %ebx
    xorl $0x00200000, %eax
    pushl %eax
    popfl
    pushfl
    popl %eax
    cmpl %ebx, %eax
    je CpuUnsupported
    popal
    call LoadGdt
    ret

LoadGdt:
    /* Load Global Descriptor Table */
    lgdt .GdtPointer
    ret

RunStage2:
    /* Switch to protected mode and pass control to Stage 2 */
    call BuildPageMap
    call ParseExecutableHeader
    pushl %eax
    cli
    movl %cr0, %eax
    orl $0x01, %eax
    movl %eax, %cr0
    ljmp $0x08, $.Stage2ProtectedMode
.code32
.Stage2ProtectedMode:
    /* Set segments and stack, then jump to Stage 2 */
    movw $0x10, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %ss
    xorw %ax, %ax
    movw %ax, %fs
    movw %ax, %gs
    popl %eax
    xorl %ebx, %ebx
    xorl %ecx, %ecx
    xorl %edx, %edx
    xorl %esi, %esi
    xorl %edi, %edi
    xorl %ebp, %ebp
    movl $0x1000, %ebx
    movl %ebx, %cr3
    movl %cr0, %ebx
    orl $0x80000000, %ebx
    movl %ebx, %cr0
    jmp *%eax

.code16
.GdtDescriptor:
    /* Global Descriptor Table */
    .quad 0x0000000000000000
    .quad 0x00CF9A000000FFFF
    .quad 0x00CF92000000FFFF
    .quad 0x00009E000000FFFF
    .quad 0x000092000000FFFF

.GdtPointer:
    /* Pointer to Global Descriptor Table */
    .word .GdtPointer - .GdtDescriptor - 1
    .long .GdtDescriptor

.Stage2FileName:
    /* Name of Stage 2 executable file */
    .ascii "BOOTIA32EFI"


================================================
FILE: boot/bootsect/mbrboot.S
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            boot/bootsect/amd64/mbrboot.S
 * DESCRIPTION:     XT Boot Loader MBR boot code
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 *                  Aiken Harris <aiken@codingworkshop.eu.org>
 */

.text
.code16


.global Start
Start:
    /* Set segments and stack */
    cli
    cld
    xorw %ax, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %ss
    movw $0x7C00, %bp
    leaw -16(%bp), %sp
    sti

    /* Relocate MBR to 1FE0:7C00 */
    movw $0x1FE0, %ax
    movw %ax, %es
    movw %bp, %si
    movw %bp, %di
    movw $256, %cx
    rep movsw

    /* Jump to the relocated MBR code */
    jmp $0x1FE0, $RealStart

RealStart:
    /* Set segments */
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %ss

    /* Print welcome message */
    leaw .MsgXtosBoot, %si
    call Print

    /* Get BIOS boot drive and partition table offset */
    lea 0x1BE(%bp), %si
    movb %dl, .BootDrive
    xorw %cx, %cx

FindActivePartition:
    /* Look for active partition */
    movb (%si), %al
    cmpb $0x80, %al
    je PartitionFound
    addw $16, %si
    incw %cx
    cmpw $4, %cx
    jne FindActivePartition
    jmp PartitionNotFound

PartitionFound:
    /* Save LBA start */
    movl 8(%si), %eax
    movl %eax, .LbaStart

    /* Prepare Disk Address Packet (DAP) */
    lea .Dap, %si
    movb $0x10, 0(%si)
    movb $0x00, 1(%si)
    movw $1, 2(%si)
    movw $0x7C00, 4(%si)
    movw $0x0000, 6(%si)
    movl .LbaStart, %eax
    movl %eax, 8(%si)

    /* Read Volume Boot Record (VBR) */
    movb $0x42, %ah
    movb .BootDrive, %dl
    int $0x13
    jc VbrReadFail

    /* Verify VBR signature */
    cmpw $0xAA55, (0x7C00 + 0x01FE)
    jne InvalidSignature

    /* Jump to the VBR code */
    jmp $0x0000, $0x7C00

InvalidSignature:
    /* Invalid signature error */
    leaw .MsgInvalidSignature, %si
    call Print
    jmp HaltSystem

PartitionNotFound:
    /* Active partition not found error */
    leaw .MsgPartitionNotFound, %si
    call Print
    jmp HaltSystem

VbrReadFail:
    /* VBR read failed error */
    leaw .MsgVbrReadFail, %si
    call Print
    jmp HaltSystem

HaltSystem:
    /* Disable interrupts and stop the CPU */
    cli
    hlt
    jmp HaltSystem

Print:
    /* Simple routine to print messages */
    lodsb
    orb     %al, %al
    jz      DonePrint
    movb    $0x0E, %ah
    movw    $0x07, %bx
    int     $0x10
    jmp     Print
DonePrint:
    retw

.BootDrive:
    /* Storage for the boot drive number */
    .byte 0

.Dap:
    /* Storage for the Disk Address Packet (DAP) */
    .fill 16, 1, 0

.LbaStart:
    /* Storage for the LBA start */
    .long 0

.MsgInvalidSignature:
    .asciz "Invalid partition signature!"

.MsgPartitionNotFound:
    .asciz "Bootable partition not found!"

.MsgVbrReadFail:
    .asciz "VBR read failed!"

.MsgXtosBoot:
    .asciz "Starting XTOS boot loader...\r\n"

/* Fill the rest of the MBR with zeros and add MBR signature at the end */
.fill (510 - (. - Start)), 1, 0
.word 0xAA55


================================================
FILE: boot/xtldr/CMakeLists.txt
================================================
# XT Boot Loader
PROJECT(XTLDR)

# Build XTLDR modules
add_subdirectory(modules)

# Specify include directories
include_directories(
    ${EXECTOS_SOURCE_DIR}/sdk/xtdk
    ${XTLDR_SOURCE_DIR}/includes)

# Specify list of library source code files
list(APPEND LIBXTLDR_SOURCE
    ${XTLDR_SOURCE_DIR}/library/modproto.cc)

# Specify list of source code files
list(APPEND XTLDR_SOURCE
    ${XTLDR_SOURCE_DIR}/arch/${ARCH}/memory.cc
    ${XTLDR_SOURCE_DIR}/biosutil.cc
    ${XTLDR_SOURCE_DIR}/bootutil.cc
    ${XTLDR_SOURCE_DIR}/config.cc
    ${XTLDR_SOURCE_DIR}/console.cc
    ${XTLDR_SOURCE_DIR}/data.cc
    ${XTLDR_SOURCE_DIR}/debug.cc
    ${XTLDR_SOURCE_DIR}/efiutils.cc
    ${XTLDR_SOURCE_DIR}/memory.cc
    ${XTLDR_SOURCE_DIR}/protocol.cc
    ${XTLDR_SOURCE_DIR}/shell.cc
    ${XTLDR_SOURCE_DIR}/textui.cc
    ${XTLDR_SOURCE_DIR}/volume.cc
    ${XTLDR_SOURCE_DIR}/xtldr.cc)

# Link static XTLDR library
add_library(libxtldr ${LIBXTLDR_SOURCE})

# Link bootloader executable
add_executable(xtldr ${XTLDR_SOURCE})

# Add linker libraries
target_link_libraries(xtldr libxtos)

# Add linker options
target_link_options(xtldr PRIVATE /ALIGN:512)

# Set proper binary name and install target
if(ARCH STREQUAL "i686")
	set(BINARY_NAME "bootia32")
elseif(ARCH STREQUAL "amd64")
	set(BINARY_NAME "bootx64")
endif()
set_target_properties(xtldr PROPERTIES OUTPUT_NAME ${BINARY_NAME} SUFFIX .efi)
set_install_target(xtldr efi/boot)

# Set loader entrypoint and subsystem
set_entrypoint(xtldr "BlStartXtLoader")
set_imagebase(xtldr ${BASEADDRESS_XTLDR})
set_linker_map(xtldr TRUE)
set_subsystem(xtldr efi_application)


================================================
FILE: boot/xtldr/README.md
================================================
## XT Boot Loader (XTLDR)
The XTLDR, or XTOS Boot Loader, is an EFI (Extensible Firmware Interface) boot loader specifically designed for XTOS.
As an EFI boot loader, XTLDR operates exclusively with EFI-based hardware and is not compatible with non-EFI systems,
like old and deprecated BIOS.

One of the notable features of XTLDR is its modular design. The boot loader is divided into different modules, with only
the essential core being loaded during the boot process. This modular approach allows for a more efficient and
streamlined boot experience, as only the necessary functionality is loaded, reducing the boot time and system resource
usage.

XTLDR includes various modules that provide specific functionalities required for the boot process. For example, there is
a module dedicated to supporting the XTOS boot protocol, which is the specific protocol used by XTOS for loading and
executing the OS kernel. Additionally, there is a module for handling PE/COFF (Portable Executable) binaries, which is
a commonly used format of executable files used by the XTOS.


================================================
FILE: boot/xtldr/arch/amd64/memory.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/arch/amd64/memory.cc
 * DESCRIPTION:     XT Boot Loader AMD64 specific memory management
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 *                  Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/**
 * Maps boot loader related code and builds page map.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param SelfMapAddress
 *        Supplies a virtual address of the page tables.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::BuildPageMap(IN PXTBL_PAGE_MAPPING PageMap,
                     IN ULONG_PTR SelfMapAddress)
{
    PLIST_ENTRY ModulesList, ModulesListEntry;
    PXTBL_MODULE_INFO ModuleInfo;
    EFI_PHYSICAL_ADDRESS Address;
    ULONGLONG LoaderSize;
    EFI_STATUS Status;
    PVOID LoaderBase;

    /* Allocate pages for the Page Map */
    Status = AllocatePages(AllocateAnyPages, 1, &Address);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure */
        return Status;
    }

    /* Add new memory mapping for the page map itself */
    Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, Address, 1, LoaderMemoryData);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory mapping failure */
        return Status;
    }

    /* Assign and zero-fill memory used by page mappings */
    PageMap->PtePointer = (PVOID)(UINT_PTR)Address;
    RTL::Memory::ZeroMemory(PageMap->PtePointer, EFI_PAGE_SIZE);

    /* Add page mapping itself to memory mapping */
    Status = Memory::SelfMapPml(PageMap, SelfMapAddress);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* PML mapping failed */
        return Status;
    }

    /* Map the trampoline code area */
    Status = MapVirtualMemory(PageMap, MM_TRAMPOLINE_ADDRESS, MM_TRAMPOLINE_ADDRESS,
                              1, LoaderFirmwareTemporary);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Mapping trampoline code failed */
        return Status;
    }

    /* Get list of XTLDR modules */
    ModulesList = Protocol::GetModulesList();
    ModulesListEntry = ModulesList->Flink;
    while(ModulesListEntry != ModulesList)
    {
        /* Get module info */
        ModuleInfo = CONTAIN_RECORD(ModulesListEntry, XTBL_MODULE_INFO, Flink);

        /* Map module code */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)ModuleInfo->ModuleBase, (ULONGLONG)ModuleInfo->ModuleBase,
                                  EFI_SIZE_TO_PAGES(ModuleInfo->ModuleSize), LoaderFirmwareTemporary);

        /* Check if mapping succeeded */
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Mapping module code failed */
            return Status;
        }

        /* Get next module */
        ModulesListEntry = ModulesListEntry->Flink;
    }

    /* Get boot loader image information */
    XtLoader::GetLoaderImageInformation(&LoaderBase, &LoaderSize);

    /* Make sure boot loader image base and size are set */
    if(LoaderBase && LoaderSize)
    {
        /* Map boot loader code as well */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)LoaderBase, (ULONGLONG)LoaderBase,
                                  EFI_SIZE_TO_PAGES(LoaderSize), LoaderFirmwareTemporary);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Mapping boot loader code failed */
            return Status;
        }
    }
    else
    {
        /* Boot loader image information re not available */
        return STATUS_EFI_PROTOCOL_ERROR;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Iterates through the memory map and physically maps all virtual addresses to page tables.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::CommitPageMap(IN PXTBL_PAGE_MAPPING PageMap)
{
    PXTBL_MEMORY_MAPPING Mapping;
    PLIST_ENTRY ListEntry;
    EFI_STATUS Status;

    /* Iterate through and map all the mappings*/
    Debug::Print(L"Mapping and dumping EFI memory:\n");
    ListEntry = PageMap->MemoryMap.Flink;
    while(ListEntry != &PageMap->MemoryMap)
    {
        /* Take mapping from the list */
        Mapping = CONTAIN_RECORD(ListEntry, XTBL_MEMORY_MAPPING, ListEntry);

        /* Check if virtual address is set */
        if(Mapping->VirtualAddress)
        {
            /* Dump memory mapping */
            Debug::Print(L"   Type=%02lu, PhysicalBase=%.16P, VirtualBase=%.16P, Pages=%llu\n", Mapping->MemoryType,
                         Mapping->PhysicalAddress, Mapping->VirtualAddress, Mapping->NumberOfPages);

            /* Map memory */
            Status = MapPage(PageMap, (UINT_PTR)Mapping->VirtualAddress,
                             (UINT_PTR)Mapping->PhysicalAddress, Mapping->NumberOfPages);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory mapping failed */
                return Status;
            }
        }

        /* Take next element */
        ListEntry = ListEntry->Flink;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Returns next level of the Page Table.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param PageTable
 *        Supplies a pointer to the current Page Table.
 *
 * @param Entry
 *        Supplies an index of the current Page Table entry.
 *
 * @param NextPageTable
 *        Supplies a pointer to the memory area where the next Page Table level is returned.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::GetNextPageTable(IN PXTBL_PAGE_MAPPING PageMap,
                         IN PVOID PageTable,
                         IN SIZE_T Entry,
                         OUT PVOID *NextPageTable)
{
    EFI_PHYSICAL_ADDRESS Address;
    ULONGLONG PmlPointer = 0;
    PHARDWARE_PTE PmlTable;
    EFI_STATUS Status;

    PmlTable = (PHARDWARE_PTE)PageTable;

    /* Check if this is a valid table */
    if(PmlTable[Entry].Valid)
    {
        /* Get PML pointer */
        PmlPointer = PmlTable[Entry].PageFrameNumber;
        PmlPointer <<= EFI_PAGE_SHIFT;
    }
    else
    {
        /* Allocate pages for new PML entry */
        Status = AllocatePages(AllocateAnyPages, 1, &Address);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory allocation failure */
            return Status;
        }

        /* Add new memory mapping */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, Address, 1, LoaderMemoryData);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Fill allocated memory with zeros */
        RTL::Memory::ZeroMemory((PVOID)(ULONGLONG)Address, EFI_PAGE_SIZE);

        /* Set paging entry settings */
        PmlTable[Entry].PageFrameNumber = Address / EFI_PAGE_SIZE;
        PmlTable[Entry].Valid = 1;
        PmlTable[Entry].Writable = 1;
        PmlPointer = (ULONGLONG)Address;
    }

    /* Set next Page Map Level (PML) */
    *NextPageTable = (PVOID)(ULONGLONG)PmlPointer;

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Does the actual virtual memory mapping.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param VirtualAddress
 *        Supplies a virtual address of the mapping.
 *
 * @param PhysicalAddress
 *        Supplies a physical address of the mapping.
 *
 * @param NumberOfPages
 *        Supplies a number of the pages of the mapping.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::MapPage(IN PXTBL_PAGE_MAPPING PageMap,
                IN ULONGLONG VirtualAddress,
                IN ULONGLONG PhysicalAddress,
                IN ULONGLONG NumberOfPages)
{
    PVOID Pml1, Pml2, Pml3, Pml4, Pml5;
    SIZE_T Pml1Entry, Pml2Entry, Pml3Entry, Pml4Entry, Pml5Entry;
    PHARDWARE_PTE PmlTable;
    SIZE_T PageFrameNumber;
    EFI_STATUS Status;

    /* Set the Page Frame Number (PFN) */
    PageFrameNumber = PhysicalAddress >> EFI_PAGE_SHIFT;

    /* Do the recursive mapping */
    while(NumberOfPages > 0)
    {
        /* Calculate the indices in the various Page Tables from the virtual address */
        Pml5Entry = (VirtualAddress & ((ULONGLONG)0x1FF << MM_P5I_SHIFT)) >> MM_P5I_SHIFT;
        Pml4Entry = (VirtualAddress & ((ULONGLONG)0x1FF << MM_PXI_SHIFT)) >> MM_PXI_SHIFT;
        Pml3Entry = (VirtualAddress & ((ULONGLONG)0x1FF << MM_PPI_SHIFT)) >> MM_PPI_SHIFT;
        Pml2Entry = (VirtualAddress & ((ULONGLONG)0x1FF << MM_PDI_SHIFT)) >> MM_PDI_SHIFT;
        Pml1Entry = (VirtualAddress & ((ULONGLONG)0x1FF << MM_PTI_SHIFT)) >> MM_PTI_SHIFT;

        /* Check page map level */
        if(PageMap->PageMapLevel == 5)
        {
            /* Five level Page Map */
            Pml5 = PageMap->PtePointer;

            /* Get PML4 */
            Status = GetNextPageTable(PageMap, Pml5, Pml5Entry, &Pml4);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory mapping failure */
                return Status;
            }
        }
        else
        {
            /* Four level Page Map */
            Pml4 = PageMap->PtePointer;
        }

        /* Get PML3 */
        Status = GetNextPageTable(PageMap, Pml4, Pml4Entry, &Pml3);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Get PML 2 */
        Status = GetNextPageTable(PageMap, Pml3, Pml3Entry, &Pml2);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Get PML1 */
        Status = GetNextPageTable(PageMap, Pml2, Pml2Entry, &Pml1);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Set paging entry settings */
        PmlTable = (PHARDWARE_PTE)Pml1;
        RTL::Memory::ZeroMemory(&PmlTable[Pml1Entry], sizeof(HARDWARE_PTE));
        PmlTable[Pml1Entry].PageFrameNumber = PageFrameNumber;
        PmlTable[Pml1Entry].Valid = 1;
        PmlTable[Pml1Entry].Writable = 1;

        /* Take next virtual address and PFN */
        VirtualAddress += EFI_PAGE_SIZE;
        PageFrameNumber++;

        /* Decrease number of pages left */
        NumberOfPages--;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Creates a recursive self mapping for all PML levels.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param SelfMapAddress
 *        Supplies a virtual address of the page tables.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::SelfMapPml(IN PXTBL_PAGE_MAPPING PageMap,
                   IN ULONG_PTR SelfMapAddress)
{
    PHARDWARE_PTE PmlBase;
    ULONGLONG PmlIndex;

    /* Initialize PML base pointer */
    PmlBase = (PHARDWARE_PTE)PageMap->PtePointer;

    /* Check page map level */
    if(PageMap->PageMapLevel == 5)
    {
        /* Calculate PML index based on provided self map address for PML5 */
        PmlIndex = (SelfMapAddress >> MM_P5I_SHIFT) & 0x1FF;
    }
    else
    {
        /* Calculate PML index based on provided self map address for PML4 */
        PmlIndex = (SelfMapAddress >> MM_PXI_SHIFT) & 0x1FF;
    }

    /* Add self-mapping */
    RTL::Memory::ZeroMemory(&PmlBase[PmlIndex], sizeof(HARDWARE_PTE));
    PmlBase[PmlIndex].PageFrameNumber = (UINT_PTR)PageMap->PtePointer / EFI_PAGE_SIZE;
    PmlBase[PmlIndex].Valid = 1;
    PmlBase[PmlIndex].Writable = 1;

    /* Return success */
    return STATUS_EFI_SUCCESS;
}


================================================
FILE: boot/xtldr/arch/i686/memory.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/arch/i686/memory.cc
 * DESCRIPTION:     XT Boot Loader i686 specific memory management
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 *                  Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/**
 * Maps boot loader related code and builds page map.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::BuildPageMap(IN PXTBL_PAGE_MAPPING PageMap,
                     IN ULONG_PTR SelfMapAddress)
{
    EFI_PHYSICAL_ADDRESS Address, DirectoryAddress;
    PLIST_ENTRY ModulesList, ModulesListEntry;
    PXTBL_MODULE_INFO ModuleInfo;
    ULONGLONG LoaderSize;
    EFI_STATUS Status;
    PVOID LoaderBase;
    ULONG Index;

    /* Check the page map level to determine which paging structure to create */
    if(PageMap->PageMapLevel == 3)
    {
        /* Allocate a page for the 3-level page map structure (PAE enabled) */
        Status = AllocatePages(AllocateAnyPages, 1, &Address);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory allocation failed, cannot proceed with page map creation */
            return Status;
        }

        /* Add new memory mapping for the page map itself */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, Address, 1, LoaderMemoryData);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Assign the allocated page to the page map and zero it out */
        PageMap->PtePointer = (PVOID)(UINT_PTR)Address;
        RTL::Memory::ZeroMemory(PageMap->PtePointer, EFI_PAGE_SIZE);

        /* Allocate 4 pages for the Page Directories (PDs) */
        Status = AllocatePages(AllocateAnyPages, 4, &DirectoryAddress);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory allocation failed, cannot proceed with page map creation */
            return Status;
        }

        /* Add new memory mapping for the Page Directories (PDs) */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, DirectoryAddress, 4, LoaderMemoryData);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Zero-fill the allocated memory for the Page Directories */
        RTL::Memory::ZeroMemory((PVOID)DirectoryAddress, EFI_PAGE_SIZE * 4);

        /* Fill the PDPT with pointers to the Page Directories */
        for(Index = 0; Index < 4; Index++)
        {
            RTL::Memory::ZeroMemory(&((PHARDWARE_MODERN_PTE)PageMap->PtePointer)[Index], sizeof(HARDWARE_MODERN_PTE));
            ((PHARDWARE_MODERN_PTE)PageMap->PtePointer)[Index].PageFrameNumber = DirectoryAddress / EFI_PAGE_SIZE;
            ((PHARDWARE_MODERN_PTE)PageMap->PtePointer)[Index].Valid = 1;
            DirectoryAddress += EFI_PAGE_SIZE;
        }
    }
    else
    {
        /* Allocate a page for the 2-level page map structure (PAE disabled) */
        Status = AllocatePages(AllocateAnyPages, 1, &Address);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory allocation failed, cannot proceed with page map creation */
            return Status;
        }

        /* Add new memory mapping for the page map itself */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, Address, 1, LoaderMemoryData);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Assign the allocated page to the page map and zero it out */
        PageMap->PtePointer = (PVOID)(UINT_PTR)Address;
        RTL::Memory::ZeroMemory(PageMap->PtePointer, EFI_PAGE_SIZE);
    }

    /* Add page mapping itself to memory mapping */
    Status = SelfMapPml(PageMap, SelfMapAddress);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* PML mapping failed */
        return Status;
    }

    /* Map the trampoline code area */
    Status = MapVirtualMemory(PageMap, MM_TRAMPOLINE_ADDRESS, MM_TRAMPOLINE_ADDRESS, 1, LoaderFirmwareTemporary);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Mapping trampoline code failed */
        return Status;
    }

    /* Get list of XTLDR modules */
    ModulesList = Protocol::GetModulesList();
    ModulesListEntry = ModulesList->Flink;
    while(ModulesListEntry != ModulesList)
    {
        /* Get module info */
        ModuleInfo = CONTAIN_RECORD(ModulesListEntry, XTBL_MODULE_INFO, Flink);

        /* Map module code */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)ModuleInfo->ModuleBase, (ULONGLONG)ModuleInfo->ModuleBase,
                                  EFI_SIZE_TO_PAGES(ModuleInfo->ModuleSize), LoaderFirmwareTemporary);

        /* Check if mapping succeeded */
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Mapping module code failed */
            return Status;
        }

        /* Get next module */
        ModulesListEntry = ModulesListEntry->Flink;
    }

    /* Get boot loader image information */
    XtLoader::GetLoaderImageInformation(&LoaderBase, &LoaderSize);

    /* Make sure boot loader image base and size are set */
    if(LoaderBase && LoaderSize)
    {
        /* Map boot loader code as well */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)LoaderBase, (ULONGLONG)LoaderBase,
                                  EFI_SIZE_TO_PAGES(LoaderSize), LoaderFirmwareTemporary);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Mapping boot loader code failed */
            return Status;
        }
    }
    else
    {
        /* Boot loader image information re not available */
        return STATUS_EFI_PROTOCOL_ERROR;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Iterates through the memory map and physically maps all virtual addresses to page tables.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::CommitPageMap(IN PXTBL_PAGE_MAPPING PageMap)
{
    PXTBL_MEMORY_MAPPING Mapping;
    PLIST_ENTRY ListEntry;
    EFI_STATUS Status;

    /* Iterate through and map all the mappings*/
    Debug::Print(L"Mapping and dumping EFI memory:\n");
    ListEntry = PageMap->MemoryMap.Flink;
    while(ListEntry != &PageMap->MemoryMap)
    {
        /* Take mapping from the list */
        Mapping = CONTAIN_RECORD(ListEntry, XTBL_MEMORY_MAPPING, ListEntry);

        /* Check if virtual address is set */
        if(Mapping->VirtualAddress)
        {
            /* Dump memory mapping */
            Debug::Print(L"   Type=%02lu, PhysicalBase=0x%.8llX, VirtualBase=0x%.8llX, Pages=%llu\n",
                         Mapping->MemoryType, Mapping->PhysicalAddress,
                         Mapping->VirtualAddress, Mapping->NumberOfPages);

            /* Map memory */
            Status = MapPage(PageMap, (UINT_PTR)Mapping->VirtualAddress,
                             (UINT_PTR)Mapping->PhysicalAddress, Mapping->NumberOfPages);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory mapping failed */
                return Status;
            }
        }

        /* Take next element */
        ListEntry = ListEntry->Flink;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Returns next level of the Page Table.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param PageTable
 *        Supplies a pointer to the current Page Table.
 *
 * @param Entry
 *        Supplies an index of the current Page Table entry.
 *
 * @param NextPageTable
 *        Supplies a pointer to the memory area where the next Page Table level is returned.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::GetNextPageTable(IN PXTBL_PAGE_MAPPING PageMap,
                         IN PVOID PageTable,
                         IN SIZE_T Entry,
                         OUT PVOID *NextPageTable)
{
    EFI_PHYSICAL_ADDRESS Address;
    ULONGLONG PmlPointer = 0;
    EFI_STATUS Status;
    PHARDWARE_LEGACY_PTE LegacyPmlTable;
    PHARDWARE_MODERN_PTE PmlTable;
    BOOLEAN ValidPte = FALSE;

    /* Check page map level to determine PTE size */
    if(PageMap->PageMapLevel >= 3)
    {
        /* 64-bit PTE for PML3 (PAE enabled) */
        PmlTable = (PHARDWARE_MODERN_PTE)PageTable;
        if(PmlTable[Entry].Valid)
        {
            /* Get page frame number from page table entry */
            PmlPointer = PmlTable[Entry].PageFrameNumber;
            ValidPte = TRUE;
        }
    }
    else
    {
        /* 32-bit PTE for PML2 (PAE disabled) */
        LegacyPmlTable = (PHARDWARE_LEGACY_PTE)PageTable;
        if(LegacyPmlTable[Entry].Valid)
        {
            /* Get page frame number from page table entry */
            PmlPointer = LegacyPmlTable[Entry].PageFrameNumber;
            ValidPte = TRUE;
        }
    }

    /* Check if page table entry is valid */
    if(ValidPte)
    {
        /* Calculate the base address of the next page table */
        PmlPointer <<= EFI_PAGE_SHIFT;
    }
    else
    {
        /* Allocate pages for new PML entry */
        Status = AllocatePages(AllocateAnyPages, 1, &Address);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory allocation failure */
            return Status;
        }

        /* Add new memory mapping */
        Status = MapVirtualMemory(PageMap, (ULONGLONG)NULLPTR, Address, 1, LoaderMemoryData);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory mapping failure */
            return Status;
        }

        /* Fill allocated memory with zeros */
        RTL::Memory::ZeroMemory((PVOID)(ULONGLONG)Address, EFI_PAGE_SIZE);

        /* Set paging entry settings based on level */
        if(PageMap->PageMapLevel >= 3)
        {
            /* 64-bit PTE for PML3 (PAE enabled) */
            PmlTable = (PHARDWARE_MODERN_PTE)PageTable;
            PmlTable[Entry].PageFrameNumber = Address / EFI_PAGE_SIZE;
            PmlTable[Entry].Valid = 1;
            PmlTable[Entry].Writable = 1;
        }
        else
        {
            /* 32-bit PTE for PML2 (PAE disabled) */
            LegacyPmlTable = (PHARDWARE_LEGACY_PTE)PageTable;
            LegacyPmlTable[Entry].PageFrameNumber = (UINT32)(Address / EFI_PAGE_SIZE);
            LegacyPmlTable[Entry].Valid = 1;
            LegacyPmlTable[Entry].Writable = 1;
        }

        /* Return the address of the new page table */
        PmlPointer = (ULONGLONG)Address;
    }

    /* Set next Page Map Level (PML) */
    *NextPageTable = (PVOID)(ULONGLONG)PmlPointer;

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Does the actual virtual memory mapping.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param VirtualAddress
 *        Supplies a virtual address of the mapping.
 *
 * @param PhysicalAddress
 *        Supplies a physical address of the mapping.
 *
 * @param NumberOfPages
 *        Supplies a number of the pages of the mapping.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::MapPage(IN PXTBL_PAGE_MAPPING PageMap,
                IN ULONGLONG VirtualAddress,
                IN ULONGLONG PhysicalAddress,
                IN ULONGLONG NumberOfPages)
{
    ULONGLONG PageFrameNumber;
    PVOID Pml1, Pml2, Pml3;
    SIZE_T Pml1Entry, Pml2Entry, Pml3Entry;
    PHARDWARE_LEGACY_PTE LegacyPmlTable;
    PHARDWARE_MODERN_PTE PmlTable;
    EFI_STATUS Status;

    /* Set the Page Frame Number (PFN) */
    PageFrameNumber = PhysicalAddress >> EFI_PAGE_SHIFT;

    /* Map all requested pages */
    while(NumberOfPages > 0)
    {
        /* Check the paging mode to use the correct page table structure */
        if(PageMap->PageMapLevel == 3)
        {
            /* Calculate the indices for PAE page tables */
            Pml3Entry = (VirtualAddress >> 30) & 0x3;
            Pml2Entry = (VirtualAddress >> 21) & 0x1FF;
            Pml1Entry = (VirtualAddress >> 12) & 0x1FF;

            /* Get Page Directory Pointer Table (PML3) */
            Pml3 = PageMap->PtePointer;

            /* Get Page Directory (PML2) */
            Status = GetNextPageTable(PageMap, Pml3, Pml3Entry, &Pml2);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Failed to get the Page Table, abort mapping */
                return Status;
            }

            /* Get Page Table (PML1) */
            Status = GetNextPageTable(PageMap, Pml2, Pml2Entry, &Pml1);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Failed to get the Page Table, abort mapping */
                return Status;
            }

            /* Set the 64-bit PTE entry */
            PmlTable = (PHARDWARE_MODERN_PTE)Pml1;
            RTL::Memory::ZeroMemory(&PmlTable[Pml1Entry], sizeof(HARDWARE_MODERN_PTE));
            PmlTable[Pml1Entry].PageFrameNumber = PageFrameNumber;
            PmlTable[Pml1Entry].Valid = 1;
            PmlTable[Pml1Entry].Writable = 1;
        }
        else
        {
            /* Calculate the indices for non-PAE page tables */
            Pml2Entry = (VirtualAddress >> 22) & 0x3FF;
            Pml1Entry = (VirtualAddress >> 12) & 0x3FF;

            /* Get Page Directory (PML2) */
            Pml2 = PageMap->PtePointer;

            /* Get Page Table (PML1) */
            Status = GetNextPageTable(PageMap, Pml2, Pml2Entry, &Pml1);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Failed to get the Page Table, abort mapping */
                return Status;
            }

            /* Set the 32-bit PTE entry */
            LegacyPmlTable = (PHARDWARE_LEGACY_PTE)Pml1;
            RTL::Memory::ZeroMemory(&LegacyPmlTable[Pml1Entry], sizeof(HARDWARE_LEGACY_PTE));
            LegacyPmlTable[Pml1Entry].PageFrameNumber = (UINT32)PageFrameNumber;
            LegacyPmlTable[Pml1Entry].Valid = 1;
            LegacyPmlTable[Pml1Entry].Writable = 1;
        }

        /* Take next virtual address and PFN */
        VirtualAddress += EFI_PAGE_SIZE;
        PageFrameNumber++;

        /* Decrease number of pages left */
        NumberOfPages--;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Creates a recursive self mapping for all PML levels.
 *
 * @param PageMap
 *        Supplies a pointer to the page mapping structure.
 *
 * @param SelfMapAddress
 *        Supplies a virtual address of the page tables.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Memory::SelfMapPml(IN PXTBL_PAGE_MAPPING PageMap,
                   IN ULONG_PTR SelfMapAddress)
{
    PHARDWARE_LEGACY_PTE LegacyPml;
    PHARDWARE_MODERN_PTE Pml;
    ULONGLONG PmlIndex;
    ULONG Index;

    /* Check page map level */
    if(PageMap->PageMapLevel == 3)
    {
        /* Calculate PML index based on provided self map address */
        PmlIndex = (SelfMapAddress >> MM_PDI_SHIFT) & 0x1FF;

        /* Get Page Directory */
        Pml = (PHARDWARE_MODERN_PTE)(((PHARDWARE_MODERN_PTE)PageMap->PtePointer)[SelfMapAddress >> MM_PPI_SHIFT].PageFrameNumber * EFI_PAGE_SIZE);

        /* Add self-mapping for PML3 (PAE enabled) */
        for(Index = 0; Index < 4; Index++)
        {
            RTL::Memory::ZeroMemory(&Pml[PmlIndex + Index], sizeof(HARDWARE_MODERN_PTE));
            Pml[PmlIndex + Index].PageFrameNumber = ((PHARDWARE_MODERN_PTE)PageMap->PtePointer)[Index].PageFrameNumber;
            Pml[PmlIndex + Index].Valid = 1;
            Pml[PmlIndex + Index].Writable = 1;
        }
    }
    else
    {
        LegacyPml = (PHARDWARE_LEGACY_PTE)PageMap->PtePointer;

        /* Calculate PML index based on provided self map address */
        PmlIndex = (SelfMapAddress >> MM_PDI_LEGACY_SHIFT);

        /* Add self-mapping for PML2 (PAE disabled) */
        RTL::Memory::ZeroMemory(&LegacyPml[PmlIndex], sizeof(HARDWARE_LEGACY_PTE));
        LegacyPml[PmlIndex].PageFrameNumber = (UINT_PTR)PageMap->PtePointer / EFI_PAGE_SIZE;
        LegacyPml[PmlIndex].Valid = 1;
        LegacyPml[PmlIndex].Writable = 1;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}


================================================
FILE: boot/xtldr/biosutil.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/biosutil.cc
 * DESCRIPTION:     Legacy BIOS support
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/**
 * Clears the entire screen and moves the cursor to the top-left corner.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
BiosUtils::ClearScreen()
{
    VOLATILE PUSHORT VgaBuffer = (PUSHORT)0xB8000;
    USHORT Blank;
    UINT Index;

    /* Set blank character */
    Blank = (0x0F << 8) | L' ';

    /* Fill the entire screen with blank characters */
    for(Index = 0; Index < VgaWidth * VgaHeight; Index++)
    {
        VgaBuffer[Index] = Blank;
    }

    /* Reset cursor position to the top-left corner */
    CursorX = 0;
    CursorY = 0;

    /* Update the hardware cursor position */
    UpdateCursor();
}

/**
 * Formats the input string and prints it out to the screen.
 *
 * @param Format
 *        The formatted string that is to be written to the output.
 *
 * @param ...
 *        Depending on the format string, this routine might expect a sequence of additional arguments.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
BiosUtils::Print(IN PCWSTR Format,
                 IN ...)
{
    RTL_PRINT_CONTEXT PrintContext;
    VA_LIST Arguments;

    /* Initialise the print contexts */
    PrintContext.WriteWideCharacter = PutChar;

    /* Initialise the va_list */
    VA_START(Arguments, Format);

    /* Format and print the string to the stdout */
    RTL::WideString::FormatWideString(&PrintContext, (PWCHAR)Format, Arguments);

    /* Clean up the va_list */
    VA_END(Arguments);
}

/**
 * Writes a single wide character to the screen using legacy BIOS VGA text mode.
 *
 * @param Character
 *        The wide character to be printed.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
XTSTATUS
BiosUtils::PutChar(IN WCHAR Character)
{
    VOLATILE PUSHORT VgaBuffer = (PUSHORT)0xB8000;
    USHORT VgaCharacter;

    /* Handle special characters */
    if(Character == L'\n')
    {
        /* Move to the next line */
        CursorX = 0;
        CursorY++;
    }
    else if(Character == L'\r')
    {
        /* Move to the beginning of the current line */
        CursorX = 0;
    }
    else
    {
        /* Print character and move cursor to the right */
        VgaCharacter = (0x0F << 8) | (Character & 0xFF);
        VgaBuffer[CursorY * VgaWidth + CursorX] = VgaCharacter;
        CursorX++;
    }

    /* Handle moving to the next line if cursor is at the end of the line */
    if(CursorX >= VgaWidth)
    {
        CursorX = 0;
        CursorY++;
    }

    /* Handle scrolling if cursor is at the end of the screen */
    if(CursorY >= VgaHeight)
    {
        ScrollScreen();
        CursorY = VgaHeight - 1;
    }

    /* Update the hardware cursor position */
    UpdateCursor();

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Scrolls the entire screen content up by one line and clears the last line.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
BiosUtils::ScrollScreen()
{
    VOLATILE PUSHORT VgaBuffer = (PUSHORT)0xB8000;
    USHORT Blank;
    UINT Index;

    /* Set blank character */
    Blank = (0x0F << 8) | L' ';

    /* Move every line up by one */
    for(Index = 0; Index < (VgaHeight - 1) * VgaWidth; Index++)
    {
        VgaBuffer[Index] = VgaBuffer[Index + VgaWidth];
    }

    /* Clear the last line */
    for(Index = (VgaHeight - 1) * VgaWidth; Index < VgaHeight * VgaWidth; Index++)
    {
        VgaBuffer[Index] = Blank;
    }
}

/**
 * Updates the hardware cursor position on the screen.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
BiosUtils::UpdateCursor()
{
    USHORT Position;

    /* Calculate cursor position */
    Position = CursorY * VgaWidth + CursorX;

    /* Send command to set the high byte of the cursor position */
    HL::IoPort::WritePort8(0x3D4, 0x0E);
    HL::IoPort::WritePort8(0x3D5, (UCHAR)((Position >> 8) & 0xFF));

    /* Send command to set the low byte of the cursor position */
    HL::IoPort::WritePort8(0x3D4, 0x0F);
    HL::IoPort::WritePort8(0x3D5, (UCHAR)(Position & 0xFF));
}


================================================
FILE: boot/xtldr/bootutil.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/bootutil.cc
 * DESCRIPTION:     Helper functions used by the boot protocol during system startup
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/**
 * Checks if a specific option exists in the list of provided boot parameters.
 *
 * @param Parameters
 *        A pointer to the wide-character string containing the boot parameters, separated by spaces.
 *
 * @param Needle
 *        A pointer to the wide-character string representing the kernel option to find.
 *
 * @return This routine returns TRUE if the option is found, otherwise FALSE.
 *
 * @since XT 1.0
 */
XTCDECL
BOOLEAN
BootUtils::GetBooleanParameter(IN PCWSTR Parameters,
                               IN PCWSTR Needle)
{
    PCWSTR CurrentPosition, TokenEnd, TokenStart;
    SIZE_T NeedleLength, TokenLength;

    /* Validate input data and ensure the option is not an empty string */
    if(Parameters == NULLPTR || Needle == NULLPTR || *Needle == L'\0')
    {
        /* One of the parameters was invalid */
        return FALSE;
    }

    CurrentPosition = Parameters;
    NeedleLength = RTL::WideString::WideStringLength(Needle, 0);

    /* Iterate through the entire parameters string */
    while(*CurrentPosition != L'\0')
    {
        /* Skip any leading whitespace to find the start of the token */
        while(*CurrentPosition == L' ')
        {
            CurrentPosition++;
        }

        /* Check if end of the string has been reached */
        if(*CurrentPosition == L'\0')
        {
            /* End of string reached, no more tokens */
            break;
        }

        /* Identify the boundaries of the current token */
        TokenStart = CurrentPosition;
        TokenEnd = TokenStart;
        while(*TokenEnd != L'\0' && *TokenEnd != L' ')
        {
            TokenEnd++;
        }

        /* Calculate the length of the token found */
        TokenLength = TokenEnd - TokenStart;

         /* Compare the token length */
        if(TokenLength == NeedleLength)
        {
            /* Length matches, compare the strings */
            if(RTL::WideString::CompareWideStringInsensitive(TokenStart, Needle, NeedleLength) == 0)
            {
                /* A match was found */
                return TRUE;
            }
        }

        /* Move the position past the current token to continue the search */
        CurrentPosition = TokenEnd;
    }

    /* No match was found */
    return FALSE;
}


================================================
FILE: boot/xtldr/config.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/config.cc
 * DESCRIPTION:     XT Boot Loader Configuration
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 *                  Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/**
 * Returns a boolean value of the specified configuration key.
 *
 * @param ConfigName
 *        Specifies the configuration key to return its boolean representation.
 *
 * @return This routine returns a boolean representation of the configuration value.
 *
 * @since XT 1.0
 */
XTCDECL
BOOLEAN
Configuration::GetBooleanValue(IN PCWSTR ConfigName)
{
    PWCHAR Value;

    /* Get config value */
    GetValue(ConfigName, &Value);

    /* Check if option is enabled */
    if(RTL::WideString::CompareWideStringInsensitive(Value, L"ENABLED", 0) == 0 ||
       RTL::WideString::CompareWideStringInsensitive(Value, L"ON", 0) == 0 ||
       RTL::WideString::CompareWideStringInsensitive(Value, L"TRUE", 0) == 0 ||
       RTL::WideString::CompareWideStringInsensitive(Value, L"YES", 0) == 0)
    {
        /* This option is enabled */
        return TRUE;
    }

    /* Return FALSE by default */
    return FALSE;
}

/**
 * @brief Retrieves the value of a specific OS boot option from a list.
 *
 * @param Options
 *        A pointer to the head of a list of XTBL_CONFIG_ENTRY structures.
 *
 * @param OptionName
 *        A pointer to wide string that contains the name of the boot option to retrieve.
 *
 * @param OptionValue
 *        A pointer to a variable that receives a pointer to the retrieved boot option's value.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::GetBootOptionValue(IN PLIST_ENTRY Options,
                                  IN PCWSTR OptionName,
                                  OUT PWCHAR *OptionValue)
{
    PXTBL_CONFIG_ENTRY ConfigEntry;
    PLIST_ENTRY ConfigList;
    ULONG KeyLength, ValueLength;
    EFI_STATUS Status;

    /* Assume the option will not be found */
    *OptionValue = NULLPTR;

    /* Get the length of the option name we are looking for */
    KeyLength = RTL::WideString::WideStringLength(OptionName, 0);

    /* Start iterating from the first entry in the options list */
    ConfigList = Options->Flink;
    while(ConfigList != Options)
    {
        /* Get the container record for the current config entry */
        ConfigEntry = CONTAIN_RECORD(ConfigList, XTBL_CONFIG_ENTRY, Flink);

        /* Compare the current entry's name with the requested option name */
        if(RTL::WideString::CompareWideStringInsensitive(ConfigEntry->Name, OptionName, KeyLength) == 0)
        {
            /* Found the option, now prepare to copy its value */
            ValueLength = RTL::WideString::WideStringLength(ConfigEntry->Value, 0);

            /* Allocate memory for the output value string */
            Status = Memory::AllocatePool((ValueLength + 1) * sizeof(WCHAR), (PVOID *)OptionValue);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory allocation failure, print debug message and return status code */
                Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\n", Status);
                *OptionValue = NULLPTR;
                return Status;
            }

            /* Copy the value and NULL-terminate the new string */
            RTL::Memory::CopyMemory(*OptionValue, ConfigEntry->Value, ValueLength * sizeof(WCHAR));
            (*OptionValue)[ValueLength] = L'\0';

            /* Successfully retrieved the option value, return success */
            return STATUS_EFI_SUCCESS;
        }

        /* Move to the next entry in the list */
        ConfigList = ConfigList->Flink;
    }

    /* Option not found */
    return STATUS_EFI_NOT_FOUND;
}

/**
 * Retrieves the list of user-editable boot options.
 *
 * @param OptionsArray
 *        A pointer to a variable that will receive the pointer to the array of editable option names.
 *
 * @param OptionsCount
 *        A pointer to a variable that will be updated with the number of elements in the OptionsArray.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Configuration::GetEditableOptions(OUT PCWSTR **OptionsArray,
                                  OUT PULONG OptionsCount)
{
    ULONG Count = 0;

    /* Return a pointer to the global array of editable options */
    *OptionsArray = EditableConfigOptions;

    /* Calculate the number of elements in the array */
    while(EditableConfigOptions[Count])
    {
        Count++;
    }

    /* Return the number of elements */
    *OptionsCount = Count;
}

/**
 * Returns a value of the specified configuration key.
 *
 * @param ConfigName
 *        Specifies the configuration key to return its value.
 *
 * @return This routine returns a pointer to the configuration value, or NULLPTR if key was not found.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::GetValue(IN PCWSTR ConfigName,
                        OUT PWCHAR *ConfigValue)
{
    PXTBL_CONFIG_ENTRY ConfigEntry;
    PLIST_ENTRY ConfigListEntry;
    SIZE_T KeyLength, ValueLength;
    EFI_STATUS Status;
    PWCHAR Value;

    /* Assume the option will not be found */
    *ConfigValue = NULLPTR;

    /* Get config entry name length */
    KeyLength = RTL::WideString::WideStringLength(ConfigName, 0);

    /* Iterate through config entries */
    ConfigListEntry = Config.Flink;
    while(ConfigListEntry != &Config)
    {
        /* Get config entry */
        ConfigEntry = CONTAIN_RECORD(ConfigListEntry, XTBL_CONFIG_ENTRY, Flink);

        /* Check if requested configuration found */
        if(RTL::WideString::CompareWideStringInsensitive(ConfigEntry->Name, ConfigName, KeyLength) == 0)
        {
            /* Get value length */
            ValueLength = RTL::WideString::WideStringLength(ConfigEntry->Value, 0);

            /* Allocate memory for value */
            Status = Memory::AllocatePool((ValueLength + 1) * sizeof(WCHAR), (PVOID *)&Value);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory allocation failure, return NULLPTR */
                Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\n", Status);
                return Status;
            }

            /* Copy value and return it */
            RTL::Memory::CopyMemory(Value, ConfigEntry->Value, ValueLength * sizeof(WCHAR));
            Value[ValueLength] = L'\0';
            *ConfigValue = Value;
            return STATUS_EFI_SUCCESS;
        }

        /* Move to the next config entry */
        ConfigListEntry = ConfigListEntry->Flink;
    }

    /* Config entry not found, return NULLPTR */
    return STATUS_EFI_NOT_FOUND;
}

/**
 * Initializes a list of operating systems for XTLDR boot menu.
 *
 * @param MenuEntries
 *        Supplies a pointer to memory area where operating systems list will be stored.
 *
 * @param EntriesCount
 *        Supplies a pointer to memory area where number of menu entries will be stored.
 *
 * @param DefaultId
 *        Supplies a pointer to memory area where ID of default menu entry will be stored.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::InitializeBootMenuList(IN ULONG MaxNameLength,
                                      OUT PXTBL_BOOTMENU_ITEM *MenuEntries,
                                      OUT PULONG EntriesCount,
                                      OUT PULONG DefaultId)
{
    EFI_GUID VendorGuid = XT_BOOT_LOADER_PROTOCOL_GUID;
    PWCHAR DefaultMenuEntry, LastBooted, MenuEntryName, VisibleName;
    PLIST_ENTRY MenuEntrySectionList, MenuEntryList;
    PXTBL_CONFIG_SECTION MenuEntrySection;
    PXTBL_CONFIG_ENTRY MenuEntryOption;
    ULONG DefaultOS, NameLength,NumberOfEntries;
    PXTBL_BOOTMENU_ITEM OsList;
    EFI_STATUS Status;

    /* Set default values */
    DefaultOS = 0;
    NumberOfEntries = 0;

    /* Get default menu entry from configuration */
    Configuration::GetValue(L"DEFAULT", &DefaultMenuEntry);

    /* Check if configuration allows to use last booted OS */
    if(Configuration::GetBooleanValue(L"KEEPLASTBOOT"))
    {
        /* Attempt to get last booted Operating System from NVRAM */
        Status = EfiUtils::GetEfiVariable(&VendorGuid, L"XtLdrLastBootOS", (PVOID*)&LastBooted);
        if(Status == STATUS_EFI_SUCCESS)
        {
            /* Set default menu entry to last booted OS */
            DefaultMenuEntry = LastBooted;
        }
    }

    /* Iterate through menu items to get a total number of entries */
    MenuEntrySectionList = BootMenuList->Flink;
    while(MenuEntrySectionList != BootMenuList)
    {
        /* Increase number of menu entries, and simply get next item */
        NumberOfEntries++;
        MenuEntrySectionList = MenuEntrySectionList->Flink;
    }

    /* Allocate memory for the OS list depending on the item count */
    Status = Memory::AllocatePool(NumberOfEntries * sizeof(XTBL_BOOTMENU_ITEM), (PVOID*)&OsList);
    if(Status != STATUS_EFI_SUCCESS || !OsList)
    {
        /* Memory allocation failure */
        return STATUS_EFI_OUT_OF_RESOURCES;
    }

    /* Reset counter and iterate through all menu items once again */
    NumberOfEntries = 0;
    MenuEntrySectionList = BootMenuList->Flink;
    while(MenuEntrySectionList != BootMenuList)
    {
        /* NULLify menu entry name */
        MenuEntryName = NULLPTR;

        /* Get menu section */
        MenuEntrySection = CONTAIN_RECORD(MenuEntrySectionList, XTBL_CONFIG_SECTION, Flink);

        /* Check if this is the default menu entry */
        if((RTL::WideString::WideStringLength(MenuEntrySection->SectionName, 0) == RTL::WideString::WideStringLength(DefaultMenuEntry, 0)) &&
           (RTL::WideString::CompareWideStringInsensitive(MenuEntrySection->SectionName, DefaultMenuEntry, 0) == 0))
        {
            /* Set default OS ID */
            DefaultOS = NumberOfEntries;
        }

        /* Iterate through all entry parameters */
        MenuEntryList = MenuEntrySection->Options.Flink;
        while(MenuEntryList != &MenuEntrySection->Options)
        {
            /* Get menu entry parameter */
            MenuEntryOption = CONTAIN_RECORD(MenuEntryList, XTBL_CONFIG_ENTRY, Flink);

            /* Check if this is the menu entry display name */
            if(RTL::WideString::CompareWideStringInsensitive(MenuEntryOption->Name, L"SYSTEMNAME", 0) == 0)
            {
                /* Set menu entry display name */
                MenuEntryName = MenuEntryOption->Value;
            }

            /* Get next parameter for this menu entry */
            MenuEntryList = MenuEntryList->Flink;
        }

        /* Add OS to the boot menu list */
        OsList[NumberOfEntries].FullName = MenuEntryName;
        OsList[NumberOfEntries].ShortName = MenuEntrySection->SectionName;
        OsList[NumberOfEntries].Options = &MenuEntrySection->Options;

        /* Check if the menu entry name fits the maximum length */
        NameLength = RTL::WideString::WideStringLength(MenuEntryName, 0);
        if(NameLength > MaxNameLength)
        {
            /* Menu entry name is too long, allocate memory for shorter name visible in the boot menu */
            Status = Memory::AllocatePool((MaxNameLength + 1) * sizeof(WCHAR), (PVOID*)&VisibleName);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory allocation failure */
                return STATUS_EFI_OUT_OF_RESOURCES;
            }

            /* Copy shorter name and append "..." at the end */
            RTL::Memory::CopyMemory(VisibleName, MenuEntryName, (MaxNameLength - 3) * sizeof(WCHAR));
            RTL::Memory::CopyMemory(VisibleName + MaxNameLength - 3, L"...", 3 * sizeof(WCHAR));
            VisibleName[MaxNameLength] = L'\0';

            /* Set visible menu entry name */
            OsList[NumberOfEntries].EntryName = VisibleName;
        }
        else
        {
            /* Menu entry name fits the maximum length, use it as is */
            OsList[NumberOfEntries].EntryName = MenuEntryName;
        }

        /* Get next menu entry */
        MenuEntrySectionList = MenuEntrySectionList->Flink;
        NumberOfEntries++;
    }

    /* Set return values */
    *DefaultId = DefaultOS;
    *EntriesCount = NumberOfEntries;
    *MenuEntries = OsList;

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Initializes the XTLDR configuration subsystem.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Configuration::InitializeConfiguration()
{
    /* Initialize XTLDR configuration linked lists */
    RTL::LinkedList::InitializeListHead(&Config);
}

/**
 * Loads and parses XTLDR configuration file.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::LoadConfiguration()
{
    PLIST_ENTRY SectionListEntry;
    EFI_STATUS Status;
    PCHAR ConfigData;

    /* Initialize configuration pointer */
    RTL::LinkedList::InitializeListHead(&ConfigSections);

    /* Read data from configuration file */
    Status = ReadConfigFile(XTBL_LOADER_DIRECTORY_PATH, L"XTLDR.INI", &ConfigData);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to read config file, try with architecture specific directory */
        Status = ReadConfigFile(XTBL_ARCH_LOADER_DIRECTORY_PATH, L"XTLDR.INI", &ConfigData);
    }

    /* Check if configuration was read successfully */
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to load configuration */
        Debug::Print(L"Failed to load FS0:/EFI/BOOT/XTLDR/XTLDR.INI configuration file (Status Code: 0x%zX)\n", Status);
        return Status;
    }

    /* Parse configuration data */
    Status = ParseConfigFile(ConfigData, &ConfigSections);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to parse configuration */
        Debug::Print(L"Failed to parse FS0:/EFI/BOOT/XTLDR/XTLDR.INI configuration file (Status Code: 0x%zX)\n", Status);
        return Status;
    }

    /* Iterate through config sections */
    SectionListEntry = ConfigSections.Flink;
    while(SectionListEntry != &ConfigSections)
    {
        /* Get config section */
        PXTBL_CONFIG_SECTION Section = CONTAIN_RECORD(SectionListEntry, XTBL_CONFIG_SECTION, Flink);

        /* Look for global XTLDR configuration section */
        if(RTL::WideString::CompareWideStringInsensitive(Section->SectionName, L"XTLDR", 5) == 0)
        {
            /* Update global configuration */
            UpdateConfiguration(&Section->Options);

            /* Remove XTLDR section from the list */
            RTL::LinkedList::RemoveEntryList(SectionListEntry);
            break;
        }

        /* Move to the next section */
        SectionListEntry = SectionListEntry->Flink;
    }

    /* Update boot menu OS list */
    BootMenuList = &ConfigSections;

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Parses command line arguments and updates global configuration.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::ParseCommandLine(VOID)
{
    EFI_GUID LIPGuid = EFI_LOADED_IMAGE_PROTOCOL_GUID;
    PEFI_LOADED_IMAGE_PROTOCOL LoadedImage;
    PWCHAR Argument, Key, LastArg, Value;
    PXTBL_CONFIG_ENTRY Option;
    EFI_STATUS Status;
    SIZE_T KeyLength, ValueLength;
    LIST_ENTRY Config;

    /* Initialize configuration list */
    RTL::LinkedList::InitializeListHead(&Config);

    /* Handle loaded image protocol */
    Status = XtLoader::GetEfiSystemTable()->BootServices->HandleProtocol(XtLoader::GetEfiImageHandle(),
                                                                         &LIPGuid, (PVOID *)&LoadedImage);
    if(Status == STATUS_EFI_SUCCESS)
    {
        /* Check if launched from UEFI shell */
        if(LoadedImage && LoadedImage->LoadOptions)
        {
            /* Tokenize provided options */
            Argument = RTL::WideString::TokenizeWideString((PWCHAR)LoadedImage->LoadOptions, L" ", &LastArg);

            /* Iterate over all arguments passed to boot loader */
            while(Argument != NULLPTR)
            {
                /* Store key name */
                Key = Argument;

                /* Find end of the key */
                while(*Argument != L'=' && *Argument != L'\0' && *Argument != L'\n')
                {
                    /* Advance to the next character */
                    Argument++;
                }

                /* Mark end of the key and advance to the next character */
                *Argument = L'\0';
                Argument++;

                /* Store value */
                Value = Argument;

                /* Find end of the value */
                while(*Argument != L'\0' && *Argument != L'\n')
                {
                    /* Advance to the next character */
                    Argument++;
                }

                /* Mark end of the value and advance to the next character */
                *Argument = L'\0';
                Argument++;

                /* Get length of the key and its value */
                KeyLength = RTL::WideString::WideStringLength(Key, 0);
                ValueLength = RTL::WideString::WideStringLength(Value, 0);

                /* Check if argument is valid */
                if(KeyLength == 0 || ValueLength == 0)
                {
                    /* Invalid argument, skip to the next one */
                    continue;
                }

                /* Allocate memory for new option */
                Status = Memory::AllocatePool(sizeof(XTBL_CONFIG_ENTRY), (PVOID*)&Option);
                if(Status == STATUS_EFI_SUCCESS)
                {
                    /* Allocate more memory for option name */
                    Status = Memory::AllocatePool(sizeof(WCHAR) * (KeyLength + 1), (PVOID*)&Option->Name);
                    if(Status == STATUS_EFI_SUCCESS)
                    {
                        /* Allocate even more memory for option value */
                        Status = Memory::AllocatePool(sizeof(WCHAR) * (ValueLength + 1), (PVOID*)&Option->Value);
                    }
                }
                if(Status != STATUS_EFI_SUCCESS)
                {
                    /* Some memory allocation failed */
                    return Status;
                }

                /* Set entry name and value */
                RTL::Memory::CopyMemory(Option->Name, Key, (KeyLength * sizeof(WCHAR)));
                RTL::Memory::CopyMemory(Option->Value, Value, (ValueLength * sizeof(WCHAR)));
                Option->Name[KeyLength] = L'\0';
                Option->Value[ValueLength] = L'\0';

                /* Add entry to the list */
                RTL::LinkedList::InsertTailList(&Config, &Option->Flink);

                /* Take next argument */
                Argument = RTL::WideString::TokenizeWideString(NULLPTR, L" ", &LastArg);
            }

            /* Update global configuration */
            UpdateConfiguration(&Config);
        }
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Parses configuration INI file.
 *
 * @param RawConfig
 *        Suplies a pointer to configuration INI file to be parsed.
 *
 * @param Configuration
 *        Supplies a pointer to memory region where parsed configuration will be stored.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::ParseConfigFile(IN CONST PCHAR RawConfig,
                               OUT PLIST_ENTRY Configuration)
{
    SIZE_T SectionLength, KeyLength, ValueLength;
    PCHAR InputData, Key, SectionName, Value;
    PXTBL_CONFIG_SECTION Section;
    PXTBL_CONFIG_ENTRY Option;
    EFI_STATUS Status;

    /* Initialize pointers */
    InputData = RawConfig;
    Section = NULLPTR;
    Option = NULLPTR;
    SectionName = NULLPTR;
    Key = NULLPTR;
    Value = NULLPTR;

    /* Analyze configuration data until end of file is reached */
    while(*InputData != '\0')
    {
        if(*InputData == ';' || *InputData == '#')
        {
            /* Skip comment until end of the line */
            while(*InputData != '\0' && *InputData != '\n')
            {
                /* Advance to the next character */
                InputData++;
            }
        }
        else if(*InputData == ' ' || *InputData == '\t' || *InputData == '\r' || *InputData == '\n')
        {
            /* Skip whitespaces */
            InputData++;
        }
        else if(*InputData == '[')
        {
            /* Skip leading bracket */
            InputData++;

            /* Store section name */
            SectionName = InputData;

            /* Find end of the section name */
            while(*InputData != ']' && *InputData != '\0' && *InputData != '\r' && *InputData != '\n')
            {
                /* Advance to the next character */
                InputData++;
            }

            /* Check if end of the section name is reached */
            if(*InputData != ']')
            {
                /* Section name does not end */
                return STATUS_EFI_INVALID_PARAMETER;
            }

            /* Mark end of the section name and advance to the next character */
            *InputData = '\0';
            InputData++;

            /* Remove leading and trailing spaces from section name */
            SectionName = RTL::String::TrimString(SectionName);

            /* Find length of the section name */
            SectionLength = RTL::String::StringLength(SectionName, 0);

            /* Allocate memory for new section */
            Status = Memory::AllocatePool(sizeof(XTBL_CONFIG_SECTION), (PVOID*)&Section);
            if(Status == STATUS_EFI_SUCCESS)
            {
                /* Allocate more memory for section name */
                Status = Memory::AllocatePool(sizeof(WCHAR) * (SectionLength + 1), (PVOID*)&Section->SectionName);
            }
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Some memory allocation failed */
                return Status;
            }

            /* Initialize new section and convert its name to wide string */
            RTL::LinkedList::InitializeListHead(&Section->Options);
            RTL::String::StringToWideString(Section->SectionName, (PCSTR*)&SectionName, SectionLength);

            /* Ensure string is NULL-terminated and add new section to the configuration list */
            Section->SectionName[SectionLength] = L'\0';
            RTL::LinkedList::InsertTailList(Configuration, &Section->Flink);
        }
        else
        {
            /* Store key */
            Key = InputData;

            /* Find end of the key */
            while(*InputData != '=' && *InputData != '\0' && *InputData != '\r' && *InputData != '\n')
            {
                /* Advance to the next character */
                InputData++;
            }

            /* Check if end of the key is reached */
            if(*InputData != '=')
            {
                /* Key name does not end */
                return STATUS_EFI_INVALID_PARAMETER;
            }

            /* Mark end of the key and advance to the next character */
            *InputData = 0;
            InputData++;

            /* Skip all leading spaces in the value */
            while(*InputData == ' ')
            {
                /* Advance to the next character */
                InputData++;
            }

            /* Store value */
            Value = InputData;

            /* Find end of the value */
            while(*InputData != '\0' && *InputData != '\r' && *InputData != '\n')
            {
                /* Advance to the next character */
                InputData++;
            }

            /* Mark end of the value and advance to the next character */
            *InputData = 0;
            InputData++;

            /* Remove leading and trailing spaces from key and value */
            Key = RTL::String::TrimString(Key);
            Value = RTL::String::TrimString(Value);

            /* Find length of the key and its value */
            KeyLength = RTL::String::StringLength(Key, 0);
            ValueLength = RTL::String::StringLength(Value, 0);

            /* Allocate memory for new option */
            Status = Memory::AllocatePool(sizeof(XTBL_CONFIG_ENTRY), (PVOID*)&Option);
            if(Status == STATUS_EFI_SUCCESS)
            {
                /* Allocate more memory for option name */
                Status = Memory::AllocatePool(sizeof(WCHAR) * (KeyLength + 1), (PVOID*)&Option->Name);
                if(Status == STATUS_EFI_SUCCESS)
                {
                    /* Allocate even more memory for option value */
                    Status = Memory::AllocatePool(sizeof(WCHAR) * (ValueLength + 1), (PVOID*)&Option->Value);
                }
            }
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Some memory allocation failed */
                return Status;
            }

            /* Remove leading quotes from the value */
            if(*Value == '"' || *Value == '\'')
            {
                Value++;
            }

            /* Remove trailing quotes from the value */
            if(Value[ValueLength - 2] == '"' || Value[ValueLength - 2] == '\'')
            {
                Value[ValueLength - 2] = '\0';
            }

            /* Convert key and value to wide strings */
            RTL::String::StringToWideString(Option->Name, (PCSTR*)&Key, RTL::String::StringLength(Key, 0) + 1);
            RTL::String::StringToWideString(Option->Value, (PCSTR*)&Value, RTL::String::StringLength(Value, 0) + 1);

            /* Ensure strings are NULL-terminated and add new option to the list */
            Option->Name[KeyLength] = L'\0';
            Option->Value[ValueLength] = L'\0';
            RTL::LinkedList::InsertTailList(&Section->Options, &Option->Flink);
        }
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Loads configuration file from the specified directory on the FS0:/ drive.
 *
 * @param ConfigDirectory
 *        Specifies a path to the directory containing the configuration file.
 *
 * @param ConfigFile
 *        Specifies the name of the configuration file.
 *
 * @param ConfigData
 *        Provides a buffer to store the data read from the configuration file.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::ReadConfigFile(IN PCWSTR ConfigDirectory,
                              IN PCWSTR ConfigFile,
                              OUT PCHAR *ConfigData)
{
    PEFI_FILE_HANDLE DirHandle, FsHandle;
    EFI_HANDLE DiskHandle;
    EFI_STATUS Status;
    SIZE_T FileSize;

    /* Open EFI volume */
    Status = Volume::OpenVolume(NULLPTR, &DiskHandle, &FsHandle);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to open a volume */
        return Status;
    }

    /* Open specified directory, containing the configuration file and close the FS immediately */
    Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)ConfigDirectory, EFI_FILE_MODE_READ, 0);
    FsHandle->Close(FsHandle);

    /* Check if directory opened successfully */
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to open directory */
        Volume::CloseVolume(&DiskHandle);
        return Status;
    }

    /* Read configuration file and close directory */
    Status = Volume::ReadFile(DirHandle, ConfigFile, (PVOID *)ConfigData, &FileSize);
    DirHandle->Close(DirHandle);

    /* Close EFI volume */
    Volume::CloseVolume(&DiskHandle);

    /* Return read status */
    return Status;
}


/**
 * Sets the value of a specific OS boot option in a list, or adds it if it doesn't exist.
 *
 * @param Options
 *       A pointer to the head of a list of XTBL_CONFIG_ENTRY structures.
 *
 * @param OptionName
 *       A pointer to a wide string that contains the name of the boot option to set.
 *
 * @param OptionValue
 *       A pointer to a wide string that contains the new value for the boot option.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::SetBootOptionValue(IN PLIST_ENTRY Options,
                                  IN PCWSTR OptionName,
                                  IN PCWSTR OptionValue)
{
    PXTBL_CONFIG_ENTRY ConfigEntry;
    PLIST_ENTRY ConfigList;
    ULONG Length;
    EFI_STATUS Status;

    /* Get the length of the option name we are looking for */
    Length = RTL::WideString::WideStringLength(OptionName, 0);

    /* Start iterating from the first entry in the options list */
    ConfigList = Options->Flink;
    while(ConfigList != Options)
    {
        /* Get the container record for the current config entry */
        ConfigEntry = CONTAIN_RECORD(ConfigList, XTBL_CONFIG_ENTRY, Flink);

        /* Compare the current entry's name with the requested option name */
        if(RTL::WideString::CompareWideStringInsensitive(ConfigEntry->Name, OptionName, Length) == 0)
        {
            /* Found the option, get its length */
            Length = RTL::WideString::WideStringLength(OptionValue, 0);

            /* Reallocate memory for the new value */
            Status = Memory::FreePool(ConfigEntry->Value);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Failed to free memory, return status code */
                return Status;
            }

            /* Allocate new memory for the updated value */
            Status = Memory::AllocatePool((Length + 1) * sizeof(WCHAR), (PVOID *)&ConfigEntry->Value);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Memory allocation failure, print debug message and return status code */
                Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\\n", Status);
                return Status;
            }

            /* Copy the value and NULL-terminate the new string */
            RTL::Memory::CopyMemory(ConfigEntry->Value, OptionValue, Length * sizeof(WCHAR));
            ConfigEntry->Value[Length] = L'\0';
            return STATUS_EFI_SUCCESS;
        }

        /* Move to the next entry in the list */
        ConfigList = ConfigList->Flink;
    }

    /* Option not found, allocate memory for the new one */
    Status = Memory::AllocatePool(sizeof(XTBL_CONFIG_ENTRY), (PVOID *)&ConfigEntry);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure, print debug message and return status code */
        Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\\n", Status);
        return Status;
    }

    /* Allocate memory for the option name */
    Length = RTL::WideString::WideStringLength(OptionName, 0);
    Status = Memory::AllocatePool((Length + 1) * sizeof(WCHAR), (PVOID *)&ConfigEntry->Name);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure, print debug message and return status code */
        Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\\n", Status);
        Memory::FreePool(ConfigEntry);
        return Status;
    }

    /* Copy the option name and NULL-terminate the new string */
    RTL::Memory::CopyMemory(ConfigEntry->Name, OptionName, Length * sizeof(WCHAR));
    ConfigEntry->Name[Length] = L'\0';

    /* Allocate memory for the option value */
    Length = RTL::WideString::WideStringLength(OptionValue, 0);
    Status = Memory::AllocatePool((Length + 1) * sizeof(WCHAR), (PVOID *)&ConfigEntry->Value);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure, print debug message and return status code */
        Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\\n", Status);
        Memory::FreePool(ConfigEntry->Name);
        Memory::FreePool(ConfigEntry);
        return Status;
    }

    /* Copy the value and NULL-terminate the new string */
    RTL::Memory::CopyMemory(ConfigEntry->Value, OptionValue, Length * sizeof(WCHAR));
    ConfigEntry->Value[Length] = L'\0';

    /* Insert the new config entry at the end of the options list */
    RTL::LinkedList::InsertTailList(Options, &ConfigEntry->Flink);

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * Updates existing configuration value.
 *
 * @param ConfigName
 *        Specifies the configuration key to update.
 *
 * @param ConfigValue
 *        Specifies the new configuration value.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Configuration::SetValue(IN PCWSTR ConfigName,
                        IN PCWSTR ConfigValue)
{
    PXTBL_CONFIG_ENTRY ConfigEntry;
    PLIST_ENTRY ConfigListEntry;
    EFI_STATUS Status;
    SIZE_T Length;

    /* Get config entry name length */
    Length = RTL::WideString::WideStringLength(ConfigName, 0);

    /* Iterate through config entries */
    ConfigListEntry = Config.Flink;
    while(ConfigListEntry != &Config)
    {
        /* Get config entry */
        ConfigEntry = CONTAIN_RECORD(ConfigListEntry, XTBL_CONFIG_ENTRY, Flink);

        /* Check if requested configuration found */
        if(RTL::WideString::CompareWideStringInsensitive(ConfigEntry->Name, ConfigName, Length) == 0)
        {
            /* Check new config value length */
            Length = RTL::WideString::WideStringLength(ConfigValue, 0);

            /* Reallocate memory for new config value */
            Status = Memory::FreePool(ConfigEntry->Value);
            if(Status == STATUS_EFI_SUCCESS)
            {
                /* Successfully freed memory, allocate a new pool */
                Status = Memory::AllocatePool((Length + 1) * sizeof(WCHAR), (PVOID *)&ConfigEntry->Value);
            }

            /* Check memory reallocation status */
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Failed to reallocate memory */
                return Status;
            }

            /* Update config value */
            RTL::Memory::CopyMemory(ConfigEntry->Value, ConfigValue, Length * sizeof(WCHAR));
            ConfigEntry->Value[Length] = L'\0';

            /* Return success */
            return STATUS_EFI_SUCCESS;
        }

        /* Move to the next config entry */
        ConfigListEntry = ConfigListEntry->Flink;
    }

    /* Config entry not found */
    return STATUS_EFI_NOT_FOUND;
}

/**
 * Adds new XTLDR configuration entries to the global configuration list. Existing entries are not overwritten.
 *
 * @param NewConfig
 *        Supplies a pointer to a linked list containing new configuration entries.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Configuration::UpdateConfiguration(IN PLIST_ENTRY NewConfig)
{
    PXTBL_CONFIG_ENTRY ConfigEntry;
    PWCHAR ConfigValue;
    PLIST_ENTRY ConfigListEntry, NextListEntry;

    /* Iterate through new config entries */
    ConfigListEntry = NewConfig->Flink;
    while(ConfigListEntry != NewConfig)
    {
        /* Get new config entry */
        ConfigEntry = CONTAIN_RECORD(ConfigListEntry, XTBL_CONFIG_ENTRY, Flink);

        /* Get next config entry */
        NextListEntry = ConfigListEntry->Flink;

        /* Make sure config entry does not exist yet */
        GetValue(ConfigEntry->Name, &ConfigValue);
        if(ConfigValue == NULLPTR)
        {
            /* Remove new config entry from input list and put it into global config list */
            RTL::LinkedList::RemoveEntryList(&ConfigEntry->Flink);
            RTL::LinkedList::InsertTailList(&Config, &ConfigEntry->Flink);
        }

        /* Move to the next new config entry */
        ConfigListEntry = NextListEntry;
    }
}


================================================
FILE: boot/xtldr/console.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/console.cc
 * DESCRIPTION:     EFI console support
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 */

#include <xtldr.hh>


/**
 * Clears a specified line on the UEFI text console.
 *
 * @param LineNo
 *        Supplies a line number to clear.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::ClearLine(IN ULONGLONG LineNo)
{
    UINT_PTR Index, ResX, ResY;

    /* Query console mode */
    QueryMode(&ResX, &ResY);

    /* Set cursor position and clear line */
    SetCursorPosition(0, LineNo);
    for(Index = 0; Index < ResX; Index++)
    {
        /* Clear line */
        Write(L" ");
    }
}

/**
 * This routine clears the UEFI console screen.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::ClearScreen()
{
    /* Clear screen */
    XtLoader::GetEfiSystemTable()->ConOut->ClearScreen(XtLoader::GetEfiSystemTable()->ConOut);
}

/**
 * Disables the cursor on the UEFI console.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::DisableCursor()
{
    XtLoader::GetEfiSystemTable()->ConOut->EnableCursor(XtLoader::GetEfiSystemTable()->ConOut, FALSE);
}

/**
 * Enables the cursor on the UEFI console.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::EnableCursor()
{
    XtLoader::GetEfiSystemTable()->ConOut->EnableCursor(XtLoader::GetEfiSystemTable()->ConOut, TRUE);
}

/**
 * This routine initializes the EFI console.
 *
 * @return This routine returns status code.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::InitializeConsole()
{
    /* Clear console buffers */
    XtLoader::GetEfiSystemTable()->ConIn->Reset(XtLoader::GetEfiSystemTable()->ConIn, TRUE);
    XtLoader::GetEfiSystemTable()->ConOut->Reset(XtLoader::GetEfiSystemTable()->ConOut, TRUE);
    XtLoader::GetEfiSystemTable()->StdErr->Reset(XtLoader::GetEfiSystemTable()->StdErr, TRUE);

    /* Make sure that current console mode is 80x25 characters, as some broken EFI implementations might
     * set different mode that do not fit on the screen, causing a text to be displayed offscreen */
    if(XtLoader::GetEfiSystemTable()->ConOut->Mode->Mode != 0)
    {
        /* Set console mode to 0, which is standard, 80x25 text mode */
        SetMode(0);
    }

    /* Clear screen and enable cursor */
    SetAttributes(EFI_TEXT_BGCOLOR_BLACK | EFI_TEXT_FGCOLOR_LIGHTGRAY);
    ClearScreen();
    EnableCursor();
}

/**
 * This routine formats the input string and prints it out to the stdout and serial console.
 *
 * @param Format
 *        The formatted string that is to be written to the output.
 *
 * @param ...
 *        Depending on the format string, this routine might expect a sequence of additional arguments.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::Print(IN PCWSTR Format,
               IN ...)
{
    RTL_PRINT_CONTEXT ConsolePrintContext, SerialPrintContext;
    VA_LIST Arguments;

    /* Initialise the print contexts */
    ConsolePrintContext.WriteWideCharacter = PutChar;
    SerialPrintContext.WriteWideCharacter = Debug::PutChar;

    /* Initialise the va_list */
    VA_START(Arguments, Format);

    /* Format and print the string to the stdout */
    RTL::WideString::FormatWideString(&ConsolePrintContext, (PWCHAR)Format, Arguments);

    /* Print to serial console only if not running under OVMF */
    if(RTL::WideString::CompareWideString(XtLoader::GetEfiSystemTable()->FirmwareVendor, L"EDK II", 6) != 0)
    {
        /* Check if debugging enabled and if EFI serial port is fully initialized */
        if(DEBUG && Debug::SerialPortReady())
        {
            /* Format and print the string to the serial console */
            RTL::WideString::FormatWideString(&SerialPrintContext, (PWCHAR)Format, Arguments);
        }
    }

    /* Clean up the va_list */
    VA_END(Arguments);
}

/**
 * Writes a character to the default EFI console.
 *
 * @param Character
 *        The integer promotion of the character to be written.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
XTSTATUS
Console::PutChar(IN WCHAR Character)
{
    WCHAR Buffer[2];

    /* Check if character is a newline ('\n') */
    if(Character == L'\n')
    {
        /* Print carriage return ('\r') as well */
        PutChar(L'\r');
    }

    /* Write character to the screen console */
    Buffer[0] = Character;
    Buffer[1] = 0;
    XtLoader::GetEfiSystemTable()->ConOut->OutputString(XtLoader::GetEfiSystemTable()->ConOut, Buffer);

    /* Return success */
    return STATUS_SUCCESS;
}

/**
 * Queries information concerning the output device’s supported text mode.
 *
 * @param ResX
 *        Supplies a buffer to receive the horizontal resolution.
 *
 * @param ResY
 *        Supplies a buffer to receive the vertical resolution.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::QueryMode(OUT PUINT_PTR ResX,
                   OUT PUINT_PTR ResY)
{
    XtLoader::GetEfiSystemTable()->ConOut->QueryMode(XtLoader::GetEfiSystemTable()->ConOut,
                                                     XtLoader::GetEfiSystemTable()->ConOut->Mode->Mode, ResX, ResY);
}

/**
 * Reads a keystroke from the input device.
 *
 * @param Key
 *        Supplies a pointer to the EFI_INPUT_KEY structure that will receive the keystroke.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Console::ReadKeyStroke(OUT PEFI_INPUT_KEY Key)
{
    /* Clear the key structure to prevent ghost keystrokes */
    Key->ScanCode = 0;
    Key->UnicodeChar = 0;

    /* Read the keystroke from the EFI input console */
    return XtLoader::GetEfiSystemTable()->ConIn->ReadKeyStroke(XtLoader::GetEfiSystemTable()->ConIn, Key);
}

/**
 * Resets the console input device and clears its input buffer.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::ResetInputBuffer()
{
    XtLoader::GetEfiSystemTable()->ConIn->Reset(XtLoader::GetEfiSystemTable()->ConIn, FALSE);
}

/**
 * Sets the foreground and background colors.
 *
 * @param Attribute
 *        Specifies the foreground and background colors (bits 0..3 are fg, and bits 4..6 are bg color).
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::SetAttributes(IN ULONGLONG Attributes)
{
    XtLoader::GetEfiSystemTable()->ConOut->SetAttribute(XtLoader::GetEfiSystemTable()->ConOut, Attributes);
}

/**
 * Sets new coordinates of the console cursor position.
 *
 * @param PosX
 *        Specifies the new X coordinate of the cursor.
 *
 * @param PosY
 *        Specifies the new Y coordinate of the cursor.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::SetCursorPosition(IN ULONGLONG PosX,
                           IN ULONGLONG PosY)
{
    XtLoader::GetEfiSystemTable()->ConOut->SetCursorPosition(XtLoader::GetEfiSystemTable()->ConOut, PosX, PosY);
}

/**
 * Sets the output console device to the requested mode.
 *
 * @param Mode
 *        Supplies a text mode number to set.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Console::SetMode(IN ULONGLONG Mode)
{
    return XtLoader::GetEfiSystemTable()->ConOut->SetMode(XtLoader::GetEfiSystemTable()->ConOut, Mode);
}

/**
 * Displays the string on the device at the current cursor location.
 *
 * @param String
 *        The string to be displayed.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Console::Write(IN PCWSTR String)
{
    XtLoader::GetEfiSystemTable()->ConOut->OutputString(XtLoader::GetEfiSystemTable()->ConOut, (PWSTR)String);
}


================================================
FILE: boot/xtldr/data.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/data.cc
 * DESCRIPTION:     XT Boot Loader global and static data
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 *                  Aiken Harris <harraiken91@gmail.com>
 */

#include <xtldr.hh>


/* Legacy BIOS cursor X position */
USHORT BiosUtils::CursorX = 0;

/* Legacy BIOS cursor Y position */
USHORT BiosUtils::CursorY = 0;

/* Legacy BIOS screen height */
CONST USHORT BiosUtils::VgaHeight = 25;

/* Legacy BIOS screen width */
CONST USHORT BiosUtils::VgaWidth = 80;

/* XT Boot Loader menu list */
PLIST_ENTRY Configuration::BootMenuList = NULLPTR;

/* XT Boot Loader configuration list */
LIST_ENTRY Configuration::Config;

/* XT Boot Loader loaded configuration */
LIST_ENTRY Configuration::ConfigSections;

/* List of user-editable boot options */
PCWSTR Configuration::EditableConfigOptions[] = {
    L"BootModules", L"SystemType", L"SystemPath",
    L"KernelFile",  L"InitrdFile", L"HalFile",
    L"Parameters", NULLPTR
};

/* XT Boot Loader serial ports list */
ULONG Debug::ComPortList[COMPORT_COUNT] = COMPORT_ADDRESS;

/* A list of enabled debug ports */
ULONG Debug::EnabledDebugPorts;

/* XT Boot Loader serial port handle */
CPPORT Debug::SerialPort;

/* XT Boot Loader registered boot protocol list */
LIST_ENTRY Protocol::BootProtocols;

/* XT Boot Loader protocol */
XTBL_LOADER_PROTOCOL Protocol::LoaderProtocol;

/* XT Boot Loader loaded modules list */
LIST_ENTRY Protocol::LoadedModules;

/* XT Boot Loader shell exit flag */
BOOLEAN Shell::ExitRequest;

/* XT Boot Loader shell history buffer */
WCHAR Shell::History[XTBL_SH_HISTORY_ENTRIES][XTBL_SH_MAX_LINE_LENGTH];

/* XT Boot Loader shell history count */
ULONG Shell::HistoryCount = 0;

/* XT Boot Loader shell history index */
ULONG Shell::HistoryIndex = 0;

/* XT Boot Loader shell commands list */
LIST_ENTRY Shell::ShellCommands;

/* List of available block devices */
LIST_ENTRY Volume::EfiBlockDevices;

/* Pointer to the boot menu callback routine */
PBL_XT_BOOT_MENU XtLoader::BootMenu = NULLPTR;

/* EFI Image Handle */
EFI_HANDLE XtLoader::EfiImageHandle;

/* EFI System Table */
PEFI_SYSTEM_TABLE XtLoader::EfiSystemTable;

/* XT Boot Loader status data */
XTBL_STATUS XtLoader::LoaderStatus = {0};


================================================
FILE: boot/xtldr/debug.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/debug.cc
 * DESCRIPTION:     XT Boot Loader debugging support
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 */

#include <xtldr.hh>


/**
 * Enables I/O space access to all serial controllers found on the PCI(E) root bridge.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Debug::ActivateSerialIOController()
{
    EFI_GUID PciGuid = EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID;
    PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL PciDev;
    USHORT Bus, Device, Function, Command;
    UINT_PTR Index, PciHandleSize;
    PEFI_HANDLE PciHandle = NULLPTR;
    PCI_COMMON_HEADER PciHeader;
    EFI_STATUS Status;
    ULONGLONG Address;

    /* Allocate memory for single EFI_HANDLE, what should be enough in most cases */
    PciHandleSize = sizeof(EFI_HANDLE);
    Status = Memory::AllocatePool(PciHandleSize, (PVOID*)&PciHandle);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure */
        return Status;
    }

    /* Get all instances of PciRootBridgeIo */
    Status = XtLoader::GetEfiSystemTable()->BootServices->LocateHandle(ByProtocol, &PciGuid, NULLPTR,
                                                                       &PciHandleSize, PciHandle);
    if(Status == STATUS_EFI_BUFFER_TOO_SMALL)
    {
        /* Reallocate more memory as requested by UEFI */
        Memory::FreePool(PciHandle);
        Status = Memory::AllocatePool(PciHandleSize, (PVOID*)&PciHandle);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Memory reallocation failure */
            return Status;
        }

        /* Second attempt to get instances of PciRootBridgeIo */
        Status = XtLoader::GetEfiSystemTable()->BootServices->LocateHandle(ByProtocol, &PciGuid, NULLPTR,
                                                                           &PciHandleSize, PciHandle);
    }

    /* Make sure successfully obtained PciRootBridgeIo instances */
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to get PciRootBridgeIo instances */
        return Status;
    }

    /* Enumerate all devices for each handle, which decides a segment and a bus number range */
    for(Index = 0; Index < (PciHandleSize / sizeof(EFI_HANDLE)); Index++)
    {
        /* Get inferface from the protocol */
        Status = XtLoader::GetEfiSystemTable()->BootServices->HandleProtocol(PciHandle[Index], &PciGuid, (PVOID*)&PciDev);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Failed to get interface */
            return Status;
        }

        /* Enumerate whole PCI bridge */
        for(Bus = 0; Bus <= PCI_MAX_BRIDGE_NUMBER; Bus++)
        {
            /* Enumerate all devices for each bus */
            for(Device = 0; Device < PCI_MAX_DEVICES; Device++)
            {
                /* Enumerate all functions for each devices */
                for(Function = 0; Function < PCI_MAX_FUNCTION; Function++)
                {
                    /* Read configuration space */
                    Address = ((ULONGLONG)((((UINT_PTR) Bus) << 24) + (((UINT_PTR) Device) << 16) +
                                           (((UINT_PTR) Function) << 8) + ((UINT_PTR) 0)));
                    PciDev->Pci.Read(PciDev, EfiPciIoWidthUint32, Address, sizeof (PciHeader) / sizeof (UINT), &PciHeader);

                    /* Check if device exists */
                    if(PciHeader.VendorId == PCI_INVALID_VENDORID)
                    {
                        /* Skip non-existen device */
                        continue;
                    }

                    /* Check if device is serial controller or multiport serial controller */
                    if(PciHeader.BaseClass == 0x07 && (PciHeader.SubClass == 0x00 || PciHeader.SubClass == 0x02))
                    {
                        /* Enable I/O space access */
                        Address |= 0x4;
                        Command = PCI_ENABLE_IO_SPACE;
                        Status = PciDev->Pci.Write(PciDev, EfiPciIoWidthUint16, Address, 1, &Command);
                    }
                }
            }
        }
    }

    /* Return SUCCESS */
    return STATUS_EFI_SUCCESS;
}

/**
 * This routine initializes the XTLDR debug console.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Debug::InitializeDebugConsole()
{
    ULONG PortAddress, PortNumber, BaudRate;
    PWCHAR DebugConfiguration, DebugPort, LastPort;
    EFI_STATUS Status;

    /* Set default serial port options */
    PortAddress = 0;
    PortNumber = 0;
    BaudRate = 0;

    /* Get debug configuration */
    Configuration::GetValue(L"DEBUG", &DebugConfiguration);

    /* Make sure any debug options are provided and debug console is not initialized yet */
    if(DebugConfiguration && EnabledDebugPorts == 0)
    {
        /* Find all debug ports */
        DebugPort = RTL::WideString::TokenizeWideString(DebugConfiguration, L";", &LastPort);

        /* Iterate over all debug ports */
        while(DebugPort != NULLPTR)
        {
            /* Check what port is set for debugging */
            if(RTL::WideString::CompareWideStringInsensitive(DebugPort, L"COM", 3) == 0)
            {
                /* Read COM port number */
                DebugPort += 3;
                while(*DebugPort >= '0' && *DebugPort <= '9')
                {
                    /* Get port number */
                    PortNumber *= 10;
                    PortNumber += *DebugPort - '0';
                    DebugPort++;
                }

                /* Check if custom COM port address supplied */
                if(PortNumber == 0 && RTL::WideString::CompareWideStringInsensitive(DebugPort, L":0x", 3) == 0)
                {
                    /* COM port address provided */
                    DebugPort += 3;
                    while((*DebugPort >= '0' && *DebugPort <= '9') ||
                          (*DebugPort >= 'A' && *DebugPort <= 'F') ||
                          (*DebugPort >= 'a' && *DebugPort <= 'f'))
                    {
                        /* Get port address */
                        PortAddress *= 16;
                        if(*DebugPort >= '0' && *DebugPort <= '9')
                        {
                            PortAddress += *DebugPort - '0';
                        }
                        else if(*DebugPort >= 'A' && *DebugPort <= 'F')
                        {
                            PortAddress += *DebugPort - 'A' + 10;
                        }
                        else if(*DebugPort >= 'a' && *DebugPort <= 'f')
                        {
                            PortAddress += *DebugPort - 'a' + 10;
                        }
                        DebugPort++;
                    }
                }

                /* Look for additional COM port parameters */
                if(*DebugPort == ',')
                {
                    /* Baud rate provided */
                    DebugPort++;
                    while(*DebugPort >= '0' && *DebugPort <= '9')
                    {
                        /* Get baud rate */
                        BaudRate *= 10;
                        BaudRate += *DebugPort - '0';
                        DebugPort++;
                    }
                }

                /* Enable debug port */
                EnabledDebugPorts |= XTBL_DEBUGPORT_SERIAL;
            }
            else if(RTL::WideString::CompareWideStringInsensitive(DebugPort, L"SCREEN", 5) == 0)
            {
                /* Enable debug port */
                EnabledDebugPorts |= XTBL_DEBUGPORT_SCREEN;
            }
            else
            {
                /* Unsupported debug port specified */
                Console::Print(L"ERROR: Unsupported debug port ('%S') specified\n", DebugPort);
                EfiUtils::SleepExecution(3000);
            }

            /* Take next debug port */
            DebugPort = RTL::WideString::TokenizeWideString(NULLPTR, L";", &LastPort);
        }

        /* Check if serial debug port is enabled */
        if(EnabledDebugPorts & XTBL_DEBUGPORT_SERIAL)
        {
            /* Try to initialize COM port */
            Status = InitializeSerialPort(PortNumber, PortAddress, BaudRate);
            if(Status != STATUS_EFI_SUCCESS)
            {
                /* Remove serial debug port, as COM port initialization failed and return */
                EnabledDebugPorts &= ~XTBL_DEBUGPORT_SERIAL;
                return Status;
            }
        }
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * This routine initializes the serial debug console.
 *
 * @param PortNumber
 *        Supplies a port number.
 *
 * @param PortAddress
 *        Supplies an address of the COM port.
 *
 * @param BaudRate
 *        Supplies an optional port baud rate.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
Debug::InitializeSerialPort(IN ULONG PortNumber,
                            IN ULONG PortAddress,
                            IN ULONG BaudRate)
{
    EFI_STATUS EfiStatus;
    XTSTATUS Status;

    /* Check if custom COM port address supplied */
    if(!PortAddress)
    {
        /* We support only a pre-defined number of ports */
        if(PortNumber > COMPORT_COUNT)
        {
            /* Fail if wrong/unsupported port used */
            return STATUS_INVALID_PARAMETER;
        }

        /* Check if serial port is set */
        if(PortNumber == 0)
        {
            /* Use COM1 by default */
            PortNumber = 1;
        }

        /* Set custom port address based on the port number and print debug message */
        PortAddress = ComPortList[PortNumber - 1];
        Console::Print(L"Initializing serial console at port COM%d\n", PortNumber);
    }
    else
    {
        /* Custom port address supplied, print debug message */
        Console::Print(L"Initializing serial console at COM port address: 0x%lX\n", PortAddress);
    }

    /* Initialize COM port */
    Status = HL::ComPort::InitializeComPort(&SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate);

    /* Port not found under supplied address */
    if(Status == STATUS_NOT_FOUND && PortAddress)
    {
        /* This might be PCI(E) serial controller, try to activate I/O space access first */
        EfiStatus = ActivateSerialIOController();
        if(EfiStatus == STATUS_EFI_SUCCESS)
        {
            /* Try to reinitialize COM port */
            Console::Print(L"Enabled I/O space access for all PCI(E) serial controllers found\n");
            Status = HL::ComPort::InitializeComPort(&SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate);
        }
    }

    /* Check COM port initialization status code */
    if(Status != STATUS_SUCCESS)
    {
        /* Serial port initialization failed, mark as not ready */
        return STATUS_EFI_NOT_READY;
    }

    /* Return success */
    return STATUS_EFI_SUCCESS;
}

/**
 * This routine formats the input string and prints it out to the debug ports.
 *
 * @param Format
 *        The formatted string that is to be written to the output.
 *
 * @param ...
 *        Depending on the format string, this routine might expect a sequence of additional arguments.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
Debug::Print(IN PCWSTR Format,
             IN ...)
{
    RTL_PRINT_CONTEXT ConsolePrintContext, SerialPrintContext;
    VA_LIST Arguments;

    /* Check if debugging enabled and if EFI serial port is fully initialized */
    if(DEBUG)
    {
        /* Initialize the print contexts */
        ConsolePrintContext.WriteWideCharacter = Console::PutChar;
        SerialPrintContext.WriteWideCharacter = PutChar;

        /* Initialise the va_list */
        VA_START(Arguments, Format);

        /* Check if serial debug port is enabled */
        if((EnabledDebugPorts & XTBL_DEBUGPORT_SERIAL) && (SerialPort.Flags & COMPORT_FLAG_INIT))
        {
            /* Format and print the string to the serial console */
            RTL::WideString::FormatWideString(&SerialPrintContext, (PWCHAR)Format, Arguments);
        }

        /* Check if screen debug port is enabled and Boot Services are still available */
        if((EnabledDebugPorts & XTBL_DEBUGPORT_SCREEN) && (XtLoader::GetBootServicesStatus() == TRUE))
        {
            /* Format and print the string to the screen */
            RTL::WideString::FormatWideString(&ConsolePrintContext, (PWCHAR)Format, Arguments);
        }

        /* Clean up the va_list */
        VA_END(Arguments);
    }
}

/**
 * Writes a character to the serial console.
 *
 * @param Character
 *        The integer promotion of the character to be written.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
XTSTATUS
Debug::PutChar(IN WCHAR Character)
{
    WCHAR Buffer[2];

    /* Write character to the serial console */
    Buffer[0] = Character;
    Buffer[1] = 0;
    return HL::ComPort::WriteComPort(&SerialPort, Buffer[0]);
}

/**
 * Determines if the serial port has been successfully initialized and is ready for communication.
 *
 * @return This routine returns TRUE if the serial port is initialized and ready, FALSE otherwise.
 *
 * @since XT 1.0
 */
XTCDECL
BOOLEAN
Debug::SerialPortReady()
{
    return (SerialPort.Flags & COMPORT_FLAG_INIT);
}


================================================
FILE: boot/xtldr/efiutils.cc
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/efiutils.cc
 * DESCRIPTION:     EFI related routines for XT Boot Loader
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 */

#include <xtldr.hh>


/**
 * Reboots into UEFI firmware setup interface.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::EnterFirmwareSetup()
{
    EFI_GUID Guid = EFI_GLOBAL_VARIABLE_GUID;
    PULONGLONG SetupSupport = NULLPTR;
    ULONGLONG Indications;
    EFI_STATUS Status;

    /* Check if booting into firmware interface is supported */
    Status = GetEfiVariable(&Guid, L"OsIndicationsSupported", (PVOID*)&SetupSupport);
    if(Status != STATUS_EFI_SUCCESS || !(*SetupSupport & EFI_OS_INDICATIONS_BOOT_TO_FW_UI))
    {
        /* Reboot into firmware setup is not supported */
        Debug::Print(L"WARNING: Reboot into firmware setup interface not supported\n");
        if(SetupSupport)
        {
            Memory::FreePool((PVOID)SetupSupport);
        }
        return STATUS_EFI_UNSUPPORTED;
    }

    Memory::FreePool((PVOID)SetupSupport);

    /* Get the value of OsIndications variable */
    Indications = 0;
    Status = GetEfiVariable(&Guid, L"OsIndications", (PVOID*)&Indications);

    /* Enable FW setup on next boot */
    Indications |= EFI_OS_INDICATIONS_BOOT_TO_FW_UI;
    Status = SetEfiVariable(&Guid, L"OsIndications", (PVOID)&Indications, sizeof(Indications));
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to update OsIndications variable */
        return Status;
    }

    /* Reboot into firmware setup */
    RebootSystem();

    /* Must not reach this point, just make the compiler happy */
    return STATUS_EFI_SUCCESS;
}

/**
 * Exits EFI boot services.
 *
 * @return This routine returns status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::ExitBootServices()
{
    PEFI_MEMORY_MAP MemoryMap;
    EFI_STATUS Status;
    ULONG Counter;

    /* Boot Services might be partially shutdown, so mark them as unavailable */
    XtLoader::DisableBootServices();

    /* Allocate buffer for EFI memory map */
    Status = Memory::AllocatePool(sizeof(EFI_MEMORY_MAP), (PVOID*)&MemoryMap);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure */
        Debug::Print(L"ERROR: Memory allocation failure (Status Code: 0x%zX)\n", Status);
        return Status;
    }

    /* Zero fill the buffer and initialize counter */
    RTL::Memory::ZeroMemory(MemoryMap, sizeof(EFI_MEMORY_MAP));
    Counter = 0xFF;

    /* Attempt to exit boot services */
    while(Counter > 0)
    {
        /* Get memory map each time as it can change between two calls */
        Status = Memory::GetMemoryMap(MemoryMap);
        if(Status != STATUS_EFI_SUCCESS)
        {
            /* Failed to get new memory map */
            return Status;
        }

        /* Exit boot services */
        Status = XtLoader::GetEfiSystemTable()->BootServices->ExitBootServices(XtLoader::GetEfiImageHandle(),
                                                                               MemoryMap->MapKey);
        if(Status == STATUS_EFI_SUCCESS)
        {
            break;
        }

        /* Decrement counter */
        Counter--;
    }

    /* Return EFI status code */
    return Status;
}

/**
 * Gets the address of a reqested system configuration table.
 *
 * @param TableGuid
 *        Supplies a GUID of the configuration table.
 *
 * @param Table
 *        Supplies a pointer to the memory area where the table address will be stored.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::GetConfigurationTable(IN PEFI_GUID TableGuid,
                                OUT PVOID *Table)
{
    SIZE_T Index;

    /* Iterate through all system configuration tables */
    for(Index = 0; Index < XtLoader::GetEfiSystemTable()->NumberOfTableEntries; Index++)
    {
        /* Check if this table matches requested table */
        if(RTL::Guid::CompareGuids((PGUID)&(XtLoader::GetEfiSystemTable()->ConfigurationTable[Index].VendorGuid),
                                   (PGUID)TableGuid))
        {
            /* Found requested table, return success */
            *Table = XtLoader::GetEfiSystemTable()->ConfigurationTable[Index].VendorTable;
            return STATUS_EFI_SUCCESS;
        }
    }

    /* Table not found */
    *Table = NULLPTR;
    return STATUS_EFI_NOT_FOUND;
}

/**
 * Gets the value of the EFI variable.
 *
 * @param Vendor
 *        Supplies a pointer to the unique vendor GUID.
 *
 * @param VariableName
 *        Supplies a pointer to tge NULL-terminated string containing the variable name.
 *
 * @param VariableValue
 *        Supplies a pointer to the buffer, where the variable value will be stored.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::GetEfiVariable(IN PEFI_GUID Vendor,
                         IN PCWSTR VariableName,
                         OUT PVOID *VariableValue)
{
    EFI_STATUS Status;
    PVOID Buffer;
    UINT_PTR Size = 0;

    /* Allocate a buffer for storing a variable's value */
    Size = EFI_MAXIMUM_VARIABLE_SIZE * sizeof(PWCHAR);
    Status = Memory::AllocatePool(Size, (PVOID*)&Buffer);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Memory allocation failure */
        return Status;
    }

    /* Attempt to get variable value */
    Status = XtLoader::GetEfiSystemTable()->RuntimeServices->GetVariable((PWCHAR)VariableName, Vendor, NULLPTR,
                                                                         &Size, Buffer);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to get variable, probably not found such one */
        return Status;
    }

    /* Get variable value and return success */
    *VariableValue = Buffer;
    return STATUS_EFI_SUCCESS;
}

/**
 * Returns a random value based on the initialized RNG buffer.
 *
 * @param RNGBuffer
 *        Supplies a pointer to the RNG buffer.
 *
 * @return This routine returns a random value.
 *
 * @since XT 1.0
 *
 * @see https://en.wikipedia.org/wiki/Xorshift
 */
XTCDECL
ULONGLONG
EfiUtils::GetRandomValue(IN OUT PULONGLONG RNGBuffer)
{
    /* Recalculate RNG buffer with XORSHIFT */
    *RNGBuffer ^= *RNGBuffer >> 12;
    *RNGBuffer ^= *RNGBuffer << 25;
    *RNGBuffer ^= *RNGBuffer >> 27;

    /* Return random value */
    return *RNGBuffer * 0x2545F4914F6CDD1D;
}

/**
 * Checks whether SecureBoot is enabled or not.
 *
 * @return Numeric representation of SecureBoot status (0 = Disabled, >0 = Enabled, <0 SetupMode).
 *
 * @since XT 1.0
 */
XTCDECL
INT_PTR
EfiUtils::GetSecureBootStatus()
{
    EFI_GUID VarGuid = EFI_GLOBAL_VARIABLE_GUID;
    INT_PTR SecureBootStatus = 0;
    INT_PTR VarValue = 0;
    UINT_PTR Size;

    Size = sizeof(INT_PTR);
    if(XtLoader::GetEfiSystemTable()->RuntimeServices->GetVariable((PWCHAR)L"SecureBoot", &VarGuid,
       NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS)
    {
        SecureBootStatus = VarValue;
        Size = sizeof(INT_PTR);
        if((XtLoader::GetEfiSystemTable()->RuntimeServices->GetVariable((PWCHAR)L"SetupMode", &VarGuid,
           NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) && VarValue != 0)
        {
            SecureBootStatus = -1;
        }
    }

    /* Return SecureBoot status */
    return SecureBootStatus;
}

/**
 * Initializes the RNG buffer with random bytes from the default EFI RNG algorithm.
 *
 * @param RNGBuffer
 *        Supplies a pointer to the RNG buffer.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::InitializeEntropy(PULONGLONG RNGBuffer)
{
    EFI_GUID RngGuid = EFI_RNG_PROTOCOL_GUID;
    PEFI_RNG_PROTOCOL Rng;
    EFI_STATUS Status;
    ULONGLONG Seed;

    /* Initialize variables */
    Rng = NULLPTR;
    Seed = 0;

    /* Locate RNG protocol */
    Status = XtLoader::GetEfiSystemTable()->BootServices->LocateProtocol(&RngGuid, NULLPTR, (PVOID *)&Rng);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to locate RNG protocol, return status code */
        return Status;
    }

    /* Get RNG value using the default algorithm */
    Status = Rng->GetRNG(Rng, NULLPTR, 8, (PUCHAR)&Seed);
    if(Status != STATUS_EFI_SUCCESS)
    {
        /* Failed to get RNG value, return status code */
        return Status;
    }

    /* Initialize RNG state and return success */
    *RNGBuffer = Seed ? Seed : 1;
    return STATUS_EFI_SUCCESS;
}

/**
 * Loads an EFI image into memory.
 *
 * @param DevicePath
 *        Specifies a device path from which the image is loaded.
 *
 * @param ImageData
 *        Supplies a pointer to the memory are containing a copy of the EFI image.
 *
 * @param ImageSize
 *        Supplies the size (in bytes) of the EFI image.
 *
 * @param ImageHandle
 *        Supplies a pointer to the memory area, where an EFI_image handle will be stored.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::LoadEfiImage(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
                       IN PVOID ImageData,
                       IN SIZE_T ImageSize,
                       OUT PEFI_HANDLE ImageHandle)
{
    /* Load EFI image */
    return XtLoader::GetEfiSystemTable()->BootServices->LoadImage(FALSE, XtLoader::GetEfiImageHandle(), DevicePath,
                                                                  ImageData, ImageSize, ImageHandle);
}

/**
 * Reboots the machine.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::RebootSystem()
{
    /* Reboot machine */
    return XtLoader::GetEfiSystemTable()->RuntimeServices->ResetSystem(EfiResetCold, STATUS_EFI_SUCCESS, 0, NULLPTR);
}

/**
 * Sets a value of an EFI variable.
 *
 * @param Vendor
 *        Supplies a pointer to the unique vendor GUID.
 *
 * @param VariableName
 *        Supplies a pointer to tge NULL-terminated string containing the variable name.
 *
 * @param VariableValue
 *        Supplies the contents of the variable.
 *
 * @param Size
 *        Supplies the size of the variable data buffer.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::SetEfiVariable(IN PEFI_GUID Vendor,
                         IN PCWSTR VariableName,
                         IN PVOID VariableValue,
                         IN UINT_PTR Size)
{
    ULONG Attributes;

    /* Set EFI variable */
    Attributes = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
    return XtLoader::GetEfiSystemTable()->RuntimeServices->SetVariable((PWCHAR)VariableName, Vendor, Attributes,
                                                                       Size, VariableValue);
}

/**
 * Shuts down the machine.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::ShutdownSystem()
{
    /* Shutdown machine */
    return XtLoader::GetEfiSystemTable()->RuntimeServices->ResetSystem(EfiResetShutdown, STATUS_EFI_SUCCESS, 0, NULLPTR);
}

/**
 * Puts the system to sleep for the specified number of milliseconds.
 *
 * @param Milliseconds
 *        Supplies the number of milliseconds to sleep.
 *
 * @return This routine does not return any value.
 *
 * @since XT 1.0
 */
XTCDECL
VOID
EfiUtils::SleepExecution(IN ULONG_PTR Milliseconds)
{
    XtLoader::GetEfiSystemTable()->BootServices->Stall(Milliseconds * 1000);
}

/**
 * Executes a loaded EFI image entry point.
 *
 * @param ImageHandle
 *        Provides a handle of loaded image, that will be started.
 *
 * @return This routine returns a status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::StartEfiImage(IN EFI_HANDLE ImageHandle)
{
    return XtLoader::GetEfiSystemTable()->BootServices->StartImage(ImageHandle, NULLPTR, NULLPTR);
}

/**
 * Waits for one or more EFI events.
 *
 * @param NumberOfEvents
 *        Supplies the number of events to wait for.
 *
 * @param Event
 *        Supplies the array of events to wait for.
 *
 * @param Index
 *        Receives the index of the event that was signaled.
 *
 * @return This routine returns status code.
 *
 * @since XT 1.0
 */
XTCDECL
EFI_STATUS
EfiUtils::WaitForEfiEvent(IN UINT_PTR NumberOfEvents,
                          IN PEFI_EVENT Event,
                          OUT PUINT_PTR Index)
{
    return XtLoader::GetEfiSystemTable()->BootServices->WaitForEvent(NumberOfEvents, Event, Index);
}


================================================
FILE: boot/xtldr/includes/libxtos.hh
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/includes/libxtos.hh
 * DESCRIPTION:     XT Loader to LIBXTOS interface
 * DEVELOPERS:      Aiken Harris <harraiken91@gmail.com>
 */

#ifndef __XTLDR_LIBXTOS_HH
#define __XTLDR_LIBXTOS_HH

#include <xtblapi.h>


/* Minimal forward references for AR classes used by XTLDR */
namespace AR
{
    class CpuFunctions
    {
        public:
            STATIC XTCDECL BOOLEAN CpuId(IN OUT PCPUID_REGISTERS Registers);
            STATIC XTCDECL ULONG_PTR ReadControlRegister(IN USHORT ControlRegister);
            STATIC XTCDECL ULONGLONG ReadModelSpecificRegister(IN ULONG Register);
            STATIC XTCDECL VOID WriteControlRegister(IN USHORT ControlRegister,
                                                     IN UINT_PTR Value);
    };

    class ProcessorSupport
    {
        public:
            STATIC XTAPI VOID GetTrampolineInformation(IN TRAMPOLINE_TYPE TrampolineType,
                                                       OUT PVOID *TrampolineCode,
                                                       OUT PULONG_PTR TrampolineSize);
    };
}

/* Minimal forward references for HL classes used by XTLDR */
namespace HL
{
    class ComPort
    {
        public:
            STATIC XTCDECL XTSTATUS InitializeComPort(IN OUT PCPPORT Port,
                                                      IN PUCHAR PortAddress,
                                                      IN ULONG BaudRate);
            STATIC XTCDECL XTSTATUS WriteComPort(IN PCPPORT Port,
                                                 IN UCHAR Byte);
    };

    class IoPort
    {
        public:
            STATIC XTCDECL UCHAR ReadPort8(IN USHORT Port);
            STATIC XTCDECL USHORT ReadPort16(IN USHORT Port);
            STATIC XTCDECL ULONG ReadPort32(IN USHORT Port);
            STATIC XTCDECL VOID WritePort8(IN USHORT Port,
                                           IN UCHAR Value);
            STATIC XTCDECL VOID WritePort16(IN USHORT Port,
                                            IN USHORT Value);
            STATIC XTCDECL VOID WritePort32(IN USHORT Port,
                                            IN ULONG Value);
    };
}

/* Minimal forward references for RTL classes used by XTLDR */
namespace RTL
{
    class Guid
    {
        public:
            STATIC XTAPI BOOLEAN CompareGuids(IN PGUID Guid1,
                                              IN PGUID Guid2);
    };

    class LinkedList
    {
        public:
            STATIC XTCDECL VOID InitializeListHead(IN PLIST_ENTRY ListHead);
            STATIC XTCDECL VOID InsertHeadList(IN OUT PLIST_ENTRY ListHead,
                                               IN PLIST_ENTRY Entry);
            STATIC XTCDECL VOID InsertTailList(IN OUT PLIST_ENTRY ListHead,
                                               IN PLIST_ENTRY Entry);
            STATIC XTCDECL VOID RemoveEntryList(IN PLIST_ENTRY Entry);
    };

    class Memory
    {
        public:
            STATIC XTAPI SIZE_T CompareMemory(IN PCVOID LeftBuffer,
                                              IN PCVOID RightBuffer,
                                              IN SIZE_T Length);
            STATIC XTAPI VOID CopyMemory(OUT PVOID Destination,
                                         IN PCVOID Source,
                                         IN SIZE_T Length);
            STATIC XTAPI VOID MoveMemory(OUT PVOID Destination,
                                         IN PCVOID Source,
                                         IN SIZE_T Length);
            STATIC XTAPI VOID SetMemory(OUT PVOID Destination,
                                        IN UCHAR Byte,
                                        IN SIZE_T Length);
            STATIC XTAPI VOID ZeroMemory(OUT PVOID Destination,
                                         IN SIZE_T Length);
    };

    class String
    {
        public:
            STATIC XTAPI SIZE_T CompareString(IN PCSTR String1,
                                              IN PCSTR String2,
                                              IN SIZE_T Length);
            STATIC XTAPI SIZE_T StringLength(IN PCSTR String,
                                             IN SIZE_T MaxLength);
            STATIC XTAPI SIZE_T StringToWideString(OUT PWCHAR Destination,
                                                   IN PCSTR *Source,
                                                   IN SIZE_T Length);
            STATIC XTAPI PCHAR TrimString(IN PCHAR String);
    };

    class WideString
    {
        public:
            STATIC XTAPI SIZE_T CompareWideString(IN PCWSTR String1,
                                                  IN PCWSTR String2,
                                                  IN SIZE_T Length);
            STATIC XTAPI SIZE_T CompareWideStringInsensitive(IN PCWSTR String1,
                                                             IN PCWSTR String2,
                                                             IN SIZE_T Length);
            STATIC XTAPI PWCHAR ConcatenateWideString(OUT PWCHAR Destination,
                                                      IN PWCHAR Source,
                                                      IN SIZE_T Count);
            STATIC XTAPI XTSTATUS FormatWideString(IN PRTL_PRINT_CONTEXT Context,
                                                   IN PCWSTR Format,
                                                   IN VA_LIST ArgumentList);
            STATIC XTAPI PWCHAR TokenizeWideString(IN PWCHAR String,
                                                   IN PCWSTR Delimiter,
                                                   IN OUT PWCHAR *SavePtr);
            STATIC XTAPI SIZE_T WideStringLength(IN PCWSTR String,
                                                 IN SIZE_T MaxLength);
    };
}

#endif /* __XTLDR_LIBXTOS_HH */


================================================
FILE: boot/xtldr/includes/xtldr.hh
================================================
/**
 * PROJECT:         ExectOS
 * COPYRIGHT:       See COPYING.md in the top level directory
 * FILE:            xtldr/includes/xtldr.hh
 * DESCRIPTION:     Top level header for XTLDR
 * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org>
 */

#ifndef __XTLDR_XTLDR_HH
#define __XTLDR_XTLDR_HH

#include <xtblapi.h>
#include <xtver.h>

#include <libxtos.hh>


class BiosUtils
{
    private:
        STATIC USHORT CursorX;
        STATIC USHORT CursorY;
        STATIC CONST USHORT VgaHeight;
        STATIC CONST USHORT VgaWidth;

    public:
        STATIC XTCDECL VOID ClearScreen();
        STATIC XTCDECL VOID Print(IN PCWSTR Format,
                                  IN ...);
        STATIC XTCDECL XTSTATUS PutChar(IN WCHAR Character);

    private:
        STATIC XTCDECL VOID ScrollScreen();
        STATIC XTCDECL VOID UpdateCursor();
};

class BootUtils
{
    public:
        STATIC XTCDECL BOOLEAN GetBooleanParameter(IN PCWSTR Parameters,
                                                   IN PCWSTR Needle);
};

class Configuration
{
    private:
        STATIC PLIST_ENTRY BootMenuList;
        STATIC LIST_ENTRY Config;
        STATIC LIST_ENTRY ConfigSections;
        STATIC PCWSTR EditableConfigOptions[];

    public:
        STATIC XTCDECL BOOLEAN GetBooleanValue(IN PCWSTR ConfigName);
        STATIC XTCDECL EFI_STATUS GetBootOptionValue(IN PLIST_ENTRY Options,
                                                     IN PCWSTR OptionName,
                                                     OUT PWCHAR *OptionValue);
        STATIC XTCDECL VOID GetEditableOptions(OUT PCWSTR **OptionsArray,
                                               OUT PULONG OptionsCount);
        STATIC XTCDECL EFI_STATUS GetValue(IN PCWSTR ConfigName,
                                           OUT PWCHAR *ConfigValue);
        STATIC XTCDECL EFI_STATUS InitializeBootMenuList(IN ULONG MaxNameLength,
                                                         OUT PXTBL_BOOTMENU_ITEM *MenuEntries,
                                                         OUT PULONG EntriesCount,
                                                         OUT PULONG DefaultId);
        STATIC XTCDECL VOID InitializeConfiguration();
        STATIC XTCDECL EFI_STATUS LoadConfiguration();
        STATIC XTCDECL EFI_STATUS ParseCommandLine();
        STATIC XTCDECL EFI_STATUS SetBootOptionValue(IN PLIST_ENTRY Options,
                                                     IN PCWSTR OptionName,
                                                     IN PCWSTR OptionValue);

    private:
        STATIC XTCDECL EFI_STATUS ParseConfigFile(IN CONST PCHAR RawConfig,
                                                  OUT PLIST_ENTRY Configuration);
        STATIC XTCDECL EFI_STATUS ReadConfigFile(IN PCWSTR ConfigDirectory,
                                                 IN PCWSTR ConfigFile,
                                                 OUT PCHAR *ConfigData);
        STATIC XTCDECL EFI_STATUS SetValue(IN PCWSTR ConfigName,
                                           IN PCWSTR ConfigValue);
        STATIC XTCDECL VOID UpdateConfiguration(IN PLIST_ENTRY NewConfig);
};

class Console
{
    public:
        STATIC XTCDECL VOID ClearLine(IN ULONGLONG LineNo);
        STATIC XTCDECL VOID ClearScreen();
        STATIC XTCDECL VOID DisableCursor();
        STATIC XTCDECL VOID EnableCursor();
        STATIC XTCDECL VOID InitializeConsole();
        STATIC XTCDECL VOID Print(IN PCWSTR Format,
                                  IN ...);
        STATIC XTCDECL XTSTATUS PutChar(IN WCHAR Character);
        STATIC XTCDECL VOID QueryMode(OUT PUINT_PTR ResX,
                                      OUT PUINT_PTR ResY);
        STATIC XTCDECL EFI_STATUS ReadKeyStroke(OUT PEFI_INPUT_KEY Key);
        STATIC XTCDECL VOID ResetInputBuffer();
        STATIC XTCDECL VOID SetAttributes(IN ULONGLONG Attributes);
        STATIC XTCDECL VOID SetCursorPosition(IN ULONGLONG PosX,
                                              IN ULONGLONG PosY);
        STATIC XTCDECL VOID Write(IN PCWSTR String);

    private:
        STATIC XTCDECL EFI_STATUS SetMode(IN ULONGLONG Mode);
};

class Debug
{
    private:
        STATIC ULONG ComPortList[COMPORT_COUNT];
        STATIC ULONG EnabledDebugPorts;
        STATIC CPPORT SerialPort;

    public:
            STATIC XTCDECL EFI_STATUS InitializeDebugConsole();
            STATIC XTCDECL VOID Print(IN PCWSTR Format,
                                      IN ...);
            STATIC XTCDECL XTSTATUS PutChar(IN WCHAR Character);
            STATIC XTCDECL BOOLEAN SerialPortReady();

    private:
        STATIC XTCDECL EFI_STATUS ActivateSerialIOController();
        STATIC XTCDECL EFI_STATUS InitializeSerialPort(IN ULONG PortNumber,
                                                       IN ULONG PortAddress,
                                                       IN ULONG BaudRate);
};

class EfiUtils
{
    public:
        STATIC XTCDECL EFI_STATUS EnterFirmwareSetup();
        STATIC XTCDECL EFI_STATUS ExitBootServices();
        STATIC XTCDECL EFI_STATUS GetConfigurationTable(IN PEFI_GUID TableGuid,
                                                       OUT PVOID *Table);
        STATIC XTCDECL EFI_STATUS GetEfiVariable(IN PEFI_GUID Vendor,
                                                 IN PCWSTR VariableName,
                                                 OUT PVOID *VariableValue);
        STATIC XTCDECL ULONGLONG GetRandomValue(IN OUT PULONGLONG RNGBuffer);
        STATIC XTCDECL INT_PTR GetSecureBootStatus();
        STATIC XTCDECL EFI_STATUS InitializeEntropy(PULONGLONG RNGBuffer);
        STATIC XTCDECL EFI_STATUS LoadEfiImage(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
                                               IN PVOID ImageData,
                                               IN SIZE_T ImageSize,
                                               OUT PEFI_HANDLE ImageHandle);
        STATIC XTCDECL EFI_STATUS RebootSystem();
        STATIC XTCDECL EFI_STATUS SetEfiVariable(IN PEFI_GUID Vendor,
                                                 IN PCWSTR VariableName,
                                                 IN PVOID VariableValue,
                                                 IN UINT_PTR Size);
        STATIC XTCDECL EFI_STATUS ShutdownSystem();
        STATIC XTCDECL VOID SleepExecution(IN ULONG_PTR Milliseconds);
        STATIC XTCDECL EFI_STATUS StartEfiImage(IN EFI_HANDLE ImageHandle);
        STATIC XTCDECL EFI_STATUS WaitForEfiEvent(IN UINT_PTR NumberOfEvents,
                                                  IN PEFI_EVENT Event,
                                                  OUT PUINT_PTR Index);
};

class Memory
{
    public:
        STATIC XTCDECL EFI_STATUS AllocatePages(IN EFI_ALLOCATE_TYPE AllocationType,
                                                IN ULONGLONG NumberOfPages,
                                                OUT PEFI_PHYSICAL_ADDRESS Memory);
        STATIC XTCDECL EFI_STATUS AllocatePool(IN UINT_PTR Size,
                                               OUT PVOID *Memory);
        STATIC XTCDECL EFI_STATUS BuildPageMap(IN PXTBL_PAGE_MAPPING PageMap,
                                               IN ULONG_PTR SelfMapAddress);
        STATIC XTCDECL EFI_STATUS CommitPageMap(IN PXTBL_PAGE_MAPPING PageMap);
        STATIC XTCDECL EFI_STATUS FreePages(IN ULONGLONG NumberOfPages,
                                            IN EFI_PHYSICAL_ADDRESS Memory);
        STATIC XTCDECL EFI_STATUS FreePool(IN PVOID Memory);
        STATIC XTCDECL VOID GetMappingsCount(IN PXTBL_PAGE_MAPPING PageMap,
                                             OUT PULONG NumberOfMappings);
        STATIC XTCDECL EFI_STATUS GetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap);
        STATIC XTCDECL PVOID GetVirtualAddress(IN PXTBL_PAGE_MAPPING PageMap,
                                               IN PVOID PhysicalAddress);
        
Download .txt
gitextract_3qi0z4ew/

├── .clangd
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CMakeLists.txt
├── CONTRIBUTING.md
├── COPYING.md
├── ExectOS.code-workspace
├── README.md
├── boot/
│   ├── CMakeLists.txt
│   ├── bootdata/
│   │   ├── CMakeLists.txt
│   │   └── xtldr/
│   │       ├── CMakeLists.txt
│   │       └── xtldr.ini
│   ├── bootsect/
│   │   ├── CMakeLists.txt
│   │   ├── amd64/
│   │   │   └── cpu.S
│   │   ├── espboot.S
│   │   ├── i686/
│   │   │   └── cpu.S
│   │   └── mbrboot.S
│   └── xtldr/
│       ├── CMakeLists.txt
│       ├── README.md
│       ├── arch/
│       │   ├── amd64/
│       │   │   └── memory.cc
│       │   └── i686/
│       │       └── memory.cc
│       ├── biosutil.cc
│       ├── bootutil.cc
│       ├── config.cc
│       ├── console.cc
│       ├── data.cc
│       ├── debug.cc
│       ├── efiutils.cc
│       ├── includes/
│       │   ├── libxtos.hh
│       │   └── xtldr.hh
│       ├── library/
│       │   └── modproto.cc
│       ├── memory.cc
│       ├── modules/
│       │   ├── CMakeLists.txt
│       │   ├── acpi/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── acpi.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── acpi.hh
│       │   ├── beep/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── beep.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── beep.hh
│       │   ├── chainldr/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── chainldr.cc
│       │   │   ├── data.cc
│       │   │   └── includes/
│       │   │       └── chainldr.hh
│       │   ├── dummy/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── dummy.cc
│       │   │   └── includes/
│       │   │       └── dummy.hh
│       │   ├── framebuf/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── framebuf.cc
│       │   │   └── includes/
│       │   │       └── framebuf.hh
│       │   ├── pecoff/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── data.cc
│       │   │   ├── includes/
│       │   │   │   └── pecoff.hh
│       │   │   └── pecoff.cc
│       │   └── xtos_o/
│       │       ├── CMakeLists.txt
│       │       ├── amd64/
│       │       │   └── memory.cc
│       │       ├── data.cc
│       │       ├── i686/
│       │       │   └── memory.cc
│       │       ├── includes/
│       │       │   └── xtos.hh
│       │       └── xtos.cc
│       ├── protocol.cc
│       ├── shell.cc
│       ├── textui.cc
│       ├── volume.cc
│       └── xtldr.cc
├── configure.ps1
├── configure.sh
├── drivers/
│   ├── CMakeLists.txt
│   └── ntosdrv/
│       ├── CMakeLists.txt
│       ├── ntosdrv.cc
│       ├── ntosdrv.spec
│       └── rtl.cc
├── sdk/
│   ├── CMakeLists.txt
│   ├── cmake/
│   │   ├── README.md
│   │   ├── baseaddress/
│   │   │   ├── amd64.cmake
│   │   │   └── i686.cmake
│   │   ├── emulation.cmake
│   │   ├── functions.cmake
│   │   ├── toolchain.cmake
│   │   ├── version/
│   │   │   └── xtver.h.cmake
│   │   ├── version.cmake
│   │   └── xtchain.cmake
│   ├── firmware/
│   │   ├── README.md
│   │   ├── bochsrc_amd64.cfg
│   │   ├── bochsrc_i686.cfg
│   │   ├── ovmf_amd64.fd
│   │   └── ovmf_i686.fd
│   ├── xtadk/
│   │   ├── CMakeLists.txt
│   │   ├── amd64/
│   │   │   └── ke.cc
│   │   ├── i686/
│   │   │   └── ke.cc
│   │   └── includes/
│   │       └── adkdefs.h
│   └── xtdk/
│       ├── README.md
│       ├── amd64/
│       │   ├── artypes.h
│       │   ├── hlfuncs.h
│       │   ├── hltypes.h
│       │   ├── ketypes.h
│       │   ├── mmtypes.h
│       │   └── xtstruct.h
│       ├── blfuncs.h
│       ├── bltarget.h
│       ├── bltypes.h
│       ├── exfuncs.h
│       ├── extypes.h
│       ├── hlfuncs.h
│       ├── hltypes.h
│       ├── i686/
│       │   ├── artypes.h
│       │   ├── hlfuncs.h
│       │   ├── hltypes.h
│       │   ├── ketypes.h
│       │   ├── mmtypes.h
│       │   └── xtstruct.h
│       ├── iotypes.h
│       ├── kdfuncs.h
│       ├── kdtypes.h
│       ├── kefuncs.h
│       ├── ketypes.h
│       ├── ldrtypes.h
│       ├── mmfuncs.h
│       ├── mmtypes.h
│       ├── potypes.h
│       ├── pstypes.h
│       ├── rtlfuncs.h
│       ├── rtltypes.h
│       ├── xtbase.h
│       ├── xtblapi.h
│       ├── xtcompat.h
│       ├── xtdebug.h
│       ├── xtdefs.h
│       ├── xtfont.h
│       ├── xtfw.h
│       ├── xtglyph.h
│       ├── xtguid.h
│       ├── xtimage.h
│       ├── xtkmapi.h
│       ├── xtstatus.h
│       ├── xtstruct.h
│       ├── xttarget.h
│       ├── xttypes.h
│       └── xtuefi.h
└── xtoskrnl/
    ├── CMakeLists.txt
    ├── README.md
    ├── ar/
    │   ├── amd64/
    │   │   ├── archsup.S
    │   │   ├── cpufunc.cc
    │   │   ├── data.cc
    │   │   ├── procsup.cc
    │   │   └── traps.cc
    │   └── i686/
    │       ├── archsup.S
    │       ├── cpufunc.cc
    │       ├── data.cc
    │       ├── procsup.cc
    │       └── traps.cc
    ├── ex/
    │   ├── exports.cc
    │   └── rundown.cc
    ├── hl/
    │   ├── acpi.cc
    │   ├── amd64/
    │   │   ├── cpu.cc
    │   │   ├── firmware.cc
    │   │   ├── ioport.cc
    │   │   ├── irq.cc
    │   │   ├── pic.cc
    │   │   ├── rtc.cc
    │   │   ├── runlevel.cc
    │   │   └── timer.cc
    │   ├── cport.cc
    │   ├── data.cc
    │   ├── exports.cc
    │   ├── fbdev.cc
    │   ├── i686/
    │   │   ├── cpu.cc
    │   │   ├── firmware.cc
    │   │   ├── ioport.cc
    │   │   ├── irq.cc
    │   │   ├── pic.cc
    │   │   ├── rtc.cc
    │   │   ├── runlevel.cc
    │   │   └── timer.cc
    │   ├── init.cc
    │   ├── ioreg.cc
    │   └── x86/
    │       ├── cpu.cc
    │       ├── firmware.cc
    │       ├── pic.cc
    │       ├── rtc.cc
    │       └── timer.cc
    ├── includes/
    │   ├── ar/
    │   │   ├── amd64/
    │   │   │   ├── asmsup.hh
    │   │   │   ├── cpufunc.hh
    │   │   │   ├── procsup.hh
    │   │   │   └── traps.hh
    │   │   └── i686/
    │   │       ├── asmsup.hh
    │   │       ├── cpufunc.hh
    │   │       ├── procsup.hh
    │   │       └── traps.hh
    │   ├── ar.hh
    │   ├── ex/
    │   │   └── rundown.hh
    │   ├── ex.hh
    │   ├── hl/
    │   │   ├── acpi.hh
    │   │   ├── cport.hh
    │   │   ├── cpu.hh
    │   │   ├── fbdev.hh
    │   │   ├── firmware.hh
    │   │   ├── init.hh
    │   │   ├── ioport.hh
    │   │   ├── ioreg.hh
    │   │   ├── irq.hh
    │   │   ├── pic.hh
    │   │   ├── rtc.hh
    │   │   ├── runlevel.hh
    │   │   └── timer.hh
    │   ├── hl.hh
    │   ├── kd/
    │   │   ├── dbg.hh
    │   │   └── dbgio.hh
    │   ├── kd.hh
    │   ├── ke/
    │   │   ├── apc.hh
    │   │   ├── bootinfo.hh
    │   │   ├── crash.hh
    │   │   ├── dispatch.hh
    │   │   ├── dpc.hh
    │   │   ├── event.hh
    │   │   ├── guard.hh
    │   │   ├── kprocess.hh
    │   │   ├── krnlinit.hh
    │   │   ├── kthread.hh
    │   │   ├── kubsan.hh
    │   │   ├── proc.hh
    │   │   ├── runlevel.hh
    │   │   ├── semphore.hh
    │   │   ├── shdata.hh
    │   │   ├── spinlock.hh
    │   │   ├── sysres.hh
    │   │   ├── systime.hh
    │   │   └── timer.hh
    │   ├── ke.hh
    │   ├── mm/
    │   │   ├── alloc.hh
    │   │   ├── amd64/
    │   │   │   ├── pagemap.hh
    │   │   │   ├── paging.hh
    │   │   │   └── pte.hh
    │   │   ├── colors.hh
    │   │   ├── guard.hh
    │   │   ├── hlpool.hh
    │   │   ├── i686/
    │   │   │   ├── pagemap.hh
    │   │   │   ├── paging.hh
    │   │   │   └── pte.hh
    │   │   ├── kpool.hh
    │   │   ├── mmgr.hh
    │   │   ├── pfault.hh
    │   │   ├── pfn.hh
    │   │   └── pool.hh
    │   ├── mm.hh
    │   ├── po/
    │   │   └── idle.hh
    │   ├── po.hh
    │   ├── rtl/
    │   │   ├── amd64/
    │   │   │   └── intrin.hh
    │   │   ├── atomic.hh
    │   │   ├── bitmap.hh
    │   │   ├── dispatch.hh
    │   │   ├── endian.hh
    │   │   ├── guid.hh
    │   │   ├── i686/
    │   │   │   └── intrin.hh
    │   │   ├── llist.hh
    │   │   ├── math.hh
    │   │   ├── memory.hh
    │   │   ├── sha1.hh
    │   │   ├── slist.hh
    │   │   ├── string.hh
    │   │   ├── time.hh
    │   │   └── widestr.hh
    │   ├── rtl.hh
    │   └── xtos.hh
    ├── kd/
    │   ├── data.cc
    │   ├── dbgio.cc
    │   └── exports.cc
    ├── ke/
    │   ├── amd64/
    │   │   ├── dispatch.cc
    │   │   ├── krnlinit.cc
    │   │   ├── kthread.cc
    │   │   └── proc.cc
    │   ├── apc.cc
    │   ├── bootinfo.cc
    │   ├── crash.cc
    │   ├── data.cc
    │   ├── dispatch.cc
    │   ├── dpc.cc
    │   ├── event.cc
    │   ├── exports.cc
    │   ├── i686/
    │   │   ├── dispatch.cc
    │   │   ├── krnlinit.cc
    │   │   ├── kthread.cc
    │   │   └── proc.cc
    │   ├── kprocess.cc
    │   ├── krnlinit.cc
    │   ├── kthread.cc
    │   ├── kubsan.cc
    │   ├── runlevel.cc
    │   ├── semphore.cc
    │   ├── shdata.cc
    │   ├── spinlock.cc
    │   ├── sysres.cc
    │   ├── systime.cc
    │   └── timer.cc
    ├── mm/
    │   ├── alloc.cc
    │   ├── amd64/
    │   │   ├── mmgr.cc
    │   │   ├── pagemap.cc
    │   │   ├── paging.cc
    │   │   ├── pfault.cc
    │   │   ├── pfn.cc
    │   │   ├── pool.cc
    │   │   └── pte.cc
    │   ├── colors.cc
    │   ├── data.cc
    │   ├── exports.cc
    │   ├── hlpool.cc
    │   ├── i686/
    │   │   ├── mmgr.cc
    │   │   ├── pagemap.cc
    │   │   ├── paging.cc
    │   │   ├── pfault.cc
    │   │   ├── pfn.cc
    │   │   ├── pool.cc
    │   │   └── pte.cc
    │   ├── kpool.cc
    │   ├── mmgr.cc
    │   ├── paging.cc
    │   ├── pfn.cc
    │   ├── pool.cc
    │   └── pte.cc
    ├── po/
    │   └── idle.cc
    ├── rtl/
    │   ├── amd64/
    │   │   ├── dispatch.cc
    │   │   ├── exsup.cc
    │   │   └── intrin.cc
    │   ├── atomic.cc
    │   ├── bitmap.cc
    │   ├── data.cc
    │   ├── endian.cc
    │   ├── exports.cc
    │   ├── guid.cc
    │   ├── i686/
    │   │   ├── dispatch.cc
    │   │   ├── exsup.cc
    │   │   └── intrin.cc
    │   ├── llist.cc
    │   ├── math.cc
    │   ├── memory.cc
    │   ├── sha1.cc
    │   ├── slist.cc
    │   ├── string.cc
    │   ├── time.cc
    │   └── widestr.cc
    └── xtoskrnl.spec
Download .txt
SYMBOL INDEX (2810 symbols across 231 files)

FILE: boot/xtldr/arch/amd64/memory.cc
  function XTCDECL (line 26) | XTCDECL
  function XTCDECL (line 133) | XTCDECL
  function XTCDECL (line 193) | XTCDECL
  function XTCDECL (line 268) | XTCDECL
  function XTCDECL (line 370) | XTCDECL

FILE: boot/xtldr/arch/i686/memory.cc
  function XTCDECL (line 23) | XTCDECL
  function XTCDECL (line 184) | XTCDECL
  function XTCDECL (line 245) | XTCDECL
  function XTCDECL (line 358) | XTCDECL
  function XTCDECL (line 462) | XTCDECL

FILE: boot/xtldr/biosutil.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 57) | XTCDECL
  function XTCDECL (line 88) | XTCDECL
  function XTCDECL (line 143) | XTCDECL
  function XTCDECL (line 174) | XTCDECL

FILE: boot/xtldr/bootutil.cc
  function XTCDECL (line 25) | XTCDECL

FILE: boot/xtldr/config.cc
  function XTCDECL (line 23) | XTCDECL
  function XTCDECL (line 62) | XTCDECL
  function XTCDECL (line 131) | XTCDECL
  function XTCDECL (line 161) | XTCDECL
  function XTCDECL (line 231) | XTCDECL
  function XTCDECL (line 372) | XTCDECL
  function XTCDECL (line 387) | XTCDECL
  function XTCDECL (line 459) | XTCDECL
  function XTCDECL (line 580) | XTCDECL
  function XTCDECL (line 782) | XTCDECL
  function XTCDECL (line 841) | XTCDECL
  function XTCDECL (line 955) | XTCDECL
  function XTCDECL (line 1022) | XTCDECL

FILE: boot/xtldr/console.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 47) | XTCDECL
  function XTCDECL (line 62) | XTCDECL
  function XTCDECL (line 76) | XTCDECL
  function XTCDECL (line 90) | XTCDECL
  function XTCDECL (line 126) | XTCDECL
  function XTCDECL (line 169) | XTCDECL
  function XTCDECL (line 204) | XTCDECL
  function XTCDECL (line 223) | XTCDECL
  function XTCDECL (line 242) | XTCDECL
  function XTCDECL (line 259) | XTCDECL
  function XTCDECL (line 279) | XTCDECL
  function XTCDECL (line 297) | XTCDECL
  function XTCDECL (line 314) | XTCDECL

FILE: boot/xtldr/debug.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 123) | XTCDECL
  function XTCDECL (line 255) | XTCDECL
  function XTCDECL (line 331) | XTCDECL
  function XTCDECL (line 378) | XTCDECL
  function XTCDECL (line 397) | XTCDECL

FILE: boot/xtldr/efiutils.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 70) | XTCDECL
  function XTCDECL (line 134) | XTCDECL
  function XTCDECL (line 175) | XTCDECL
  function XTCDECL (line 220) | XTCDECL
  function XTCDECL (line 240) | XTCDECL
  function XTCDECL (line 276) | XTCDECL
  function XTCDECL (line 329) | XTCDECL
  function XTCDECL (line 348) | XTCDECL
  function XTCDECL (line 375) | XTCDECL
  function XTCDECL (line 397) | XTCDECL
  function XTCDECL (line 415) | XTCDECL
  function XTCDECL (line 432) | XTCDECL
  function XTCDECL (line 455) | XTCDECL

FILE: boot/xtldr/includes/libxtos.hh
  type AR (line 16) | namespace AR
    class CpuFunctions (line 18) | class CpuFunctions
    class ProcessorSupport (line 28) | class ProcessorSupport
  type HL (line 38) | namespace HL
    class ComPort (line 40) | class ComPort
    class IoPort (line 50) | class IoPort
  type RTL (line 66) | namespace RTL
    class Guid (line 68) | class Guid
    class LinkedList (line 75) | class LinkedList
    class Memory (line 86) | class Memory
    class String (line 105) | class String
    class WideString (line 119) | class WideString

FILE: boot/xtldr/includes/xtldr.hh
  class BiosUtils (line 18) | class BiosUtils
  class BootUtils (line 37) | class BootUtils
  class Configuration (line 44) | class Configuration
  class Console (line 83) | class Console
  class Debug (line 107) | class Debug
  class EfiUtils (line 128) | class EfiUtils
  class Memory (line 158) | class Memory
  class Protocol (line 211) | class Protocol
  class Shell (line 254) | class Shell
  class TextUi (line 299) | class TextUi
  class Volume (line 344) | class Volume
  class XtLoader (line 386) | class XtLoader

FILE: boot/xtldr/library/modproto.cc
  function XTCLINK (line 28) | XTCLINK

FILE: boot/xtldr/memory.cc
  function XTCDECL (line 25) | XTCDECL
  function XTCDECL (line 48) | XTCDECL
  function XTCDECL (line 70) | XTCDECL
  function XTCDECL (line 88) | XTCDECL
  function XTCDECL (line 106) | XTCDECL
  function XTCDECL (line 157) | XTCDECL
  function XTCDECL (line 176) | XTCDECL
  function XTCDECL (line 245) | XTCDECL
  function XTCDECL (line 296) | XTCDECL
  function XTCDECL (line 330) | XTCDECL
  function XTCDECL (line 505) | XTCDECL
  function XTCDECL (line 697) | XTCDECL
  function XTCDECL (line 726) | XTCDECL

FILE: boot/xtldr/modules/acpi/acpi.cc
  function XTCDECL (line 29) | XTCDECL
  function XTCDECL (line 71) | XTCDECL
  function XTCDECL (line 185) | XTCDECL
  function XTCDECL (line 222) | XTCDECL
  function XTCDECL (line 254) | XTCDECL
  function XTCDECL (line 286) | XTCDECL
  function XTCDECL (line 318) | XTCDECL
  function XTCDECL (line 353) | XTCDECL
  function XTCDECL (line 395) | XTCDECL
  function XTCDECL (line 432) | XTCDECL

FILE: boot/xtldr/modules/acpi/includes/acpi.hh
  class Acpi (line 16) | class Acpi

FILE: boot/xtldr/modules/beep/beep.cc
  function XTCDECL (line 26) | XTCDECL
  function XTCDECL (line 47) | XTCDECL
  function XTCDECL (line 89) | XTCDECL
  function XTCDECL (line 123) | XTCDECL
  function XTCDECL (line 195) | XTCDECL
  function XTCDECL (line 231) | XTCDECL

FILE: boot/xtldr/modules/beep/includes/beep.hh
  class Beep (line 16) | class Beep

FILE: boot/xtldr/modules/chainldr/chainldr.cc
  function XTCDECL (line 29) | XTCDECL
  function XTCDECL (line 140) | XTCDECL
  function XTCDECL (line 179) | XTCDECL

FILE: boot/xtldr/modules/chainldr/includes/chainldr.hh
  class ChainLoader (line 16) | class ChainLoader

FILE: boot/xtldr/modules/dummy/dummy.cc
  function XTCDECL (line 29) | XTCDECL
  function XTCDECL (line 49) | XTCDECL
  function XTCDECL (line 88) | XTCDECL

FILE: boot/xtldr/modules/dummy/includes/dummy.hh
  class Dummy (line 16) | class Dummy

FILE: boot/xtldr/modules/framebuf/framebuf.cc
  function XTCDECL (line 29) | XTCDECL
  function XTCDECL (line 139) | XTCDECL
  function XTCDECL (line 185) | XTCDECL
  function XTCDECL (line 213) | XTCDECL
  function XTCDECL (line 254) | XTCDECL
  function XTCDECL (line 340) | XTCDECL
  function XTCDECL (line 431) | XTCDECL
  function XTCDECL (line 482) | XTCDECL
  function XTCDECL (line 645) | XTCDECL
  function XTCDECL (line 689) | XTCDECL
  function XTCDECL (line 803) | XTCDECL

FILE: boot/xtldr/modules/framebuf/includes/framebuf.hh
  class FrameBuffer (line 15) | class FrameBuffer

FILE: boot/xtldr/modules/pecoff/includes/pecoff.hh
  class PeCoff (line 16) | class PeCoff

FILE: boot/xtldr/modules/pecoff/pecoff.cc
  function XTCDECL (line 32) | XTCDECL
  function XTCDECL (line 78) | XTCDECL
  function XTCDECL (line 113) | XTCDECL
  function XTCDECL (line 148) | XTCDECL
  function XTCDECL (line 186) | XTCDECL
  function XTCDECL (line 253) | XTCDECL
  function XTCDECL (line 299) | XTCDECL
  function XTCDECL (line 345) | XTCDECL
  function XTCDECL (line 397) | XTCDECL
  function XTCDECL (line 641) | XTCDECL
  function XTCDECL (line 694) | XTCDECL
  function XTCDECL (line 818) | XTCDECL
  function XTCDECL (line 853) | XTCDECL
  function XTCDECL (line 916) | XTCDECL

FILE: boot/xtldr/modules/xtos_o/amd64/memory.cc
  function XTCDECL (line 13) | XTCDECL
  function XTCDECL (line 48) | XTCDECL
  function XTCDECL (line 66) | XTCDECL
  function XTCDECL (line 112) | XTCDECL
  function XTCDECL (line 194) | XTCDECL

FILE: boot/xtldr/modules/xtos_o/i686/memory.cc
  function XTCDECL (line 12) | XTCDECL
  function XTCDECL (line 60) | XTCDECL
  function XTCDECL (line 78) | XTCDECL
  function XTCDECL (line 113) | XTCDECL
  function XTCDECL (line 166) | XTCDECL

FILE: boot/xtldr/modules/xtos_o/includes/xtos.hh
  class Xtos (line 23) | class Xtos

FILE: boot/xtldr/modules/xtos_o/xtos.cc
  function XTCDECL (line 30) | XTCDECL
  function XTCDECL (line 163) | XTCDECL
  function XTCDECL (line 191) | XTCDECL
  function XTCDECL (line 234) | XTCDECL
  function XTCDECL (line 328) | XTCDECL
  function XTCDECL (line 372) | XTCDECL
  function XTCDECL (line 514) | XTCDECL
  function XTCDECL (line 562) | XTCDECL
  function XTCDECL (line 637) | XTCDECL
  function XTCDECL (line 780) | XTCDECL

FILE: boot/xtldr/protocol.cc
  function XTCDECL (line 25) | XTCDECL
  function XTCDECL (line 47) | XTCDECL
  function XTCDECL (line 86) | XTCDECL
  function XTCDECL (line 94) | XTCDECL
  function XTCDECL (line 116) | XTCDECL
  function XTCDECL (line 141) | XTCDECL
  function XTCDECL (line 289) | XTCDECL
  function XTCDECL (line 556) | XTCDECL
  function XTCDECL (line 607) | XTCDECL
  function XTCDECL (line 633) | XTCDECL
  function XTCDECL (line 701) | XTCDECL
  function XTCDECL (line 725) | XTCDECL
  function XTCDECL (line 784) | XTCDECL
  function XTCDECL (line 903) | XTCDECL
  function XTCDECL (line 1022) | XTCDECL

FILE: boot/xtldr/shell.cc
  function XTCDECL (line 27) | XTCDECL
  function XTCDECL (line 49) | XTCDECL
  function XTCDECL (line 93) | XTCDECL
  function XTCDECL (line 130) | XTCDECL
  function XTCDECL (line 181) | XTCDECL
  function XTCDECL (line 208) | XTCDECL
  function XTCDECL (line 247) | XTCDECL
  function XTCDECL (line 279) | XTCDECL
  function XTCDECL (line 327) | XTCDECL
  function XTCDECL (line 442) | XTCDECL
  function XTCDECL (line 475) | XTCDECL
  function XTCDECL (line 532) | XTCDECL
  function XTCDECL (line 796) | XTCDECL
  function XTCDECL (line 851) | XTCDECL
  function XTCDECL (line 872) | XTCDECL

FILE: boot/xtldr/textui.cc
  function XTCDECL (line 26) | XTCDECL
  function XTCDECL (line 140) | XTCDECL
  function XTCDECL (line 508) | XTCDECL
  function XTCDECL (line 762) | XTCDECL
  function XTCDECL (line 815) | XTCDECL
  function XTCDECL (line 871) | XTCDECL
  function XTCDECL (line 1084) | XTCDECL
  function XTCDECL (line 1119) | XTCDECL
  function XTCDECL (line 1185) | XTCDECL
  function XTCDECL (line 1236) | XTCDECL
  function XTCDECL (line 1370) | XTCDECL
  function XTCDECL (line 1420) | XTCDECL
  function XTCDECL (line 1513) | XTCDECL
  function XTCDECL (line 1581) | XTCDECL
  function XTCDECL (line 1633) | XTCDECL
  function XTCDECL (line 1701) | XTCDECL
  function XTCDECL (line 1800) | XTCDECL

FILE: boot/xtldr/volume.cc
  function XTCDECL (line 23) | XTCDECL
  function XTCDECL (line 48) | XTCDECL
  function XTCDECL (line 259) | XTCDECL
  function XTCDECL (line 340) | XTCDECL
  function XTCDECL (line 393) | XTCDECL
  function XTCDECL (line 522) | XTCDECL
  function XTCDECL (line 610) | XTCDECL
  function XTCDECL (line 720) | XTCDECL
  function XTCDECL (line 827) | XTCDECL
  function XTCDECL (line 989) | XTCDECL
  function XTCDECL (line 1055) | XTCDECL
  function XTCDECL (line 1101) | XTCDECL

FILE: boot/xtldr/xtldr.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 34) | XTCDECL
  function XTCDECL (line 48) | XTCDECL
  function XTCDECL (line 62) | XTCDECL
  function XTCDECL (line 82) | XTCDECL
  function XTCDECL (line 98) | XTCDECL
  function XTCDECL (line 112) | XTCDECL
  function XTCDECL (line 186) | XTCDECL
  function XTCDECL (line 201) | XTCDECL
  function XTCDECL (line 231) | XTCDECL

FILE: drivers/ntosdrv/ntosdrv.cc
  function XTCLINK (line 19) | XTCLINK

FILE: drivers/ntosdrv/rtl.cc
  function XTCLINK (line 28) | XTCLINK

FILE: sdk/xtadk/amd64/ke.cc
  function XTCLINK (line 20) | XTCLINK

FILE: sdk/xtadk/i686/ke.cc
  function XTCLINK (line 20) | XTCLINK

FILE: sdk/xtdk/amd64/artypes.h
  type CPU_VENDOR (line 136) | typedef enum _CPU_VENDOR
  type CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT (line 144) | typedef enum _CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT
  type CPUID_FEATURES_EXTENDED (line 156) | typedef enum _CPUID_FEATURES_EXTENDED
  type CPUID_FEATURES_LEAF6 (line 197) | typedef enum _CPUID_FEATURES_POWER_MANAGEMENT
  type CPUID_FEATURES_STANDARD1 (line 214) | typedef enum _CPUID_FEATURES_STANDARD1
  type CPUID_FEATURES_STANDARD7_LEAF0 (line 280) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF0
  type CPUID_FEATURES_STANDARD7_LEAF1 (line 367) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF1
  type CPUID_REQUESTS (line 411) | typedef enum _CPUID_REQUESTS
  type VOID (line 428) | typedef VOID (*PINTERRUPT_HANDLER)(PKTRAP_FRAME TrapFrame);
  type CPU_IDENTIFICATION (line 431) | typedef struct _CPU_IDENTIFICATION
  type CPUID_REGISTERS (line 443) | typedef struct _CPUID_REGISTERS
  type CPU_SIGNATURE (line 454) | typedef struct _CPUID_SIGNATURE
  type TRAMPOLINE_TYPE (line 466) | typedef enum _TRAMPOLINE_TYPE

FILE: sdk/xtdk/amd64/hltypes.h
  type APIC_DEST_MODE (line 180) | typedef enum _APIC_DEST_MODE
  type APIC_DM (line 187) | typedef enum _APIC_DM
  type APIC_DSH (line 200) | typedef enum _APIC_DSH
  type APIC_MODE (line 209) | typedef enum _APIC_MODE
  type APIC_REGISTER (line 216) | typedef enum _APIC_REGISTER
  type APIC_TIMER_DIVISOR (line 254) | typedef enum _APIC_TIMER_DIVISOR
  type PIC_I8259_ICW1_INTERRUPT_MODE (line 267) | typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE
  type PIC_I8259_ICW1_INTERVAL (line 274) | typedef enum _PIC_I8259_ICW1_INTERVAL
  type PIC_I8259_ICW1_OPERATING_MODE (line 281) | typedef enum _PIC_I8259_ICW1_OPERATING_MODE
  type PIC_I8259_ICW4_BUFFERED_MODE (line 288) | typedef enum _PIC_I8259_ICW4_BUFFERED_MODE
  type PIC_I8259_ICW4_EOI_MODE (line 297) | typedef enum _PIC_I8259_ICW4_EOI_MODE
  type PIC_I8259_ICW4_SYSTEM_MODE (line 304) | typedef enum _PIC_I8259_ICW4_SYSTEM_MODE
  type TIMER_TYPE (line 311) | typedef enum _TIMER_TYPE
  type APIC_BASE_REGISTER (line 322) | typedef union _APIC_BASE_REGISTER
  type APIC_COMMAND_REGISTER (line 338) | typedef union _APIC_COMMAND_REGISTER
  type APIC_LVT_REGISTER (line 363) | typedef union _APIC_LVT_REGISTER
  type APIC_SPURIOUS_REGISTER (line 382) | typedef union _APIC_SPURIOUS_REGISTER
  type IOAPIC_DATA (line 395) | typedef struct _IOAPIC_DATA
  type IOAPIC_REDIRECTION_REGISTER (line 405) | typedef union _IOAPIC_REDIRECTION_REGISTER
  type PIC_I8259_ICW1 (line 429) | typedef union _PIC_I8259_ICW1
  type PIC_I8259_ICW2 (line 444) | typedef union _PIC_I8259_ICW2
  type PIC_I8259_ICW3 (line 455) | typedef union _PIC_I8259_ICW3
  type PIC_I8259_ICW4 (line 480) | typedef union _PIC_I8259_ICW4
  type HPET_REGISTERS (line 494) | typedef struct _HPET_REGISTERS
  type TIMER_CAPABILITIES (line 515) | typedef struct _TIMER_CAPABILITIES

FILE: sdk/xtdk/amd64/ketypes.h
  type FLOATING_SAVE_AREA (line 202) | typedef struct _FLOATING_SAVE_AREA
  type _CONTEXT (line 216) | struct _CONTEXT
  type KDESCRIPTOR (line 291) | typedef struct _KDESCRIPTOR
  type KGDTENTRY (line 299) | typedef struct _KGDTENTRY
  type KIDTENTRY (line 331) | typedef struct _KIDTENTRY
  type PACKED (line 353) | typedef struct _KTSS
  type KEXCEPTION_FRAME (line 366) | typedef struct _KEXCEPTION_FRAME
  type KSTART_FRAME (line 402) | typedef struct _KSTART_FRAME
  type KSWITCH_FRAME (line 413) | typedef struct _KSWITCH_FRAME
  type KTRAP_FRAME (line 428) | typedef struct _KTRAP_FRAME
  type KTHREAD_INIT_FRAME (line 488) | typedef struct _KTHREAD_INIT_FRAME
  type KSPECIAL_REGISTERS (line 498) | typedef struct _KSPECIAL_REGISTERS
  type PROCESSOR_START_BLOCK (line 530) | typedef struct _PROCESSOR_START_BLOCK
  type KPROCESSOR_STATE (line 541) | typedef struct _KPROCESSOR_STATE
  type KPROCESSOR_CONTROL_BLOCK (line 548) | typedef struct _KPROCESSOR_CONTROL_BLOCK
  type KPROCESSOR_BLOCK (line 571) | typedef struct _KPROCESSOR_BLOCK
  type THREAD_ENVIRONMENT_BLOCK (line 600) | typedef struct _THREAD_ENVIRONMENT_BLOCK

FILE: sdk/xtdk/amd64/mmtypes.h
  type PAGE_SIZE (line 130) | typedef enum _PAGE_SIZE
  type HARDWARE_PTE (line 138) | typedef struct _HARDWARE_PTE
  type MMPAGEMAP_INFO (line 159) | typedef struct _MMPAGEMAP_INFO
  type MMPTE_HARDWARE (line 171) | typedef struct _MMPTE_HARDWARE
  type MMPTE_HARDWARE_LARGEPAGE (line 192) | typedef struct _MMPTE_HARDWARE_LARGEPAGE
  type MMPTE_LIST (line 213) | typedef struct _MMPTE_LIST
  type MMPTE_PROTOTYPE (line 226) | typedef struct _MMPTE_PROTOTYPE
  type MMPTE_SOFTWARE (line 238) | typedef struct _MMPTE_SOFTWARE
  type MMPTE_SUBSECTION (line 251) | typedef struct _MMPTE_SUBSECTION
  type MMPTE_TRANSITION (line 262) | typedef struct _MMPTE_TRANSITION
  type MMPTE (line 277) | typedef union _MMPTE
  type MMPFN (line 290) | typedef struct _MMPFN
  type POOL_DESCRIPTOR (line 337) | typedef struct _POOL_DESCRIPTOR

FILE: sdk/xtdk/amd64/xtstruct.h
  type APIC_DEST_MODE (line 19) | typedef enum _APIC_DEST_MODE APIC_DEST_MODE, *PAPIC_DEST_MODE;
  type APIC_DM (line 20) | typedef enum _APIC_DM APIC_DM, *PAPIC_DM;
  type APIC_DSH (line 21) | typedef enum _APIC_DSH APIC_DSH, *PAPIC_DSH;
  type APIC_MODE (line 22) | typedef enum _APIC_MODE APIC_MODE, *PAPIC_MODE;
  type APIC_REGISTER (line 23) | typedef enum _APIC_REGISTER APIC_REGISTER, *PAPIC_REGISTER;
  type APIC_TIMER_DIVISOR (line 24) | typedef enum _APIC_TIMER_DIVISOR APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR;
  type CPU_VENDOR (line 25) | typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR;
  type CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT (line 26) | typedef enum _CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT CPUID_FEATURES_AD...
  type CPUID_FEATURES_EXTENDED (line 27) | typedef enum _CPUID_FEATURES_EXTENDED CPUID_FEATURES_EXTENDED, *PCPUID_F...
  type CPUID_FEATURES_POWER_MANAGEMENT (line 28) | typedef enum _CPUID_FEATURES_POWER_MANAGEMENT CPUID_FEATURES_POWER_MANAG...
  type CPUID_FEATURES_STANDARD1 (line 29) | typedef enum _CPUID_FEATURES_STANDARD1 CPUID_FEATURES_STANDARD1, *PCPUID...
  type CPUID_FEATURES_STANDARD7_LEAF0 (line 30) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF0 CPUID_FEATURES_STANDARD7_LE...
  type CPUID_FEATURES_STANDARD7_LEAF1 (line 31) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF1 CPUID_FEATURES_STANDARD7_LE...
  type CPUID_REQUESTS (line 32) | typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
  type PAGE_SIZE (line 33) | typedef enum _PAGE_SIZE PAGE_SIZE, *PPAGE_SIZE;
  type PIC_I8259_ICW1_INTERRUPT_MODE (line 34) | typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE PIC_I8259_ICW1_INTERRUPT_MOD...
  type PIC_I8259_ICW1_INTERVAL (line 35) | typedef enum _PIC_I8259_ICW1_INTERVAL PIC_I8259_ICW1_INTERVAL, *PPIC_I82...
  type PIC_I8259_ICW1_OPERATING_MODE (line 36) | typedef enum _PIC_I8259_ICW1_OPERATING_MODE PIC_I8259_ICW1_OPERATING_MOD...
  type PIC_I8259_ICW4_BUFFERED_MODE (line 37) | typedef enum _PIC_I8259_ICW4_BUFFERED_MODE PIC_I8259_ICW4_BUFFERED_MODE,...
  type PIC_I8259_ICW4_EOI_MODE (line 38) | typedef enum _PIC_I8259_ICW4_EOI_MODE PIC_I8259_ICW4_EOI_MODE, *PPIC_I82...
  type PIC_I8259_ICW4_SYSTEM_MODE (line 39) | typedef enum _PIC_I8259_ICW4_SYSTEM_MODE PIC_I8259_ICW4_SYSTEM_MODE, *PP...
  type TIMER_TYPE (line 40) | typedef enum _TIMER_TYPE TIMER_TYPE, *PTIMER_TYPE;
  type TRAMPOLINE_TYPE (line 41) | typedef enum _TRAMPOLINE_TYPE TRAMPOLINE_TYPE, *PTRAMPOLINE_TYPE;
  type CONTEXT (line 44) | typedef struct _CONTEXT CONTEXT, *PCONTEXT;
  type CPU_IDENTIFICATION (line 45) | typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICAT...
  type CPUID_REGISTERS (line 46) | typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
  type CPUID_SIGNATURE (line 47) | typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
  type FLOATING_SAVE_AREA (line 48) | typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_A...
  type HARDWARE_PTE (line 49) | typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE;
  type HPET_REGISTERS (line 50) | typedef struct _HPET_REGISTERS HPET_REGISTERS, *PHPET_REGISTERS;
  type IOAPIC_DATA (line 51) | typedef struct _IOAPIC_DATA IOAPIC_DATA, *PIOAPIC_DATA;
  type KDESCRIPTOR (line 52) | typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR;
  type KEXCEPTION_FRAME (line 53) | typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
  type KGDTENTRY (line 54) | typedef struct _KGDTENTRY KGDTENTRY, *PKGDTENTRY;
  type KIDTENTRY (line 55) | typedef struct _KIDTENTRY KIDTENTRY, *PKIDTENTRY;
  type KPROCESSOR_BLOCK (line 56) | typedef struct _KPROCESSOR_BLOCK KPROCESSOR_BLOCK, *PKPROCESSOR_BLOCK;
  type KPROCESSOR_CONTROL_BLOCK (line 57) | typedef struct _KPROCESSOR_CONTROL_BLOCK KPROCESSOR_CONTROL_BLOCK, *PKPR...
  type KPROCESSOR_STATE (line 58) | typedef struct _KPROCESSOR_STATE KPROCESSOR_STATE, *PKPROCESSOR_STATE;
  type KSPECIAL_REGISTERS (line 59) | typedef struct _KSPECIAL_REGISTERS KSPECIAL_REGISTERS, *PKSPECIAL_REGIST...
  type KSTART_FRAME (line 60) | typedef struct _KSTART_FRAME KSTART_FRAME, *PKSTART_FRAME;
  type KSWITCH_FRAME (line 61) | typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME;
  type KTHREAD_INIT_FRAME (line 62) | typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FR...
  type KTRAP_FRAME (line 63) | typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME;
  type KTSS (line 64) | typedef struct _KTSS KTSS, *PKTSS;
  type MMPAGEMAP_INFO (line 65) | typedef struct _MMPAGEMAP_INFO MMPAGEMAP_INFO, *PMMPAGEMAP_INFO;
  type MMPFN (line 66) | typedef struct _MMPFN MMPFN, *PMMPFN;
  type MMPTE_HARDWARE (line 67) | typedef struct _MMPTE_HARDWARE MMPTE_HARDWARE, *PMMPTE_HARDWARE;
  type MMPTE_HARDWARE_LARGEPAGE (line 68) | typedef struct _MMPTE_HARDWARE_LARGEPAGE MMPTE_HARDWARE_LARGEPAGE, *PMMP...
  type MMPTE_LIST (line 69) | typedef struct _MMPTE_LIST MMPTE_LIST, *PMMPTE_LIST;
  type MMPTE_PROTOTYPE (line 70) | typedef struct _MMPTE_PROTOTYPE MMPTE_PROTOTYPE, *PMMPTE_PROTOTYPE;
  type MMPTE_SOFTWARE (line 71) | typedef struct _MMPTE_SOFTWARE MMPTE_SOFTWARE, *PMMPTE_SOFTWARE;
  type MMPTE_SUBSECTION (line 72) | typedef struct _MMPTE_SUBSECTION MMPTE_SUBSECTION, *PMMPTE_SUBSECTION;
  type MMPTE_TRANSITION (line 73) | typedef struct _MMPTE_TRANSITION MMPTE_TRANSITION, *PMMPTE_TRANSITION;
  type POOL_DESCRIPTOR (line 74) | typedef struct _POOL_DESCRIPTOR POOL_DESCRIPTOR, *PPOOL_DESCRIPTOR;
  type THREAD_ENVIRONMENT_BLOCK (line 75) | typedef struct _THREAD_ENVIRONMENT_BLOCK THREAD_ENVIRONMENT_BLOCK, *PTHR...
  type TIMER_CAPABILITIES (line 76) | typedef struct _TIMER_CAPABILITIES TIMER_CAPABILITIES, *PTIMER_CAPABILIT...
  type APIC_BASE_REGISTER (line 79) | typedef union _APIC_BASE_REGISTER APIC_BASE_REGISTER, *PAPIC_BASE_REGISTER;
  type APIC_COMMAND_REGISTER (line 80) | typedef union _APIC_COMMAND_REGISTER APIC_COMMAND_REGISTER, *PAPIC_COMMA...
  type APIC_LVT_REGISTER (line 81) | typedef union _APIC_LVT_REGISTER APIC_LVT_REGISTER, *PAPIC_LVT_REGISTER;
  type APIC_SPURIOUS_REGISTER (line 82) | typedef union _APIC_SPURIOUS_REGISTER APIC_SPURIOUS_REGISTER, *PAPIC_SPU...
  type IOAPIC_REDIRECTION_REGISTER (line 83) | typedef union _IOAPIC_REDIRECTION_REGISTER IOAPIC_REDIRECTION_REGISTER, ...
  type MMP5E (line 84) | typedef union _MMPTE MMP5E, *PMMP5E;
  type MMPDE (line 85) | typedef union _MMPTE MMPDE, *PMMPDE;
  type MMPPE (line 86) | typedef union _MMPTE MMPPE, *PMMPPE;
  type MMPTE (line 87) | typedef union _MMPTE MMPTE, *PMMPTE;
  type MMPXE (line 88) | typedef union _MMPTE MMPXE, *PMMPXE;
  type PIC_I8259_ICW1 (line 89) | typedef union _PIC_I8259_ICW1 PIC_I8259_ICW1, *PPIC_I8259_ICW1;
  type PIC_I8259_ICW2 (line 90) | typedef union _PIC_I8259_ICW2 PIC_I8259_ICW2, *PPIC_I8259_ICW2;
  type PIC_I8259_ICW3 (line 91) | typedef union _PIC_I8259_ICW3 PIC_I8259_ICW3, *PPIC_I8259_ICW3;
  type PIC_I8259_ICW4 (line 92) | typedef union _PIC_I8259_ICW4 PIC_I8259_ICW4, *PPIC_I8259_ICW4;

FILE: sdk/xtdk/bltypes.h
  type XTBL_BOOT_PARAMETERS (line 182) | typedef struct _XTBL_BOOT_PARAMETERS
  type XTBL_BOOTMENU_ITEM (line 196) | typedef struct _XTBL_BOOTMENU_ITEM
  type XTBL_CONFIG_ENTRY (line 205) | typedef struct _XTBL_CONFIG_ENTRY
  type XTBL_CONFIG_SECTION (line 213) | typedef struct _XTBL_CONFIG_SECTION
  type XTBL_DIALOG_HANDLE (line 221) | typedef struct _XTBL_DIALOG_HANDLE
  type XTBL_KNOWN_BOOT_PROTOCOL (line 235) | typedef struct _XTBL_KNOWN_BOOT_PROTOCOL
  type XTBL_SHELL_COMMAND (line 243) | typedef struct _XTBL_SHELL_COMMAND
  type XTBL_MEMORY_MAPPING (line 252) | typedef struct _XTBL_MEMORY_MAPPING
  type XTBL_MODULE_AUTHORS (line 262) | typedef struct _XTBL_MODULE_AUTHORS
  type XTBL_MODULE_DEPS (line 269) | typedef struct _XTBL_MODULE_DEPS
  type XTBL_MODULE_INFO (line 276) | typedef struct _XTBL_MODULE_INFO
  type XTBL_PAGE_MAPPING (line 292) | typedef struct _XTBL_PAGE_MAPPING
  type XTBL_STATUS (line 302) | typedef struct _XTBL_STATUS
  type XTBL_FRAMEBUFFER_MODE_INFORMATION (line 311) | typedef struct _XTBL_FRAMEBUFFER_MODE_INFORMATION
  type XTBL_FRAMEBUFFER_INFORMATION (line 336) | typedef struct _XTBL_FRAMEBUFFER_INFORMATION
  type XTBL_ACPI_PROTOCOL (line 353) | typedef struct _XTBL_ACPI_PROTOCOL
  type XTBL_BOOT_PROTOCOL (line 365) | typedef struct _XTBL_BOOT_PROTOCOL
  type XTBL_EXECUTABLE_IMAGE_PROTOCOL (line 371) | typedef struct _XTBL_EXECUTABLE_IMAGE_PROTOCOL
  type XTBL_FRAMEBUFFER_PROTOCOL (line 387) | typedef struct _XTBL_FRAMEBUFFER_PROTOCOL
  type XTBL_LOADER_PROTOCOL (line 397) | typedef struct _XTBL_LOADER_PROTOCOL

FILE: sdk/xtdk/extypes.h
  type EX_RUNDOWN_REFERENCE (line 25) | typedef struct _EX_RUNDOWN_REFERENCE
  type EX_RUNDOWN_WAIT_BLOCK (line 35) | typedef struct _EX_RUNDOWN_WAIT_BLOCK

FILE: sdk/xtdk/hltypes.h
  type GENERIC_ADDRESS (line 219) | typedef struct _GENERIC_ADDRESS
  type ACPI_DESCRIPTION_HEADER (line 229) | typedef struct _ACPI_DESCRIPTION_HEADER
  type ACPI_SUBTABLE_HEADER (line 243) | typedef struct _ACPI_SUBTABLE_HEADER
  type ACPI_CACHE_LIST (line 250) | typedef struct _ACPI_CACHE_LIST
  type ACPI_RSDP (line 257) | typedef struct _ACPI_RSDP
  type ACPI_RSDT (line 271) | typedef struct _ACPI_RSDT
  type ACPI_XSDT (line 278) | typedef struct _ACPI_XSDT
  type ACPI_FADT (line 285) | typedef struct _ACPI_FADT
  type ACPI_HPET (line 345) | typedef struct _ACPI_HPET
  type ACPI_MADT (line 356) | typedef struct _ACPI_MADT
  type ACPI_MADT_INTERRUPT_OVERRIDE (line 365) | typedef struct _ACPI_MADT_INTERRUPT_OVERRIDE
  type ACPI_MADT_IOAPIC (line 375) | typedef struct _ACPI_MADT_IOAPIC
  type ACPI_MADT_LOCAL_APIC (line 385) | typedef struct _ACPI_MADT_LOCAL_APIC
  type ACPI_MADT_LOCAL_X2APIC (line 394) | typedef struct _ACPI_MADT_LOCAL_X2APIC
  type ACPI_SYSTEM_INFO (line 404) | typedef struct _ACPI_SYSTEM_INFO
  type ACPI_TIMER_INFO (line 421) | typedef struct _ACPI_TIMER_INFO
  type CPPORT (line 428) | typedef struct _CPPORT
  type HL_FRAMEBUFFER_DATA (line 437) | typedef struct _HL_FRAMEBUFFER_DATA
  type HL_SCROLL_REGION_DATA (line 462) | typedef struct _HL_SCROLL_REGION_DATA
  type PROCESSOR_IDENTITY (line 477) | typedef struct _PROCESSOR_IDENTITY
  type SMBIOS_TABLE_HEADER (line 487) | typedef struct _SMBIOS_TABLE_HEADER
  type SMBIOS3_TABLE_HEADER (line 506) | typedef struct _SMBIOS3_TABLE_HEADER
  type TIMER_ROUTINES (line 521) | typedef struct _TIMER_ROUTINES

FILE: sdk/xtdk/i686/artypes.h
  type CPU_VENDOR (line 101) | typedef enum _CPU_VENDOR
  type CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT (line 109) | typedef enum _CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT
  type CPUID_FEATURES_EXTENDED (line 121) | typedef enum _CPUID_FEATURES_EXTENDED
  type CPUID_FEATURES_LEAF6 (line 162) | typedef enum _CPUID_FEATURES_POWER_MANAGEMENT
  type CPUID_FEATURES_STANDARD1 (line 179) | typedef enum _CPUID_FEATURES_STANDARD1
  type CPUID_FEATURES_STANDARD7_LEAF0 (line 245) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF0
  type CPUID_FEATURES_STANDARD7_LEAF1 (line 332) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF1
  type CPUID_REQUESTS (line 376) | typedef enum _CPUID_REQUESTS
  type VOID (line 393) | typedef VOID (*PINTERRUPT_HANDLER)(PKTRAP_FRAME TrapFrame);
  type CPU_IDENTIFICATION (line 396) | typedef struct _CPU_IDENTIFICATION
  type CPUID_REGISTERS (line 408) | typedef struct _CPUID_REGISTERS
  type CPU_SIGNATURE (line 419) | typedef struct _CPUID_SIGNATURE
  type TRAMPOLINE_TYPE (line 431) | typedef enum _TRAMPOLINE_TYPE

FILE: sdk/xtdk/i686/hltypes.h
  type APIC_DEST_MODE (line 188) | typedef enum _APIC_DEST_MODE
  type APIC_DM (line 195) | typedef enum _APIC_DM
  type APIC_DSH (line 208) | typedef enum _APIC_DSH
  type APIC_MODE (line 217) | typedef enum _APIC_MODE
  type APIC_REGISTER (line 224) | typedef enum _APIC_REGISTER
  type APIC_TIMER_DIVISOR (line 262) | typedef enum _APIC_TIMER_DIVISOR
  type PIC_I8259_ICW1_INTERRUPT_MODE (line 275) | typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE
  type PIC_I8259_ICW1_INTERVAL (line 282) | typedef enum _PIC_I8259_ICW1_INTERVAL
  type PIC_I8259_ICW1_OPERATING_MODE (line 289) | typedef enum _PIC_I8259_ICW1_OPERATING_MODE
  type PIC_I8259_ICW4_BUFFERED_MODE (line 296) | typedef enum _PIC_I8259_ICW4_BUFFERED_MODE
  type PIC_I8259_ICW4_EOI_MODE (line 305) | typedef enum _PIC_I8259_ICW4_EOI_MODE
  type PIC_I8259_ICW4_SYSTEM_MODE (line 312) | typedef enum _PIC_I8259_ICW4_SYSTEM_MODE
  type TIMER_TYPE (line 319) | typedef enum _TIMER_TYPE
  type APIC_BASE_REGISTER (line 330) | typedef union _APIC_BASE_REGISTER
  type APIC_COMMAND_REGISTER (line 346) | typedef union _APIC_COMMAND_REGISTER
  type APIC_LVT_REGISTER (line 371) | typedef union _APIC_LVT_REGISTER
  type APIC_SPURIOUS_REGISTER (line 390) | typedef union _APIC_SPURIOUS_REGISTER
  type IOAPIC_DATA (line 403) | typedef struct _IOAPIC_DATA
  type IOAPIC_REDIRECTION_REGISTER (line 413) | typedef union _IOAPIC_REDIRECTION_REGISTER
  type PIC_I8259_ICW1 (line 437) | typedef union _PIC_I8259_ICW1
  type PIC_I8259_ICW2 (line 452) | typedef union _PIC_I8259_ICW2
  type PIC_I8259_ICW3 (line 463) | typedef union _PIC_I8259_ICW3
  type PIC_I8259_ICW4 (line 488) | typedef union _PIC_I8259_ICW4
  type HPET_REGISTERS (line 502) | typedef struct _HPET_REGISTERS
  type TIMER_CAPABILITIES (line 523) | typedef struct _TIMER_CAPABILITIES

FILE: sdk/xtdk/i686/ketypes.h
  type FN_SAVE_FORMAT (line 223) | typedef struct _FN_SAVE_FORMAT
  type FX_SAVE_FORMAT (line 237) | typedef struct _FX_SAVE_FORMAT
  type FX_SAVE_AREA (line 256) | typedef struct _FX_SAVE_AREA
  type CONTEXT (line 268) | typedef struct _CONTEXT
  type KDESCRIPTOR (line 298) | typedef struct _KDESCRIPTOR
  type KGDTENTRY (line 306) | typedef struct _KGDTENTRY
  type KIDTENTRY (line 336) | typedef struct _KIDTENTRY
  type KIIO_ACCESS_MAP (line 356) | typedef struct _KIIO_ACCESS_MAP
  type KTSS (line 363) | typedef struct _KTSS
  type KEXCEPTION_FRAME (line 403) | typedef struct _KEXCEPTION_FRAME
  type KSTART_FRAME (line 413) | typedef struct _KSTART_FRAME
  type KSWITCH_FRAME (line 422) | typedef struct _KSWITCH_FRAME
  type KTRAP_FRAME (line 430) | typedef struct _KTRAP_FRAME
  type KTHREAD_INIT_FRAME (line 462) | typedef struct _KTHREAD_INIT_FRAME
  type KSPECIAL_REGISTERS (line 471) | typedef struct _KSPECIAL_REGISTERS
  type PROCESSOR_START_BLOCK (line 491) | typedef struct _PROCESSOR_START_BLOCK
  type KPROCESSOR_STATE (line 502) | typedef struct _KPROCESSOR_STATE
  type KPROCESSOR_CONTROL_BLOCK (line 509) | typedef struct _KPROCESSOR_CONTROL_BLOCK
  type KPROCESSOR_BLOCK (line 530) | typedef struct _KPROCESSOR_BLOCK
  type THREAD_ENVIRONMENT_BLOCK (line 559) | typedef struct _THREAD_ENVIRONMENT_BLOCK

FILE: sdk/xtdk/i686/mmtypes.h
  type PAGE_SIZE (line 128) | typedef enum _PAGE_SIZE
  type HARDWARE_LEGACY_PTE (line 136) | typedef struct _HARDWARE_LEGACY_PTE
  type HARDWARE_MODERN_PTE (line 154) | typedef struct _HARDWARE_MODERN_PTE
  type HARDWARE_PTE (line 175) | typedef union _HARDWARE_PTE
  type MMPAGEMAP_INFO (line 182) | typedef struct _MMPAGEMAP_INFO
  type MMPML2_PTE_HARDWARE (line 192) | typedef struct _MMPML2_PTE_HARDWARE
  type MMPML2_PTE_LIST (line 210) | typedef struct _MMPML2_PTE_LIST
  type MMPML2_PTE_PROTOTYPE (line 221) | typedef struct _MMPML2_PTE_PROTOTYPE
  type MMPML2_PTE_SOFTWARE (line 232) | typedef struct _MMPML2_PTE_SOFTWARE
  type MMPML2_PTE_SUBSECTION (line 243) | typedef struct _MMPML2_PTE_SUBSECTION
  type MMPML2_PTE_TRANSITION (line 254) | typedef struct _MMPML2_PTE_TRANSITION
  type MMPML2_PTE (line 268) | typedef union _MMPML2_PTE
  type MMPML3_PTE_HARDWARE (line 281) | typedef struct _MMPML3_PTE_HARDWARE
  type MMPML3_PTE_LIST (line 301) | typedef struct _MMPML3_PTE_LIST
  type MMPML3_PTE_PROTOTYPE (line 312) | typedef struct _MMPML3_PTE_PROTOTYPE
  type MMPML3_PTE_SOFTWARE (line 325) | typedef struct _MMPML3_PTE_SOFTWARE
  type MMPML3_PTE_SUBSECTION (line 337) | typedef struct _MMPML3_PTE_SUBSECTION
  type MMPML3_PTE_TRANSITION (line 348) | typedef struct _MMPML3_PTE_TRANSITION
  type MMPML3_PTE (line 363) | typedef union _MMPML3_PTE
  type MMPTE (line 376) | typedef union _MMPTE
  type MMPFN (line 383) | typedef struct _MMPFN
  type POOL_DESCRIPTOR (line 430) | typedef struct _POOL_DESCRIPTOR

FILE: sdk/xtdk/i686/xtstruct.h
  type APIC_DEST_MODE (line 19) | typedef enum _APIC_DEST_MODE APIC_DEST_MODE, *PAPIC_DEST_MODE;
  type APIC_DM (line 20) | typedef enum _APIC_DM APIC_DM, *PAPIC_DM;
  type APIC_DSH (line 21) | typedef enum _APIC_DSH APIC_DSH, *PAPIC_DSH;
  type APIC_MODE (line 22) | typedef enum _APIC_MODE APIC_MODE, *PAPIC_MODE;
  type APIC_REGISTER (line 23) | typedef enum _APIC_REGISTER APIC_REGISTER, *PAPIC_REGISTER;
  type APIC_TIMER_DIVISOR (line 24) | typedef enum _APIC_TIMER_DIVISOR APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR;
  type CPU_VENDOR (line 25) | typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR;
  type CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT (line 26) | typedef enum _CPUID_FEATURES_ADVANCED_POWER_MANAGEMENT CPUID_FEATURES_AD...
  type CPUID_FEATURES_EXTENDED (line 27) | typedef enum _CPUID_FEATURES_EXTENDED CPUID_FEATURES_EXTENDED, *PCPUID_F...
  type CPUID_FEATURES_POWER_MANAGEMENT (line 28) | typedef enum _CPUID_FEATURES_POWER_MANAGEMENT CPUID_FEATURES_POWER_MANAG...
  type CPUID_FEATURES_STANDARD1 (line 29) | typedef enum _CPUID_FEATURES_STANDARD1 CPUID_FEATURES_STANDARD1, *PCPUID...
  type CPUID_FEATURES_STANDARD7_LEAF0 (line 30) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF0 CPUID_FEATURES_STANDARD7_LE...
  type CPUID_FEATURES_STANDARD7_LEAF1 (line 31) | typedef enum _CPUID_FEATURES_STANDARD7_LEAF1 CPUID_FEATURES_STANDARD7_LE...
  type CPUID_REQUESTS (line 32) | typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
  type PAGE_SIZE (line 33) | typedef enum _PAGE_SIZE PAGE_SIZE, *PPAGE_SIZE;
  type PIC_I8259_ICW1_INTERRUPT_MODE (line 34) | typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE PIC_I8259_ICW1_INTERRUPT_MOD...
  type PIC_I8259_ICW1_INTERVAL (line 35) | typedef enum _PIC_I8259_ICW1_INTERVAL PIC_I8259_ICW1_INTERVAL, *PPIC_I82...
  type PIC_I8259_ICW1_OPERATING_MODE (line 36) | typedef enum _PIC_I8259_ICW1_OPERATING_MODE PIC_I8259_ICW1_OPERATING_MOD...
  type PIC_I8259_ICW4_BUFFERED_MODE (line 37) | typedef enum _PIC_I8259_ICW4_BUFFERED_MODE PIC_I8259_ICW4_BUFFERED_MODE,...
  type PIC_I8259_ICW4_EOI_MODE (line 38) | typedef enum _PIC_I8259_ICW4_EOI_MODE PIC_I8259_ICW4_EOI_MODE, *PPIC_I82...
  type PIC_I8259_ICW4_SYSTEM_MODE (line 39) | typedef enum _PIC_I8259_ICW4_SYSTEM_MODE PIC_I8259_ICW4_SYSTEM_MODE, *PP...
  type TIMER_TYPE (line 40) | typedef enum _TIMER_TYPE TIMER_TYPE, *PTIMER_TYPE;
  type TRAMPOLINE_TYPE (line 41) | typedef enum _TRAMPOLINE_TYPE TRAMPOLINE_TYPE, *PTRAMPOLINE_TYPE;
  type CONTEXT (line 44) | typedef struct _CONTEXT CONTEXT, *PCONTEXT;
  type CPU_IDENTIFICATION (line 45) | typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICAT...
  type CPUID_REGISTERS (line 46) | typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
  type CPUID_SIGNATURE (line 47) | typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
  type FN_SAVE_FORMAT (line 48) | typedef struct _FN_SAVE_FORMAT FN_SAVE_FORMAT, *PFN_SAVE_FORMAT;
  type FX_SAVE_AREA (line 49) | typedef struct _FX_SAVE_AREA FX_SAVE_AREA, *PFX_SAVE_AREA;
  type FX_SAVE_FORMAT (line 50) | typedef struct _FX_SAVE_FORMAT FX_SAVE_FORMAT, *PFX_SAVE_FORMAT;
  type HARDWARE_LEGACY_PTE (line 51) | typedef struct _HARDWARE_LEGACY_PTE HARDWARE_LEGACY_PTE, *PHARDWARE_LEGA...
  type HARDWARE_MODERN_PTE (line 52) | typedef struct _HARDWARE_MODERN_PTE HARDWARE_MODERN_PTE, *PHARDWARE_MODE...
  type HPET_REGISTERS (line 53) | typedef struct _HPET_REGISTERS HPET_REGISTERS, *PHPET_REGISTERS;
  type IOAPIC_DATA (line 54) | typedef struct _IOAPIC_DATA IOAPIC_DATA, *PIOAPIC_DATA;
  type KDESCRIPTOR (line 55) | typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR;
  type KEXCEPTION_FRAME (line 56) | typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
  type KGDTENTRY (line 57) | typedef struct _KGDTENTRY KGDTENTRY, *PKGDTENTRY;
  type KIDTENTRY (line 58) | typedef struct _KIDTENTRY KIDTENTRY, *PKIDTENTRY;
  type KIIO_ACCESS_MAP (line 59) | typedef struct _KIIO_ACCESS_MAP KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP;
  type KPROCESSOR_BLOCK (line 60) | typedef struct _KPROCESSOR_BLOCK KPROCESSOR_BLOCK, *PKPROCESSOR_BLOCK;
  type KPROCESSOR_CONTROL_BLOCK (line 61) | typedef struct _KPROCESSOR_CONTROL_BLOCK KPROCESSOR_CONTROL_BLOCK, *PKPR...
  type KPROCESSOR_STATE (line 62) | typedef struct _KPROCESSOR_STATE KPROCESSOR_STATE, *PKPROCESSOR_STATE;
  type KSPECIAL_REGISTERS (line 63) | typedef struct _KSPECIAL_REGISTERS KSPECIAL_REGISTERS, *PKSPECIAL_REGIST...
  type KSTART_FRAME (line 64) | typedef struct _KSTART_FRAME KSTART_FRAME, *PKSTART_FRAME;
  type KSWITCH_FRAME (line 65) | typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME;
  type KTHREAD_INIT_FRAME (line 66) | typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FR...
  type KTRAP_FRAME (line 67) | typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME;
  type KTSS (line 68) | typedef struct _KTSS KTSS, *PKTSS;
  type MMPAGEMAP_INFO (line 69) | typedef struct _MMPAGEMAP_INFO MMPAGEMAP_INFO, *PMMPAGEMAP_INFO;
  type MMPFN (line 70) | typedef struct _MMPFN MMPFN, *PMMPFN;
  type MMPML2_PTE_HARDWARE (line 71) | typedef struct _MMPML2_PTE_HARDWARE MMPML2_PTE_HARDWARE, *PMMPML2_PTE_HA...
  type MMPML2_PTE_LIST (line 72) | typedef struct _MMPML2_PTE_LIST MMPML2_PTE_LIST, *PMMPML2_PTE_LIST;
  type MMPML2_PTE_PROTOTYPE (line 73) | typedef struct _MMPML2_PTE_PROTOTYPE MMPML2_PTE_PROTOTYPE, *PMMPML2_PTE_...
  type MMPML2_PTE_SOFTWARE (line 74) | typedef struct _MMPML2_PTE_SOFTWARE MMPML2_PTE_SOFTWARE, *PMMPML2_PTE_SO...
  type MMPML2_PTE_SUBSECTION (line 75) | typedef struct _MMPML2_PTE_SUBSECTION MMPML2_PTE_SUBSECTION, *PMMPML2_PT...
  type MMPML2_PTE_TRANSITION (line 76) | typedef struct _MMPML2_PTE_TRANSITION MMPML2_PTE_TRANSITION, *PMMPML2_PT...
  type MMPML3_PTE_HARDWARE (line 77) | typedef struct _MMPML3_PTE_HARDWARE MMPML3_PTE_HARDWARE, *PMMPML3_PTE_HA...
  type MMPML3_PTE_LIST (line 78) | typedef struct _MMPML3_PTE_LIST MMPML3_PTE_LIST, *PMMPML3_PTE_LIST;
  type MMPML3_PTE_PROTOTYPE (line 79) | typedef struct _MMPML3_PTE_PROTOTYPE MMPML3_PTE_PROTOTYPE, *PMMPML3_PTE_...
  type MMPML3_PTE_SOFTWARE (line 80) | typedef struct _MMPML3_PTE_SOFTWARE MMPML3_PTE_SOFTWARE, *PMMPML3_PTE_SO...
  type MMPML3_PTE_SUBSECTION (line 81) | typedef struct _MMPML3_PTE_SUBSECTION MMPML3_PTE_SUBSECTION, *PMMPML3_PT...
  type MMPML3_PTE_TRANSITION (line 82) | typedef struct _MMPML3_PTE_TRANSITION MMPML3_PTE_TRANSITION, *PMMPML3_PT...
  type POOL_DESCRIPTOR (line 83) | typedef struct _POOL_DESCRIPTOR POOL_DESCRIPTOR, *PPOOL_DESCRIPTOR;
  type THREAD_ENVIRONMENT_BLOCK (line 84) | typedef struct _THREAD_ENVIRONMENT_BLOCK THREAD_ENVIRONMENT_BLOCK, *PTHR...
  type TIMER_CAPABILITIES (line 85) | typedef struct _TIMER_CAPABILITIES TIMER_CAPABILITIES, *PTIMER_CAPABILIT...
  type APIC_BASE_REGISTER (line 88) | typedef union _APIC_BASE_REGISTER APIC_BASE_REGISTER, *PAPIC_BASE_REGISTER;
  type APIC_COMMAND_REGISTER (line 89) | typedef union _APIC_COMMAND_REGISTER APIC_COMMAND_REGISTER, *PAPIC_COMMA...
  type APIC_LVT_REGISTER (line 90) | typedef union _APIC_LVT_REGISTER APIC_LVT_REGISTER, *PAPIC_LVT_REGISTER;
  type APIC_SPURIOUS_REGISTER (line 91) | typedef union _APIC_SPURIOUS_REGISTER APIC_SPURIOUS_REGISTER, *PAPIC_SPU...
  type HARDWARE_PTE (line 92) | typedef union _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE;
  type IOAPIC_REDIRECTION_REGISTER (line 93) | typedef union _IOAPIC_REDIRECTION_REGISTER IOAPIC_REDIRECTION_REGISTER, ...
  type MMPML2_PTE (line 94) | typedef union _MMPML2_PTE MMPML2_PTE, *PMMPML2_PTE;
  type MMPML3_PTE (line 95) | typedef union _MMPML3_PTE MMPML3_PTE, *PMMPML3_PTE;
  type MMPDE (line 96) | typedef union _MMPTE MMPDE, *PMMPDE;
  type MMPPE (line 97) | typedef union _MMPTE MMPPE, *PMMPPE;
  type MMPTE (line 98) | typedef union _MMPTE MMPTE, *PMMPTE;
  type PIC_I8259_ICW1 (line 99) | typedef union _PIC_I8259_ICW1 PIC_I8259_ICW1, *PPIC_I8259_ICW1;
  type PIC_I8259_ICW2 (line 100) | typedef union _PIC_I8259_ICW2 PIC_I8259_ICW2, *PPIC_I8259_ICW2;
  type PIC_I8259_ICW3 (line 101) | typedef union _PIC_I8259_ICW3 PIC_I8259_ICW3, *PPIC_I8259_ICW3;
  type PIC_I8259_ICW4 (line 102) | typedef union _PIC_I8259_ICW4 PIC_I8259_ICW4, *PPIC_I8259_ICW4;

FILE: sdk/xtdk/iotypes.h
  type PCI_BRIDGE_CONTROL_REGISTER (line 66) | typedef struct _PCI_BRIDGE_CONTROL_REGISTER
  type PCI_COMMON_HEADER (line 92) | typedef struct _PCI_COMMON_HEADER
  type PCI_COMMON_CONFIG (line 171) | typedef struct _PCI_COMMON_CONFIG
  type PCI_DEVICE_HEADER_TYPE_REGION (line 178) | typedef struct _PCI_DEVICE_HEADER_TYPE_REGION
  type PCI_DEVICE_INDEPENDENT_REGION (line 193) | typedef struct _PCI_DEVICE_INDEPENDENT_REGION
  type PCI_TYPE0_DEVICE (line 208) | typedef struct _PCI_TYPE0_DEVICE
  type PCI_TYPE1_DEVICE (line 215) | typedef struct _PCI_TYPE1_DEVICE

FILE: sdk/xtdk/kdtypes.h
  type VOID (line 30) | typedef VOID (*PKD_PRINT_ROUTINE)(IN PCWSTR Format, IN ...);
  type KD_DEBUG_MODE (line 33) | typedef struct _KD_DEBUG_MODE
  type KD_DISPATCH_TABLE (line 43) | typedef struct _KD_DISPATCH_TABLE

FILE: sdk/xtdk/ketypes.h
  type ADJUST_REASON (line 57) | typedef enum _ADJUST_REASON
  type EXCEPTION_DISPOSITION (line 65) | typedef enum _EXCEPTION_DISPOSITION
  type KAPC_ENVIRONMENT (line 74) | typedef enum _KAPC_ENVIRONMENT
  type KDPC_IMPORTANCE (line 83) | typedef enum _KDPC_IMPORTANCE
  type KEVENT_TYPE (line 92) | typedef enum _KEVENT_TYPE
  type KOBJECTS (line 99) | typedef enum _KOBJECTS
  type KPROCESS_STATE (line 130) | typedef enum _KPROCESS_STATE
  type KPROFILE_SOURCE (line 141) | typedef enum _KPROFILE_SOURCE
  type KTHREAD_STATE (line 172) | typedef enum _KTHREAD_STATE
  type KSPIN_LOCK_QUEUE_LEVEL (line 185) | typedef enum _KSPIN_LOCK_QUEUE_LEVEL
  type KTIMER_TYPE (line 209) | typedef enum _KTIMER_TYPE
  type MODE (line 216) | typedef enum _MODE
  type SYSTEM_RESOURCE_TYPE (line 224) | typedef enum _SYSTEM_RESOURCE_TYPE
  type WAIT_TYPE (line 232) | typedef enum _WAIT_TYPE
  type KUBSAN_DATA_TYPE (line 239) | typedef enum _KUBSAN_DATA_TYPE
  type EXCEPTION_RECORD (line 256) | typedef struct _EXCEPTION_RECORD
  type KAPC (line 267) | typedef struct _KAPC
  type KDPC (line 288) | typedef struct _KDPC
  type KDPC_DATA (line 303) | typedef struct _KDPC_DATA
  type KEVENT (line 312) | typedef struct _KEVENT
  type EXCEPTION_REGISTRATION_RECORD (line 318) | typedef struct _EXCEPTION_REGISTRATION_RECORD
  type KAPC_STATE (line 325) | typedef struct _KAPC_STATE
  type KGATE (line 335) | typedef struct _KGATE
  type KSEMAPHORE (line 341) | typedef struct _KSEMAPHORE
  type KSPIN_LOCK_QUEUE (line 348) | typedef struct _KSPIN_LOCK_QUEUE
  type KLOCK_QUEUE_HANDLE (line 355) | typedef struct _KLOCK_QUEUE_HANDLE
  type KQUEUE (line 362) | typedef struct _KQUEUE
  type KSERVICE_DESCRIPTOR_TABLE (line 372) | typedef struct _KSERVICE_DESCRIPTOR_TABLE
  type KTIMER (line 381) | typedef struct _KTIMER
  type KWAIT_BLOCK (line 391) | typedef struct _KWAIT_BLOCK
  type THREAD_INFORMATION_BLOCK (line 404) | typedef struct _THREAD_INFORMATION_BLOCK
  type KPROCESS (line 415) | typedef struct _KPROCESS
  type KSYSTEM_TIME (line 453) | typedef struct _KSYSTEM_TIME
  type KSHARED_DATA (line 461) | typedef struct _KSHARED_DATA
  type KTHREAD (line 476) | typedef struct _KTHREAD
  type SYSTEM_RESOURCE_HEADER (line 580) | typedef struct _SYSTEM_RESOURCE_HEADER
  type SYSTEM_RESOURCE_ACPI (line 591) | typedef struct _SYSTEM_RESOURCE_ACPI
  type SYSTEM_RESOURCE_FRAMEBUFFER (line 598) | typedef struct _SYSTEM_RESOURCE_FRAMEBUFFER
  type KUBSAN_SOURCE_LOCATION (line 623) | typedef struct _KUBSAN_SOURCE_LOCATION
  type KUBSAN_TYPE_DESCRIPTOR (line 638) | typedef struct _KUBSAN_TYPE_DESCRIPTOR
  type KUBSAN_FLOAT_CAST_OVERFLOW_DATA (line 646) | typedef struct _KUBSAN_FLOAT_CAST_OVERFLOW_DATA
  type KUBSAN_FUNCTION_TYPE_MISMATCH_DATA (line 654) | typedef struct _KUBSAN_FUNCTION_TYPE_MISMATCH_DATA
  type KUBSAN_INVALID_BUILTIN_DATA (line 661) | typedef struct _KUBSAN_INVALID_BUILTIN_DATA
  type KUBSAN_SHIFT_OUT_OF_BOUNDS_DATA (line 668) | typedef struct _KUBSAN_SHIFT_OUT_OF_BOUNDS_DATA
  type KUBSAN_OUT_OF_BOUNDS_DATA (line 676) | typedef struct _KUBSAN_OUT_OF_BOUNDS_DATA
  type KUBSAN_OVERFLOW_DATA (line 684) | typedef struct _KUBSAN_OVERFLOW_DATA
  type KUBSAN_TYPE_MISMATCH_DATA (line 691) | typedef struct _KUBSAN_TYPE_MISMATCH_DATA
  type KUBSAN_TYPE_MISMATCH_DATA_V1 (line 700) | typedef struct _KUBSAN_TYPE_MISMATCH_DATA_V1

FILE: sdk/xtdk/ldrtypes.h
  type LDR_DATA_TABLE_ENTRY (line 46) | typedef struct _LDR_DATA_TABLE_ENTRY

FILE: sdk/xtdk/mmtypes.h
  type MMPAGELISTS (line 63) | typedef enum _MMPAGELISTS
  type MMPFN_CACHE_ATTRIBUTE (line 76) | typedef enum _MMPFN_CACHE_ATTRIBUTE
  type MMPOOL_TYPE (line 85) | typedef enum _MMPOOL_TYPE
  type MMSYSTEM_PTE_POOL_TYPE (line 103) | typedef enum _MMSYSTEM_PTE_POOL_TYPE
  type CONST (line 111) | typedef CONST STRUCT _CMMPAGEMAP_ROUTINES
  type MMCOLOR_TABLES (line 120) | typedef struct _MMCOLOR_TABLES
  type MMFREE_POOL_ENTRY (line 128) | typedef struct _MMFREE_POOL_ENTRY
  type MMMEMORY_LAYOUT (line 136) | typedef struct _MMMEMORY_LAYOUT
  type MMPFNENTRY (line 180) | typedef struct _MMPFNENTRY
  type MMPFNLIST (line 195) | typedef struct _MMPFNLIST
  type PHYSICAL_MEMORY_RUN (line 204) | typedef struct _PHYSICAL_MEMORY_RUN
  type PHYSICAL_MEMORY_DESCRIPTOR (line 211) | typedef struct _PHYSICAL_MEMORY_DESCRIPTOR
  type POOL_HEADER (line 219) | typedef struct _POOL_HEADER
  type POOL_TRACKING_BIG_ALLOCATIONS (line 245) | typedef struct _POOL_TRACKING_BIG_ALLOCATIONS
  type POOL_TRACKING_TABLE (line 254) | typedef struct _POOL_TRACKING_TABLE

FILE: sdk/xtdk/potypes.h
  type PROCESSOR_IDLE_TIMES (line 25) | typedef struct _PROCESSOR_IDLE_TIMES
  type PROCESSOR_PERF_STATE (line 33) | typedef struct _PROCESSOR_PERF_STATE
  type PROCESSOR_POWER_STATE (line 49) | typedef struct _PROCESSOR_POWER_STATE

FILE: sdk/xtdk/pstypes.h
  type EPROCESS (line 20) | typedef struct _EPROCESS
  type ETHREAD (line 27) | typedef struct _ETHREAD

FILE: sdk/xtdk/rtltypes.h
  type XTSTATUS (line 68) | typedef XTSTATUS (*PWRITE_CHARACTER)(IN CHAR Character);
  type XTSTATUS (line 69) | typedef XTSTATUS (*PWRITE_WIDE_CHARACTER)(IN WCHAR Character);
  type RTL_VARIABLE_TYPE (line 72) | typedef enum _RTL_VARIABLE_TYPE
  type RTL_BITMAP (line 88) | typedef struct _RTL_BITMAP
  type RTL_PRINT_CONTEXT (line 95) | typedef struct _RTL_PRINT_CONTEXT
  type RTL_PRINT_FORMAT_PROPERTIES (line 103) | typedef struct _RTL_PRINT_FORMAT_PROPERTIES
  type RTL_SHA1_CONTEXT (line 114) | typedef struct _RTL_SHA1_CONTEXT
  type TIME_FIELDS (line 122) | typedef struct _TIME_FIELDS

FILE: sdk/xtdk/xtbase.h
  type ULONG_PTR (line 21) | typedef ULONG_PTR KAFFINITY, *PKAFFINITY;
  type LONG (line 24) | typedef LONG KPRIORITY, *PKPRIORITY;
  type CHAR (line 27) | typedef CHAR KPROCESSOR_MODE, *PKPROCESSOR_MODE;
  type UCHAR (line 30) | typedef UCHAR KRUNLEVEL, *PKRUNLEVEL;
  type ULONG_PTR (line 33) | typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
  type ULONG (line 36) | typedef ULONG PFN_COUNT;
  type ULONG_PTR (line 39) | typedef ULONG_PTR PFN_NUMBER, *PPFN_NUMBER;
  type LARGE_INTEGER (line 42) | typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
  type GUID (line 45) | typedef struct _GUID
  type LIST_ENTRY (line 54) | typedef struct _LIST_ENTRY
  type LIST_ENTRY32 (line 61) | typedef struct _LIST_ENTRY32
  type LIST_ENTRY64 (line 68) | typedef struct _LIST_ENTRY64
  type SINGLE_LIST_ENTRY (line 75) | typedef struct _SINGLE_LIST_ENTRY
  type SINGLE_LIST_HEADER (line 81) | typedef union _SINGLE_LIST_HEADER
  type _M128 (line 93) | struct _M128
  type DISPATCHER_HEADER (line 100) | typedef struct _DISPATCHER_HEADER

FILE: sdk/xtdk/xtcompat.h
  type BOOLEAN (line 24) | typedef bool BOOLEAN, *PBOOLEAN;
  type wchar_t (line 29) | typedef wchar_t wchar;
  type BOOLEAN (line 38) | typedef enum _BOOLEAN
  type wchar (line 45) | typedef unsigned short wchar;

FILE: sdk/xtdk/xtfont.h
  type SSFN_FONT_HEADER (line 20) | typedef struct _SSFN_FONT_HEADER

FILE: sdk/xtdk/xtfw.h
  type LOADER_MEMORY_TYPE (line 27) | typedef enum _LOADER_MEMORY_TYPE
  type SYSTEM_FIRMWARE_TYPE (line 60) | typedef enum _SYSTEM_FIRMWARE_TYPE
  type PCAT_FIRMWARE_INFORMATION (line 69) | typedef struct _PCAT_FIRMWARE_INFORMATION
  type UEFI_FIRMWARE_INFORMATION (line 75) | typedef struct _UEFI_FIRMWARE_INFORMATION
  type FIRMWARE_INFORMATION_BLOCK (line 82) | typedef struct _FIRMWARE_INFORMATION_BLOCK
  type LOADER_INFORMATION_BLOCK (line 93) | typedef struct _LOADER_INFORMATION_BLOCK
  type LOADER_MEMORY_DESCRIPTOR (line 99) | typedef struct _LOADER_MEMORY_DESCRIPTOR
  type KERNEL_INITIALIZATION_BLOCK (line 108) | typedef struct _KERNEL_INITIALIZATION_BLOCK

FILE: sdk/xtdk/xtimage.h
  type PECOFF_IMAGE_CONTEXT (line 210) | typedef struct _PECOFF_IMAGE_CONTEXT
  type PECOFF_IMAGE_DATA_DIRECTORY (line 224) | typedef struct _PECOFF_IMAGE_DATA_DIRECTORY
  type PECOFF_IMAGE_FILE_HEADER (line 231) | typedef struct _PECOFF_IMAGE_FILE_HEADER
  type PECOFF_IMAGE_DOS_HEADER (line 243) | typedef struct _PECOFF_IMAGE_DOS_HEADER
  type PECOFF_IMAGE_OS2_HEADER (line 267) | typedef struct _PECOFF_IMAGE_OS2_HEADER
  type PECOFF_IMAGE_VXD_HEADER (line 303) | typedef struct _PECOFF_IMAGE_VXD_HEADER
  type PECOFF_IMAGE_SECTION_HEADER (line 359) | typedef struct _PECOFF_IMAGE_SECTION_HEADER
  type PECOFF_IMAGE_OPTIONAL_HEADER32 (line 378) | typedef struct _PECOFF_IMAGE_OPTIONAL_HEADER32
  type PECOFF_IMAGE_OPTIONAL_HEADER64 (line 414) | typedef struct _PECOFF_IMAGE_OPTIONAL_HEADER64
  type PECOFF_IMAGE_ROM_OPTIONAL_HEADER (line 449) | typedef struct _PECOFF_IMAGE_ROM_OPTIONAL_HEADER
  type PECOFF_IMAGE_PE_HEADER (line 467) | typedef struct _PECOFF_IMAGE_PE_HEADER
  type PECOFF_IMAGE_ROM_HEADER (line 479) | typedef struct _PECOFF_IMAGE_ROM_HEADER {
  type PECOFF_IMAGE_BASE_RELOCATION (line 485) | typedef struct _PECOFF_IMAGE_BASE_RELOCATION
  type PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY (line 492) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY
  type PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32 (line 501) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32
  type PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64 (line 526) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64
  type PECOFF_IMAGE_IMPORT_DESCRIPTOR (line 573) | typedef struct _PECOFF_IMAGE_IMPORT_DESCRIPTOR
  type PECOFF_IMAGE_EXPORT_DIRECTORY (line 587) | typedef struct _PECOFF_IMAGE_EXPORT_DIRECTORY
  type PECOFF_IMAGE_RESOURCE_DIRECTORY (line 603) | typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY
  type PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY (line 614) | typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY
  type PECOFF_IMAGE_RESOURCE_DATA_ENTRY (line 637) | typedef struct _PECOFF_IMAGE_RESOURCE_DATA_ENTRY

FILE: sdk/xtdk/xtstruct.h
  type ADJUST_REASON (line 19) | typedef enum _ADJUST_REASON ADJUST_REASON, *PADJUST_REASON;
  type EXCEPTION_DISPOSITION (line 20) | typedef enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION, *PEXCEPTION_D...
  type EFI_ALLOCATE_TYPE (line 21) | typedef enum _EFI_ALLOCATE_TYPE EFI_ALLOCATE_TYPE, *PEFI_ALLOCATE_TYPE;
  type EFI_FRAMEWORK_CPU_DESIGNATION (line 22) | typedef enum _EFI_FRAMEWORK_CPU_DESIGNATION EFI_FRAMEWORK_CPU_DESIGNATIO...
  type EFI_GRAPHICS_OUTPUT_BLT_OPERATION (line 23) | typedef enum _EFI_GRAPHICS_OUTPUT_BLT_OPERATION EFI_GRAPHICS_OUTPUT_BLT_...
  type EFI_GRAPHICS_PIXEL_FORMAT (line 24) | typedef enum _EFI_GRAPHICS_PIXEL_FORMAT EFI_GRAPHICS_PIXEL_FORMAT, *PEFI...
  type EFI_GRAPHICS_PROTOCOL (line 25) | typedef enum _EFI_GRAPHICS_PROTOCOL EFI_GRAPHICS_PROTOCOL, *PEFI_GRAPHIC...
  type EFI_INTERFACE_TYPE (line 26) | typedef enum _EFI_INTERFACE_TYPE EFI_INTERFACE_TYPE, *PEFI_INTERFACE_TYPE;
  type EFI_IO_OPERATION_TYPE (line 27) | typedef enum _EFI_IO_OPERATION_TYPE EFI_IO_OPERATION_TYPE, *PEFI_IO_OPER...
  type EFI_IO_WIDTH (line 28) | typedef enum _EFI_IO_WIDTH EFI_IO_WIDTH, *PEFI_IO_WIDTH;
  type EFI_LOCATE_SEARCH_TYPE (line 29) | typedef enum _EFI_LOCATE_SEARCH_TYPE EFI_LOCATE_SEARCH_TYPE, *PEFI_LOCAT...
  type EFI_MEMORY_TYPE (line 30) | typedef enum _EFI_MEMORY_TYPE EFI_MEMORY_TYPE, *PEFI_MEMORY_TYPE;
  type EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION (line 31) | typedef enum _EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION EFI_PCI_IO_PROTOCO...
  type EFI_PCI_IO_PROTOCOL_OPERATION (line 32) | typedef enum _EFI_PCI_IO_PROTOCOL_OPERATION EFI_PCI_IO_PROTOCOL_OPERATIO...
  type EFI_PCI_IO_PROTOCOL_WIDTH (line 33) | typedef enum _EFI_PCI_IO_PROTOCOL_WIDTH EFI_PCI_IO_PROTOCOL_WIDTH, *PEFI...
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION (line 34) | typedef enum _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION EFI_PCI_ROOT_BRI...
  type EFI_PXE_BASE_CODE_CALLBACK_STATUS (line 35) | typedef enum _EFI_PXE_BASE_CODE_CALLBACK_STATUS EFI_PXE_BASE_CODE_CALLBA...
  type EFI_PXE_BASE_CODE_FUNCTION (line 36) | typedef enum _EFI_PXE_BASE_CODE_FUNCTION EFI_PXE_BASE_CODE_FUNCTION, *PE...
  type EFI_PXE_BASE_CODE_TFTP_OPCODE (line 37) | typedef enum _EFI_PXE_BASE_CODE_TFTP_OPCODE EFI_PXE_BASE_CODE_TFTP_OPCOD...
  type EFI_RESET_TYPE (line 38) | typedef enum _EFI_RESET_TYPE EFI_RESET_TYPE, *PEFI_RESET_TYPE;
  type EFI_SIMPLE_NETWORK_STATE (line 39) | typedef enum _EFI_SIMPLE_NETWORK_STATE EFI_SIMPLE_NETWORK_STATE, *PEFI_S...
  type EFI_TIMER_DELAY (line 40) | typedef enum _EFI_TIMER_DELAY EFI_TIMER_DELAY, *PEFI_TIMER_DELAY;
  type EFI_UART_PARITY_TYPE (line 41) | typedef enum _EFI_UART_PARITY_TYPE EFI_UART_PARITY_TYPE, *PEFI_UART_PARI...
  type EFI_UART_STOP_BITS_TYPE (line 42) | typedef enum _EFI_UART_STOP_BITS_TYPE EFI_UART_STOP_BITS_TYPE, *PEFI_UAR...
  type EFI_UNIVERSA_GRAPHICS_BLT_OPERATION (line 43) | typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION EFI_UNIVERSA_GRAPHICS_...
  type HAL_APIC_MODE (line 44) | typedef enum _HAL_APIC_MODE HAL_APIC_MODE, *PHAL_APIC_MODE;
  type KAPC_ENVIRONMENT (line 45) | typedef enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT;
  type KDPC_IMPORTANCE (line 46) | typedef enum _KDPC_IMPORTANCE KDPC_IMPORTANCE, *PKDPC_IMPORTANCE;
  type KEVENT_TYPE (line 47) | typedef enum _KEVENT_TYPE KEVENT_TYPE, *PKEVENT_TYPE;
  type KOBJECTS (line 48) | typedef enum _KOBJECTS KOBJECTS, *PKOBJECTS;
  type KPROCESS_STATE (line 49) | typedef enum _KPROCESS_STATE KPROCESS_STATE, *PKPROCESS_STATE;
  type KPROFILE_SOURCE (line 50) | typedef enum _KPROFILE_SOURCE KPROFILE_SOURCE, *PKPROFILE_SOURCE;
  type KTHREAD_STATE (line 51) | typedef enum _KTHREAD_STATE KTHREAD_STATE, *PKTHREAD_STATE;
  type KTIMER_TYPE (line 52) | typedef enum _KTIMER_TYPE KTIMER_TYPE, *PKTIMER_TYPE;
  type KUBSAN_DATA_TYPE (line 53) | typedef enum _KUBSAN_DATA_TYPE KUBSAN_DATA_TYPE, *PKUBSAN_DATA_TYPE;
  type LOADER_MEMORY_TYPE (line 54) | typedef enum _LOADER_MEMORY_TYPE LOADER_MEMORY_TYPE, *PLOADER_MEMORY_TYPE;
  type MMPAGELISTS (line 55) | typedef enum _MMPAGELISTS MMPAGELISTS, *PMMPAGELISTS;
  type MMPFN_CACHE_ATTRIBUTE (line 56) | typedef enum _MMPFN_CACHE_ATTRIBUTE MMPFN_CACHE_ATTRIBUTE, *PMMPFN_CACHE...
  type MMPOOL_TYPE (line 57) | typedef enum _MMPOOL_TYPE MMPOOL_TYPE, *PMMPOOL_TYPE;
  type MMSYSTEM_PTE_POOL_TYPE (line 58) | typedef enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE, *PMMSYSTEM_...
  type MODE (line 59) | typedef enum _MODE MODE, *PMODE;
  type RTL_VARIABLE_TYPE (line 60) | typedef enum _RTL_VARIABLE_TYPE RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE;
  type SYSTEM_FIRMWARE_TYPE (line 61) | typedef enum _SYSTEM_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWA...
  type SYSTEM_RESOURCE_TYPE (line 62) | typedef enum _SYSTEM_RESOURCE_TYPE SYSTEM_RESOURCE_TYPE, *PSYSTEM_RESOUR...
  type WAIT_TYPE (line 63) | typedef enum _WAIT_TYPE WAIT_TYPE, *PWAIT_TYPE;
  type ACPI_CACHE_LIST (line 66) | typedef struct _ACPI_CACHE_LIST ACPI_CACHE_LIST, *PACPI_CACHE_LIST;
  type ACPI_DESCRIPTION_HEADER (line 67) | typedef struct _ACPI_DESCRIPTION_HEADER ACPI_DESCRIPTION_HEADER, *PACPI_...
  type ACPI_FADT (line 68) | typedef struct _ACPI_FADT ACPI_FADT, *PACPI_FADT;
  type ACPI_HPET (line 69) | typedef struct _ACPI_HPET ACPI_HPET, *PACPI_HPET;
  type ACPI_MADT (line 70) | typedef struct _ACPI_MADT ACPI_MADT, *PACPI_MADT;
  type ACPI_MADT_INTERRUPT_OVERRIDE (line 71) | typedef struct _ACPI_MADT_INTERRUPT_OVERRIDE ACPI_MADT_INTERRUPT_OVERRID...
  type ACPI_MADT_IOAPIC (line 72) | typedef struct _ACPI_MADT_IOAPIC ACPI_MADT_IOAPIC, *PACPI_MADT_IOAPIC;
  type ACPI_MADT_LOCAL_APIC (line 73) | typedef struct _ACPI_MADT_LOCAL_APIC ACPI_MADT_LOCAL_APIC, *PACPI_MADT_L...
  type ACPI_MADT_LOCAL_X2APIC (line 74) | typedef struct _ACPI_MADT_LOCAL_X2APIC ACPI_MADT_LOCAL_X2APIC, *PACPI_MA...
  type ACPI_RSDP (line 75) | typedef struct _ACPI_RSDP ACPI_RSDP, *PACPI_RSDP;
  type ACPI_RSDT (line 76) | typedef struct _ACPI_RSDT ACPI_RSDT, *PACPI_RSDT;
  type ACPI_SUBTABLE_HEADER (line 77) | typedef struct _ACPI_SUBTABLE_HEADER ACPI_SUBTABLE_HEADER, *PACPI_SUBTAB...
  type ACPI_SYSTEM_INFO (line 78) | typedef struct _ACPI_SYSTEM_INFO ACPI_SYSTEM_INFO, *PACPI_SYSTEM_INFO;
  type ACPI_TIMER_INFO (line 79) | typedef struct _ACPI_TIMER_INFO ACPI_TIMER_INFO, *PACPI_TIMER_INFO;
  type ACPI_XSDT (line 80) | typedef struct _ACPI_XSDT ACPI_XSDT, *PACPI_XSDT;
  type ANSI_STRING (line 81) | typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING;
  type ANSI_STRING32 (line 82) | typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32;
  type ANSI_STRING64 (line 83) | typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64;
  type CPPORT (line 84) | typedef struct _CPPORT CPPORT, *PCPPORT;
  type CMMPAGEMAP_ROUTINES (line 85) | typedef const struct _CMMPAGEMAP_ROUTINES CMMPAGEMAP_ROUTINES, *PCMMPAGE...
  type CSTRING (line 86) | typedef struct _CSTRING CSTRING, *PCSTRING;
  type EFI_1394_DEVICE_PATH (line 87) | typedef struct _EFI_1394_DEVICE_PATH EFI_1394_DEVICE_PATH, *PEFI_1394_DE...
  type EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR (line 88) | typedef struct _EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR EFI_ACPI_ADDRESS_SPACE...
  type EFI_ACPI_ADR_DEVICE_PATH (line 89) | typedef struct _EFI_ACPI_ADR_DEVICE_PATH EFI_ACPI_ADR_DEVICE_PATH, *PEFI...
  type EFI_ACPI_HID_DEVICE_PATH (line 90) | typedef struct _EFI_ACPI_HID_DEVICE_PATH EFI_ACPI_HID_DEVICE_PATH, *PEFI...
  type EFI_ATAPI_DEVICE_PATH (line 91) | typedef struct _EFI_ATAPI_DEVICE_PATH EFI_ATAPI_DEVICE_PATH, *PEFI_ATAPI...
  type EFI_ATAPI_IDENTIFY (line 92) | typedef struct _EFI_ATAPI_IDENTIFY EFI_ATAPI_IDENTIFY, *PEFI_ATAPI_IDENT...
  type EFI_BBS_BBS_DEVICE_PATH (line 93) | typedef struct _EFI_BBS_BBS_DEVICE_PATH EFI_BBS_BBS_DEVICE_PATH, *PEFI_B...
  type EFI_BBS_STATUS_FLAGS (line 94) | typedef struct _EFI_BBS_STATUS_FLAGS EFI_BBS_STATUS_FLAGS, *PEFI_BBS_STA...
  type EFI_BBS_TABLE (line 95) | typedef struct _EFI_BBS_TABLE EFI_BBS_TABLE, *PEFI_BBS_TABLE;
  type EFI_BLOCK_DEVICE (line 96) | typedef struct _EFI_BLOCK_DEVICE EFI_BLOCK_DEVICE, *PEFI_BLOCK_DEVICE;
  type EFI_BLOCK_DEVICE_DATA (line 97) | typedef struct _EFI_BLOCK_DEVICE_DATA EFI_BLOCK_DEVICE_DATA, *PEFI_BLOCK...
  type EFI_BLOCK_IO_MEDIA (line 98) | typedef struct _EFI_BLOCK_IO_MEDIA EFI_BLOCK_IO_MEDIA, *PEFI_BLOCK_IO_ME...
  type EFI_BLOCK_IO_PROTOCOL (line 99) | typedef struct _EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL, *PEFI_BLOCK...
  type EFI_BLOCK_IO2_PROTOCOL (line 100) | typedef struct _EFI_BLOCK_IO2_PROTOCOL EFI_BLOCK_IO2_PROTOCOL, *PEFI_BLO...
  type EFI_BLOCK_IO2_TOKEN (line 101) | typedef struct _EFI_BLOCK_IO2_TOKEN EFI_BLOCK_IO2_TOKEN, *PEFI_BLOCK_IO2...
  type EFI_BOOT_SERVICES (line 102) | typedef struct _EFI_BOOT_SERVICES EFI_BOOT_SERVICES, *PEFI_BOOT_SERVICES;
  type EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL (line 103) | typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIF...
  type EFI_BYTE_REGS (line 104) | typedef struct _EFI_BYTE_REGS EFI_BYTE_REGS, *PEFI_BYTE_REGS;
  type EFI_CAPSULE_BLOCK_DESCRIPTOR (line 105) | typedef struct _EFI_CAPSULE_BLOCK_DESCRIPTOR EFI_CAPSULE_BLOCK_DESCRIPTO...
  type EFI_CAPSULE_HEADER (line 106) | typedef struct _EFI_CAPSULE_HEADER EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEA...
  type EFI_CDROM_DEVICE_PATH (line 107) | typedef struct _EFI_CDROM_DEVICE_PATH EFI_CDROM_DEVICE_PATH, *PEFI_CDROM...
  type EFI_COMPONENT_NAME_PROTOCOL (line 108) | typedef struct _EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL,...
  type EFI_COMPONENT_NAME2_PROTOCOL (line 109) | typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCO...
  type EFI_CONFIGURATION_TABLE (line 110) | typedef struct _EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE, *PEFI_C...
  type EFI_CONTROLLER_DEVICE_PATH (line 111) | typedef struct _EFI_CONTROLLER_DEVICE_PATH EFI_CONTROLLER_DEVICE_PATH, *...
  type EFI_DEVICE_IO_PROTOCOL (line 112) | typedef struct _EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL, *PEFI_DEV...
  type EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH (line 113) | typedef struct _EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH EFI_DEVICE_LOGICAL_U...
  type EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL (line 114) | typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL EFI_DEVICE_PATH_FROM_...
  type EFI_DEVICE_PATH_PROTOCOL (line 115) | typedef struct _EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL, *PEFI...
  type EFI_DEVICE_PATH_TO_TEXT_PROTOCOL (line 116) | typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL EFI_DEVICE_PATH_TO_TEXT...
  type EFI_DEVICE_PATH_UTILITIES_PROTOCOL (line 117) | typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL EFI_DEVICE_PATH_UTILI...
  type EFI_DISK_IO_PROTOCOL (line 118) | typedef struct _EFI_DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL, *PEFI_DISK_IO...
  type EFI_DISK_IO2_PROTOCOL (line 119) | typedef struct _EFI_DISK_IO2_PROTOCOL EFI_DISK_IO2_PROTOCOL, *PEFI_DISK_...
  type EFI_DISK_IO2_TOKEN (line 120) | typedef struct _EFI_DISK_IO2_TOKEN EFI_DISK_IO2_TOKEN, *PEFI_DISK_IO2_TO...
  type EFI_DRIVER_BINDING_PROTOCOL (line 121) | typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL,...
  type EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL (line 122) | typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OV...
  type EFI_DWORD_REGS (line 123) | typedef struct _EFI_DWORD_REGS EFI_DWORD_REGS, *PEFI_DWORD_REGS;
  type EFI_EBC_PROTOCOL (line 124) | typedef struct _EFI_EBC_PROTOCOL EFI_EBC_PROTOCOL, *PEFI_EBC_PROTOCOL;
  type EFI_EDID_ACTIVE_PROTOCOL (line 125) | typedef struct _EFI_EDID_ACTIVE_PROTOCOL EFI_EDID_ACTIVE_PROTOCOL, *PEFI...
  type EFI_EDID_DISCOVERED_PROTOCOL (line 126) | typedef struct _EFI_EDID_DISCOVERED_PROTOCOL EFI_EDID_DISCOVERED_PROTOCO...
  type EFI_EDID_OVERRIDE_PROTOCOL (line 127) | typedef struct _EFI_EDID_OVERRIDE_PROTOCOL EFI_EDID_OVERRIDE_PROTOCOL, *...
  type EFLAGS_REG (line 128) | typedef struct _EFI_EFLAGS_REG EFLAGS_REG, *PEFI_EFLAGS_REG;
  type EFI_EXPANDED_ACPI_HID_DEVICE_PATH (line 129) | typedef struct _EFI_EXPANDED_ACPI_HID_DEVICE_PATH EFI_EXPANDED_ACPI_HID_...
  type EFI_FIBRECHANNEL_DEVICE_PATH (line 130) | typedef struct _EFI_FIBRECHANNEL_DEVICE_PATH EFI_FIBRECHANNEL_DEVICE_PAT...
  type EFI_FIBRECHANNELEX_DEVICE_PATH (line 131) | typedef struct _EFI_FIBRECHANNELEX_DEVICE_PATH EFI_FIBRECHANNELEX_DEVICE...
  type EFI_FILE_HANDLE (line 132) | typedef struct _EFI_FILE_HANDLE EFI_FILE_HANDLE, *PEFI_FILE_HANDLE;
  type EFI_FILE_HEADER (line 133) | typedef struct _EFI_FILE_HEADER EFI_FILE_HEADER, *PEFI_FILE_HEADER;
  type EFI_FILE_INFO (line 134) | typedef struct _EFI_FILE_INFO EFI_FILE_INFO, *PEFI_FILE_INFO;
  type EFI_FILE_IO_TOKEN (line 135) | typedef struct _EFI_FILE_IO_TOKEN EFI_FILE_IO_TOKEN, *PEFI_FILE_IO_TOKEN;
  type EFI_FILE_SYSTEM_INFO (line 136) | typedef struct _EFI_FILE_SYSTEM_INFO EFI_FILE_SYSTEM_INFO, *PEFI_FILE_SY...
  type EFI_FILE_SYSTEM_VOLUME_LABEL (line 137) | typedef struct _EFI_FILE_SYSTEM_VOLUME_LABEL EFI_FILE_SYSTEM_VOLUME_LABE...
  type EFI_FILEPATH_DEVICE_PATH (line 138) | typedef struct _EFI_FILEPATH_DEVICE_PATH EFI_FILEPATH_DEVICE_PATH, *PEFI...
  type EFI_FLAGS_REG (line 139) | typedef struct _EFI_FLAGS_REG EFI_FLAGS_REG, *PEFI_FLAGS_REG;
  type EFI_FRAMEWORK_MP_HEALTH (line 140) | typedef struct _EFI_FRAMEWORK_MP_HEALTH EFI_FRAMEWORK_MP_HEALTH, *PEFI_F...
  type EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT (line 141) | typedef struct _EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT EFI_FRAMEWORK_MP_PROC...
  type EFI_FRAMEWORK_MP_SERVICES_PROTOCOL (line 142) | typedef struct _EFI_FRAMEWORK_MP_SERVICES_PROTOCOL EFI_FRAMEWORK_MP_SERV...
  type EFI_GPT_PARTITION_TABLE_HEADER (line 143) | typedef struct _EFI_GPT_PARTITION_TABLE_HEADER EFI_GPT_PARTITION_TABLE_H...
  type EFI_GPT_PARTITION_ENTRY (line 144) | typedef struct _EFI_GPT_PARTITION_ENTRY EFI_GPT_PARTITION_ENTRY, *PEFI_G...
  type EFI_GRAPHICS_OUTPUT_BLT_PIXEL (line 145) | typedef struct _EFI_GRAPHICS_OUTPUT_BLT_PIXEL EFI_GRAPHICS_OUTPUT_BLT_PI...
  type EFI_GRAPHICS_OUTPUT_MODE_INFORMATION (line 146) | typedef struct _EFI_GRAPHICS_OUTPUT_MODE_INFORMATION EFI_GRAPHICS_OUTPUT...
  type EFI_GRAPHICS_OUTPUT_PROTOCOL (line 147) | typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCO...
  type EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE (line 148) | typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE EFI_GRAPHICS_OUTPUT_PR...
  type EFI_GUID (line 149) | typedef struct _EFI_GUID EFI_GUID, *PEFI_GUID;
  type EFI_HARDDRIVE_DEVICE_PATH (line 150) | typedef struct _EFI_HARDDRIVE_DEVICE_PATH EFI_HARDDRIVE_DEVICE_PATH, *PE...
  type EFI_HASH_PROTOCOL (line 151) | typedef struct _EFI_HASH_PROTOCOL EFI_HASH_PROTOCOL, *PEFI_HASH_PROTOCOL;
  type EFI_HDD_INFO (line 152) | typedef struct _EFI_HDD_INFO EFI_HDD_INFO, *PEFI_HDD_INFO;
  type EFI_I2O_DEVICE_PATH (line 153) | typedef struct _EFI_I2O_DEVICE_PATH EFI_I2O_DEVICE_PATH, *PEFI_I2O_DEVIC...
  type EFI_INFINIBAND_DEVICE_PATH (line 154) | typedef struct _EFI_INFINIBAND_DEVICE_PATH EFI_INFINIBAND_DEVICE_PATH, *...
  type EFI_INPUT_KEY (line 155) | typedef struct _EFI_INPUT_KEY EFI_INPUT_KEY, *PEFI_INPUT_KEY;
  type EFI_IO_ACCESS (line 156) | typedef struct _EFI_IO_ACCESS EFI_IO_ACCESS, *PEFI_IO_ACCESS;
  type EFI_IPv4_ADDRESS (line 157) | typedef struct _EFI_IPv4_ADDRESS EFI_IPv4_ADDRESS, *PEFI_IPv4_ADDRESS;
  type EFI_IPv4_DEVICE_PATH (line 158) | typedef struct _EFI_IPv4_DEVICE_PATH EFI_IPv4_DEVICE_PATH, *PEFI_IPv4_DE...
  type EFI_IPv6_ADDRESS (line 159) | typedef struct _EFI_IPv6_ADDRESS EFI_IPv6_ADDRESS, *PEFI_IPv6_ADDRESS;
  type EFI_IPv6_DEVICE_PATH (line 160) | typedef struct _EFI_IPv6_DEVICE_PATH EFI_IPv6_DEVICE_PATH, *PEFI_IPv6_DE...
  type EFI_KEY_DATA (line 161) | typedef struct _EFI_KEY_DATA EFI_KEY_DATA, *PEFI_KEY_DATA;
  type EFI_KEY_STATE (line 162) | typedef struct _EFI_KEY_STATE EFI_KEY_STATE, *PEFI_KEY_STATE;
  type EFI_LBAL (line 163) | typedef struct _EFI_LBAL EFI_LBAL, *PEFI_LBAL;
  type EFI_LEGACY_BIOS_PROTOCOL (line 164) | typedef struct _EFI_LEGACY_BIOS_PROTOCOL EFI_LEGACY_BIOS_PROTOCOL, *PEFI...
  type EFI_LOAD_FILE_PROTOCOL (line 165) | typedef struct _EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL, *PEFI_LOA...
  type EFI_LOADED_IMAGE_PROTOCOL (line 166) | typedef struct _EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL, *PE...
  type EFI_MAC_ADDR_DEVICE_PATH (line 167) | typedef struct _EFI_MAC_ADDR_DEVICE_PATH EFI_MAC_ADDR_DEVICE_PATH, *PEFI...
  type EFI_MAC_ADDRESS (line 168) | typedef struct _EFI_MAC_ADDRESS EFI_MAC_ADDRESS, *PEFI_MAC_ADDRESS;
  type EFI_MANAGED_NETWORK_CONFIG_DATA (line 169) | typedef struct _EFI_MANAGED_NETWORK_CONFIG_DATA EFI_MANAGED_NETWORK_CONF...
  type EFI_MASTER_BOOT_RECORD (line 170) | typedef struct _EFI_MASTER_BOOT_RECORD EFI_MASTER_BOOT_RECORD, *PEFI_MAS...
  type EFI_MBR_PARTITION_RECORD (line 171) | typedef struct _EFI_MBR_PARTITION_RECORD EFI_MBR_PARTITION_RECORD, *PEFI...
  type EFI_MEDIA_FW_VOL_DEVICE_PATH (line 172) | typedef struct _EFI_MEDIA_FW_VOL_DEVICE_PATH EFI_MEDIA_FW_VOL_DEVICE_PAT...
  type EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH (line 173) | typedef struct _EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH EFI_MEDIA_FW_VOL_F...
  type EFI_MEDIA_PROTOCOL_DEVICE_PATH (line 174) | typedef struct _EFI_MEDIA_PROTOCOL_DEVICE_PATH EFI_MEDIA_PROTOCOL_DEVICE...
  type EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH (line 175) | typedef struct _EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH EFI_MEDIA_RE...
  type EFI_MEMMAP_DEVICE_PATH (line 176) | typedef struct _EFI_MEMMAP_DEVICE_PATH EFI_MEMMAP_DEVICE_PATH, *PEFI_MEM...
  type EFI_MEMORY_DESCRIPTOR (line 177) | typedef struct _EFI_MEMORY_DESCRIPTOR EFI_MEMORY_DESCRIPTOR, *PEFI_MEMOR...
  type EFI_MEMORY_MAP (line 178) | typedef struct _EFI_MEMORY_MAP EFI_MEMORY_MAP, *PEFI_MEMORY_MAP;
  type EFI_MP_SERVICES_PROTOCOL (line 179) | typedef struct _EFI_MP_SERVICES_PROTOCOL EFI_MP_SERVICES_PROTOCOL, *PEFI...
  type EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL (line 180) | typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_IN...
  type EFI_NETWORK_STATISTICS (line 181) | typedef struct _EFI_NETWORK_STATISTICS EFI_NETWORK_STATISTICS, *PEFI_NET...
  type EFI_OPEN_PROTOCOL_INFORMATION_ENTRY (line 182) | typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY EFI_OPEN_PROTOCOL_IN...
  type EFI_PARTITION_HEADER (line 183) | typedef struct _EFI_PARTITION_HEADER EFI_PARTITION_HEADER, *PEFI_PARTITI...
  type EFI_PCCARD_DEVICE_PATH (line 184) | typedef struct _EFI_PCCARD_DEVICE_PATH EFI_PCCARD_DEVICE_PATH, *PEFI_PCC...
  type EFI_PCI_DEVICE_PATH (line 185) | typedef struct _EFI_PCI_DEVICE_PATH EFI_PCI_DEVICE_PATH, *PEFI_PCI_DEVIC...
  type EFI_PCI_IO_PROTOCOL (line 186) | typedef struct _EFI_PCI_IO_PROTOCOL EFI_PCI_IO_PROTOCOL, *PEFI_PCI_IO_PR...
  type EFI_PCI_IO_PROTOCOL_ACCESS (line 187) | typedef struct _EFI_PCI_IO_PROTOCOL_ACCESS EFI_PCI_IO_PROTOCOL_ACCESS, *...
  type EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS (line 188) | typedef struct _EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS EFI_PCI_IO_PROTOCOL_CO...
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL (line 189) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL EFI_PCI_ROOT_BRIDGE_IO_P...
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS (line 190) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS EFI_PCI_ROOT_BRID...
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS (line 191) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS EFI_PCI_ROOT...
  type EFI_PIXEL_BITMASK (line 192) | typedef struct _EFI_PIXEL_BITMASK EFI_PIXEL_BITMASK, *PEFI_PIXEL_BITMASK;
  type EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL (line 193) | typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVE...
  type EFI_PROCESSOR_INFORMATION (line 194) | typedef struct _EFI_PROCESSOR_INFORMATION EFI_PROCESSOR_INFORMATION, *PE...
  type EFI_PROCESSOR_PHYSICAL_LOCATION (line 195) | typedef struct _EFI_PROCESSOR_PHYSICAL_LOCATION EFI_PROCESSOR_PHYSICAL_L...
  type EFI_PXE_BASE_CODE_ARP_ENTRY (line 196) | typedef struct _EFI_PXE_BASE_CODE_ARP_ENTRY EFI_PXE_BASE_CODE_ARP_ENTRY,...
  type EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL (line 197) | typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CA...
  type EFI_PXE_BASE_CODE_DHCPV4_PACKET (line 198) | typedef struct _EFI_PXE_BASE_CODE_DHCPV4_PACKET EFI_PXE_BASE_CODE_DHCPV4...
  type EFI_PXE_BASE_CODE_DHCPV6_PACKET (line 199) | typedef struct _EFI_PXE_BASE_CODE_DHCPV6_PACKET EFI_PXE_BASE_CODE_DHCPV6...
  type EFI_PXE_BASE_CODE_DISCOVER_INFO (line 200) | typedef struct _EFI_PXE_BASE_CODE_DISCOVER_INFO EFI_PXE_BASE_CODE_DISCOV...
  type EFI_PXE_BASE_CODE_ICMP_ERROR (line 201) | typedef struct _EFI_PXE_BASE_CODE_ICMP_ERROR EFI_PXE_BASE_CODE_ICMP_ERRO...
  type EFI_PXE_BASE_CODE_IP_FILTER (line 202) | typedef struct _EFI_PXE_BASE_CODE_IP_FILTER EFI_PXE_BASE_CODE_IP_FILTER,...
  type EFI_PXE_BASE_CODE_MODE (line 203) | typedef struct _EFI_PXE_BASE_CODE_MODE EFI_PXE_BASE_CODE_MODE, *PEFI_PXE...
  type EFI_PXE_BASE_CODE_MTFTP_INFO (line 204) | typedef struct _EFI_PXE_BASE_CODE_MTFTP_INFO EFI_PXE_BASE_CODE_MTFTP_INF...
  type EFI_PXE_BASE_CODE_PROTOCOL (line 205) | typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE_PROTOCOL, *...
  type EFI_PXE_BASE_CODE_ROUTE_ENTRY (line 206) | typedef struct _EFI_PXE_BASE_CODE_ROUTE_ENTRY EFI_PXE_BASE_CODE_ROUTE_EN...
  type EFI_PXE_BASE_CODE_SRVLIST (line 207) | typedef struct _EFI_PXE_BASE_CODE_SRVLIST EFI_PXE_BASE_CODE_SRVLIST, *PE...
  type EFI_PXE_BASE_CODE_TFTP_ERROR (line 208) | typedef struct _EFI_PXE_BASE_CODE_TFTP_ERROR EFI_PXE_BASE_CODE_TFTP_ERRO...
  type EFI_RL (line 209) | typedef struct _EFI_RL EFI_RL, *PEFI_RL;
  type EFI_RNG_PROTOCOL (line 210) | typedef struct _EFI_RNG_PROTOCOL EFI_RNG_PROTOCOL, *PEFI_RNG_PROTOCOL;
  type EFI_RUNTIME_SERVICES (line 211) | typedef struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES, *PEFI_RUNTIME...
  type EFI_SATA_DEVICE_PATH (line 212) | typedef struct _EFI_SATA_DEVICE_PATH EFI_SATA_DEVICE_PATH, *PEFI_SATA_DE...
  type EFI_SCSI_DEVICE_PATH (line 213) | typedef struct _EFI_SCSI_DEVICE_PATH EFI_SCSI_DEVICE_PATH, *PEFI_SCSI_DE...
  type EFI_SERVICE_BINDING (line 214) | typedef struct _EFI_SERVICE_BINDING EFI_SERVICE_BINDING, *PEFI_SERVICE_B...
  type EFI_SIMPLE_FILE_SYSTEM_PROTOCOL (line 215) | typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_P...
  type EFI_SIMPLE_NETWORK_MODE (line 216) | typedef struct _EFI_SIMPLE_NETWORK_MODE EFI_SIMPLE_NETWORK_MODE, *PEFI_S...
  type EFI_SIMPLE_NETWORK_PROTOCOL (line 217) | typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK_PROTOCOL,...
  type EFI_SIMPLE_TEXT_INPUT_PROTOCOL (line 218) | typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PRO...
  type EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL (line 219) | typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_...
  type EFI_SIMPLE_TEXT_OUTPUT_MODE (line 220) | typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE EFI_SIMPLE_TEXT_OUTPUT_MODE,...
  type EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL (line 221) | typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_P...
  type EFI_SYSTEM_TABLE (line 222) | typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE, *PEFI_SYSTEM_TABLE;
  type EFI_TABLE_HEADER (line 223) | typedef struct _EFI_TABLE_HEADER EFI_TABLE_HEADER, *PEFI_TABLE_HEADER;
  type EFI_TIME (line 224) | typedef struct _EFI_TIME EFI_TIME, *PEFI_TIME;
  type EFI_TIME_CAPABILITIES (line 225) | typedef struct _EFI_TIME_CAPABILITIES EFI_TIME_CAPABILITIES, *PEFI_TIME_...
  type EFI_UART_DEVICE_PATH (line 226) | typedef struct _EFI_UART_DEVICE_PATH EFI_UART_DEVICE_PATH, *PEFI_UART_DE...
  type EFI_UART_IO_MODE (line 227) | typedef struct _EFI_UART_IO_MODE EFI_UART_IO_MODE, *PEFI_UART_IO_MODE;
  type EFI_UART_IO_PROTOCOL (line 228) | typedef struct _EFI_UART_IO_PROTOCOL EFI_UART_IO_PROTOCOL, *PEFI_UART_IO...
  type EFI_UDC_ATTRIBUTES (line 229) | typedef struct _EFI_UDC_ATTRIBUTES EFI_UDC_ATTRIBUTES, *PEFI_UDC_ATTRIBU...
  type EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH (line 230) | typedef struct _EFI_UKNOWN_DEVICE_VENDOR_DEVICE_PATH EFI_UNKNOWN_DEVICE_...
  type EFI_UNICODE_COLLATION_PROTOCOL (line 231) | typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PRO...
  type EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL (line 232) | typedef struct _EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL EFI_UNIVERSAL_GR...
  type EFI_UNIVERSAL_GRAPHICS_BLT_PIXEL (line 233) | typedef struct _EFI_UNIVERSAL_GRAPHICS_BLT_PIXEL EFI_UNIVERSAL_GRAPHICS_...
  type EFI_URI_DEVICE_PATH (line 234) | typedef struct _EFI_URI_DEVICE_PATH EFI_URI_DEVICE_PATH, *PEFI_URI_DEVIC...
  type EFI_USB_CLASS_DEVICE_PATH (line 235) | typedef struct _EFI_USB_CLASS_DEVICE_PATH EFI_USB_CLASS_DEVICE_PATH, *PE...
  type EFI_USB_DEVICE_PATH (line 236) | typedef struct _EFI_USB_DEVICE_PATH EFI_USB_DEVICE_PATH, *PEFI_USB_DEVIC...
  type EFI_USB_WWID_DEVICE_PATH (line 237) | typedef struct _EFI_USB_WWID_DEVICE_PATH EFI_USB_WWID_DEVICE_PATH, *PEFI...
  type EFI_VENDOR_DEVICE_PATH (line 238) | typedef struct _EFI_VENDOR_DEVICE_PATH EFI_VENDOR_DEVICE_PATH, *PEFI_VEN...
  type EFI_VLAN_DEVICE_PATH (line 239) | typedef struct _EFI_VLAN_DEVICE_PATH EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DE...
  type EFI_WORD_REGS (line 240) | typedef struct _EFI_WORD_REGS EFI_WORD_REGS, *PEFI_WORD_REGS;
  type EPROCESS (line 241) | typedef struct _EPROCESS EPROCESS, *PEPROCESS;
  type ETHREAD (line 242) | typedef struct _ETHREAD ETHREAD, *PETHREAD;
  type EX_RUNDOWN_REFERENCE (line 243) | typedef struct _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_...
  type EXCEPTION_RECORD (line 244) | typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD, *PEXCEPTION_RECORD;
  type EXCEPTION_REGISTRATION_RECORD (line 245) | typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_REC...
  type FIRMWARE_INFORMATION_BLOCK (line 246) | typedef struct _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *...
  type FLOAT128 (line 247) | typedef struct _FLOAT128 FLOAT128, *PFLOAT128;
  type GENERIC_ADDRESS (line 248) | typedef struct _GENERIC_ADDRESS GENERIC_ADDRESS, *PGENERIC_ADDRESS;
  type GUID (line 249) | typedef struct _GUID GUID, *PGUID;
  type HL_FRAMEBUFFER_DATA (line 250) | typedef struct _HL_FRAMEBUFFER_DATA HL_FRAMEBUFFER_DATA, *PHL_FRAMEBUFFE...
  type HL_SCROLL_REGION_DATA (line 251) | typedef struct _HL_SCROLL_REGION_DATA HL_SCROLL_REGION_DATA, *PHL_SCROLL...
  type KAPC (line 252) | typedef struct _KAPC KAPC, *PKAPC;
  type KAPC_STATE (line 253) | typedef struct _KAPC_STATE KAPC_STATE, *PKAPC_STATE;
  type KD_DEBUG_MODE (line 254) | typedef struct _KD_DEBUG_MODE KD_DEBUG_MODE, *PKD_DEBUG_MODE;
  type KD_DISPATCH_TABLE (line 255) | typedef struct _KD_DISPATCH_TABLE KD_DISPATCH_TABLE, *PKD_DISPATCH_TABLE;
  type KDPC (line 256) | typedef struct _KDPC KDPC, *PKDPC;
  type KDPC_DATA (line 257) | typedef struct _KDPC_DATA KDPC_DATA, *PKDPC_DATA;
  type KERNEL_INITIALIZATION_BLOCK (line 258) | typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK,...
  type KEVENT (line 259) | typedef struct _KEVENT KEVENT, *PKEVENT;
  type KGATE (line 260) | typedef struct _KGATE KGATE, *PKGATE;
  type KLOCK_QUEUE_HANDLE (line 261) | typedef struct _KLOCK_QUEUE_HANDLE KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HAN...
  type KPROCESS (line 262) | typedef struct _KPROCESS KPROCESS, *PKPROCESS;
  type KQUEUE (line 263) | typedef struct _KQUEUE KQUEUE, *PKQUEUE;
  type KSEMAPHORE (line 264) | typedef struct _KSEMAPHORE KSEMAPHORE, *PKSEMAPHORE;
  type KSERVICE_DESCRIPTOR_TABLE (line 265) | typedef struct _KSERVICE_DESCRIPTOR_TABLE KSERVICE_DESCRIPTOR_TABLE, *PK...
  type KSHARED_DATA (line 266) | typedef struct _KSHARED_DATA KSHARED_DATA, *PKSHARED_DATA;
  type KSPIN_LOCK_QUEUE (line 267) | typedef struct _KSPIN_LOCK_QUEUE KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
  type KSYSTEM_TIME (line 268) | typedef struct _KSYSTEM_TIME KSYSTEM_TIME, *PKSYSTEM_TIME;
  type KTHREAD (line 269) | typedef struct _KTHREAD KTHREAD, *PKTHREAD;
  type KTIMER (line 270) | typedef struct _KTIMER KTIMER, *PKTIMER;
  type KUBSAN_FLOAT_CAST_OVERFLOW_DATA (line 271) | typedef struct _KUBSAN_FLOAT_CAST_OVERFLOW_DATA KUBSAN_FLOAT_CAST_OVERFL...
  type KUBSAN_FUNCTION_TYPE_MISMATCH_DATA (line 272) | typedef struct _KUBSAN_FUNCTION_TYPE_MISMATCH_DATA KUBSAN_FUNCTION_TYPE_...
  type KUBSAN_INVALID_BUILTIN_DATA (line 273) | typedef struct _KUBSAN_INVALID_BUILTIN_DATA KUBSAN_INVALID_BUILTIN_DATA,...
  type KUBSAN_OUT_OF_BOUNDS_DATA (line 274) | typedef struct _KUBSAN_OUT_OF_BOUNDS_DATA KUBSAN_OUT_OF_BOUNDS_DATA, *PK...
  type KUBSAN_OVERFLOW_DATA (line 275) | typedef struct _KUBSAN_OVERFLOW_DATA KUBSAN_OVERFLOW_DATA, *PKUBSAN_OVER...
  type KUBSAN_SHIFT_OUT_OF_BOUNDS_DATA (line 276) | typedef struct _KUBSAN_SHIFT_OUT_OF_BOUNDS_DATA KUBSAN_SHIFT_OUT_OF_BOUN...
  type KUBSAN_SOURCE_LOCATION (line 277) | typedef struct _KUBSAN_SOURCE_LOCATION KUBSAN_SOURCE_LOCATION, *PKUBSAN_...
  type KUBSAN_TYPE_DESCRIPTOR (line 278) | typedef struct _KUBSAN_TYPE_DESCRIPTOR KUBSAN_TYPE_DESCRIPTOR, *PKUBSAN_...
  type KUBSAN_TYPE_MISMATCH_DATA (line 279) | typedef struct _KUBSAN_TYPE_MISMATCH_DATA KUBSAN_TYPE_MISMATCH_DATA, *PK...
  type KUBSAN_TYPE_MISMATCH_DATA_V1 (line 280) | typedef struct _KUBSAN_TYPE_MISMATCH_DATA_V1 KUBSAN_TYPE_MISMATCH_DATA_V...
  type KWAIT_BLOCK (line 281) | typedef struct _KWAIT_BLOCK KWAIT_BLOCK, *PKWAIT_BLOCK;
  type LDR_DATA_TABLE_ENTRY (line 282) | typedef struct _LDR_DATA_TABLE_ENTRY LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TA...
  type LIST_ENTRY (line 283) | typedef struct _LIST_ENTRY LIST_ENTRY, *PLIST_ENTRY;
  type LIST_ENTRY32 (line 284) | typedef struct _LIST_ENTRY32 LIST_ENTRY32, *PLIST_ENTRY32;
  type LIST_ENTRY64 (line 285) | typedef struct _LIST_ENTRY64 LIST_ENTRY64, *PLIST_ENTRY64;
  type LOADER_GRAPHICS_INFORMATION_BLOCK (line 286) | typedef struct _LOADER_GRAPHICS_INFORMATION_BLOCK LOADER_GRAPHICS_INFORM...
  type LOADER_INFORMATION_BLOCK (line 287) | typedef struct _LOADER_INFORMATION_BLOCK LOADER_INFORMATION_BLOCK, *PLOA...
  type LOADER_MEMORY_DESCRIPTOR (line 288) | typedef struct _LOADER_MEMORY_DESCRIPTOR LOADER_MEMORY_DESCRIPTOR, *PLOA...
  type M128 (line 289) | typedef struct _M128 M128, *PM128;
  type MMCOLOR_TABLES (line 290) | typedef struct _MMCOLOR_TABLES MMCOLOR_TABLES, *PMMCOLOR_TABLES;
  type MMFREE_POOL_ENTRY (line 291) | typedef struct _MMFREE_POOL_ENTRY MMFREE_POOL_ENTRY, *PMMFREE_POOL_ENTRY;
  type MMMEMORY_LAYOUT (line 292) | typedef struct _MMMEMORY_LAYOUT MMMEMORY_LAYOUT, *PMMMEMORY_LAYOUT;
  type MMPFNENTRY (line 293) | typedef struct _MMPFNENTRY MMPFNENTRY, *PMMPFNENTRY;
  type MMPFNLIST (line 294) | typedef struct _MMPFNLIST MMPFNLIST, *PMMPFNLIST;
  type PCAT_FIRMWARE_INFORMATION (line 295) | typedef struct _PCAT_FIRMWARE_INFORMATION PCAT_FIRMWARE_INFORMATION, *PP...
  type PCI_BRIDGE_CONTROL_REGISTER (line 296) | typedef struct _PCI_BRIDGE_CONTROL_REGISTER PCI_BRIDGE_CONTROL_REGISTER,...
  type PCI_COMMON_CONFIG (line 297) | typedef struct _PCI_COMMON_CONFIG PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
  type PCI_COMMON_HEADER (line 298) | typedef struct _PCI_COMMON_HEADER PCI_COMMON_HEADER, *PPCI_COMMON_HEADER;
  type PCI_DEVICE_HEADER_TYPE_REGION (line 299) | typedef struct _PCI_DEVICE_HEADER_TYPE_REGION PCI_DEVICE_HEADER_TYPE_REG...
  type PCI_DEVICE_INDEPENDENT_REGION (line 300) | typedef struct _PCI_DEVICE_INDEPENDENT_REGION PCI_DEVICE_INDEPENDENT_REG...
  type PCI_TYPE0_DEVICE (line 301) | typedef struct _PCI_TYPE0_DEVICE PCI_TYPE0_DEVICE, *PPCI_TYPE0_DEVICE;
  type PCI_TYPE1_DEVICE (line 302) | typedef struct _PCI_TYPE1_DEVICE PCI_TYPE1_DEVICE, *PPCI_TYPE1_DEVICE;
  type PECOFF_IMAGE_BASE_RELOCATION (line 303) | typedef struct _PECOFF_IMAGE_BASE_RELOCATION PECOFF_IMAGE_BASE_RELOCATIO...
  type PECOFF_IMAGE_DATA (line 304) | typedef struct _PECOFF_IMAGE_DATA PECOFF_IMAGE_DATA, *PPECOFF_IMAGE_DATA;
  type PECOFF_IMAGE_DATA_DIRECTORY (line 305) | typedef struct _PECOFF_IMAGE_DATA_DIRECTORY PECOFF_IMAGE_DATA_DIRECTORY,...
  type PECOFF_IMAGE_DOS_HEADER (line 306) | typedef struct _PECOFF_IMAGE_DOS_HEADER PECOFF_IMAGE_DOS_HEADER, *PPECOF...
  type PECOFF_IMAGE_EXPORT_DIRECTORY (line 307) | typedef struct _PECOFF_IMAGE_EXPORT_DIRECTORY PECOFF_IMAGE_EXPORT_DIRECT...
  type PECOFF_IMAGE_FILE_HEADER (line 308) | typedef struct _PECOFF_IMAGE_FILE_HEADER PECOFF_IMAGE_FILE_HEADER, *PPEC...
  type PECOFF_IMAGE_IMPORT_DESCRIPTOR (line 309) | typedef struct _PECOFF_IMAGE_IMPORT_DESCRIPTOR PECOFF_IMAGE_IMPORT_DESCR...
  type PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY (line 310) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_CODE_INTEGRITY PECOFF_IMAGE_LOA...
  type PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32 (line 311) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY32 PECOFF_IMAGE_LOAD_C...
  type PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64 (line 312) | typedef struct _PECOFF_IMAGE_LOAD_CONFIG_DIRECTORY64 PECOFF_IMAGE_LOAD_C...
  type PECOFF_IMAGE_OPTIONAL_HEADER (line 313) | typedef struct _PECOFF_IMAGE_OPTIONAL_HEADER PECOFF_IMAGE_OPTIONAL_HEADE...
  type PECOFF_IMAGE_OS2_HEADER (line 314) | typedef struct _PECOFF_IMAGE_OS2_HEADER PECOFF_IMAGE_OS2_HEADER, *PPECOF...
  type PECOFF_IMAGE_PE_HEADER (line 315) | typedef struct _PECOFF_IMAGE_PE_HEADER PECOFF_IMAGE_PE_HEADER, *PPECOFF_...
  type PECOFF_IMAGE_RESOURCE_DATA_ENTRY (line 316) | typedef struct _PECOFF_IMAGE_RESOURCE_DATA_ENTRY PECOFF_IMAGE_RESOURCE_D...
  type PECOFF_IMAGE_RESOURCE_DIRECTORY (line 317) | typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY PECOFF_IMAGE_RESOURCE_DI...
  type PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY (line 318) | typedef struct _PECOFF_IMAGE_RESOURCE_DIRECTORY_ENTRY PECOFF_IMAGE_RESOU...
  type PECOFF_IMAGE_ROM_HEADER (line 319) | typedef struct _PECOFF_IMAGE_ROM_HEADER PECOFF_IMAGE_ROM_HEADER, *PPECOF...
  type PECOFF_IMAGE_ROM_OPTIONAL_HEADER (line 320) | typedef struct _PECOFF_IMAGE_ROM_OPTIONAL_HEADER PECOFF_IMAGE_ROM_OPTION...
  type PECOFF_IMAGE_SECTION_HEADER (line 321) | typedef struct _PECOFF_IMAGE_SECTION_HEADER PECOFF_IMAGE_SECTION_HEADER,...
  type PECOFF_IMAGE_VXD_HEADER (line 322) | typedef struct _PECOFF_IMAGE_VXD_HEADER PECOFF_IMAGE_VXD_HEADER, *PPECOF...
  type PHYSICAL_MEMORY_DESCRIPTOR (line 323) | typedef struct _PHYSICAL_MEMORY_DESCRIPTOR PHYSICAL_MEMORY_DESCRIPTOR, *...
  type PHYSICAL_MEMORY_RUN (line 324) | typedef struct _PHYSICAL_MEMORY_RUN PHYSICAL_MEMORY_RUN, *PPHYSICAL_MEMO...
  type POOL_HEADER (line 325) | typedef struct _POOL_HEADER POOL_HEADER, *PPOOL_HEADER;
  type POOL_TRACKING_BIG_ALLOCATIONS (line 326) | typedef struct _POOL_TRACKING_BIG_ALLOCATIONS POOL_TRACKING_BIG_ALLOCATI...
  type POOL_TRACKING_TABLE (line 327) | typedef struct _POOL_TRACKING_TABLE POOL_TRACKING_TABLE, *PPOOL_TRACKING...
  type PROCESSOR_IDENTITY (line 328) | typedef struct _PROCESSOR_IDENTITY PROCESSOR_IDENTITY, *PPROCESSOR_IDENT...
  type PROCESSOR_POWER_STATE (line 329) | typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR...
  type RTL_BITMAP (line 330) | typedef struct _RTL_BITMAP RTL_BITMAP, *PRTL_BITMAP;
  type RTL_PRINT_CONTEXT (line 331) | typedef struct _RTL_PRINT_CONTEXT RTL_PRINT_CONTEXT, *PRTL_PRINT_CONTEXT;
  type RTL_PRINT_FORMAT_PROPERTIES (line 332) | typedef struct _RTL_PRINT_FORMAT_PROPERTIES RTL_PRINT_FORMAT_PROPERTIES,...
  type SINGLE_LIST_ENTRY (line 333) | typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
  type SMBIOS_TABLE_HEADER (line 334) | typedef struct _SMBIOS_TABLE_HEADER SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_...
  type SMBIOS3_TABLE_HEADER (line 335) | typedef struct _SMBIOS3_TABLE_HEADER SMBIOS3_TABLE_HEADER, *PSMBIOS3_TAB...
  type STRING (line 336) | typedef struct _STRING STRING, *PSTRING;
  type STRING32 (line 337) | typedef struct _STRING32 STRING32, *PSTRING32;
  type STRING64 (line 338) | typedef struct _STRING64 STRING64, *PSTRING64;
  type THREAD_INFORMATION_BLOCK (line 339) | typedef struct _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHR...
  type TIME_FIELDS (line 340) | typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS;
  type TIMER_ROUTINES (line 341) | typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES;
  type UEFI_FIRMWARE_INFORMATION (line 342) | typedef struct _UEFI_FIRMWARE_INFORMATION UEFI_FIRMWARE_INFORMATION, *PU...
  type UNICODE_STRING (line 343) | typedef struct _UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;
  type UNICODE_STRING32 (line 344) | typedef struct _UNICODE_STRING32 UNICODE_STRING32, *PUNICODE_STRING32;
  type UNICODE_STRING64 (line 345) | typedef struct _UNICODE_STRING64 UNICODE_STRING64, *PUNICODE_STRING64;
  type XTBL_BOOT_PARAMETERS (line 346) | typedef struct _XTBL_BOOT_PARAMETERS XTBL_BOOT_PARAMETERS, *PXTBL_BOOT_P...
  type XTBL_BOOT_PROTOCOL (line 347) | typedef struct _XTBL_BOOT_PROTOCOL XTBL_BOOT_PROTOCOL, *PXTBL_BOOT_PROTO...
  type XTBL_BOOTMENU_ITEM (line 348) | typedef struct _XTBL_BOOTMENU_ITEM XTBL_BOOTMENU_ITEM, *PXTBL_BOOTMENU_I...
  type XTBL_CONFIG_ENTRY (line 349) | typedef struct _XTBL_CONFIG_ENTRY XTBL_CONFIG_ENTRY, *PXTBL_CONFIG_ENTRY;
  type XTBL_CONFIG_SECTION (line 350) | typedef struct _XTBL_CONFIG_SECTION XTBL_CONFIG_SECTION, *PXTBL_CONFIG_S...
  type XTBL_DIALOG_HANDLE (line 351) | typedef struct _XTBL_DIALOG_HANDLE XTBL_DIALOG_HANDLE, *PXTBL_DIALOG_HAN...
  type XTBL_EXECUTABLE_IMAGE_PROTOCOL (line 352) | typedef struct _XTBL_EXECUTABLE_IMAGE_PROTOCOL XTBL_EXECUTABLE_IMAGE_PRO...
  type XTBL_FRAMEBUFFER_INFORMATION (line 353) | typedef struct _XTBL_FRAMEBUFFER_INFORMATION XTBL_FRAMEBUFFER_INFORMATIO...
  type XTBL_FRAMEBUFFER_MODE_INFORMATION (line 354) | typedef struct _XTBL_FRAMEBUFFER_MODE_INFORMATION XTBL_FRAMEBUFFER_MODE_...
  type XTBL_FRAMEBUFFER_PROTOCOL (line 355) | typedef struct _XTBL_FRAMEBUFFER_PROTOCOL XTBL_FRAMEBUFFER_PROTOCOL, *PX...
  type XTBL_KNOWN_BOOT_PROTOCOL (line 356) | typedef struct _XTBL_KNOWN_BOOT_PROTOCOL XTBL_KNOWN_BOOT_PROTOCOL, *PXTB...
  type XTBL_LOADER_PROTOCOL (line 357) | typedef struct _XTBL_LOADER_PROTOCOL XTBL_LOADER_PROTOCOL, *PXTBL_LOADER...
  type XTBL_MEMORY_MAPPING (line 358) | typedef struct _XTBL_MEMORY_MAPPING XTBL_MEMORY_MAPPING, *PXTBL_MEMORY_M...
  type XTBL_MODULE_AUTHORS (line 359) | typedef struct _XTBL_MODULE_AUTHORS XTBL_MODULE_AUTHORS, *PXTBL_MODULE_A...
  type XTBL_MODULE_DEPS (line 360) | typedef struct _XTBL_MODULE_DEPS XTBL_MODULE_DEPS, *PXTBL_MODULE_DEPS;
  type XTBL_MODULE_INFO (line 361) | typedef struct _XTBL_MODULE_INFO XTBL_MODULE_INFO, *PXTBL_MODULE_INFO;
  type XTBL_PAGE_MAPPING (line 362) | typedef struct _XTBL_PAGE_MAPPING XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING;
  type XTBL_STATUS (line 363) | typedef struct _XTBL_STATUS XTBL_STATUS, *PXTBL_STATUS;
  type EFI_DEV_PATH (line 366) | typedef union _EFI_DEV_PATH EFI_DEV_PATH, *PEFI_DEV_PATH;
  type EFI_DEV_PATH_PTR (line 367) | typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR;
  type EFI_FRAMEWORK_MP_HEALTH_FLAGS (line 368) | typedef union _EFI_FRAMEWORK_MP_HEALTH_FLAGS EFI_FRAMEWORK_MP_HEALTH_FLA...
  type EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION (line 369) | typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION EFI_GRAPHICS_OUTPUT_B...
  type EFI_HASH_OUTPUT (line 370) | typedef union _EFI_HASH_OUTPUT EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT;
  type EFI_IA32_REGISTER_SET (line 371) | typedef union _EFI_IA32_REGISTER_SET EFI_IA32_REGISTER_SET, *PEFI_IA32_R...
  type EFI_IP_ADDRESS (line 372) | typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS;
  type EFI_PXE_BASE_CODE_PACKET (line 373) | typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_...
  type LARGE_INTEGER (line 374) | typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER;
  type SINGLE_LIST_HEADER (line 375) | typedef union _SINGLE_LIST_HEADER SINGLE_LIST_HEADER, *PSINGLE_LIST_HEADER;
  type ULARGE_INTEGER (line 376) | typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;

FILE: sdk/xtdk/xttypes.h
  type BYTE (line 20) | typedef unsigned char BYTE, *PBYTE, *LPBYTE;
  type CHAR (line 21) | typedef char CHAR, *PCHAR, *LPCHAR;
  type DOUBLE (line 22) | typedef double DOUBLE, *PDOUBLE, *LPDOUBLE;
  type DWORD (line 23) | typedef unsigned long DWORD, *PDWORD, *LPDWORD;
  type FLOAT (line 24) | typedef float FLOAT, *PFLOAT, *LPFLOAT;
  type INT (line 25) | typedef int INT, *PINT, *LPINT;
  type LONG (line 26) | typedef long LONG, *PLONG, *LPLONG;
  type SCHAR (line 27) | typedef signed char SCHAR, *PSCHAR;
  type SLONG (line 28) | typedef signed long SLONG, *PSLONG;
  type SHORT (line 29) | typedef short SHORT, *PSHORT, *LPSHORT;
  type UCHAR (line 30) | typedef unsigned char UCHAR, *PUCHAR;
  type UINT (line 31) | typedef unsigned int UINT, *PUINT;
  type ULONG (line 32) | typedef unsigned long ULONG, *PULONG, LPULONG;
  type USHORT (line 33) | typedef unsigned short USHORT, *PUSHORT;
  type WORD (line 34) | typedef unsigned short WORD, *PWORD, *LPWORD;
  type VOID (line 35) | typedef void VOID, *PVOID, *LPVOID;
  type BYTE (line 38) | typedef const BYTE CBYTE, *PCBYTE, *LPCBYTE;
  type CHAR (line 39) | typedef const CHAR CCHAR, *PCCHAR, *LPCCHAR;
  type DOUBLE (line 40) | typedef const DOUBLE CDOUBLE, *PCDOUBLE, *LPCDOUBLE;
  type DWORD (line 41) | typedef const DWORD CDWORD, *PCDWORD, *LPCDWORD;
  type FLOAT (line 42) | typedef const FLOAT CFLOAT, *PCFLOAT, *LPCFLOAT;
  type INT (line 43) | typedef const INT CINT, *PCINT, *LPCINT;
  type LONG (line 44) | typedef const LONG CLONG, *PCLONG, *LPCLONG;
  type SCHAR (line 45) | typedef const SCHAR CSCHAR, *PCSCHAR, *LPCSCHAR;
  type SHORT (line 46) | typedef const SHORT CSHORT, *PCSHORT, *LPCSHORT;
  type UCHAR (line 47) | typedef const UCHAR CUCHAR, *PCUCHAR, *LPCUCHAR;
  type UINT (line 48) | typedef const UINT CUINT, *PCUINT, *LPCUINT;
  type ULONG (line 49) | typedef const ULONG CULONG, *PCULONG, *LPCULONG;
  type USHORT (line 50) | typedef const USHORT CUSHORT, *PCUSHORT, *LPCUSHORT;
  type VOID (line 51) | typedef const VOID CVOID, *PCVOID, *LPCVOID;
  type WORD (line 52) | typedef const WORD CWORD, *PCWORD, *LPCWORD;
  type INT8 (line 55) | typedef signed char INT8, *PINT8;
  type UINT8 (line 56) | typedef unsigned char UINT8, *PUINT8;
  type INT16 (line 57) | typedef signed short INT16, *PINT16;
  type UINT16 (line 58) | typedef unsigned short UINT16, *PUINT16;
  type INT32 (line 59) | typedef signed int INT32, *PINT32;
  type UINT32 (line 60) | typedef unsigned int UINT32, *PUINT32;
  type INT64 (line 61) | typedef signed long long INT64, *PINT64;
  type UINT64 (line 62) | typedef unsigned long long UINT64, *PUINT64;
  type DOUBLE64 (line 65) | typedef long double DOUBLE64, *PDOUBLE64;
  type LDOUBLE (line 66) | typedef long double LDOUBLE, *PLDOUBLE;
  type LONG64 (line 67) | typedef long long LONG64, *PLONG64;
  type LONGLONG (line 68) | typedef long long LONGLONG, *PLONGLONG;
  type ULONGLONG (line 69) | typedef unsigned long long ULONGLONG, *PULONGLONG;
  type LONG32 (line 72) | typedef signed int LONG32, *PLONG32;
  type DWORD32 (line 75) | typedef unsigned int DWORD32, *PDWORD32;
  type ULONG32 (line 76) | typedef unsigned int ULONG32, *PULONG32;
  type DWORD64 (line 79) | typedef unsigned long long DWORD64, *PDWORD64;
  type ULONG64 (line 80) | typedef unsigned long long ULONG64, *PULONG64;
  type INT_PTR (line 84) | typedef long long INT_PTR, *PINT_PTR;
  type UINT_PTR (line 85) | typedef unsigned long long UINT_PTR, *PUINT_PTR;
  type LONG_PTR (line 86) | typedef long long LONG_PTR, *PLONG_PTR;
  type ULONG_PTR (line 87) | typedef unsigned long long ULONG_PTR, *PULONG_PTR;
  type POINTER_64_INT (line 88) | typedef unsigned long long POINTER_64_INT;
  type INT_PTR (line 90) | typedef int INT_PTR, *PINT_PTR;
  type UINT_PTR (line 91) | typedef unsigned int UINT_PTR, *PUINT_PTR;
  type LONG_PTR (line 92) | typedef long LONG_PTR, *PLONG_PTR;
  type ULONG_PTR (line 93) | typedef unsigned long ULONG_PTR, *PULONG_PTR;
  type POINTER_64_INT (line 94) | typedef unsigned long POINTER_64_INT;
  type BYTE (line 98) | typedef BYTE FCHAR;
  type DWORD (line 99) | typedef DWORD FLONG;
  type WORD (line 100) | typedef WORD FSHORT;
  type ULONG_PTR (line 103) | typedef ULONG_PTR SIZE_T, *PSIZE_T;
  type LONG_PTR (line 104) | typedef LONG_PTR SSIZE_T, *PSSIZE_T;
  type PVOID (line 107) | typedef PVOID *PPVOID;
  type SLONG (line 110) | typedef SLONG HPARAM, HRESULT;
  type LONG_PTR (line 111) | typedef LONG_PTR LPARAM, LRESULT;
  type UINT_PTR (line 112) | typedef UINT_PTR WPARAM, WRESULT;
  type VOID (line 115) | typedef VOID *HANDLE, **PHANDLE;
  type HANDLE (line 116) | typedef HANDLE *SPHANDLE, *LPHANDLE;
  type LONG (line 119) | typedef LONG XTSTATUS, *PXTSTATUS;
  type CHAR (line 122) | typedef CHAR *PCH, *LPCH;
  type CHAR (line 123) | typedef CHAR *PCCH, *LPCCH;
  type CHAR (line 124) | typedef CHAR *PSTR, *LPSTR, *NPSTR;
  type PSTR (line 125) | typedef PSTR *PZPSTR;
  type PSTR (line 126) | typedef const PSTR *PCZPSTR;
  type CHAR (line 127) | typedef const CHAR *PCSTR, *LPCSTR;
  type PCSTR (line 128) | typedef PCSTR *PZPCSTR;
  type CHAR (line 131) | typedef CHAR SZ, *PSZ;
  type CHAR (line 132) | typedef const CHAR CSZ, *PCSZ;
  type wchar (line 135) | typedef wchar WCHAR, *PWCHAR;
  type WCHAR (line 136) | typedef WCHAR *PWCH, *LPWCH;
  type WCHAR (line 137) | typedef const WCHAR *PCWCH, *LPCWCH;
  type WCHAR (line 138) | typedef WCHAR *PWSTR, *LPWSTR, *NWPSTR;
  type PWSTR (line 139) | typedef PWSTR *PZPWSTR;
  type PWSTR (line 140) | typedef const PWSTR *PCZPWSTR;
  type WCHAR (line 141) | typedef WCHAR *PUWSTR, *LPUWSTR;
  type WCHAR (line 142) | typedef const WCHAR *PCWSTR, *LPCWSTR;
  type PCWSTR (line 143) | typedef PCWSTR *PZPCWSTR;
  type WCHAR (line 144) | typedef const WCHAR *PCUWSTR, *LPCUWSTR;
  type WCHAR (line 147) | typedef WCHAR TBYTE, *PTBYTE;
  type WCHAR (line 148) | typedef WCHAR TCHAR, *PTCHAR;
  type LPWSTR (line 149) | typedef LPWSTR LP;
  type LPWSTR (line 150) | typedef LPWSTR PTCH, LPTCH;
  type LPWSTR (line 151) | typedef LPWSTR PTSTR, LPTSTR;
  type LPCWSTR (line 152) | typedef LPCWSTR PCTSTR, LPCTSTR;
  type LPUWSTR (line 153) | typedef LPUWSTR PUTSTR, LPUTSTR;
  type LPCUWSTR (line 154) | typedef LPCUWSTR PCUTSTR, LPCUTSTR;
  type __builtin_va_list (line 157) | typedef __builtin_va_list VA_LIST, *PVA_LIST;
  type FLOAT128 (line 160) | typedef struct _FLOAT128
  type LARGE_DOUBLE (line 167) | typedef union _LARGE_DOUBLE
  type LARGE_INTEGER (line 179) | typedef union _LARGE_INTEGER
  type ULARGE_INTEGER (line 195) | typedef union _ULARGE_INTEGER
  type STRING (line 211) | typedef struct _STRING
  type STRING32 (line 219) | typedef struct _STRING32
  type STRING64 (line 227) | typedef struct _STRING64
  type CSTRING (line 235) | typedef struct _CSTRING
  type ANSI_STRING (line 243) | typedef struct _ANSI_STRING
  type ANSI_STRING (line 249) | typedef const ANSI_STRING *PCANSI_STRING;
  type ANSI_STRING32 (line 252) | typedef struct _ANSI_STRING32
  type ANSI_STRING32 (line 258) | typedef const ANSI_STRING32 *PCANSI_STRING32;
  type ANSI_STRING64 (line 261) | typedef struct _ANSI_STRING64
  type ANSI_STRING64 (line 267) | typedef const ANSI_STRING64 *PCANSI_STRING64;
  type UNICODE_STRING (line 270) | typedef struct _UNICODE_STRING
  type UNICODE_STRING (line 276) | typedef const UNICODE_STRING *PCUNICODE_STRING;
  type UNICODE_STRING32 (line 279) | typedef struct _UNICODE_STRING32
  type UNICODE_STRING32 (line 285) | typedef const UNICODE_STRING32 *PCUNICODE_STRING32;
  type UNICODE_STRING64 (line 288) | typedef struct _UNICODE_STRING64
  type UNICODE_STRING64 (line 294) | typedef const UNICODE_STRING64 *PCUNICODE_STRING64;

FILE: sdk/xtdk/xtuefi.h
  type PVOID (line 381) | typedef PVOID EFI_EVENT, *PEFI_EVENT;
  type PVOID (line 382) | typedef PVOID EFI_HANDLE, *PEFI_HANDLE;
  type UINT64 (line 383) | typedef UINT64 EFI_LBA, *PEFI_LBA;
  type UINT64 (line 384) | typedef UINT64 EFI_PHYSICAL_ADDRESS, *PEFI_PHYSICAL_ADDRESS;
  type UINT_PTR (line 385) | typedef UINT_PTR EFI_STATUS, *PEFI_STATUS;
  type UINT_PTR (line 386) | typedef UINT_PTR EFI_TPL, *PEFI_TPL;
  type UINT64 (line 387) | typedef UINT64 EFI_VIRTUAL_ADDRESS, *PEFI_VIRTUAL_ADDRESS;
  type EFI_ALLOCATE_TYPE (line 390) | typedef enum _EFI_ALLOCATE_TYPE
  type EFI_RESET_TYPE (line 399) | typedef enum _EFI_RESET_TYPE
  type EFI_TIMER_DELAY (line 407) | typedef enum _EFI_TIMER_DELAY
  type EFI_LOCATE_SEARCH_TYPE (line 416) | typedef enum _EFI_LOCATE_SEARCH_TYPE
  type EFI_INTERFACE_TYPE (line 424) | typedef enum _EFI_INTERFACE_TYPE
  type EFI_MEMORY_TYPE (line 431) | typedef enum _EFI_MEMORY_TYPE
  type EFI_PCI_IO_PROTOCOL_WIDTH (line 451) | typedef enum _EFI_PCI_IO_PROTOCOL_WIDTH
  type EFI_PCI_IO_PROTOCOL_OPERATION (line 469) | typedef enum _EFI_PCI_IO_PROTOCOL_OPERATION
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION (line 478) | typedef enum _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION
  type EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION (line 490) | typedef enum _EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION
  type EFI_IO_WIDTH (line 501) | typedef enum _EFI_IO_WIDTH
  type EFI_IO_OPERATION_TYPE (line 514) | typedef enum _EFI_IO_OPERATION_TYPE
  type EFI_GRAPHICS_OUTPUT_BLT_OPERATION (line 522) | typedef enum _EFI_GRAPHICS_OUTPUT_BLT_OPERATION
  type EFI_GRAPHICS_PIXEL_FORMAT (line 532) | typedef enum _EFI_GRAPHICS_PIXEL_FORMAT
  type EFI_GRAPHICS_PROTOCOL (line 542) | typedef enum _EFI_GRAPHICS_PROTOCOL
  type EFI_UNIVERSA_GRAPHICS_BLT_OPERATION (line 550) | typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION
  type EFI_UART_PARITY_TYPE (line 560) | typedef enum _EFI_UART_PARITY_TYPE
  type EFI_UART_STOP_BITS_TYPE (line 571) | typedef enum _EFI_UART_STOP_BITS_TYPE
  type EFI_FRAMEWORK_CPU_DESIGNATION (line 580) | typedef enum _EFI_FRAMEWORK_CPU_DESIGNATION
  type EFI_SIMPLE_NETWORK_STATE (line 588) | typedef enum _EFI_SIMPLE_NETWORK_STATE
  type EFI_PXE_BASE_CODE_TFTP_OPCODE (line 597) | typedef enum _EFI_PXE_BASE_CODE_TFTP_OPCODE
  type EFI_PXE_BASE_CODE_FUNCTION (line 611) | typedef enum _EFI_PXE_BASE_CODE_FUNCTION
  type EFI_PXE_BASE_CODE_CALLBACK_STATUS (line 625) | typedef enum _EFI_PXE_BASE_CODE_CALLBACK_STATUS
  type EFI_STATUS (line 634) | typedef EFI_STATUS (*PEFI_CONVERT_POINTER)(IN UINT_PTR DebugDisposition,...
  type EFI_STATUS (line 635) | typedef EFI_STATUS (*PEFI_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE Type, IN ...
  type EFI_STATUS (line 636) | typedef EFI_STATUS (*PEFI_ALLOCATE_POOL)(IN EFI_MEMORY_TYPE PoolType, IN...
  type EFI_STATUS (line 637) | typedef EFI_STATUS (*PEFI_FREE_PAGES)(IN EFI_PHYSICAL_ADDRESS Memory, IN...
  type EFI_STATUS (line 638) | typedef EFI_STATUS (*PEFI_FREE_POOL)(IN PVOID Buffer);
  type VOID (line 639) | typedef VOID (*PEFI_EVENT_NOTIFY)(IN EFI_EVENT Event, IN PVOID Context);
  type EFI_STATUS (line 640) | typedef EFI_STATUS (*PEFI_CREATE_EVENT)(IN UINT32 Type, IN EFI_TPL Notif...
  type EFI_STATUS (line 641) | typedef EFI_STATUS (*PEFI_GET_MEMORY_MAP)(IN OUT PUINT_PTR MemoryMapSize...
  type EFI_STATUS (line 642) | typedef EFI_STATUS (*PEFI_GET_VARIABLE)(IN PWCHAR VariableName, IN PEFI_...
  type EFI_STATUS (line 643) | typedef EFI_STATUS (*PEFI_GET_NEXT_HIGH_MONO_COUNT)(OUT PUINT32 HighCount);
  type EFI_STATUS (line 644) | typedef EFI_STATUS (*PEFI_GET_NEXT_VARIABLE_NAME)(IN OUT PUINT_PTR Varia...
  type EFI_STATUS (line 645) | typedef EFI_STATUS (*PEFI_GET_TIME)(OUT PEFI_TIME Time, OUT PEFI_TIME_CA...
  type EFI_STATUS (line 646) | typedef EFI_STATUS (*PEFI_SET_TIME)(IN PEFI_TIME Time);
  type EFI_STATUS (line 647) | typedef EFI_STATUS (*PEFI_SET_TIMER)(IN EFI_EVENT Event, IN EFI_TIMER_DE...
  type EFI_STATUS (line 648) | typedef EFI_STATUS (*PEFI_SIGNAL_EVENT)(IN EFI_EVENT Event);
  type EFI_STATUS (line 649) | typedef EFI_STATUS (*PEFI_CLOSE_EVENT)(IN EFI_EVENT Event);
  type EFI_STATUS (line 650) | typedef EFI_STATUS (*PEFI_CHECK_EVENT)(IN EFI_EVENT Event);
  type EFI_STATUS (line 651) | typedef EFI_STATUS (*PEFI_CREATE_EVENT_EX)(IN UINT32 Type, IN EFI_TPL No...
  type EFI_STATUS (line 652) | typedef EFI_STATUS (*PEFI_WAIT_FOR_EVENT)(IN UINT_PTR NumberOfEvents, IN...
  type EFI_STATUS (line 653) | typedef EFI_STATUS (*PEFI_QUERY_CAPSULE_CAPABILITIES)(IN PEFI_CAPSULE_HE...
  type EFI_STATUS (line 654) | typedef EFI_STATUS (*PEFI_QUERY_VARIABLE_INFO)(IN UINT32 Attributes, OUT...
  type EFI_STATUS (line 655) | typedef EFI_STATUS (*PEFI_RAISE_TPL)(IN EFI_TPL NewTpl);
  type EFI_STATUS (line 656) | typedef EFI_STATUS (*PEFI_RESET_SYSTEM)(IN EFI_RESET_TYPE ResetType, IN ...
  type EFI_STATUS (line 657) | typedef EFI_STATUS (*PEFI_RESTORE_TPL)(IN EFI_TPL OldTpl);
  type EFI_STATUS (line 658) | typedef EFI_STATUS (*PEFI_UPDATE_CAPSULE)(IN PEFI_CAPSULE_HEADER *Capsul...
  type EFI_STATUS (line 659) | typedef EFI_STATUS (*PEFI_SET_VARIABLE)(IN PWCHAR VariableName, IN PEFI_...
  type EFI_STATUS (line 660) | typedef EFI_STATUS (*PEFI_SET_VIRTUAL_ADDRESS_MAP)(IN UINT_PTR MemoryMap...
  type EFI_STATUS (line 661) | typedef EFI_STATUS (*PEFI_GET_WAKEUP_TIME)(OUT BOOLEAN Enabled, OUT BOOL...
  type EFI_STATUS (line 662) | typedef EFI_STATUS (*PEFI_SET_WAKEUP_TIME)(IN BOOLEAN Enable, IN PEFI_TI...
  type EFI_STATUS (line 663) | typedef EFI_STATUS (*PEFI_INSTALL_PROTOCOL_INTERFACE)(IN OUT PEFI_HANDLE...
  type EFI_STATUS (line 664) | typedef EFI_STATUS (*PEFI_REINSTALL_PROTOCOL_INTERFACE)(IN EFI_HANDLE Ha...
  type EFI_STATUS (line 665) | typedef EFI_STATUS (*PEFI_UNINSTALL_PROTOCOL_INTERFACE)(IN EFI_HANDLE Ha...
  type EFI_STATUS (line 666) | typedef EFI_STATUS (*PEFI_HANDLE_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI...
  type EFI_STATUS (line 667) | typedef EFI_STATUS (*PEFI_REGISTER_PROTOCOL_NOTIFY)(IN PEFI_GUID Protoco...
  type EFI_STATUS (line 668) | typedef EFI_STATUS (*PEFI_LOCATE_HANDLE)(IN EFI_LOCATE_SEARCH_TYPE Searc...
  type EFI_STATUS (line 669) | typedef EFI_STATUS (*PEFI_LOCATE_DEVICE_PATH)(IN PEFI_GUID Protocol, IN ...
  type EFI_STATUS (line 670) | typedef EFI_STATUS (*PEFI_LOCATE_HANDLE_BUFFER)(IN EFI_LOCATE_SEARCH_TYP...
  type EFI_STATUS (line 671) | typedef EFI_STATUS (*PEFI_LOCATE_PROTOCOL)(IN PEFI_GUID Protocol, IN PVO...
  type EFI_STATUS (line 672) | typedef EFI_STATUS (*PEFI_INSTALL_CONFIGURATION_TABLE)(IN PEFI_GUID Guid...
  type EFI_STATUS (line 673) | typedef EFI_STATUS (*PEFI_IMAGE_LOAD)(IN BOOLEAN BootPolicy, IN EFI_HAND...
  type EFI_STATUS (line 674) | typedef EFI_STATUS (*PEFI_IMAGE_UNLOAD)(IN EFI_HANDLE ImageHandle);
  type EFI_STATUS (line 675) | typedef EFI_STATUS (*PEFI_IMAGE_START)(IN EFI_HANDLE ImageHandle, OUT PU...
  type EFI_STATUS (line 676) | typedef EFI_STATUS (*PEFI_EXIT)(IN EFI_HANDLE ImageHandle, IN EFI_STATUS...
  type EFI_STATUS (line 677) | typedef EFI_STATUS (*PEFI_EXIT_BOOT_SERVICES)(IN EFI_HANDLE ImageHandle,...
  type EFI_STATUS (line 678) | typedef EFI_STATUS (*PEFI_GET_NEXT_MONOTONIC_COUNT)(OUT PUINT64 Count);
  type EFI_STATUS (line 679) | typedef EFI_STATUS (*PEFI_STALL)(IN UINT_PTR Microseconds);
  type EFI_STATUS (line 680) | typedef EFI_STATUS (*PEFI_SET_WATCHDOG_TIMER)(IN UINT_PTR Timeout, IN UI...
  type EFI_STATUS (line 681) | typedef EFI_STATUS (*PEFI_CONNECT_CONTROLLER)(IN EFI_HANDLE ControllerHa...
  type EFI_STATUS (line 682) | typedef EFI_STATUS (*PEFI_DISCONNECT_CONTROLLER)(IN EFI_HANDLE Controlle...
  type EFI_STATUS (line 683) | typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI_G...
  type EFI_STATUS (line 684) | typedef EFI_STATUS (*PEFI_CLOSE_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI_...
  type EFI_STATUS (line 685) | typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL_INFORMATION)(IN EFI_HANDLE Handl...
  type EFI_STATUS (line 686) | typedef EFI_STATUS (*PEFI_PROTOCOLS_PER_HANDLE)(IN EFI_HANDLE Handle, OU...
  type EFI_STATUS (line 687) | typedef EFI_STATUS (*PEFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(IN OUT P...
  type EFI_STATUS (line 688) | typedef EFI_STATUS (*PEFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(IN OUT...
  type EFI_STATUS (line 689) | typedef EFI_STATUS (*PEFI_CALCULATE_CRC32)(IN PVOID Data, IN UINT_PTR Da...
  type EFI_STATUS (line 690) | typedef EFI_STATUS (*PEFI_COPY_MEM)(IN OUT PVOID Destination, IN PVOID S...
  type EFI_STATUS (line 691) | typedef EFI_STATUS (*PEFI_SET_MEM)(IN OUT PVOID Buffer, IN UINT_PTR Size...
  type EFI_STATUS (line 692) | typedef EFI_STATUS (*PEFI_INPUT_RESET)(IN PEFI_SIMPLE_TEXT_INPUT_PROTOCO...
  type EFI_STATUS (line 693) | typedef EFI_STATUS (*PEFI_INPUT_READ_KEY)(IN PEFI_SIMPLE_TEXT_INPUT_PROT...
  type EFI_STATUS (line 694) | typedef EFI_STATUS (*PEFI_TEXT_RESET)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCO...
  type EFI_STATUS (line 695) | typedef EFI_STATUS (*PEFI_TEXT_OUTPUT_STRING)(IN PEFI_SIMPLE_TEXT_OUTPUT...
  type EFI_STATUS (line 696) | typedef EFI_STATUS (*PEFI_TEXT_TEST_STRING)(IN PEFI_SIMPLE_TEXT_OUTPUT_P...
  type EFI_STATUS (line 697) | typedef EFI_STATUS (*PEFI_TEXT_QUERY_MODE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PR...
  type EFI_STATUS (line 698) | typedef EFI_STATUS (*PEFI_TEXT_SET_MODE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROT...
  type EFI_STATUS (line 699) | typedef EFI_STATUS (*PEFI_TEXT_SET_ATTRIBUTE)(IN PEFI_SIMPLE_TEXT_OUTPUT...
  type EFI_STATUS (line 700) | typedef EFI_STATUS (*PEFI_TEXT_CLEAR_SCREEN)(IN PEFI_SIMPLE_TEXT_OUTPUT_...
  type EFI_STATUS (line 701) | typedef EFI_STATUS (*PEFI_TEXT_SET_CURSOR_POSITION)(IN PEFI_SIMPLE_TEXT_...
  type EFI_STATUS (line 702) | typedef EFI_STATUS (*PEFI_TEXT_ENABLE_CURSOR)(IN PEFI_SIMPLE_TEXT_OUTPUT...
  type EFI_STATUS (line 703) | typedef EFI_STATUS (*PEFI_INPUT_RESET_EX)(IN PEFI_SIMPLE_TEXT_INPUT_EX_P...
  type EFI_STATUS (line 704) | typedef EFI_STATUS (*PEFI_INPUT_READ_KEY_EX)(IN PEFI_SIMPLE_TEXT_INPUT_E...
  type EFI_STATUS (line 705) | typedef EFI_STATUS (*PEFI_SET_STATE)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOC...
  type EFI_STATUS (line 706) | typedef EFI_STATUS (*PEFI_KEY_NOTIFY_FUNCTION)(IN PEFI_KEY_DATA KeyData);
  type EFI_STATUS (line 707) | typedef EFI_STATUS (*PEFI_REGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TEXT...
  type EFI_STATUS (line 708) | typedef EFI_STATUS (*PEFI_UNREGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TE...
  type PUINT16 (line 709) | typedef PUINT16 (*PEFI_DEVICE_PATH_TO_TEXT_NODE)(IN CONST PEFI_DEVICE_PA...
  type PUINT16 (line 710) | typedef PUINT16 (*PEFI_DEVICE_PATH_TO_TEXT_PATH)(IN CONST PEFI_DEVICE_PA...
  type PEFI_DEVICE_PATH_PROTOCOL (line 711) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_FROM_TEXT_NODE)(IN ...
  type PEFI_DEVICE_PATH_PROTOCOL (line 712) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_FROM_TEXT_PATH)(IN ...
  type UINT_PTR (line 713) | typedef UINT_PTR (*PEFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE)(IN CONST...
  type PEFI_DEVICE_PATH_PROTOCOL (line 714) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_DUP_DEVICE_PA...
  type PEFI_DEVICE_PATH_PROTOCOL (line 715) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_APPEND_PATH)(...
  type PEFI_DEVICE_PATH_PROTOCOL (line 716) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_APPEND_NODE)(...
  type PEFI_DEVICE_PATH_PROTOCOL (line 717) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_APPEND_INSTAN...
  type PEFI_DEVICE_PATH_PROTOCOL (line 718) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_GET_NEXT_INST...
  type PEFI_DEVICE_PATH_PROTOCOL (line 719) | typedef PEFI_DEVICE_PATH_PROTOCOL (*PEFI_DEVICE_PATH_UTILS_CREATE_NODE)(...
  type UCHAR (line 720) | typedef UCHAR (*PEFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE)(IN CONST PEFI_...
  type EFI_STATUS (line 721) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_POLL_IO_MEM)(IN PEFI_PCI_IO_PRO...
  type EFI_STATUS (line 722) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM)(IN PEF...
  type EFI_STATUS (line 723) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_IO_MEM)(IN PEFI_PCI_IO_PROTOCOL...
  type EFI_STATUS (line 724) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM)(IN PEFI_PCI...
  type EFI_STATUS (line 725) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_CONFIG)(IN PEFI_PCI_IO_PROTOCOL...
  type EFI_STATUS (line 726) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION)(IN P...
  type EFI_STATUS (line 727) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_COPY_MEM)(IN PEFI_PCI_IO_PROTOC...
  type EFI_STATUS (line 728) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM)(IN PEFI_P...
  type EFI_STATUS (line 729) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_MAP)(IN PEFI_PCI_IO_PROTOCOL Th...
  type EFI_STATUS (line 730) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP)(IN PEFI_PCI_RO...
  type EFI_STATUS (line 731) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_UNMAP)(IN PEFI_PCI_IO_PROTOCOL ...
  type EFI_STATUS (line 732) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP)(IN PEFI_PCI_...
  type EFI_STATUS (line 733) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER)(IN PEFI_PCI_IO...
  type EFI_STATUS (line 734) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER)(IN...
  type EFI_STATUS (line 735) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_FREE_BUFFER)(IN PEFI_PCI_IO_PRO...
  type EFI_STATUS (line 736) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER)(IN PEF...
  type EFI_STATUS (line 737) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_FLUSH)(IN PEFI_PCI_IO_PROTOCOL ...
  type EFI_STATUS (line 738) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH)(IN PEFI_PCI_...
  type EFI_STATUS (line 739) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_GET_LOCATION)(IN PEFI_PCI_IO_PR...
  type EFI_STATUS (line 740) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_ATTRIBUTES)(IN PEFI_PCI_IO_PROT...
  type EFI_STATUS (line 741) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES)(IN PEFI_PCI...
  type EFI_STATUS (line 742) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES)(IN ...
  type EFI_STATUS (line 743) | typedef EFI_STATUS (*EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES)(IN PEFI_PCI...
  type EFI_STATUS (line 744) | typedef EFI_STATUS (*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES)(IN ...
  type EFI_STATUS (line 745) | typedef EFI_STATUS (*PEFI_BLOCK_RESET)(IN PEFI_BLOCK_IO_PROTOCOL This, I...
  type EFI_STATUS (line 746) | typedef EFI_STATUS (*PEFI_BLOCK_READ)(IN PEFI_BLOCK_IO_PROTOCOL This, IN...
  type EFI_STATUS (line 747) | typedef EFI_STATUS (*PEFI_BLOCK_WRITE)(IN PEFI_BLOCK_IO_PROTOCOL This, I...
  type EFI_STATUS (line 748) | typedef EFI_STATUS (*PEFI_BLOCK_FLUSH)(IN PEFI_BLOCK_IO_PROTOCOL This);
  type EFI_STATUS (line 749) | typedef EFI_STATUS (*PEFI_BLOCK_RESET_EX)(IN PEFI_BLOCK_IO2_PROTOCOL Thi...
  type EFI_STATUS (line 750) | typedef EFI_STATUS (*PEFI_BLOCK_READ_EX)(IN PEFI_BLOCK_IO2_PROTOCOL This...
  type EFI_STATUS (line 751) | typedef EFI_STATUS (*PEFI_BLOCK_WRITE_EX)(IN PEFI_BLOCK_IO2_PROTOCOL Thi...
  type EFI_STATUS (line 752) | typedef EFI_STATUS (*PEFI_BLOCK_FLUSH_EX)(IN PEFI_BLOCK_IO2_PROTOCOL Thi...
  type EFI_STATUS (line 753) | typedef EFI_STATUS (*PEFI_DISK_READ)(IN PEFI_DISK_IO_PROTOCOL This, IN U...
  type EFI_STATUS (line 754) | typedef EFI_STATUS (*PEFI_DISK_WRITE)(IN PEFI_DISK_IO_PROTOCOL This, IN ...
  type EFI_STATUS (line 755) | typedef EFI_STATUS (*PEFI_DISK_CANCEL_EX)(IN PEFI_DISK_IO2_PROTOCOL This);
  type EFI_STATUS (line 756) | typedef EFI_STATUS (*PEFI_DISK_READ_EX)(IN PEFI_DISK_IO2_PROTOCOL This, ...
  type EFI_STATUS (line 757) | typedef EFI_STATUS (*PEFI_DISK_WRITE_EX)(IN PEFI_DISK_IO2_PROTOCOL This,...
  type EFI_STATUS (line 758) | typedef EFI_STATUS (*PEFI_DISK_FLUSH_EX)(IN PEFI_DISK_IO2_PROTOCOL This,...
  type EFI_STATUS (line 759) | typedef EFI_STATUS (*PEFI_VOLUME_OPEN)(IN PEFI_SIMPLE_FILE_SYSTEM_PROTOC...
  type EFI_STATUS (line 760) | typedef EFI_STATUS (*PEFI_FILE_OPEN)(IN PEFI_FILE_HANDLE File, OUT PEFI_...
  type EFI_STATUS (line 761) | typedef EFI_STATUS (*PEFI_FILE_CLOSE)(IN PEFI_FILE_HANDLE File);
  type EFI_STATUS (line 762) | typedef EFI_STATUS (*PEFI_FILE_DELETE)(IN PEFI_FILE_HANDLE File);
  type EFI_STATUS (line 763) | typedef EFI_STATUS (*PEFI_FILE_READ)(IN PEFI_FILE_HANDLE File, IN OUT PU...
  type EFI_STATUS (line 764) | typedef EFI_STATUS (*PEFI_FILE_WRITE)(IN PEFI_FILE_HANDLE File, IN OUT P...
  type EFI_STATUS (line 765) | typedef EFI_STATUS (*PEFI_FILE_SET_POSITION)(IN PEFI_FILE_HANDLE File, I...
  type EFI_STATUS (line 766) | typedef EFI_STATUS (*PEFI_FILE_GET_POSITION)(IN PEFI_FILE_HANDLE File, O...
  type EFI_STATUS (line 767) | typedef EFI_STATUS (*PEFI_FILE_GET_INFO)(IN PEFI_FILE_HANDLE File, IN PE...
  type EFI_STATUS (line 768) | typedef EFI_STATUS (*PEFI_FILE_SET_INFO)(IN PEFI_FILE_HANDLE File, IN PE...
  type EFI_STATUS (line 769) | typedef EFI_STATUS (*PEFI_FILE_FLUSH)(IN PEFI_FILE_HANDLE File);
  type EFI_STATUS (line 770) | typedef EFI_STATUS (*PEFI_FILE_OPEN_EX)(IN PEFI_FILE_HANDLE File, OUT PE...
  type EFI_STATUS (line 771) | typedef EFI_STATUS (*PEFI_FILE_READ_EX)(IN PEFI_FILE_HANDLE File, IN OUT...
  type EFI_STATUS (line 772) | typedef EFI_STATUS (*PEFI_FILE_WRITE_EX)(IN PEFI_FILE_HANDLE File, IN OU...
  type EFI_STATUS (line 773) | typedef EFI_STATUS (*PEFI_FILE_FLUSH_EX)(IN PEFI_FILE_HANDLE File, IN OU...
  type EFI_STATUS (line 774) | typedef EFI_STATUS (*PEFI_LOAD_FILE)(IN PEFI_LOAD_FILE_PROTOCOL This, IN...
  type EFI_STATUS (line 775) | typedef EFI_STATUS (*PEFI_DEVICE_IO)(IN PEFI_DEVICE_IO_PROTOCOL This, IN...
  type EFI_STATUS (line 776) | typedef EFI_STATUS (*PEFI_PCIDEV_DEVICE_PATH)(IN PEFI_DEVICE_IO_PROTOCOL...
  type EFI_STATUS (line 777) | typedef EFI_STATUS (*PEFI_IO_MAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EF...
  type EFI_STATUS (line 778) | typedef EFI_STATUS (*PEFI_IO_UNMAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN ...
  type EFI_STATUS (line 779) | typedef EFI_STATUS (*PEFI_IO_ALLOCATE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL...
  type EFI_STATUS (line 780) | typedef EFI_STATUS (*PEFI_IO_FLUSH)(IN PEFI_DEVICE_IO_PROTOCOL This);
  type EFI_STATUS (line 781) | typedef EFI_STATUS (*PEFI_IO_FREE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL Thi...
  type INT_PTR (line 782) | typedef INT_PTR (*PEFI_UNICODE_STRICOLL)(IN PEFI_UNICODE_COLLATION_PROTO...
  type UCHAR (line 783) | typedef UCHAR (*PEFI_UNICODE_METAIMATCH)(IN PEFI_UNICODE_COLLATION_PROTO...
  type VOID (line 784) | typedef VOID (*PEFI_UNICODE_STRLWR)(IN PEFI_UNICODE_COLLATION_PROTOCOL T...
  type VOID (line 785) | typedef VOID (*PEFI_UNICODE_STRUPR)(IN PEFI_UNICODE_COLLATION_PROTOCOL T...
  type VOID (line 786) | typedef VOID (*PEFI_UNICODE_FATTOSTR)(IN PEFI_UNICODE_COLLATION_PROTOCOL...
  type UCHAR (line 787) | typedef UCHAR (*PEFI_UNICODE_STRTOFAT)(IN PEFI_UNICODE_COLLATION_PROTOCO...
  type EFI_STATUS (line 788) | typedef EFI_STATUS (*PEFI_HASH_GET_HASH_SIZE)(IN CONST PEFI_HASH_PROTOCO...
  type EFI_STATUS (line 789) | typedef EFI_STATUS (*PEFI_HASH_HASH)(IN CONST PEFI_HASH_PROTOCOL This, I...
  type EFI_STATUS (line 790) | typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(IN PEFI_G...
  type EFI_STATUS (line 791) | typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE)(IN PEFI_GRA...
  type EFI_STATUS (line 792) | typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)(IN PEFI_GRAPHICS...
  type EFI_STATUS (line 793) | typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_GET_MODE)(...
  type EFI_STATUS (line 794) | typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_SET_MODE)(...
  type EFI_STATUS (line 795) | typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_BLT)(IN PE...
  type EFI_STATUS (line 796) | typedef EFI_STATUS (*PEFI_EDID_OVERRIDE_PROTOCOL_GET_EDID)(IN PEFI_EDID_...
  type EFI_STATUS (line 797) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_BOOT)(IN PEFI_LEGACY_BIOS_PROTOCOL...
  type EFI_STATUS (line 798) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE)(IN PEF...
  type EFI_STATUS (line 799) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_CHECK_ROM)(IN PEFI_LEGACY_BIOS_PRO...
  type EFI_STATUS (line 800) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_COPY_LEGACY_REGION)(IN PEFI_LEGACY...
  type BOOLEAN (line 801) | typedef BOOLEAN (*PEFI_LEGACY_BIOS_FARCALL86)(IN PEFI_LEGACY_BIOS_PROTOC...
  type EFI_STATUS (line 802) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_GET_BBS_INFO)(IN PEFI_LEGACY_BIOS_...
  type EFI_STATUS (line 803) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_GET_LEGACY_REGION)(IN PEFI_LEGACY_...
  type EFI_STATUS (line 804) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_INSTALL_ROM)(IN PEFI_LEGACY_BIOS_P...
  type BOOLEAN (line 805) | typedef BOOLEAN (*PEFI_LEGACY_BIOS_INT86)(IN PEFI_LEGACY_BIOS_PROTOCOL T...
  type EFI_STATUS (line 806) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI)(IN PEFI_LEGAC...
  type EFI_STATUS (line 807) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS)(IN PEFI_...
  type EFI_STATUS (line 808) | typedef EFI_STATUS (*PEFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS)(IN PEF...
  type EFI_STATUS (line 809) | typedef EFI_STATUS (*PEFI_SERVICE_BINDING_CREATE_CHILD)(IN PEFI_SERVICE_...
  type EFI_STATUS (line 810) | typedef EFI_STATUS (*PEFI_SERVICE_BINDING_DESTROY_CHILD)(IN PEFI_SERVICE...
  type EFI_STATUS (line 811) | typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)(IN PEFI_DRI...
  type EFI_STATUS (line 812) | typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_START)(IN PEFI_DRIVER_...
  type EFI_STATUS (line 813) | typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_STOP)(IN PEFI_DRIVER_B...
  type EFI_STATUS (line 814) | typedef EFI_STATUS (*PEFI_COMPONENT_NAME_GET_DRIVER_NAME)(IN PEFI_COMPON...
  type EFI_STATUS (line 815) | typedef EFI_STATUS (*PEFI_COMPONENT_NAME_GET_CONTROLLER_NAME)(IN PEFI_CO...
  type EFI_STATUS (line 816) | typedef EFI_STATUS (*PEFI_COMPONENT_NAME2_GET_DRIVER_NAME)(IN PEFI_COMPO...
  type EFI_STATUS (line 817) | typedef EFI_STATUS (*PEFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)(IN PEFI_C...
  type EFI_STATUS (line 818) | typedef EFI_STATUS (*PEFI_RNG_GET_INFO)(IN PEFI_RNG_PROTOCOL This, IN OU...
  type EFI_STATUS (line 819) | typedef EFI_STATUS (*PEFI_RNG_GET_RNG)(IN PEFI_RNG_PROTOCOL This, IN PEF...
  type EFI_STATUS (line 820) | typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)(IN PEFI_P...
  type EFI_STATUS (line 821) | typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)(IN P...
  type EFI_STATUS (line 822) | typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)(IN PEF...
  type EFI_STATUS (line 823) | typedef EFI_STATUS (*PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER)(IN PE...
  type UINT32 (line 824) | typedef UINT32 (*PEFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION)(IN PEFI_DRIVER...
  type EFI_STATUS (line 825) | typedef EFI_STATUS (*PEFI_EBC_CREATE_THUNK)(IN PEFI_EBC_PROTOCOL This, I...
  type EFI_STATUS (line 826) | typedef EFI_STATUS (*PEFI_EBC_UNLOAD_IMAGE)(IN PEFI_EBC_PROTOCOL This, I...
  type EFI_STATUS (line 827) | typedef EFI_STATUS (*PEFI_EBC_ICACHE_FLUSH)(IN EFI_PHYSICAL_ADDRESS Star...
  type EFI_STATUS (line 828) | typedef EFI_STATUS (*PEFI_EBC_REGISTER_ICACHE_FLUSH)(IN PEFI_EBC_PROTOCO...
  type EFI_STATUS (line 829) | typedef EFI_STATUS (*PEFI_EBC_GET_VERSION)(IN PEFI_EBC_PROTOCOL This, IN...
  type EFI_STATUS (line 830) | typedef EFI_STATUS (*PEFI_UART_RESET)(IN PEFI_UART_IO_PROTOCOL This);
  type EFI_STATUS (line 831) | typedef EFI_STATUS (*PEFI_UART_SET_ATTRIBUTES)(IN PEFI_UART_IO_PROTOCOL ...
  type EFI_STATUS (line 832) | typedef EFI_STATUS (*PEFI_UART_SET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCO...
  type EFI_STATUS (line 833) | typedef EFI_STATUS (*PEFI_UART_GET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCO...
  type EFI_STATUS (line 834) | typedef EFI_STATUS (*PEFI_UART_WRITE)(IN PEFI_UART_IO_PROTOCOL This, IN ...
  type EFI_STATUS (line 835) | typedef EFI_STATUS (*PEFI_UART_READ)(IN PEFI_UART_IO_PROTOCOL This, IN O...
  type EFI_STATUS (line 836) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_START)(IN PEFI_SIMPLE_NETWORK_P...
  type EFI_STATUS (line 837) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STOP)(IN PEFI_SIMPLE_NETWORK_PR...
  type EFI_STATUS (line 838) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_INITIALIZE)(IN PEFI_SIMPLE_NETW...
  type EFI_STATUS (line 839) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RESET)(IN PEFI_SIMPLE_NETWORK_P...
  type EFI_STATUS (line 840) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_SHUTDOWN)(IN PEFI_SIMPLE_NETWOR...
  type EFI_STATUS (line 841) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RECEIVE_FILTERS)(IN PEFI_SIMPLE...
  type EFI_STATUS (line 842) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STATION_ADDRESS)(IN PEFI_SIMPLE...
  type EFI_STATUS (line 843) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STATISTICS)(IN PEFI_SIMPLE_NETW...
  type EFI_STATUS (line 844) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC)(IN PEFI_SIMPLE...
  type EFI_STATUS (line 845) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_NVDATA)(IN PEFI_SIMPLE_NETWORK_...
  type EFI_STATUS (line 846) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_GET_STATUS)(IN PEFI_SIMPLE_NETW...
  type EFI_STATUS (line 847) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_TRANSMIT)(IN PEFI_SIMPLE_NETWOR...
  type EFI_STATUS (line 848) | typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RECEIVE)(IN PEFI_SIMPLE_NETWORK...
  type EFI_STATUS (line 849) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_START)(IN PEFI_PXE_BASE_CODE_PRO...
  type EFI_STATUS (line 850) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_STOP)(IN PEFI_PXE_BASE_CODE_PROT...
  type EFI_STATUS (line 851) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_DHCP)(IN PEFI_PXE_BASE_CODE_PROT...
  type EFI_STATUS (line 852) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_DISCOVER)(IN PEFI_PXE_BASE_CODE_...
  type EFI_STATUS (line 853) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_MTFTP)(IN PEFI_PXE_BASE_CODE_PRO...
  type EFI_STATUS (line 854) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_UDP_WRITE)(IN PEFI_PXE_BASE_CODE...
  type EFI_STATUS (line 855) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_UDP_READ)(IN PEFI_PXE_BASE_CODE_...
  type EFI_STATUS (line 856) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_IP_FILTER)(IN PEFI_PXE_BASE_...
  type EFI_STATUS (line 857) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_ARP)(IN PEFI_PXE_BASE_CODE_PROTO...
  type EFI_STATUS (line 858) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_PARAMETERS)(IN PEFI_PXE_BASE...
  type EFI_STATUS (line 859) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_STATION_IP)(IN PEFI_PXE_BASE...
  type EFI_STATUS (line 860) | typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_PACKETS)(IN PEFI_PXE_BASE_CO...
  type EFI_PXE_BASE_CODE_CALLBACK_STATUS (line 861) | typedef EFI_PXE_BASE_CODE_CALLBACK_STATUS (*PEFI_PXE_CALLBACK)(IN PEFI_P...
  type VOID (line 862) | typedef VOID (*PEFI_AP_PROCEDURE)(IN OUT PVOID Buffer);
  type EFI_STATUS (line 863) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_GET_GENERAL_MP_INFO)(IN ...
  type EFI_STATUS (line 864) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_GET_PROCESSOR_CONTEXT)(I...
  type EFI_STATUS (line 865) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_STARTUP_ALL_APS)(IN PEFI...
  type EFI_STATUS (line 866) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_STARTUP_THIS_AP)(IN PEFI...
  type EFI_STATUS (line 867) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_SWITCH_BSP)(IN PEFI_FRAM...
  type EFI_STATUS (line 868) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_SEND_IPI)(IN PEFI_FRAMEW...
  type EFI_STATUS (line 869) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_ENABLEDISABLEAP)(IN PEFI...
  type EFI_STATUS (line 870) | typedef EFI_STATUS (*PEFI_FRAMEWORK_MP_SERVICES_WHOAMI)(IN PEFI_FRAMEWOR...
  type EFI_STATUS (line 871) | typedef EFI_STATUS (*PEFI_MP_SERVICES_ENABLEDISABLEAP)(IN PEFI_MP_SERVIC...
  type EFI_STATUS (line 872) | typedef EFI_STATUS (*PEFI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS)(IN PEFI_...
  type EFI_STATUS (line 873) | typedef EFI_STATUS (*PEFI_MP_SERVICES_GET_PROCESSOR_INFO)(IN PEFI_MP_SER...
  type EFI_STATUS (line 874) | typedef EFI_STATUS (*PEFI_MP_SERVICES_STARTUP_ALL_APS)(IN PEFI_MP_SERVIC...
  type EFI_STATUS (line 875) | typedef EFI_STATUS (*PEFI_MP_SERVICES_STARTUP_THIS_AP)(IN PEFI_MP_SERVIC...
  type EFI_STATUS (line 876) | typedef EFI_STATUS (*PEFI_MP_SERVICES_SWITCH_BSP)(IN PEFI_MP_SERVICES_PR...
  type EFI_STATUS (line 877) | typedef EFI_STATUS (*PEFI_MP_SERVICES_WHOAMI)(IN PEFI_MP_SERVICES_PROTOC...
  type EFI_GUID (line 880) | typedef struct _EFI_GUID
  type EFI_CAPSULE_HEADER (line 889) | typedef struct _EFI_CAPSULE_HEADER
  type EFI_CAPSULE_BLOCK_DESCRIPTOR (line 898) | typedef struct _EFI_CAPSULE_BLOCK_DESCRIPTOR
  type EFI_MEMORY_DESCRIPTOR (line 909) | typedef struct _EFI_MEMORY_DESCRIPTOR
  type EFI_MEMORY_MAP (line 920) | typedef struct _EFI_MEMORY_MAP
  type EFI_TABLE_HEADER (line 930) | typedef struct _EFI_TABLE_HEADER
  type EFI_TIME (line 940) | typedef struct _EFI_TIME
  type EFI_TIME_CAPABILITIES (line 956) | typedef struct _EFI_TIME_CAPABILITIES
  type EFI_OPEN_PROTOCOL_INFORMATION_ENTRY (line 964) | typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY
  type EFI_BOOT_SERVICES (line 973) | typedef struct _EFI_BOOT_SERVICES
  type EFI_RUNTIME_SERVICES (line 1023) | typedef struct _EFI_RUNTIME_SERVICES
  type EFI_CONFIGURATION_TABLE (line 1043) | typedef struct _EFI_CONFIGURATION_TABLE
  type EFI_SIMPLE_TEXT_INPUT_PROTOCOL (line 1050) | typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL
  type EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL (line 1058) | typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
  type EFI_SIMPLE_TEXT_OUTPUT_MODE (line 1073) | typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE
  type EFI_INPUT_KEY (line 1084) | typedef struct _EFI_INPUT_KEY
  type EFI_KEY_STATE (line 1091) | typedef struct _EFI_KEY_STATE
  type EFI_KEY_DATA (line 1098) | typedef struct _EFI_KEY_DATA
  type EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL (line 1105) | typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
  type EFI_SYSTEM_TABLE (line 1116) | typedef struct _EFI_SYSTEM_TABLE
  type EFI_IPv4_ADDRESS (line 1134) | typedef struct _EFI_IPv4_ADDRESS
  type EFI_IPv6_ADDRESS (line 1140) | typedef struct _EFI_IPv6_ADDRESS
  type EFI_MAC_ADDRESS (line 1146) | typedef struct _EFI_MAC_ADDRESS
  type EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL (line 1152) | typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL
  type EFI_MANAGED_NETWORK_CONFIG_DATA (line 1167) | typedef struct _EFI_MANAGED_NETWORK_CONFIG_DATA
  type EFI_DEVICE_PATH_PROTOCOL (line 1182) | typedef struct _EFI_DEVICE_PATH_PROTOCOL
  type EFI_PCI_DEVICE_PATH (line 1190) | typedef struct _EFI_PCI_DEVICE_PATH
  type EFI_PCCARD_DEVICE_PATH (line 1198) | typedef struct _EFI_PCCARD_DEVICE_PATH
  type EFI_MEMMAP_DEVICE_PATH (line 1205) | typedef struct _EFI_MEMMAP_DEVICE_PATH
  type EFI_VENDOR_DEVICE_PATH (line 1214) | typedef struct _EFI_VENDOR_DEVICE_PATH
  type EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH (line 1221) | typedef struct _EFI_UKNOWN_DEVICE_VENDOR_DEVICE_PATH
  type EFI_CONTROLLER_DEVICE_PATH (line 1228) | typedef struct _EFI_CONTROLLER_DEVICE_PATH
  type EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR (line 1235) | typedef struct _EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR
  type EFI_ACPI_HID_DEVICE_PATH (line 1250) | typedef struct _EFI_ACPI_HID_DEVICE_PATH
  type EFI_EXPANDED_ACPI_HID_DEVICE_PATH (line 1258) | typedef struct _EFI_EXPANDED_ACPI_HID_DEVICE_PATH
  type EFI_ACPI_ADR_DEVICE_PATH (line 1268) | typedef struct _EFI_ACPI_ADR_DEVICE_PATH
  type EFI_ATAPI_DEVICE_PATH (line 1275) | typedef struct _EFI_ATAPI_DEVICE_PATH
  type EFI_SCSI_DEVICE_PATH (line 1284) | typedef struct _EFI_SCSI_DEVICE_PATH
  type EFI_FIBRECHANNEL_DEVICE_PATH (line 1292) | typedef struct _EFI_FIBRECHANNEL_DEVICE_PATH
  type EFI_FIBRECHANNELEX_DEVICE_PATH (line 1301) | typedef struct _EFI_FIBRECHANNELEX_DEVICE_PATH
  type EFI_1394_DEVICE_PATH (line 1310) | typedef struct _EFI_1394_DEVICE_PATH
  type EFI_USB_DEVICE_PATH (line 1318) | typedef struct _EFI_USB_DEVICE_PATH
  type EFI_USB_WWID_DEVICE_PATH (line 1326) | typedef struct _EFI_USB_WWID_DEVICE_PATH
  type EFI_USB_CLASS_DEVICE_PATH (line 1336) | typedef struct _EFI_USB_CLASS_DEVICE_PATH
  type EFI_SATA_DEVICE_PATH (line 1347) | typedef struct _EFI_SATA_DEVICE_PATH
  type EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH (line 1356) | typedef struct _EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH
  type EFI_I2O_DEVICE_PATH (line 1363) | typedef struct _EFI_I2O_DEVICE_PATH
  type EFI_MAC_ADDR_DEVICE_PATH (line 1370) | typedef struct _EFI_MAC_ADDR_DEVICE_PATH
  type EFI_IPv4_DEVICE_PATH (line 1378) | typedef struct _EFI_IPv4_DEVICE_PATH
  type EFI_IPv6_DEVICE_PATH (line 1392) | typedef struct _EFI_IPv6_DEVICE_PATH
  type EFI_URI_DEVICE_PATH (line 1406) | typedef struct _EFI_URI_DEVICE_PATH
  type EFI_VLAN_DEVICE_PATH (line 1413) | typedef struct _EFI_VLAN_DEVICE_PATH
  type EFI_INFINIBAND_DEVICE_PATH (line 1420) | typedef struct _EFI_INFINIBAND_DEVICE_PATH
  type EFI_UART_DEVICE_PATH (line 1431) | typedef struct _EFI_UART_DEVICE_PATH
  type EFI_HARDDRIVE_DEVICE_PATH (line 1442) | typedef struct _EFI_HARDDRIVE_DEVICE_PATH
  type EFI_CDROM_DEVICE_PATH (line 1454) | typedef struct _EFI_CDROM_DEVICE_PATH
  type EFI_FILEPATH_DEVICE_PATH (line 1463) | typedef struct _EFI_FILEPATH_DEVICE_PATH
  type EFI_MEDIA_PROTOCOL_DEVICE_PATH (line 1470) | typedef struct _EFI_MEDIA_PROTOCOL_DEVICE_PATH
  type EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH (line 1477) | typedef struct _EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH
  type EFI_MEDIA_FW_VOL_DEVICE_PATH (line 1484) | typedef struct _EFI_MEDIA_FW_VOL_DEVICE_PATH
  type EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH (line 1491) | typedef struct _EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH
  type EFI_BBS_BBS_DEVICE_PATH (line 1500) | typedef struct _EFI_BBS_BBS_DEVICE_PATH
  type EFI_DEV_PATH (line 1509) | typedef union _EFI_DEV_PATH
  type EFI_DEV_PATH_PTR (line 1540) | typedef union _EFI_DEV_PATH_PTR
  type EFI_DEVICE_PATH_TO_TEXT_PROTOCOL (line 1571) | typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
  type EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL (line 1578) | typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL
  type EFI_DEVICE_PATH_UTILITIES_PROTOCOL (line 1585) | typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL
  type EFI_PCI_IO_PROTOCOL_ACCESS (line 1598) | typedef struct _EFI_PCI_IO_PROTOCOL_ACCESS
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS (line 1605) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS
  type EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS (line 1612) | typedef struct _EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS (line 1619) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS
  type EFI_PCI_IO_PROTOCOL (line 1629) | typedef struct _EFI_PCI_IO_PROTOCOL
  type EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL (line 1651) | typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
  type EFI_BLOCK_DEVICE (line 1672) | typedef struct _EFI_BLOCK_DEVICE
  type EFI_BLOCK_DEVICE_DATA (line 1684) | typedef struct _EFI_BLOCK_DEVICE_DATA
  type EFI_BLOCK_IO_MEDIA (line 1692) | typedef struct _EFI_BLOCK_IO_MEDIA
  type EFI_BLOCK_IO_PROTOCOL (line 1709) | typedef struct _EFI_BLOCK_IO_PROTOCOL
  type EFI_BLOCK_IO2_PROTOCOL (line 1720) | typedef struct _EFI_BLOCK_IO2_PROTOCOL
  type EFI_BLOCK_IO2_TOKEN (line 1730) | typedef struct _EFI_BLOCK_IO2_TOKEN
  type EFI_DISK_IO_PROTOCOL (line 1737) | typedef struct _EFI_DISK_IO_PROTOCOL
  type EFI_DISK_IO2_TOKEN (line 1745) | typedef struct _EFI_DISK_IO2_TOKEN
  type EFI_DISK_IO2_PROTOCOL (line 1752) | typedef struct _EFI_DISK_IO2_PROTOCOL
  type EFI_SIMPLE_FILE_SYSTEM_PROTOCOL (line 1762) | typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
  type EFI_FILE_IO_TOKEN (line 1769) | typedef struct _EFI_FILE_IO_TOKEN
  type EFI_FILE_HANDLE (line 1778) | typedef struct _EFI_FILE_HANDLE
  type EFI_FILE_INFO (line 1798) | typedef struct _EFI_FILE_INFO
  type EFI_FILE_SYSTEM_INFO (line 1811) | typedef struct _EFI_FILE_SYSTEM_INFO
  type EFI_FILE_SYSTEM_VOLUME_LABEL (line 1822) | typedef struct _EFI_FILE_SYSTEM_VOLUME_LABEL
  type EFI_LOAD_FILE_PROTOCOL (line 1828) | typedef struct _EFI_LOAD_FILE_PROTOCOL
  type EFI_IO_ACCESS (line 1834) | typedef struct _EFI_IO_ACCESS
  type EFI_DEVICE_IO_PROTOCOL (line 1841) | typedef struct _EFI_DEVICE_IO_PROTOCOL
  type EFI_HASH_OUTPUT (line 1855) | typedef union _EFI_HASH_OUTPUT
  type EFI_HASH_PROTOCOL (line 1866) | typedef struct _EFI_HASH_PROTOCOL
  type EFI_UNICODE_COLLATION_PROTOCOL (line 1873) | typedef struct _EFI_UNICODE_COLLATION_PROTOCOL
  type EFI_PIXEL_BITMASK (line 1885) | typedef struct _EFI_PIXEL_BITMASK
  type EFI_GRAPHICS_OUTPUT_MODE_INFORMATION (line 1894) | typedef struct _EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
  type EFI_GRAPHICS_OUTPUT_BLT_PIXEL (line 1905) | typedef struct _EFI_GRAPHICS_OUTPUT_BLT_PIXEL
  type EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION (line 1914) | typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION
  type EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE (line 1921) | typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE
  type EFI_GRAPHICS_OUTPUT_PROTOCOL (line 1932) | typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL
  type EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL (line 1941) | typedef struct _EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL
  type EFI_UNIVERSAL_GRAPHICS_BLT_PIXEL (line 1949) | typedef struct _EFI_UNIVERSAL_GRAPHICS_BLT_PIXEL
  type EFI_EDID_DISCOVERED_PROTOCOL (line 1958) | typedef struct _EFI_EDID_DISCOVERED_PROTOCOL
  type EFI_EDID_ACTIVE_PROTOCOL (line 1965) | typedef struct _EFI_EDID_ACTIVE_PROTOCOL
  type EFI_EDID_OVERRIDE_PROTOCOL (line 1972) | typedef struct _EFI_EDID_OVERRIDE_PROTOCOL
  type EFI_BBS_STATUS_FLAGS (line 1978) | typedef struct _EFI_BBS_STATUS_FLAGS
  type EFI_BBS_TABLE (line 1989) | typedef struct _EFI_BBS_TABLE
  type EFI_ATAPI_IDENTIFY (line 2018) | typedef struct _EFI_ATAPI_IDENTIFY
  type EFI_HDD_INFO (line 2024) | typedef struct _EFI_HDD_INFO
  type EFI_EFLAGS_REG (line 2038) | typedef struct _EFI_EFLAGS_REG
  type EFI_FLAGS_REG (line 2060) | typedef struct _EFI_FLAGS_REG
  type EFI_BYTE_REGS (line 2080) | typedef struct _EFI_BYTE_REGS
  type EFI_DWORD_REGS (line 2097) | typedef struct _EFI_DWORD_REGS
  type EFI_WORD_REGS (line 2117) | typedef struct _EFI_WORD_REGS
  type EFI_IA32_REGISTER_SET (line 2146) | typedef union _EFI_IA32_REGISTER_SET
  type EFI_LEGACY_BIOS_PROTOCOL (line 2154) | typedef struct _EFI_LEGACY_BIOS_PROTOCOL
  type EFI_UDC_ATTRIBUTES (line 2171) | typedef struct _EFI_UDC_ATTRIBUTES
  type EFI_SERVICE_BINDING (line 2180) | typedef struct _EFI_SERVICE_BINDING
  type EFI_DRIVER_BINDING_PROTOCOL (line 2187) | typedef struct _EFI_DRIVER_BINDING_PROTOCOL
  type EFI_COMPONENT_NAME_PROTOCOL (line 2198) | typedef struct _EFI_COMPONENT_NAME_PROTOCOL
  type EFI_COMPONENT_NAME2_PROTOCOL (line 2206) | typedef struct _EFI_COMPONENT_NAME2_PROTOCOL
  type EFI_LOADED_IMAGE_PROTOCOL (line 2214) | typedef struct _EFI_LOADED_IMAGE_PROTOCOL
  type EFI_RNG_PROTOCOL (line 2232) | typedef struct _EFI_RNG_PROTOCOL
  type EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL (line 2239) | typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
  type EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL (line 2247) | typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
  type EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL (line 2253) | typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
  type EFI_EBC_PROTOCOL (line 2259) | typedef struct _EFI_EBC_PROTOCOL
  type EFI_PARTITION_HEADER (line 2268) | typedef struct _EFI_PARTITION_HEADER
  type EFI_MBR_PARTITION_RECORD (line 2282) | typedef struct _EFI_MBR_PARTITION_RECORD
  type EFI_MASTER_BOOT_RECORD (line 2297) | typedef struct _EFI_MASTER_BOOT_RECORD
  type EFI_GPT_PARTITION_TABLE_HEADER (line 2307) | typedef struct _EFI_GPT_PARTITION_TABLE_HEADER
  type EFI_GPT_PARTITION_ENTRY (line 2322) | typedef struct _EFI_GPT_PARTITION_ENTRY
  type EFI_FILE_HEADER (line 2333) | typedef struct _EFI_FILE_HEADER
  type EFI_LBAL (line 2348) | typedef struct _EFI_LBAL
  type EFI_RL (line 2359) | typedef struct _EFI_RL
  type EFI_UART_IO_MODE (line 2366) | typedef struct _EFI_UART_IO_MODE
  type EFI_UART_IO_PROTOCOL (line 2378) | typedef struct _EFI_UART_IO_PROTOCOL {
  type EFI_IP_ADDRESS (line 2390) | typedef union _EFI_IP_ADDRESS
  type EFI_PXE_BASE_CODE_DHCPV4_PACKET (line 2398) | typedef struct _EFI_PXE_BASE_CODE_DHCPV4_PACKET
  type EFI_PXE_BASE_CODE_DHCPV6_PACKET (line 2419) | typedef struct _EFI_PXE_BASE_CODE_DHCPV6_PACKET
  type EFI_PXE_BASE_CODE_PACKET (line 2427) | typedef union _EFI_PXE_BASE_CODE_PACKET
  type EFI_PXE_BASE_CODE_ICMP_ERROR (line 2435) | typedef struct _EFI_PXE_BASE_CODE_ICMP_ERROR
  type EFI_PXE_BASE_CODE_TFTP_ERROR (line 2455) | typedef struct _EFI_PXE_BASE_CODE_TFTP_ERROR
  type EFI_PXE_BASE_CODE_IP_FILTER (line 2462) | typedef struct _EFI_PXE_BASE_CODE_IP_FILTER
  type EFI_PXE_BASE_CODE_ARP_ENTRY (line 2471) | typedef struct _EFI_PXE_BASE_CODE_ARP_ENTRY
  type EFI_PXE_BASE_CODE_ROUTE_ENTRY (line 2478) | typedef struct _EFI_PXE_BASE_CODE_ROUTE_ENTRY
  type EFI_PXE_BASE_CODE_SRVLIST (line 2486) | typedef struct _EFI_PXE_BASE_CODE_SRVLIST
  type EFI_PXE_BASE_CODE_DISCOVER_INFO (line 2495) | typedef struct _EFI_PXE_BASE_CODE_DISCOVER_INFO
  type EFI_PXE_BASE_CODE_MTFTP_INFO (line 2507) | typedef struct _EFI_PXE_BASE_CODE_MTFTP_INFO
  type EFI_PXE_BASE_CODE_MODE (line 2517) | typedef struct _EFI_PXE_BASE_CODE_MODE
  type EFI_PXE_BASE_CODE_PROTOCOL (line 2556) | typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
  type EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL (line 2574) | typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL {
  type EFI_NETWORK_STATISTICS (line 2580) | typedef struct _EFI_NETWORK_STATISTICS
  type EFI_SIMPLE_NETWORK_MODE (line 2607) | typedef struct _EFI_SIMPLE_NETWORK_MODE
  type EFI_SIMPLE_NETWORK_PROTOCOL (line 2631) | typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL
  type EFI_FRAMEWORK_MP_SERVICES_PROTOCOL (line 2652) | typedef struct _EFI_FRAMEWORK_MP_SERVICES_PROTOCOL
  type EFI_FRAMEWORK_MP_HEALTH_FLAGS (line 2665) | typedef union _EFI_FRAMEWORK_MP_HEALTH_FLAGS
  type EFI_FRAMEWORK_MP_HEALTH (line 2682) | typedef struct _EFI_FRAMEWORK_MP_HEALTH
  type EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT (line 2689) | typedef struct _EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT
  type EFI_MP_SERVICES_PROTOCOL (line 2703) | typedef struct _EFI_MP_SERVICES_PROTOCOL
  type EFI_PROCESSOR_PHYSICAL_LOCATION (line 2715) | typedef struct _EFI_PROCESSOR_PHYSICAL_LOCATION
  type EFI_PROCESSOR_INFORMATION (line 2723) | typedef struct _EFI_PROCESSOR_INFORMATION

FILE: xtoskrnl/ar/amd64/cpufunc.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 36) | XTCDECL
  function XTCDECL (line 77) | XTCDECL
  function XTCDECL (line 92) | XTCDECL
  function XTASSEMBLY (line 116) | XTASSEMBLY
  function XTCDECL (line 136) | XTCDECL
  function XTCDECL (line 150) | XTCDECL
  function XTCDECL (line 173) | XTCDECL
  function XTCDECL (line 193) | XTCDECL
  function XTCDECL (line 213) | XTCDECL
  function XTCDECL (line 233) | XTCDECL
  function XTCDECL (line 252) | XTCDECL
  function XTCDECL (line 274) | XTCDECL
  function XTCDECL (line 336) | XTCDECL
  function XTCDECL (line 352) | XTCDECL
  function XTCDECL (line 372) | XTCDECL
  function XTCDECL (line 436) | XTCDECL
  function XTCDECL (line 505) | XTCDECL
  function XTCDECL (line 528) | XTCDECL
  function XTCDECL (line 549) | XTCDECL
  function XTCDECL (line 563) | XTCDECL
  function XTCDECL (line 586) | XTCDECL
  function XTCDECL (line 610) | XTCDECL
  function XTCDECL (line 627) | XTCDECL
  function XTCDECL (line 644) | XTCDECL
  function XTCDECL (line 664) | XTCDECL
  function XTCDECL (line 684) | XTCDECL
  function XTCDECL (line 707) | XTCDECL
  function XTCDECL (line 754) | XTCDECL
  function XTCDECL (line 777) | XTCDECL
  function XTCDECL (line 836) | XTCDECL
  function XTCDECL (line 913) | XTCDECL
  function XTCDECL (line 936) | XTCDECL
  function XTCDECL (line 958) | XTCDECL

FILE: xtoskrnl/ar/amd64/procsup.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 27) | XTAPI
  function XTAPI (line 64) | XTAPI
  function XTAPI (line 138) | XTAPI
  function XTAPI (line 279) | XTAPI
  function XTAPI (line 308) | XTAPI
  function XTAPI (line 356) | XTAPI
  function XTAPI (line 441) | XTAPI
  function XTAPI (line 491) | XTAPI
  function XTAPI (line 565) | XTAPI
  function XTAPI (line 633) | XTAPI
  function XTAPI (line 659) | XTAPI
  function XTAPI (line 705) | XTAPI
  function XTAPI (line 771) | XTAPI
  function XTAPI (line 817) | XTAPI

FILE: xtoskrnl/ar/amd64/traps.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 60) | XTCDECL
  function XTCDECL (line 196) | XTCDECL
  function XTCDECL (line 210) | XTCDECL
  function XTCDECL (line 227) | XTCDECL
  function XTCDECL (line 245) | XTCDECL
  function XTCDECL (line 263) | XTCDECL
  function XTCDECL (line 280) | XTCDECL
  function XTCDECL (line 298) | XTCDECL
  function XTCDECL (line 316) | XTCDECL
  function XTCDECL (line 334) | XTCDECL
  function XTCDECL (line 352) | XTCDECL
  function XTCDECL (line 370) | XTCDECL
  function XTCDECL (line 388) | XTCDECL
  function XTCDECL (line 406) | XTCDECL
  function XTCDECL (line 424) | XTCDECL
  function XTCDECL (line 442) | XTCDECL
  function XTCDECL (line 460) | XTCDECL
  function XTCDECL (line 478) | XTCDECL
  function XTCDECL (line 496) | XTCDECL
  function XTCDECL (line 514) | XTCDECL
  function XTCDECL (line 532) | XTCDECL
  function XTCDECL (line 550) | XTCDECL
  function XTCDECL (line 568) | XTCDECL
  function XTCDECL (line 585) | XTCDECL
  function XTCDECL (line 603) | XTCDECL
  function XTCDECL (line 621) | XTCDECL
  function XTCDECL (line 638) | XTCDECL
  function XTCDECL (line 655) | XTCDECL
  function XTCDECL (line 670) | XTCDECL
  function XTAPI (line 694) | XTAPI

FILE: xtoskrnl/ar/i686/cpufunc.cc
  function XTCDECL (line 19) | XTCDECL
  function XTCDECL (line 36) | XTCDECL
  function XTCDECL (line 77) | XTCDECL
  function XTCDECL (line 92) | XTCDECL
  function XTASSEMBLY (line 116) | XTASSEMBLY
  function XTCDECL (line 136) | XTCDECL
  function XTCDECL (line 150) | XTCDECL
  function XTCDECL (line 173) | XTCDECL
  function XTCDECL (line 193) | XTCDECL
  function XTCDECL (line 213) | XTCDECL
  function XTCDECL (line 233) | XTCDECL
  function XTCDECL (line 255) | XTCDECL
  function XTCDECL (line 317) | XTCDECL
  function XTCDECL (line 333) | XTCDECL
  function XTCDECL (line 354) | XTCDECL
  function XTCDECL (line 411) | XTCDECL
  function XTCDECL (line 480) | XTCDECL
  function XTCDECL (line 501) | XTCDECL
  function XTCDECL (line 520) | XTCDECL
  function XTCDECL (line 534) | XTCDECL
  function XTCDECL (line 556) | XTCDECL
  function XTCDECL (line 580) | XTCDECL
  function XTCDECL (line 597) | XTCDECL
  function XTCDECL (line 614) | XTCDECL
  function XTCDECL (line 634) | XTCDECL
  function XTCDECL (line 654) | XTCDECL
  function XTCDECL (line 677) | XTCDECL
  function XTCDECL (line 724) | XTCDECL
  function XTCDECL (line 747) | XTCDECL
  function XTCDECL (line 799) | XTCDECL
  function XTCDECL (line 868) | XTCDECL
  function XTCDECL (line 891) | XTCDECL
  function XTCDECL (line 909) | XTCDECL

FILE: xtoskrnl/ar/i686/procsup.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 27) | XTAPI
  function XTAPI (line 57) | XTAPI
  function XTAPI (line 131) | XTAPI
  function XTAPI (line 272) | XTAPI
  function XTAPI (line 303) | XTAPI
  function XTAPI (line 352) | XTAPI
  function XTAPI (line 433) | XTAPI
  function XTAPI (line 479) | XTAPI
  function XTAPI (line 515) | XTAPI
  function XTAPI (line 583) | XTAPI
  function XTAPI (line 606) | XTAPI
  function XTAPI (line 666) | XTAPI
  function XTAPI (line 737) | XTAPI
  function XTAPI (line 801) | XTAPI
  function XTAPI (line 846) | XTAPI
  function XTAPI (line 880) | XTAPI

FILE: xtoskrnl/ar/i686/traps.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 60) | XTCDECL
  function XTCDECL (line 195) | XTCDECL
  function XTCDECL (line 213) | XTCDECL
  function XTCDECL (line 231) | XTCDECL
  function XTCDECL (line 248) | XTCDECL
  function XTCDECL (line 266) | XTCDECL
  function XTCDECL (line 284) | XTCDECL
  function XTCDECL (line 302) | XTCDECL
  function XTCDECL (line 320) | XTCDECL
  function XTCDECL (line 338) | XTCDECL
  function XTCDECL (line 356) | XTCDECL
  function XTCDECL (line 374) | XTCDECL
  function XTCDECL (line 392) | XTCDECL
  function XTCDECL (line 410) | XTCDECL
  function XTCDECL (line 428) | XTCDECL
  function XTCDECL (line 446) | XTCDECL
  function XTCDECL (line 464) | XTCDECL
  function XTCDECL (line 482) | XTCDECL
  function XTCDECL (line 500) | XTCDECL
  function XTCDECL (line 518) | XTCDECL
  function XTCDECL (line 536) | XTCDECL
  function XTCDECL (line 553) | XTCDECL
  function XTCDECL (line 570) | XTCDECL
  function XTCDECL (line 588) | XTCDECL
  function XTCDECL (line 606) | XTCDECL
  function XTCDECL (line 623) | XTCDECL
  function XTCDECL (line 641) | XTCDECL

FILE: xtoskrnl/ex/exports.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTFASTCALL (line 39) | XTFASTCALL
  function XTFASTCALL (line 56) | XTFASTCALL
  function XTFASTCALL (line 73) | XTFASTCALL
  function XTFASTCALL (line 90) | XTFASTCALL
  function XTFASTCALL (line 107) | XTFASTCALL

FILE: xtoskrnl/ex/rundown.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTFASTCALL (line 70) | XTFASTCALL
  function XTFASTCALL (line 87) | XTFASTCALL
  function XTFASTCALL (line 105) | XTFASTCALL
  function XTFASTCALL (line 122) | XTFASTCALL
  function XTFASTCALL (line 173) | XTFASTCALL

FILE: xtoskrnl/hl/acpi.cc
  function XTAPI (line 23) | XTAPI
  function XTAPI (line 57) | XTAPI
  function XTAPI (line 79) | XTAPI
  function XTAPI (line 118) | XTAPI
  function XTAPI (line 140) | XTAPI
  function XTAPI (line 155) | XTAPI
  function XTAPI (line 192) | XTAPI
  function XTAPI (line 227) | XTAPI
  function XTAPI (line 333) | XTAPI
  function XTAPI (line 432) | XTAPI
  function XTAPI (line 528) | XTAPI
  function XTAPI (line 575) | XTAPI
  function XTAPI (line 632) | XTAPI
  function XTAPI (line 835) | XTAPI

FILE: xtoskrnl/hl/amd64/ioport.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 43) | XTCDECL
  function XTCDECL (line 64) | XTCDECL
  function XTCDECL (line 88) | XTCDECL
  function XTCDECL (line 112) | XTCDECL
  function XTCDECL (line 136) | XTCDECL

FILE: xtoskrnl/hl/amd64/irq.cc
  function XTAPI (line 27) | XTAPI
  function XTAPI (line 55) | XTAPI
  function XTAPI (line 81) | XTAPI
  function XTCDECL (line 103) | XTCDECL
  function XTCDECL (line 121) | XTCDECL
  function XTAPI (line 145) | XTAPI
  function XTAPI (line 172) | XTAPI
  function XTAPI (line 197) | XTAPI
  function XTAPI (line 230) | XTAPI
  function XTFASTCALL (line 254) | XTFASTCALL

FILE: xtoskrnl/hl/amd64/runlevel.cc
  function XTFASTCALL (line 19) | XTFASTCALL
  function XTFASTCALL (line 37) | XTFASTCALL
  function XTFASTCALL (line 55) | XTFASTCALL
  function XTFASTCALL (line 73) | XTFASTCALL
  function XTFASTCALL (line 92) | XTFASTCALL

FILE: xtoskrnl/hl/cport.cc
  function XTCDECL (line 31) | XTCDECL
  function XTCDECL (line 105) | XTCDECL
  function XTCDECL (line 151) | XTCDECL
  function XTCDECL (line 247) | XTCDECL

FILE: xtoskrnl/hl/exports.cc
  function XTCLINK (line 22) | XTCLINK
  function XTCLINK (line 40) | XTCLINK
  function XTCLINK (line 58) | XTCLINK
  function XTCLINK (line 76) | XTCLINK
  function XTCLINK (line 94) | XTCLINK
  function XTCLINK (line 112) | XTCLINK
  function XTCLINK (line 130) | XTCLINK
  function XTCLINK (line 148) | XTCLINK
  function XTCLINK (line 169) | XTCLINK
  function XTCLINK (line 191) | XTCLINK
  function XTCLINK (line 213) | XTCLINK
  function XTCLINK (line 235) | XTCLINK
  function XTCLINK (line 257) | XTCLINK
  function XTCLINK (line 279) | XTCLINK

FILE: xtoskrnl/hl/fbdev.cc
  function XTAPI (line 24) | XTAPI
  function XTCDECL (line 75) | XTCDECL
  function XTAPI (line 173) | XTAPI
  function XTAPI (line 341) | XTAPI
  function XTAPI (line 386) | XTAPI
  function XTAPI (line 440) | XTAPI
  function XTAPI (line 459) | XTAPI
  function XTAPI (line 483) | XTAPI
  function XTAPI (line 571) | XTAPI
  function XTAPI (line 633) | XTAPI
  function XTAPI (line 698) | XTAPI
  function XTAPI (line 734) | XTAPI

FILE: xtoskrnl/hl/i686/ioport.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 43) | XTCDECL
  function XTCDECL (line 64) | XTCDECL
  function XTCDECL (line 88) | XTCDECL
  function XTCDECL (line 112) | XTCDECL
  function XTCDECL (line 136) | XTCDECL

FILE: xtoskrnl/hl/i686/irq.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 56) | XTAPI
  function XTAPI (line 82) | XTAPI
  function XTCDECL (line 104) | XTCDECL
  function XTCDECL (line 122) | XTCDECL
  function XTAPI (line 146) | XTAPI
  function XTAPI (line 171) | XTAPI
  function XTAPI (line 196) | XTAPI
  function XTAPI (line 229) | XTAPI
  function XTFASTCALL (line 253) | XTFASTCALL

FILE: xtoskrnl/hl/i686/runlevel.cc
  function XTFASTCALL (line 19) | XTFASTCALL
  function XTFASTCALL (line 37) | XTFASTCALL
  function XTFASTCALL (line 55) | XTFASTCALL
  function XTFASTCALL (line 93) | XTFASTCALL
  function XTFASTCALL (line 149) | XTFASTCALL

FILE: xtoskrnl/hl/init.cc
  function XTAPI (line 19) | XTAPI

FILE: xtoskrnl/hl/ioreg.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 39) | XTAPI
  function XTAPI (line 56) | XTAPI
  function XTAPI (line 76) | XTAPI
  function XTAPI (line 97) | XTAPI
  function XTAPI (line 118) | XTAPI

FILE: xtoskrnl/hl/x86/cpu.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 56) | XTAPI

FILE: xtoskrnl/hl/x86/firmware.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTFASTCALL (line 46) | XTFASTCALL

FILE: xtoskrnl/hl/x86/pic.cc
  function XTAPI (line 29) | XTAPI
  function XTAPI (line 80) | XTAPI
  function XTAPI (line 103) | XTAPI
  function XTAPI (line 131) | XTAPI
  function XTAPI (line 146) | XTAPI
  function XTAPI (line 245) | XTAPI
  function XTAPI (line 274) | XTAPI
  function XTCDECL (line 310) | XTCDECL
  function XTAPI (line 334) | XTAPI
  function XTAPI (line 450) | XTAPI
  function XTAPI (line 534) | XTAPI
  function XTAPI (line 614) | XTAPI
  function XTFASTCALL (line 635) | XTFASTCALL
  function XTFASTCALL (line 664) | XTFASTCALL
  function XTFASTCALL (line 689) | XTFASTCALL
  function XTAPI (line 724) | XTAPI
  function XTAPI (line 763) | XTAPI
  function XTAPI (line 832) | XTAPI
  function XTAPI (line 862) | XTAPI
  function XTAPI (line 957) | XTAPI
  function XTFASTCALL (line 974) | XTFASTCALL
  function XTFASTCALL (line 1011) | XTFASTCALL
  function XTFASTCALL (line 1044) | XTFASTCALL
  function XTFASTCALL (line 1073) | XTFASTCALL

FILE: xtoskrnl/hl/x86/rtc.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 199) | XTAPI

FILE: xtoskrnl/hl/x86/timer.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 72) | XTAPI
  function XTAPI (line 112) | XTAPI
  function XTAPI (line 135) | XTAPI
  function XTCDECL (line 215) | XTCDECL
  function XTCDECL (line 307) | XTCDECL
  function XTAPI (line 351) | XTAPI
  function XTAPI (line 399) | XTAPI
  function XTAPI (line 457) | XTAPI
  function XTAPI (line 514) | XTAPI
  function XTAPI (line 553) | XTAPI
  function XTAPI (line 771) | XTAPI
  function XTAPI (line 798) | XTAPI
  function XTAPI (line 830) | XTAPI
  function XTAPI (line 845) | XTAPI
  function XTAPI (line 911) | XTAPI
  function XTAPI (line 928) | XTAPI
  function XTAPI (line 989) | XTAPI
  function XTAPI (line 1033) | XTAPI
  function XTAPI (line 1086) | XTAPI
  function XTAPI (line 1119) | XTAPI
  function XTAPI (line 1137) | XTAPI
  function XTAPI (line 1195) | XTAPI
  function XTAPI (line 1239) | XTAPI
  function XTAPI (line 1310) | XTAPI
  function XTAPI (line 1350) | XTAPI
  function XTAPI (line 1375) | XTAPI
  function XTAPI (line 1404) | XTAPI

FILE: xtoskrnl/includes/ar/amd64/cpufunc.hh
  type AR (line 16) | namespace AR
    class CpuFunctions (line 18) | class CpuFunctions

FILE: xtoskrnl/includes/ar/amd64/procsup.hh
  type AR (line 16) | namespace AR
    class ProcessorSupport (line 18) | class ProcessorSupport

FILE: xtoskrnl/includes/ar/amd64/traps.hh
  type AR (line 16) | namespace AR
    class Traps (line 18) | class Traps

FILE: xtoskrnl/includes/ar/i686/cpufunc.hh
  type AR (line 16) | namespace AR
    class CpuFunctions (line 18) | class CpuFunctions

FILE: xtoskrnl/includes/ar/i686/procsup.hh
  type AR (line 16) | namespace AR
    class ProcessorSupport (line 18) | class ProcessorSupport

FILE: xtoskrnl/includes/ar/i686/traps.hh
  type AR (line 16) | namespace AR
    class Traps (line 18) | class Traps

FILE: xtoskrnl/includes/ex/rundown.hh
  type EX (line 16) | namespace EX
    class Rundown (line 18) | class Rundown

FILE: xtoskrnl/includes/hl/acpi.hh
  type HL (line 16) | namespace HL
    class Acpi (line 18) | class Acpi

FILE: xtoskrnl/includes/hl/cport.hh
  type HL (line 16) | namespace HL
    class ComPort (line 18) | class ComPort

FILE: xtoskrnl/includes/hl/cpu.hh
  type HL (line 16) | namespace HL
    class Cpu (line 18) | class Cpu

FILE: xtoskrnl/includes/hl/fbdev.hh
  type HL (line 16) | namespace HL
    class FrameBuffer (line 18) | class FrameBuffer

FILE: xtoskrnl/includes/hl/firmware.hh
  type HL (line 16) | namespace HL
    class Firmware (line 18) | class Firmware

FILE: xtoskrnl/includes/hl/init.hh
  type HL (line 16) | namespace HL
    class Init (line 18) | class Init

FILE: xtoskrnl/includes/hl/ioport.hh
  type HL (line 16) | namespace HL
    class IoPort (line 18) | class IoPort

FILE: xtoskrnl/includes/hl/ioreg.hh
  type HL (line 16) | namespace HL
    class IoRegister (line 18) | class IoRegister

FILE: xtoskrnl/includes/hl/irq.hh
  type HL (line 16) | namespace HL
    class Irq (line 18) | class Irq

FILE: xtoskrnl/includes/hl/pic.hh
  type HL (line 16) | namespace HL
    class Pic (line 18) | class Pic

FILE: xtoskrnl/includes/hl/rtc.hh
  type HL (line 16) | namespace HL
    class Rtc (line 18) | class Rtc

FILE: xtoskrnl/includes/hl/runlevel.hh
  type HL (line 16) | namespace HL
    class RunLevel (line 18) | class RunLevel

FILE: xtoskrnl/includes/hl/timer.hh
  type HL (line 16) | namespace HL
    class Timer (line 18) | class Timer

FILE: xtoskrnl/includes/kd/dbgio.hh
  type KD (line 16) | namespace KD
    class DebugIo (line 18) | class DebugIo

FILE: xtoskrnl/includes/ke/apc.hh
  type KE (line 16) | namespace KE
    class Apc (line 18) | class Apc

FILE: xtoskrnl/includes/ke/bootinfo.hh
  type KE (line 16) | namespace KE
    class BootInformation (line 18) | class BootInformation
      method PKERNEL_INITIALIZATION_BLOCK (line 36) | PKERNEL_INITIALIZATION_BLOCK GetInitializationBlock(VOID)

FILE: xtoskrnl/includes/ke/crash.hh
  type KE (line 16) | namespace KE
    class Crash (line 18) | class Crash

FILE: xtoskrnl/includes/ke/dispatch.hh
  type KE (line 16) | namespace KE
    class Dispatcher (line 18) | class Dispatcher

FILE: xtoskrnl/includes/ke/dpc.hh
  type KE (line 16) | namespace KE
    class Dpc (line 18) | class Dpc

FILE: xtoskrnl/includes/ke/event.hh
  type KE (line 16) | namespace KE
    class Event (line 18) | class Event

FILE: xtoskrnl/includes/ke/guard.hh
  type KE (line 16) | namespace KE
    class QueuedSpinLockGuard (line 18) | class QueuedSpinLockGuard
      method QueuedSpinLockGuard (line 24) | QueuedSpinLockGuard(IN OUT KSPIN_LOCK_QUEUE_LEVEL LockLevel)
      method QueuedSpinLockGuard (line 35) | QueuedSpinLockGuard(const QueuedSpinLockGuard&) = delete;
      method QueuedSpinLockGuard (line 36) | QueuedSpinLockGuard& operator=(const QueuedSpinLockGuard&) = delete;
    class SpinLockGuard (line 39) | class SpinLockGuard
      method SpinLockGuard (line 45) | SpinLockGuard(IN OUT PKSPIN_LOCK SpinLock)
      method SpinLockGuard (line 56) | SpinLockGuard(const SpinLockGuard&) = delete;
      method SpinLockGuard (line 57) | SpinLockGuard& operator=(const SpinLockGuard&) = delete;

FILE: xtoskrnl/includes/ke/kprocess.hh
  type KE (line 16) | namespace KE
    class KProcess (line 18) | class KProcess

FILE: xtoskrnl/includes/ke/krnlinit.hh
  type KE (line 16) | namespace KE
    class KernelInit (line 18) | class KernelInit

FILE: xtoskrnl/includes/ke/kthread.hh
  type KE (line 16) | namespace KE
    class KThread (line 18) | class KThread

FILE: xtoskrnl/includes/ke/kubsan.hh
  type KE (line 16) | namespace KE
    class KUbsan (line 18) | class KUbsan

FILE: xtoskrnl/includes/ke/proc.hh
  type KE (line 16) | namespace KE
    class Processor (line 18) | class Processor

FILE: xtoskrnl/includes/ke/runlevel.hh
  type KE (line 16) | namespace KE
    class RunLevel (line 18) | class RunLevel
    class LowerRunLevel (line 26) | class LowerRunLevel
      method LowerRunLevel (line 32) | LowerRunLevel(KRUNLEVEL RunLevel)
      method LowerRunLevel (line 43) | LowerRunLevel(const LowerRunLevel&) = delete;
      method LowerRunLevel (line 44) | LowerRunLevel& operator=(const LowerRunLevel&) = delete;
    class RaiseRunLevel (line 47) | class RaiseRunLevel
      method RaiseRunLevel (line 53) | RaiseRunLevel(KRUNLEVEL RunLevel)
      method RaiseRunLevel (line 64) | RaiseRunLevel(const RaiseRunLevel&) = delete;
      method RaiseRunLevel (line 65) | RaiseRunLevel& operator=(const RaiseRunLevel&) = delete;

FILE: xtoskrnl/includes/ke/semphore.hh
  type KE (line 16) | namespace KE
    class Semaphore (line 18) | class Semaphore

FILE: xtoskrnl/includes/ke/shdata.hh
  type KE (line 16) | namespace KE
    class SharedData (line 18) | class SharedData

FILE: xtoskrnl/includes/ke/spinlock.hh
  type KE (line 16) | namespace KE
    class SpinLock (line 18) | class SpinLock

FILE: xtoskrnl/includes/ke/sysres.hh
  type KE (line 16) | namespace KE
    class SystemResources (line 18) | class SystemResources

FILE: xtoskrnl/includes/ke/systime.hh
  type KE (line 16) | namespace KE
    class SystemTime (line 18) | class SystemTime

FILE: xtoskrnl/includes/ke/timer.hh
  type KE (line 16) | namespace KE
    class Timer (line 18) | class Timer

FILE: xtoskrnl/includes/mm/alloc.hh
  type MM (line 17) | namespace MM
    class Allocator (line 19) | class Allocator final : private Pool

FILE: xtoskrnl/includes/mm/amd64/pagemap.hh
  type MM (line 16) | namespace MM
    class PageMap (line 18) | class PageMap
    class PageMapBasic (line 76) | class PageMapBasic final : public PageMap
    class PageMapXpa (line 86) | class PageMapXpa final : public PageMap

FILE: xtoskrnl/includes/mm/amd64/paging.hh
  type MM (line 16) | namespace MM
    class Paging (line 18) | class Paging

FILE: xtoskrnl/includes/mm/amd64/pte.hh
  type MM (line 16) | namespace MM
    class Pte (line 18) | class Pte

FILE: xtoskrnl/includes/mm/colors.hh
  type MM (line 16) | namespace MM
    class Colors (line 18) | class Colors

FILE: xtoskrnl/includes/mm/guard.hh
  type MM (line 18) | namespace MM
    class PoolLockGuard (line 20) | class PoolLockGuard
      method PoolLockGuard (line 28) | PoolLockGuard(IN MMPOOL_TYPE PoolType)
      method PoolLockGuard (line 57) | PoolLockGuard(const PoolLockGuard&) = delete;
      method PoolLockGuard (line 58) | PoolLockGuard& operator=(const PoolLockGuard&) = delete;
      method VOID (line 60) | VOID Release(VOID)

FILE: xtoskrnl/includes/mm/hlpool.hh
  type MM (line 16) | namespace MM
    class HardwarePool (line 18) | class HardwarePool

FILE: xtoskrnl/includes/mm/i686/pagemap.hh
  type MM (line 16) | namespace MM
    class PageMap (line 18) | class PageMap
    class PageMapBasic (line 71) | class PageMapBasic final : public PageMap
    class PageMapXpa (line 110) | class PageMapXpa final : public PageMap

FILE: xtoskrnl/includes/mm/i686/paging.hh
  type MM (line 16) | namespace MM
    class Paging (line 18) | class Paging

FILE: xtoskrnl/includes/mm/i686/pte.hh
  type MM (line 16) | namespace MM
    class Pte (line 18) | class Pte

FILE: xtoskrnl/includes/mm/kpool.hh
  type MM (line 16) | namespace MM
    class KernelPool (line 18) | class KernelPool

FILE: xtoskrnl/includes/mm/mmgr.hh
  type MM (line 16) | namespace MM
    class Manager (line 18) | class Manager

FILE: xtoskrnl/includes/mm/pfault.hh
  type MM (line 16) | namespace MM
    class PageFault (line 18) | class PageFault

FILE: xtoskrnl/includes/mm/pfn.hh
  type MM (line 16) | namespace MM
    class Pfn (line 18) | class Pfn

FILE: xtoskrnl/includes/mm/pool.hh
  type MM (line 16) | namespace MM
    class Pool (line 18) | class Pool

FILE: xtoskrnl/includes/po/idle.hh
  type PO (line 16) | namespace PO
    class Idle (line 18) | class Idle

FILE: xtoskrnl/includes/rtl/atomic.hh
  type RTL (line 16) | namespace RTL
    class Atomic (line 18) | class Atomic

FILE: xtoskrnl/includes/rtl/bitmap.hh
  type RTL (line 16) | namespace RTL
    class BitMap (line 18) | class BitMap

FILE: xtoskrnl/includes/rtl/dispatch.hh
  type RTL (line 16) | namespace RTL
    class Dispatcher (line 18) | class Dispatcher

FILE: xtoskrnl/includes/rtl/endian.hh
  type RTL (line 16) | namespace RTL
    class Endianness (line 18) | class Endianness

FILE: xtoskrnl/includes/rtl/guid.hh
  type RTL (line 16) | namespace RTL
    class Guid (line 18) | class Guid

FILE: xtoskrnl/includes/rtl/llist.hh
  type RTL (line 17) | namespace RTL
    class LinkedList (line 19) | class LinkedList

FILE: xtoskrnl/includes/rtl/math.hh
  type RTL (line 16) | namespace RTL
    class Math (line 18) | class Math

FILE: xtoskrnl/includes/rtl/memory.hh
  type RTL (line 16) | namespace RTL
    class Memory (line 18) | class Memory

FILE: xtoskrnl/includes/rtl/sha1.hh
  type RTL (line 16) | namespace RTL
    class SHA1 (line 18) | class SHA1

FILE: xtoskrnl/includes/rtl/slist.hh
  type RTL (line 16) | namespace RTL
    class SinglyList (line 18) | class SinglyList

FILE: xtoskrnl/includes/rtl/string.hh
  type RTL (line 16) | namespace RTL
    class String (line 18) | class String

FILE: xtoskrnl/includes/rtl/time.hh
  type RTL (line 16) | namespace RTL
    class Time (line 18) | class Time

FILE: xtoskrnl/includes/rtl/widestr.hh
  type RTL (line 16) | namespace RTL
    class WideString (line 18) | class WideString

FILE: xtoskrnl/kd/dbgio.cc
  function XTCDECL (line 25) | XTCDECL
  function XTCDECL (line 55) | XTCDECL
  function XTAPI (line 89) | XTAPI
  function XTAPI (line 218) | XTAPI
  function XTAPI (line 256) | XTAPI
  function XTAPI (line 295) | XTAPI
  function XTAPI (line 364) | XTAPI
  function XTCDECL (line 383) | XTCDECL

FILE: xtoskrnl/kd/exports.cc
  function XTCLINK (line 25) | XTCLINK

FILE: xtoskrnl/ke/amd64/dispatch.cc
  function XTFASTCALL (line 25) | XTFASTCALL
  function XTFASTCALL (line 114) | XTFASTCALL
  function XTFASTCALL (line 137) | XTFASTCALL

FILE: xtoskrnl/ke/amd64/krnlinit.cc
  function XTAPI (line 24) | XTAPI
  function XTAPI (line 59) | XTAPI
  function XTAPI (line 129) | XTAPI
  function XTAPI (line 152) | XTAPI
  function XTAPI (line 180) | XTAPI

FILE: xtoskrnl/ke/amd64/kthread.cc
  function XTAPI (line 34) | XTAPI

FILE: xtoskrnl/ke/amd64/proc.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 34) | XTAPI
  function XTAPI (line 48) | XTAPI
  function XTAPI (line 62) | XTAPI
  function XTAPI (line 79) | XTAPI
  function XTAPI (line 101) | XTAPI
  function XTAPI (line 139) | XTAPI
  function XTAPI (line 167) | XTAPI
  function XTAPI (line 190) | XTAPI

FILE: xtoskrnl/ke/apc.cc
  function XTAPI (line 43) | XTAPI

FILE: xtoskrnl/ke/bootinfo.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 33) | XTAPI
  function XTAPI (line 53) | XTAPI
  function XTAPI (line 123) | XTAPI
  function XTAPI (line 186) | XTAPI
  function XTAPI (line 200) | XTAPI
  function XTAPI (line 217) | XTAPI

FILE: xtoskrnl/ke/crash.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 42) | XTAPI
  function XTAPI (line 71) | XTAPI

FILE: xtoskrnl/ke/dispatch.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTAPI (line 45) | XTAPI

FILE: xtoskrnl/ke/dpc.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 61) | XTAPI
  function XTAPI (line 91) | XTAPI
  function XTAPI (line 109) | XTAPI
  function XTAPI (line 126) | XTAPI
  function XTFASTCALL (line 146) | XTFASTCALL

FILE: xtoskrnl/ke/event.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 46) | XTAPI
  function XTAPI (line 76) | XTAPI

FILE: xtoskrnl/ke/exports.cc
  function XTCLINK (line 22) | XTCLINK
  function XTCLINK (line 40) | XTCLINK
  function XTCLINK (line 61) | XTCLINK
  function XTCLINK (line 80) | XTCLINK
  function XTCLINK (line 95) | XTCLINK
  function XTCLINK (line 116) | XTCLINK
  function XTCLINK (line 135) | XTCLINK
  function XTCLINK (line 174) | XTCLINK
  function XTCLINK (line 206) | XTCLINK
  function XTCLINK (line 233) | XTCLINK
  function XTCLINK (line 256) | XTCLINK
  function XTCLINK (line 281) | XTCLINK
  function XTCLINK (line 301) | XTCLINK
  function XTCLINK (line 319) | XTCLINK
  function XTCLINK (line 337) | XTCLINK
  function XTCLINK (line 355) | XTCLINK
  function XTCLINK (line 373) | XTCLINK
  function XTCLINK (line 400) | XTCLINK
  function XTCLINK (line 421) | XTCLINK
  function XTCLINK (line 439) | XTCLINK
  function XTCLINK (line 460) | XTCLINK
  function XTCLINK (line 482) | XTCLINK
  function XTCLINK (line 510) | XTCLINK
  function XTCLINK (line 531) | XTCLINK
  function XTCLINK (line 549) | XTCLINK

FILE: xtoskrnl/ke/i686/dispatch.cc
  function XTFASTCALL (line 25) | XTFASTCALL
  function XTFASTCALL (line 72) | XTFASTCALL
  function XTFASTCALL (line 95) | XTFASTCALL

FILE: xtoskrnl/ke/i686/krnlinit.cc
  function XTAPI (line 24) | XTAPI
  function XTAPI (line 59) | XTAPI
  function XTAPI (line 129) | XTAPI
  function XTAPI (line 152) | XTAPI
  function XTAPI (line 180) | XTAPI

FILE: xtoskrnl/ke/i686/kthread.cc
  function XTAPI (line 34) | XTAPI

FILE: xtoskrnl/ke/i686/proc.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 34) | XTAPI
  function XTAPI (line 48) | XTAPI
  function XTAPI (line 62) | XTAPI
  function XTAPI (line 79) | XTAPI
  function XTAPI (line 101) | XTAPI
  function XTAPI (line 139) | XTAPI
  function XTAPI (line 167) | XTAPI
  function XTAPI (line 190) | XTAPI

FILE: xtoskrnl/ke/kprocess.cc
  function XTAPI (line 12) | XTAPI
  function XTAPI (line 41) | XTAPI

FILE: xtoskrnl/ke/krnlinit.cc
  function XTAPI (line 25) | XTAPI

FILE: xtoskrnl/ke/kthread.cc
  function XTAPI (line 12) | XTAPI
  function XTAPI (line 50) | XTAPI
  function XTAPI (line 194) | XTAPI
  function XTAPI (line 223) | XTAPI
  function XTAPI (line 244) | XTAPI
  function XTAPI (line 267) | XTAPI

FILE: xtoskrnl/ke/kubsan.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 43) | XTCDECL
  function XTCDECL (line 69) | XTCDECL
  function XTCDECL (line 103) | XTCDECL
  function XTCDECL (line 148) | XTCDECL
  function XTCDECL (line 185) | XTCDECL
  function XTCDECL (line 233) | XTCDECL
  function XTCDECL (line 269) | XTCDECL
  function XTCDECL (line 308) | XTCDECL
  function XTCDECL (line 341) | XTCDECL
  function XTCDECL (line 384) | XTCDECL
  function XTCDECL (line 420) | XTCDECL
  function XTCDECL (line 456) | XTCDECL
  function XTCDECL (line 490) | XTCDECL
  function XTCDECL (line 526) | XTCDECL
  function XTCDECL (line 564) | XTCDECL
  function XTCDECL (line 605) | XTCDECL
  function XTCDECL (line 668) | XTCDECL
  function XTCDECL (line 698) | XTCDECL
  function XTCLINK (line 724) | XTCLINK
  function XTCLINK (line 753) | XTCLINK
  function XTCLINK (line 782) | XTCLINK
  function XTCLINK (line 808) | XTCLINK
  function XTCLINK (line 830) | XTCLINK
  function XTCLINK (line 857) | XTCLINK
  function XTCLINK (line 883) | XTCLINK
  function XTCLINK (line 908) | XTCLINK
  function XTCLINK (line 936) | XTCLINK
  function XTCLINK (line 965) | XTCLINK
  function XTCLINK (line 994) | XTCLINK
  function XTCLINK (line 1020) | XTCLINK
  function XTCLINK (line 1045) | XTCLINK

FILE: xtoskrnl/ke/runlevel.cc
  function XTFASTCALL (line 19) | XTFASTCALL
  function XTFASTCALL (line 36) | XTFASTCALL
  function XTFASTCALL (line 63) | XTFASTCALL

FILE: xtoskrnl/ke/semphore.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 53) | XTAPI
  function XTAPI (line 80) | XTAPI

FILE: xtoskrnl/ke/shdata.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 48) | XTAPI
  function XTAPI (line 63) | XTAPI
  function XTAPI (line 92) | XTAPI
  function XTAPI (line 112) | XTAPI
  function XTAPI (line 134) | XTAPI
  function XTAPI (line 192) | XTAPI
  function XTAPI (line 212) | XTAPI

FILE: xtoskrnl/ke/spinlock.cc
  function XTFASTCALL (line 23) | XTFASTCALL
  function XTFASTCALL (line 41) | XTFASTCALL
  function XTAPI (line 67) | XTAPI
  function XTAPI (line 84) | XTAPI
  function XTAPI (line 142) | XTAPI
  function XTFASTCALL (line 160) | XTFASTCALL
  function XTFASTCALL (line 178) | XTFASTCALL
  function XTFASTCALL (line 199) | XTFASTCALL

FILE: xtoskrnl/ke/sysres.cc
  function XTAPI (line 25) | XTAPI
  function XTAPI (line 50) | XTAPI
  function XTAPI (line 138) | XTAPI
  function XTAPI (line 154) | XTAPI
  function XTAPI (line 218) | XTAPI

FILE: xtoskrnl/ke/systime.cc
  function XTAPI (line 23) | XTAPI
  function XTAPI (line 53) | XTAPI
  function XTAPI (line 115) | XTAPI
  function XTFASTCALL (line 148) | XTFASTCALL

FILE: xtoskrnl/ke/timer.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 62) | XTAPI
  function XTAPI (line 80) | XTAPI
  function XTAPI (line 101) | XTAPI
  function XTAPI (line 130) | XTAPI
  function XTAPI (line 178) | XTAPI
  function XTAPI (line 198) | XTAPI

FILE: xtoskrnl/mm/alloc.cc
  function XTAPI (line 25) | XTAPI
  function XTAPI (line 199) | XTAPI
  function XTAPI (line 226) | XTAPI
  function XTAPI (line 278) | XTAPI
  function XTAPI (line 307) | XTAPI
  function XTINLINE (line 556) | XTINLINE
  function XTINLINE (line 582) | XTINLINE
  function XTAPI (line 603) | XTAPI
  function XTAPI (line 744) | XTAPI
  function XTAPI (line 992) | XTAPI
  function XTAPI (line 1013) | XTAPI
  function XTAPI (line 1033) | XTAPI
  function XTAPI (line 1066) | XTAPI
  function XTAPI (line 1087) | XTAPI
  function XTAPI (line 1289) | XTAPI
  function XTAPI (line 1399) | XTAPI
  function XTAPI (line 1524) | XTAPI
  function XTAPI (line 1631) | XTAPI
  function XTAPI (line 1797) | XTAPI
  function XTAPI (line 1919) | XTAPI
  function XTAPI (line 2007) | XTAPI
  function XTAPI (line 2093) | XTAPI

FILE: xtoskrnl/mm/amd64/mmgr.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 52) | XTAPI
  function XTAPI (line 82) | XTAPI
  function XTAPI (line 132) | XTAPI
  function XTAPI (line 155) | XTAPI
  function XTAPI (line 198) | XTAPI
  function XTAPI (line 262) | XTAPI

FILE: xtoskrnl/mm/amd64/pagemap.cc
  function XTAPI (line 25) | XTAPI
  function XTAPI (line 44) | XTAPI
  function XTAPI (line 67) | XTAPI
  function XTAPI (line 85) | XTAPI
  function XTAPI (line 103) | XTAPI
  function XTAPI (line 121) | XTAPI
  function XTAPI (line 139) | XTAPI
  function XTAPI (line 160) | XTAPI
  function XTAPI (line 178) | XTAPI
  function XTAPI (line 195) | XTAPI
  function XTAPI (line 209) | XTAPI
  function XTAPI (line 226) | XTAPI
  function XTAPI (line 247) | XTAPI
  function XTAPI (line 265) | XTAPI
  function XTAPI (line 286) | XTAPI
  function XTAPI (line 304) | XTAPI
  function XTAPI (line 322) | XTAPI
  function XTAPI (line 346) | XTAPI
  function XTAPI (line 365) | XTAPI
  function XTAPI (line 380) | XTAPI
  function XTAPI (line 398) | XTAPI
  function XTAPI (line 416) | XTAPI
  function XTAPI (line 434) | XTAPI
  function XTAPI (line 452) | XTAPI
  function XTAPI (line 473) | XTAPI
  function XTAPI (line 488) | XTAPI
  function XTAPI (line 505) | XTAPI
  function XTAPI (line 526) | XTAPI
  function XTAPI (line 548) | XTAPI
  function XTAPI (line 573) | XTAPI
  function XTAPI (line 598) | XTAPI
  function XTAPI (line 622) | XTAPI
  function XTAPI (line 646) | XTAPI
  function XTAPI (line 677) | XTAPI
  function XTAPI (line 696) | XTAPI
  function XTAPI (line 714) | XTAPI
  function XTAPI (line 732) | XTAPI
  function XTAPI (line 750) | XTAPI
  function XTAPI (line 765) | XTAPI
  function XTAPI (line 793) | XTAPI
  function XTAPI (line 811) | XTAPI
  function XTAPI (line 829) | XTAPI
  function XTAPI (line 847) | XTAPI
  function XTAPI (line 862) | XTAPI

FILE: xtoskrnl/mm/amd64/paging.cc
  function XTAPI (line 20) | XTAPI
  function XTAPI (line 38) | XTAPI
  function XTAPI (line 56) | XTAPI
  function XTAPI (line 74) | XTAPI
  function XTAPI (line 92) | XTAPI
  function XTAPI (line 116) | XTAPI
  function XTFASTCALL (line 171) | XTFASTCALL

FILE: xtoskrnl/mm/amd64/pfault.cc
  function XTFASTCALL (line 20) | XTFASTCALL

FILE: xtoskrnl/mm/amd64/pfn.cc
  function XTAPI (line 26) | XTAPI
  function XTAPI (line 119) | XTAPI
  function XTAPI (line 216) | XTAPI
  function XTAPI (line 279) | XTAPI

FILE: xtoskrnl/mm/amd64/pool.cc
  function XTAPI (line 19) | XTAPI

FILE: xtoskrnl/mm/amd64/pte.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 58) | XTAPI
  function XTAPI (line 87) | XTAPI
  function XTAPI (line 172) | XTAPI
  function XTAPI (line 219) | XTAPI
  function XTAPI (line 266) | XTAPI

FILE: xtoskrnl/mm/colors.cc
  function XTAPI (line 19) | XTAPI
  function XTAPI (line 43) | XTAPI
  function XTAPI (line 62) | XTAPI
  function XTAPI (line 76) | XTAPI
  function XTAPI (line 91) | XTAPI
  function XTAPI (line 106) | XTAPI
  function XTAPI (line 121) | XTAPI

FILE: xtoskrnl/mm/exports.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 56) | XTAPI
  function XTAPI (line 76) | XTAPI
  function XTAPI (line 96) | XTAPI

FILE: xtoskrnl/mm/hlpool.cc
  function XTAPI (line 32) | XTAPI
  function XTAPI (line 160) | XTAPI
  function XTAPI (line 214) | XTAPI
  function XTAPI (line 307) | XTAPI
  function XTAPI (line 343) | XTAPI
  function XTAPI (line 381) | XTAPI

FILE: xtoskrnl/mm/i686/mmgr.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 75) | XTAPI
  function XTAPI (line 117) | XTAPI
  function XTAPI (line 172) | XTAPI
  function XTAPI (line 195) | XTAPI
  function XTAPI (line 238) | XTAPI
  function XTAPI (line 296) | XTAPI

FILE: xtoskrnl/mm/i686/pagemap.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 37) | XTAPI
  function XTAPI (line 54) | XTAPI
  function XTAPI (line 75) | XTAPI
  function XTAPI (line 93) | XTAPI
  function XTAPI (line 111) | XTAPI
  function XTAPI (line 129) | XTAPI
  function XTAPI (line 147) | XTAPI
  function XTAPI (line 168) | XTAPI
  function XTAPI (line 183) | XTAPI
  function XTAPI (line 203) | XTAPI
  function XTAPI (line 222) | XTAPI
  function XTAPI (line 240) | XTAPI
  function XTAPI (line 258) | XTAPI
  function XTAPI (line 276) | XTAPI
  function XTAPI (line 294) | XTAPI
  function XTAPI (line 311) | XTAPI
  function XTAPI (line 329) | XTAPI
  function XTAPI (line 350) | XTAPI
  function XTAPI (line 366) | XTAPI
  function XTAPI (line 384) | XTAPI
  function XTAPI (line 402) | XTAPI
  function XTAPI (line 420) | XTAPI
  function XTAPI (line 438) | XTAPI
  function XTAPI (line 453) | XTAPI
  function XTAPI (line 479) | XTAPI
  function XTAPI (line 500) | XTAPI
  function XTAPI (line 522) | XTAPI
  function XTAPI (line 547) | XTAPI
  function XTAPI (line 572) | XTAPI
  function XTAPI (line 596) | XTAPI
  function XTAPI (line 620) | XTAPI
  function XTAPI (line 651) | XTAPI
  function XTAPI (line 673) | XTAPI
  function XTAPI (line 692) | XTAPI
  function XTAPI (line 710) | XTAPI
  function XTAPI (line 728) | XTAPI
  function XTAPI (line 746) | XTAPI
  function XTAPI (line 764) | XTAPI
  function XTAPI (line 781) | XTAPI
  function XTAPI (line 799) | XTAPI
  function XTAPI (line 820) | XTAPI
  function XTAPI (line 836) | XTAPI
  function XTAPI (line 854) | XTAPI
  function XTAPI (line 872) | XTAPI
  function XTAPI (line 890) | XTAPI
  function XTAPI (line 908) | XTAPI
  function XTAPI (line 923) | XTAPI
  function XTAPI (line 949) | XTAPI
  function XTAPI (line 969) | XTAPI
  function XTAPI (line 991) | XTAPI
  function XTAPI (line 1016) | XTAPI
  function XTAPI (line 1041) | XTAPI
  function XTAPI (line 1065) | XTAPI
  function XTAPI (line 1089) | XTAPI
  function XTAPI (line 1120) | XTAPI

FILE: xtoskrnl/mm/i686/paging.cc
  function XTAPI (line 20) | XTAPI
  function XTAPI (line 44) | XTAPI
  function XTFASTCALL (line 97) | XTFASTCALL

FILE: xtoskrnl/mm/i686/pfault.cc
  function XTFASTCALL (line 20) | XTFASTCALL

FILE: xtoskrnl/mm/i686/pfn.cc
  function XTAPI (line 26) | XTAPI
  function XTAPI (line 41) | XTAPI
  function XTAPI (line 137) | XTAPI
  function XTAPI (line 201) | XTAPI

FILE: xtoskrnl/mm/i686/pool.cc
  function XTAPI (line 19) | XTAPI

FILE: xtoskrnl/mm/i686/pte.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 45) | XTAPI
  function XTAPI (line 59) | XTAPI
  function XTAPI (line 120) | XTAPI

FILE: xtoskrnl/mm/kpool.cc
  function XTAPI (line 26) | XTAPI
  function XTAPI (line 102) | XTAPI
  function XTAPI (line 140) | XTAPI
  function XTAPI (line 189) | XTAPI

FILE: xtoskrnl/mm/mmgr.cc
  function XTAPI (line 23) | XTAPI
  function XTAPI (line 52) | XTAPI
  function XTAPI (line 67) | XTAPI
  function XTAPI (line 82) | XTAPI
  function XTAPI (line 96) | XTAPI
  function XTAPI (line 231) | XTAPI
  function XTAPI (line 292) | XTAPI
  function XTAPI (line 334) | XTAPI
  function XTAPI (line 354) | XTAPI

FILE: xtoskrnl/mm/paging.cc
  function XTAPI (line 25) | XTAPI
  function XTAPI (line 44) | XTAPI
  function XTAPI (line 62) | XTAPI
  function XTAPI (line 77) | XTAPI
  function XTAPI (line 92) | XTAPI
  function XTAPI (line 147) | XTAPI
  function XTAPI (line 165) | XTAPI
  function XTAPI (line 183) | XTAPI
  function XTAPI (line 201) | XTAPI
  function XTAPI (line 215) | XTAPI
  function XTAPI (line 232) | XTAPI
  function XTAPI (line 246) | XTAPI
  function XTAPI (line 266) | XTAPI
  function XTAPI (line 284) | XTAPI
  function XTAPI (line 302) | XTAPI
  function XTAPI (line 320) | XTAPI
  function XTAPI (line 338) | XTAPI
  function XTAPI (line 356) | XTAPI
  function XTAPI (line 377) | XTAPI
  function XTAPI (line 393) | XTAPI
  function XTAPI (line 411) | XTAPI
  function XTAPI (line 429) | XTAPI
  function XTAPI (line 447) | XTAPI
  function XTAPI (line 465) | XTAPI
  function XTAPI (line 480) | XTAPI
  function XTAPI (line 494) | XTAPI
  function XTAPI (line 524) | XTAPI
  function XTAPI (line 545) | XTAPI
  function XTAPI (line 567) | XTAPI
  function XTAPI (line 592) | XTAPI
  function XTAPI (line 615) | XTAPI
  function XTAPI (line 639) | XTAPI
  function XTAPI (line 662) | XTAPI
  function XTAPI (line 684) | XTAPI

FILE: xtoskrnl/mm/pfn.cc
  function XTAPI (line 23) | XTAPI
  function XTAPI (line 60) | XTAPI
  function XTAPI (line 113) | XTAPI
  function XTAPI (line 136) | XTAPI
  function XTAPI (line 160) | XTAPI
  function XTAPI (line 253) | XTAPI
  function XTAPI (line 335) | XTAPI
  function XTAPI (line 367) | XTAPI
  function XTAPI (line 382) | XTAPI
  function XTAPI (line 397) | XTAPI
  function XTAPI (line 415) | XTAPI
  function XTAPI (line 449) | XTAPI
  function XTAPI (line 464) | XTAPI
  function XTAPI (line 521) | XTAPI
  function XTAPI (line 635) | XTAPI
  function XTAPI (line 831) | XTAPI
  function XTAPI (line 906) | XTAPI
  function XTAPI (line 958) | XTAPI
  function XTFASTCALL (line 1008) | XTFASTCALL
  function XTAPI (line 1098) | XTAPI
  function XTAPI (line 1216) | XTAPI
  function XTAPI (line 1309) | XTAPI

FILE: xtoskrnl/mm/pool.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 40) | XTAPI
  function XTAPI (line 86) | XTAPI
  function XTAPI (line 107) | XTAPI
  function XTAPI (line 125) | XTAPI
  function XTAPI (line 143) | XTAPI
  function XTAPI (line 161) | XTAPI
  function XTAPI (line 179) | XTAPI
  function XTAPI (line 194) | XTAPI
  function XTAPI (line 260) | XTAPI
  function XTAPI (line 289) | XTAPI
  function XTAPI (line 339) | XTAPI
  function XTAPI (line 358) | XTAPI
  function XTAPI (line 381) | XTAPI
  function XTAPI (line 417) | XTAPI
  function XTAPI (line 448) | XTAPI
  function XTAPI (line 466) | XTAPI
  function XTAPI (line 491) | XTAPI
  function PLIST_ENTRY (line 517) | PLIST_ENTRY
  function XTAPI (line 543) | XTAPI
  function XTAPI (line 595) | XTAPI
  function XTAPI (line 666) | XTAPI
  function XTAPI (line 699) | XTAPI

FILE: xtoskrnl/mm/pte.cc
  function XTAPI (line 31) | XTAPI
  function XTAPI (line 76) | XTAPI
  function XTAPI (line 99) | XTAPI
  function XTAPI (line 114) | XTAPI
  function XTAPI (line 129) | XTAPI
  function XTAPI (line 153) | XTAPI
  function XTAPI (line 190) | XTAPI
  function XTAPI (line 238) | XTAPI
  function XTAPI (line 285) | XTAPI
  function XTAPI (line 333) | XTAPI
  function XTAPI (line 450) | XTAPI

FILE: xtoskrnl/po/idle.cc
  function XTAPI (line 22) | XTAPI
  function XTFASTCALL (line 51) | XTFASTCALL
  function XTAPI (line 68) | XTAPI
  function XTAPI (line 94) | XTAPI

FILE: xtoskrnl/rtl/amd64/dispatch.cc
  function XTAPI (line 25) | XTAPI

FILE: xtoskrnl/rtl/amd64/exsup.cc
  function XTCLINK (line 32) | XTCLINK
  function XTCLINK (line 65) | XTCLINK
  function XTCLINK (line 102) | XTCLINK
  function XTCLINK (line 123) | XTCLINK

FILE: xtoskrnl/rtl/atomic.cc
  function XTFASTCALL (line 25) | XTFASTCALL
  function XTFASTCALL (line 46) | XTFASTCALL
  function XTFASTCALL (line 67) | XTFASTCALL
  function XTFASTCALL (line 88) | XTFASTCALL
  function XTFASTCALL (line 109) | XTFASTCALL
  function XTFASTCALL (line 130) | XTFASTCALL
  function XTFASTCALL (line 154) | XTFASTCALL
  function XTFASTCALL (line 179) | XTFASTCALL
  function XTFASTCALL (line 204) | XTFASTCALL
  function XTFASTCALL (line 229) | XTFASTCALL
  function XTFASTCALL (line 254) | XTFASTCALL
  function XTFASTCALL (line 273) | XTFASTCALL
  function XTFASTCALL (line 290) | XTFASTCALL
  function XTFASTCALL (line 307) | XTFASTCALL
  function XTFASTCALL (line 324) | XTFASTCALL
  function XTFASTCALL (line 344) | XTFASTCALL
  function XTFASTCALL (line 365) | XTFASTCALL
  function XTFASTCALL (line 386) | XTFASTCALL
  function XTFASTCALL (line 407) | XTFASTCALL
  function XTFASTCALL (line 428) | XTFASTCALL
  function XTFASTCALL (line 449) | XTFASTCALL
  function XTFASTCALL (line 470) | XTFASTCALL
  function XTFASTCALL (line 491) | XTFASTCALL
  function XTFASTCALL (line 512) | XTFASTCALL
  function XTFASTCALL (line 531) | XTFASTCALL
  function XTFASTCALL (line 548) | XTFASTCALL
  function XTFASTCALL (line 565) | XTFASTCALL
  function XTFASTCALL (line 582) | XTFASTCALL
  function XTFASTCALL (line 599) | XTFASTCALL
  function XTFASTCALL (line 619) | XTFASTCALL
  function XTFASTCALL (line 640) | XTFASTCALL
  function XTFASTCALL (line 661) | XTFASTCALL
  function XTFASTCALL (line 682) | XTFASTCALL
  function XTFASTCALL (line 700) | XTFASTCALL
  function XTFASTCALL (line 744) | XTFASTCALL
  function XTFASTCALL (line 786) | XTFASTCALL
  function XTFASTCALL (line 807) | XTFASTCALL
  function XTFASTCALL (line 828) | XTFASTCALL
  function XTFASTCALL (line 849) | XTFASTCALL

FILE: xtoskrnl/rtl/bitmap.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 43) | XTAPI
  function XTAPI (line 75) | XTAPI
  function XTAPI (line 149) | XTAPI
  function XTAPI (line 190) | XTAPI
  function XTAPI (line 240) | XTAPI
  function XTAPI (line 275) | XTAPI
  function XTAPI (line 365) | XTAPI
  function XTAPI (line 391) | XTAPI
  function XTAPI (line 417) | XTAPI
  function XTAPI (line 438) | XTAPI
  function XTAPI (line 459) | XTAPI
  function XTAPI (line 491) | XTAPI
  function XTAPI (line 565) | XTAPI
  function XTAPI (line 600) | XTAPI

FILE: xtoskrnl/rtl/endian.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTFASTCALL (line 40) | XTFASTCALL
  function XTFASTCALL (line 60) | XTFASTCALL

FILE: xtoskrnl/rtl/exports.cc
  function XTCLINK (line 22) | XTCLINK
  function XTCLINK (line 43) | XTCLINK
  function XTCLINK (line 68) | XTCLINK
  function XTCLINK (line 94) | XTCLINK
  function XTAPI (line 117) | XTAPI
  function XTCLINK (line 141) | XTCLINK
  function XTCLINK (line 167) | XTCLINK
  function XTCLINK (line 193) | XTCLINK
  function XTCLINK (line 219) | XTCLINK
  function XTCLINK (line 245) | XTCLINK
  function XTCLINK (line 271) | XTCLINK
  function XTCLINK (line 297) | XTCLINK
  function XTCLINK (line 317) | XTCLINK
  function XTCLINK (line 335) | XTCLINK
  function XTCLINK (line 359) | XTCLINK
  function XTCLINK (line 385) | XTCLINK
  function XTCLINK (line 411) | XTCLINK
  function XTCLINK (line 437) | XTCLINK
  function XTCLINK (line 463) | XTCLINK
  function XTCLINK (line 489) | XTCLINK
  function XTCLINK (line 512) | XTCLINK
  function XTCLINK (line 534) | XTCLINK
  function XTCLINK (line 556) | XTCLINK
  function XTCLINK (line 578) | XTCLINK
  function XTCLINK (line 603) | XTCLINK
  function XTCLINK (line 623) | XTCLINK
  function XTCLINK (line 644) | XTCLINK
  function XTCLINK (line 666) | XTCLINK
  function XTCLINK (line 685) | XTCLINK
  function XTCLINK (line 703) | XTCLINK
  function XTCLINK (line 728) | XTCLINK
  function XTCLINK (line 751) | XTCLINK
  function XTCLINK (line 770) | XTCLINK
  function XTCLINK (line 791) | XTCLINK
  function XTCLINK (line 813) | XTCLINK
  function XTCLINK (line 838) | XTCLINK
  function XTCLINK (line 858) | XTCLINK
  function XTCLINK (line 879) | XTCLINK
  function XTCLINK (line 904) | XTCLINK
  function XTCLINK (line 930) | XTCLINK
  function XTCLINK (line 956) | XTCLINK
  function XTCLINK (line 979) | XTCLINK
  function XTCLINK (line 1004) | XTCLINK
  function XTCLINK (line 1027) | XTCLINK
  function XTCLINK (line 1050) | XTCLINK
  function XTCLINK (line 1073) | XTCLINK
  function XTCLINK (line 1098) | XTCLINK
  function XTCLINK (line 1124) | XTCLINK
  function XTCLINK (line 1144) | XTCLINK
  function XTCLINK (line 1162) | XTCLINK
  function XTCLINK (line 1180) | XTCLINK
  function XTCLINK (line 1198) | XTCLINK
  function XTCLINK (line 1216) | XTCLINK
  function XTCLINK (line 1234) | XTCLINK
  function XTCLINK (line 1252) | XTCLINK
  function XTCLINK (line 1270) | XTCLINK
  function XTCLINK (line 1288) | XTCLINK
  function XTCLINK (line 1306) | XTCLINK
  function XTCLINK (line 1327) | XTCLINK
  function XTCLINK (line 1349) | XTCLINK

FILE: xtoskrnl/rtl/guid.cc
  function XTAPI (line 25) | XTAPI

FILE: xtoskrnl/rtl/i686/dispatch.cc
  function XTAPI (line 25) | XTAPI

FILE: xtoskrnl/rtl/i686/exsup.cc
  function XTCLINK (line 32) | XTCLINK
  function XTCLINK (line 65) | XTCLINK
  function XTCLINK (line 102) | XTCLINK
  function XTCLINK (line 123) | XTCLINK

FILE: xtoskrnl/rtl/i686/intrin.cc
  function XTCLINK (line 25) | XTCLINK
  function XTCLINK (line 51) | XTCLINK
  function XTCLINK (line 74) | XTCLINK
  function XTCLINK (line 100) | XTCLINK
  function XTCLINK (line 126) | XTCLINK
  function XTCLINK (line 150) | XTCLINK

FILE: xtoskrnl/rtl/llist.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 47) | XTCDECL
  function XTCDECL (line 66) | XTCDECL
  function XTCDECL (line 88) | XTCDECL
  function XTCDECL (line 113) | XTCDECL
  function XTCDECL (line 135) | XTCDECL
  function XTCDECL (line 153) | XTCDECL
  function XTCDECL (line 199) | XTCDECL
  function XTCDECL (line 221) | XTCDECL
  function XTCDECL (line 263) | XTCDECL

FILE: xtoskrnl/rtl/math.cc
  function XTAPI (line 22) | XTAPI
  function XTAPI (line 43) | XTAPI
  function XTAPI (line 64) | XTAPI
  function XTAPI (line 82) | XTAPI
  function XTAPI (line 100) | XTAPI
  function XTAPI (line 118) | XTAPI
  function XTAPI (line 142) | XTAPI
  function XTAPI (line 180) | XTAPI
  function XTAPI (line 225) | XTAPI
  function XTAPI (line 258) | XTAPI
  function XTAPI (line 486) | XTAPI
  function XTAPI (line 526) | XTAPI
  function XTAPI (line 613) | XTAPI
  function XTAPI (line 650) | XTAPI
  function XTAPI (line 672) | XTAPI

FILE: xtoskrnl/rtl/memory.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 74) | XTAPI
  function XTAPI (line 107) | XTAPI
  function XTAPI (line 155) | XTAPI
  function XTAPI (line 180) | XTAPI
  function XTAPI (line 208) | XTAPI

FILE: xtoskrnl/rtl/sha1.cc
  function XTAPI (line 29) | XTAPI
  function XTAPI (line 74) | XTAPI
  function XTAPI (line 143) | XTAPI
  function XTAPI (line 205) | XTAPI
  function XTAPI (line 245) | XTAPI

FILE: xtoskrnl/rtl/slist.cc
  function XTCDECL (line 22) | XTCDECL
  function XTCDECL (line 47) | XTCDECL
  function XTCDECL (line 68) | XTCDECL
  function XTCDECL (line 101) | XTCDECL
  function XTCDECL (line 155) | XTCDECL
  function XTAPI (line 173) | XTAPI
  function XTCDECL (line 201) | XTCDECL
  function XTCDECL (line 259) | XTCDECL
  function XTCDECL (line 313) | XTCDECL
  function XTCDECL (line 368) | XTCDECL

FILE: xtoskrnl/rtl/string.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 80) | XTAPI
  function XTAPI (line 147) | XTAPI
  function XTAPI (line 206) | XTAPI
  function XTAPI (line 245) | XTAPI
  function XTAPI (line 307) | XTAPI
  function XTAPI (line 370) | XTAPI
  function XTAPI (line 401) | XTAPI
  function XTAPI (line 446) | XTAPI
  function XTAPI (line 632) | XTAPI
  function XTAPI (line 692) | XTAPI
  function XTAPI (line 760) | XTAPI
  function XTAPI (line 785) | XTAPI
  function XTAPI (line 810) | XTAPI
  function XTAPI (line 840) | XTAPI
  function XTAPI (line 873) | XTAPI

FILE: xtoskrnl/rtl/time.cc
  function XTFASTCALL (line 22) | XTFASTCALL
  function XTAPI (line 43) | XTAPI
  function XTAPI (line 110) | XTAPI
  function XTAPI (line 179) | XTAPI
  function XTAPI (line 287) | XTAPI

FILE: xtoskrnl/rtl/widestr.cc
  function XTAPI (line 28) | XTAPI
  function XTAPI (line 80) | XTAPI
  function XTAPI (line 147) | XTAPI
  function XTAPI (line 206) | XTAPI
  function XTAPI (line 245) | XTAPI
  function XTAPI (line 307) | XTAPI
  function XTAPI (line 376) | XTAPI
  function XTAPI (line 1089) | XTAPI
  function XTAPI (line 1160) | XTAPI
  function XTAPI (line 1218) | XTAPI
  function XTAPI (line 1262) | XTAPI
  function XTAPI (line 1296) | XTAPI
  function XTAPI (line 1364) | XTAPI
  function XTAPI (line 1389) | XTAPI
  function XTAPI (line 1414) | XTAPI
  function XTAPI (line 1444) | XTAPI
  function XTAPI (line 1478) | XTAPI
  function XTAPI (line 1498) | XTAPI
  function XTAPI (line 1543) | XTAPI
  function XTAPI (line 1726) | XTAPI
  function XTCDECL (line 1757) | XTCDECL
  function XTAPI (line 1779) | XTAPI
  function XTAPI (line 2427) | XTAPI
  function XTAPI (line 2784) | XTAPI
  function XTAPI (line 3053) | XTAPI
  function XTAPI (line 3163) | XTAPI
Condensed preview — 347 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,006K chars).
[
  {
    "path": ".clangd",
    "chars": 88,
    "preview": "Diagnostics:\n  Suppress: 'pp_including_mainfile_in_preamble'\n\nInlayHints:\n  Enabled: No\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 31,
    "preview": "*                    @Belliash\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 953,
    "preview": "<!--\n    1. Please speak English, this is the language all of us can speak and write.\n    2. Please take a moment to che"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 557,
    "preview": "<!--\n    1. Please speak English, this is the language all of us can speak and write.\n    2. Please follow the CONTRIBUT"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 1831,
    "preview": "name: Builds\nrun-name: ${{ github.actor }} runs Gitea Actions\non: [push]\n\njobs:\n  ExectOS:\n    strategy:\n      matrix:\n "
  },
  {
    "path": ".gitignore",
    "chars": 29,
    "preview": ".cache\n.vscode\nbuild\nbuild-*\n"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 1925,
    "preview": "# Minimum CMake version requirement\ncmake_minimum_required(VERSION 3.19.0)\n\n# Lowercase target architecture\nstring(TOLOW"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1769,
    "preview": "## Contributing\nWe appreciate any form for contribution you want to make to the project! ExectOS is purely driven by pas"
  },
  {
    "path": "COPYING.md",
    "chars": 34937,
    "preview": "# GNU GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org"
  },
  {
    "path": "ExectOS.code-workspace",
    "chars": 398,
    "preview": "{\n\t\"folders\": [\n\t\t{\n\t\t\t\"path\": \".\"\n\t\t}\n\t],\n\t\"settings\": {\n\t\t\"clangd.arguments\": [\n\t\t\t\"--compile-commands-dir=${workspace"
  },
  {
    "path": "README.md",
    "chars": 5993,
    "preview": "<p align=center>\n  <a href=\"https://git.codingworkshop.eu.org/xt-sys/exectos\">\n    <img alt=\"GIT Repository\" src=\"https:"
  },
  {
    "path": "boot/CMakeLists.txt",
    "chars": 78,
    "preview": "add_subdirectory(bootdata)\nadd_subdirectory(bootsect)\nadd_subdirectory(xtldr)\n"
  },
  {
    "path": "boot/bootdata/CMakeLists.txt",
    "chars": 24,
    "preview": "add_subdirectory(xtldr)\n"
  },
  {
    "path": "boot/bootdata/xtldr/CMakeLists.txt",
    "chars": 43,
    "preview": "set_install_file(xtldr.ini efi/boot/xtldr)\n"
  },
  {
    "path": "boot/bootdata/xtldr/xtldr.ini",
    "chars": 3703,
    "preview": "# This is the XT Boot Loader (XTLDR) configuration file. It follows an INI format and is divided into sections, which\n# "
  },
  {
    "path": "boot/bootsect/CMakeLists.txt",
    "chars": 267,
    "preview": "# XT Boot Sector\nPROJECT(BOOTSECT)\n\nadd_definitions(\"-DARCH_ESP_SOURCE=\\\\\\\"${ARCH}/cpu.S\\\\\\\"\")\n\n# Compile boot sectors\nc"
  },
  {
    "path": "boot/bootsect/amd64/cpu.S",
    "chars": 2992,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            boot/b"
  },
  {
    "path": "boot/bootsect/espboot.S",
    "chars": 10409,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            boot/b"
  },
  {
    "path": "boot/bootsect/i686/cpu.S",
    "chars": 2603,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            boot/b"
  },
  {
    "path": "boot/bootsect/mbrboot.S",
    "chars": 3083,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            boot/b"
  },
  {
    "path": "boot/xtldr/CMakeLists.txt",
    "chars": 1607,
    "preview": "# XT Boot Loader\nPROJECT(XTLDR)\n\n# Build XTLDR modules\nadd_subdirectory(modules)\n\n# Specify include directories\ninclude_"
  },
  {
    "path": "boot/xtldr/README.md",
    "chars": 1071,
    "preview": "## XT Boot Loader (XTLDR)\nThe XTLDR, or XTOS Boot Loader, is an EFI (Extensible Firmware Interface) boot loader specific"
  },
  {
    "path": "boot/xtldr/arch/amd64/memory.cc",
    "chars": 11889,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/arch/i686/memory.cc",
    "chars": 16463,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/biosutil.cc",
    "chars": 4364,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/bootutil.cc",
    "chars": 2568,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/config.cc",
    "chars": 35893,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/console.cc",
    "chars": 7973,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/data.cc",
    "chars": 2334,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/debug.cc",
    "chars": 13483,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/efiutils.cc",
    "chars": 12560,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/includes/libxtos.hh",
    "chars": 5889,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/includes/xtldr.hh",
    "chars": 21251,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/library/modproto.cc",
    "chars": 2400,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/memory.cc",
    "chars": 25931,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/CMakeLists.txt",
    "chars": 174,
    "preview": "add_subdirectory(acpi)\nadd_subdirectory(beep)\nadd_subdirectory(chainldr)\nadd_subdirectory(dummy)\nadd_subdirectory(frameb"
  },
  {
    "path": "boot/xtldr/modules/acpi/CMakeLists.txt",
    "chars": 754,
    "preview": "# XT Boot Loader ACPI Support Module\nPROJECT(XTLDR_ACPI)\n\n# Specify include directories\ninclude_directories(\n    ${EXECT"
  },
  {
    "path": "boot/xtldr/modules/acpi/acpi.cc",
    "chars": 11877,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/acpi/data.cc",
    "chars": 420,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/acpi/includes/acpi.hh",
    "chars": 1523,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/beep/CMakeLists.txt",
    "chars": 746,
    "preview": "# XT Boot Loader Beep Module\nPROJECT(XTLDR_BEEP)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SOURC"
  },
  {
    "path": "boot/xtldr/modules/beep/beep.cc",
    "chars": 5491,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/beep/data.cc",
    "chars": 360,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/beep/includes/beep.hh",
    "chars": 919,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/chainldr/CMakeLists.txt",
    "chars": 801,
    "preview": "# XTLDR Chain Loader Module\nPROJECT(XTLDR_CHAINLDR)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SO"
  },
  {
    "path": "boot/xtldr/modules/chainldr/chainldr.cc",
    "chars": 6357,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/chainldr/data.cc",
    "chars": 458,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/chainldr/includes/chainldr.hh",
    "chars": 849,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/dummy/CMakeLists.txt",
    "chars": 753,
    "preview": "# XT Boot Loader Dummy Module\nPROJECT(XTLDR_DUMMY)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SOU"
  },
  {
    "path": "boot/xtldr/modules/dummy/data.cc",
    "chars": 446,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/dummy/dummy.cc",
    "chars": 2388,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/dummy/includes/dummy.hh",
    "chars": 792,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/framebuf/CMakeLists.txt",
    "chars": 804,
    "preview": "# XTLDR FrameBuffer support module\nPROJECT(XTLDR_FRAMEBUF)\n\n# Specify include directories\ninclude_directories(\n    ${EXE"
  },
  {
    "path": "boot/xtldr/modules/framebuf/data.cc",
    "chars": 567,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/framebuf/framebuf.cc",
    "chars": 30075,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/framebuf/includes/framebuf.hh",
    "chars": 1991,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/pecoff/CMakeLists.txt",
    "chars": 782,
    "preview": "# XTLDR PE/COFF image support module\nPROJECT(XTLDR_PECOFF)\n\n# Specify include directories\ninclude_directories(\n    ${EXE"
  },
  {
    "path": "boot/xtldr/modules/pecoff/data.cc",
    "chars": 480,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/pecoff/includes/pecoff.hh",
    "chars": 2488,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/pecoff/pecoff.cc",
    "chars": 30104,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/CMakeLists.txt",
    "chars": 813,
    "preview": "# XT Boot Loader\nPROJECT(XTLDR_XTOS_O)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SOURCE_DIR}/sdk"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/amd64/memory.cc",
    "chars": 11834,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/data.cc",
    "chars": 514,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/i686/memory.cc",
    "chars": 7062,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/includes/xtos.hh",
    "chars": 4919,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/modules/xtos_o/xtos.cc",
    "chars": 29588,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/protocol.cc",
    "chars": 41646,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/shell.cc",
    "chars": 28821,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/textui.cc",
    "chars": 62533,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/volume.cc",
    "chars": 39529,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "boot/xtldr/xtldr.cc",
    "chars": 9153,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtldr/"
  },
  {
    "path": "configure.ps1",
    "chars": 1480,
    "preview": "# PROJECT:     ExectOS\n# LICENSE:     See the COPYING.md in the top level directory\n# FILE:        configure.ps1\n# DESCR"
  },
  {
    "path": "configure.sh",
    "chars": 1268,
    "preview": "#!/bin/bash\n# PROJECT:     ExectOS\n# LICENSE:     See the COPYING.md in the top level directory\n# FILE:        configure"
  },
  {
    "path": "drivers/CMakeLists.txt",
    "chars": 26,
    "preview": "add_subdirectory(ntosdrv)\n"
  },
  {
    "path": "drivers/ntosdrv/CMakeLists.txt",
    "chars": 845,
    "preview": "# NTOS compatibility driver\nPROJECT(NTOSDRV)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SOURCE_DI"
  },
  {
    "path": "drivers/ntosdrv/ntosdrv.cc",
    "chars": 508,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            driver"
  },
  {
    "path": "drivers/ntosdrv/ntosdrv.spec",
    "chars": 134,
    "preview": "# NT compatibilty layer exports\n@ fastcall ExRundownCompleted(ptr) ExCompleteRundownProtection\n@ stdcall RtlFillMemory(p"
  },
  {
    "path": "drivers/ntosdrv/rtl.cc",
    "chars": 870,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            driver"
  },
  {
    "path": "sdk/CMakeLists.txt",
    "chars": 61,
    "preview": "add_subdirectory(\"xtadk\")\n\nset_sdk_target(\"xtdk/\" \"include\")\n"
  },
  {
    "path": "sdk/cmake/README.md",
    "chars": 312,
    "preview": "## Cmake Build System\nThis directory contains a set of .cmake files that provide the necessary configuration and functio"
  },
  {
    "path": "sdk/cmake/baseaddress/amd64.cmake",
    "chars": 127,
    "preview": "# Set base addresses for all modules\nset(BASEADDRESS_XTLDR    0x000000000000F800)\nset(BASEADDRESS_XTOSKRNL 0x00000001400"
  },
  {
    "path": "sdk/cmake/baseaddress/i686.cmake",
    "chars": 111,
    "preview": "# Set base addresses for all modules\nset(BASEADDRESS_XTLDR    0x0000F800)\nset(BASEADDRESS_XTOSKRNL 0x00400000)\n"
  },
  {
    "path": "sdk/cmake/emulation.cmake",
    "chars": 5740,
    "preview": "# Architecture specific QEMU settings\nif(ARCH STREQUAL i686)\n\tset(QEMU_COMMAND \"qemu-system-i386\")\nelseif(ARCH STREQUAL "
  },
  {
    "path": "sdk/cmake/functions.cmake",
    "chars": 9863,
    "preview": "# This function enables the addition of ASM compiler switches\nfunction(add_compiler_asmflags FLAGS)\n    if(NOT ${ARGC} E"
  },
  {
    "path": "sdk/cmake/toolchain.cmake",
    "chars": 937,
    "preview": "# Set target operating system name\nset(CMAKE_SYSTEM_NAME Windows)\n\n# Set toolchain compilers\nset(CMAKE_ASM_COMPILER clan"
  },
  {
    "path": "sdk/cmake/version/xtver.h.cmake",
    "chars": 1586,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            includ"
  },
  {
    "path": "sdk/cmake/version.cmake",
    "chars": 1151,
    "preview": "# Set XTOS version\nset(XTOS_VERSION_MAJOR \"0\")\nset(XTOS_VERSION_MINOR \"1\")\nset(XTOS_VERSION_BUILD \"devel\")\n\n# Set XTOS N"
  },
  {
    "path": "sdk/cmake/xtchain.cmake",
    "chars": 4054,
    "preview": "# Architecture specific flags\nif(ARCH STREQUAL i686)\n    add_compiler_flags(\"-m32 --target=i686-pc-windows-msvc\")\n    ad"
  },
  {
    "path": "sdk/firmware/README.md",
    "chars": 1581,
    "preview": "## Open Virtual Machine Firmware (OVMF)\nThis directory contains the essential components of the Open Virtual Machine Fir"
  },
  {
    "path": "sdk/firmware/bochsrc_amd64.cfg",
    "chars": 1972,
    "preview": "# configuration file generated by Bochs\nplugin_ctrl: usb_xhci=false, serial=true, e1000=false, extfpuirq=true, parallel="
  },
  {
    "path": "sdk/firmware/bochsrc_i686.cfg",
    "chars": 1972,
    "preview": "# configuration file generated by Bochs\nplugin_ctrl: usb_xhci=false, serial=true, e1000=false, extfpuirq=true, parallel="
  },
  {
    "path": "sdk/xtadk/CMakeLists.txt",
    "chars": 360,
    "preview": "# XT Assembly Development Kit\nPROJECT(XTADK)\n\n# Specify include directories\ninclude_directories(\n    ${EXECTOS_SOURCE_DI"
  },
  {
    "path": "sdk/xtadk/amd64/ke.cc",
    "chars": 2929,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtadk/i686/ke.cc",
    "chars": 2010,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtadk/includes/adkdefs.h",
    "chars": 867,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/README.md",
    "chars": 1315,
    "preview": "## XT Development Kit (XTDK)\nThe XTDK, or XT Development Kit is a comprehensive set of headers designed to facilitate th"
  },
  {
    "path": "sdk/xtdk/amd64/artypes.h",
    "chars": 24126,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/amd64/hlfuncs.h",
    "chars": 1033,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/amd64/hltypes.h",
    "chars": 17330,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/amd64/ketypes.h",
    "chars": 19339,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/amd64/mmtypes.h",
    "chars": 10808,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/amd64/xtstruct.h",
    "chars": 5576,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/blfuncs.h",
    "chars": 699,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/bltarget.h",
    "chars": 2457,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/bltypes.h",
    "chars": 25411,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/exfuncs.h",
    "chars": 1070,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/extypes.h",
    "chars": 979,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/hlfuncs.h",
    "chars": 1142,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/hltypes.h",
    "chars": 21243,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/artypes.h",
    "chars": 22103,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/hlfuncs.h",
    "chars": 1027,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/hltypes.h",
    "chars": 17808,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/ketypes.h",
    "chars": 18604,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/mmtypes.h",
    "chars": 12793,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/i686/xtstruct.h",
    "chars": 6418,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/iotypes.h",
    "chars": 6755,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/kdfuncs.h",
    "chars": 577,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/kdtypes.h",
    "chars": 1319,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/kefuncs.h",
    "chars": 3301,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/ketypes.h",
    "chars": 18422,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/ldrtypes.h",
    "chars": 2689,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/mmfuncs.h",
    "chars": 984,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/mmtypes.h",
    "chars": 7362,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/potypes.h",
    "chars": 2648,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/pstypes.h",
    "chars": 784,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/rtlfuncs.h",
    "chars": 6851,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/rtltypes.h",
    "chars": 4002,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtbase.h",
    "chars": 2565,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtblapi.h",
    "chars": 1091,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtcompat.h",
    "chars": 1105,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtdebug.h",
    "chars": 1116,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtdefs.h",
    "chars": 7069,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtfont.h",
    "chars": 462695,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtfw.h",
    "chars": 3341,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtglyph.h",
    "chars": 3742,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtguid.h",
    "chars": 2030,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtimage.h",
    "chars": 24159,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtkmapi.h",
    "chars": 1344,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtstatus.h",
    "chars": 5984,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtstruct.h",
    "chars": 30933,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xttarget.h",
    "chars": 2357,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xttypes.h",
    "chars": 7580,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "sdk/xtdk/xtuefi.h",
    "chars": 124011,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            sdk/xt"
  },
  {
    "path": "xtoskrnl/CMakeLists.txt",
    "chars": 4569,
    "preview": "# XT Kernel and library\nPROJECT(LIBXTOS)\nPROJECT(XTOSKRNL)\n\n# Specify include directories\ninclude_directories(\n    ${EXE"
  },
  {
    "path": "xtoskrnl/README.md",
    "chars": 6491,
    "preview": "## XTOSKRNL\nXTOSKRNL is the core kernel executable for ExectOS, providing the fundamental kernel and executive layers th"
  },
  {
    "path": "xtoskrnl/ar/amd64/archsup.S",
    "chars": 13038,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/amd64/cpufunc.cc",
    "chars": 24138,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/amd64/data.cc",
    "chars": 1005,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/amd64/procsup.cc",
    "chars": 33587,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/amd64/traps.cc",
    "chars": 18226,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/i686/archsup.S",
    "chars": 9004,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/i686/cpufunc.cc",
    "chars": 22857,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/i686/data.cc",
    "chars": 1174,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/i686/procsup.cc",
    "chars": 35710,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ar/i686/traps.cc",
    "chars": 16529,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ex/exports.cc",
    "chars": 2546,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/ex/rundown.cc",
    "chars": 4325,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/acpi.cc",
    "chars": 26084,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/cpu.cc",
    "chars": 343,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/firmware.cc",
    "chars": 348,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/ioport.cc",
    "chars": 3139,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/irq.cc",
    "chars": 6809,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/pic.cc",
    "chars": 373,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/rtc.cc",
    "chars": 345,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/runlevel.cc",
    "chars": 2426,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/amd64/timer.cc",
    "chars": 336,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/cport.cc",
    "chars": 8468,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/data.cc",
    "chars": 4115,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/exports.cc",
    "chars": 5822,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/fbdev.cc",
    "chars": 25293,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/cpu.cc",
    "chars": 341,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/firmware.cc",
    "chars": 347,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/ioport.cc",
    "chars": 3137,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/irq.cc",
    "chars": 6733,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/pic.cc",
    "chars": 371,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/rtc.cc",
    "chars": 344,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/runlevel.cc",
    "chars": 3943,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/i686/timer.cc",
    "chars": 334,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/init.cc",
    "chars": 961,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/ioreg.cc",
    "chars": 2814,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/x86/cpu.cc",
    "chars": 7683,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/x86/firmware.cc",
    "chars": 1452,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/x86/pic.cc",
    "chars": 33327,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/x86/rtc.cc",
    "chars": 11645,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/hl/x86/timer.cc",
    "chars": 44807,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/amd64/asmsup.hh",
    "chars": 1065,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/amd64/cpufunc.hh",
    "chars": 3255,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/amd64/procsup.hh",
    "chars": 4076,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/amd64/traps.hh",
    "chars": 2924,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/i686/asmsup.hh",
    "chars": 1064,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/i686/cpufunc.hh",
    "chars": 3182,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/i686/procsup.hh",
    "chars": 4552,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar/i686/traps.hh",
    "chars": 2745,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ar.hh",
    "chars": 508,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ex/rundown.hh",
    "chars": 1049,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/ex.hh",
    "chars": 364,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/hl/acpi.hh",
    "chars": 2214,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/hl/cport.hh",
    "chars": 1203,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/hl/cpu.hh",
    "chars": 624,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  },
  {
    "path": "xtoskrnl/includes/hl/fbdev.hh",
    "chars": 2257,
    "preview": "/**\n * PROJECT:         ExectOS\n * COPYRIGHT:       See COPYING.md in the top level directory\n * FILE:            xtoskr"
  }
]

// ... and 147 more files (download for full content)

About this extraction

This page contains the full source code of the xt-sys/exectos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 347 files (2.8 MB), approximately 741.9k tokens, and a symbol index with 2810 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!