CheckFunction PB-Userlib V1.02 Deem2031
=========================================


Installation:
-------------

Copy CheckFunction.zip/CheckFunction -> Purebasic/PureLibraries/UserLibraries
Copy CheckFunction.zip/CheckFunction.res -> Purebasic/Residents


Procedures:
-----------

StartCheck()

StopCheck.l() - return a pointer to a CheckResult structure that contains the changes of CPURegister and CPUFlags between Start and StopCheck

ProcessCheck.l(flags.l) - return the number of changed register
Flags:
  #CheckFunction_Esp
  #CheckFunction_Eax
  #CheckFunction_Ebx
  #CheckFunction_Ecx
  #CheckFunction_Edx
  #CheckFunction_Esi
  #CheckFunction_Edi
  #CheckFunction_Ebp
  #CheckFunction_Flags
  #CheckFunction_Important = #CheckFunction_Esp|#CheckFunction_Ebx|#CheckFunction_Esi|#CheckFunction_Edi|#CheckFunction_Ebp

ResetCPUFlags() - set all CPU Flags to 0

ResetCPURegister() - set all CPU Register (except Esp) to 0


Example (CheckFunction.zip/CheckFunction.pb):
---------------------------------------------


DisableDebugger

ResetCPURegister()
ResetCPUFlags()
StartCheck()
InitNetwork()
*Result.CheckResult = StopCheck()
If ProcessCheck(#CheckFunction_Important) = 0
  icon = 0 ; :)
Else
  icon = 16 ; :(
EndIf

output.s = "---Register---"+#CRLF$
output + "Esp: "+Str(*Result\Esp)+#CRLF$
output + "Eax: "+Str(*Result\Eax)+#CRLF$
output + "Ebx: "+Str(*Result\Ebx)+#CRLF$
output + "Ecx: "+Str(*Result\Ecx)+#CRLF$
output + "Edx: "+Str(*Result\Edx)+#CRLF$
output + "Esi: "+Str(*Result\Esi)+#CRLF$
output + "Edi: "+Str(*Result\Edi)+#CRLF$
output + "Ebp: "+Str(*Result\Ebp)+#CRLF$
output + #CRLF$
output + "---Flags---"+#CRLF$
output + "CF: "+Str(*Result\flags&#CheckFunction_Flag_CarryFlag)+#CRLF$
output + "PF: "+Str(*Result\flags&#CheckFunction_Flag_ParityFlag)+#CRLF$
output + "AF: "+Str(*Result\flags&#CheckFunction_Flag_AuxiliaryFlag)+#CRLF$
output + "ZF: "+Str(*Result\flags&#CheckFunction_Flag_ZeroFlag)+#CRLF$
output + "SF: "+Str(*Result\flags&#CheckFunction_Flag_SignFlag)+#CRLF$
output + "TF: "+Str(*Result\flags&#CheckFunction_Flag_Trapflag)+#CRLF$
output + "IF: "+Str(*Result\flags&#CheckFunction_Flag_InterruptFlag)+#CRLF$
output + "DF: "+Str(*Result\flags&#CheckFunction_Flag_DirectionFlag)+#CRLF$
output + "OF: "+Str(*Result\flags&#CheckFunction_Flag_OverflowFlag)+#CRLF$
output + "IOPL: "+Str(*Result\flags&#CheckFunction_Flag_IOPrivilegeLevel)+#CRLF$
output + "NT: "+Str(*Result\flags&#CheckFunction_Flag_NestedTaskFlag)+#CRLF$
output + "RF: "+Str(*Result\flags&#CheckFunction_Flag_ResumeFlag)+#CRLF$
output + "VM: "+Str(*Result\flags&#CheckFunction_Flag_VirtualModeFlag)+#CRLF$
  
MessageRequester("Change",output,icon)