
typedef struct errorcode_to_id {
	unsigned int error;
	const char*  id;
} errorcode_to_id_t;

typedef struct error_id_to_message {
	const char* id;
	const char* message;
} error_id_to_message_t;

// Parts of error code to localization id map is taken from SDMMobileDevice framework. Associated license is bellow.
// https://github.com/samdmarshall/SDMMobileDevice/blob/master/Framework/MobileDevice/Error/SDMMD_Error.h
//
// Copyright (c) 2014, Sam Marshall
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the 
// following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
//
// 2. 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.
//
// 3. Neither the name of Sam Marshall 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDER 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.
static errorcode_to_id_t errorcode_to_id[] = {
	{ 0xe8000001, "kAMDUndefinedError" },
	{ 0xe8000002, "kAMDBadHeaderError" },
	{ 0xe8000003, "kAMDNoResourcesError" },
	{ 0xe8000004, "kAMDReadError" },
	{ 0xe8000005, "kAMDWriteError" },
	{ 0xe8000006, "kAMDUnknownPacketError" },
	{ 0xe8000007, "kAMDInvalidArgumentError" },
	{ 0xe8000008, "kAMDNotFoundError" },
	{ 0xe8000009, "kAMDIsDirectoryError" },
	{ 0xe800000a, "kAMDPermissionError" },
	{ 0xe800000b, "kAMDNotConnectedError" },
	{ 0xe800000c, "kAMDTimeOutError" },
	{ 0xe800000d, "kAMDOverrunError" },
	{ 0xe800000e, "kAMDEOFError" },
	{ 0xe800000f, "kAMDUnsupportedError" },
	{ 0xe8000010, "kAMDFileExistsError" },
	{ 0xe8000011, "kAMDBusyError" },
	{ 0xe8000012, "kAMDCryptoError" },
	{ 0xe8000013, "kAMDInvalidResponseError" },
	{ 0xe8000014, "kAMDMissingKeyError" },
	{ 0xe8000015, "kAMDMissingValueError" },
	{ 0xe8000016, "kAMDGetProhibitedError" },
	{ 0xe8000017, "kAMDSetProhibitedError" },
	{ 0xe8000018, "kAMDRemoveProhibitedError" },
	{ 0xe8000019, "kAMDImmutableValueError" },
	{ 0xe800001a, "kAMDPasswordProtectedError" },
	{ 0xe800001b, "kAMDMissingHostIDError" },
	{ 0xe800001c, "kAMDInvalidHostIDError" },
	{ 0xe800001d, "kAMDSessionActiveError" },
	{ 0xe800001e, "kAMDSessionInactiveError" },
	{ 0xe800001f, "kAMDMissingSessionIDError" },
	{ 0xe8000020, "kAMDInvalidSessionIDError" },
	{ 0xe8000021, "kAMDMissingServiceError" },
	{ 0xe8000022, "kAMDInvalidServiceError" },
	{ 0xe8000023, "kAMDInvalidCheckinError" },
	{ 0xe8000024, "kAMDCheckinTimeoutError" },
	{ 0xe8000025, "kAMDMissingPairRecordError" },
	{ 0xe8000026, "kAMDInvalidActivationRecordError" },
	{ 0xe8000027, "kAMDMissingActivationRecordError" },
	{ 0xe8000028, "kAMDWrongDroidError" },
	{ 0xe8000029, "kAMDSUVerificationError" },
	{ 0xe800002a, "kAMDSUPatchError" },
	{ 0xe800002b, "kAMDSUFirmwareError" },
	{ 0xe800002c, "kAMDProvisioningProfileNotValid" },
	{ 0xe800002d, "kAMDSendMessageError" },
	{ 0xe800002e, "kAMDReceiveMessageError" },
	{ 0xe800002f, "kAMDMissingOptionsError" },
	{ 0xe8000030, "kAMDMissingImageTypeError" },
	{ 0xe8000031, "kAMDDigestFailedError" },
	{ 0xe8000032, "kAMDStartServiceError" },
	{ 0xe8000033, "kAMDInvalidDiskImageError" },
	{ 0xe8000034, "kAMDMissingDigestError" },
	{ 0xe8000035, "kAMDMuxError" },
	{ 0xe8000036, "kAMDApplicationAlreadyInstalledError" },
	{ 0xe8000037, "kAMDApplicationMoveFailedError" },
	{ 0xe8000038, "kAMDApplicationSINFCaptureFailedError" },
	{ 0xe8000039, "kAMDApplicationSandboxFailedError" },
	{ 0xe800003a, "kAMDApplicationVerificationFailedError" },
	{ 0xe800003b, "kAMDArchiveDestructionFailedError" },
	{ 0xe800003c, "kAMDBundleVerificationFailedError" },
	{ 0xe800003d, "kAMDCarrierBundleCopyFailedError" },
	{ 0xe800003e, "kAMDCarrierBundleDirectoryCreationFailedError" },
	{ 0xe800003f, "kAMDCarrierBundleMissingSupportedSIMsError" },
	{ 0xe8000040, "kAMDCommCenterNotificationFailedError" },
	{ 0xe8000041, "kAMDContainerCreationFailedError" },
	{ 0xe8000042, "kAMDContainerP0wnFailedError" },
	{ 0xe8000043, "kAMDContainerRemovalFailedError" },
	{ 0xe8000044, "kAMDEmbeddedProfileInstallFailedError" },
	{ 0xe8000045, "kAMDErrorError" },
	{ 0xe8000046, "kAMDExecutableTwiddleFailedError" },
	{ 0xe8000047, "kAMDExistenceCheckFailedError" },
	{ 0xe8000048, "kAMDInstallMapUpdateFailedError" },
	{ 0xe8000049, "kAMDManifestCaptureFailedError" },
	{ 0xe800004a, "kAMDMapGenerationFailedError" },
	{ 0xe800004b, "kAMDMissingBundleExecutableError" },
	{ 0xe800004c, "kAMDMissingBundleIdentifierError" },
	{ 0xe800004d, "kAMDMissingBundlePathError" },
	{ 0xe800004e, "kAMDMissingContainerError" },
	{ 0xe800004f, "kAMDNotificationFailedError" },
	{ 0xe8000050, "kAMDPackageExtractionFailedError" },
	{ 0xe8000051, "kAMDPackageInspectionFailedError" },
	{ 0xe8000052, "kAMDPackageMoveFailedError" },
	{ 0xe8000053, "kAMDPathConversionFailedError" },
	{ 0xe8000054, "kAMDRestoreContainerFailedError" },
	{ 0xe8000055, "kAMDSeatbeltProfileRemovalFailedError" },
	{ 0xe8000056, "kAMDStageCreationFailedError" },
	{ 0xe8000057, "kAMDSymlinkFailedError" },
	{ 0xe8000058, "kAMDiTunesArtworkCaptureFailedError" },
	{ 0xe8000059, "kAMDiTunesMetadataCaptureFailedError" },
	{ 0xe800005a, "kAMDAlreadyArchivedError" },
	{ 0xe800005b, "kAMDServiceLimitError" },
	{ 0xe800005c, "kAMDInvalidPairRecordError" },
	{ 0xe800005d, "kAMDServiceProhibitedError" },
	{ 0xe800005e, "kAMDCheckinSetupFailedError" },
	{ 0xe800005f, "kAMDCheckinConnectionFailedError" },
	{ 0xe8000060, "kAMDCheckinReceiveFailedError" },
	{ 0xe8000061, "kAMDCheckinResponseFailedError" },
	{ 0xe8000062, "kAMDCheckinSendFailedError" },
	{ 0xe8000063, "kAMDMuxCreateListenerError" },
	{ 0xe8000064, "kAMDMuxGetListenerError" },
	{ 0xe8000065, "kAMDMuxConnectError" },
	{ 0xe8000066, "kAMDUnknownCommandError" },
	{ 0xe8000067, "kAMDAPIInternalError" },
	{ 0xe8000068, "kAMDSavePairRecordFailedError" },
	{ 0xe8000069, "kAMDCheckinOutOfMemoryError" },
	{ 0xe800006a, "kAMDDeviceTooNewError" },
	{ 0xe800006b, "kAMDDeviceRefNoGood" },
	{ 0xe800006c, "kAMDCannotTranslateError" },
	{ 0xe800006d, "kAMDMobileImageMounterMissingImageSignature" },
	{ 0xe800006e, "kAMDMobileImageMounterResponseCreationFailed" },
	{ 0xe800006f, "kAMDMobileImageMounterMissingImageType" },
	{ 0xe8000070, "kAMDMobileImageMounterMissingImagePath" },
	{ 0xe8000071, "kAMDMobileImageMounterImageMapLoadFailed" },
	{ 0xe8000072, "kAMDMobileImageMounterAlreadyMounted" },
	{ 0xe8000073, "kAMDMobileImageMounterImageMoveFailed" },
	{ 0xe8000074, "kAMDMobileImageMounterMountPathMissing" },
	{ 0xe8000075, "kAMDMobileImageMounterMountPathNotEmpty" },
	{ 0xe8000076, "kAMDMobileImageMounterImageMountFailed" },
	{ 0xe8000077, "kAMDMobileImageMounterTrustCacheLoadFailed" },
	{ 0xe8000078, "kAMDMobileImageMounterDigestFailed" },
	{ 0xe8000079, "kAMDMobileImageMounterDigestCreationFailed" },
	{ 0xe800007a, "kAMDMobileImageMounterImageVerificationFailed" },
	{ 0xe800007b, "kAMDMobileImageMounterImageInfoCreationFailed" },
	{ 0xe800007c, "kAMDMobileImageMounterImageMapStoreFailed" },
	{ 0xe800007d, "kAMDBonjourSetupError" },
	{ 0xe800007e, "kAMDDeviceOSVersionTooLow" },
	{ 0xe800007f, "kAMDNoWifiSyncSupportError" },
	{ 0xe8000080, "kAMDDeviceFamilyNotSupported" },
	{ 0xe8000081, "kAMDEscrowLockedError" },
	{ 0xe8000082, "kAMDPairingProhibitedError" },
	{ 0xe8000083, "kAMDProhibitedBySupervision" },
	{ 0xe8000084, "kAMDDeviceDisconnectedError" },
	{ 0xe8000085, "kAMDTooBigError" },
	{ 0xe8000086, "kAMDPackagePatchFailedError" },
	{ 0xe8000087, "kAMDIncorrectArchitectureError" },
	{ 0xe8000088, "kAMDPluginCopyFailedError" },
	{ 0xe8000089, "kAMDBreadcrumbFailedError" },
	{ 0xe800008a, "kAMDBreadcrumbUnlockError" },
	{ 0xe800008b, "kAMDGeoJSONCaptureFailedError" },
	{ 0xe800008c, "kAMDNewsstandArtworkCaptureFailedError" },
	{ 0xe800008d, "kAMDMissingCommandError" },
	{ 0xe800008e, "kAMDNotEntitledError" },
	{ 0xe800008f, "kAMDMissingPackagePathError" },
	{ 0xe8000090, "kAMDMissingContainerPathError" },
	{ 0xe8000091, "kAMDMissingApplicationIdentifierError" },
	{ 0xe8000092, "kAMDMissingAttributeValueError" },
	{ 0xe8000093, "kAMDLookupFailedError" },
	{ 0xe8000094, "kAMDDictCreationFailedError" },
	{ 0xe8000095, "kAMDUserDeniedPairingError" },
	{ 0xe8000096, "kAMDPairingDialogResponsePendingError" },
	{ 0xe8000097, "kAMDInstallProhibitedError" },
	{ 0xe8000098, "kAMDUninstallProhibitedError" },
	{ 0xe8000099, "kAMDFMiPProtectedError" },
	{ 0xe800009a, "kAMDMCProtected" },
	{ 0xe800009b, "kAMDMCChallengeRequired" },
	{ 0xe800009c, "kAMDMissingBundleVersionError" },

	// Errors without id->string mapping.
	{ 0xe8008015, "A valid provisioning profile for this executable was not found." },
	{ 0xe8008016, "The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile." },
	{ 0xe8008017, "A signed resource has been added, modified, or deleted." },
	{ 0xe8008018, "The identity used to sign the executable is no longer valid. Please verify that your device’s clock is properly set, and that your signing certificate is not expired." },
	{ 0xe8008019, "The application does not have a valid signature." },
	{ 0xe800801c, "No code signature found." },
};

const int errorcode_to_id_count = sizeof(errorcode_to_id) / sizeof(errorcode_to_id_t);

// Taken from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/en_GB.lproj/Localizable.strings
error_id_to_message_t error_id_to_message[] = {
	{ "kAMDAPIInternalError", "There was an internal API error." },
	{ "kAMDAlreadyArchivedError", "The application is already archived." },
	{ "kAMDAppBlacklistedError", "This app is not allowed to be installed on this device." },
	{ "kAMDApplicationAlreadyInstalledError", "A system application with the given bundle identifier is already installed on the device and cannot be replaced." },
	{ "kAMDApplicationMoveFailedError", "The application could not be moved into place on the device." },
	{ "kAMDApplicationSandboxFailedError", "The application could not be sandboxed." },
	{ "kAMDApplicationVerificationFailedError", "The application could not be verified." },
	{ "kAMDArchiveDestructionFailedError", "Could not remove the application archive." },
	{ "kAMDBadHeaderError", "Could not transfer file." },
	{ "kAMDBreadcrumbFailedError", "Could not write installation breadcrumb." },
	{ "kAMDBreadcrumbUnlockError", "Could not update installation breadcrumb." },
	{ "kAMDBundleVerificationFailedError", "The carrier bundle could not be verified." },
	{ "kAMDBusyError", "The device is busy." },
	{ "kAMDCannotTranslateError", "Could not translate messages from device" },
	{ "kAMDCarrierBundleCopyFailedError", "Could not install the carrier bundle." },
	{ "kAMDCarrierBundleDirectoryCreationFailedError", "Could not create the carrier bundle directory." },
	{ "kAMDCarrierBundleMissingSupportedSIMsError", "There are no supported SIMs for this carrier bundle." },
	{ "kAMDCheckinConnectionFailedError", "The service did not start properly on the device." },
	{ "kAMDCheckinOutOfMemoryError", "The service did not start properly on the device." },
	{ "kAMDCheckinReceiveFailedError", "The service did not start properly on the device." },
	{ "kAMDCheckinResponseFailedError", "The service did not start properly on the device." },
	{ "kAMDCheckinSendFailedError", "The service did not start properly on the device." },
	{ "kAMDCheckinSetupFailedError", "Could not start service on device" },
	{ "kAMDCheckinTimeoutError", "The service did not start properly on the device." },
	{ "kAMDCommCenterNotificationFailedError", "Could not listen for notification from the baseband." },
	{ "kAMDContainerCreationFailedError", "Could not create application container." },
	{ "kAMDContainerP0wnFailedError", "Could not repair permissions on application container." },
	{ "kAMDContainerRemovalFailedError", "Could not remove the application container." },
	{ "kAMDCryptoError", "Could not establish a secure connection to the device." },
	{ "kAMDDeviceDisconnectedError", "This device is no longer connected." },
	{ "kAMDDeviceFamilyNotSupported", "This application does not support this kind of device." },
	{ "kAMDDeviceOSVersionTooLow", "The device OS version is too low." },
	{ "kAMDDeviceRefNoGood", "This device is no longer connected." },
	{ "kAMDDeviceTooNewError", "This application needs to be updated." },
	{ "kAMDDictCreationFailedError", "Could not extract capabilities from the request." },
	{ "kAMDDigestFailedError", "Could not read disk image." },
	{ "kAMDEOFError", "End of file." },
	{ "kAMDEmbeddedProfileInstallFailedError", "Could not install the embedded provisioning profile." },
	{ "kAMDErrorError", "An error occurred." },
	{ "kAMDEscrowLockedError", "Device is not available until first unlock after boot." },
	{ "kAMDExecutableTwiddleFailedError", "Could not change executable permissions on the application." },
	{ "kAMDExistenceCheckFailedError", "Could not check to see if the application already exists." },
	{ "kAMDFMiPProtectedError", "The device is in lost mode." },
	{ "kAMDFileExistsError", "The file already exists." },
	{ "kAMDGeoJSONCaptureFailedError", "Could not save the GeoJSON data." },
	{ "kAMDGetProhibitedError", "Cannot retrieve value from the passcode-locked device." },
	{ "kAMDImmutableValueError", "This value cannot be changed." },
	{ "kAMDIncorrectArchitectureError", "This application does not support this device's CPU type." },
	{ "kAMDInstallMapUpdateFailedError", "Could not update the installed applications list." },
	{ "kAMDInstallProhibitedError", "Installation of apps is prohibited by a policy on the device." },
	{ "kAMDInvalidActivationRecordError", "The activation record is not valid." },
	{ "kAMDInvalidArgumentError", "The argument is invalid." },
	{ "kAMDInvalidCheckinError", "Could not start service on device" },
	{ "kAMDInvalidDiskImageError", "The disk image is invalid." },
	{ "kAMDInvalidHostIDError", "The device does not recognise this host." },
	{ "kAMDInvalidPairRecordError", "The host is no longer paired with the device." },
	{ "kAMDInvalidResponseError", "Received an unexpected response from the device." },
	{ "kAMDInvalidServiceError", "The service is invalid." },
	{ "kAMDInvalidSessionIDError", "The session ID is invalid." },
	{ "kAMDIsDirectoryError", "The path is a directory." },
	{ "kAMDLookupFailedError", "Could not list installed applications." },
	{ "kAMDMCChallengeRequired", "A policy on the device requires secure pairing." },
	{ "kAMDMCProtected", "Pairing is prohibited by a policy on the device." },
	{ "kAMDManifestCaptureFailedError", "Could not save the application manifest." },
	{ "kAMDMapGenerationFailedError", "Could not generate the map." },
	{ "kAMDMissingActivationRecordError", "The activation record could not be found." },
	{ "kAMDMissingApplicationIdentifierError", "Request was missing the application identifier." },
	{ "kAMDMissingAttributeValueError", "Request was missing a required value." },
	{ "kAMDMissingBundleExecutableError", "The application bundle does not contain an executable." },
	{ "kAMDMissingBundleIdentifierError", "The application bundle does not contain a valid identifier." },
	{ "kAMDMissingBundlePathError", "Could not determine the application bundle path." },
	{ "kAMDMissingBundleVersionError", "The bundle's Info.plist does not contain a CFBundleVersion key or its value is not a string." },
	{ "kAMDMissingCommandError", "The request did not contain a command." },
	{ "kAMDMissingContainerError", "Could not find the container for the installed application." },
	{ "kAMDMissingContainerPathError", "Request was missing the container path." },
	{ "kAMDMissingDigestError", "The digest is missing." },
	{ "kAMDMissingHostIDError", "The device does not recognise this host." },
	{ "kAMDMissingImageTypeError", "The image is missing." },
	{ "kAMDMissingKeyError", "The key is missing." },
	{ "kAMDMissingOptionsError", "The options are missing." },
	{ "kAMDMissingPackagePathError", "Request was missing the package path." },
	{ "kAMDMissingPairRecordError", "The host is not paired with the device." },
	{ "kAMDMissingServiceError", "The service is missing." },
	{ "kAMDMissingSessionIDError", "The session ID is missing." },
	{ "kAMDMissingValueError", "The value is missing." },
	{ "kAMDMobileImageMounterAlreadyMounted", "Could not support development." },
	{ "kAMDMobileImageMounterDigestCreationFailed", "Could not support development." },
	{ "kAMDMobileImageMounterDigestFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageInfoCreationFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageMapLoadFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageMapStoreFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageMountFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageMoveFailed", "Could not support development." },
	{ "kAMDMobileImageMounterImageVerificationFailed", "Could not support development." },
	{ "kAMDMobileImageMounterMissingImagePath", "Could not support development." },
	{ "kAMDMobileImageMounterMissingImageSignature", "Could not support development." },
	{ "kAMDMobileImageMounterMissingImageType", "Could not support development." },
	{ "kAMDMobileImageMounterMountPathMissing", "Could not support development." },
	{ "kAMDMobileImageMounterMountPathNotEmpty", "Could not support development." },
	{ "kAMDMobileImageMounterResponseCreationFailed", "Could not support development." },
	{ "kAMDMobileImageMounterTrustCacheLoadFailed", "Could not support development." },
	{ "kAMDMuxConnectError", "Could not connect to the device." },
	{ "kAMDMuxCreateListenerError", "Could not listen for USB devices." },
	{ "kAMDMuxError", "There was an error with the USB device multiplexor." },
	{ "kAMDMuxGetListenerError", "Could not get the USB listener." },
	{ "kAMDNewsstandArtworkCaptureFailedError", "Could not save the Newsstand artwork." },
	{ "kAMDNoResourcesError", "Could not allocate a resource." },
	{ "kAMDNoWifiSyncSupportError", "Device doesn't support wireless sync." },
	{ "kAMDNotConnectedError", "Not connected to the device." },
	{ "kAMDNotEntitledError", "The requesting application is not allowed to make this request." },
	{ "kAMDNotFoundError", "The file could not be found." },
	{ "kAMDNotificationFailedError", "Could not post a notification." },
	{ "kAMDOverrunError", "There was a buffer overrun." },
	{ "kAMDPackageExtractionFailedError", "Could not open the application package." },
	{ "kAMDPackageInspectionFailedError", "Could not inspect the application package." },
	{ "kAMDPackageMoveFailedError", "Could not move the application package into the staging location." },
	{ "kAMDPackagePatchFailedError", "Could not apply patch update to application." },
	{ "kAMDPairingDialogResponsePendingError", "The user has not yet responded to the pairing request." },
	{ "kAMDPairingProhibitedError", "Pairing only allowed over USB." },
	{ "kAMDPasswordProtectedError", "The device is passcode protected." },
	{ "kAMDPathConversionFailedError", "Could not convert the path." },
	{ "kAMDPermissionError", "You do not have permission." },
	{ "kAMDPluginCopyFailedError", "Could not copy VPN Plug-in into app container." },
	{ "kAMDProhibitedBySupervision", "Operation prohibited on supervised devices." },
	{ "kAMDProvisioningProfileNotValid", "The provisioning profile is not valid." },
	{ "kAMDReadError", "Could not read from the device." },
	{ "kAMDReceiveMessageError", "Could not receive a message from the device." },
	{ "kAMDRemoveProhibitedError", "Cannot remove value on device." },
	{ "kAMDRestoreContainerFailedError", "Could not restore the application container." },
	{ "kAMDSUFirmwareError", "Could not flash the firmware." },
	{ "kAMDSUPatchError", "Could not patch the file." },
	{ "kAMDSUVerificationError", "The software update package could not be verified." },
	{ "kAMDSavePairRecordFailedError", "Could not save the pairing record." },
	{ "kAMDSeatbeltProfileRemovalFailedError", "Could not remove the application seatbelt profile." },
	{ "kAMDSendMessageError", "Could not send a message to the device." },
	{ "kAMDServiceLimitError", "Too many instances of this service are already running." },
	{ "kAMDServiceProhibitedError", "The service could not be started on the device." },
	{ "kAMDSessionActiveError", "The session is active." },
	{ "kAMDSessionInactiveError", "The session is inactive." },
	{ "kAMDSetProhibitedError", "Cannot set value on device." },
	{ "kAMDStageCreationFailedError", "Could not create the staging directory." },
	{ "kAMDStartServiceError", "The service could not be started." },
	{ "kAMDSuccess", "There was no error." },
	{ "kAMDSymlinkFailedError", "Could not create the symlink." },
	{ "kAMDTimeOutError", "The operation timed out." },
	{ "kAMDTooBigError", "The message is too big." },
	{ "kAMDUndefinedError", "An unknown error occurred." },
	{ "kAMDUninstallProhibitedError", "Uninstallation of apps is prohibited by a policy on the device." },
	{ "kAMDUnknownCommandError", "The device does not recognise the command." },
	{ "kAMDUnknownPacketError", "The packet is unknown." },
	{ "kAMDUnsupportedError", "This operation is unsupported." },
	{ "kAMDUserDeniedPairingError", "The device rejected the pairing attempt." },
	{ "kAMDWriteError", "Could not write to the device." },
	{ "kAMDWrongDroidError", "The device is in recovery mode." },
	{ "kAMDiTunesArtworkCaptureFailedError", "Could not save the iTunes artwork." },
	{ "kAMDiTunesMetadataCaptureFailedError", "Could not save the iTunes metadata." },
};

const int error_id_to_message_count = sizeof(error_id_to_message) / sizeof(error_id_to_message_t);

const char* get_error_message(unsigned int error) {
	const char* id = NULL;

	// Lookup error localization id
	for (int i = 0; i < errorcode_to_id_count; i++) {
		if (errorcode_to_id[i].error == error) {
			id = errorcode_to_id[i].id;
			break;
		}
	}

	// Lookup error message
	if (id) {
		for (int i = 0; i < error_id_to_message_count; i++)
			if (strcmp(error_id_to_message[i].id, id) == 0)
				return error_id_to_message[i].message;
	}

	// If message is not found, then at least return id if it was found, otherwise NULL
	return id;
};
