package ntdll;

use strict;

require Exporter;

use wine;
use vars qw(@ISA @EXPORT @EXPORT_OK);

@ISA = qw(Exporter);
@EXPORT = qw();
@EXPORT_OK = qw();

my $module_declarations = {
    "DbgBreakPoint" => ["void",  []],
    "DbgUserBreakPoint" => ["void",  []],
    "NtAcceptConnectPort" => ["long",  ["long", "long", "long", "long", "long", "long"]],
    "NtAccessCheck" => ["long",  ["ptr", "long", "long", "ptr", "ptr", "ptr", "ptr", "ptr"]],
    "NtAdjustPrivilegesToken" => ["long",  ["long", "long", "ptr", "long", "ptr", "ptr"]],
    "NtAllocateLocallyUniqueId" => ["long",  ["ptr"]],
    "NtAllocateUuids" => ["long",  ["ptr", "ptr", "ptr"]],
    "NtClearEvent" => ["long",  ["long"]],
    "NtClose" => ["long",  ["long"]],
    "NtCompleteConnectPort" => ["long",  ["long"]],
    "NtConnectPort" => ["long",  ["long", "ptr", "long", "long", "long", "long", "long", "long"]],
    "NtCreateDirectoryObject" => ["long",  ["ptr", "long", "ptr"]],
    "NtCreateEvent" => ["long",  ["ptr", "long", "ptr", "long", "long"]],
    "NtCreateKey" => ["long",  ["ptr", "long", "ptr", "long", "ptr", "long", "ptr"]],
    "NtCreateMailslotFile" => ["long",  ["long", "long", "long", "long", "long", "long", "long", "long"]],
    "NtCreatePagingFile" => ["long",  ["ptr", "long", "long", "ptr"]],
    "NtCreatePort" => ["long",  ["long", "long", "long", "long", "long"]],
    "NtCreateSection" => ["long",  ["ptr", "long", "ptr", "ptr", "long", "long", "long"]],
    "NtCreateSemaphore" => ["long",  ["ptr", "long", "ptr", "long", "long"]],
    "NtCreateSymbolicLinkObject" => ["long",  ["ptr", "long", "ptr", "ptr"]],
    "NtCreateTimer" => ["long",  ["ptr", "long", "ptr", "long"]],
    "NtCurrentTeb" => ["ptr",  []],
    "NtDeleteKey" => ["long",  ["long"]],
    "NtDeleteValueKey" => ["long",  ["long", "ptr"]],
    "NtDeviceIoControlFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "ptr", "long", "ptr", "long"]],
    "NtDisplayString" => ["long",  ["ptr"]],
    "NtDuplicateObject" => ["long",  ["long", "ptr", "long", "ptr", "long", "long", "long"]],
    "NtDuplicateToken" => ["long",  ["long", "long", "ptr", "long", "long", "ptr"]],
    "NtEnumerateKey" => ["long",  ["long", "long", "long", "ptr", "long", "ptr"]],
    "NtEnumerateValueKey" => ["long",  ["long", "long", "long", "ptr", "long", "ptr"]],
    "NtFlushKey" => ["long",  ["long"]],
    "NtFsControlFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "ptr", "long", "ptr", "long"]],
    "NtListenPort" => ["long",  ["long", "long"]],
    "NtLoadKey" => ["long",  ["ptr", "ptr"]],
    "NtMapViewOfSection" => ["long",  ["long", "long", "ptr", "long", "long", "ptr", "ptr", "long", "long", "long"]],
    "NtNotifyChangeKey" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "long", "ptr", "long", "long"]],
    "NtOpenDirectoryObject" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenEvent" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenFile" => ["long",  ["ptr", "long", "ptr", "ptr", "long", "long"]],
    "NtOpenKey" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenProcessToken" => ["long",  ["long", "long", "ptr"]],
    "NtOpenSection" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenSemaphore" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenSymbolicLinkObject" => ["long",  ["ptr", "long", "ptr"]],
    "NtOpenThreadToken" => ["long",  ["long", "long", "long", "ptr"]],
    "NtPowerInformation" => ["long",  ["long", "long", "long", "long", "long"]],
    "NtPulseEvent" => ["long",  ["long", "ptr"]],
    "NtQueryDirectoryFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "long", "long", "ptr", "long"]],
    "NtQueryDirectoryObject" => ["long",  ["long", "ptr", "long", "long", "long", "ptr", "ptr"]],
    "NtQueryEvent" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "NtQueryInformationProcess" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryInformationThread" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryInformationToken" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryKey" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryObject" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQueryPerformanceCounter" => ["long",  ["ptr", "ptr"]],
    "NtQuerySection" => ["long",  ["long", "ptr", "ptr", "long", "ptr"]],
    "NtQuerySecurityObject" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "NtQuerySemaphore" => ["long",  ["long", "ptr", "ptr", "long", "ptr"]],
    "NtQuerySymbolicLinkObject" => ["long",  ["long", "ptr", "ptr"]],
    "NtQuerySystemInformation" => ["long",  ["long", "ptr", "long", "ptr"]],
    "NtQuerySystemTime" => ["void",  ["ptr"]],
    "NtQueryTimerResolution" => ["long",  ["long", "long", "long"]],
    "NtQueryValueKey" => ["long",  ["long", "ptr", "long", "ptr", "long", "ptr"]],
    "NtQueryVolumeInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "NtRaiseException" => ["void",  ["ptr", "ptr", "long", "ptr"]],
    "NtReadFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "ptr", "ptr"]],
    "NtRegisterThreadTerminatePort" => ["long",  ["long"]],
    "NtReleaseSemaphore" => ["long",  ["long", "long", "ptr"]],
    "NtReplaceKey" => ["long",  ["ptr", "long", "ptr"]],
    "NtReplyWaitReceivePort" => ["long",  ["long", "long", "long", "long"]],
    "NtRequestWaitReplyPort" => ["long",  ["long", "long", "long"]],
    "NtResetEvent" => ["long",  ["long", "ptr"]],
    "NtRestoreKey" => ["long",  ["long", "long", "long"]],
    "NtResumeThread" => ["long",  ["long", "ptr"]],
    "NtSaveKey" => ["long",  ["long", "long"]],
    "NtSetEvent" => ["long",  ["long", "ptr"]],
    "NtSetInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "NtSetInformationKey" => ["long",  ["long", "long", "ptr", "long"]],
    "NtSetInformationProcess" => ["long",  ["long", "long", "ptr", "long"]],
    "NtSetInformationThread" => ["long",  ["long", "long", "ptr", "long"]],
    "NtSetIntervalProfile" => ["long",  ["long", "long"]],
    "NtSetSecurityObject" => ["long",  ["long", "long", "ptr"]],
    "NtSetTimer" => ["long",  ["long", "ptr", "ptr", "ptr", "long", "long", "ptr"]],
    "NtSetValueKey" => ["long",  ["long", "ptr", "long", "long", "ptr", "long"]],
    "NtSetVolumeInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "NtTerminateProcess" => ["long",  ["long", "long"]],
    "NtTerminateThread" => ["long",  ["long", "long"]],
    "NtUnloadKey" => ["long",  ["long"]],
    "NtWaitForSingleObject" => ["long",  ["ptr", "long", "ptr"]],
    "NtWriteFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "ptr", "ptr"]],
    "RtlAcquirePebLock" => ["void",  []],
    "RtlAcquireResourceExclusive" => ["long",  ["ptr", "long"]],
    "RtlAcquireResourceShared" => ["long",  ["ptr", "long"]],
    "RtlAddAccessAllowedAce" => ["long",  ["ptr", "long", "long", "ptr"]],
    "RtlAddAce" => ["long",  ["ptr", "long", "long", "ptr", "long"]],
    "RtlAdjustPrivilege" => ["long",  ["long", "long", "long", "long"]],
    "RtlAllocateAndInitializeSid" => ["long",  ["ptr", "long", "long", "long", "long", "long", "long", "long", "long", "long", "ptr"]],
    "RtlAllocateHeap" => ["ptr",  ["long", "long", "long"]],
    "RtlAnsiStringToUnicodeSize" => ["long",  ["ptr"]],
    "RtlAnsiStringToUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlAppendAsciizToString" => ["long",  ["ptr", "str"]],
    "RtlAppendStringToString" => ["long",  ["ptr", "ptr"]],
    "RtlAppendUnicodeStringToString" => ["long",  ["ptr", "ptr"]],
    "RtlAppendUnicodeToString" => ["long",  ["ptr", "wstr"]],
    "RtlAssert" => ["void",  ["ptr", "ptr", "long", "long"]],
    "RtlClearBits" => ["long",  ["long", "long", "long"]],
    "RtlCompactHeap" => ["long",  ["long", "long"]],
    "RtlCompareMemory" => ["long",  ["ptr", "ptr", "long"]],
    "RtlCompareString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlCompareUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlConvertLongToLargeInteger" => ["longlong",  ["long"]],
    "RtlConvertSidToUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlConvertUlongToLargeInteger" => ["longlong",  ["long"]],
    "RtlCopySid" => ["long",  ["long", "ptr", "ptr"]],
    "RtlCopyString" => ["void",  ["ptr", "ptr"]],
    "RtlCopyUnicodeString" => ["void",  ["ptr", "ptr"]],
    "RtlCreateAcl" => ["long",  ["ptr", "long", "long"]],
    "RtlCreateEnvironment" => ["long",  ["long", "long"]],
    "RtlCreateHeap" => ["long",  ["long", "ptr", "long", "long", "ptr", "ptr"]],
    "RtlCreateSecurityDescriptor" => ["long",  ["ptr", "long"]],
    "RtlCreateUnicodeString" => ["long",  ["ptr", "wstr"]],
    "RtlCreateUnicodeStringFromAsciiz" => ["long",  ["ptr", "str"]],
    "RtlDeleteCriticalSection" => ["long",  ["ptr"]],
    "RtlDeleteResource" => ["void",  ["ptr"]],
    "RtlDeleteSecurityObject" => ["long",  ["long"]],
    "RtlDestroyEnvironment" => ["long",  ["long"]],
    "RtlDestroyHeap" => ["long",  ["long"]],
    "RtlDosPathNameToNtPathName_U" => ["long",  ["wstr", "ptr", "long", "long"]],
    "RtlDumpResource" => ["void",  ["ptr"]],
    "RtlEnlargedIntegerMultiply" => ["longlong",  ["long", "long"]],
    "RtlEnlargedUnsignedDivide" => ["long",  ["long", "long", "long", "ptr"]],
    "RtlEnlargedUnsignedMultiply" => ["longlong",  ["long", "long"]],
    "RtlEnterCriticalSection" => ["long",  ["ptr"]],
    "RtlEqualPrefixSid" => ["long",  ["ptr", "ptr"]],
    "RtlEqualSid" => ["long",  ["ptr", "ptr"]],
    "RtlEqualString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlEqualUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlEraseUnicodeString" => ["void",  ["ptr"]],
    "RtlExtendedIntegerMultiply" => ["longlong",  ["long", "long", "long"]],
    "RtlExtendedLargeIntegerDivide" => ["longlong",  ["long", "long", "long", "ptr"]],
    "RtlFillMemory" => ["void",  ["ptr", "long", "long"]],
    "RtlFindClearBits" => ["long",  ["long", "long", "long"]],
    "RtlFirstFreeAce" => ["long",  ["ptr", "ptr"]],
    "RtlFormatCurrentUserKeyPath" => ["long",  ["ptr"]],
    "RtlFreeAnsiString" => ["void",  ["ptr"]],
    "RtlFreeHeap" => ["long",  ["long", "long", "ptr"]],
    "RtlFreeOemString" => ["void",  ["ptr"]],
    "RtlFreeSid" => ["long",  ["ptr"]],
    "RtlFreeUnicodeString" => ["void",  ["ptr"]],
    "RtlGetAce" => ["long",  ["ptr", "long", "ptr"]],
    "RtlGetControlSecurityDescriptor" => ["long",  ["ptr", "ptr", "ptr"]],
    "RtlGetDaclSecurityDescriptor" => ["long",  ["ptr", "ptr", "ptr", "ptr"]],
    "RtlGetGroupSecurityDescriptor" => ["long",  ["ptr", "ptr", "ptr"]],
    "RtlGetNtProductType" => ["long",  ["ptr"]],
    "RtlGetOwnerSecurityDescriptor" => ["long",  ["ptr", "ptr", "ptr"]],
    "RtlGetProcessHeaps" => ["long",  ["long", "ptr"]],
    "RtlGetSaclSecurityDescriptor" => ["long",  ["ptr", "ptr", "ptr", "ptr"]],
    "RtlIdentifierAuthoritySid" => ["ptr",  ["ptr"]],
    "RtlImageNtHeader" => ["ptr",  ["long"]],
    "RtlImpersonateSelf" => ["long",  ["long"]],
    "RtlInitAnsiString" => ["void",  ["ptr", "str"]],
    "RtlInitString" => ["void",  ["ptr", "str"]],
    "RtlInitUnicodeString" => ["void",  ["ptr", "wstr"]],
    "RtlInitializeBitMap" => ["long",  ["long", "long", "long"]],
    "RtlInitializeCriticalSection" => ["long",  ["ptr"]],
    "RtlInitializeCriticalSectionAndSpinCount" => ["long",  ["ptr", "long"]],
    "RtlInitializeGenericTable" => ["long",  []],
    "RtlInitializeResource" => ["void",  ["ptr"]],
    "RtlInitializeSid" => ["long",  ["ptr", "ptr", "long"]],
    "RtlIntegerToChar" => ["long",  ["long", "long", "long", "long"]],
    "RtlIsTextUnicode" => ["long",  ["ptr", "long", "ptr"]],
    "RtlLargeIntegerAdd" => ["longlong",  ["long", "long", "long", "long"]],
    "RtlLargeIntegerArithmeticShift" => ["longlong",  ["long", "long", "long"]],
    "RtlLargeIntegerDivide" => ["longlong",  ["long", "long", "long", "long", "ptr"]],
    "RtlLargeIntegerNegate" => ["longlong",  ["long", "long"]],
    "RtlLargeIntegerShiftLeft" => ["longlong",  ["long", "long", "long"]],
    "RtlLargeIntegerShiftRight" => ["longlong",  ["long", "long", "long"]],
    "RtlLargeIntegerSubtract" => ["longlong",  ["long", "long", "long", "long"]],
    "RtlLeaveCriticalSection" => ["long",  ["ptr"]],
    "RtlLengthRequiredSid" => ["long",  ["long"]],
    "RtlLengthSecurityDescriptor" => ["long",  ["ptr"]],
    "RtlLengthSid" => ["long",  ["ptr"]],
    "RtlLockHeap" => ["long",  ["long"]],
    "RtlMakeSelfRelativeSD" => ["long",  ["ptr", "ptr", "ptr"]],
    "RtlMoveMemory" => ["void",  ["ptr", "ptr", "long"]],
    "RtlMultiByteToUnicodeN" => ["long",  ["wstr", "long", "ptr", "str", "long"]],
    "RtlMultiByteToUnicodeSize" => ["long",  ["ptr", "str", "long"]],
    "RtlNewSecurityObject" => ["long",  ["long", "long", "long", "long", "long", "long"]],
    "RtlNormalizeProcessParams" => ["ptr",  ["ptr"]],
    "RtlNtStatusToDosError" => ["long",  ["long"]],
    "RtlOemStringToUnicodeSize" => ["long",  ["ptr"]],
    "RtlOemStringToUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlOemToUnicodeN" => ["long",  ["wstr", "long", "ptr", "str", "long"]],
    "RtlOpenCurrentUser" => ["long",  ["long", "ptr"]],
    "RtlPrefixString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlPrefixUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlQueryEnvironmentVariable_U" => ["long",  ["long", "ptr", "ptr"]],
    "RtlRaiseException" => ["void",  ["ptr", "ptr"]],
    "RtlRaiseStatus" => ["void",  ["long"]],
    "RtlReAllocateHeap" => ["ptr",  ["long", "long", "ptr", "long"]],
    "RtlReleasePebLock" => ["void",  []],
    "RtlReleaseResource" => ["void",  ["ptr"]],
    "RtlSecondsSince1970ToTime" => ["void",  ["long", "ptr"]],
    "RtlSecondsSince1980ToTime" => ["void",  ["long", "ptr"]],
    "RtlSetBits" => ["long",  ["long", "long", "long"]],
    "RtlSetDaclSecurityDescriptor" => ["long",  ["ptr", "long", "ptr", "long"]],
    "RtlSetEnvironmentVariable" => ["long",  ["long", "ptr", "ptr"]],
    "RtlSetGroupSecurityDescriptor" => ["long",  ["ptr", "ptr", "long"]],
    "RtlSetOwnerSecurityDescriptor" => ["long",  ["ptr", "ptr", "long"]],
    "RtlSetSaclSecurityDescriptor" => ["long",  ["ptr", "long", "ptr", "long"]],
    "RtlSizeHeap" => ["long",  ["long", "long", "ptr"]],
    "RtlSubAuthorityCountSid" => ["ptr",  ["ptr"]],
    "RtlSubAuthoritySid" => ["ptr",  ["ptr", "long"]],
    "RtlSystemTimeToLocalTime" => ["void",  ["ptr", "ptr"]],
    "RtlTimeFieldsToTime" => ["long",  ["ptr", "ptr"]],
    "RtlTimeToElapsedTimeFields" => ["void",  ["ptr", "ptr"]],
    "RtlTimeToSecondsSince1970" => ["long",  ["ptr", "ptr"]],
    "RtlTimeToSecondsSince1980" => ["long",  ["ptr", "ptr"]],
    "RtlTimeToTimeFields" => ["void",  ["ptr", "ptr"]],
    "RtlTryEnterCriticalSection" => ["long",  ["ptr"]],
    "RtlUnicodeStringToAnsiSize" => ["long",  ["ptr"]],
    "RtlUnicodeStringToAnsiString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlUnicodeStringToOemSize" => ["long",  ["ptr"]],
    "RtlUnicodeStringToOemString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlUnicodeToMultiByteN" => ["long",  ["str", "long", "ptr", "wstr", "long"]],
    "RtlUnicodeToMultiByteSize" => ["long",  ["ptr", "wstr", "long"]],
    "RtlUnicodeToOemN" => ["long",  ["str", "long", "ptr", "wstr", "long"]],
    "RtlUnlockHeap" => ["long",  ["long"]],
    "RtlUnwind" => ["void",  ["ptr", "ptr", "ptr", "long", "ptr"]],
    "RtlUpcaseUnicodeString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlUpcaseUnicodeStringToAnsiString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlUpcaseUnicodeStringToOemString" => ["long",  ["ptr", "ptr", "long"]],
    "RtlUpcaseUnicodeToMultiByteN" => ["long",  ["str", "long", "ptr", "wstr", "long"]],
    "RtlUpcaseUnicodeToOemN" => ["long",  ["str", "long", "ptr", "wstr", "long"]],
    "RtlUpperString" => ["void",  ["ptr", "ptr"]],
    "RtlValidSecurityDescriptor" => ["long",  ["ptr"]],
    "RtlValidSid" => ["long",  ["ptr"]],
    "RtlValidateHeap" => ["long",  ["long", "long", "ptr"]],
    "RtlWalkHeap" => ["long",  ["long", "ptr"]],
    "RtlZeroMemory" => ["void",  ["ptr", "long"]],
    "RtlpUnWaitCriticalSection" => ["long",  ["ptr"]],
    "RtlpWaitForCriticalSection" => ["long",  ["ptr"]],
    "RtlxAnsiStringToUnicodeSize" => ["long",  ["ptr"]],
    "RtlxOemStringToUnicodeSize" => ["long",  ["ptr"]],
    "RtlxUnicodeStringToAnsiSize" => ["long",  ["ptr"]],
    "RtlxUnicodeStringToOemSize" => ["long",  ["ptr"]],
    "VerSetConditionMask" => ["longlong",  ["long", "long", "long", "long"]],
    "ZwAcceptConnectPort" => ["long",  ["long", "long", "long", "long", "long", "long"]],
    "ZwAdjustGroupsToken" => ["long",  ["long", "long", "ptr", "long", "ptr", "ptr"]],
    "ZwCompleteConnectPort" => ["long",  ["long"]],
    "ZwConnectPort" => ["long",  ["long", "ptr", "long", "long", "long", "long", "long", "long"]],
    "ZwCreateDirectoryObject" => ["long",  ["ptr", "long", "ptr"]],
    "ZwCreateEvent" => ["long",  ["ptr", "long", "ptr", "long", "long"]],
    "ZwCreateKey" => ["long",  ["ptr", "long", "ptr", "long", "ptr", "long", "ptr"]],
    "ZwCreateMailslotFile" => ["long",  ["long", "long", "long", "long", "long", "long", "long", "long"]],
    "ZwCreatePagingFile" => ["long",  ["ptr", "long", "long", "ptr"]],
    "ZwCreatePort" => ["long",  ["long", "long", "long", "long", "long"]],
    "ZwCreateSection" => ["long",  ["ptr", "long", "ptr", "ptr", "long", "long", "long"]],
    "ZwCreateTimer" => ["long",  ["ptr", "long", "ptr", "long"]],
    "ZwDeleteKey" => ["long",  ["long"]],
    "ZwDeleteValueKey" => ["long",  ["long", "ptr"]],
    "ZwDeviceIoControlFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "ptr", "long", "ptr", "long"]],
    "ZwDuplicateObject" => ["long",  ["long", "ptr", "long", "ptr", "long", "long", "long"]],
    "ZwDuplicateToken" => ["long",  ["long", "long", "ptr", "long", "long", "ptr"]],
    "ZwEnumerateKey" => ["long",  ["long", "long", "long", "ptr", "long", "ptr"]],
    "ZwEnumerateValueKey" => ["long",  ["long", "long", "long", "ptr", "long", "ptr"]],
    "ZwFlushKey" => ["long",  ["long"]],
    "ZwFsControlFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "ptr", "long", "ptr", "long"]],
    "ZwListenPort" => ["long",  ["long", "long"]],
    "ZwLoadKey" => ["long",  ["ptr", "ptr"]],
    "ZwMapViewOfSection" => ["long",  ["long", "long", "ptr", "long", "long", "ptr", "ptr", "long", "long", "long"]],
    "ZwNotifyChangeKey" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "long", "long", "ptr", "long", "long"]],
    "ZwOpenDirectoryObject" => ["long",  ["ptr", "long", "ptr"]],
    "ZwOpenEvent" => ["long",  ["ptr", "long", "ptr"]],
    "ZwOpenFile" => ["long",  ["ptr", "long", "ptr", "ptr", "long", "long"]],
    "ZwOpenKey" => ["long",  ["ptr", "long", "ptr"]],
    "ZwOpenProcessToken" => ["long",  ["long", "long", "ptr"]],
    "ZwOpenSection" => ["long",  ["ptr", "long", "ptr"]],
    "ZwOpenThreadToken" => ["long",  ["long", "long", "long", "ptr"]],
    "ZwQueryDirectoryFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "long", "long", "ptr", "long"]],
    "ZwQueryDirectoryObject" => ["long",  ["long", "ptr", "long", "long", "long", "ptr", "ptr"]],
    "ZwQueryInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "ZwQueryInformationProcess" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "ZwQueryInformationThread" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "ZwQueryInformationToken" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "ZwQueryKey" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "ZwQueryObject" => ["long",  ["long", "long", "ptr", "long", "ptr"]],
    "ZwQuerySystemInformation" => ["long",  ["long", "ptr", "long", "ptr"]],
    "ZwQuerySystemTime" => ["void",  ["ptr"]],
    "ZwQueryValueKey" => ["long",  ["long", "ptr", "long", "ptr", "long", "ptr"]],
    "ZwQueryVolumeInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "ZwReadFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "ptr", "ptr"]],
    "ZwRegisterThreadTerminatePort" => ["long",  ["long"]],
    "ZwReplaceKey" => ["long",  ["ptr", "long", "ptr"]],
    "ZwReplyWaitReceivePort" => ["long",  ["long", "long", "long", "long"]],
    "ZwRequestWaitReplyPort" => ["long",  ["long", "long", "long"]],
    "ZwRestoreKey" => ["long",  ["long", "long", "long"]],
    "ZwResumeThread" => ["long",  ["long", "ptr"]],
    "ZwSaveKey" => ["long",  ["long", "long"]],
    "ZwSetEvent" => ["long",  ["long", "ptr"]],
    "ZwSetInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "ZwSetInformationKey" => ["long",  ["long", "long", "ptr", "long"]],
    "ZwSetInformationProcess" => ["long",  ["long", "long", "ptr", "long"]],
    "ZwSetInformationThread" => ["long",  ["long", "long", "ptr", "long"]],
    "ZwSetIntervalProfile" => ["long",  ["long", "long"]],
    "ZwSetTimer" => ["long",  ["long", "ptr", "ptr", "ptr", "long", "long", "ptr"]],
    "ZwSetValueKey" => ["long",  ["long", "ptr", "long", "long", "ptr", "long"]],
    "ZwSetVolumeInformationFile" => ["long",  ["long", "ptr", "ptr", "long", "long"]],
    "ZwTerminateThread" => ["long",  ["long", "long"]],
    "ZwUnloadKey" => ["long",  ["long"]],
    "ZwWaitForSingleObject" => ["long",  ["ptr", "long", "ptr"]],
    "ZwWriteFile" => ["long",  ["long", "long", "ptr", "ptr", "ptr", "ptr", "long", "ptr", "ptr"]],
    "_alldiv" => ["longlong",  ["long", "long", "long", "long"]],
    "_allmul" => ["longlong",  ["long", "long", "long", "long"]],
    "_alloca_probe" => ["void",  ["ptr"]],
    "_allrem" => ["longlong",  ["long", "long", "long", "long"]],
    "_aulldiv" => ["longlong",  ["long", "long", "long", "long"]],
    "_aullrem" => ["longlong",  ["long", "long", "long", "long"]],
    "_chkstk" => ["void",  ["ptr"]]
};

&wine::declare("ntdll",%$module_declarations);
push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));
1;
