Changeset 9986 for trunk/src


Ignore:
Timestamp:
Apr 7, 2003, 8:40:53 PM (22 years ago)
Author:
sandervl
Message:

PF: NTDLL update for GCC 3.2.1 + resync with Wine

Location:
trunk/src/NTDLL
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/NTDLL/exception.c

    r9684 r9986  
    1 /* $Id: exception.c,v 1.1 2003-01-16 15:22:35 sandervl Exp $ */
     1/* $Id: exception.c,v 1.2 2003-04-07 18:40:48 sandervl Exp $ */
    22
    33/*
  • trunk/src/NTDLL/file.c

    r8428 r9986  
    1919#include <stdlib.h>
    2020#include <string.h>
     21
    2122#include "wine/debug.h"
    2223#include "ntdll_misc.h"
  • trunk/src/NTDLL/initntdll.c

    r9776 r9986  
    6060
    6161         dprintf(("ntdll init %s %s (%x)", __DATE__, __TIME__, inittermNTDLL));
    62 
    6362         break;
    6463      case 1 :
  • trunk/src/NTDLL/initterm.cpp

    r9739 r9986  
    4040 void __ctordtorInit (void);
    4141 void __ctordtorTerm (void);
     42 void __ehInit();
     43 //InitOverrides deals with EMX runtime FS setting and allows us to
     44 //switch to using our own funcs namely _errno & _thread in runtime
     45 void InitOverrides(void);
    4246 int _CRT_init (void);
    4347 void _CRT_term (void);
     
    5963                                   ulFlag)
    6064{
    61    size_t i;
    6265   APIRET rc;
    6366
     
    7376           return 0;
    7477         __ctordtorInit ();
     78         __ehInit();
     79        InitOverrides();
    7580
    76          rc = DosExitList(EXITLIST_NONCRITDLL|EXLST_ADD, cleanup);
     81        rc = DosExitList(EXITLIST_NONCRITDLL|EXLST_ADD, cleanup);
    7782         if (rc)
    7883            return 0UL;
  • trunk/src/NTDLL/large_int.c

    r9684 r9986  
    33 *
    44 * Copyright 2000 Alexandre Julliard
     5 * Copyright 2003 Thomas Mertes
    56 *
    67 * This library is free software; you can redistribute it and/or
     
    185186 * This function computes (a * b) >> (64 + shift)
    186187 *
    187  * This allows replacing a division by a longlong constant
    188  * by a multiplication by the inverse constant.
    189  *
    190  * If 'c' is the constant divisor, the constants 'b' and 'shift'
    191  * must be chosen such that b = 2^(64+shift) / c.
    192  * Then we have RtlExtendedMagicDivide(a,b,shift) == a * b / 2^(64+shift) == a / c.
    193  *
    194  * I'm too lazy to implement it right now...
    195  */
    196 /* LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift )
    197  * {
    198  *     return 0;
    199  * }
    200  */
     188 * RETURNS
     189 *  (a * b) >> (64 + shift)
     190 *
     191 * NOTES
     192 *  This allows replacing a division by a longlong constant
     193 *  by a multiplication by the inverse constant.
     194 *
     195 *  If 'c' is the constant divisor, the constants 'b' and 'shift'
     196 *  must be chosen such that b = 2^(64+shift) / c.
     197 *  Then we have RtlExtendedMagicDivide(a,b,shift) == a * b / 2^(64+shift) == a / c.
     198 *
     199 *  The Parameter b although defined as LONGLONG is used as ULONGLONG.
     200 */
     201#define LOWER_32(A) ((A) & 0xffffffff)
     202#define UPPER_32(A) ((A) >> 32)
     203LONGLONG WINAPI RtlExtendedMagicDivide(
     204    LONGLONG a, /* [I] Dividend to be divided by the constant divisor */
     205    LONGLONG b, /* [I] Constant computed manually as 2^(64+shift) / divisor */
     206    INT shift)  /* [I] Constant shift chosen to make b as big as possible for 64 bits */
     207{
     208    ULONGLONG a_high;
     209    ULONGLONG a_low;
     210    ULONGLONG b_high;
     211    ULONGLONG b_low;
     212    ULONGLONG ah_bl;
     213    ULONGLONG al_bh;
     214    LONGLONG result;
     215    int positive;
     216
     217    if (a < 0) {
     218        a_high = UPPER_32((ULONGLONG) -a);
     219        a_low =  LOWER_32((ULONGLONG) -a);
     220        positive = 0;
     221    } else {
     222        a_high = UPPER_32((ULONGLONG) a);
     223        a_low =  LOWER_32((ULONGLONG) a);
     224        positive = 1;
     225    } /* if */
     226    b_high = UPPER_32((ULONGLONG) b);
     227    b_low =  LOWER_32((ULONGLONG) b);
     228
     229    ah_bl = a_high * b_low;
     230    al_bh = a_low * b_high;
     231
     232    result = (LONGLONG) ((a_high * b_high +
     233            UPPER_32(ah_bl) +
     234            UPPER_32(al_bh) +
     235            UPPER_32(LOWER_32(ah_bl) + LOWER_32(al_bh) + UPPER_32(a_low * b_low))) >> shift);
     236
     237    if (positive) {
     238        return result;
     239    } else {
     240        return -result;
     241    } /* if */
     242}
     243
     244
     245/******************************************************************************
     246 *      RtlLargeIntegerToChar   [NTDLL.@]
     247 *
     248 * Convert an unsigned large integer to a character string.
     249 *
     250 * RETURNS
     251 *  Success: STATUS_SUCCESS. str contains the converted number
     252 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     253 *           STATUS_BUFFER_OVERFLOW, if str would be larger than length.
     254 *           STATUS_ACCESS_VIOLATION, if str is NULL.
     255 *
     256 * NOTES
     257 *  Instead of base 0 it uses 10 as base.
     258 *  Writes at most length characters to the string str.
     259 *  Str is '\0' terminated when length allowes it.
     260 *  When str fits exactly in length characters the '\0' is ommitted.
     261 *  If value_ptr is NULL it crashes, as the native function does.
     262 *
     263 * DIFFERENCES
     264 * - Accept base 0 as 10 instead of crashing as native function does.
     265 * - The native function does produce garbage or STATUS_BUFFER_OVERFLOW for
     266 *   base 2, 8 and 16 when the value is larger than 0xFFFFFFFF.
     267 */
     268NTSTATUS WINAPI RtlLargeIntegerToChar(
     269    const ULONGLONG *value_ptr, /* [I] Pointer to the value to be converted */
     270    ULONG base,                 /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     271    ULONG length,               /* [I] Length of the str buffer in bytes */
     272    PCHAR str)                  /* [O] Destination for the converted value */
     273{
     274    ULONGLONG value = *value_ptr;
     275    CHAR buffer[65];
     276    PCHAR pos;
     277    CHAR digit;
     278    ULONG len;
     279
     280    if (base == 0) {
     281        base = 10;
     282    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     283        return STATUS_INVALID_PARAMETER;
     284    } /* if */
     285
     286    pos = &buffer[64];
     287    *pos = '\0';
     288
     289    do {
     290        pos--;
     291        digit = value % base;
     292        value = value / base;
     293        if (digit < 10) {
     294            *pos = '0' + digit;
     295        } else {
     296            *pos = 'A' + digit - 10;
     297        } /* if */
     298    } while (value != 0L);
     299
     300    len = &buffer[64] - pos;
     301    if (len > length) {
     302        return STATUS_BUFFER_OVERFLOW;
     303    } else if (str == NULL) {
     304        return STATUS_ACCESS_VIOLATION;
     305    } else if (len == length) {
     306        memcpy(str, pos, len);
     307    } else {
     308        memcpy(str, pos, len + 1);
     309    } /* if */
     310    return STATUS_SUCCESS;
     311}
     312
     313
     314/**************************************************************************
     315 *      RtlInt64ToUnicodeString (NTDLL.@)
     316 *
     317 * Convert a large unsigned integer to a '\0' terminated unicode string.
     318 *
     319 * RETURNS
     320 *  Success: STATUS_SUCCESS. str contains the converted number
     321 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     322 *           STATUS_BUFFER_OVERFLOW, if str is too small to hold the string
     323 *                  (with the '\0' termination). In this case str->Length
     324 *                  is set to the length, the string would have (which can
     325 *                  be larger than the MaximumLength).
     326 *
     327 * NOTES
     328 *  Instead of base 0 it uses 10 as base.
     329 *  If str is NULL it crashes, as the native function does.
     330 *
     331 * DIFFERENCES
     332 * - Accept base 0 as 10 instead of crashing as native function does.
     333 * - Do not return STATUS_BUFFER_OVERFLOW when the string is long enough.
     334 *   The native function does this when the string would be longer than 31
     335 *   characters even when the string parameter is long enough.
     336 * - The native function does produce garbage or STATUS_BUFFER_OVERFLOW for
     337 *   base 2, 8 and 16 when the value is larger than 0xFFFFFFFF.
     338 */
     339NTSTATUS WINAPI RtlInt64ToUnicodeString(
     340    ULONGLONG value,     /* [I] Value to be converted */
     341    ULONG base,          /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     342    UNICODE_STRING *str) /* [O] Destination for the converted value */
     343{
     344    WCHAR buffer[65];
     345    PWCHAR pos;
     346    WCHAR digit;
     347
     348    if (base == 0) {
     349        base = 10;
     350    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     351        return STATUS_INVALID_PARAMETER;
     352    } /* if */
     353
     354    pos = &buffer[64];
     355    *pos = '\0';
     356
     357    do {
     358        pos--;
     359        digit = value % base;
     360        value = value / base;
     361        if (digit < 10) {
     362            *pos = '0' + digit;
     363        } else {
     364            *pos = 'A' + digit - 10;
     365        } /* if */
     366    } while (value != 0L);
     367
     368    str->Length = (&buffer[64] - pos) * sizeof(WCHAR);
     369    if (str->Length >= str->MaximumLength) {
     370        return STATUS_BUFFER_OVERFLOW;
     371    } else {
     372        memcpy(str->Buffer, pos, str->Length + sizeof(WCHAR));
     373    } /* if */
     374    return STATUS_SUCCESS;
     375}
    201376
    202377
     
    244419    return a % b;
    245420}
    246 
  • trunk/src/NTDLL/large_int_odin.asm

    r9684 r9986  
    1818        align 4h
    1919
    20         public RtlpLargeIntegerAdd
    21 RtlpLargeIntegerAdd     proc
     20        public _RtlpLargeIntegerAdd@8
     21_RtlpLargeIntegerAdd@8  proc
    2222
    2323; 25     return a + b;
     
    4545        pop     ebp
    4646        ret     0Ch
    47 RtlpLargeIntegerAdd     endp
     47_RtlpLargeIntegerAdd@8  endp
    4848
    4949CODE32  ends
  • trunk/src/NTDLL/makefile

    r9776 r9986  
    1 # $Id: makefile,v 1.36 2003-02-07 13:58:28 sandervl Exp $
     1# $Id: makefile,v 1.37 2003-04-07 18:40:49 sandervl Exp $
    22
    33#
     
    99
    1010CCENV = EMX
    11 NOTEXPDEF = 1
    1211WRC_PREFIX_RESOURCE=1
    1312
     
    1716!include ../../makefile.inc
    1817
     18CDEFINES   =  -I$(ODIN32_INCLUDE)\emxruntime $(CDEFINES)
    1919
    2020#
     
    5353#
    5454
     55# -liberty_s -lstdcxx -lExCRuntime -lExDllSupport -lc_alias -lgcc_eh
     56# -lgcc -lc -lc_dllso -lgcc_eh -lgcc -lc -lsys -los2 -lend
     57
     58LIBS = \
     59$(ODIN32_LIB_)\EmxSupport\EMXOS2FSRoutines.lib \
     60$(EMX)\lib\iberty_s.lib \
     61$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\stdcxx.lib \
     62$(EMX)\lib\c_alias.lib \
     63$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc_eh.lib \
     64$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc.lib \
     65$(EMX)\lib\mt\c.lib \
     66$(EMX)\lib\mt\c_dllso.lib \
     67$(EMX)\lib\mt\sys.lib \
     68$(EMX)\lib\os2.lib \
     69$(ODIN32_LIB_)\EmxSupport\ExCRuntime.lib \
     70$(ODIN32_LIB_)\EmxSupport\ExDllSupport.lib \
     71$(ODIN32_LIB)\kernel32.lib \
     72$(ODIN32_LIB)\user32.lib
    5573
    5674#
     
    5977TARGET = ntdll
    6078
    61 all: $(OBJDIR) $(OBJDIR)\$(TARGET).dll $(TARGET).lib
    62 
    63 $(OBJDIR)\$(TARGET).dll: $(OBJS) $(TARGET).def
    64     $(LD) $(LDFLAGS) -L$(ODIN32_LIB_)\Release -Zso -Zsys $(OBJS) $(TARGET).def -L.\libs -lm\
    65       -liberty_s -lstdcxx -o $(OBJDIR)\$(TARGET).dll
    66     touch $(OBJDIR)\$(TARGET).map
    67     @echo "Illegal Sym File for EMX" > $(OBJDIR)\$(TARGET).sym
    68 
    69 $(TARGET).lib:
    70     implib $(OBJDIR)\$(TARGET).lib ntdll.def
    71     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release > nul:
    72     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug  > nul:
    73 
    7479#
    7580# Includes the common rules.
     
    7782!include $(ODIN32_POST_INC)
    7883
    79 lib:
    80     $(IMPDEF) $(IMPDEF_FLAGS) ntdll-vac.def $(OBJDIR)\ntdllexp.def
    81     implib $(OBJDIR)\$(TARGET).lib $(OBJDIR)\ntdllexp.def
    82     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release > nul:
    83     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug  > nul:
  • trunk/src/NTDLL/ntdll.c

    r9803 r9986  
    1 /* $Id: ntdll.c,v 1.6 2003-02-13 17:17:05 sandervl Exp $ */
     1/* $Id: ntdll.c,v 1.7 2003-04-07 18:40:49 sandervl Exp $ */
    22
    33/*
  • trunk/src/NTDLL/ntdll.def

    r9731 r9986  
    1 ; $Id: ntdll.def,v 1.49 2003-01-23 20:21:59 sandervl Exp $
     1; $Id: ntdll.def,v 1.50 2003-04-07 18:40:49 sandervl Exp $
    22
    33;
     
    1313    _RtlEnterCriticalSection@4           = KERNEL32.EnterCriticalSection
    1414    _RtlDeleteCriticalSection@4          = KERNEL32.DeleteCriticalSection
    15     GetVersionExW  = KERNEL32.429
    16     WriteLog = KERNEL32.1202
    17     ReleaseSemaphore = KERNEL32.583
    18     CreateSemaphoreA = KERNEL32.174
    19     CloseHandle = KERNEL32.137
    20     HeapDestroy = KERNEL32.462
    21     RegisterLxDll = KERNEL32.1238
    22     HeapCreate =KERNEL32.461
    23     HeapAlloc = KERNEL32.459
    24     HeapCompact = KERNEL32.460
    25     HeapUnlock  = KERNEL32.468
    26     HeapValidate = KERNEL32.469
    27     HeapFree = KERNEL32.463
    28     HeapLock = KERNEL32.464
    29     HeapWalk = KERNEL32.470
    30     "HeapSize" = KERNEL32.467
    31     HeapReAlloc = KERNEL32.465
    32     InitializeCriticalSection = KERNEL32.472
    33     EnterCriticalSection = KERNEL32.195
    34     WaitForSingleObject = KERNEL32.723
    35     LeaveCriticalSection = KERNEL32.494
    36     GetProcessHeap = KERNEL32.375
    37     casemap_lower = KERNEL32.2008
    38     casemap_upper = KERNEL32.2007
    39     lstrcmpiA = KERNEL32.770
    40     lstrcpy = KERNEL32.772
    41     lstrlenW = KERNEL32.780
    42     lstrncmpiA = KERNEL32.887
    43     lstrncmpiW = KERNEL32.888
    44     strcmpiW = KERNEL32.2020
    45     strncmpiW = KERNEL32.2022
    46     wctype_table = KERNEL32.2006
    47     TerminateThread = KERNEL32.685
    48     wvsnprintfA = USER32.2010
    49     TerminateProcess = KERNEL32.684
    50     GetCurrentProcess  = KERNEL32.306
    51     GetCurrentThreadId = KERNEL32.309
    52     DeleteCriticalSection = KERNEL32.185
    53     IsBadReadPtr = KERNEL32.480
    54     cp_wcstombs = KERNEL32.2023
    55     cp_mbstowcs = KERNEL32.2024
    56     cp_get_table = KERNEL32.2025
    57     SetLastError = KERNEL32.654
    58     UnregisterLxDll = KERNEL32.1239
    59     DisableThreadLibraryCalls  = KERNEL32.189
    60     CheckVersionFromHMOD = KERNEL32.1223
    61     strstrW = KERNEL32.2021
    62     HEAP_strdupW = KERNEL32.1248
    63     HEAP_strdupWtoA = KERNEL32.1245
    6415
    6516EXPORTS
    6617
    67 ;   ?Allocate@CBufferAllocator@@UAEPAXK@Z                   @1
    68 ;   PropertyLengthAsVariant                         @2
    69 ;   RtlCompareVariants                              @3
    70 ;   RtlConvertPropertyToVariant                     @4
    71 ;   RtlConvertVariantToProperty                     @5
    72 ;   CsrAllocateCaptureBuffer                            @6
    73 ;   CsrAllocateCapturePointer                           @7
    74 ;   CsrAllocateMessagePointer                           @8
    75 ;   CsrCaptureMessageBuffer                         @9
    76 ;   CsrCaptureMessageString                         @10
    77 ;   CsrCaptureTimeout                               @11
    78 ;   CsrClientCallServer                             @12
    79 ;   CsrClientConnectToServer                            @13
    80 ;   CsrFreeCaptureBuffer                            @14
    81 ;   CsrIdentifyAlertableThread                      @15
    82 ;   CsrNewThread                                    @16
    83 ;   CsrProbeForRead                             @17
    84 ;   CsrProbeForWrite                                @18
    85 ;   CsrSetPriorityClass                             @19
    86     DbgBreakPoint                  = DbgBreakPoint                      @20
    87     DbgPrint                                        @21
    88 ;   DbgPrompt                                   @22
    89 ;   DbgSsHandleKmApiMsg                             @23
    90 ;   DbgSsInitialize                             @24
    91 ;   DbgUiConnectToDbg                               @25
    92 ;   DbgUiContinue                                   @26
    93 ;   DbgUiWaitStateChange                            @27
    94     DbgUserBreakPoint              = DbgUserBreakPoint                  @28
    95 ;   KiRaiseUserExceptionDispatcher                      @29
    96 ;   KiUserApcDispatcher                             @30
    97 ;   KiUserCallbackDispatcher                            @31
    98 ;   KiUserExceptionDispatcher                           @32
    99 ;   LdrAccessResource                               @33
    100     LdrDisableThreadCalloutsForDll                  @34
    101 ;   LdrEnumResources                                @35
    102 ;   LdrFindEntryForAddress                          @36
    103 ;   LdrFindResourceDirectory_U                      @37
    104 ;   LdrFindResource_U                               @38
    105 ;   LdrGetDllHandle                             @39
    106 ;   LdrGetProcedureAddress                          @40
    107 ;   LdrInitializeThunk                              @41
    108 ;   LdrLoadDll                                  @42
    109 ;   LdrProcessRelocationBlock                           @43
    110 ;   LdrQueryImageFileExecutionOptions                   @44
    111 ;   LdrQueryProcessModuleInformation                    @45
    112 ;   LdrShutdownProcess                              @46
    113 ;   LdrShutdownThread                               @47
    114 ;   LdrUnloadDll                                    @48
    115 ;   LdrVerifyImageMatchesChecksum                       @49
    116 ;   NPXEMULATORTABLE                                @50
    117 ;   NlsAnsiCodePage                             @51
    118 ;   NlsMbCodePageTag                                @52
    119 ;   NlsMbOemCodePageTag                             @53
    120     NtAcceptConnectPort                             @54
    121     NtAccessCheck                                   @55
    122 ;   NtAccessCheckAndAuditAlarm                      @56
    123 ;   NtAddAtom                                       @57
    124 ;   NtAdjustGroupsToken                             @58
    125     NtAdjustPrivilegesToken                         @59
    126 ;   NtAlertResumeThread                             @60
    127     NtAlertThread                                   @61
    128     NtAllocateLocallyUniqueId                       @62
    129     NtAllocateUuids                                 @63
    130 ;   NtAllocateVirtualMemory                         @64
    131 ;   NtCallbackReturn                                @65
    132 ;   NtCancelIoFile                                  @66
    133 ;   NtCancelTimer                                   @67
    134     NtClearEvent                                    @68
    135     NtClose                                         @69
    136 ;   NtCloseObjectAuditAlarm                         @70
    137     NtCompleteConnectPort                           @71
    138     NtConnectPort                                   @72
    139 ;   NtContinue                                  @73
    140 ;   NtCreateChannel                             @74
    141     NtCreateDirectoryObject                     @75
    142     NtCreateEvent                               @76
    143 ;   NtCreateEventPair                               @77
    144     NtCreateFile                                @78
    145 ;   NtCreateIoCompletion                            @79
    146     NtCreateKey                                 @80
    147     NtCreateMailslotFile                        @81
    148 ;   NtCreateMutant                              @82
    149 ;   NtCreateNamedPipeFile                           @83
    150     NtCreatePagingFile                          @84
    151     NtCreatePort                                @85
    152 ;   NtCreateProcess                             @86
    153 ;   NtCreateProfile                             @87
    154     NtCreateSection                             @88
    155     NtCreateSemaphore                           @89
    156     NtCreateSymbolicLinkObject                  @90
    157 ;   NtCreateThread                          @91
    158     NtCreateTimer                           @92
    159 ;   NtCreateToken                           @93
    160 ;    NtCurrentTeb                           @94
    161 ;   NtDelayExecution                        @95
    162 ;   NtDeleteAtom                            @96
    163 ;   NtDeleteFile                            @97
    164     NtDeleteKey                             @98
    165 ;   NtDeleteObjectAuditAlarm                        @99
    166     NtDeleteValueKey                        @100
    167     NtDeviceIoControlFile                   @101
    168     NtDisplayString                         @102
    169     NtDuplicateObject                       @103
    170     NtDuplicateToken                        @104
    171     NtEnumerateKey                          @105
    172     NtEnumerateValueKey                     @106
    173 ;   NtExtendSection                         @107
    174 ;   NtFindAtom                              @108
    175 ;   NtFlushBuffersFile                          @109
    176 ;   NtFlushInstructionCache                     @110
    177     NtFlushKey                                  @111
    178 ;   NtFlushVirtualMemory                        @112
    179 ;   NtFlushWriteBuffer                          @113
    180 ;   NtFreeVirtualMemory                         @114
    181     NtFsControlFile                             @115
    182 ;   NtGetContextThread                          @116
    183 ;   NtGetPlugPlayEvent                          @117
    184 ;   NtGetTickCount                          @118
    185     NtImpersonateClientOfPort               @119
    186 ;   NtImpersonateThread                         @120
    187 ;   NtInitializeRegistry                        @121
    188 ;   NtListenChannel                         @122
    189     NtListenPort                            @123
    190 ;   NtLoadDriver                            @124
    191 ;   NtLoadKey2                              @125
    192     NtLoadKey                               @126
    193 ;   NtLockFile                              @127
    194 ;   NtLockVirtualMemory                         @128
    195 ;   NtMakeTemporaryObject                       @129
    196     NtMapViewOfSection                          @130
    197 ;   NtNotifyChangeDirectoryFile                     @131
    198     NtNotifyChangeKey                           @132
    199 ;   NtOpenChannel                           @133
    200     NtOpenDirectoryObject                   @134
    201     NtOpenEvent                             @135
    202 ;   NtOpenEventPair                         @136
    203     NtOpenFile                              @137
    204 ;   NtOpenIoCompletion                      @138
    205     NtOpenKey                               @139
    206 ;   NtOpenMutant                            @140
    207 ;   NtOpenObjectAuditAlarm                  @141
    208 ;   NtOpenProcess                           @142
    209     NtOpenProcessToken                      @143
    210     NtOpenSection                           @144
    211     NtOpenSemaphore                         @145
    212     NtOpenSymbolicLinkObject                @146
    213     NtOpenThread                            @147
    214     NtOpenThreadToken                       @148
    215 ;   NtOpenTimer                             @149
    216 ;   NtPlugPlayControl                           @150
    217 ;   NtPrivilegeCheck                            @151
    218 ;   NtPrivilegeObjectAuditAlarm                     @152
    219 ;   NtPrivilegedServiceAuditAlarm                   @153
    220 ;   NtProtectVirtualMemory                      @154
    221     NtPulseEvent                                @155
    222 ;   NtQueryAttributesFile                       @156
    223 ;   NtQueryDefaultLocale                        @157
    224     NtQueryDirectoryFile                        @158
    225     NtQueryDirectoryObject                      @159
    226 ;   NtQueryEaFile                               @160
    227     NtQueryEvent                                @161
    228 ;   NtQueryFullAttributesFile                   @162
    229 ;   NtQueryInformationAtom                      @163
    230     NtQueryInformationFile                      @164
    231 ;   NtQueryInformationPort                      @165
    232     NtQueryInformationProcess                   @166
    233     NtQueryInformationThread                    @167
    234     NtQueryInformationToken                     @168
    235 ;   NtQueryIntervalProfile                      @169
    236 ;   NtQueryIoCompletion                         @170
    237     NtQueryKey                                  @171
    238     NtQueryMultipleValueKey                     @172
    239 ;   NtQueryMutant                               @173
    240     NtQueryObject                               @174
    241 ;   NtQueryOleDirectoryFile                     @175
    242     NtQueryPerformanceCounter                   @176
    243     NtQuerySection                              @177
    244     NtQuerySecurityObject                       @178
    245     NtQuerySemaphore                            @179
    246     NtQuerySymbolicLinkObject                   @180
    247 ;   NtQuerySystemEnvironmentValue                   @181
    248     NtQuerySystemInformation                    @182
    249     NtQuerySystemTime                           @183
    250 ;   NtQueryTimer                            @184
    251     NtQueryTimerResolution                  @185
    252     NtQueryValueKey                         @186
    253 ;   NtQueryVirtualMemory                    @187
    254     NtQueryVolumeInformationFile            @188
    255 ;   NtQueueApcThread                        @189
    256     NtRaiseException              = __regs_NtRaiseException         @190
    257 ;   NtRaiseHardError                        @191
    258     NtReadFile                              @192
    259 ;   NtReadFileScatter                           @193
    260     NtReadRequestData                       @194
    261 ;   NtReadVirtualMemory                         @195
    262     NtRegisterThreadTerminatePort           @196
    263 ;   NtReleaseMutant                         @197
    264     NtReleaseSemaphore                      @198
    265 ;   NtRemoveIoCompletion                    @199
    266     NtReplaceKey                            @200
    267     NtReplyPort                             @201
    268     NtReplyWaitReceivePort                  @202
    269     NtReplyWaitReplyPort                    @203
    270 ;   NtReplyWaitSendChannel                      @204
    271     NtRequestPort                           @205
    272     NtRequestWaitReplyPort                  @206
    273     NtResetEvent                            @207
    274     NtRestoreKey                            @208
    275     NtResumeThread                          @209
    276     NtSaveKey                               @210
    277 ;   NtSendWaitReplyChannel                      @211
    278 ;   NtSetContextChannel                         @212
    279 ;   NtSetContextThread                          @213
    280 ;   NtSetDefaultHardErrorPort                       @214
    281 ;   NtSetDefaultLocale                          @215
    282 ;   NtSetEaFile                             @216
    283     NtSetEvent                              @217
    284 ;   NtSetHighEventPair                          @218
    285 ;   NtSetHighWaitLowEventPair                       @219
    286 ;   NtSetHighWaitLowThread                      @220
    287     NtSetInformationFile                        @221
    288     NtSetInformationKey                         @222
    289 ;   NtSetInformationObject                      @223
    290     NtSetInformationProcess                     @224
    291     NtSetInformationThread                      @225
    292 ;   NtSetInformationToken                       @226
    293     NtSetIntervalProfile                        @227
    294 ;   NtSetIoCompletion                           @228
    295 ;   NtSetLdtEntries                         @229
    296 ;   NtSetLowEventPair                           @230
    297 ;   NtSetLowWaitHighEventPair                       @231
    298 ;   NtSetLowWaitHighThread                      @232
    299     NtSetSecurityObject                         @233
    300 ;   NtSetSystemEnvironmentValue                 @234
    301 ;   NtSetSystemInformation                      @235
    302 ;   NtSetSystemPowerState                       @236
    303 ;   NtSetSystemTime                             @237
    304     NtSetTimer                                  @238
    305 ;   NtSetTimerResolution                        @239
    306     NtSetValueKey                               @240
    307     NtSetVolumeInformationFile                  @241
    308 ;   NtShutdownSystem                            @242
    309 ;   NtSignalAndWaitForSingleObject                  @243
    310 ;   NtStartProfile                          @244
    311 ;   NtStopProfile                           @245
    312 ;   NtSuspendThread                         @246
    313 ;   NtSystemDebugControl                        @247
    314     NtTerminateProcess                          @248
    315     NtTerminateThread                           @249
    316     NtTestAlert                                 @250
    317 ;   NtUnloadDriver                          @251
    318     NtUnloadKey                             @252
    319 ;   NtUnlockFile                            @253
    320 ;   NtUnlockVirtualMemory                       @254
    321 ;   NtUnmapViewOfSection                        @255
    322 ;   NtVdmControl                            @256
    323 ;   NtWaitForMultipleObjects                        @257
    324     NtWaitForSingleObject                       @258
    325 ;   NtWaitHighEventPair                         @259
    326 ;   NtWaitLowEventPair                          @260
    327 ;   NtWriteFile                             @261
    328 ;   NtWriteFileGather                           @262
    329     NtWriteRequestData                          @263
    330 ;   NtWriteVirtualMemory                        @264
    331 ;   NtYieldExecution                            @265
    332 ;   PfxFindPrefix                           @266
    333 ;   PfxInitialize                           @267
    334 ;   PfxInsertPrefix                         @268
    335 ;   PfxRemovePrefix                         @269
    336 ;   RestoreEm87Context                      @270
    337 ;   RtlAbortRXact                           @271
    338 ;   RtlAbsoluteToSelfRelativeSD                     @272
    339     RtlAcquirePebLock                       @273
    340     RtlAcquireResourceExclusive             @274
    341     RtlAcquireResourceShared                @275
    342     RtlAddAccessAllowedAce                  @276
    343 ;   RtlAddAccessDeniedAce                       @277
    344     RtlAddAce                                   @278
    345 ;   RtlAddActionToRXact                         @279
    346 ;   RtlAddAtomToAtomTable                       @280
    347 ;   RtlAddAttributeActionToRXact                @281
    348 ;   RtlAddAuditAccessAce                        @282
    349 ;   RtlAddCompoundAce                           @283
    350     RtlAdjustPrivilege                          @284
    351     RtlAllocateAndInitializeSid                 @285
    352 ;   RtlAllocateHandle                           @286
    353 ;;;    RtlAllocateHeap               = _RtlAllocateHeap@12                 @287
    354     RtlAllocateHeap = HeapAlloc                             @287
    355 ;   RtlAnsiCharToUnicodeChar                    @288
    356     RtlAnsiStringToUnicodeSize                  @289
    357     RtlAnsiStringToUnicodeString                @290
    358     RtlAppendAsciizToString                     @291
    359     RtlAppendStringToString                     @292
    360     RtlAppendUnicodeStringToString              @293
    361     RtlAppendUnicodeToString                    @294
    362 ;   RtlApplyRXact                               @295
    363 ;   RtlApplyRXactNoFlush                        @296
    364 ;   RtlAreAllAccessesGranted                        @297
    365 ;   RtlAreAnyAccessesGranted                        @298
    366     RtlAreBitsClear                         @299
    367     RtlAreBitsSet                           @300
    368 
    369     RtlAssert                                   @301
    370 ;   RtlCaptureStackBackTrace                    @302
    371 ;   RtlCharToInteger                            @303
    372 ;   RtlCheckRegistryKey                         @304
    373 ;   RtlClearAllBits                         @305
    374     RtlClearBits                                @306
    375 ;   RtlClosePropertySet                         @307
    376 ;;    RtlCompactHeap                            @308
    377     RtlCompactHeap = HeapCompact                @308
    378     RtlCompareMemory                            @309
    379 ;   RtlCompareMemoryUlong                       @310
    380     RtlCompareString                            @311
    381     RtlCompareUnicodeString                     @312
    382 ;   RtlCompressBuffer                           @313
    383 ;   RtlConsoleMultiByteToUnicodeN                   @314
    384 ;   RtlConvertExclusiveToShared                     @315
    385     RtlConvertLongToLargeInteger                @316
    386 ;   RtlConvertSharedToExclusive                     @317
    387     RtlConvertSidToUnicodeString                    @318
    388 ;   RtlConvertUiListToApiList                       @319
    389     RtlConvertUlongToLargeInteger                   @320
    390     RtlCopyLuid                                     @321
    391 ;   RtlCopyLuidAndAttributesArray                   @322
    392     RtlCopyMemory                                   @1100
    393 ;   RtlCopySecurityDescriptor                       @323
    394     RtlCopySid                                      @324
    395 ;   RtlCopySidAndAttributesArray                    @325
    396     RtlCopyString                                   @326
    397     RtlCopyUnicodeString                            @327
    398     RtlCreateAcl                                    @328
    399 ;   RtlCreateAndSetSD                           @329
    400 ;   RtlCreateAtomTable                          @330
    401     RtlCreateEnvironment                        @331
    402 ;;;;    RtlCreateHeap                           @332
    403 ;   RtlCreateProcessParameters                      @333
    404 ;   RtlCreatePropertySet                        @334
    405 ;   RtlCreateQueryDebugBuffer                       @335
    406 ;   RtlCreateRegistryKey                        @336
    407     RtlCreateSecurityDescriptor                 @337
    408 ;   RtlCreateTagHeap                            @338
    409     RtlCreateUnicodeString                      @339
    410     RtlCreateUnicodeStringFromAsciiz            @340
    411 ;   RtlCreateUserProcess                        @341
    412 ;   RtlCreateUserSecurityObject                     @342
    413 ;   RtlCreateUserThread                         @343
    414 ;   RtlCustomCPToUnicodeN                       @344
    415 ;   RtlCutoverTimeToSystemTime                      @345
    416 ;   RtlDeNormalizeProcessParams                     @346
    417 ;   RtlDecompressBuffer                         @347
    418 ;   RtlDecompressFragment                       @348
    419 ;   RtlDelete                               @349
    420 ;   RtlDeleteAce                            @350
    421 ;   RtlDeleteAtomFromAtomTable                      @351
    422     RtlDeleteCriticalSection       = DeleteCriticalSection     @352
    423 ;   RtlDeleteElementGenericTable                    @353
    424 ;   RtlDeleteNoSplay                            @354
    425 ;   RtlDeleteRegistryValue                      @355
    426     RtlDeleteResource                           @356
    427     RtlDeleteSecurityObject                     @357
    428 ;   RtlDestroyAtomTable                         @358
    429     RtlDestroyEnvironment                       @359
    430 ;   RtlDestroyHandleTable                       @360
    431 ;;;;    RtlDestroyHeap                = _RtlDestroyHeap@4                   @361
    432 ;   RtlDestroyProcessParameters                     @362
    433 ;   RtlDestroyQueryDebugBuffer                      @363
    434 ;   RtlDetermineDosPathNameType_U                   @364
    435 ;   RtlDoesFileExists_U                         @365
    436     RtlDosPathNameToNtPathName_U                @366
    437 ;   RtlDosSearchPath_U                          @367
    438 ;   RtlDowncaseUnicodeString                    @368
    439     RtlDumpResource                             @369
    440 ;   RtlEmptyAtomTable                           @370
    441     RtlEnlargedIntegerMultiply                  @371
    442     RtlEnlargedUnsignedDivide                   @372
    443     RtlEnlargedUnsignedMultiply                 @373
    444     RtlEnterCriticalSection        = EnterCriticalSection            @374
    445 ;   RtlEnumProcessHeaps                         @375
    446 ;   RtlEnumerateGenericTable                    @376
    447 ;   RtlEnumerateGenericTableWithoutSplaying     @377
    448 ;   RtlEnumerateProperties                      @378
    449 ;   RtlEqualComputerName                        @379
    450 ;   RtlEqualDomainName                          @380
    451 ;   RtlEqualLuid                            @381
    452     RtlEqualPrefixSid                           @382
    453     RtlEqualSid                                 @383
    454     RtlEqualString                              @384
    455     RtlEqualUnicodeString                       @385
    456     RtlEraseUnicodeString                       @386
    457 ;   RtlExpandEnvironmentStrings_U                   @387
    458 ;   RtlExtendHeap                           @388
    459     RtlExtendedIntegerMultiply         @389
    460     RtlExtendedLargeIntegerDivide      @390
    461 ;    RtlExtendedMagicDivide            @391
    462     RtlFillMemory                      @392
    463     RtlFillMemoryUlong                          @393
    464     RtlFindClearBits                            @394
    465 ;   RtlFindClearBitsAndSet                      @395
    466 ;   RtlFindLongestRunClear                      @396
    467 ;   RtlFindLongestRunSet                        @397
    468 ;   RtlFindMessage                          @398
    469 ;   RtlFindSetBits                          @399
    470 ;   RtlFindSetBitsAndClear                      @400
    471     RtlFirstFreeAce                             @401
    472 ;   RtlFlushPropertySet                         @402
    473     RtlFormatCurrentUserKeyPath       @403
    474 ;   RtlFormatMessage                            @404
    475     RtlFreeAnsiString                 @405
    476 ;   RtlFreeHandle                           @406
    477 ;;;;    RtlFreeHeap                   = _RtlFreeHeap@12                     @407
    478     RtlFreeHeap                   = HeapFree                    @407
    479     RtlFreeOemString                  @408
    480     RtlFreeSid                        @409
    481     RtlFreeUnicodeString              @410
    482 ;   RtlFreeUserThreadStack                      @411
    483 ;   RtlGenerate8dot3Name                        @412
    484     RtlGetAce                                   @413
    485 ;   RtlGetCallersAddress                        @414
    486 ;   RtlGetCompressionWorkSpaceSize                  @415
    487     RtlGetControlSecurityDescriptor  @416
    488 ;   RtlGetCurrentDirectory_U                        @417
    489     RtlGetDaclSecurityDescriptor     @418
    490 ;   RtlGetElementGenericTable                       @419
    491 ;   RtlGetFullPathName_U                        @420
    492     RtlGetGroupSecurityDescriptor    @421
    493     RtlGetLongestNtPathLength        @422
    494 ;   RtlGetNtGlobalFlags                         @423
    495     RtlGetNtProductType              @424
    496     RtlGetOwnerSecurityDescriptor    @425
    497 ;;;;    RtlGetProcessHeaps           @426
    498     RtlGetSaclSecurityDescriptor     @427
    499 ;   RtlGetUserInfoHeap                          @428
    500 ;   RtlGuidToPropertySetName                        @429
    501     RtlIdentifierAuthoritySid        @430
    502 ;   RtlImageDirectoryEntryToData                    @431
    503     RtlImageNtHeader                 @432
    504 ;   RtlImageRvaToSection                        @433
    505 ;   RtlImageRvaToVa                         @434
    506     RtlImpersonateSelf               @435
    507     RtlInitAnsiString                @436
    508 ;   RtlInitCodePageTable                        @437
    509 ;   RtlInitNlsTables                            @438
    510     RtlInitString                    @439
    511     RtlInitUnicodeString             @440
    512 ;   RtlInitializeAtomPackage                        @441
    513     RtlInitializeBitMap              @442
    514 ;   RtlInitializeContext                        @443
    515     RtlInitializeCriticalSection  = InitializeCriticalSection        @444
    516 ;   RtlInitializeCriticalSectionAndSpinCount                @445
    517     RtlInitializeGenericTable        @446
    518 ;   RtlInitializeHandleTable                        @447
    519 ;   RtlInitializeRXact                          @448
    520     RtlInitializeResource            @449
    521     RtlInitializeSid                 @450
    522 ;   RtlInsertElementGenericTable                    @451
    523     RtlIntegerToChar                 @452
    524 ;    RtlIntegerToUnicodeString       @453
    525 ;   RtlIsDosDeviceName_U                        @454
    526 ;   RtlIsGenericTableEmpty                      @455
    527 ;   RtlIsNameLegalDOS8Dot3                      @456
    528     RtlIsTextUnicode                            @457
    529 ;   RtlIsValidHandle                            @458
    530 ;   RtlIsValidIndexHandle                       @459
    531     RtlLargeIntegerAdd                          @460
    532     RtlLargeIntegerArithmeticShift  @461
    533     RtlLargeIntegerDivide           @462
    534     RtlLargeIntegerNegate           @463
    535     RtlLargeIntegerShiftLeft        @464
    536     RtlLargeIntegerShiftRight       @465
    537     RtlLargeIntegerSubtract         @466
    538     RtlLargeIntegerToChar           @467
    539     RtlLeaveCriticalSection     =   LeaveCriticalSection           @468
    540     RtlLengthRequiredSid            @469
    541     RtlLengthSecurityDescriptor     @470
    542     RtlLengthSid                    @471
    543 ;   RtlLocalTimeToSystemTime                        @472
    544 ;;;;    RtlLockHeap               RtlLockHeap@4                     @473
    545     RtlLockHeap                    = HeapLock       @473
    546 ;   RtlLookupAtomInAtomTable                        @474
    547 ;   RtlLookupElementGenericTable                    @475
    548     RtlMakeSelfRelativeSD           @476
    549 ;   RtlMapGenericMask                           @477
    550     RtlMoveMemory                   @478
    551     RtlMultiByteToUnicodeN          @479
    552     RtlMultiByteToUnicodeSize       @480
    553 ;   RtlNewInstanceSecurityObject                    @481
    554 ;   RtlNewSecurityGrantedAccess                     @482
    555     RtlNewSecurityObject            @483
    556     RtlNormalizeProcessParams       @484
    557     RtlNtStatusToDosError           @485
    558 ;   RtlNumberGenericTableElements                   @486
    559 ;   RtlNumberOfClearBits                        @487
    560 ;   RtlNumberOfSetBits                          @488
    561     RtlOemStringToUnicodeSize       @489
    562     RtlOemStringToUnicodeString     @490
    563     RtlOemToUnicodeN                @491
    564 ;   RtlOnMappedStreamEvent                      @492
    565     RtlOpenCurrentUser              @493
    566 ;   RtlPcToFileHeader                           @494
    567 ;   RtlPinAtomInAtomTable                       @495
    568     RtlPrefixString                 @496
    569     RtlPrefixUnicodeString          @497
    570 ;   RtlPropertySetNameToGuid                        @498
    571 ;   RtlProtectHeap                          @499
    572 ;   RtlQueryAtomInAtomTable                     @500
    573     RtlQueryEnvironmentVariable_U   @501
    574 ;   RtlQueryInformationAcl                      @502
    575 ;   RtlQueryProcessBackTraceInformation                 @503
    576 ;   RtlQueryProcessDebugInformation                 @504
    577 ;   RtlQueryProcessHeapInformation                  @505
    578 ;   RtlQueryProcessLockInformation                  @506
    579 ;   RtlQueryProperties                          @507
    580 ;   RtlQueryPropertyNames                       @508
    581 ;   RtlQueryPropertySet                         @509
    582 ;   RtlQueryRegistryValues                      @510
    583 ;   RtlQuerySecurityObject                      @511
    584 ;   RtlQueryTagHeap                         @512
    585     RtlQueryTimeZoneInformation    @513
    586     RtlRaiseException           =  __regs_RtlRaiseException     @514
    587     RtlRaiseStatus                 @515
    588     RtlRandom                      @516
    589 ;;;;    RtlReAllocateHeap             = _RtlReAllocateHeap@16           @517
    590     RtlReAllocateHeap             = HeapReAlloc                @517
    591 ;   RtlRealPredecessor                          @518
    592 ;   RtlRealSuccessor                            @519
    593     RtlReleasePebLock              @520
    594     RtlReleaseResource             @521
    595 ;   RtlRemoteCall                           @522
    596 ;   RtlResetRtlTranslations                     @523
    597 ;   RtlRunDecodeUnicodeString                       @524
    598 ;   RtlRunEncodeUnicodeString                       @525
    599     RtlSecondsSince1970ToTime      @526
    600     RtlSecondsSince1980ToTime      @527
    601 ;   RtlSelfRelativeToAbsoluteSD                     @528
    602 ;   RtlSetAllBits                           @529
    603 ;   RtlSetAttributesSecurityDescriptor                  @530
    604     RtlSetBits                    @531
    605 ;   RtlSetCriticalSectionSpinCount                  @532
    606 ;   RtlSetCurrentDirectory_U                        @533
    607 ;   RtlSetCurrentEnvironment                        @534
    608     RtlSetDaclSecurityDescriptor  @535
    609     RtlSetEnvironmentVariable     @536
    610     RtlSetGroupSecurityDescriptor @537
    611 ;   RtlSetInformationAcl                        @538
    612     RtlSetOwnerSecurityDescriptor @539
    613 ;   RtlSetProperties                            @540
    614 ;   RtlSetPropertyNames                         @541
    615 ;   RtlSetPropertySetClassId                        @542
    616     RtlSetSaclSecurityDescriptor  @543
    617 ;   RtlSetSecurityObject                        @544
    618 ;   RtlSetTimeZoneInformation                       @545
    619 ;   RtlSetUnicodeCallouts                       @546
    620 ;   RtlSetUserFlagsHeap                         @547
    621 ;   RtlSetUserValueHeap                         @548
    622 ;;;;    RtlSizeHeap                   = _RtlSizeHeap@12                     @549
    623     RtlSizeHeap                   = "HeapSize"         @549
    624 ;   RtlSplay                                @550
    625 ;   RtlStartRXact                           @551
    626     RtlSubAuthorityCountSid       @552
    627     RtlSubAuthoritySid            @553
    628 ;   RtlSubtreePredecessor                       @554
    629 ;   RtlSubtreeSuccessor                         @555
    630     RtlSystemTimeToLocalTime      @556
    631 ;    RtlTimeFieldsToTime          @557
    632     RtlTimeToElapsedTimeFields    @558
    633     RtlTimeToSecondsSince1970     @559
    634     RtlTimeToSecondsSince1980     @560
    635 ;    RtlTimeToTimeFields          @561
    636 ;   RtlTryEnterCriticalSection                      @562
    637     RtlUnicodeStringToAnsiSize    @563
    638     RtlUnicodeStringToAnsiString  @564
    639 ;   RtlUnicodeStringToCountedOemString                  @565
    640     RtlUnicodeStringToInteger     @566
    641     RtlUnicodeStringToOemSize     @567
    642     RtlUnicodeStringToOemString   @568
    643 ;   RtlUnicodeToCustomCPN                       @569
    644     RtlUnicodeToMultiByteN        @570
    645     RtlUnicodeToMultiByteSize     @571
    646     RtlUnicodeToOemN              @572
    647 ;   RtlUniform                              @573
    648 ;;;;    RtlUnlockHeap                 = _RtlUnlockHeap@4                    @574
    649     RtlUnlockHeap         = HeapUnlock                      @574
    650     RtlUnwind = __regs_RtlUnwind                @575
    651 ;   RtlUpcaseUnicodeChar                        @576
    652     RtlUpcaseUnicodeString          @577
    653 ;   RtlUpcaseUnicodeStringToCountedOemString                @579
    654     RtlUpcaseUnicodeStringToOemString @580
    655 ;   RtlUpcaseUnicodeToCustomCPN                     @581
    656     RtlUpcaseUnicodeToMultiByteN      @582
    657     RtlUpcaseUnicodeToOemN            @583
    658 ;   RtlUpperChar                            @584
    659     RtlUpperString                          @585
    660 ;   RtlUsageHeap                            @586
    661 ;   RtlValidAcl                             @587
    662     RtlValidSecurityDescriptor       @588
    663     RtlValidSid                      @589
    664 ;;;;    RtlValidateHeap              @590
    665     RtlValidateHeap               = HeapValidate         @590
    666 ;   RtlValidateProcessHeaps                     @591
    667 ;;    RtlWalkHeap                   @592
    668     RtlWalkHeap                   = HeapWalk                         @592
    669 ;   RtlWriteRegistryValue                   @593
    670 ;   RtlZeroHeap                             @594
    671     RtlZeroMemory                           @595
    672 ;   RtlpNtCreateKey                         @596
    673 ;   RtlpNtEnumerateSubKey                       @597
    674 ;   RtlpNtMakeTemporaryKey                      @598
    675 ;   RtlpNtOpenKey                           @599
    676 ;   RtlpNtQueryValueKey                         @600
    677 
    678 ;   RtlpNtSetValueKey                           @601
    679 ;   RtlpUnWaitCriticalSection                       @602
    680 ;   RtlpWaitForCriticalSection                      @603
    681     RtlxAnsiStringToUnicodeSize = RtlAnsiStringToUnicodeSize    @604
    682     RtlxOemStringToUnicodeSize  = RtlOemStringToUnicodeSize     @605
    683     RtlxUnicodeStringToAnsiSize = RtlUnicodeStringToAnsiSize  @606
    684     RtlxUnicodeStringToOemSize  = RtlUnicodeStringToOemSize       @607
    685 ;   SaveEm87Context                         @608
    686     ZwAcceptConnectPort           = NtAcceptConnectPort           @609
    687 ;   ZwAccessCheck                           @610
    688 ;   ZwAccessCheckAndAuditAlarm                      @611
    689 ;   ZwAddAtom                               @612
    690 ;   ZwAdjustGroupsToken                         @613
    691     ZwAdjustPrivilegesToken       = NtAdjustPrivilegesToken         @614
    692 ;   ZwAlertResumeThread                         @615
    693     ZwAlertThread                 = NtAlertThread                    @616
    694 ;   ZwAllocateLocallyUniqueId                       @617
    695     ZwAllocateUuids               = NtAllocateUuids @618
    696 ;   ZwAllocateVirtualMemory                     @619
    697 ;   ZwCallbackReturn                            @620
    698 ;   ZwCancelIoFile                          @621
    699 ;   ZwCancelTimer                           @622
    700 ;   ZwClearEvent                            @623
    701     ZwClose                       = NtClose     @624
    702 ;   ZwCloseObjectAuditAlarm                     @625
    703     ZwCompleteConnectPort         = NtCompleteConnectPort            @626
    704     ZwConnectPort                 = NtConnectPort                    @627
    705 ;   ZwContinue                              @628
    706 ;   ZwCreateChannel                         @629
    707     ZwCreateDirectoryObject       = NtCreateDirectoryObject         @630
    708     ZwCreateEvent                 = NtCreateEvent                   @631
    709 ;   ZwCreateEventPair                           @632
    710     ZwCreateFile                  = NtCreateFile                    @633
    711 ;   ZwCreateIoCompletion                         @634
    712     ZwCreateKey                   = NtCreateKey  @635
    713     ZwCreateMailslotFile          = NtCreateMailslotFile            @636
    714 ;   ZwCreateMutant                          @637
    715 ;   ZwCreateNamedPipeFile                       @638
    716     ZwCreatePagingFile            = NtCreatePagingFile              @639
    717     ZwCreatePort                  = NtCreatePort                    @640
    718 ;   ZwCreateProcess                         @641
    719 ;   ZwCreateProfile                         @642
    720     ZwCreateSection               = NtCreateSection                 @643
    721     ZwCreateSemaphore             = NtCreateSemaphore               @644
    722     ZwCreateSymbolicLinkObject    = NtCreateSymbolicLinkObject      @645
    723 ;   ZwCreateThread                          @646
    724     ZwCreateTimer                 = NtCreateTimer                   @647
    725 ;   ZwCreateToken                           @648
    726 ;   ZwDelayExecution                            @649
    727 ;   ZwDeleteAtom                            @650
    728 ;   ZwDeleteFile                            @651
    729     ZwDeleteKey                   = NtDeleteKey          @652
    730 ;   ZwDeleteObjectAuditAlarm                        @653
    731     ZwDeleteValueKey              = NtDeleteValueKey         @654
    732     ZwDeviceIoControlFile         = NtDeviceIoControlFile           @655
    733     ZwDisplayString               = NtDisplayString                  @656
    734     ZwDuplicateObject             = NtDuplicateObject               @657
    735     ZwDuplicateToken              = NtDuplicateToken                @658
    736     ZwEnumerateKey                = NtEnumerateKey                  @659
    737     ZwEnumerateValueKey           = NtEnumerateValueKey             @660
    738 ;   ZwExtendSection                                 @661
    739 ;   ZwFindAtom                                      @662
    740 ;   ZwFlushBuffersFile                                  @663
    741 ;   ZwFlushInstructionCache                             @664
    742     ZwFlushKey                    = NtFlushKey                       @665
    743 ;   ZwFlushVirtualMemory                                @666
    744 ;   ZwFlushWriteBuffer                                  @667
    745 ;   ZwFreeVirtualMemory                                 @668
    746     ZwFsControlFile               = NtFsControlFile                 @669
    747 ;   ZwGetContextThread                                  @670
    748 ;   ZwGetPlugPlayEvent                                  @671
    749 ;   ZwGetTickCount                                  @672
    750     ZwImpersonateClientOfPort     = NtImpersonateClientOfPort       @673
    751 ;   ZwImpersonateThread                                 @674
    752 ;   ZwInitializeRegistry                                @675
    753 ;   ZwListenChannel                                 @676
    754     ZwListenPort                  = NtListenPort                     @677
    755 ;   ZwLoadDriver                                        @678
    756 ;   ZwLoadKey2                                      @679
    757     ZwLoadKey                     = NtLoadKey                        @680
    758 ;   ZwLockFile                                      @681
    759 ;   ZwLockVirtualMemory                                 @682
    760 ;   ZwMakeTemporaryObject                               @683
    761     ZwMapViewOfSection            = NtMapViewOfSection              @684
    762 ;   ZwNotifyChangeDirectoryFile                         @685
    763     ZwNotifyChangeKey             = NtNotifyChangeKey               @686
    764 ;   ZwOpenChannel                                       @687
    765     ZwOpenDirectoryObject         = NtOpenDirectoryObject           @688
    766     ZwOpenEvent                   = NtOpenEvent                     @689
    767 ;   ZwOpenEventPair                                 @690
    768     ZwOpenFile                    = NtOpenFile                      @691
    769 ;   ZwOpenIoCompletion                                  @692
    770     ZwOpenKey                     = NtOpenKey                       @693
    771 ;   ZwOpenMutant                                        @694
    772 ;   ZwOpenObjectAuditAlarm                              @695
    773 ;   ZwOpenProcess                                       @696
    774     ZwOpenProcessToken            = NtOpenProcessToken              @697
    775     ZwOpenSection                 = NtOpenSection                   @698
    776     ZwOpenSemaphore               = NtOpenSemaphore                 @699
    777     ZwOpenSymbolicLinkObject      = NtQuerySymbolicLinkObject       @700
    778 ;   ZwOpenThread                                        @701
    779     ZwOpenThreadToken             = NtOpenThreadToken               @702
    780 ;   ZwOpenTimer                                     @703
    781 ;   ZwPlugPlayControl                                   @704
    782 ;   ZwPrivilegeCheck                                    @705
    783 ;   ZwPrivilegeObjectAuditAlarm                         @706
    784 ;   ZwPrivilegedServiceAuditAlarm                           @707
    785 ;   ZwProtectVirtualMemory                              @708
    786 ;   ZwPulseEvent                                        @709
    787 ;   ZwQueryAttributesFile                               @710
    788 ;   ZwQueryDefaultLocale                                @711
    789     ZwQueryDirectoryFile          = NtQueryDirectoryFile            @712
    790     ZwQueryDirectoryObject        = NtQueryDirectoryObject          @713
    791 ;   ZwQueryEaFile                                       @714
    792 ;   ZwQueryEvent                                        @715
    793 ;   ZwQueryFullAttributesFile                               @716
    794 ;   ZwQueryInformationAtom                              @717
    795     ZwQueryInformationFile        = NtQueryInformationFile          @718
    796 ;   ZwQueryInformationPort                              @719
    797     ZwQueryInformationProcess     = NtQueryInformationProcess       @720
    798     ZwQueryInformationThread      = NtQueryInformationThread        @721
    799     ZwQueryInformationToken       = NtQueryInformationToken         @722
    800 ;   ZwQueryIntervalProfile                              @723
    801 ;   ZwQueryIoCompletion                                 @724
    802     ZwQueryKey                    = NtQueryKey                      @725
    803     ZwQueryMultipleValueKey       = NtQueryMultipleValueKey         @726
    804 ;   ZwQueryMutant                                       @727
    805     ZwQueryObject                 = NtQueryObject                   @728
    806 ;   ZwQueryOleDirectoryFile                             @729
    807     ZwQueryPerformanceCounter     = NtQueryPerformanceCounter        @730
    808     ZwQuerySection                = NtQuerySection                  @731
    809     ZwQuerySecurityObject         = NtQuerySecurityObject           @732
    810     ZwQuerySemaphore              = NtQuerySemaphore                @733
    811     ZwQuerySymbolicLinkObject     = NtQuerySymbolicLinkObject       @734
    812 ;   ZwQuerySystemEnvironmentValue                           @735
    813     ZwQuerySystemInformation      = NtQuerySystemInformation        @736
    814     ZwQuerySystemTime             = NtQuerySystemTime                @737
    815 ;   ZwQueryTimer                                        @738
    816     ZwQueryTimerResolution        = NtQueryTimerResolution          @739
    817     ZwQueryValueKey               = NtQueryValueKey                 @740
    818 ;   ZwQueryVirtualMemory                                @741
    819 ;   ZwQueryVolumeInformationFile                            @742
    820 ;   ZwQueueApcThread                                    @743
    821     ZwRaiseException              = __regs_NtRaiseException         @744
    822 ;   ZwRaiseHardError                                    @745
    823     ZwReadFile                    = NtReadFile                      @746
    824 ;   ZwReadFileScatter                                   @747
    825     ZwReadRequestData             = NtReadRequestData               @748
    826 ;   ZwReadVirtualMemory                                 @749
    827     ZwRegisterThreadTerminatePort = NtRegisterThreadTerminatePort    @750
    828 ;   ZwReleaseMutant                                 @751
    829     ZwReleaseSemaphore            = NtReleaseSemaphore              @752
    830 ;   ZwRemoveIoCompletion                                @753
    831     ZwReplaceKey                  = NtReplaceKey                    @754
    832     ZwReplyPort                   = NtReplyPort                     @755
    833     ZwReplyWaitReceivePort        = NtReplyWaitReceivePort          @756
    834     ZwReplyWaitReplyPort          = NtReplyWaitReplyPort            @757
    835 ;   ZwReplyWaitSendChannel                              @758
    836     ZwRequestPort                 = NtRequestPort                   @759
    837     ZwRequestWaitReplyPort        = NtRequestWaitReplyPort          @760
    838     ZwResetEvent                  = NtResetEvent                    @761
    839     ZwRestoreKey                  = NtRestoreKey                    @762
    840     ZwResumeThread                = NtResumeThread                  @763
    841     ZwSaveKey                     = NtSaveKey                       @764
    842 ;   ZwSendWaitReplyChannel                              @765
    843 ;   ZwSetContextChannel                                 @766
    844 ;   ZwSetContextThread                                  @767
    845 ;   ZwSetDefaultHardErrorPort                               @768
    846 ;   ZwSetDefaultLocale                                  @769
    847 ;   ZwSetEaFile                                     @770
    848     ZwSetEvent                    = NtSetEvent                       @771
    849 ;   ZwSetHighEventPair                                  @772
    850 ;   ZwSetHighWaitLowEventPair                               @773
    851 ;   ZwSetHighWaitLowThread                              @774
    852     ZwSetInformationFile          = NtSetInformationFile            @775
    853     ZwSetInformationKey           = NtSetInformationKey             @776
    854 ;   ZwSetInformationObject                              @777
    855     ZwSetInformationProcess       = NtSetInformationProcess         @778
    856     ZwSetInformationThread        = NtSetInformationThread          @779
    857 ;   ZwSetInformationToken                               @780
    858     ZwSetIntervalProfile          = NtSetIntervalProfile            @781
    859 ;   ZwSetIoCompletion                                   @782
    860 ;   ZwSetLdtEntries                                 @783
    861 ;   ZwSetLowEventPair                                   @784
    862 ;   ZwSetLowWaitHighEventPair                               @785
    863 ;   ZwSetLowWaitHighThread                              @786
    864 ;   ZwSetSecurityObject                                 @787
    865 ;   ZwSetSystemEnvironmentValue                         @788
    866 ;   ZwSetSystemInformation                              @789
    867 ;   ZwSetSystemPowerState                               @790
    868 ;   ZwSetSystemTime                                 @791
    869     ZwSetTimer                    = NtSetTimer                      @792
    870 ;   ZwSetTimerResolution                                @793
    871     ZwSetValueKey                 = NtSetValueKey                   @794
    872     ZwSetVolumeInformationFile    = NtSetVolumeInformationFile      @795
    873 ;   ZwShutdownSystem                                    @796
    874 ;   ZwSignalAndWaitForSingleObject                          @797
    875 ;   ZwStartProfile                                  @798
    876 ;   ZwStopProfile                                       @799
    877 ;   ZwSuspendThread                                 @800
    878 
    879 ;   ZwSystemDebugControl                                @801
    880     ZwTerminateProcess            = NtTerminateProcess               @802
    881     ZwTerminateThread             = NtTerminateThread                @803
    882     ZwTestAlert                   = NtTestAlert                      @804
    883 ;   ZwUnloadDriver                                  @805
    884     ZwUnloadKey                   = NtUnloadKey                      @806
    885 ;   ZwUnlockFile                                        @807
    886 ;   ZwUnlockVirtualMemory                               @808
    887 ;   ZwUnmapViewOfSection                                @809
    888 ;   ZwVdmControl                                        @810
    889 ;   ZwWaitForMultipleObjects                                @811
    890     ZwWaitForSingleObject         = NtWaitForSingleObject           @812
    891 ;   ZwWaitHighEventPair                                 @813
    892 ;   ZwWaitLowEventPair                                  @814
    893 ;   ZwWriteFile                                     @815
    894 ;   ZwWriteFileGather                                   @816
    895     ZwWriteRequestData            = NtWriteRequestData  @817
    896 ;   ZwWriteVirtualMemory                                @818
    897 ;   ZwYieldExecution                                    @819
    898 
    899     _CIpow = NTDLL__CIpow                               @820
    900 ;   __eCommonExceptions                                 @821
    901 ;   __eEmulatorInit                                 @822
    902 ;   __eF2XM1                                        @823
    903 ;   __eFABS                                         @824
    904 ;   __eFADD32                                       @825
    905 ;   __eFADD64                                       @826
    906 ;   __eFADDPreg                                     @827
    907 ;   __eFADDreg                                      @828
    908 ;   __eFADDtop                                      @829
    909 ;   __eFCHS                                         @830
    910 ;   __eFCOM                                         @831
    911 ;   __eFCOM32                                       @832
    912 ;   __eFCOM64                                       @833
    913 ;   __eFCOMP                                        @834
    914 ;   __eFCOMP32                                      @835
    915 ;   __eFCOMP64                                      @836
    916 ;   __eFCOMPP                                       @837
    917 ;   __eFCOS                                         @838
    918 ;   __eFDECSTP                                      @839
    919 ;   __eFDIV32                                       @840
    920 ;   __eFDIV64                                       @841
    921 ;   __eFDIVPreg                                     @842
    922 ;   __eFDIVR32                                      @843
    923 ;   __eFDIVR64                                      @844
    924 ;   __eFDIVRPreg                                    @845
    925 ;   __eFDIVRreg                                     @846
    926 ;   __eFDIVRtop                                     @847
    927 ;   __eFDIVreg                                      @848
    928 ;   __eFDIVtop                                      @849
    929 ;   __eFFREE                                        @850
    930 ;   __eFIADD16                                      @851
    931 ;   __eFIADD32                                      @852
    932 ;   __eFICOM16                                      @853
    933 ;   __eFICOM32                                      @854
    934 ;   __eFICOMP16                                     @855
    935 ;   __eFICOMP32                                     @856
    936 ;   __eFIDIV16                                      @857
    937 ;   __eFIDIV32                                      @858
    938 ;   __eFIDIVR16                                     @859
    939 ;   __eFIDIVR32                                     @860
    940 ;   __eFILD16                                       @861
    941 ;   __eFILD32                                       @862
    942 ;   __eFILD64                                       @863
    943 ;   __eFIMUL16                                      @864
    944 ;   __eFIMUL32                                      @865
    945 ;   __eFINCSTP                                      @866
    946 ;   __eFINIT                                        @867
    947 ;   __eFIST16                                       @868
    948 ;   __eFIST32                                       @869
    949 ;   __eFISTP16                                      @870
    950 ;   __eFISTP32                                      @871
    951 ;   __eFISTP64                                      @872
    952 ;   __eFISUB16                                      @873
    953 ;   __eFISUB32                                      @874
    954 ;   __eFISUBR16                                     @875
    955 ;   __eFISUBR32                                     @876
    956 ;   __eFLD1                                         @877
    957 ;   __eFLD32                                        @878
    958 ;   __eFLD64                                        @879
    959 ;   __eFLD80                                        @880
    960 ;   __eFLDCW                                        @881
    961 ;   __eFLDENV                                       @882
    962 ;   __eFLDL2E                                       @883
    963 ;   __eFLDLN2                                       @884
    964 ;   __eFLDPI                                        @885
    965 ;   __eFLDZ                                         @886
    966 ;   __eFMUL32                                       @887
    967 ;   __eFMUL64                                       @888
    968 ;   __eFMULPreg                                     @889
    969 ;   __eFMULreg                                      @890
    970 ;   __eFMULtop                                      @891
    971 ;   __eFPATAN                                       @892
    972 ;   __eFPREM                                        @893
    973 ;   __eFPREM1                                       @894
    974 ;   __eFPTAN                                        @895
    975 ;   __eFRNDINT                                      @896
    976 ;   __eFRSTOR                                       @897
    977 ;   __eFSAVE                                        @898
    978 ;   __eFSCALE                                       @899
    979 ;   __eFSIN                                         @900
    980 ;   __eFSQRT                                        @901
    981 ;   __eFST                                          @902
    982 ;   __eFST32                                        @903
    983 ;   __eFST64                                        @904
    984 ;   __eFSTCW                                        @905
    985 ;   __eFSTENV                                       @906
    986 ;   __eFSTP                                         @907
    987 ;   __eFSTP32                                       @908
    988 ;   __eFSTP64                                       @909
    989 ;   __eFSTP80                                       @910
    990 ;   __eFSTSW                                        @911
    991 ;   __eFSUB32                                       @912
    992 ;   __eFSUB64                                       @913
    993 ;   __eFSUBPreg                                     @914
    994 ;   __eFSUBR32                                      @915
    995 ;   __eFSUBR64                                      @916
    996 ;   __eFSUBRPreg                                    @917
    997 ;   __eFSUBRreg                                     @918
    998 ;   __eFSUBRtop                                     @919
    999 ;   __eFSUBreg                                      @920
    1000 ;   __eFSUBtop                                      @921
    1001 ;   __eFTST                                         @922
    1002 ;   __eFUCOM                                        @923
    1003 ;   __eFUCOMP                                       @924
    1004 ;   __eFUCOMPP                                      @925
    1005 ;   __eFXAM                                         @926
    1006 ;   __eFXCH                                         @927
    1007 ;   __eFXTRACT                                      @928
    1008 ;   __eFYL2X                                        @929
    1009 ;   __eFYL2XP1                                      @930
    1010 ;   __eGetStatusWord                                @931
    1011 ;   __eFSQRT                                        @901
    1012 ;   __eFST                                          @902
    1013 ;   __eFST32                                        @903
    1014 ;   __eFST64                                        @904
    1015 ;   __eFSTCW                                        @905
    1016 ;   __eFSTENV                                       @906
    1017 ;   __eFSTP                                         @907
    1018 ;   __eFSTP32                                       @908
    1019 ;   __eFSTP64                                       @909
    1020 ;   __eFSTP80                                       @910
    1021 ;   __eFSTSW                                        @911
    1022 ;   __eFSUB32                                       @912
    1023 ;   __eFSUB64                                       @913
    1024 ;   __eFSUBPreg                                     @914
    1025 ;   __eFSUBR32                                      @915
    1026 ;   __eFSUBR64                                      @916
    1027 ;   __eFSUBRPreg                                    @917
    1028 ;   __eFSUBRreg                                     @918
    1029 ;   __eFSUBRtop                                     @919
    1030 ;   __eFSUBreg                                      @920
    1031 ;   __eFSUBtop                                      @921
    1032 ;   __eFTST                                         @922
    1033 ;   __eFUCOM                                        @923
    1034 ;   __eFUCOMP                                       @924
    1035 ;   __eFUCOMPP                                      @925
    1036 ;   __eFXAM                                         @926
    1037 ;   __eFXCH                                         @927
    1038 ;   __eFXTRACT                                      @928
    1039 ;   __eFYL2X                                        @929
    1040 ;   __eFYL2XP1                                      @930
    1041 ;   __eGetStatusWord                                @931
    1042    _allrem                                         @939
    1043 ;   _allshl                                         @940
    1044 ;   _allshr                                         @941
    1045 ;   _atoi64                                         @942
    1046    _aulldiv                                        @943
    1047    _aullrem                                        @944
    1048 ;   _aullshr                                        @945
    1049     _chkstk                          = _chkstk                          @946
    1050 ;   _fltused                                        @947
    1051     _ftol                         = NTDLL__ftol                       @948
    1052 ;    _i64toa                    = _MSVCRT__i64toa               @949
    1053 ;    _i64tow                    = _MSVCRT__i64tow               @950
    1054     _itoa                         = _itoa               @951
    1055 ;    _itow                         = _LL__itow               @952
    1056     _ltoa                         = _ltoa                     @953
    1057 ;    _ltow                         = _MSVCRT__ltow                          @954
    1058     _memccpy                = _memccpy              @955
    1059     _memicmp                      = NTDLL_memicmp               @956
    1060     _snprintf                     = _snprintf                   @957
    1061     _snwprintf                    = _snwprintf                  @958
    1062     _splitpath                    = _splitpath                  @959
    1063     _strcmpi                      = _stricmp                    @960
    1064     _stricmp                      = _stricmp                @961
    1065     _strlwr                       = _strlwr                     @962
    1066     _strnicmp                                           @963
    1067     _strupr                                             @964
    1068 ;    _tolower                = _CRTDLL__tolower              @965
    1069 ;    _toupper                = _CRTDLL__toupper              @966
    1070     _ultoa                                              @967
    1071     _ultow                                              @968
    1072     _vsnprintf                                          @969
    1073     _wcsicmp                      = NTDLL__wcsicmp                     @970
    1074     _wcslwr                       = NTDLL__wcslwr                      @971
    1075     _wcsnicmp                     = NTDLL__wcsnicmp                    @972
    1076     _wcsupr                       = NTDLL__wcsupr                      @973
    1077     _wtoi                                                       @974
    1078 ;    _wtoi64                    = _MSVCRT__wtoi64               @975
    1079      _wtol                                                      @976
    1080 
    1081     abs                                                    @977
    1082     atan                                                  @978
    1083     atoi                                                 @979
    1084     atol                                                 @980
    1085     ceil                                                 @981
    1086     cos                                                  @982
    1087     fabs                                                 @983
    1088     floor                                                @984
    1089     isalnum                                 @985
    1090     isalpha                                 @986
    1091     iscntrl                                 @987
    1092     isdigit                                 @988
    1093     isgraph                                 @989
    1094     islower                                 @990
    1095     isprint                                 @991
    1096     ispunct                                 @992
    1097     isspace                                 @993
    1098     isupper                                 @994
     18;   ?Allocate@CBufferAllocator@@UAEPAXK@Z                               @1
     19;   PropertyLengthAsVariant                                             @2
     20;   RtlCompareVariants                                                  @3
     21;   RtlConvertPropertyToVariant                                         @4
     22;   RtlConvertVariantToProperty                                         @5
     23;   CsrAllocateCaptureBuffer                                            @6
     24;   CsrAllocateCapturePointer                                           @7
     25;   CsrAllocateMessagePointer                                           @8
     26;   CsrCaptureMessageBuffer                                             @9
     27;   CsrCaptureMessageString                                             @10
     28;   CsrCaptureTimeout                                                   @11
     29;   CsrClientCallServer                                                 @12
     30;   CsrClientConnectToServer                                            @13
     31;   CsrFreeCaptureBuffer                                                @14
     32;   CsrIdentifyAlertableThread                                          @15
     33;   CsrNewThread                                                        @16
     34;   CsrProbeForRead                                                     @17
     35;   CsrProbeForWrite                                                    @18
     36;   CsrSetPriorityClass                                                 @19
     37    DbgBreakPoint                                                       @20
     38    DbgPrint                                                            @21
     39;   DbgPrompt                                                           @22
     40;   DbgSsHandleKmApiMsg                                                 @23
     41;   DbgSsInitialize                                                     @24
     42;   DbgUiConnectToDbg                                                   @25
     43;   DbgUiContinue                                                       @26
     44;   DbgUiWaitStateChange                                                @27
     45    DbgUserBreakPoint                                                   @28
     46;   KiRaiseUserExceptionDispatcher                                      @29
     47;   KiUserApcDispatcher                                                 @30
     48;   KiUserCallbackDispatcher                                            @31
     49;   KiUserExceptionDispatcher                                           @32
     50;   LdrAccessResource                                                   @33
     51    LdrDisableThreadCalloutsForDll = _LdrDisableThreadCalloutsForDll@4  @34
     52;   LdrEnumResources                                                    @35
     53;   LdrFindEntryForAddress                                              @36
     54;   LdrFindResourceDirectory_U                                          @37
     55;   LdrFindResource_U                                                   @38
     56;   LdrGetDllHandle                                                     @39
     57;   LdrGetProcedureAddress                                              @40
     58;   LdrInitializeThunk                                                  @41
     59;   LdrLoadDll                                                          @42
     60;   LdrProcessRelocationBlock                                           @43
     61;   LdrQueryImageFileExecutionOptions                                   @44
     62;   LdrQueryProcessModuleInformation                                    @45
     63;   LdrShutdownProcess                                                  @46
     64;   LdrShutdownThread                                                   @47
     65;   LdrUnloadDll                                                        @48
     66;   LdrVerifyImageMatchesChecksum                                       @49
     67;   NPXEMULATORTABLE                                                    @50
     68;   NlsAnsiCodePage                                                     @51
     69;   NlsMbCodePageTag                                                    @52
     70;   NlsMbOemCodePageTag                                                 @53
     71    NtAcceptConnectPort           = _NtAcceptConnectPort@24             @54
     72    NtAccessCheck                 = _NtAccessCheck@32                   @55
     73;   NtAccessCheckAndAuditAlarm                                          @56
     74;   NtAddAtom                                                           @57
     75;   NtAdjustGroupsToken                                                 @58
     76    NtAdjustPrivilegesToken       = _NtAdjustPrivilegesToken@24         @59
     77;   NtAlertResumeThread                                                 @60
     78    NtAlertThread                 = _NtAlertThread@8                    @61
     79    NtAllocateLocallyUniqueId     = _NtAllocateLocallyUniqueId@4        @62
     80    NtAllocateUuids               = _NtAllocateUuids@16                 @63
     81;   NtAllocateVirtualMemory                                             @64
     82;   NtCallbackReturn                                                    @65
     83;   NtCancelIoFile                                                      @66
     84;   NtCancelTimer                                                       @67
     85    NtClearEvent                  = _NtClearEvent@4                     @68
     86    NtClose                       = _NtClose@4                          @69
     87;   NtCloseObjectAuditAlarm                                             @70
     88    NtCompleteConnectPort         = _NtCompleteConnectPort@4            @71
     89    NtConnectPort                 = _NtConnectPort@32                   @72
     90;   NtContinue                                                          @73
     91;   NtCreateChannel                                                     @74
     92    NtCreateDirectoryObject       = _NtCreateDirectoryObject@12         @75
     93    NtCreateEvent                 = _NtCreateEvent@20                   @76
     94;   NtCreateEventPair                                                   @77
     95    NtCreateFile                  = _NtCreateFile@44                    @78
     96;   NtCreateIoCompletion                                                @79
     97    NtCreateKey                   = _NtCreateKey@28                     @80
     98    NtCreateMailslotFile          = _NtCreateMailslotFile@32            @81
     99;   NtCreateMutant                                                      @82
     100;   NtCreateNamedPipeFile                                               @83
     101    NtCreatePagingFile            = _NtCreatePagingFile@16              @84
     102    NtCreatePort                  = _NtCreatePort@20                    @85
     103;   NtCreateProcess                                                     @86
     104;   NtCreateProfile                                                     @87
     105    NtCreateSection               = _NtCreateSection@28                 @88
     106    NtCreateSemaphore             = _NtCreateSemaphore@20               @89
     107    NtCreateSymbolicLinkObject    = _NtCreateSymbolicLinkObject@16      @90
     108;   NtCreateThread                                                      @91
     109    NtCreateTimer                 = _NtCreateTimer@16                   @92
     110;   NtCreateToken                                                       @93
     111;   NtCurrentTeb                  = _NtCurrentTeb                       @94
     112;   NtDelayExecution                                                    @95
     113;   NtDeleteAtom                                                        @96
     114;   NtDeleteFile                                                        @97
     115    NtDeleteKey                   = _NtDeleteKey@4                      @98
     116;   NtDeleteObjectAuditAlarm                                            @99
     117    NtDeleteValueKey              = _NtDeleteValueKey@8                 @100
     118    NtDeviceIoControlFile         = _NtDeviceIoControlFile@40           @101
     119    NtDisplayString               = _NtDisplayString@4                  @102
     120    NtDuplicateObject             = _NtDuplicateObject@28               @103
     121    NtDuplicateToken              = _NtDuplicateToken@24                @104
     122    NtEnumerateKey                = _NtEnumerateKey@24                  @105
     123    NtEnumerateValueKey           = _NtEnumerateValueKey@24             @106
     124;   NtExtendSection                                                     @107
     125;   NtFindAtom                                                          @108
     126;   NtFlushBuffersFile                                                  @109
     127;   NtFlushInstructionCache                                             @110
     128    NtFlushKey                    = _NtFlushKey@4                       @111
     129;   NtFlushVirtualMemory                                                @112
     130;   NtFlushWriteBuffer                                                  @113
     131;   NtFreeVirtualMemory                                                 @114
     132    NtFsControlFile               = _NtFsControlFile@40                 @115
     133;   NtGetContextThread                                                  @116
     134;   NtGetPlugPlayEvent                                                  @117
     135;   NtGetTickCount                                                      @118
     136    NtImpersonateClientOfPort     = _NtImpersonateClientOfPort@16       @119
     137;   NtImpersonateThread                                                 @120
     138;   NtInitializeRegistry                                                @121
     139;   NtListenChannel                                                     @122
     140    NtListenPort                  = _NtListenPort@8                     @123
     141;   NtLoadDriver                                                        @124
     142;   NtLoadKey2                                                          @125
     143    NtLoadKey                     = _NtLoadKey@8                        @126
     144;   NtLockFile                                                          @127
     145;   NtLockVirtualMemory                                                 @128
     146;   NtMakeTemporaryObject                                               @129
     147    NtMapViewOfSection            = _NtMapViewOfSection@40              @130
     148;   NtNotifyChangeDirectoryFile                                         @131
     149    NtNotifyChangeKey             = _NtNotifyChangeKey@40               @132
     150;   NtOpenChannel                                                       @133
     151    NtOpenDirectoryObject         = _NtOpenDirectoryObject@12           @134
     152    NtOpenEvent                   = _NtOpenEvent@12                     @135
     153;   NtOpenEventPair                                                     @136
     154    NtOpenFile                    = _NtOpenFile@24                      @137
     155;   NtOpenIoCompletion                                                  @138
     156    NtOpenKey                     = _NtOpenKey@12                       @139
     157;   NtOpenMutant                                                        @140
     158;   NtOpenObjectAuditAlarm                                              @141
     159;   NtOpenProcess                                                       @142
     160    NtOpenProcessToken            = _NtOpenProcessToken@12              @143
     161    NtOpenSection                 = _NtOpenSection@12                   @144
     162    NtOpenSemaphore               = _NtOpenSemaphore@12                 @145
     163    NtOpenSymbolicLinkObject      = _NtQuerySymbolicLinkObject@12       @146
     164    NtOpenThread                  = _NtOpenThread@16                    @147
     165    NtOpenThreadToken             = _NtOpenThreadToken@16               @148
     166;   NtOpenTimer                                                         @149
     167;   NtPlugPlayControl                                                   @150
     168;   NtPrivilegeCheck                                                    @151
     169;   NtPrivilegeObjectAuditAlarm                                         @152
     170;   NtPrivilegedServiceAuditAlarm                                       @153
     171;   NtProtectVirtualMemory                                              @154
     172    NtPulseEvent                  = _NtPulseEvent@8                     @155
     173;   NtQueryAttributesFile                                               @156
     174;   NtQueryDefaultLocale                                                @157
     175    NtQueryDirectoryFile          = _NtQueryDirectoryFile@44            @158
     176    NtQueryDirectoryObject        = _NtQueryDirectoryObject@28          @159
     177;   NtQueryEaFile                                                       @160
     178    NtQueryEvent                  = _NtQueryEvent@20                    @161
     179;   NtQueryFullAttributesFile                                           @162
     180;   NtQueryInformationAtom                                              @163
     181    NtQueryInformationFile        = _NtQueryInformationFile@20          @164
     182;   NtQueryInformationPort                                              @165
     183    NtQueryInformationProcess     = _NtQueryInformationProcess@20       @166
     184    NtQueryInformationThread      = _NtQueryInformationThread@20        @167
     185    NtQueryInformationToken       = _NtQueryInformationToken@20         @168
     186;   NtQueryIntervalProfile                                              @169
     187;   NtQueryIoCompletion                                                 @170
     188    NtQueryKey                    = _NtQueryKey@20                      @171
     189    NtQueryMultipleValueKey       = _NtQueryMultipleValueKey@24         @172
     190;   NtQueryMutant                                                       @173
     191    NtQueryObject                 = _NtQueryObject@20                   @174
     192;   NtQueryOleDirectoryFile                                             @175
     193    NtQueryPerformanceCounter     = _NtQueryPerformanceCounter@8        @176
     194    NtQuerySection                = _NtQuerySection@20                  @177
     195    NtQuerySecurityObject         = _NtQuerySecurityObject@20           @178
     196    NtQuerySemaphore              = _NtQuerySemaphore@20                @179
     197    NtQuerySymbolicLinkObject     = _NtQuerySymbolicLinkObject@12       @180
     198;   NtQuerySystemEnvironmentValue                                       @181
     199    NtQuerySystemInformation      = _NtQuerySystemInformation@16        @182
     200    NtQuerySystemTime             = _NtQuerySystemTime@4                @183
     201;   NtQueryTimer                                                        @184
     202    NtQueryTimerResolution        = _NtQueryTimerResolution@12          @185
     203    NtQueryValueKey               = _NtQueryValueKey@24                 @186
     204;   NtQueryVirtualMemory                                                @187
     205    NtQueryVolumeInformationFile  = _NtQueryVolumeInformationFile@20    @188
     206;   NtQueueApcThread                                                    @189
     207    NtRaiseException              = ___regs_NtRaiseException@16         @190
     208;   NtRaiseHardError                                                    @191
     209    NtReadFile                    = _NtReadFile@36                      @192
     210;   NtReadFileScatter                                                   @193
     211    NtReadRequestData             = _NtReadRequestData@20               @194
     212;   NtReadVirtualMemory                                                 @195
     213    NtRegisterThreadTerminatePort = _NtRegisterThreadTerminatePort@4    @196
     214;   NtReleaseMutant                                                     @197
     215    NtReleaseSemaphore            = _NtReleaseSemaphore@12              @198
     216;   NtRemoveIoCompletion                                                @199
     217    NtReplaceKey                  = _NtReplaceKey@12                    @200
     218    NtReplyPort                   = _NtReplyPort@16                     @201
     219    NtReplyWaitReceivePort        = _NtReplyWaitReceivePort@16          @202
     220    NtReplyWaitReplyPort          = _NtReplyWaitReplyPort@16            @203
     221;   NtReplyWaitSendChannel                                              @204
     222    NtRequestPort                 = _NtRequestPort@16                   @205
     223    NtRequestWaitReplyPort        = _NtRequestWaitReplyPort@12          @206
     224    NtResetEvent                  = _NtResetEvent@8                     @207
     225    NtRestoreKey                  = _NtRestoreKey@12                    @208
     226    NtResumeThread                = _NtResumeThread@8                   @209
     227    NtSaveKey                     = _NtSaveKey@8                        @210
     228;   NtSendWaitReplyChannel                                              @211
     229;   NtSetContextChannel                                                 @212
     230;   NtSetContextThread                                                  @213
     231;   NtSetDefaultHardErrorPort                                           @214
     232;   NtSetDefaultLocale                                                  @215
     233;   NtSetEaFile                                                         @216
     234    NtSetEvent                    = _NtSetEvent@8                       @217
     235;   NtSetHighEventPair                                                  @218
     236;   NtSetHighWaitLowEventPair                                           @219
     237;   NtSetHighWaitLowThread                                              @220
     238    NtSetInformationFile          = _NtSetInformationFile@20            @221
     239    NtSetInformationKey           = _NtSetInformationKey@16             @222
     240;   NtSetInformationObject                                              @223
     241    NtSetInformationProcess       = _NtSetInformationProcess@16         @224
     242    NtSetInformationThread        = _NtSetInformationThread@16          @225
     243;   NtSetInformationToken                                               @226
     244    NtSetIntervalProfile          = _NtSetIntervalProfile@8             @227
     245;   NtSetIoCompletion                                                   @228
     246;   NtSetLdtEntries                                                     @229
     247;   NtSetLowEventPair                                                   @230
     248;   NtSetLowWaitHighEventPair                                           @231
     249;   NtSetLowWaitHighThread                                              @232
     250    NtSetSecurityObject           = _NtSetSecurityObject@12             @233
     251;   NtSetSystemEnvironmentValue                                         @234
     252;   NtSetSystemInformation                                              @235
     253;   NtSetSystemPowerState                                               @236
     254;   NtSetSystemTime                                                     @237
     255    NtSetTimer                    = _NtSetTimer@28                      @238
     256;   NtSetTimerResolution                                                @239
     257    NtSetValueKey                 = _NtSetValueKey@24                   @240
     258    NtSetVolumeInformationFile    = _NtSetVolumeInformationFile@20      @241
     259;   NtShutdownSystem                                                    @242
     260;   NtSignalAndWaitForSingleObject                                      @243
     261;   NtStartProfile                                                      @244
     262;   NtStopProfile                                                       @245
     263;   NtSuspendThread                                                     @246
     264;   NtSystemDebugControl                                                @247
     265    NtTerminateProcess            = _NtTerminateProcess@8               @248
     266    NtTerminateThread             = _NtTerminateThread@8                @249
     267    NtTestAlert                   = _NtTestAlert@8                      @250
     268;   NtUnloadDriver                                                      @251
     269    NtUnloadKey                   = _NtUnloadKey@4                      @252
     270;   NtUnlockFile                                                        @253
     271;   NtUnlockVirtualMemory                                               @254
     272;   NtUnmapViewOfSection                                                @255
     273;   NtVdmControl                                                        @256
     274;   NtWaitForMultipleObjects                                            @257
     275    NtWaitForSingleObject         = _NtWaitForSingleObject@12           @258
     276;   NtWaitHighEventPair                                                 @259
     277;   NtWaitLowEventPair                                                  @260
     278;   NtWriteFile                                                         @261
     279;   NtWriteFileGather                                                   @262
     280    NtWriteRequestData            = _NtWriteRequestData@20              @263
     281;   NtWriteVirtualMemory                                                @264
     282;   NtYieldExecution                                                    @265
     283;   PfxFindPrefix                                                       @266
     284;   PfxInitialize                                                       @267
     285;   PfxInsertPrefix                                                     @268
     286;   PfxRemovePrefix                                                     @269
     287;   RestoreEm87Context                                                  @270
     288
     289;   RtlAbortRXact                                                       @271
     290;   RtlAbsoluteToSelfRelativeSD                                         @272
     291    RtlAcquirePebLock             = _RtlAcquirePebLock@0                @273
     292    RtlAcquireResourceExclusive   = _RtlAcquireResourceExclusive@8      @274
     293    RtlAcquireResourceShared      = _RtlAcquireResourceShared@8         @275
     294    RtlAddAccessAllowedAce        = _RtlAddAccessAllowedAce@16          @276
     295;   RtlAddAccessDeniedAce                                               @277
     296    RtlAddAce                     = _RtlAddAce@20                       @278
     297;   RtlAddActionToRXact                                                 @279
     298;   RtlAddAtomToAtomTable                                               @280
     299;   RtlAddAttributeActionToRXact                                        @281
     300;   RtlAddAuditAccessAce                                                @282
     301;   RtlAddCompoundAce                                                   @283
     302    RtlAdjustPrivilege            = _RtlAdjustPrivilege@16              @284
     303    RtlAllocateAndInitializeSid   = _RtlAllocateAndInitializeSid@44     @285
     304;   RtlAllocateHandle                                                   @286
     305;;;    RtlAllocateHeap            = _RtlAllocateHeap@12                 @287
     306    RtlAllocateHeap               = _HeapAlloc@12                       @287
     307;   RtlAnsiCharToUnicodeChar                                            @288
     308    RtlAnsiStringToUnicodeSize    = _RtlAnsiStringToUnicodeSize@4       @289
     309    RtlAnsiStringToUnicodeString  = _RtlAnsiStringToUnicodeString@12    @290
     310    RtlAppendAsciizToString       = _RtlAppendAsciizToString@8          @291
     311    RtlAppendStringToString       = _RtlAppendStringToString@8          @292
     312    RtlAppendUnicodeStringToString= _RtlAppendUnicodeStringToString@8   @293
     313    RtlAppendUnicodeToString      = _RtlAppendUnicodeToString@8         @294
     314;   RtlApplyRXact                                                       @295
     315;   RtlApplyRXactNoFlush                                                @296
     316;   RtlAreAllAccessesGranted                                            @297
     317;   RtlAreAnyAccessesGranted                                            @298
     318    RtlAreBitsClear               = _RtlAreBitsClear@12                 @299
     319    RtlAreBitsSet                 = _RtlAreBitsSet@12                   @300
     320
     321    RtlAssert                     = _RtlAssert@16                       @301
     322;   RtlCaptureStackBackTrace                                            @302
     323    RtlCharToInteger              = _RtlCharToInteger@12                @303
     324;   RtlCheckRegistryKey                                                 @304
     325;   RtlClearAllBits                                                     @305
     326    RtlClearBits                  = _RtlClearBits@12                    @306
     327;   RtlClosePropertySet                                                 @307
     328;;    RtlCompactHeap              = _RtlCompactHeap@8                   @308
     329    RtlCompactHeap                = _HeapCompact@8                      @308
     330    RtlCompareMemory              = _RtlCompareMemory@12                @309
     331;   RtlCompareMemoryUlong                                               @310
     332    RtlCompareString              = _RtlCompareString@12                @311
     333    RtlCompareUnicodeString       = _RtlCompareUnicodeString@12         @312
     334;   RtlCompressBuffer                                                   @313
     335;   RtlConsoleMultiByteToUnicodeN                                       @314
     336;   RtlConvertExclusiveToShared                                         @315
     337    RtlConvertLongToLargeInteger  = _RtlConvertLongToLargeInteger@4     @316
     338;   RtlConvertSharedToExclusive                                         @317
     339    RtlConvertSidToUnicodeString  = _RtlConvertSidToUnicodeString@12    @318
     340;   RtlConvertUiListToApiList                                           @319
     341    RtlConvertUlongToLargeInteger = _RtlConvertUlongToLargeInteger@4    @320
     342    RtlCopyLuid                   = _RtlCopyLuid@8                      @321
     343;   RtlCopyLuidAndAttributesArray                                       @322
     344    RtlCopyMemory                 = _RtlCopyMemory@12                   @1100
     345;   RtlCopySecurityDescriptor                                           @323
     346    RtlCopySid                    = _RtlCopySid@12                      @324
     347;   RtlCopySidAndAttributesArray                                        @325
     348    RtlCopyString                 = _RtlCopyString@8                    @326
     349    RtlCopyUnicodeString          = _RtlCopyUnicodeString@8             @327
     350    RtlCreateAcl                  = _RtlCreateAcl@12                    @328
     351;   RtlCreateAndSetSD                                                   @329
     352;   RtlCreateAtomTable                                                  @330
     353    RtlCreateEnvironment          = _RtlCreateEnvironment@8             @331
     354;;;;    RtlCreateHeap             = _RtlCreateHeap@24                   @332
     355;   RtlCreateProcessParameters                                          @333
     356;   RtlCreatePropertySet                                                @334
     357;   RtlCreateQueryDebugBuffer                                           @335
     358;   RtlCreateRegistryKey                                                @336
     359    RtlCreateSecurityDescriptor   = _RtlCreateSecurityDescriptor@8      @337
     360;   RtlCreateTagHeap                                                    @338
     361    RtlCreateUnicodeString        = _RtlCreateUnicodeString@8           @339
     362    RtlCreateUnicodeStringFromAsciiz = _RtlCreateUnicodeStringFromAsciiz@8  @340
     363;   RtlCreateUserProcess                                                @341
     364;   RtlCreateUserSecurityObject                                         @342
     365;   RtlCreateUserThread                                                 @343
     366;   RtlCustomCPToUnicodeN                                               @344
     367;   RtlCutoverTimeToSystemTime                                          @345
     368;   RtlDeNormalizeProcessParams                                         @346
     369;   RtlDecompressBuffer                                                 @347
     370;   RtlDecompressFragment                                               @348
     371;   RtlDelete                                                           @349
     372;   RtlDeleteAce                                                        @350
     373;   RtlDeleteAtomFromAtomTable                                          @351
     374    RtlDeleteCriticalSection      = _DeleteCriticalSection@4            @352
     375;   RtlDeleteElementGenericTable                                        @353
     376;   RtlDeleteNoSplay                                                    @354
     377;   RtlDeleteRegistryValue                                              @355
     378    RtlDeleteResource             = _RtlDeleteResource@4                @356
     379    RtlDeleteSecurityObject       = _RtlDeleteSecurityObject@4          @357
     380;   RtlDestroyAtomTable                                                 @358
     381    RtlDestroyEnvironment         = _RtlDestroyEnvironment@4            @359
     382;   RtlDestroyHandleTable                                               @360
     383;;;;    RtlDestroyHeap            = _RtlDestroyHeap@4                   @361
     384;   RtlDestroyProcessParameters                                         @362
     385;   RtlDestroyQueryDebugBuffer                                          @363
     386;   RtlDetermineDosPathNameType_U                                       @364
     387;   RtlDoesFileExists_U                                                 @365
     388    RtlDosPathNameToNtPathName_U  = _RtlDosPathNameToNtPathName_U@16    @366
     389;   RtlDosSearchPath_U                                                  @367
     390    RtlDowncaseUnicodeString      = _RtlDowncaseUnicodeString@12        @368
     391    RtlDumpResource               = _RtlDumpResource@4                  @369
     392;   RtlEmptyAtomTable                                                   @370
     393    RtlEnlargedIntegerMultiply    = _RtlEnlargedIntegerMultiply@8       @371
     394    RtlEnlargedUnsignedDivide     = _RtlEnlargedUnsignedDivide@16       @372
     395    RtlEnlargedUnsignedMultiply   = _RtlEnlargedUnsignedMultiply@8      @373
     396    RtlEnterCriticalSection       = _EnterCriticalSection@4             @374
     397;   RtlEnumProcessHeaps                                                 @375
     398;   RtlEnumerateGenericTable                                            @376
     399;   RtlEnumerateGenericTableWithoutSplaying                             @377
     400;   RtlEnumerateProperties                                              @378
     401    RtlEqualComputerName          = _RtlEqualComputerName@8             @379
     402    RtlEqualDomainName            = _RtlEqualDomainName@8               @380
     403;   RtlEqualLuid                                                        @381
     404    RtlEqualPrefixSid             = _RtlEqualPrefixSid@8                @382
     405    RtlEqualSid                   = _RtlEqualSid@8                      @383
     406    RtlEqualString                = _RtlEqualString@12                  @384
     407    RtlEqualUnicodeString         = _RtlEqualUnicodeString@12           @385
     408    RtlEraseUnicodeString         = _RtlEraseUnicodeString@4            @386
     409;   RtlExpandEnvironmentStrings_U                                       @387
     410;   RtlExtendHeap                                                       @388
     411    RtlExtendedIntegerMultiply    = _RtlExtendedIntegerMultiply@12      @389
     412    RtlExtendedLargeIntegerDivide = _RtlExtendedLargeIntegerDivide@16   @390
     413    RtlExtendedMagicDivide        = _RtlExtendedMagicDivide@20          @391
     414    RtlFillMemory                 = _RtlFillMemory@12                   @392
     415;   RtlFillMemoryUlong                                                  @393
     416    RtlFindClearBits              = _RtlFindClearBits@12                @394
     417;   RtlFindClearBitsAndSet                                              @395
     418;   RtlFindLongestRunClear                                              @396
     419;   RtlFindLongestRunSet                                                @397
     420;   RtlFindMessage                                                      @398
     421;   RtlFindSetBits                                                      @399
     422;   RtlFindSetBitsAndClear                                              @400
     423    RtlFirstFreeAce               = _RtlFirstFreeAce@8                  @401
     424;   RtlFlushPropertySet                                                 @402
     425    RtlFormatCurrentUserKeyPath   = _RtlFormatCurrentUserKeyPath@4      @403
     426;   RtlFormatMessage                                                    @404
     427    RtlFreeAnsiString             = _RtlFreeAnsiString@4                @405
     428;   RtlFreeHandle                                                       @406
     429;;;;    RtlFreeHeap               = _RtlFreeHeap@12                     @407
     430    RtlFreeHeap                   = _HeapFree@12                        @407
     431    RtlFreeOemString              = _RtlFreeOemString@4                 @408
     432    RtlFreeSid                    = _RtlFreeSid@4                       @409
     433    RtlFreeUnicodeString          = _RtlFreeUnicodeString@4             @410
     434;   RtlFreeUserThreadStack                                              @411
     435;   RtlGenerate8dot3Name                                                @412
     436    RtlGetAce                     = _RtlGetAce@12                       @413
     437;   RtlGetCallersAddress                                                @414
     438;   RtlGetCompressionWorkSpaceSize                                      @415
     439    RtlGetControlSecurityDescriptor = _RtlGetControlSecurityDescriptor@12 @416
     440;   RtlGetCurrentDirectory_U                                            @417
     441    RtlGetDaclSecurityDescriptor  = _RtlGetDaclSecurityDescriptor@16    @418
     442;   RtlGetElementGenericTable                                           @419
     443;   RtlGetFullPathName_U                                                @420
     444    RtlGetGroupSecurityDescriptor = _RtlGetGroupSecurityDescriptor@12   @421
     445;   RtlGetLongestNtPathLength                                           @422
     446;   RtlGetNtGlobalFlags                                                 @423
     447    RtlGetNtProductType           = _RtlGetNtProductType@4              @424
     448    RtlGetOwnerSecurityDescriptor = _RtlGetOwnerSecurityDescriptor@12   @425
     449;;;;    RtlGetProcessHeaps        = _RtlGetProcessHeaps@8               @426
     450    RtlGetSaclSecurityDescriptor  = _RtlGetSaclSecurityDescriptor@16    @427
     451;   RtlGetUserInfoHeap                                                  @428
     452;   RtlGuidToPropertySetName                                            @429
     453    RtlIdentifierAuthoritySid     = _RtlIdentifierAuthoritySid@4        @430
     454;   RtlImageDirectoryEntryToData                                        @431
     455    RtlImageNtHeader              = _RtlImageNtHeader@4                 @432
     456;   RtlImageRvaToSection                                                @433
     457;   RtlImageRvaToVa                                                     @434
     458    RtlImpersonateSelf            = _RtlImpersonateSelf@4               @435
     459    RtlInitAnsiString             = _RtlInitAnsiString@8                @436
     460;   RtlInitCodePageTable                                                @437
     461;   RtlInitNlsTables                                                    @438
     462    RtlInitString                 = _RtlInitString@8                    @439
     463    RtlInitUnicodeString          = _RtlInitUnicodeString@8             @440
     464;   RtlInitializeAtomPackage                                            @441
     465    RtlInitializeBitMap           = _RtlInitializeBitMap@12             @442
     466;   RtlInitializeContext                                                @443
     467    RtlInitializeCriticalSection  = _InitializeCriticalSection@4        @444
     468;   RtlInitializeCriticalSectionAndSpinCount                            @445
     469    RtlInitializeGenericTable     = _RtlInitializeGenericTable@0        @446
     470;   RtlInitializeHandleTable                                            @447
     471;   RtlInitializeRXact                                                  @448
     472    RtlInitializeResource         = _RtlInitializeResource@4            @449
     473    RtlInitializeSid              = _RtlInitializeSid@12                @450
     474;   RtlInsertElementGenericTable                                        @451
     475    RtlIntegerToChar              = _RtlIntegerToChar@16                @452
     476    RtlIntegerToUnicodeString     = _RtlIntegerToUnicodeString@12       @453
     477;   RtlIsDosDeviceName_U                                                @454
     478;   RtlIsGenericTableEmpty                                              @455
     479;   RtlIsNameLegalDOS8Dot3                                              @456
     480    RtlIsTextUnicode              = _RtlIsTextUnicode@12                @457
     481;   RtlIsValidHandle                                                    @458
     482;   RtlIsValidIndexHandle                                               @459
     483    RtlLargeIntegerAdd            = _RtlLargeIntegerAdd@16              @460
     484    RtlLargeIntegerArithmeticShift= _RtlLargeIntegerArithmeticShift@12  @461
     485    RtlLargeIntegerDivide         = _RtlLargeIntegerDivide@20           @462
     486    RtlLargeIntegerNegate         = _RtlLargeIntegerNegate@8            @463
     487    RtlLargeIntegerShiftLeft      = _RtlLargeIntegerShiftLeft@12        @464
     488    RtlLargeIntegerShiftRight     = _RtlLargeIntegerShiftRight@12       @465
     489    RtlLargeIntegerSubtract       = _RtlLargeIntegerSubtract@16         @466
     490    RtlLargeIntegerToChar         = _RtlLargeIntegerToChar@16           @467
     491    RtlLeaveCriticalSection       = _LeaveCriticalSection@4             @468
     492    RtlLengthRequiredSid          = _RtlLengthRequiredSid@4             @469
     493    RtlLengthSecurityDescriptor   = _RtlLengthSecurityDescriptor@4      @470
     494    RtlLengthSid                  = _RtlLengthSid@4                     @471
     495;   RtlLocalTimeToSystemTime                                            @472
     496;;;;    RtlLockHeap               = _RtlLockHeap@4                      @473
     497    RtlLockHeap                   = _HeapLock@4                         @473
     498;   RtlLookupAtomInAtomTable                                            @474
     499;   RtlLookupElementGenericTable                                        @475
     500    RtlMakeSelfRelativeSD         = _RtlMakeSelfRelativeSD@12           @476
     501;   RtlMapGenericMask                                                   @477
     502    RtlMoveMemory                 = _RtlMoveMemory@12                   @478
     503    RtlMultiByteToUnicodeN        = _RtlMultiByteToUnicodeN@20          @479
     504    RtlMultiByteToUnicodeSize     = _RtlMultiByteToUnicodeSize@12       @480
     505;   RtlNewInstanceSecurityObject                                        @481
     506;   RtlNewSecurityGrantedAccess                                         @482
     507    RtlNewSecurityObject          = _RtlNewSecurityObject@24            @483
     508    RtlNormalizeProcessParams     = _RtlNormalizeProcessParams@4        @484
     509    RtlNtStatusToDosError         = _RtlNtStatusToDosError@4            @485
     510;   RtlNumberGenericTableElements                                       @486
     511    RtlNumberOfClearBits          = _RtlNumberOfClearBits@4             @487
     512    RtlNumberOfSetBits            = _RtlNumberOfSetBits@4               @488
     513    RtlOemStringToUnicodeSize     = _RtlOemStringToUnicodeSize@4        @489
     514    RtlOemStringToUnicodeString   = _RtlOemStringToUnicodeString@12     @490
     515    RtlOemToUnicodeN              = _RtlOemToUnicodeN@20                @491
     516;   RtlOnMappedStreamEvent                                              @492
     517    RtlOpenCurrentUser            = _RtlOpenCurrentUser@8               @493
     518;   RtlPcToFileHeader                                                   @494
     519;   RtlPinAtomInAtomTable                                               @495
     520    RtlPrefixString               = _RtlPrefixString@12                 @496
     521    RtlPrefixUnicodeString        = _RtlPrefixUnicodeString@12          @497
     522;   RtlPropertySetNameToGuid                                            @498
     523;   RtlProtectHeap                                                      @499
     524;   RtlQueryAtomInAtomTable                                             @500
     525    RtlQueryEnvironmentVariable_U = _RtlQueryEnvironmentVariable_U@12   @501
     526;   RtlQueryInformationAcl                                              @502
     527;   RtlQueryProcessBackTraceInformation                                 @503
     528;   RtlQueryProcessDebugInformation                                     @504
     529;   RtlQueryProcessHeapInformation                                      @505
     530;   RtlQueryProcessLockInformation                                      @506
     531;   RtlQueryProperties                                                  @507
     532;   RtlQueryPropertyNames                                               @508
     533;   RtlQueryPropertySet                                                 @509
     534;   RtlQueryRegistryValues                                              @510
     535;   RtlQuerySecurityObject                                              @511
     536;   RtlQueryTagHeap                                                     @512
     537    RtlQueryTimeZoneInformation   = _RtlQueryTimeZoneInformation@4      @513
     538    RtlRaiseException             = ___regs_RtlRaiseException@8         @514
     539    RtlRaiseStatus                = _RtlRaiseStatus@4                   @515
     540    RtlRandom                     = _RtlRandom@4                        @516
     541;;;;    RtlReAllocateHeap         = _RtlReAllocateHeap@16               @517
     542    RtlReAllocateHeap             = _HeapReAlloc@16                     @517
     543;   RtlRealPredecessor                                                  @518
     544;   RtlRealSuccessor                                                    @519
     545    RtlReleasePebLock             = _RtlReleasePebLock@0                @520
     546    RtlReleaseResource            = _RtlReleaseResource@4               @521
     547;   RtlRemoteCall                                                       @522
     548;   RtlResetRtlTranslations                                             @523
     549;   RtlRunDecodeUnicodeString                                           @524
     550;   RtlRunEncodeUnicodeString                                           @525
     551    RtlSecondsSince1970ToTime     = _RtlSecondsSince1970ToTime@8        @526
     552    RtlSecondsSince1980ToTime     = _RtlSecondsSince1980ToTime@8        @527
     553;   RtlSelfRelativeToAbsoluteSD                                         @528
     554    RtlSetAllBits                 = _RtlSetAllBits@4                    @529
     555;   RtlSetAttributesSecurityDescriptor                                  @530
     556    RtlSetBits                    = _RtlSetBits@12                      @531
     557;   RtlSetCriticalSectionSpinCount                                      @532
     558;   RtlSetCurrentDirectory_U                                            @533
     559;   RtlSetCurrentEnvironment                                            @534
     560    RtlSetDaclSecurityDescriptor  = _RtlSetDaclSecurityDescriptor@16    @535
     561    RtlSetEnvironmentVariable     = _RtlSetEnvironmentVariable@12       @536
     562    RtlSetGroupSecurityDescriptor = _RtlSetGroupSecurityDescriptor@12   @537
     563;   RtlSetInformationAcl                                                @538
     564    RtlSetOwnerSecurityDescriptor = _RtlSetOwnerSecurityDescriptor@12   @539
     565;   RtlSetProperties                                                    @540
     566;   RtlSetPropertyNames                                                 @541
     567;   RtlSetPropertySetClassId                                            @542
     568    RtlSetSaclSecurityDescriptor  = _RtlSetSaclSecurityDescriptor@16    @543
     569;   RtlSetSecurityObject                                                @544
     570;   RtlSetTimeZoneInformation                                           @545
     571;   RtlSetUnicodeCallouts                                               @546
     572;   RtlSetUserFlagsHeap                                                 @547
     573;   RtlSetUserValueHeap                                                 @548
     574;;;;    RtlSizeHeap               = _RtlSizeHeap@12                     @549
     575    RtlSizeHeap                   = _HeapSize@12                        @549
     576;   RtlSplay                                                            @550
     577;   RtlStartRXact                                                       @551
     578    RtlSubAuthorityCountSid       = _RtlSubAuthorityCountSid@4          @552
     579    RtlSubAuthoritySid            = _RtlSubAuthoritySid@8               @553
     580;   RtlSubtreePredecessor                                               @554
     581;   RtlSubtreeSuccessor                                                 @555
     582    RtlSystemTimeToLocalTime      = _RtlSystemTimeToLocalTime@8         @556
     583    RtlTimeFieldsToTime           = _RtlTimeFieldsToTime@8              @557
     584    RtlTimeToElapsedTimeFields    = _RtlTimeToElapsedTimeFields@8       @558
     585    RtlTimeToSecondsSince1970     = _RtlTimeToSecondsSince1970@8        @559
     586    RtlTimeToSecondsSince1980     = _RtlTimeToSecondsSince1980@8        @560
     587    RtlTimeToTimeFields           = _RtlTimeToTimeFields@8              @561
     588;   RtlTryEnterCriticalSection                                          @562
     589    RtlUnicodeStringToAnsiSize    = _RtlUnicodeStringToAnsiSize@4       @563
     590    RtlUnicodeStringToAnsiString  = _RtlUnicodeStringToAnsiString@12    @564
     591;   RtlUnicodeStringToCountedOemString                                  @565
     592    RtlUnicodeStringToInteger     = _RtlUnicodeStringToInteger@12       @566
     593    RtlUnicodeStringToOemSize     = _RtlUnicodeStringToOemSize@4        @567
     594    RtlUnicodeStringToOemString   = _RtlUnicodeStringToOemString@12     @568
     595;   RtlUnicodeToCustomCPN                                               @569
     596    RtlUnicodeToMultiByteN        = _RtlUnicodeToMultiByteN@20          @570
     597    RtlUnicodeToMultiByteSize     = _RtlUnicodeToMultiByteSize@12       @571
     598    RtlUnicodeToOemN              = _RtlUnicodeToOemN@20                @572
     599;   RtlUniform                                                          @573
     600;;;;    RtlUnlockHeap             = _RtlUnlockHeap@4                    @574
     601    RtlUnlockHeap                 = _HeapUnlock@4                       @574
     602    RtlUnwind                     = _RtlUnwind@16                       @575
     603    RtlUpcaseUnicodeChar          = _RtlUpcaseUnicodeChar@4             @576
     604    RtlUpcaseUnicodeString        = _RtlUpcaseUnicodeString@12          @577
     605;   RtlUpcaseUnicodeStringToCountedOemString                            @579
     606    RtlUpcaseUnicodeStringToOemString = _RtlUpcaseUnicodeStringToOemString@12 @580
     607;   RtlUpcaseUnicodeToCustomCPN                                         @581
     608    RtlUpcaseUnicodeToMultiByteN  = _RtlUpcaseUnicodeToMultiByteN@20    @582
     609    RtlUpcaseUnicodeToOemN        = _RtlUpcaseUnicodeToOemN@20          @583
     610    RtlUpperChar                  = _RtlUpperChar@4                     @584
     611    RtlUpperString                = _RtlUpperString@8                   @585
     612;   RtlUsageHeap                                                        @586
     613;   RtlValidAcl                                                         @587
     614    RtlValidSecurityDescriptor    = _RtlValidSecurityDescriptor@4       @588
     615    RtlValidSid                   = _RtlValidSid@4                      @589
     616;;;;    RtlValidateHeap           = _RtlValidateHeap@12                 @590
     617    RtlValidateHeap               = _HeapValidate@12                    @590
     618;   RtlValidateProcessHeaps                                             @591
     619;;    RtlWalkHeap                 = _RtlWalkHeap@8                      @592
     620    RtlWalkHeap                   = _HeapWalk@8                         @592
     621;   RtlWriteRegistryValue                                               @593
     622;   RtlZeroHeap                                                         @594
     623    RtlZeroMemory                 = _RtlZeroMemory@8                    @595
     624;   RtlpNtCreateKey                                                     @596
     625;   RtlpNtEnumerateSubKey                                               @597
     626;   RtlpNtMakeTemporaryKey                                              @598
     627;   RtlpNtOpenKey                                                       @599
     628;   RtlpNtQueryValueKey                                                 @600
     629
     630;   RtlpNtSetValueKey                                                   @601
     631;   RtlpUnWaitCriticalSection                                           @602
     632;   RtlpWaitForCriticalSection                                          @603
     633    RtlxAnsiStringToUnicodeSize   = _RtlAnsiStringToUnicodeSize@4       @604
     634    RtlxOemStringToUnicodeSize    = _RtlOemStringToUnicodeSize@4        @605
     635    RtlxUnicodeStringToAnsiSize   = _RtlUnicodeStringToAnsiSize@4       @606
     636    RtlxUnicodeStringToOemSize    = _RtlUnicodeStringToOemSize@4        @607
     637;   SaveEm87Context                                                     @608
     638
     639    ZwAcceptConnectPort           = _NtAcceptConnectPort@24             @609
     640;   ZwAccessCheck                                                       @610
     641;   ZwAccessCheckAndAuditAlarm                                          @611
     642;   ZwAddAtom                                                           @612
     643;   ZwAdjustGroupsToken                                                 @613
     644    ZwAdjustPrivilegesToken       = _NtAdjustPrivilegesToken@24         @614
     645;   ZwAlertResumeThread                                                 @615
     646    ZwAlertThread                 = _NtAlertThread@8                    @616
     647;   ZwAllocateLocallyUniqueId                                           @617
     648    ZwAllocateUuids               = _NtAllocateUuids@16                 @618
     649;   ZwAllocateVirtualMemory                                             @619
     650;   ZwCallbackReturn                                                    @620
     651;   ZwCancelIoFile                                                      @621
     652;   ZwCancelTimer                                                       @622
     653;   ZwClearEvent                                                        @623
     654    ZwClose                       = _NtClose@4                          @624
     655;   ZwCloseObjectAuditAlarm                                             @625
     656    ZwCompleteConnectPort         = _NtCompleteConnectPort@4            @626
     657    ZwConnectPort                 = _NtConnectPort@32                   @627
     658;   ZwContinue                                                          @628
     659;   ZwCreateChannel                                                     @629
     660    ZwCreateDirectoryObject       = _NtCreateDirectoryObject@12         @630
     661    ZwCreateEvent                 = _NtCreateEvent@20                   @631
     662;   ZwCreateEventPair                                                   @632
     663    ZwCreateFile                  = _NtCreateFile@44                    @633
     664;   ZwCreateIoCompletion                                                @634
     665    ZwCreateKey                   = _NtCreateKey@28                     @635
     666    ZwCreateMailslotFile          = _NtCreateMailslotFile@32            @636
     667;   ZwCreateMutant                                                      @637
     668;   ZwCreateNamedPipeFile                                               @638
     669    ZwCreatePagingFile            = _NtCreatePagingFile@16              @639
     670    ZwCreatePort                  = _NtCreatePort@20                    @640
     671;   ZwCreateProcess                                                     @641
     672;   ZwCreateProfile                                                     @642
     673    ZwCreateSection               = _NtCreateSection@28                 @643
     674    ZwCreateSemaphore             = _NtCreateSemaphore@20               @644
     675    ZwCreateSymbolicLinkObject    = _NtCreateSymbolicLinkObject@16      @645
     676;   ZwCreateThread                                                      @646
     677    ZwCreateTimer                 = _NtCreateTimer@16                   @647
     678;   ZwCreateToken                                                       @648
     679;   ZwDelayExecution                                                    @649
     680;   ZwDeleteAtom                                                        @650
     681;   ZwDeleteFile                                                        @651
     682    ZwDeleteKey                   = _NtDeleteKey@4                      @652
     683;   ZwDeleteObjectAuditAlarm                                            @653
     684    ZwDeleteValueKey              = _NtDeleteValueKey@8                 @654
     685    ZwDeviceIoControlFile         = _NtDeviceIoControlFile@40           @655
     686    ZwDisplayString               = _NtDisplayString@4                  @656
     687    ZwDuplicateObject             = _NtDuplicateObject@28               @657
     688    ZwDuplicateToken              = _NtDuplicateToken@24                @658
     689    ZwEnumerateKey                = _NtEnumerateKey@24                  @659
     690    ZwEnumerateValueKey           = _NtEnumerateValueKey@24             @660
     691;   ZwExtendSection                                                     @661
     692;   ZwFindAtom                                                          @662
     693;   ZwFlushBuffersFile                                                  @663
     694;   ZwFlushInstructionCache                                             @664
     695    ZwFlushKey                    = _NtFlushKey@4                       @665
     696;   ZwFlushVirtualMemory                                                @666
     697;   ZwFlushWriteBuffer                                                  @667
     698;   ZwFreeVirtualMemory                                                 @668
     699    ZwFsControlFile               = _NtFsControlFile@40                 @669
     700;   ZwGetContextThread                                                  @670
     701;   ZwGetPlugPlayEvent                                                  @671
     702;   ZwGetTickCount                                                      @672
     703    ZwImpersonateClientOfPort     = _NtImpersonateClientOfPort@16       @673
     704;   ZwImpersonateThread                                                 @674
     705;   ZwInitializeRegistry                                                @675
     706;   ZwListenChannel                                                     @676
     707    ZwListenPort                  = _NtListenPort@8                     @677
     708;   ZwLoadDriver                                                        @678
     709;   ZwLoadKey2                                                          @679
     710    ZwLoadKey                     = _NtLoadKey@8                        @680
     711;   ZwLockFile                                                          @681
     712;   ZwLockVirtualMemory                                                 @682
     713;   ZwMakeTemporaryObject                                               @683
     714    ZwMapViewOfSection            = _NtMapViewOfSection@40              @684
     715;   ZwNotifyChangeDirectoryFile                                         @685
     716    ZwNotifyChangeKey             = _NtNotifyChangeKey@40               @686
     717;   ZwOpenChannel                                                       @687
     718    ZwOpenDirectoryObject         = _NtOpenDirectoryObject@12           @688
     719    ZwOpenEvent                   = _NtOpenEvent@12                     @689
     720;   ZwOpenEventPair                                                     @690
     721    ZwOpenFile                    = _NtOpenFile@24                      @691
     722;   ZwOpenIoCompletion                                                  @692
     723    ZwOpenKey                     = _NtOpenKey@12                       @693
     724;   ZwOpenMutant                                                        @694
     725;   ZwOpenObjectAuditAlarm                                              @695
     726;   ZwOpenProcess                                                       @696
     727    ZwOpenProcessToken            = _NtOpenProcessToken@12              @697
     728    ZwOpenSection                 = _NtOpenSection@12                   @698
     729    ZwOpenSemaphore               = _NtOpenSemaphore@12                 @699
     730    ZwOpenSymbolicLinkObject      = _NtQuerySymbolicLinkObject@12       @700
     731;   ZwOpenThread                                                        @701
     732    ZwOpenThreadToken             = _NtOpenThreadToken@16               @702
     733;   ZwOpenTimer                                                         @703
     734;   ZwPlugPlayControl                                                   @704
     735;   ZwPrivilegeCheck                                                    @705
     736;   ZwPrivilegeObjectAuditAlarm                                         @706
     737;   ZwPrivilegedServiceAuditAlarm                                       @707
     738;   ZwProtectVirtualMemory                                              @708
     739;   ZwPulseEvent                                                        @709
     740;   ZwQueryAttributesFile                                               @710
     741;   ZwQueryDefaultLocale                                                @711
     742    ZwQueryDirectoryFile          = _NtQueryDirectoryFile@44            @712
     743    ZwQueryDirectoryObject        = _NtQueryDirectoryObject@28          @713
     744;   ZwQueryEaFile                                                       @714
     745;   ZwQueryEvent                                                        @715
     746;   ZwQueryFullAttributesFile                                           @716
     747;   ZwQueryInformationAtom                                              @717
     748    ZwQueryInformationFile        = _NtQueryInformationFile@20          @718
     749;   ZwQueryInformationPort                                              @719
     750    ZwQueryInformationProcess     = _NtQueryInformationProcess@20       @720
     751    ZwQueryInformationThread      = _NtQueryInformationThread@20        @721
     752    ZwQueryInformationToken       = _NtQueryInformationToken@20         @722
     753;   ZwQueryIntervalProfile                                              @723
     754;   ZwQueryIoCompletion                                                 @724
     755    ZwQueryKey                    = _NtQueryKey@20                      @725
     756    ZwQueryMultipleValueKey       = _NtQueryMultipleValueKey@24         @726
     757;   ZwQueryMutant                                                       @727
     758    ZwQueryObject                 = _NtQueryObject@20                   @728
     759;   ZwQueryOleDirectoryFile                                             @729
     760    ZwQueryPerformanceCounter     = _NtQueryPerformanceCounter@8        @730
     761    ZwQuerySection                = _NtQuerySection@20                  @731
     762    ZwQuerySecurityObject         = _NtQuerySecurityObject@20           @732
     763    ZwQuerySemaphore              = _NtQuerySemaphore@20                @733
     764    ZwQuerySymbolicLinkObject     = _NtQuerySymbolicLinkObject@12       @734
     765;   ZwQuerySystemEnvironmentValue                                       @735
     766    ZwQuerySystemInformation      = _NtQuerySystemInformation@16        @736
     767    ZwQuerySystemTime             = _NtQuerySystemTime@4                @737
     768;   ZwQueryTimer                                                        @738
     769    ZwQueryTimerResolution        = _NtQueryTimerResolution@12          @739
     770    ZwQueryValueKey               = _NtQueryValueKey@24                 @740
     771;   ZwQueryVirtualMemory                                                @741
     772;   ZwQueryVolumeInformationFile                                        @742
     773;   ZwQueueApcThread                                                    @743
     774    ZwRaiseException              = ___regs_NtRaiseException@16         @744
     775;   ZwRaiseHardError                                                    @745
     776    ZwReadFile                    = _NtReadFile@36                      @746
     777;   ZwReadFileScatter                                                   @747
     778    ZwReadRequestData             = _NtReadRequestData@20               @748
     779;   ZwReadVirtualMemory                                                 @749
     780    ZwRegisterThreadTerminatePort = _NtRegisterThreadTerminatePort@4    @750
     781;   ZwReleaseMutant                                                     @751
     782    ZwReleaseSemaphore            = _NtReleaseSemaphore@12              @752
     783;   ZwRemoveIoCompletion                                                @753
     784    ZwReplaceKey                  = _NtReplaceKey@12                    @754
     785    ZwReplyPort                   = _NtReplyPort@16                     @755
     786    ZwReplyWaitReceivePort        = _NtReplyWaitReceivePort@16          @756
     787    ZwReplyWaitReplyPort          = _NtReplyWaitReplyPort@16            @757
     788;   ZwReplyWaitSendChannel                                              @758
     789    ZwRequestPort                 = _NtRequestPort@16                   @759
     790    ZwRequestWaitReplyPort        = _NtRequestWaitReplyPort@12          @760
     791    ZwResetEvent                  = _NtResetEvent@8                     @761
     792    ZwRestoreKey                  = _NtRestoreKey@12                    @762
     793    ZwResumeThread                = _NtResumeThread@8                   @763
     794    ZwSaveKey                     = _NtSaveKey@8                        @764
     795;   ZwSendWaitReplyChannel                                              @765
     796;   ZwSetContextChannel                                                 @766
     797;   ZwSetContextThread                                                  @767
     798;   ZwSetDefaultHardErrorPort                                           @768
     799;   ZwSetDefaultLocale                                                  @769
     800;   ZwSetEaFile                                                         @770
     801    ZwSetEvent                    = _NtSetEvent@8                       @771
     802;   ZwSetHighEventPair                                                  @772
     803;   ZwSetHighWaitLowEventPair                                           @773
     804;   ZwSetHighWaitLowThread                                              @774
     805    ZwSetInformationFile          = _NtSetInformationFile@20            @775
     806    ZwSetInformationKey           = _NtSetInformationKey@16             @776
     807;   ZwSetInformationObject                                              @777
     808    ZwSetInformationProcess       = _NtSetInformationProcess@16         @778
     809    ZwSetInformationThread        = _NtSetInformationThread@16          @779
     810;   ZwSetInformationToken                                               @780
     811    ZwSetIntervalProfile          = _NtSetIntervalProfile@8             @781
     812;   ZwSetIoCompletion                                                   @782
     813;   ZwSetLdtEntries                                                     @783
     814;   ZwSetLowEventPair                                                   @784
     815;   ZwSetLowWaitHighEventPair                                           @785
     816;   ZwSetLowWaitHighThread                                              @786
     817;   ZwSetSecurityObject                                                 @787
     818;   ZwSetSystemEnvironmentValue                                         @788
     819;   ZwSetSystemInformation                                              @789
     820;   ZwSetSystemPowerState                                               @790
     821;   ZwSetSystemTime                                                     @791
     822    ZwSetTimer                    = _NtSetTimer@28                      @792
     823;   ZwSetTimerResolution                                                @793
     824    ZwSetValueKey                 = _NtSetValueKey@24                   @794
     825    ZwSetVolumeInformationFile    = _NtSetVolumeInformationFile@20      @795
     826;   ZwShutdownSystem                                                    @796
     827;   ZwSignalAndWaitForSingleObject                                      @797
     828;   ZwStartProfile                                                      @798
     829;   ZwStopProfile                                                       @799
     830;   ZwSuspendThread                                                     @800
     831
     832;   ZwSystemDebugControl                                                @801
     833    ZwTerminateProcess            = _NtTerminateProcess@8               @802
     834    ZwTerminateThread             = _NtTerminateThread@8                @803
     835    ZwTestAlert                   = _NtTestAlert@8                      @804
     836;   ZwUnloadDriver                                                      @805
     837    ZwUnloadKey                   = _NtUnloadKey@4                      @806
     838;   ZwUnlockFile                                                        @807
     839;   ZwUnlockVirtualMemory                                               @808
     840;   ZwUnmapViewOfSection                                                @809
     841;   ZwVdmControl                                                        @810
     842;   ZwWaitForMultipleObjects                                            @811
     843    ZwWaitForSingleObject         = _NtWaitForSingleObject@12           @812
     844;   ZwWaitHighEventPair                                                 @813
     845;   ZwWaitLowEventPair                                                  @814
     846;   ZwWriteFile                                                         @815
     847;   ZwWriteFileGather                                                   @816
     848    ZwWriteRequestData            = _NtWriteRequestData@20              @817
     849;   ZwWriteVirtualMemory                                                @818
     850;   ZwYieldExecution                                                    @819
     851
     852
     853   _CIpow = NTDLL__CIpow                                                @820
     854;   __eCommonExceptions                                                 @821
     855;   __eEmulatorInit                                                     @822
     856;   __eF2XM1                                                            @823
     857;   __eFABS                                                             @824
     858;   __eFADD32                                                           @825
     859;   __eFADD64                                                           @826
     860;   __eFADDPreg                                                         @827
     861;   __eFADDreg                                                          @828
     862;   __eFADDtop                                                          @829
     863;   __eFCHS                                                             @830
     864;   __eFCOM                                                             @831
     865;   __eFCOM32                                                           @832
     866;   __eFCOM64                                                           @833
     867;   __eFCOMP                                                            @834
     868;   __eFCOMP32                                                          @835
     869;   __eFCOMP64                                                          @836
     870;   __eFCOMPP                                                           @837
     871;   __eFCOS                                                             @838
     872;   __eFDECSTP                                                          @839
     873;   __eFDIV32                                                           @840
     874;   __eFDIV64                                                           @841
     875;   __eFDIVPreg                                                         @842
     876;   __eFDIVR32                                                          @843
     877;   __eFDIVR64                                                          @844
     878;   __eFDIVRPreg                                                        @845
     879;   __eFDIVRreg                                                         @846
     880;   __eFDIVRtop                                                         @847
     881;   __eFDIVreg                                                          @848
     882;   __eFDIVtop                                                          @849
     883;   __eFFREE                                                            @850
     884;   __eFIADD16                                                          @851
     885;   __eFIADD32                                                          @852
     886;   __eFICOM16                                                          @853
     887;   __eFICOM32                                                          @854
     888;   __eFICOMP16                                                         @855
     889;   __eFICOMP32                                                         @856
     890;   __eFIDIV16                                                          @857
     891;   __eFIDIV32                                                          @858
     892;   __eFIDIVR16                                                         @859
     893;   __eFIDIVR32                                                         @860
     894;   __eFILD16                                                           @861
     895;   __eFILD32                                                           @862
     896;   __eFILD64                                                           @863
     897;   __eFIMUL16                                                          @864
     898;   __eFIMUL32                                                          @865
     899;   __eFINCSTP                                                          @866
     900;   __eFINIT                                                            @867
     901;   __eFIST16                                                           @868
     902;   __eFIST32                                                           @869
     903;   __eFISTP16                                                          @870
     904;   __eFISTP32                                                          @871
     905;   __eFISTP64                                                          @872
     906;   __eFISUB16                                                          @873
     907;   __eFISUB32                                                          @874
     908;   __eFISUBR16                                                         @875
     909;   __eFISUBR32                                                         @876
     910;   __eFLD1                                                             @877
     911;   __eFLD32                                                            @878
     912;   __eFLD64                                                            @879
     913;   __eFLD80                                                            @880
     914;   __eFLDCW                                                            @881
     915;   __eFLDENV                                                           @882
     916;   __eFLDL2E                                                           @883
     917;   __eFLDLN2                                                           @884
     918;   __eFLDPI                                                            @885
     919;   __eFLDZ                                                             @886
     920;   __eFMUL32                                                           @887
     921;   __eFMUL64                                                           @888
     922;   __eFMULPreg                                                         @889
     923;   __eFMULreg                                                          @890
     924;   __eFMULtop                                                          @891
     925;   __eFPATAN                                                           @892
     926;   __eFPREM                                                            @893
     927;   __eFPREM1                                                           @894
     928;   __eFPTAN                                                            @895
     929;   __eFRNDINT                                                          @896
     930;   __eFRSTOR                                                           @897
     931;   __eFSAVE                                                            @898
     932;   __eFSCALE                                                           @899
     933;   __eFSIN                                                             @900
     934
     935;   __eFSQRT                                                            @901
     936;   __eFST                                                              @902
     937;   __eFST32                                                            @903
     938;   __eFST64                                                            @904
     939;   __eFSTCW                                                            @905
     940;   __eFSTENV                                                           @906
     941;   __eFSTP                                                             @907
     942;   __eFSTP32                                                           @908
     943;   __eFSTP64                                                           @909
     944;   __eFSTP80                                                           @910
     945;   __eFSTSW                                                            @911
     946;   __eFSUB32                                                           @912
     947;   __eFSUB64                                                           @913
     948;   __eFSUBPreg                                                         @914
     949;   __eFSUBR32                                                          @915
     950;   __eFSUBR64                                                          @916
     951;   __eFSUBRPreg                                                        @917
     952;   __eFSUBRreg                                                         @918
     953;   __eFSUBRtop                                                         @919
     954;   __eFSUBreg                                                          @920
     955;   __eFSUBtop                                                          @921
     956;   __eFTST                                                             @922
     957;   __eFUCOM                                                            @923
     958;   __eFUCOMP                                                           @924
     959;   __eFUCOMPP                                                          @925
     960;   __eFXAM                                                             @926
     961;   __eFXCH                                                             @927
     962;   __eFXTRACT                                                          @928
     963;   __eFYL2X                                                            @929
     964;   __eFYL2XP1                                                          @930
     965;   __eGetStatusWord                                                    @931
     966    _allrem                       = __allrem@16                         @939
     967;   _allshl                                                             @940
     968;   _allshr                                                             @941
     969    _atoi64                                                             @942
     970    _aulldiv                      = __aulldiv@16                        @943
     971    _aullrem                      = __allrem@16                         @944
     972;   _aullshr                                                            @945
     973    _chkstk                       = _chkstk                             @946
     974;   _fltused                                                            @947
     975    _ftol                         = NTDLL__ftol                         @948
     976    _i64toa                                                             @949
     977    _i64tow                                                             @950
     978    _itoa                         = NTDLL_itoa                          @951
     979    _itow                                                               @952
     980    _ltoa                         = NTDLL_ltoa                          @953
     981    _ltow                                                               @954
     982    _memccpy                                                            @955
     983    _memicmp                      = NTDLL__memicmp                      @956
     984    _snprintf                     = _snprintf                           @957
     985    _snwprintf                    = _snwprintf                          @958
     986    _splitpath                    = _splitpath                          @959
     987    _strcmpi                      = _stricmp                            @960
     988    _stricmp                      = _stricmp                            @961
     989    _strlwr                       = _strlwr                             @962
     990    _strnicmp                                                           @963
     991    _strupr                                                             @964
     992    _ultoa                        = NTDLL_ultoa                         @967
     993    _ultow                                                              @968
     994    _vsnprintf                                                          @969
     995    _wcsicmp                      = NTDLL__wcsicmp                      @970
     996    _wcslwr                       = NTDLL__wcslwr                       @971
     997    _wcsnicmp                     = NTDLL__wcsnicmp                     @972
     998    _wcsupr                       = NTDLL__wcsupr                       @973
     999    _wtoi                                                               @974
     1000    _wtoi64                                                             @975
     1001    _wtol                                                               @976
     1002
     1003; Borrow most funcs from our internal Odin EMX runtime
     1004
     1005    abs                           = emx_abs                             @977
     1006    atan                          = emx_atan                            @978
     1007    atoi                          = emx_atoi                            @979
     1008    atol                          = emx_atol                            @980
     1009    ceil                          = emx_ceil                            @981
     1010    cos                           = emx_cos                             @982
     1011    fabs                          = emx_fabs                            @983
     1012    floor                         = emx_floor                           @984
     1013    isalnum                       = emx_isalnum                         @985
     1014    isalpha                       = emx_isalpha                         @986
     1015    iscntrl                       = emx_iscntrl                         @987
     1016    isdigit                       = emx_isdigit                         @988
     1017    isgraph                       = emx_isgraph                         @989
     1018    islower                       = emx_islower                         @990
     1019    isprint                       = emx_isprint                         @991
     1020    ispunct                       = emx_ispunct                         @992
     1021    isspace                       = emx_isspace                         @993
     1022    isupper                       = emx_isupper                         @994
    10991023    iswalpha                      = NTDLL_iswalpha                      @995
    1100     iswctype                      = NTDLL_iswctype                     @996
    1101     isxdigit                                @997
    1102     labs                                    @998
    1103     log                                     @999
    1104     mbstowcs                      = NTDLL_mbstowcs                     @1000
    1105 
    1106     memchr                                 @1001
    1107     memcmp                                 @1002
    1108     memcpy                                 @1003
    1109     memmove                                @1004
    1110     memset                                 @1005
    1111     pow                                    @1106
    1112     qsort                                  @1007
    1113     sin                                    @1008
    1114     sprintf                                @1009
    1115     sqrt                                   @1010
    1116     sscanf                                 @1011
    1117     strcat                                 @1012
    1118     strchr                                 @1013
    1119     strcmp                                 @1014
    1120     strcpy                                @1015
    1121     strcspn                               @1016
    1122     strlen                                @1017
    1123     strncat                               @1018
    1124     strncmp                               @1019
    1125     strncpy                               @1020
    1126     strpbrk                               @1021
    1127     strrchr                               @1022
    1128     strspn                                @1023
    1129     strstr                                @1024
    1130     strtol                                @1025
    1131     strtoul                               @1026
    1132     swprintf                      = NTDLL_swprintf                     @1027
    1133     tan                                   @1028
    1134     tolower                               @1029
    1135     toupper                               @1030
    1136     towlower                      = NTDLL_towlower                     @1031
    1137     towupper                      = NTDLL_towupper                     @1032
    1138     vsprintf                              @1033
    1139 
    1140     wcscat                        = NTDLL_wcscat                       @1034
    1141     wcschr                        = NTDLL_wcschr                       @1035
    1142     wcscmp                        = NTDLL_wcscmp                       @1036
    1143     wcscpy                        = NTDLL_wcscpy                       @1037
    1144     wcscspn                       = NTDLL_wcscspn                      @1038
    1145     wcslen                        = NTDLL_wcslen                       @1039
    1146     wcsncat                       = NTDLL_wcsncat                      @1040
    1147     wcsncmp                       = NTDLL_wcsncmp                      @1041
    1148     wcsncpy                       = NTDLL_wcsncpy                      @1042
    1149     wcspbrk                       = NTDLL_wcspbrk                      @1043
    1150     wcsrchr                       = NTDLL_wcsrchr                      @1044
    1151     wcsspn                        = NTDLL_wcsspn                       @1045
    1152     wcsstr                        = NTDLL_wcsstr                       @1046
    1153     wcstok                        = NTDLL_wcstok                       @1050
    1154     wcstol                        = NTDLL_wcstol                       @1047
    1155     wcstombs                      = NTDLL_wcstombs                     @1048
    1156     wcstoul                       = NTDLL_wcstoul                      @1049
    1157     RtlGetNtVersionNumbers @1051
     1024    iswctype                      = NTDLL_iswctype                      @996
     1025    isxdigit                      = emx_isxdigit                        @997
     1026    labs                          = emx_labs                            @998
     1027    log                           = emx_log                             @999
     1028    mbstowcs                      = NTDLL_mbstowcs                      @1000
     1029
     1030    memchr                        = emx_memchr                          @1001
     1031    memcmp                        = emx_memcmp                          @1002
     1032    memcpy                        = emx_memcpy                          @1003
     1033    memmove                       = emx_memmove                         @1004
     1034    memset                        = emx_memset                          @1005
     1035    pow                           = emx_pow                             @1106
     1036    qsort                         = emx_qsort                           @1007
     1037    sin                           = emx_sin                             @1008
     1038    sprintf                       = emx_sprintf                         @1009
     1039    sqrt                          = emx_sqrt                            @1010
     1040    sscanf                        = emx_sscanf                          @1011   
     1041    strcat                        = emx_strcat                          @1012
     1042    strchr                        = emx_strchr                          @1013
     1043    strcmp                        = emx_strcmp                          @1014
     1044    strcpy                        = emx_strcpy                          @1015
     1045    strcspn                       = emx_strcspn                         @1016
     1046    strlen                        = emx_strlen                          @1017
     1047    strncat                       = emx_strncat                         @1018
     1048    strncmp                       = emx_strncmp                         @1019
     1049    strncpy                       = emx_strncpy                         @1020
     1050    strpbrk                       = emx_strpbrk                         @1021
     1051    strrchr                       = emx_strrchr                         @1022
     1052    strspn                        = emx_strspn                          @1023
     1053    strstr                        = emx_strstr                          @1024
     1054    strtol                        = emx_strtol                          @1025
     1055    strtoul                       = emx_strtoul                         @1026
     1056    swprintf                      = NTDLL_swprintf                      @1027
     1057    tan                           = emx_tan                             @1028
     1058    tolower                       = emx_tolower                         @1029
     1059    toupper                       = emx_toupper                         @1030
     1060    towlower                      = NTDLL_towlower                      @1031
     1061    towupper                      = NTDLL_towupper                      @1032
     1062    vsprintf                      = emx_vsprintf                        @1033
     1063
     1064    wcscat                        = NTDLL_wcscat                        @1034
     1065    wcschr                        = NTDLL_wcschr                        @1035
     1066    wcscmp                        = NTDLL_wcscmp                        @1036
     1067    wcscpy                        = NTDLL_wcscpy                        @1037
     1068    wcscspn                       = NTDLL_wcscspn                       @1038
     1069    wcslen                        = NTDLL_wcslen                        @1039
     1070    wcsncat                       = NTDLL_wcsncat                       @1040
     1071    wcsncmp                       = NTDLL_wcsncmp                       @1041
     1072    wcsncpy                       = NTDLL_wcsncpy                       @1042
     1073    wcspbrk                       = NTDLL_wcspbrk                       @1043
     1074    wcsrchr                       = NTDLL_wcsrchr                       @1044
     1075    wcsspn                        = NTDLL_wcsspn                        @1045
     1076    wcsstr                        = NTDLL_wcsstr                        @1046
     1077    wcstok                        = NTDLL_wcstok                        @1050
     1078    wcstol                        = NTDLL_wcstol                        @1047
     1079    wcstombs                      = NTDLL_wcstombs                      @1048
     1080    wcstoul                       = NTDLL_wcstoul                       @1049
    11581081
    11591082;   Not found in NTDLL-SP6:
    1160     DebugBreak                    = __regs_DebugBreak                @1200
    1161     NtPowerInformation            = NtPowerInformation              @1201
     1083    DebugBreak                    = ___regs_DebugBreak@4                @1200
     1084    NtPowerInformation            = _NtPowerInformation@20              @1201
    11621085
    11631086; Odin private functions
    1164     RtlpLargeIntegerAdd                                              @1300
    1165 
     1087    _RtlpLargeIntegerAdd@8                                              @1300
     1088
     1089; latest NTDLL additions start from 2000
     1090
     1091    RtlInt64ToUnicodeString      = _RtlInt64ToUnicodeString@16          @2000
     1092    RtlComputeCrc32              = _RtlComputeCrc32@12                  @2001
     1093    RtlDowncaseUnicodeChar       = _RtlDowncaseUnicodeChar@4            @2002
     1094    iswdigit                     = NTDLL_iswdigit                       @2003
     1095    iswlower                     = NTDLL_iswlower                       @2004
     1096    iswspace                     = NTDLL_iswspace                       @2005
     1097    iswxdigit                    = NTDLL_iswxdigit                      @2006
     1098    _alldiv                      = __alldiv@16                          @2007
     1099    _allmul                      = __allmul@16                          @2008
     1100    _ui64toa                                                            @2009
     1101    _ui64tow                                                            @2010
  • trunk/src/NTDLL/ntdll.h

    r9803 r9986  
    1 /* $Id: ntdll.h,v 1.15 2003-02-13 17:17:06 sandervl Exp $ */
     1/* $Id: ntdll.h,v 1.16 2003-04-07 18:40:50 sandervl Exp $ */
    22
    33/*
  • trunk/src/NTDLL/ntdllrsrc.orc

    r9684 r9986  
    1 /* $Id: ntdllrsrc.orc,v 1.2 2003-01-16 15:22:38 sandervl Exp $ */
     1/* $Id: ntdllrsrc.orc,v 1.3 2003-04-07 18:40:50 sandervl Exp $ */
    22
    33#include "winuser.h"
  • trunk/src/NTDLL/reg.c

    r9684 r9986  
    1 /* $Id: reg.c,v 1.3 2003-01-16 15:22:39 sandervl Exp $ */
     1/* $Id: reg.c,v 1.4 2003-04-07 18:40:50 sandervl Exp $ */
    22
    33/*
  • trunk/src/NTDLL/regfunc.asm

    r9684 r9986  
    1 ; $Id: regfunc.asm,v 1.4 2003-01-16 15:22:39 sandervl Exp $
     1; $Id: regfunc.asm,v 1.5 2003-04-07 18:40:51 sandervl Exp $
    22
    33;/*
  • trunk/src/NTDLL/rtl.c

    r9731 r9986  
    1 /* $Id: rtl.c,v 1.4 2003-01-23 20:22:00 sandervl Exp $ */
     1/* $Id: rtl.c,v 1.5 2003-04-07 18:40:51 sandervl Exp $ */
    22
    33/*
     
    1919#include <stdio.h>
    2020#include <string.h>
     21
    2122#include <odinwrap.h>
    2223
     
    3637ODINDEBUGCHANNEL(NTDLL-RTL)
    3738
     39static CRITICAL_SECTION peb_lock = CRITICAL_SECTION_INIT("peb_lock");
     40
     41/* CRC polynomial 0xedb88320 */
     42static const DWORD CRC_table[256] =
     43{
     44    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
     45    0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
     46    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
     47    0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
     48    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
     49    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
     50    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
     51    0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
     52    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
     53    0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
     54    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
     55    0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
     56    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
     57    0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
     58    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
     59    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
     60    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
     61    0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
     62    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
     63    0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
     64    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
     65    0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
     66    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
     67    0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
     68    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
     69    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
     70    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
     71    0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
     72    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
     73    0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
     74    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
     75    0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
     76    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
     77    0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
     78    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
     79    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
     80    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
     81    0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
     82    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
     83    0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
     84    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
     85    0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
     86    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
     87};
     88
    3889
    3990/*
     
    54105void WINAPI RtlInitializeResource(LPRTL_RWLOCK rwl)
    55106{
    56   dprintf(("NTDLL: RtlInitializeResource(%08xh)\n",
    57            rwl));
     107  dprintf(("NTDLL: RtlInitializeResource(%08xh)\n", rwl));
    58108
    59109  if( rwl )
     
    281331VOID WINAPI RtlAcquirePebLock(void)
    282332{
    283   dprintf(("NTDLL: RtlAcquirePebLock() not implemented.\n"));
    284 
    285   /* enter critical section ? */
     333  EnterCriticalSection( &peb_lock );
    286334}
    287335
     
    292340VOID WINAPI RtlReleasePebLock(void)
    293341{
    294   dprintf(("NTDLL: RtlReleasePebLock() not implemented.\n"));
    295 
    296   /* leave critical section ? */
    297 }
    298 
    299 
    300 /******************************************************************************
    301  *  RtlIntegerToChar                     [NTDLL]
    302  */
    303 DWORD WINAPI RtlIntegerToChar(DWORD x1,
    304                               DWORD x2,
    305                               DWORD x3,
    306                               DWORD x4)
    307 {
    308   dprintf(("NTDLL: RtlIntegerToChar(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
    309            x1,
    310            x2,
    311            x3,
    312            x4));
    313 
    314   return 0;
    315 }
    316 
    317 
    318 /******************************************************************************
    319  *  RtlSetEnvironmentVariable               [NTDLL]
    320  */
    321 DWORD WINAPI RtlSetEnvironmentVariable(DWORD           x1,
    322                                        PUNICODE_STRING key,
    323                                        PUNICODE_STRING val)
    324 {
    325   dprintf(("NTDLL: RtlSetEnvironmentVariable(%08xh,%08xh,%08xh) not implemented.\n",
    326            x1,
    327            key,
    328            val));
    329 
    330   return 0;
    331 }
    332 
    333 
    334 /******************************************************************************
    335  *  RtlNewSecurityObject                    [NTDLL]
    336  */
    337 DWORD WINAPI RtlNewSecurityObject(DWORD x1,
    338                                   DWORD x2,
    339                                   DWORD x3,
    340                                   DWORD x4,
    341                                   DWORD x5,
    342                                   DWORD x6)
    343 {
    344   dprintf(("NTDLL: RtlNewSecurityObject(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
    345            x1,
    346            x2,
    347            x3,
    348            x4,
    349            x5,
    350            x6));
    351 
    352   return 0;
    353 }
    354 
    355 
    356 /******************************************************************************
    357  *  RtlDeleteSecurityObject                 [NTDLL]
    358  */
    359 DWORD WINAPI RtlDeleteSecurityObject(DWORD x1)
    360 {
    361   dprintf(("NTDLL: RtlDeleteSecurityObject(%08xh) not implemented.\n",
    362            x1));
    363 
    364   return 0;
    365 }
    366 
     342  LeaveCriticalSection( &peb_lock );
     343}
     344
     345/******************************************************************************
     346 *  RtlSetEnvironmentVariable           [NTDLL.@]
     347 */
     348DWORD WINAPI RtlSetEnvironmentVariable(DWORD x1,PUNICODE_STRING key,PUNICODE_STRING val) {
     349        FIXME("(0x%08lx,%s,%s),stub!\n",x1,debugstr_w(key->Buffer),debugstr_w(val->Buffer));
     350        return 0;
     351}
     352
     353/******************************************************************************
     354 *  RtlNewSecurityObject                [NTDLL.@]
     355 */
     356DWORD WINAPI RtlNewSecurityObject(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) {
     357        FIXME("(0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4,x5,x6);
     358        return 0;
     359}
     360
     361/******************************************************************************
     362 *  RtlDeleteSecurityObject             [NTDLL.@]
     363 */
     364DWORD WINAPI RtlDeleteSecurityObject(DWORD x1) {
     365        FIXME("(0x%08lx),stub!\n",x1);
     366        return 0;
     367}
    367368
    368369/**************************************************************************
    369  *                 RtlNormalizeProcessParams      [NTDLL.441]
     370 *                 RtlNormalizeProcessParams            [NTDLL.@]
    370371 */
    371372LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x)
    372373{
    373   dprintf(("NTDLL: RtlNormalizeProcessParams(%08xh) not implemented.\n",
    374            x));
    375 
    376   return x;
    377 }
    378 
    379 
     374    FIXME("(%p), stub\n",x);
     375    return x;
     376}
    380377
    381378/**************************************************************************
    382  *                 RtlGetNtProductType         [NTDLL.390]
     379 *                 RtlGetNtProductType                  [NTDLL.@]
    383380 */
    384381BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type)
    385382{
    386   dprintf(("NTDLL: RtlGetNtProductType(%08xh) not correctly implemented.\n",
    387            type));
    388 
    389   *type=3; /* dunno. 1 for client, 3 for server? */
    390   return 1;
    391 }
    392 
     383    FIXME("(%p): stub\n", type);
     384    *type=3; /* dunno. 1 for client, 3 for server? */
     385    return 1;
     386}
    393387
    394388
     
    676670  return 277;
    677671}
     672
     673/*********************************************************************
     674 *                  RtlComputeCrc32   [NTDLL.@]
     675 *
     676 * Calculate the CRC32 checksum of a block of bytes
     677 *
     678 * PARAMS
     679 *  dwInitial [I] Initial CRC value
     680 *  pData     [I] Data block
     681 *  iLen      [I] Length of the byte block
     682 *
     683 * RETURNS
     684 *  The cumulative CRC32 of dwInitial and iLen bytes of the pData block.
     685 */
     686DWORD WINAPI RtlComputeCrc32(DWORD dwInitial, PBYTE pData, INT iLen)
     687{
     688  DWORD crc = ~dwInitial;
     689
     690  TRACE("(%ld,%p,%d)\n", dwInitial, pData, iLen);
     691
     692  while (iLen > 0)
     693  {
     694    crc = CRC_table[(crc ^ *pData) & 0xff] ^ (crc >> 8);
     695    pData++;
     696    iLen--;
     697  }
     698  return ~crc;
     699}
  • trunk/src/NTDLL/rtlbitmap.c

    r9733 r9986  
    2828 *  Note that to avoid unexpected behaviour, the size of a bitmap should be set
    2929 *  to a multiple of 32.
    30 
    31  */
    32 #include <winbase.h>
     30 */
     31#include <stdlib.h>
     32#include <string.h>
     33#include "windef.h"
    3334#include "winternl.h"
    3435#include "wine/debug.h"
     
    5051
    5152/* Last set bit in a nibble; used for determining most significant bit */
    52 static const BYTE NTDLL_mostSignificant[16] = {
    53   0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
     53static const signed char NTDLL_mostSignificant[16] = {
     54  -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
    5455};
    5556
     
    568569 * Find the most significant bit in a 64 bit integer.
    569570 *
    570  * PARAMS
    571  *  lpBits  [I] Bitmap pointer
    572  *  ulStart [I] First bit to search from
    573  *
    574571 * RETURNS
    575572 *  The position of the most significant bit.
     
    577574CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG ulLong)
    578575{
    579   LONG lCount = 64;
    580   LPBYTE lpOut = (LPBYTE)&ulLong + 7;
    581 
    582   TRACE("(%lld)\n", ulLong);
    583 
    584   if (!(ulLong & 0xffffffff00000000ul))
    585   {
    586     lpOut -= 4;
    587     lCount -= 32;
    588   }
    589 
    590   for (; lCount > 0; lCount -= 8)
    591   {
    592     if (*lpOut)
    593     {
    594       if (*lpOut & 0x0f)
    595         return lCount - 8 + NTDLL_mostSignificant[*lpOut & 0x0f];
    596       return lCount - 4 + NTDLL_mostSignificant[*lpOut >> 4];
    597     }
    598     lpOut--;
    599   }
    600   return -1;
     576    signed char ret = 32;
     577    DWORD dw;
     578
     579    if (!(dw = (ulLong >> 32)))
     580    {
     581        ret = 0;
     582        dw = (DWORD)ulLong;
     583    }
     584    if (dw & 0xffff0000)
     585    {
     586        dw >>= 16;
     587        ret += 16;
     588    }
     589    if (dw & 0xff00)
     590    {
     591        dw >>= 8;
     592        ret += 8;
     593    }
     594    if (dw & 0xf0)
     595    {
     596        dw >>= 4;
     597        ret += 4;
     598    }
     599    return ret + NTDLL_mostSignificant[dw];
    601600}
    602601
     
    606605 * Find the least significant bit in a 64 bit integer.
    607606 *
    608  * PARAMS
    609  *  lpBits  [I] Bitmap pointer
    610  *  ulStart [I] First bit to search from
    611  *
    612607 * RETURNS
    613608 *  The position of the least significant bit.
     
    615610CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG ulLong)
    616611{
    617   ULONG ulCount = 0;
    618   LPBYTE lpOut = (LPBYTE)&ulLong;
    619 
    620   TRACE("(%lld)\n", ulLong);
    621 
    622   if (!(ulLong & 0xffffffff))
    623   {
    624     lpOut += 4;
    625     ulCount = 32;
    626   }
    627 
    628   for (; ulCount < 64; ulCount += 8)
    629   {
    630     if (*lpOut)
    631     {
    632       if (*lpOut & 0x0f)
    633         return ulCount + NTDLL_leastSignificant[*lpOut & 0x0f];
    634       return ulCount + 4 + NTDLL_leastSignificant[*lpOut >> 4];
    635     }
    636     lpOut++;
    637   }
    638   return -1;
     612    signed char ret = 0;
     613    DWORD dw;
     614
     615    if (!(dw = (DWORD)ulLong))
     616    {
     617        ret = 32;
     618        if (!(dw = ulLong >> 32)) return -1;
     619    }
     620    if (!(dw & 0xffff))
     621    {
     622        dw >>= 16;
     623        ret += 16;
     624    }
     625    if (!(dw & 0xff))
     626    {
     627        dw >>= 8;
     628        ret += 8;
     629    }
     630    if (!(dw & 0x0f))
     631    {
     632        dw >>= 4;
     633        ret += 4;
     634    }
     635    return ret + NTDLL_leastSignificant[dw & 0x0f];
    639636}
    640637
     
    642639 * NTDLL_RunSortFn
    643640 *
    644  * Internal helper: qsort comparason function for RTL_BITMAP_RUN arrays
     641 * Internal helper: qsort comparison function for RTL_BITMAP_RUN arrays
    645642 */
    646643static int NTDLL_RunSortFn(const void *lhs, const void *rhs)
  • trunk/src/NTDLL/rtlstr.c

    r9684 r9986  
    3030#include "wine/unicode.h"
    3131#include "wine/debug.h"
     32#include "winnt.h"
    3233
    3334WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
     
    155156    memcpy( target->Buffer, src, len );
    156157    target->MaximumLength = len;
    157     target->Length = len - 2;
     158    target->Length = len - sizeof(WCHAR);
    158159    return TRUE;
    159160}
     
    336337}
    337338
     339/**************************************************************************
     340 *      RtlEqualComputerName   (NTDLL.@)
     341 *
     342 * Determine if two computer names are the same.
     343 *
     344 * PARAMS
     345 *  left  [I] First computer name
     346 *  right [I] Second computer name
     347 *
     348 * RETURNS
     349 *  0 if the names are equal, non-zero otherwise.
     350 *
     351 * NOTES
     352 *  The comparason is case insensitive.
     353 */
     354NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING *left,
     355                                     const UNICODE_STRING *right)
     356{
     357    NTSTATUS ret;
     358    STRING upLeft, upRight;
     359
     360    if (!(ret = RtlUpcaseUnicodeStringToOemString( &upLeft, left, TRUE )))
     361    {
     362       if (!(ret = RtlUpcaseUnicodeStringToOemString( &upRight, right, TRUE )))
     363       {
     364         ret = RtlEqualString( &upLeft, &upRight, FALSE );
     365         RtlFreeOemString( &upRight );
     366       }
     367       RtlFreeOemString( &upLeft );
     368    }
     369    return ret;
     370}
     371
     372/**************************************************************************
     373 *      RtlEqualDomainName   (NTDLL.@)
     374 *
     375 * Determine if two domain names are the same.
     376 *
     377 * PARAMS
     378 *  left  [I] First domain name
     379 *  right [I] Second domain name
     380 *
     381 * RETURNS
     382 *  0 if the names are equal, non-zero otherwise.
     383 *
     384 * NOTES
     385 *  The comparason is case insensitive.
     386 */
     387NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING *left,
     388                                   const UNICODE_STRING *right)
     389{
     390    return RtlEqualComputerName(left, right);
     391}
     392
    338393
    339394/*
     
    527582
    528583/**************************************************************************
     584 *      RtlUpperChar   (NTDLL.@)
     585 *
     586 * Converts an Ascii character to uppercase.
     587 *
     588 * PARAMS
     589 *  ch [I] Character to convert
     590 *
     591 * RETURNS
     592 *  The uppercase character value.
     593 *
     594 * NOTES
     595 *  For the input characters from 'a' .. 'z' it returns 'A' .. 'Z'.
     596 *  All other input characters are returned unchanged. The locale and
     597 *  multibyte characters are not taken into account (as native DLL).
     598 */
     599CHAR WINAPI RtlUpperChar( CHAR ch )
     600{
     601    if (ch >= 'a' && ch <= 'z') {
     602        return ch - 'a' + 'A';
     603    } else {
     604        return ch;
     605    } /* if */
     606}
     607
     608/**************************************************************************
    529609 *      RtlUpperString   (NTDLL.@)
     610 *
     611 * Converts an Ascii string to uppercase.
     612 *
     613 * PARAMS
     614 *  dst [O] Destination for converted string
     615 *  src [I] Source string to convert
     616 *
     617 * RETURNS
     618 *  Nothing.
     619 *
     620 * NOTES
     621 *  For the src characters from 'a' .. 'z' it assigns 'A' .. 'Z' to dst.
     622 *  All other src characters are copied unchanged to dst. The locale and
     623 *  multibyte characters are not taken into account (as native DLL).
     624 *  The number of character copied is the minimum of src->Length and
     625 *  the dst->MaximumLength.
    530626 */
    531627void WINAPI RtlUpperString( STRING *dst, const STRING *src )
     
    533629    unsigned int i, len = min(src->Length, dst->MaximumLength);
    534630
    535     for (i = 0; i < len; i++) dst->Buffer[i] = toupper(src->Buffer[i]);
     631    for (i = 0; i < len; i++) dst->Buffer[i] = RtlUpperChar(src->Buffer[i]);
    536632    dst->Length = len;
    537633}
    538634
     635
     636/**************************************************************************
     637 *      RtlUpcaseUnicodeChar   (NTDLL.@)
     638 *
     639 * Converts an Unicode character to uppercase.
     640 *
     641 * PARAMS
     642 *  wch [I] Character to convert
     643 *
     644 * RETURNS
     645 *  The uppercase character value.
     646 */
     647WCHAR WINAPI RtlUpcaseUnicodeChar( WCHAR wch )
     648{
     649    return toupperW(wch);
     650}
     651
     652/**************************************************************************
     653 *      RtlDowncaseUnicodeChar   (NTDLL.@)
     654 *
     655 * Converts an Unicode character to lowercase.
     656 *
     657 * PARAMS
     658 *  wch [I] Character to convert
     659 *
     660 * RETURNS
     661 *  The lowercase character value.
     662 */
     663WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR wch)
     664{
     665    return tolowerW(wch);
     666}
    539667
    540668/**************************************************************************
     
    564692}
    565693
     694
     695/**************************************************************************
     696 *      RtlDowncaseUnicodeString   (NTDLL.@)
     697 *
     698 * Converts an Unicode string to lowercase.
     699 *
     700 * PARAMS
     701 *  dest    [O] Destination for converted string
     702 *  src     [I] Source string to convert
     703 *  doalloc [I] TRUE=Allocate a buffer for dest if it doesn't have one
     704 *
     705 * RETURNS
     706 *  Success: STATUS_SUCCESS. dest contains the converted string.
     707 *  Failure: STATUS_NO_MEMORY, if doalloc is TRUE and memory allocation fails, or
     708 *           STATUS_BUFFER_OVERFLOW, if doalloc is FALSE and dest is too small.
     709 *
     710 * NOTES
     711 *  dest is never NUL terminated because it may be equal to src, and src
     712 *  might not be NUL terminated. dest->Length is only set upon success.
     713 */
     714NTSTATUS WINAPI RtlDowncaseUnicodeString(
     715        UNICODE_STRING *dest,
     716        const UNICODE_STRING *src,
     717        BOOLEAN doalloc)
     718{
     719    DWORD i;
     720    DWORD len = src->Length;
     721
     722    if (doalloc) {
     723        dest->MaximumLength = len;
     724        if (!(dest->Buffer = RtlAllocateHeap( GetProcessHeap(), 0, len ))) {
     725            return STATUS_NO_MEMORY;
     726        } /* if */
     727    } else if (len > dest->MaximumLength) {
     728        return STATUS_BUFFER_OVERFLOW;
     729    } /* if */
     730
     731    for (i = 0; i < len/sizeof(WCHAR); i++) {
     732        dest->Buffer[i] = tolowerW(src->Buffer[i]);
     733    } /* for */
     734    dest->Length = len;
     735    return STATUS_SUCCESS;
     736}
    566737
    567738/**************************************************************************
     
    788959{
    789960    unsigned int len = src->Length + dst->Length;
     961    if (src->Length == 0) return STATUS_SUCCESS;
    790962    if (len > dst->MaximumLength) return STATUS_BUFFER_TOO_SMALL;
    791963    memcpy( dst->Buffer + dst->Length/sizeof(WCHAR), src->Buffer, src->Length );
     
    8481020
    8491021/**************************************************************************
    850  *      RtlUnicodeStringToInteger (NTDLL.@)
    851  *
    852  *      Convert a text buffer into its integer form
     1022 *      RtlCharToInteger   (NTDLL.@)
     1023 *
     1024 * Converts a character string into its integer equivalent.
     1025 *
     1026 * RETURNS
     1027 *  Success: STATUS_SUCCESS. value contains the converted number
     1028 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     1029 *           STATUS_ACCESS_VIOLATION, if value is NULL.
     1030 *
     1031 * NOTES
     1032 *  For base 0 it uses 10 as base and the string should be in the format
     1033 *      "{whitespace} [+|-] [0[x|o|b]] {digits}".
     1034 *  For other bases the string should be in the format
     1035 *      "{whitespace} [+|-] {digits}".
     1036 *  No check is made for value overflow, only the lower 32 bits are assigned.
     1037 *  If str is NULL it crashes, as the native function does.
     1038 *
     1039 * DIFFERENCES
     1040 *  This function does not read garbage behind '\0' as the native version does.
     1041 */
     1042NTSTATUS WINAPI RtlCharToInteger(
     1043    PCSZ str,      /* [I] '\0' terminated single-byte string containing a number */
     1044    ULONG base,    /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     1045    ULONG *value)  /* [O] Destination for the converted value */
     1046{
     1047    CHAR chCurrent;
     1048    int digit;
     1049    ULONG RunningTotal = 0;
     1050    char bMinus = 0;
     1051
     1052    while (*str != '\0' && *str <= ' ') {
     1053        str++;
     1054    } /* while */
     1055
     1056    if (*str == '+') {
     1057        str++;
     1058    } else if (*str == '-') {
     1059        bMinus = 1;
     1060        str++;
     1061    } /* if */
     1062
     1063    if (base == 0) {
     1064        base = 10;
     1065        if (str[0] == '0') {
     1066            if (str[1] == 'b') {
     1067                str += 2;
     1068                base = 2;
     1069            } else if (str[1] == 'o') {
     1070                str += 2;
     1071                base = 8;
     1072            } else if (str[1] == 'x') {
     1073                str += 2;
     1074                base = 16;
     1075            } /* if */
     1076        } /* if */
     1077    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     1078        return STATUS_INVALID_PARAMETER;
     1079    } /* if */
     1080
     1081    if (value == NULL) {
     1082        return STATUS_ACCESS_VIOLATION;
     1083    } /* if */
     1084
     1085    while (*str != '\0') {
     1086        chCurrent = *str;
     1087        if (chCurrent >= '0' && chCurrent <= '9') {
     1088            digit = chCurrent - '0';
     1089        } else if (chCurrent >= 'A' && chCurrent <= 'Z') {
     1090            digit = chCurrent - 'A' + 10;
     1091        } else if (chCurrent >= 'a' && chCurrent <= 'z') {
     1092            digit = chCurrent - 'a' + 10;
     1093        } else {
     1094            digit = -1;
     1095        } /* if */
     1096        if (digit < 0 || digit >= base) {
     1097            *value = bMinus ? -RunningTotal : RunningTotal;
     1098            return STATUS_SUCCESS;
     1099        } /* if */
     1100
     1101        RunningTotal = RunningTotal * base + digit;
     1102        str++;
     1103    } /* while */
     1104
     1105    *value = bMinus ? -RunningTotal : RunningTotal;
     1106    return STATUS_SUCCESS;
     1107}
     1108
     1109/**************************************************************************
     1110 *      RtlIntegerToChar   (NTDLL.@)
     1111 *
     1112 * Converts an unsigned integer to a character string.
     1113 *
     1114 * RETURNS
     1115 *  Success: STATUS_SUCCESS. str contains the converted number
     1116 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     1117 *           STATUS_BUFFER_OVERFLOW, if str would be larger than length.
     1118 *           STATUS_ACCESS_VIOLATION, if str is NULL.
     1119 *
     1120 * NOTES
     1121 *  Instead of base 0 it uses 10 as base.
     1122 *  Writes at most length characters to the string str.
     1123 *  Str is '\0' terminated when length allowes it.
     1124 *  When str fits exactly in length characters the '\0' is ommitted.
     1125 */
     1126NTSTATUS WINAPI RtlIntegerToChar(
     1127    ULONG value,   /* [I] Value to be converted */
     1128    ULONG base,    /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     1129    ULONG length,  /* [I] Length of the str buffer in bytes */
     1130    PCHAR str)     /* [O] Destination for the converted value */
     1131{
     1132    CHAR buffer[33];
     1133    PCHAR pos;
     1134    CHAR digit;
     1135    ULONG len;
     1136
     1137    if (base == 0) {
     1138        base = 10;
     1139    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     1140        return STATUS_INVALID_PARAMETER;
     1141    } /* if */
     1142
     1143    pos = &buffer[32];
     1144    *pos = '\0';
     1145
     1146    do {
     1147        pos--;
     1148        digit = value % base;
     1149        value = value / base;
     1150        if (digit < 10) {
     1151            *pos = '0' + digit;
     1152        } else {
     1153            *pos = 'A' + digit - 10;
     1154        } /* if */
     1155    } while (value != 0L);
     1156
     1157    len = &buffer[32] - pos;
     1158    if (len > length) {
     1159        return STATUS_BUFFER_OVERFLOW;
     1160    } else if (str == NULL) {
     1161        return STATUS_ACCESS_VIOLATION;
     1162    } else if (len == length) {
     1163        memcpy(str, pos, len);
     1164    } else {
     1165        memcpy(str, pos, len + 1);
     1166    } /* if */
     1167    return STATUS_SUCCESS;
     1168}
     1169
     1170/**************************************************************************
     1171 *      RtlUnicodeStringToInteger (NTDLL.@)
     1172 *
     1173 * Converts an unicode string into its integer equivalent.
     1174 *
     1175 * RETURNS
     1176 *  Success: STATUS_SUCCESS. value contains the converted number
     1177 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     1178 *           STATUS_ACCESS_VIOLATION, if value is NULL.
     1179 *
     1180 * NOTES
     1181 *  For base 0 it uses 10 as base and the string should be in the format
     1182 *      "{whitespace} [+|-] [0[x|o|b]] {digits}".
     1183 *  For other bases the string should be in the format
     1184 *      "{whitespace} [+|-] {digits}".
     1185 *  No check is made for value overflow, only the lower 32 bits are assigned.
     1186 *  If str is NULL it crashes, as the native function does.
     1187 *
     1188 * DIFFERENCES
     1189 *  This function does not read garbage on string length 0 as the native
     1190 *  version does.
    8531191 */
    8541192NTSTATUS WINAPI RtlUnicodeStringToInteger(
    855         const UNICODE_STRING *str,
    856         int base,
    857         int * pdest)
    858 {
    859         LPWSTR lpwstr = str->Buffer;
    860         WCHAR wchCurrent = 0;
    861         int CharsParsed = 0;
    862         int RunningTotal = 0;
    863         char bMinus = 0;
    864 
    865         /* no checking done on UNICODE_STRING and int* in native DLL either */
    866         TRACE("(%p, %d, %p)", str, base, pdest);
    867 
    868         switch (base)
    869         {
    870                 case 0:
    871                         base = 10;
    872                         break;
    873                 case 2:
    874                 case 8:
    875                 case 10:
    876                 case 16:
    877                         break;
    878                 default:
    879                         return STATUS_INVALID_PARAMETER;
    880         }
    881 
    882         if ((str->Length) >= 4 && (base == 10) && (*lpwstr == '0') && (*(lpwstr+1) == 'x'))
    883         {
    884                 lpwstr+=2;
     1193    const UNICODE_STRING *str, /* [I] Unicode string to be converted */
     1194    ULONG base,                /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     1195    ULONG *value)              /* [O] Destination for the converted value */
     1196{
     1197    LPWSTR lpwstr = str->Buffer;
     1198    USHORT CharsRemaining = str->Length / sizeof(WCHAR);
     1199    WCHAR wchCurrent;
     1200    int digit;
     1201    ULONG RunningTotal = 0;
     1202    char bMinus = 0;
     1203
     1204    while (CharsRemaining >= 1 && *lpwstr <= ' ') {
     1205        lpwstr++;
     1206        CharsRemaining--;
     1207    } /* while */
     1208
     1209    if (CharsRemaining >= 1) {
     1210        if (*lpwstr == '+') {
     1211            lpwstr++;
     1212            CharsRemaining--;
     1213        } else if (*lpwstr == '-') {
     1214            bMinus = 1;
     1215            lpwstr++;
     1216            CharsRemaining--;
     1217        } /* if */
     1218    } /* if */
     1219
     1220    if (base == 0) {
     1221        base = 10;
     1222        if (CharsRemaining >= 2 && lpwstr[0] == '0') {
     1223            if (lpwstr[1] == 'b') {
     1224                lpwstr += 2;
     1225                CharsRemaining -= 2;
     1226                base = 2;
     1227            } else if (lpwstr[1] == 'o') {
     1228                lpwstr += 2;
     1229                CharsRemaining -= 2;
     1230                base = 8;
     1231            } else if (lpwstr[1] == 'x') {
     1232                lpwstr += 2;
     1233                CharsRemaining -= 2;
    8851234                base = 16;
    886         }
    887 
    888         *pdest = 0;
    889         for (; (CharsParsed*sizeof(WCHAR) < str->Length) && (*lpwstr <= ' '); lpwstr++)
    890                 CharsParsed++;
    891 
    892         if (*lpwstr == '+')
    893                 lpwstr++;
    894         else if (*lpwstr == '-')
    895         {
    896                 bMinus = 1;
    897                 lpwstr++;
    898         }
    899 
    900         for (; (CharsParsed*sizeof(WCHAR) < str->Length) && (*lpwstr != '\0'); lpwstr++)
    901         {
    902                 CharsParsed++;
    903                 wchCurrent = *lpwstr;
    904                 if (wchCurrent >= 'A')
    905                         wchCurrent = '0' + 10 + wchCurrent - 'A';
    906                 if ((wchCurrent - '0') >= base || wchCurrent < '0')
    907                 {
    908                         *pdest = bMinus ? -RunningTotal: RunningTotal;
    909                         return STATUS_SUCCESS;
    910                 }
    911                 /*
    912                  * increase significance of previous digits each time
    913                  * we find another valid one and add on this valid one
    914                  */
    915                 RunningTotal = wchCurrent - '0' + RunningTotal * base;
    916         }
    917 
    918         *pdest = bMinus ? -RunningTotal : RunningTotal;
    919         return STATUS_SUCCESS;
    920 }
     1235            } /* if */
     1236        } /* if */
     1237    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     1238        return STATUS_INVALID_PARAMETER;
     1239    } /* if */
     1240
     1241    if (value == NULL) {
     1242        return STATUS_ACCESS_VIOLATION;
     1243    } /* if */
     1244
     1245    while (CharsRemaining >= 1) {
     1246        wchCurrent = *lpwstr;
     1247        if (wchCurrent >= '0' && wchCurrent <= '9') {
     1248            digit = wchCurrent - '0';
     1249        } else if (wchCurrent >= 'A' && wchCurrent <= 'Z') {
     1250            digit = wchCurrent - 'A' + 10;
     1251        } else if (wchCurrent >= 'a' && wchCurrent <= 'z') {
     1252            digit = wchCurrent - 'a' + 10;
     1253        } else {
     1254            digit = -1;
     1255        } /* if */
     1256        if (digit < 0 || digit >= base) {
     1257            *value = bMinus ? -RunningTotal : RunningTotal;
     1258            return STATUS_SUCCESS;
     1259        } /* if */
     1260
     1261        RunningTotal = RunningTotal * base + digit;
     1262        lpwstr++;
     1263        CharsRemaining--;
     1264    } /* while */
     1265
     1266    *value = bMinus ? -RunningTotal : RunningTotal;
     1267    return STATUS_SUCCESS;
     1268}
     1269
     1270/**************************************************************************
     1271 *      RtlIntegerToUnicodeString (NTDLL.@)
     1272 *
     1273 * Converts an unsigned integer to a '\0' terminated unicode string.
     1274 *
     1275 * RETURNS
     1276 *  Success: STATUS_SUCCESS. str contains the converted number
     1277 *  Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16.
     1278 *           STATUS_BUFFER_OVERFLOW, if str is too small to hold the string
     1279 *                  (with the '\0' termination). In this case str->Length
     1280 *                  is set to the length, the string would have (which can
     1281 *                  be larger than the MaximumLength).
     1282 *
     1283 * NOTES
     1284 *  Instead of base 0 it uses 10 as base.
     1285 *  If str is NULL it crashes, as the native function does.
     1286 *
     1287 * DIFFERENCES
     1288 *  Do not return STATUS_BUFFER_OVERFLOW when the string is long enough.
     1289 *  The native function does this when the string would be longer than 16
     1290 *  characters even when the string parameter is long enough.
     1291 */
     1292NTSTATUS WINAPI RtlIntegerToUnicodeString(
     1293    ULONG value,         /* [I] Value to be converted */
     1294    ULONG base,          /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
     1295    UNICODE_STRING *str) /* [O] Destination for the converted value */
     1296{
     1297    WCHAR buffer[33];
     1298    PWCHAR pos;
     1299    WCHAR digit;
     1300
     1301    if (base == 0) {
     1302        base = 10;
     1303    } else if (base != 2 && base != 8 && base != 10 && base != 16) {
     1304        return STATUS_INVALID_PARAMETER;
     1305    } /* if */
     1306
     1307    pos = &buffer[32];
     1308    *pos = '\0';
     1309
     1310    do {
     1311        pos--;
     1312        digit = value % base;
     1313        value = value / base;
     1314        if (digit < 10) {
     1315            *pos = '0' + digit;
     1316        } else {
     1317            *pos = 'A' + digit - 10;
     1318        } /* if */
     1319    } while (value != 0L);
     1320
     1321    str->Length = (&buffer[32] - pos) * sizeof(WCHAR);
     1322    if (str->Length >= str->MaximumLength) {
     1323        return STATUS_BUFFER_OVERFLOW;
     1324    } else {
     1325        memcpy(str->Buffer, pos, str->Length + sizeof(WCHAR));
     1326    } /* if */
     1327    return STATUS_SUCCESS;
     1328}
  • trunk/src/NTDLL/sec.c

    r9684 r9986  
    1 /* $Id: sec.c,v 1.3 2003-01-16 15:22:40 sandervl Exp $ */
     1/* $Id: sec.c,v 1.4 2003-04-07 18:40:52 sandervl Exp $ */
    22
    33/*
     
    1616#include <stdlib.h>
    1717#include <string.h>
     18
    1819#include <time.h>
    1920#include <ctype.h>
  • trunk/src/NTDLL/string.c

    r9684 r9986  
    2525#include <string.h>
    2626
     27
    2728#include "windef.h"
    2829
     
    3031 *                  _memicmp   (NTDLL.@)
    3132 */
    32 #ifdef __WIN32OS2__
    33 INT __cdecl NTDLL_memicmp( LPCSTR s1, LPCSTR s2, DWORD len )
    34 #else
    35 INT __cdecl _memicmp( LPCSTR s1, LPCSTR s2, DWORD len )
    36 #endif
     33INT __cdecl NTDLL__memicmp( LPCSTR s1, LPCSTR s2, DWORD len )
    3734{
    3835    int ret = 0;
     
    7370 */
    7471#ifdef __WIN32OS2__
    75 LPSTR  __cdecl NTDLL_ultoa( unsigned long x, LPSTR buf, INT radix )
     72LPSTR  __cdecl NTDLL_ultoa( unsigned long value, LPSTR str, INT radix )
    7673#else
    77 LPSTR  __cdecl _ultoa( unsigned long x, LPSTR buf, INT radix )
     74LPSTR  __cdecl _ultoa( unsigned long value, LPSTR str, INT radix )
    7875#endif
    7976{
    80     char buffer[32], *p;
    81 
    82     p = buffer + sizeof(buffer);
    83     *--p = 0;
    84     do
    85     {
    86         int rem = x % radix;
    87         *--p = (rem <= 9) ? rem + '0' : rem + 'a' - 10;
    88         x /= radix;
    89     } while (x);
    90     strcpy( buf, p );
    91     return buf;
     77    char buffer[33];
     78    char *pos;
     79    int digit;
     80
     81    pos = &buffer[32];
     82    *pos = '\0';
     83
     84    do {
     85        digit = value % radix;
     86        value = value / radix;
     87        if (digit < 10) {
     88            *--pos = '0' + digit;
     89        } else {
     90            *--pos = 'a' + digit - 10;
     91        } /* if */
     92    } while (value != 0L);
     93
     94    memcpy(str, pos, &buffer[32] - pos + 1);
     95    return str;
    9296}
    9397
     
    9599/*********************************************************************
    96100 *                  _ltoa   (NTDLL.@)
    97  */
     101 *
     102 * RETURNS
     103 *  Always returns str.
     104 *
     105 * NOTES
     106 *  Converts value to a '\0' terminated string which is copied to str.
     107 *  The maximum length of the copied str is 33 bytes. If radix
     108 *  is 10 and value is negative, the value is converted with sign.
     109 *  Does not check if radix is in the range of 2 to 36.
     110 *  If str is NULL it crashes, as the native function does.
     111 */
     112
    98113#ifdef __WIN32OS2__
    99 LPSTR  __cdecl NTDLL_ltoa( long x, LPSTR buf, INT radix )
     114LPSTR  __cdecl NTDLL_ltoa( long value, LPSTR str, INT radix )
    100115#else
    101 LPSTR  __cdecl _ltoa( long x, LPSTR buf, INT radix )
     116LPSTR  __cdecl _ltoa( long value, LPSTR str, INT radix )
    102117#endif
    103118{
    104     LPSTR p = buf;
    105     if (x < 0)
    106     {
    107         *p++ = '-';
    108         x = -x;
    109     }
    110     _ultoa( x, p, radix );
    111     return buf;
     119    unsigned long val;
     120    int negative;
     121    char buffer[33];
     122    char *pos;
     123    int digit;
     124
     125    if (value < 0 && radix == 10) {
     126        negative = 1;
     127        val = -value;
     128    } else {
     129        negative = 0;
     130        val = value;
     131    } /* if */
     132
     133    pos = &buffer[32];
     134    *pos = '\0';
     135
     136    do {
     137        digit = val % radix;
     138        val = val / radix;
     139        if (digit < 10) {
     140            *--pos = '0' + digit;
     141        } else {
     142            *--pos = 'a' + digit - 10;
     143        } /* if */
     144    } while (val != 0L);
     145
     146    if (negative) {
     147        *--pos = '-';
     148    } /* if */
     149
     150    memcpy(str, pos, &buffer[32] - pos + 1);
     151    return str;
    112152}
    113153
     
    122162#endif
    123163{
    124     return _ltoa( x, buf, radix );
     164    return NTDLL_ltoa( x, buf, radix );
     165}
     166
     167/*********************************************************************
     168 *      _ui64toa   (NTDLL.@)
     169 *
     170 * Converts a large unsigned integer to a string.
     171 *
     172 * Assigns a '\0' terminated string to str and returns str.
     173 * Does not check if radix is in the range of 2 to 36 (as native DLL).
     174 * For str == NULL just crashes (as native DLL).
     175 */
     176char * __cdecl _ui64toa( ULONGLONG value, char *str, int radix )
     177{
     178    char buffer[65];
     179    char *pos;
     180    int digit;
     181
     182    pos = &buffer[64];
     183    *pos = '\0';
     184
     185    do {
     186        digit = value % radix;
     187        value = value / radix;
     188        if (digit < 10) {
     189            *--pos = '0' + digit;
     190        } else {
     191            *--pos = 'a' + digit - 10;
     192        } /* if */
     193    } while (value != 0L);
     194
     195    memcpy(str, pos, &buffer[64] - pos + 1);
     196    return str;
     197}
     198
     199
     200/*********************************************************************
     201 *      _i64toa   (NTDLL.@)
     202 *
     203 * Converts a large integer to a string.
     204 *
     205 * Assigns a '\0' terminated string to str and returns str. If radix
     206 * is 10 and value is negative, the value is converted with sign.
     207 * Does not check if radix is in the range of 2 to 36 (as native DLL).
     208 * For str == NULL just crashes (as native DLL).
     209 *
     210 * Difference:
     211 * - The native DLL converts negative values (for base 10) wrong:
     212 *                     -1 is converted to -18446744073709551615
     213 *                     -2 is converted to -18446744073709551614
     214 *   -9223372036854775807 is converted to  -9223372036854775809
     215 *   -9223372036854775808 is converted to  -9223372036854775808
     216 *   The native msvcrt _i64toa function and our ntdll function do
     217 *   not have this bug.
     218 */
     219char * __cdecl _i64toa( LONGLONG value, char *str, int radix )
     220{
     221    ULONGLONG val;
     222    int negative;
     223    char buffer[65];
     224    char *pos;
     225    int digit;
     226
     227    if (value < 0 && radix == 10) {
     228        negative = 1;
     229        val = -value;
     230    } else {
     231        negative = 0;
     232        val = value;
     233    } /* if */
     234
     235    pos = &buffer[64];
     236    *pos = '\0';
     237
     238    do {
     239        digit = val % radix;
     240        val = val / radix;
     241        if (digit < 10) {
     242            *--pos = '0' + digit;
     243        } else {
     244            *--pos = 'a' + digit - 10;
     245        } /* if */
     246    } while (val != 0L);
     247
     248    if (negative) {
     249        *--pos = '-';
     250    } /* if */
     251
     252    memcpy(str, pos, &buffer[64] - pos + 1);
     253    return str;
     254}
     255
     256
     257/*********************************************************************
     258 *      _atoi64   (NTDLL.@)
     259 *
     260 * Converts a string to a large integer.
     261 *
     262 * On success it returns the integer value otherwise it returns 0.
     263 * Accepts: {whitespace} [+|-] {digits}
     264 * No check of overflow: Just assigns lower 64 bits (as native DLL).
     265 * Does not check for str != NULL (as native DLL).
     266 */
     267LONGLONG __cdecl _atoi64( char *str )
     268{
     269    ULONGLONG RunningTotal = 0;
     270    char bMinus = 0;
     271
     272    while (*str == ' ' || (*str >= '\011' && *str <= '\015')) {
     273        str++;
     274    } /* while */
     275
     276    if (*str == '+') {
     277        str++;
     278    } else if (*str == '-') {
     279        bMinus = 1;
     280        str++;
     281    } /* if */
     282
     283    while (*str >= '0' && *str <= '9') {
     284        RunningTotal = RunningTotal * 10 + *str - '0';
     285        str++;
     286    } /* while */
     287
     288    return bMinus ? -RunningTotal : RunningTotal;
    125289}
    126290
  • trunk/src/NTDLL/sync.c

    r9684 r9986  
    1 /* $Id: sync.c,v 1.3 2003-01-16 15:22:41 sandervl Exp $ */
     1/* $Id: sync.c,v 1.4 2003-04-07 18:40:52 sandervl Exp $ */
    22
    33/*
  • trunk/src/NTDLL/time.c

    r9684 r9986  
    427427
    428428    TRACE("(%p, %p)\n", LocalTime, SystemTime);
    429 
    430429    RtlQueryTimeZoneInformation(&tzinfo);
    431430    SystemTime->QuadPart = LocalTime->QuadPart + tzinfo.Bias * 60 * (LONGLONG)10000000;
  • trunk/src/NTDLL/unknown.c

    r9684 r9986  
    1 /* $Id: unknown.c,v 1.1 2003-01-16 15:22:42 sandervl Exp $ */
     1/* $Id: unknown.c,v 1.2 2003-04-07 18:40:52 sandervl Exp $ */
    22
    33/*
     
    4848  return 0;
    4949}
    50 
    51 
    52 /*****************************************************************************
    53  * Name      : _alldiv
    54  * Purpose   : unknown
    55  * Parameters: unknown, probably wrong
    56  * Variables :
    57  * Result    :
    58  * Remark    : NTDLL.?
    59  * Status    : UNTESTED STUB
    60  *
    61  * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
    62  *****************************************************************************/
    63 
    64 DWORD CDECL OS2_alldiv(DWORD x1,
    65                        DWORD x2)
    66 {
    67   dprintf(("NTDLL: _alldiv(%08xh,%08xh) not implemented.\n",
    68            x1,
    69            x2));
    70 
    71   return (x1 / x2);
    72 }
    73 
    74 
    75 /*****************************************************************************
    76  * Name      : _allmul
    77  * Purpose   : unknown
    78  * Parameters: unknown, probably wrong
    79  * Variables :
    80  * Result    :
    81  * Remark    : NTDLL.?
    82  * Status    : UNTESTED STUB
    83  *
    84  * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
    85  *****************************************************************************/
    86 
    87 DWORD CDECL OS2_allmul(DWORD x1,
    88                        DWORD x2)
    89 {
    90   dprintf(("NTDLL: _allmul(%08xh,%08xh) not implemented.\n",
    91            x1,
    92            x2));
    93 
    94   return (x1 * x2);
    95 }
    96 
    97 
    98 /*****************************************************************************
    99  * Name      : RtlLargeIntegerToChar
    100  * Purpose   : unknown
    101  * Parameters: unknown, probably wrong
    102  * Variables :
    103  * Result    :
    104  * Remark    : NTDLL.?
    105  * Status    : UNTESTED STUB
    106  *
    107  * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
    108  *****************************************************************************/
    109 
    110 DWORD WIN32API RtlLargeIntegerToChar(LARGE_INTEGER li,
    111                                      LPWSTR        retstr,
    112                                      DWORD         retlen)
    113 {
    114   dprintf(("NTDLL: RtlLargeIntegerToChar(%08xh,%08xh,%08xh) not implemented.\n",
    115            li,
    116            retstr,
    117            retlen));
    118 
    119   return 0;
    120 }
    121 
    122 
    12350
    12451/*****************************************************************************
  • trunk/src/NTDLL/wcstring.c

    r8429 r9986  
    44 * Copyright 2000 Alexandre Julliard
    55 * Copyright 2000 Jon Griffiths
     6 * Copyright 2003 Thomas Mertes
    67 *
    78 * This library is free software; you can redistribute it and/or
     
    2324
    2425#include <ctype.h>
    25 #include <limits.h>
    2626#include <stdlib.h>
    2727#include <string.h>
    2828#include <stdio.h>
    29 
    30 #include "ntddk.h"
     29#include <limits.h>
     30
     31#include "winternl.h"
    3132#include "wine/unicode.h"
    3233#include "wine/debug.h"
     
    304305/*********************************************************************
    305306 *                  wcstol  (NTDLL.@)
    306  * Like strtol, but for wide character strings.
    307  */
    308 INT __cdecl NTDLL_wcstol(LPCWSTR s,LPWSTR *end,INT base)
    309 {
    310     UNICODE_STRING uni;
    311     ANSI_STRING ansi;
    312     INT ret;
    313     LPSTR endA;
    314 
    315     RtlInitUnicodeString( &uni, s );
    316     RtlUnicodeStringToAnsiString( &ansi, &uni, TRUE );
    317     ret = strtol( ansi.Buffer, &endA, base );
    318     if (end)
    319     {
    320         DWORD len;
    321         RtlMultiByteToUnicodeSize( &len, ansi.Buffer, endA - ansi.Buffer );
    322         *end = (LPWSTR)s + len/sizeof(WCHAR);
    323     }
    324     RtlFreeAnsiString( &ansi );
    325     return ret;
     307 */
     308long __cdecl NTDLL_wcstol(LPCWSTR s,LPWSTR *end,INT base)
     309{
     310    return strtolW( s, end, base );
    326311}
    327312
     
    329314/*********************************************************************
    330315 *                  wcstoul  (NTDLL.@)
    331  * Like strtoul, but for wide character strings.
    332  */
    333 INT __cdecl NTDLL_wcstoul(LPCWSTR s,LPWSTR *end,INT base)
    334 {
    335     UNICODE_STRING uni;
    336     ANSI_STRING ansi;
    337     INT ret;
    338     LPSTR endA;
    339 
    340     RtlInitUnicodeString( &uni, s );
    341     RtlUnicodeStringToAnsiString( &ansi, &uni, TRUE );
    342     ret = strtoul( ansi.Buffer, &endA, base );
    343     if (end)
    344     {
    345         DWORD len;
    346         RtlMultiByteToUnicodeSize( &len, ansi.Buffer, endA - ansi.Buffer );
    347         *end = (LPWSTR)s + len/sizeof(WCHAR);
    348     }
    349     RtlFreeAnsiString( &ansi );
    350     return ret;
     316 */
     317unsigned long __cdecl NTDLL_wcstoul(LPCWSTR s,LPWSTR *end,INT base)
     318{
     319    return strtoulW( s, end, base );
    351320}
    352321
     
    369338}
    370339
    371 
    372 /*********************************************************************
    373  *           _ultow    (NTDLL.@)
    374  * Like _ultoa, but for wide character strings.
    375  */
    376 LPWSTR __cdecl _ultow(ULONG value, LPWSTR string, INT radix)
    377 {
    378     WCHAR tmp[33];
    379     LPWSTR tp = tmp;
    380     LPWSTR sp;
    381     LONG i;
    382     ULONG v = value;
    383 
    384     if (radix > 36 || radix <= 1)
    385         return 0;
    386 
    387     while (v || tp == tmp)
    388     {
    389         i = v % radix;
    390         v = v / radix;
    391         if (i < 10)
    392             *tp++ = i + '0';
    393         else
    394             *tp++ = i + 'a' - 10;
    395     }
    396 
    397     sp = string;
    398     while (tp > tmp)
    399         *sp++ = *--tp;
    400     *sp = 0;
    401     return string;
    402 }
    403 
    404 /*********************************************************************
    405  *           _wtol    (NTDLL.@)
    406  * Like atol, but for wide character strings.
    407  */
    408 LONG __cdecl _wtol(LPWSTR string)
    409 {
    410     char buffer[30];
    411     NTDLL_wcstombs( buffer, string, sizeof(buffer) );
    412     return atol( buffer );
    413 }
    414 
    415 /*********************************************************************
    416  *           _wtoi    (NTDLL.@)
    417  */
    418 INT __cdecl _wtoi(LPWSTR string)
     340/*********************************************************************
     341 *              iswdigit (NTDLL.@)
     342 *
     343 * Checks if an unicode char wc is a digit
     344 *
     345 * RETURNS
     346 *  TRUE: The unicode char wc is a digit.
     347 *  FALSE: Otherwise
     348 */
     349INT __cdecl NTDLL_iswdigit( WCHAR wc )
     350{
     351    return isdigitW(wc);
     352}
     353
     354
     355/*********************************************************************
     356 *              iswlower (NTDLL.@)
     357 *
     358 * Checks if an unicode char wc is a lower case letter
     359 *
     360 * RETURNS
     361 *  TRUE: The unicode char wc is a lower case letter.
     362 *  FALSE: Otherwise
     363 */
     364INT __cdecl NTDLL_iswlower( WCHAR wc )
     365{
     366    return islowerW(wc);
     367}
     368
     369
     370/*********************************************************************
     371 *              iswspace (NTDLL.@)
     372 *
     373 * Checks if an unicode char wc is a white space character
     374 *
     375 * RETURNS
     376 *  TRUE: The unicode char wc is a white space character.
     377 *  FALSE: Otherwise
     378 */
     379INT __cdecl NTDLL_iswspace( WCHAR wc )
     380{
     381    return isspaceW(wc);
     382}
     383
     384
     385/*********************************************************************
     386 *              iswxdigit (NTDLL.@)
     387 *
     388 * Checks if an unicode char wc is an extended digit
     389 *
     390 * RETURNS
     391 *  TRUE: The unicode char wc is an extended digit.
     392 *  FALSE: Otherwise
     393 */
     394INT __cdecl NTDLL_iswxdigit( WCHAR wc )
     395{
     396    return isxdigitW(wc);
     397}
     398
     399
     400/*********************************************************************
     401 *      _ultow   (NTDLL.@)
     402 *
     403 * Converts an unsigned long integer to an unicode string.
     404 *
     405 * Assigns a '\0' terminated string to str and returns str.
     406 * Does not check if radix is in the range of 2 to 36 (as native DLL).
     407 * For str == NULL just returns NULL (as native DLL).
     408 */
     409LPWSTR __cdecl _ultow( unsigned long value, LPWSTR str, INT radix )
     410{
     411    WCHAR buffer[33];
     412    PWCHAR pos;
     413    WCHAR digit;
     414
     415    pos = &buffer[32];
     416    *pos = '\0';
     417
     418    do {
     419        digit = value % radix;
     420        value = value / radix;
     421        if (digit < 10) {
     422            *--pos = '0' + digit;
     423        } else {
     424            *--pos = 'a' + digit - 10;
     425        } /* if */
     426    } while (value != 0L);
     427
     428    if (str != NULL) {
     429        memcpy(str, pos, (&buffer[32] - pos + 1) * sizeof(WCHAR));
     430    } /* if */
     431    return str;
     432}
     433
     434
     435/*********************************************************************
     436 *      _ltow   (NTDLL.@)
     437 *
     438 * Converts a long integer to an unicode string.
     439 *
     440 * RETURNS
     441 *  Always returns str.
     442 *
     443 * NOTES
     444 *  Converts value to a '\0' terminated wstring which is copied to str.
     445 *  The maximum length of the copied str is 33 bytes. If radix
     446 *  is 10 and value is negative, the value is converted with sign.
     447 *  Does not check if radix is in the range of 2 to 36.
     448 *  If str is NULL it just returns NULL.
     449 */
     450LPWSTR __cdecl _ltow(
     451    long value, /* [I] Value to be converted */
     452    LPWSTR str, /* [O] Destination for the converted value */
     453    INT radix)  /* [I] Number base for conversion */
     454{
     455    unsigned long val;
     456    int negative;
     457    WCHAR buffer[33];
     458    PWCHAR pos;
     459    WCHAR digit;
     460
     461    if (value < 0 && radix == 10) {
     462        negative = 1;
     463        val = -value;
     464    } else {
     465        negative = 0;
     466        val = value;
     467    } /* if */
     468
     469    pos = &buffer[32];
     470    *pos = '\0';
     471
     472    do {
     473        digit = val % radix;
     474        val = val / radix;
     475        if (digit < 10) {
     476            *--pos = '0' + digit;
     477        } else {
     478            *--pos = 'a' + digit - 10;
     479        } /* if */
     480    } while (val != 0L);
     481
     482    if (negative) {
     483        *--pos = '-';
     484    } /* if */
     485
     486    if (str != NULL) {
     487        memcpy(str, pos, (&buffer[32] - pos + 1) * sizeof(WCHAR));
     488    } /* if */
     489    return str;
     490}
     491
     492
     493
     494/*********************************************************************
     495 *      _itow    (NTDLL.@)
     496 *
     497 * Converts an integer to an unicode string.
     498 *
     499 * RETURNS
     500 *  Always returns str.
     501 *
     502 * NOTES
     503 *  Converts value to a '\0' terminated wstring which is copied to str.
     504 *  The maximum length of the copied str is 33 bytes. If radix
     505 *  is 10 and value is negative, the value is converted with sign.
     506 *  Does not check if radix is in the range of 2 to 36.
     507 *  If str is NULL it just returns NULL.
     508 *
     509 * DIFFERENCES
     510 * - The native function crashes when the string is longer than 19 chars.
     511 *   This function does not have this bug.
     512 */
     513LPWSTR __cdecl _itow(
     514    int value,  /* [I] Value to be converted */
     515    LPWSTR str, /* [O] Destination for the converted value */
     516    INT radix)  /* [I] Number base for conversion */
     517{
     518    return _ltow(value, str, radix);
     519}
     520
     521
     522/*********************************************************************
     523 *      _ui64tow   (NTDLL.@)
     524 *
     525 * Converts a large unsigned integer to an unicode string.
     526 *
     527 * Assigns a '\0' terminated wstring to str and returns str.
     528 * Does not check if radix is in the range of 2 to 36 (as native DLL).
     529 * For str == NULL just returns NULL (as native DLL).
     530 *
     531 * Difference:
     532 * - This function does not exist in the native DLL (but in msvcrt).
     533 *   But since the maintenance of all these functions is better done
     534 *   in one place we implement it here.
     535 */
     536LPWSTR __cdecl _ui64tow( ULONGLONG value, LPWSTR str, INT radix )
     537{
     538    WCHAR buffer[65];
     539    PWCHAR pos;
     540    WCHAR digit;
     541
     542    pos = &buffer[64];
     543    *pos = '\0';
     544
     545    do {
     546        digit = value % radix;
     547        value = value / radix;
     548        if (digit < 10) {
     549            *--pos = '0' + digit;
     550        } else {
     551            *--pos = 'a' + digit - 10;
     552        } /* if */
     553    } while (value != 0L);
     554
     555    if (str != NULL) {
     556        memcpy(str, pos, (&buffer[64] - pos + 1) * sizeof(WCHAR));
     557    } /* if */
     558    return str;
     559}
     560
     561
     562/*********************************************************************
     563 *      _i64tow   (NTDLL.@)
     564 *
     565 * Converts a large integer to an unicode string.
     566 *
     567 * Assigns a '\0' terminated wstring to str and returns str. If radix
     568 * is 10 and value is negative, the value is converted with sign.
     569 * Does not check if radix is in the range of 2 to 36 (as native DLL).
     570 * For str == NULL just returns NULL (as native DLL).
     571 *
     572 * Difference:
     573 * - The native DLL converts negative values (for base 10) wrong:
     574 *                     -1 is converted to -18446744073709551615
     575 *                     -2 is converted to -18446744073709551614
     576 *   -9223372036854775807 is converted to  -9223372036854775809
     577 *   -9223372036854775808 is converted to  -9223372036854775808
     578 *   The native msvcrt _i64tow function and our ntdll function do
     579 *   not have this bug.
     580 */
     581LPWSTR __cdecl _i64tow( LONGLONG value, LPWSTR str, INT radix )
     582{
     583    ULONGLONG val;
     584    int negative;
     585    WCHAR buffer[65];
     586    PWCHAR pos;
     587    WCHAR digit;
     588
     589    if (value < 0 && radix == 10) {
     590        negative = 1;
     591        val = -value;
     592    } else {
     593        negative = 0;
     594        val = value;
     595    } /* if */
     596
     597    pos = &buffer[64];
     598    *pos = '\0';
     599
     600    do {
     601        digit = val % radix;
     602        val = val / radix;
     603        if (digit < 10) {
     604            *--pos = '0' + digit;
     605        } else {
     606            *--pos = 'a' + digit - 10;
     607        } /* if */
     608    } while (val != 0L);
     609
     610    if (negative) {
     611        *--pos = '-';
     612    } /* if */
     613
     614    if (str != NULL) {
     615        memcpy(str, pos, (&buffer[64] - pos + 1) * sizeof(WCHAR));
     616    } /* if */
     617    return str;
     618}
     619
     620
     621/*********************************************************************
     622 *      _wtol    (NTDLL.@)
     623 *
     624 * Converts an unicode string to a long integer.
     625 *
     626 * On success it returns the integer value otherwise it returns 0.
     627 * Accepts: {whitespace} [+|-] {digits}
     628 * No check of overflow: Just assigns lower 32 bits (as native DLL).
     629 * Does not check for str != NULL (as native DLL).
     630 */
     631LONG __cdecl _wtol( LPWSTR str )
     632{
     633    ULONG RunningTotal = 0;
     634    char bMinus = 0;
     635
     636    while (isspaceW(*str)) {
     637        str++;
     638    } /* while */
     639
     640    if (*str == '+') {
     641        str++;
     642    } else if (*str == '-') {
     643        bMinus = 1;
     644        str++;
     645    } /* if */
     646
     647    while (*str >= '0' && *str <= '9') {
     648        RunningTotal = RunningTotal * 10 + *str - '0';
     649        str++;
     650    } /* while */
     651
     652    return bMinus ? -RunningTotal : RunningTotal;
     653}
     654
     655
     656/*********************************************************************
     657 *      _wtoi    (NTDLL.@)
     658 *
     659 * Converts an unicode string to an integer.
     660 *
     661 * On success it returns the integer value otherwise it returns 0.
     662 * Accepts: {whitespace} [+|-] {digits}
     663 * No check of overflow: Just assigns lower 32 bits (as native DLL).
     664 * Does not check for str != NULL (as native DLL).
     665 */
     666int __cdecl _wtoi( LPWSTR string )
    419667{
    420668    return _wtol(string);
    421669}
    422670
    423 /* INTERNAL: Wide char snprintf
    424  * If you fix a bug in this function, fix it in msvcrt/wcs.c also!
    425  */
    426 static int __cdecl NTDLL_vsnwprintf(WCHAR *str, unsigned int len,
    427                                     const WCHAR *format, va_list valist)
    428 {
    429   unsigned int written = 0;
    430   const WCHAR *iter = format;
    431   char bufa[256], fmtbufa[64], *fmta;
    432 
    433   TRACE("(%d,%s)\n",len,debugstr_w(format));
    434 
    435   while (*iter)
    436   {
    437     while (*iter && *iter != (WCHAR)L'%')
    438     {
    439      if (written++ >= len)
    440        return -1;
    441      *str++ = *iter++;
    442     }
    443     if (*iter == (WCHAR)L'%')
    444     {
    445       fmta = fmtbufa;
    446       *fmta++ = *iter++;
    447       while (*iter == (WCHAR)L'0' ||
    448              *iter == (WCHAR)L'+' ||
    449              *iter == (WCHAR)L'-' ||
    450              *iter == (WCHAR)L' ' ||
    451              *iter == (WCHAR)L'0' ||
    452              *iter == (WCHAR)L'*' ||
    453              *iter == (WCHAR)L'#')
    454       {
    455         if (*iter == (WCHAR)L'*')
    456         {
    457           char *buffiter = bufa;
    458           int fieldlen = va_arg(valist, int);
    459           sprintf(buffiter, "%d", fieldlen);
    460           while (*buffiter)
    461             *fmta++ = *buffiter++;
    462         }
    463         else
    464           *fmta++ = *iter;
    465         iter++;
    466       }
    467 
    468       while (isdigit(*iter))
    469         *fmta++ = *iter++;
    470 
    471       if (*iter == (WCHAR)L'.')
    472       {
    473         *fmta++ = *iter++;
    474         if (*iter == (WCHAR)L'*')
    475         {
    476           char *buffiter = bufa;
    477           int fieldlen = va_arg(valist, int);
    478           sprintf(buffiter, "%d", fieldlen);
    479           while (*buffiter)
    480             *fmta++ = *buffiter++;
    481         }
    482         else
    483           while (isdigit(*iter))
    484             *fmta++ = *iter++;
    485       }
    486       if (*iter == (WCHAR)L'h' ||
    487           *iter == (WCHAR)L'l')
    488       {
    489           *fmta++ = *iter++;
    490           *fmta++ = *iter++;
    491       }
    492 
    493       switch (*iter)
    494       {
    495       case (WCHAR)L's':
    496         {
    497           static const WCHAR none[] = { '(', 'n', 'u', 'l', 'l', ')', 0 };
    498           const WCHAR *wstr = va_arg(valist, const WCHAR *);
    499           const WCHAR *striter = wstr ? wstr : none;
    500           while (*striter)
    501           {
    502             if (written++ >= len)
    503               return -1;
    504             *str++ = *striter++;
    505           }
    506           iter++;
    507           break;
    508         }
    509 
    510       case (WCHAR)L'c':
    511         if (written++ >= len)
    512           return -1;
    513         *str++ = (WCHAR)va_arg(valist, int);
    514         iter++;
    515         break;
    516 
    517       default:
    518         {
    519           /* For non wc types, use system sprintf and append to wide char output */
    520           /* FIXME: for unrecognised types, should ignore % when printing */
    521           char *bufaiter = bufa;
    522           if (*iter == (WCHAR)L'p')
    523             sprintf(bufaiter, "%08lX", va_arg(valist, long));
    524           else
    525           {
    526             *fmta++ = *iter;
    527             *fmta = '\0';
    528             if (*iter == (WCHAR)L'f')
    529               sprintf(bufaiter, fmtbufa, va_arg(valist, double));
    530             else
    531               sprintf(bufaiter, fmtbufa, va_arg(valist, void *));
    532           }
    533           while (*bufaiter)
    534           {
    535             if (written++ >= len)
    536               return -1;
    537             *str++ = *bufaiter++;
    538           }
    539           iter++;
    540           break;
    541         }
    542       }
    543     }
    544   }
    545   if (written >= len)
    546     return -1;
    547   *str++ = (WCHAR)L'\0';
    548   return (int)written;
    549 }
     671
     672/*********************************************************************
     673 *      _wtoi64   (NTDLL.@)
     674 *
     675 * Converts an unicode string to a large integer.
     676 *
     677 * On success it returns the integer value otherwise it returns 0.
     678 * Accepts: {whitespace} [+|-] {digits}
     679 * No check of overflow: Just assigns lower 64 bits (as native DLL).
     680 * Does not check for str != NULL (as native DLL).
     681 */
     682LONGLONG  __cdecl _wtoi64( LPWSTR str )
     683{
     684    ULONGLONG RunningTotal = 0;
     685    char bMinus = 0;
     686
     687    while (isspaceW(*str)) {
     688        str++;
     689    } /* while */
     690
     691    if (*str == '+') {
     692        str++;
     693    } else if (*str == '-') {
     694        bMinus = 1;
     695        str++;
     696    } /* if */
     697
     698    while (*str >= '0' && *str <= '9') {
     699        RunningTotal = RunningTotal * 10 + *str - '0';
     700        str++;
     701    } /* while */
     702
     703    return bMinus ? -RunningTotal : RunningTotal;
     704}
     705
    550706
    551707
     
    558714  va_list valist;
    559715  va_start(valist, format);
    560   retval = NTDLL_vsnwprintf(str, len, format, valist);
     716  retval = vsnprintfW(str, len, format, valist);
    561717  va_end(valist);
    562718  return retval;
     
    572728  va_list valist;
    573729  va_start(valist, format);
    574   retval = NTDLL_vsnwprintf(str, INT_MAX, format, valist);
     730  retval = vsnprintfW(str, INT_MAX, format, valist);
    575731  va_end(valist);
    576732  return retval;
Note: See TracChangeset for help on using the changeset viewer.