| [9992] | 1 | ; $Id: regfunc.asm,v 1.6 2003-04-08 12:47:07 sandervl Exp $
 | 
|---|
| [1653] | 2 | 
 | 
|---|
 | 3 | ;/*
 | 
|---|
 | 4 | ; * register functions in NTDLL
 | 
|---|
 | 5 | ; *
 | 
|---|
 | 6 | ; * Copyright 1999 Patrick Haller
 | 
|---|
 | 7 | ; *
 | 
|---|
 | 8 | ; *
 | 
|---|
 | 9 | ; * Project Odin Software License can be found in LICENSE.TXT
 | 
|---|
 | 10 | ; *
 | 
|---|
 | 11 | ; */
 | 
|---|
 | 12 | .586P
 | 
|---|
 | 13 |                NAME    regfunc
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | CODE32         SEGMENT DWORD PUBLIC USE32 'CODE'
 | 
|---|
 | 16 |                align 4
 | 
|---|
 | 17 | 
 | 
|---|
 | 18 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 19 | 
 | 
|---|
| [2583] | 20 |        public  _chkstk      
 | 
|---|
 | 21 |        public  _alloca_probe; _alloca_probe seems to be the same as _chkstk
 | 
|---|
| [1653] | 22 |        public  DbgBreakPoint
 | 
|---|
 | 23 | 
 | 
|---|
 | 24 | 
 | 
|---|
 | 25 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 26 | 
 | 
|---|
 | 27 | 
 | 
|---|
 | 28 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 29 | 
 | 
|---|
 | 30 | 
 | 
|---|
 | 31 | ; ----------------------------------------------------------------------------
 | 
|---|
| [2583] | 32 | ; Name      : _chkstk
 | 
|---|
| [1653] | 33 | ; Purpose   :
 | 
|---|
 | 34 | ; Parameters:
 | 
|---|
 | 35 | ; Variables :
 | 
|---|
 | 36 | ; Result    :
 | 
|---|
| [2583] | 37 | ; Remark    : 
 | 
|---|
| [1654] | 38 | ; Status    : VERIFIED
 | 
|---|
| [1653] | 39 | ;
 | 
|---|
 | 40 | ; Author    : Patrick Haller [Mon, 1999/11/08 23:44]
 | 
|---|
 | 41 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 42 | _chkstk proc near
 | 
|---|
 | 43 | 
 | 
|---|
 | 44 | arg_0          = byte ptr  8
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 |                push    ecx             ; _alloca_probe
 | 
|---|
 | 47 |                cmp     eax, 1000h
 | 
|---|
 | 48 |                lea     ecx, [esp+arg_0]
 | 
|---|
 | 49 |                jb      short _chkstk_1
 | 
|---|
 | 50 | 
 | 
|---|
 | 51 | _chkstk_2:
 | 
|---|
 | 52 |                sub     ecx, 1000h
 | 
|---|
 | 53 |                sub     eax, 1000h
 | 
|---|
 | 54 |                test    [ecx], eax
 | 
|---|
 | 55 |                cmp     eax, 1000h
 | 
|---|
 | 56 |                jnb     short _chkstk_2
 | 
|---|
 | 57 | 
 | 
|---|
 | 58 | _chkstk_1:
 | 
|---|
 | 59 |                sub     ecx, eax
 | 
|---|
 | 60 |                mov     eax, esp
 | 
|---|
 | 61 |                test    [ecx], eax
 | 
|---|
 | 62 |                mov     esp, ecx
 | 
|---|
 | 63 |                mov     ecx, [eax]
 | 
|---|
 | 64 |                mov     eax, [eax+4]
 | 
|---|
 | 65 |                push    eax
 | 
|---|
 | 66 |                retn
 | 
|---|
 | 67 | _chkstk        endp
 | 
|---|
 | 68 | 
 | 
|---|
 | 69 | 
 | 
|---|
 | 70 | ; ----------------------------------------------------------------------------
 | 
|---|
| [2583] | 71 | ; Name      : _alloca_probe
 | 
|---|
 | 72 | ; Purpose   :
 | 
|---|
 | 73 | ; Parameters:
 | 
|---|
 | 74 | ; Variables :
 | 
|---|
 | 75 | ; Result    :
 | 
|---|
 | 76 | ; Remark    : 
 | 
|---|
 | 77 | ; Status    : VERIFIED
 | 
|---|
 | 78 | ;
 | 
|---|
 | 79 | ; Author    : Patrick Haller [Mon, 1999/11/08 23:44]
 | 
|---|
 | 80 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 81 | _alloca_probe proc near
 | 
|---|
 | 82 | 
 | 
|---|
 | 83 | arg_0          = byte ptr  8
 | 
|---|
 | 84 | 
 | 
|---|
 | 85 |                push    ecx             ; _alloca_probe
 | 
|---|
 | 86 |                cmp     eax, 1000h
 | 
|---|
 | 87 |                lea     ecx, [esp+arg_0]
 | 
|---|
 | 88 |                jb      short _alloca_probe_1
 | 
|---|
 | 89 | 
 | 
|---|
 | 90 | _alloca_probe_2:
 | 
|---|
 | 91 |                sub     ecx, 1000h
 | 
|---|
 | 92 |                sub     eax, 1000h
 | 
|---|
 | 93 |                test    [ecx], eax
 | 
|---|
 | 94 |                cmp     eax, 1000h
 | 
|---|
 | 95 |                jnb     short _alloca_probe_2
 | 
|---|
 | 96 | 
 | 
|---|
 | 97 | _alloca_probe_1:
 | 
|---|
 | 98 |                sub     ecx, eax
 | 
|---|
 | 99 |                mov     eax, esp
 | 
|---|
 | 100 |                test    [ecx], eax
 | 
|---|
 | 101 |                mov     esp, ecx
 | 
|---|
 | 102 |                mov     ecx, [eax]
 | 
|---|
 | 103 |                mov     eax, [eax+4]
 | 
|---|
 | 104 |                push    eax
 | 
|---|
 | 105 |                retn
 | 
|---|
 | 106 | _alloca_probe  endp
 | 
|---|
 | 107 | 
 | 
|---|
 | 108 | 
 | 
|---|
 | 109 | ; ----------------------------------------------------------------------------
 | 
|---|
| [1653] | 110 | ; Name      : DbgBreakPoint
 | 
|---|
 | 111 | ; Purpose   :
 | 
|---|
 | 112 | ; Parameters:
 | 
|---|
 | 113 | ; Variables :
 | 
|---|
 | 114 | ; Result    :
 | 
|---|
 | 115 | ; Remark    : NTDLL.20
 | 
|---|
| [1654] | 116 | ; Status    : VERIFIED
 | 
|---|
| [1653] | 117 | ;
 | 
|---|
 | 118 | ; Author    : Patrick Haller [Mon, 1999/11/08 23:44]
 | 
|---|
 | 119 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 120 | DbgBreakPoint  proc near
 | 
|---|
 | 121 |                int     3               ; Trap to Debugger
 | 
|---|
 | 122 |                retn
 | 
|---|
 | 123 | DbgBreakPoint  endp
 | 
|---|
 | 124 | 
 | 
|---|
 | 125 | 
 | 
|---|
 | 126 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 127 | ; Name      : DbgUserBreakPoint
 | 
|---|
 | 128 | ; Purpose   :
 | 
|---|
 | 129 | ; Parameters:
 | 
|---|
 | 130 | ; Variables :
 | 
|---|
 | 131 | ; Result    :
 | 
|---|
 | 132 | ; Remark    : NTDLL.28
 | 
|---|
| [1654] | 133 | ; Status    : VERIFIED
 | 
|---|
| [1653] | 134 | ;
 | 
|---|
 | 135 | ; Author    : Patrick Haller [Mon, 1999/11/08 23:44]
 | 
|---|
 | 136 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 137 | DbgUserBreakPoint proc near
 | 
|---|
 | 138 |                int     3               ; Trap to Debugger
 | 
|---|
 | 139 |                retn
 | 
|---|
 | 140 | DbgUserBreakPoint endp
 | 
|---|
 | 141 | 
 | 
|---|
 | 142 | 
 | 
|---|
 | 143 | ; ----------------------------------------------------------------------------
 | 
|---|
 | 144 | CODE32          ENDS
 | 
|---|
 | 145 | 
 | 
|---|
 | 146 |                 END
 | 
|---|