.486 .model flat, stdcall .data _imp__IsDebuggerPresent@0 dd IsDebuggerPresent_Helper@0 PUBLIC _imp__IsDebuggerPresent@0 _imp__EncodePointer@4 dd EncodePointer_Helper@4 PUBLIC _imp__EncodePointer@4 _imp__DecodePointer@4 dd DecodePointer_Helper@4 PUBLIC _imp__DecodePointer@4 _imp__IsProcessorFeaturePresent@4 dd IsProcessorFeaturePresent_Helper@4 PUBLIC _imp__IsProcessorFeaturePresent@4 _imp__HeapSetInformation@16 dd HeapSetInformation_Helper@16 PUBLIC _imp__HeapSetInformation@16 _imp__InitializeCriticalSectionAndSpinCount@8 dd InitializeCriticalSectionAndSpinCount_Helper@8 PUBLIC _imp__InitializeCriticalSectionAndSpinCount@8 _imp__InterlockedPushEntrySList@8 dd InterlockedPushEntrySList_Helper@8 PUBLIC _imp__InterlockedPushEntrySList@8 _imp__InterlockedPopEntrySList@4 dd InterlockedPopEntrySList_Helper@4 PUBLIC _imp__InterlockedPopEntrySList@4 _imp__InterlockedCompareExchange@12 dd InterlockedCompareExchange_Helper PUBLIC _imp__InterlockedCompareExchange@12 EXTERN IsDebuggerPresent_Helper@0 : DWORD EXTERN EncodePointer_Helper@4 : DWORD EXTERN DecodePointer_Helper@4 : DWORD EXTERN IsProcessorFeaturePresent_Helper@4 : DWORD EXTERN HeapSetInformation_Helper@16 : DWORD EXTERN InitializeCriticalSectionAndSpinCount_Helper@8 : DWORD EXTERN InterlockedPushEntrySList_Helper@8 : DWORD EXTERN InterlockedPopEntrySList_Helper@4 : DWORD EXTERN _imp__InitializeCriticalSection@4 : DWORD .code InterlockedCompareExchange_Helper PROC PRIVATE mov ecx,[esp+4] mov edx,[esp+8] mov eax,[esp+12] lock cmpxchg [ecx],edx ret 12 InterlockedCompareExchange_Helper ENDP end