version=$(/usr/bin/sw_vers | grep ProductVersion | sed 's/ProductVersion: //')
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)

if [[ "$major" -eq 10 ]] && [[ "$minor" -lt 3 ]] || [[ "$major" -lt 10 ]]; then
    /sbin/mount_hfs /dev/disk0s1s1 /mnt1
    device_version=$(grep -A1 '<key>ProductVersion</key>' /mnt1/System/Library/CoreServices/SystemVersion.plist | grep '<string>' | sed -E 's/.*<string>([^<]+)<\/string>.*/\1/')
    device_major=$(echo "$device_version" | cut -d. -f1)
    device_minor=$(echo "$device_version" | cut -d. -f2)
    if [[ "$device_major" -eq 10 ]] && [[ "$device_minor" -lt 3 ]]; then
        /usr/libexec/seputil --load /mnt1/usr/standalone/firmware/sep-firmware.img4
    elif [[ "$device_major" -lt 10 ]]; then
        :
    else
        exit
    fi
    /sbin/mount_hfs /dev/disk0s1s2 /mnt2
    if [[ -e /dev/disk0s1s3 ]]; then
    /sbin/mount_hfs /dev/disk0s1s3 /mnt3
    fi
    echo "Device Version: "$device_version""
elif [[ "$major" -eq 16 ]] && [[ "$minor" -lt 4 ]]; then
    /sbin/mount_apfs /dev/disk1s1 /mnt1
    device_version=$(grep -A1 '<key>ProductVersion</key>' /mnt1/System/Library/CoreServices/SystemVersion.plist | grep '<string>' | sed -E 's/.*<string>([^<]+)<\/string>.*/\1/')
    echo "Device Version: "$device_version""
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s3) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk1s3 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s4) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk1s4 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s5) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk1s5 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s6) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk1s6 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s7) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk1s7 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s3) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk1s3 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s4) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk1s4 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s5) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk1s5 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s6) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk1s6 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk1s7) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk1s7 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    /usr/libexec/seputil --load /mnt6/*/usr/standalone/firmware/sep-firmware.img4
    /sbin/mount_apfs /dev/disk1s2 /mnt2
elif [[ "$major" -eq 16 ]] && [[ "$minor" -ge 4 ]] || [[ "$major" -gt 16 ]]; then
    /sbin/mount_apfs /dev/disk1s1 /mnt1
    device_version=$(grep -A1 '<key>ProductVersion</key>' /mnt1/System/Library/CoreServices/SystemVersion.plist | grep '<string>' | sed -E 's/.*<string>([^<]+)<\/string>.*/\1/')
    echo "Device Version: "$device_version""
    /sbin/mount_apfs -R /dev/disk1s6 /mnt6
    /sbin/mount_apfs -R /dev/disk1s3 /mnt7
    /usr/libexec/seputil --gigalocker-init
    /usr/sbin/nvram oblit-inprogress=1 rev=2
    /usr/libexec/seputil --load /mnt6/*/usr/standalone/firmware/sep-firmware.img4
    /usr/sbin/nvram -d oblit-inprogress
    /usr/sbin/nvram -d rev
    /sbin/mount_apfs /dev/disk1s2 /mnt2
else
    /sbin/mount_apfs /dev/disk0s1s1 /mnt1
    device_version=$(grep -A1 '<key>ProductVersion</key>' /mnt1/System/Library/CoreServices/SystemVersion.plist | grep '<string>' | sed -E 's/.*<string>([^<]+)<\/string>.*/\1/')
    echo "Device Version: "$device_version""
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s3) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk0s1s3 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s4) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk0s1s4 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s5) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk0s1s5 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s6) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk0s1s6 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s7) == 'Preboot' ]]; then
        /sbin/mount_apfs /dev/disk0s1s7 /mnt6
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s3) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk0s1s3 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s4) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk0s1s4 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s5) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk0s1s5 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s6) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk0s1s6 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ $(/System/Library/Filesystems/apfs.fs/apfs.util -p /dev/disk0s1s7) == 'xART' ]]; then
        /sbin/mount_apfs /dev/disk0s1s7 /mnt7
        /usr/libexec/seputil --gigalocker-init
    fi
    if [[ -e /mnt6/active ]]; then
        /usr/libexec/seputil --load /mnt6/$(cat /mnt6/active)/usr/standalone/firmware/sep-firmware.img4
    else
        /usr/libexec/seputil --load /mnt1/usr/standalone/firmware/sep-firmware.img4
    fi
    /sbin/mount_apfs /dev/disk0s1s2 /mnt2
fi
