diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..3e8c0aa
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,12 @@
+//
+// Copyright (C) 2023 The Android Open Source Project
+// Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+
+soong_namespace {
+ imports: [
+ "hardware/qcom-caf/bootctrl",
+ ],
+}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..d5c6ec4
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,12 @@
+#
+# Copyright (C) 2023 The Android Open Source Project
+# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+LOCAL_PATH := $(call my-dir)
+
+ifeq ($(TARGET_DEVICE),avatrn)
+include $(call all-subdir-makefiles,$(LOCAL_PATH))
+endif
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
new file mode 100644
index 0000000..9cc3ccd
--- /dev/null
+++ b/AndroidProducts.mk
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2023 The Android Open Source Project
+# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+PRODUCT_MAKEFILES := \
+ $(LOCAL_DIR)/twrp_avatrn.mk
+
+COMMON_LUNCH_CHOICES := \
+ twrp_avatrn-user \
+ twrp_avatrn-userdebug \
+ twrp_avatrn-eng
diff --git a/BoardConfig.mk b/BoardConfig.mk
new file mode 100644
index 0000000..ac4d80d
--- /dev/null
+++ b/BoardConfig.mk
@@ -0,0 +1,196 @@
+#
+# Copyright (C) 2024 The Android Open Source Project
+# Copyright (C) 2024 SebaUbuntu's TWRP device tree generator
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+DEVICE_PATH := device/motorola/avatrn
+DEVICE_PREBUILT_PATH := device/motorola/avatrn/prebuilt
+
+# A-Team Maintainer Info
+TW_MAINTAINER := BOBtheBlinker
+TW_DEVICE_VERSION := 0.8
+RECOVERY_VARIANT := TWRP_12.1
+
+# A/B
+AB_OTA_UPDATER := true
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := false
+AB_OTA_PARTITIONS += \
+ boot \
+ dtbo \
+ product \
+ system \
+ system_ext \
+ recovery \
+ vbmeta \
+ vbmeta_system \
+ vendor \
+ vendor_dlkm \
+ vendor_boot
+
+# Architecture
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-a
+TARGET_CPU_ABI := arm64-v8a
+TARGET_CPU_ABI2 :=
+TARGET_CPU_VARIANT := generic
+TARGET_CPU_VARIANT_RUNTIME := kryo300
+
+TARGET_2ND_ARCH := arm
+TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_CPU_ABI := armeabi-v7a
+TARGET_2ND_CPU_ABI2 := armeabi
+TARGET_2ND_CPU_VARIANT := generic
+TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a75
+
+TARGET_SUPPORTS_64_BIT_APPS := true
+
+# Bootloader
+TARGET_BOOTLOADER_BOARD_NAME := parrot
+TARGET_NO_BOOTLOADER := false
+TARGET_USES_UEFI := true
+TARGET_USES_REMOTEPROC := true
+TARGET_NO_RECOVERY := false
+
+# Build Flags
+LC_ALL="C"
+ALLOW_MISSING_DEPENDENCIES := true
+BUILD_BROKEN_DUP_RULES := true
+BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
+BUILD_BROKEN_MISSING_REQUIRED_MODULES := true
+RELAX_USES_LIBRARY_CHECK := true
+TARGET_DEVICE_ALT += avatrn_g avatrn XT2405
+
+# Display
+TARGET_SCREEN_DENSITY := 403
+DEVICE_RESOLUTION := 1080x2400
+TARGET_SCREEN_HEIGHT := 2400
+TARGET_SCREEN_WIDTH := 1080
+
+# Kernel
+BOARD_BOOT_HEADER_VERSION := 4
+BOARD_KERNEL_BASE := 0x00000000
+BOARD_KERNEL_CMDLINE += printk.devkmsg=on firmware_class.path=/data/vendor/param/firmware
+BOARD_BOOTCONFIG += \
+ androidboot.hardware=qcom \
+ androidboot.memcg=1 \
+ androidboot.usbcontroller=a600000.dwc3
+BOARD_KERNEL_IMAGE_NAME := Image
+BOARD_KERNEL_PAGESIZE := 4096
+BOARD_KERNEL_SEPARATED_DTBO := true
+BOARD_MKBOOTIMG_ARGS += --dtb $(DEVICE_PREBUILT_PATH)/dtb.img
+BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
+TARGET_KERNEL_ARCH := arm64
+TARGET_KERNEL_HEADER_ARCH := arm64
+BOARD_RAMDISK_USE_LZ4 := true
+
+TARGET_PREBUILT_KERNEL := $(DEVICE_PREBUILT_PATH)/zImage
+TARGET_PREBUILT_DTB := $(DEVICE_PREBUILT_PATH)/dtb.img
+
+# Copy DTB
+PRODUCT_COPY_FILES += \
+ $(TARGET_PREBUILT_DTB):dtb.img
+
+TARGET_FORCE_PREBUILT_KERNEL := true
+BOARD_USES_FULL_RECOVERY_IMAGE := true
+BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE := true
+BOARD_USES_GENERIC_KERNEL_IMAGE := true
+
+# Hack: prevent anti rollback
+PLATFORM_SECURITY_PATCH := 2099-12-31
+VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
+BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
+PLATFORM_VERSION := 99.87.36
+PLATFORM_VERSION_LAST_STABLE := $(PLATFORM_VERSION)
+
+# Partitions
+BOARD_FLASH_BLOCK_SIZE := 262144 # (BOARD_KERNEL_PAGESIZE * 64)
+BOARD_SUPER_PARTITION_GROUPS := qti_dynamic_partitions
+BOARD_QTI_DYNAMIC_PARTITIONS_PARTITION_LIST := system system_ext product vendor vendor_dlkm
+BOARD_QTI_DYNAMIC_PARTITIONS_SIZE := 9122611200
+BOARD_SUPER_PARTITION_SIZE := 9126805504
+BOARD_BOOTIMAGE_PARTITION_SIZE := 134217728
+BOARD_KERNEL_GKI_BOOTIMAGE_PARTITION_SIZE := $(BOARD_BOOTIMAGE_PARTITION_SIZE)
+BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 100663296
+BOARD_RECOVERYIMAGE_PARTITION_SIZE := 134217728
+BOARD_SYSTEMIMAGE_PARTITION_TYPE := ext4
+BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_USES_METADATA_PARTITION := true
+TARGET_COPY_OUT_VENDOR := vendor
+TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
+BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_USES_VENDOR_DLKMIMAGE := true
+TARGET_USERIMAGES_USE_EXT3 := true
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_USE_F2FS := true
+TARGET_USERIMAGES_USE_EROFS := true
+TARGET_USERIMAGES_USE_E2FSCK := true
+TARGET_USERIMAGES_USE_VFAT := true
+TARGET_USES_MKE2FS := true
+BOARD_HAS_LARGE_FILESYSTEM := true
+BOARD_HAS_NO_SELECT_BUTTON := true
+
+# Platform
+TARGET_BOARD_PLATFORM := parrot
+QCOM_BOARD_PLATFORMS += parrot
+
+# Properties
+TARGET_SYSTEM_PROP += $(DEVICE_PATH)/system.prop
+
+# Recovery
+TARGET_RECOVERY_QCOM_RTC_FIX := true
+TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
+TARGET_RECOVERY_DEVICE_DIRS += $(DEVICE_PATH)
+TARGET_RECOVERY_FSTAB := $(DEVICE_PATH)/recovery/root/system/etc/recovery.fstab
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_USE_F2FS := true
+RECOVERY_SDCARD_ON_DATA := true
+
+# TWRP Crypto
+TW_INCLUDE_CRYPTO := true
+TW_INCLUDE_CRYPTO_FBE := true
+TW_INCLUDE_FBE_METADATA_DECRYPT := true
+BOARD_USES_QCOM_FBE_DECRYPTION := true
+TW_USE_FSCRYPT_POLICY := 2
+
+# TWRP Configuration
+TW_THEME := portrait_hdpi
+TW_EXTRA_LANGUAGES := true
+TW_INPUT_BLACKLIST := "hbtp_vm"
+TW_INCLUDE_REPACKTOOLS := true
+TW_INCLUDE_RESETPROP := true
+TW_INCLUDE_LIBRESETPROP := true
+TW_INCLUDE_NTFS_3G := true
+TW_BACKUP_EXCLUSIONS := /data/fonts
+TW_NO_SCREEN_BLANK := true
+TW_MAX_BRIGHTNESS := 3515
+TW_DEFAULT_BRIGHTNESS := 1024
+TW_FRAMERATE := 60
+TW_HAS_EDL_MODE := true
+TW_CUSTOM_CPU_TEMP_PATH := /sys/class/thermal/thermal_zone39/temp
+TW_EXCLUDE_DEFAULT_USB_INIT := true
+TARGET_USE_CUSTOM_LUN_FILE_PATH := /config/usb_gadget/g1/functions/mass_storage.0/lun.%d/file
+TW_SUPPORT_INPUT_AIDL_HAPTICS := true
+TW_SUPPORT_INPUT_AIDL_HAPTICS_FIX_OFF := true
+TW_USE_SERIALNO_PROPERTY_FOR_DEVICE_ID := true
+TW_NO_USB_STORAGE := false
+TW_INCLUDE_FASTBOOTD := true
+TW_INCLUDE_PYTHON := true
+
+# Verified Boot
+BOARD_AVB_ENABLE := true
+BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3
+BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
+BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA4096
+BOARD_AVB_RECOVERY_ROLLBACK_INDEX := 1
+BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 1
+BOARD_AVB_VBMETA_SYSTEM := product system system_ext
+BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
+BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA4096
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 2
+
+
diff --git a/README.md b/README.md
index 70e6484..c59d1e7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,58 @@
-# android_recovery_motorola_avatrn
+Recovery configuration for Moto Edge 2024 (gen5) (codenamed "avatrn")
+=========================================
-TWRP Tree for Moto Edge 2024
\ No newline at end of file
+The Motorola Moto Edge 2024 (gen5) (codenamed _"avatrn"_) is a mid-range smartphone from Motorola Mobility announced June 4th 2024.
+
+## Device specifications
+
+Basic | Spec Sheet
+-------:|:-------------------------
+SoC | Qualcomm SM7435-AB Snapdragon 7s Gen 2 (4 nm)
+CPU | Octa-core (4x2.40 GHz Cortex-A78 & 4x1.95 GHz Cortex-A55)
+GPU | Adreno 710
+Memory | 8 GB RAM (LPDDR4X)
+Shipped Android Version | 13.0, My UX 3.0 (Global)
+Storage | 256 GB (UFS 2.2)
+Battery | Non-removable Li-Po 5000 mAh battery
+Display | P-OLED, 1B clrs, 144Hz, HDR10+, 1300nit, 2400x1080, 6.67" (~402 ppi density)
+Camera | 50MP (Wide) + 13MP (Ultra-wide) + 32MP (Selfie)
+
+## Device picture
+
+
+## Device link @ gsmArena
+https://m.gsmarena.com/motorola_edge_(2024)-13111.php
+
+# Status
+Current state of features:
+- [X] Correct screen/recovery size
+- [X] Working touch, display
+- [X] Screen goes off and on
+- [ ] Backup/restore to/from internal/external storage and adb
+- [X] Poweroff
+- [X] Reboot to system, bootloader, recovery, fastboot, edl
+- [X] ADB (including sideload)
+- [X] Support EROFS/F2FS/EXT4/exFAT/FAT32/NTFS
+- [X] Decrypt /data
+- [ ] Flashing zip/images
+- [X] MTP export
+- [X] All important partitions listed in wipe/mount/backup lists
+- [X] Input devices via USB-OTG
+- [X] USB mass storage export
+- [X] Correct date
+- [X] Battery level
+- [X] Set brightness
+- [X] Vibrate and set vibration
+- [X] Screenshot
+- [ ] Advanced features
+
+# Building
+```bash
+export ALLOW_MISSING_DEPENDENCIES=true
+source build/envsetup.sh
+lunch twrp_avatrn-eng
+mka recoveryimage -j$(nproc --all)
+```
+
+**Copyright (C) 2024 A-Team Digital Solutions**
+**Tree template from TeamWin, some file from VanFirmwareDumps**
diff --git a/bootctrl/Android.bp b/bootctrl/Android.bp
new file mode 100755
index 0000000..8c13700
--- /dev/null
+++ b/bootctrl/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library {
+ name: "bootctrl.moto_sm8475",
+ defaults: ["bootctrl_hal_defaults"],
+ static_libs: ["libgptutils.moto_sm8475"],
+}
+
+cc_library_shared {
+ name: "android.hardware.boot@1.2-impl-qti",
+ stem: "android.hardware.boot@1.0-impl-1.2-qti",
+ defaults: ["android.hardware.boot@1.2-impl-qti_defaults"],
+ static_libs: ["libgptutils.moto_sm8475"],
+}
diff --git a/device.mk b/device.mk
new file mode 100644
index 0000000..289d4d5
--- /dev/null
+++ b/device.mk
@@ -0,0 +1,130 @@
+#
+# Copyright (C) 2023 The Android Open Source Project
+# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+# Soong namespaces
+PRODUCT_SOONG_NAMESPACES += \
+ $(LOCAL_PATH)
+
+# API
+BOARD_SHIPPING_API_LEVEL := 31
+BOARD_API_LEVEL := 31
+PRODUCT_SHIPPING_API_LEVEL := 31
+SHIPPING_API_LEVEL := 31
+
+# A/B
+AB_OTA_POSTINSTALL_CONFIG += \
+ RUN_POSTINSTALL_system=true \
+ POSTINSTALL_PATH_system=system/bin/otapreopt_script \
+ FILESYSTEM_TYPE_system=ext4 \
+ POSTINSTALL_OPTIONAL_system=true
+
+AB_OTA_POSTINSTALL_CONFIG += \
+ RUN_POSTINSTALL_vendor=true \
+ POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
+ FILESYSTEM_TYPE_vendor=ext4 \
+ POSTINSTALL_OPTIONAL_vendor=true
+
+# Boot control HAL
+PRODUCT_PACKAGES += \
+ android.hardware.boot@1.2-impl-qti \
+ android.hardware.boot@1.2-impl-qti.recovery \
+ android.hardware.boot@1.2-service
+
+PRODUCT_PACKAGES_DEBUG += \
+ bootctl
+
+PRODUCT_PACKAGES += \
+ otapreopt_script \
+ checkpoint_gc \
+ update_engine \
+ update_engine_client \
+ update_verifier \
+ update_engine_sideload
+
+# Crypto
+PRODUCT_PACKAGES += \
+ qcom_decrypt \
+ qcom_decrypt_fbe
+
+# Dynamic partitions
+PRODUCT_USE_DYNAMIC_PARTITIONS := true
+
+# F2FS utilities
+PRODUCT_PACKAGES += \
+ sg_write_buffer \
+ f2fs_io \
+ check_f2fs
+
+# FastbootD
+PRODUCT_PACKAGES += \
+ fastbootd \
+ android.hardware.fastboot@1.1-impl-mock
+
+# HACK: Set vendor patch level
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.bootimage.build.date.utc=0 \
+ ro.build.date.utc=0
+
+# OEM otacert
+PRODUCT_EXTRA_RECOVERY_KEYS += \
+ $(LOCAL_PATH)/security/ota
+
+# Take a few libraries from sources
+TARGET_RECOVERY_DEVICE_MODULES += \
+ android.hardware.vibrator-V2-cpp \
+ android.hidl.allocator@1.0 \
+ android.hidl.memory@1.0 \
+ android.hidl.memory.token@1.0 \
+ libdmabufheap \
+ libhidlmemory \
+ libion \
+ libnetutils \
+ libxml2 \
+ vendor.display.config@1.0 \
+ vendor.display.config@1.1 \
+ vendor.display.config@1.2 \
+ vendor.display.config@1.3 \
+ vendor.display.config@1.4 \
+ vendor.display.config@1.5 \
+ vendor.display.config@1.6 \
+ vendor.display.config@1.7 \
+ vendor.display.config@1.8 \
+ vendor.display.config@1.9 \
+ vendor.display.config@1.10 \
+ vendor.display.config@1.11 \
+ vendor.display.config@2.0 \
+ libdisplayconfig.qti
+
+RECOVERY_LIBRARY_SOURCE_FILES += \
+ $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator-V2-cpp.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.allocator@1.0.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory@1.0.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory.token@1.0.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/libdmabufheap.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/libhidlmemory.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/libion.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/libnetutils.so \
+ $(TARGET_OUT_SHARED_LIBRARIES)/libxml2.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.0.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.1.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.2.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.3.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.4.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.5.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.6.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.7.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.8.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.9.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.1.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.11.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@2.0.so \
+ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/libdisplayconfig.qti.so
+
+# Namespace definition for librecovery_updater
+SOONG_CONFIG_NAMESPACES += ufsbsg
+SOONG_CONFIG_ufsbsg += ufsframework
+SOONG_CONFIG_ufsbsg_ufsframework := bsg
diff --git a/gpt-utils/Android.bp b/gpt-utils/Android.bp
new file mode 100755
index 0000000..746e1f5
--- /dev/null
+++ b/gpt-utils/Android.bp
@@ -0,0 +1,42 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library {
+ name: "libgptutils.moto_sm8475",
+ vendor: true,
+ recovery_available: true,
+ shared_libs: [
+ "libcutils",
+ "liblog",
+ "libz",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wno-unused-parameter",
+ "-D_GENERIC_KERNEL_HEADERS",
+ "-D_BSG_FRAMEWORK_KERNEL_HEADERS",
+ ],
+ srcs: [
+ "gpt-utils.cpp",
+ "recovery-ufs-bsg.cpp",
+ ],
+ owner: "qti",
+ header_libs: [
+ "device_kernel_headers",
+ ],
+ export_include_dirs: ["."],
+}
diff --git a/gpt-utils/gpt-utils.cpp b/gpt-utils/gpt-utils.cpp
new file mode 100755
index 0000000..f93a97f
--- /dev/null
+++ b/gpt-utils/gpt-utils.cpp
@@ -0,0 +1,1527 @@
+/*
+ * Copyright (c) 2013,2016,2020 The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define _LARGEFILE64_SOURCE /* enable lseek64() */
+
+/******************************************************************************
+ * INCLUDE SECTION
+ ******************************************************************************/
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include