I'm sharing code from oryaaaaa's recent creation, "MajiorityCleanES80", after being told by "First Class Programmers" that they want me to release a build program. Ready to run and unchanged, MajiorityCleanES80 is an ultra-low noise digital output support resident software with zero-idiom optimization. Discussed primarily in the JPLAY forum "Computer audio - PINK HQ". The difficult problem with this application is that "if badly written, it will corrupt a $100,000.00 audio environment" and it always feels like "tomorrow never die".
Even if the result is considered "no operation" for the startup process part, the internal design of the CPU is structured "designed with analog circuits and calculates digital logic processing," and the digital output could be an unstable signal if the electronic bit standards of all registers are not fixed. This writing corresponds to SandyBridge SkyLake KabyLake CometLake AlderLake RapterLake. However, it is not very effective when tried on Haswell Broadwell RocketLake ATOM, as it can easily become uncontrollable. In the technical technical books, "Electronics Engineering", "Semiconductor Engineering", "Semiconductor Manufacturing Engineering", "Laser Processing Engineering", "High Frequency Radio Engineering", I have studied and made this area, and I have several years of "SCREEN System Engineer" as actual experience.
Code: Select all
; PureBasicForumTips_BuildExecutable.pb
; Copyright (c) 2017-2023, Hiroyuki Yokota
SetPriorityClass_(GetCurrentProcess_(),#IDLE_PRIORITY_CLASS)
#NBFILE = "ExtremeStabilizer_202308_D80b.pb" ; with Thread Safe /THREAD /XP
; #RCFILE = "MinorityClean_202104_B175f_SOAP.rc"
; ; ; #NBVER = "0.0.0.0"
; ; ; #NBVER4 = "0,0,0,0"
; ; ; #NBNAME = "High-Quality bit Stabilizer for Broadcast"
#NBEXE = "J:\ExtremeStabilizer80.exe"
; #NBEXE2 = "J:\ExtremeStabilizerNop55.exe"
#NBDIR = "ExtremeStabilizer_2023_Rev80_x64"
#NBDIR2 = "ExtremeStabilizer_2023_Rev80_x64\ExtremeStabilizer 80 x64"
; ; ; ; #NBCopyright = "Hiroyuki Yokota (oryaaaaa)"
; ; ; ; #NBMAIL = "oryaaaaa@gmail.com"
file$=OpenFileRequester("PureBasic", "*.pb", "*.pb|"+#NBFILE, 0)
dir$ = GetPathPart(file$)
dir55$ = GetPathPart(file$)
DeleteFile(dir$+"PureBasic.asm")
Select MessageRequester("CHECK", GetFilePart(file$), #PB_MessageRequester_YesNo)
Case #PB_MessageRequester_No
End
EndSelect
Global RandMax.i
RandMax = 999*999
Macro PureBasicStart_Before_SSE2
AddElement(Buffer()) : Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVDQ2Q mm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVDQ2Q mm1, xmm0"
AddElement(Buffer()) : Buffer() = "MOVDQ2Q mm2, xmm0"
CUT!
IncludeFile "Macro_XOR_Rax_MOVZX_Rax.pbi"
Macro MOV_Rax_Rax_Up_Down
AddElement(Buffer()) : Buffer() = "MOV al, al"
AddElement(Buffer()) : Buffer() = "MOV ah, ah"
AddElement(Buffer()) : Buffer() = "MOV ax, ax"
AddElement(Buffer()) : Buffer() = "MOV Rax, Rax"
AddElement(Buffer()) : Buffer() = "MOV ax, ax"
AddElement(Buffer()) : Buffer() = "MOV ah, ah"
AddElement(Buffer()) : Buffer() = "MOV al, al"
EndMacro
Macro MOV_R8_R8_Up_Down
AddElement(Buffer()) : Buffer() = "MOV R8b, R8b"
AddElement(Buffer()) : Buffer() = "MOV R8w, R8w"
AddElement(Buffer()) : Buffer() = "MOV R8, R8"
AddElement(Buffer()) : Buffer() = "MOV R8w, R8w"
AddElement(Buffer()) : Buffer() = "MOV R8b, R8b"
EndMacro
Macro MOV_Rsp_Rsp_Up_Down
AddElement(Buffer()) : Buffer() = "MOV spl, spl"
AddElement(Buffer()) : Buffer() = "MOV sp, sp"
AddElement(Buffer()) : Buffer() = "MOV Rsp, Rsp"
AddElement(Buffer()) : Buffer() = "MOV sp, sp"
AddElement(Buffer()) : Buffer() = "MOV spl, spl"
EndMacro
Macro SIMPLE_MOVE_REGISTERS_Up_and_Down
; Limited 100ms over. after CALL PB_Delay MC177
MOV_Rax_Rax_Up_Down
MOV_Rdx_Rdx_Up_Down
MOV_Rsp_Rsp_Up_Down
MOV_Rsi_Rsi_Up_Down
MOV_R9_R9_Up_Down
MOV_R11_R11_Up_Down
MOV_R13_R13_Up_Down
MOV_R15_R15_Up_Down
MOV_Rcx_Rcx_Up_Down
MOV_Rbx_Rbx_Up_Down
MOV_Rbp_Rbp_Up_Down
MOV_Rdi_Rdi_Up_Down
MOV_R8_R8_Up_Down
MOV_R10_R10_Up_Down
MOV_R12_R12_Up_Down
MOV_R14_R14_Up_Down
EndMacro
Global NewList Buffer.s()
ClearList(Buffer())
If file$ And FileSize(file$)>0
Compiler = RunProgram(#PB_Compiler_Home+"\Compilers\pbcompiler", Chr(34)+file$+Chr(34)+" /MMX /UNICODE /commented /XP /THREAD /OPTIMIZER", dir$, #PB_Program_Open | #PB_Program_Read)
dir$+"PureBasic.asm"
ooos.i = 0
Output$ = "" : Output_1$ = ""
If Compiler
While ProgramRunning(Compiler)
If AvailableProgramOutput(Compiler)
If ooos>50
If ooos%2 = 1
Output_1$ + ReadProgramString(Compiler) + Chr(13)
Else
Output_1$ + ReadProgramString(Compiler) + Space(2)
EndIf
Else
If ooos%2 = 1
Output$ + ReadProgramString(Compiler) + Chr(13)
Else
Output$ + ReadProgramString(Compiler) + Space(2)
EndIf
EndIf
ooos + 1
EndIf
Wend
Output$ + Chr(13) + Chr(13)
Output_1$ + Chr(13) + Chr(13)
Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
Output_1$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
CloseProgram(Compiler) ; Close the connection to the program
EndIf
Else
MessageRequester("Error!", "There was an error creating the assembly code file.")
EndIf
; End ;;; If you read PureBasic.asm file.
Delay(3000)
If ReadFile(2, dir$)
While Eof(2)=0
AddElement(Buffer())
Buffer() = ReadString(2)
Wend
CloseFile(2)
EndIf
Global atMarkPos1.i, atMarkPos2.i
Global NewList atMarkName.s()
ForEach Buffer()
If Left(Buffer(), 24) = " LEA rax,[_Procedure"
AddElement(atMarkName())
atMarkPos1 = FindString(Buffer(), "[") + 1
atMarkPos2 = FindString(Buffer(), "]")
atMarkName() = Mid(Buffer(), atMarkPos1, atMarkPos2-atMarkPos1)
PreviousElement(Buffer())
XOR_Rax_MOVZX_Rax
AddElement(Buffer()) : Buffer() = "SMSW Rax"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP ["+atMarkName()+"]"
NextElement(Buffer())
EndIf
Next
Global NewList InstructionName.s()
Global NewList EndIfName.s()
ForEach Buffer()
If FindString(Buffer(), "extrn ")
AddElement(InstructionName())
InstructionName() = RemoveString(Buffer(), "extrn ")
EndIf
If ListSize(InstructionName())>1
If Left(Buffer(), 1)=";"
Break
EndIf
EndIf
Next
ForEach Buffer()
If Left(Buffer(), 10) = "_Procedure" And Right(Buffer(), 1)=":"
AddElement(InstructionName())
InstructionName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
InstructionName_NopEndIF:
NextElement(Buffer())
If Left(Buffer(), 6) = "_EndIf" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 6) = "_While" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 5) = "_Wend" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 2) = "No" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 2) = "Ok" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 4) = "_For" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 5) = "_Next" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 7) = "_Repeat" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 6) = "_Until" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 3) = "End" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 17) = "_EndProcedureZero" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF
ElseIf Left(Buffer(), 13) = "_EndProcedure"
Else
Goto InstructionName_NopEndIF
EndIf
InstructionName_NopEndIF2:
PreviousElement(Buffer())
If Left(Buffer(), 10) = "_Procedure" And Right(Buffer(), 1)=":"
Else
Goto InstructionName_NopEndIF2
EndIf
ForEach EndIfName()
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP ["+EndIfName()+"]"
Next
ClearList(EndIfName())
EndIf
Next
ForEach Buffer()
If Left(Buffer(), 14) = "extrn PB_Delay"
InstructionName_NopEndIF_A:
NextElement(Buffer())
If Left(Buffer(), 6) = "_EndIf" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 6) = "_While" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 5) = "_Wend" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 2) = "No" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 2) = "Ok" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 4) = "_For" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 5) = "_Next" And Right(Buffer(), 1)=":"
AddElement(EndIfName()) : EndIfName() = RemoveString(Buffer(), ":")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 7) = "_Repeat" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 6) = "_Until" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 3) = "End" And Right(Buffer(), 1)=":"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Goto InstructionName_NopEndIF_A
ElseIf Left(Buffer(), 15) = " JMP _PB_EOP"
Else
Goto InstructionName_NopEndIF_A
EndIf
InstructionName_NopEndIF2_A:
PreviousElement(Buffer())
If Left(Buffer(), 14) = "extrn PB_Delay"
Else
Goto InstructionName_NopEndIF2_A
EndIf
ForEach EndIfName()
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP ["+EndIfName()+"]"
Next
ClearList(EndIfName())
EndIf
Next
Global NewList MemoryAddress.s()
Global MemoryAddress_no.i = 1
ForEach Buffer()
If Left(Buffer(), 4) = "LEA " ; Or Left(Buffer(), 7) = "MOVNTI "
PreviousElement(Buffer())
AddElement(Buffer())
Buffer() = "MemoryAddress"+Str(MemoryAddress_no)+":"
NextElement(Buffer())
AddElement(MemoryAddress())
MemoryAddress() = "MemoryAddress"+Str(MemoryAddress_no)
MemoryAddress_no + 2
EndIf
Next
Global CodeLoop.i, ReadStr.s
ForEach Buffer()
If FindString(Buffer(), "PureBasicStart:")
PureBasicStart_Before_SSE2
XOR_Rax_MOVZX_Rax
XOR_Rdx_MOVZX_Rdx
XOR_R8_MOVZX_R8
XOR_Rbx_MOVZX_Rbx
XOR_Rcx_MOVZX_Rcx
XOR_R9_MOVZX_R9
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [PureBasicStart]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [GateOfBabylon]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "JMP GateOfBabylon"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP GateOfBabylon"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP PureBasicStart"
ForEach InstructionName()
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP "+InstructionName()
Next
ForEach MemoryAddress()
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP "+MemoryAddress()
Next
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP ALL_REGISTER_INC255_DEC255_PreCompileRun"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP ALL_REGISTER_INC255_DEC255_End_PreCompileRun"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP ALL_REGISTER_INC255_DEC255_in"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP MainThread_1_Start"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "JMP MainThread_1_Start"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "FNOP"
AddElement(Buffer()) : Buffer() = "GateOfBabylon:"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
For CodeLoop=1 To 512
AddElement(Buffer()) : Buffer() = "FNOP"
Next
SIMPLE_MOVE_REGISTERS_Up_and_Down
AddElement(Buffer()) : Buffer() = "MOVQ mm0, Rax"
AddElement(Buffer()) : Buffer() = "MOVQ mm1, Rdx"
AddElement(Buffer()) : Buffer() = "MOVQ mm2, Rsp"
AddElement(Buffer()) : Buffer() = "MOVQ mm3, Rsi"
AddElement(Buffer()) : Buffer() = "MOVQ mm4, R9"
AddElement(Buffer()) : Buffer() = "MOVQ mm5, R11"
AddElement(Buffer()) : Buffer() = "MOVQ mm6, R13"
AddElement(Buffer()) : Buffer() = "MOVQ mm7, R15"
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement.txt"
AddElement(Buffer()) : Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rax, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rsp, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rsi, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R9, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R11, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R13, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R15, xmm0"
SIMPLE_MOVE_REGISTERS_Up_and_Down
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement.txt"
AddElement(Buffer()) : Buffer() = "MOVQ Rax, mm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdx, mm1"
AddElement(Buffer()) : Buffer() = "MOVQ Rsp, mm2"
AddElement(Buffer()) : Buffer() = "MOVQ Rsi, mm3"
AddElement(Buffer()) : Buffer() = "MOVQ R9, mm4"
AddElement(Buffer()) : Buffer() = "MOVQ R11, mm5"
AddElement(Buffer()) : Buffer() = "MOVQ R13, mm6"
AddElement(Buffer()) : Buffer() = "MOVQ R15, mm7"
;
AddElement(Buffer()) : Buffer() = "MOVQ mm0, Rcx"
AddElement(Buffer()) : Buffer() = "MOVQ mm1, Rbx"
AddElement(Buffer()) : Buffer() = "MOVQ mm2, Rbp"
AddElement(Buffer()) : Buffer() = "MOVQ mm3, Rdi"
AddElement(Buffer()) : Buffer() = "MOVQ mm4, R8"
AddElement(Buffer()) : Buffer() = "MOVQ mm5, R10"
AddElement(Buffer()) : Buffer() = "MOVQ mm6, R12"
AddElement(Buffer()) : Buffer() = "MOVQ mm7, R14"
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement2.txt"
AddElement(Buffer()) : Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rcx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbp, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdi, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R8, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R10, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R12, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R14, xmm0"
SIMPLE_MOVE_REGISTERS_Up_and_Down
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement2.txt"
AddElement(Buffer()) : Buffer() = "MOVQ Rcx, mm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbx, mm1"
AddElement(Buffer()) : Buffer() = "MOVQ Rbp, mm2"
AddElement(Buffer()) : Buffer() = "MOVQ Rdi, mm3"
AddElement(Buffer()) : Buffer() = "MOVQ R8, mm4"
AddElement(Buffer()) : Buffer() = "MOVQ R10, mm5"
AddElement(Buffer()) : Buffer() = "MOVQ R12, mm6"
AddElement(Buffer()) : Buffer() = "MOVQ R14, mm7"
AddElement(Buffer()) : Buffer() = "EMMS"
SIMPLE_MOVE_REGISTERS_Up_and_Down
ElseIf Left(Buffer(), 33) = "; Procedure MainThread_1(dummy.i)"
NextElement(Buffer())
PureBasicStart_Before_SSE2
XOR_Rax_MOVZX_Rax
XOR_Rdx_MOVZX_Rdx
XOR_R8_MOVZX_R8
XOR_Rbx_MOVZX_Rbx
XOR_Rcx_MOVZX_Rcx
XOR_R9_MOVZX_R9
SIMPLE_MOVE_REGISTERS_Up_and_Down
AddElement(Buffer()) : Buffer() = "MOVQ mm0, Rax"
AddElement(Buffer()) : Buffer() = "MOVQ mm1, Rdx"
AddElement(Buffer()) : Buffer() = "MOVQ mm2, Rsp"
AddElement(Buffer()) : Buffer() = "MOVQ mm3, Rsi"
AddElement(Buffer()) : Buffer() = "MOVQ mm4, R9"
AddElement(Buffer()) : Buffer() = "MOVQ mm5, R11"
AddElement(Buffer()) : Buffer() = "MOVQ mm6, R13"
AddElement(Buffer()) : Buffer() = "MOVQ mm7, R15"
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement.txt"
AddElement(Buffer()) : Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rax, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rsp, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rsi, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R9, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R11, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R13, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R15, xmm0"
SIMPLE_MOVE_REGISTERS_Up_and_Down
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement.txt"
AddElement(Buffer()) : Buffer() = "MOVQ Rax, mm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdx, mm1"
AddElement(Buffer()) : Buffer() = "MOVQ Rsp, mm2"
AddElement(Buffer()) : Buffer() = "MOVQ Rsi, mm3"
AddElement(Buffer()) : Buffer() = "MOVQ R9, mm4"
AddElement(Buffer()) : Buffer() = "MOVQ R11, mm5"
AddElement(Buffer()) : Buffer() = "MOVQ R13, mm6"
AddElement(Buffer()) : Buffer() = "MOVQ R15, mm7"
;
AddElement(Buffer()) : Buffer() = "MOVQ mm0, Rcx"
AddElement(Buffer()) : Buffer() = "MOVQ mm1, Rbx"
AddElement(Buffer()) : Buffer() = "MOVQ mm2, Rbp"
AddElement(Buffer()) : Buffer() = "MOVQ mm3, Rdi"
AddElement(Buffer()) : Buffer() = "MOVQ mm4, R8"
AddElement(Buffer()) : Buffer() = "MOVQ mm5, R10"
AddElement(Buffer()) : Buffer() = "MOVQ mm6, R12"
AddElement(Buffer()) : Buffer() = "MOVQ mm7, R14"
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement2.txt"
AddElement(Buffer()) : Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rcx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbx, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbp, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rdi, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R8, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R10, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R12, xmm0"
AddElement(Buffer()) : Buffer() = "MOVQ R14, xmm0"
SIMPLE_MOVE_REGISTERS_Up_and_Down
IncludeFile "XOR_MOV_RabcdR8910_30_IncDec255_Code_addElement2.txt"
AddElement(Buffer()) : Buffer() = "MOVQ Rcx, mm0"
AddElement(Buffer()) : Buffer() = "MOVQ Rbx, mm1"
AddElement(Buffer()) : Buffer() = "MOVQ Rbp, mm2"
AddElement(Buffer()) : Buffer() = "MOVQ Rdi, mm3"
AddElement(Buffer()) : Buffer() = "MOVQ R8, mm4"
AddElement(Buffer()) : Buffer() = "MOVQ R10, mm5"
AddElement(Buffer()) : Buffer() = "MOVQ R12, mm6"
AddElement(Buffer()) : Buffer() = "MOVQ R14, mm7"
AddElement(Buffer()) : Buffer() = "EMMS"
SIMPLE_MOVE_REGISTERS_Up_and_Down
Break
EndIf
Next
Global NS_Find_1.i, NS_Find_2.i, NS_Find_3.i, NS_Find_4.i, NS_Find_5.i
Global NS_Find_B1.i, NS_Find_B2.s
ForEach Buffer()
NS_Find_1 = FindString(Buffer(), "MOV ")
If NS_Find_1
NS_Find_2 = FindString(Buffer(), "[PB_")
NS_Find_3 = FindString(Buffer(), ",")
NS_Find_B1 = FindString(Buffer(), "]", NS_Find_2)
NS_Find_B2 = Mid(Buffer(), NS_Find_2, NS_Find_B1-NS_Find_2+1)
If NS_Find_2>0 And NS_Find_3>0 And NS_Find_2<NS_Find_3
Buffer() = ReplaceString(Buffer(), "MOV", "MOVNTI")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP "+NS_Find_B2
EndIf
EndIf
Next
Global Sub_pos.i, Sub_max.i
ForEach Buffer()
If FindString(Buffer(), " SUB rsp,") And Val(StringField(Buffer(), 2, ","))>0
Sub_pos = 0 : Sub_max =0
Sub_max = Val(StringField(Buffer(), 2, ","))
Buffer() = ""
MOV_Rsp_Rsp_Up_Down
For Sub_pos=1 To Sub_max
AddElement(Buffer()) : Buffer() = "DEC rsp" ; Sub
Next
MOV_Rsp_Rsp_Up_Down
EndIf
Next
Global Add_pos.i, Add_max.i
ForEach Buffer()
If FindString(Buffer(), " ADD rsp,") And Val(StringField(Buffer(), 2, ","))>0
Add_max = 0 : Add_pos = 0
Add_max = Val(StringField(Buffer(), 2, ","))
Buffer() = ""
MOV_Rsp_Rsp_Up_Down
For Add_pos=1 To Add_max
AddElement(Buffer()) : Buffer() = "INC rsp" ; Add
Next
MOV_Rsp_Rsp_Up_Down
EndIf
Next
ForEach Buffer()
If FindString(Buffer(), "PUSH ")
If FindString(Buffer(), "rax")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rax_Rax_Up_Down
ElseIf FindString(Buffer(), "rbx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rbp_Rbp_Up_Down
ElseIf FindString(Buffer(), "rcx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rcx_Rcx_Up_Down
ElseIf FindString(Buffer(), "rdx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rdx_Rdx_Up_Down
ElseIf FindString(Buffer(), "rsi")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rsi_Rsi_Up_Down
ElseIf FindString(Buffer(), "rbp")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rbp_Rbp_Up_Down
; ElseIf FindString(Buffer(), "rsp")
; MOV_Rsp_Rsp_Up_Down
ElseIf FindString(Buffer(), "rdi")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_Rdi_Rdi_Up_Down
ElseIf FindString(Buffer(), "r8")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R8_R8_Up_Down
ElseIf FindString(Buffer(), "r9")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R9_R9_Up_Down
ElseIf FindString(Buffer(), "r10")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R10_R10_Up_Down
ElseIf FindString(Buffer(), "r11")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R11_R11_Up_Down
ElseIf FindString(Buffer(), "r12")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R12_R12_Up_Down
ElseIf FindString(Buffer(), "r13")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R13_R13_Up_Down
ElseIf FindString(Buffer(), "r14")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R14_R14_Up_Down
ElseIf FindString(Buffer(), "r15")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
MOV_R15_R15_Up_Down
Else
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
EndIf
NextElement(Buffer())
MOV_Rsp_Rsp_Up_Down
EndIf
Next
ForEach Buffer()
If FindString(Buffer(), "POP ")
If FindString(Buffer(), "rax")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rax_Rax_Up_Down
ElseIf FindString(Buffer(), "rbx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rbp_Rbp_Up_Down
ElseIf FindString(Buffer(), "rcx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rcx_Rcx_Up_Down
ElseIf FindString(Buffer(), "rdx")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rdx_Rdx_Up_Down
ElseIf FindString(Buffer(), "rsi")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rsi_Rsi_Up_Down
ElseIf FindString(Buffer(), "rbp")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rbp_Rbp_Up_Down
; ElseIf FindString(Buffer(), "rsp")
; MOV_Rsp_Rsp_Up_Down
ElseIf FindString(Buffer(), "rdi")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_Rdi_Rdi_Up_Down
ElseIf FindString(Buffer(), "r8")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R8_R8_Up_Down
ElseIf FindString(Buffer(), "r9")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R9_R9_Up_Down
ElseIf FindString(Buffer(), "r10")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R10_R10_Up_Down
ElseIf FindString(Buffer(), "r11")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R11_R11_Up_Down
ElseIf FindString(Buffer(), "r12")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R12_R12_Up_Down
ElseIf FindString(Buffer(), "r13")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R13_R13_Up_Down
ElseIf FindString(Buffer(), "r14")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R14_R14_Up_Down
ElseIf FindString(Buffer(), "r15")
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
MOV_R15_R15_Up_Down
Else
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
EndIf
MOV_Rsp_Rsp_Up_Down
EndIf
Next
;// ES30 Start
ForEach Buffer()
If FindString(Buffer(), "PUSH ")
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
EndIf
Next
ForEach Buffer()
If FindString(Buffer(), "POP ")
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
EndIf
Next
;// ES30 End
ForEach Buffer()
NS_Find_1 = FindString(Buffer(), "MOV ")
If NS_Find_1
NS_Find_2 = FindString(Buffer(), "[")
NS_Find_3 = FindString(Buffer(), ",")
NS_Find_5 = FindString(LCase(Buffer()), "qword")
NS_Find_B1 = FindString(Buffer(), "]", NS_Find_2)
NS_Find_B2 = Mid(Buffer(), NS_Find_2, NS_Find_B1-NS_Find_2+1)
If Not NS_Find_5
NS_Find_5 = FindString(LCase(Buffer()), "dword")
EndIf
NS_Find_4 = FindString(LCase(Buffer()), "a", NS_Find_3)
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "b", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "c", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "d", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "p", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "i", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r8", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r9", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r10", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r11", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r12", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r13", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r14", NS_Find_3)
EndIf
If Not NS_Find_4
NS_Find_4 = FindString(LCase(Buffer()), "r15", NS_Find_3)
EndIf
If NS_Find_2>0 And NS_Find_3>0 And NS_Find_2<NS_Find_3 And NS_Find_5>0 And NS_Find_4>0
PreviousElement(Buffer())
MOV_Rsp_Rsp_Up_Down
NextElement(Buffer())
Buffer() = ReplaceString(Buffer(), "MOV", "MOVNTI")
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP "+NS_Find_B2
EndIf
EndIf
Next
ForEach Buffer()
If Left(Buffer(),14) =" MOV rax,1" And Right(Buffer(), 2) = ",1"
DeleteElement(Buffer())
XOR_Rax_MOVZX_Rax
AddElement(Buffer()) : Buffer() = "INC al"
AddElement(Buffer()) : Buffer() = "MOVZX ax, al"
AddElement(Buffer()) : Buffer() = "MOVZX Rax, al"
AddElement(Buffer()) : Buffer() = "MOVZX ax, al"
EndIf
Next
ForEach Buffer()
If Left(Buffer(),40) =" ADD qword [PB_StringBasePosition],2"
DeleteElement(Buffer())
XOR_R8_MOVZX_R8
AddElement(Buffer()) : Buffer() = "INC R8b"
AddElement(Buffer()) : Buffer() = "INC R8b"
AddElement(Buffer()) : Buffer() = "MOVZX R8w, R8b"
AddElement(Buffer()) : Buffer() = "MOVZX R8, R8b"
AddElement(Buffer()) : Buffer() = "MOVZX R8w, R8b"
AddElement(Buffer()) : Buffer() = " ADD qword [PB_StringBasePosition],R8"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [PB_StringBasePosition]"
EndIf
Next
; Start Bug head 12.08
; If Left(Buffer(),13) ="AddXCHG512_S_"
; End Bug head 12.08
; Start Bug head 12.08
; If Left(Buffer(),14) ="AddXCHG8192_S_"
; End Bug head 12.08
Macro XCHG_Rax_Rsp_FINALCORDING_CALL
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD ["+FINALCORDING_CALL+"]"
For LineNo = 1 To 15
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD ["+FINALCORDING_CALL+"+"+Str(LineNo*16)+"]"
Next
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
; CALL FINALCORDING_CALL
NextElement(Buffer())
EndMacro
Macro XCHG_Rax_Rsp_FINALCORDING_Jump
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD ["+FINALCORDING_CALL+"]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
; JMP FINALCORDING_CALL
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
EndMacro
Macro XCHG_Rax_Rsp_FINALCORDING_RET
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rsp]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rsp+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rsp+32]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rsp+48]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rsp+64]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
; RET
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
EndMacro
Global FINALCORDING_CALL.s
Global FINALCORDING_Skip.i, CodeLoopRET.i
;*** FINAL CORDING ONLY MinorityClean 36 2020/07/10 23:25
ForEach Buffer()
If Right(Buffer(), 34) ="rcx,qword [v_MT_Thread_MainThread]"
Buffer() = "XORPS xmm0, xmm0"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "MOVDQ2Q mm0, xmm0"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [v_MT_Thread_MainThread]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "MOVQ mm0, [v_MT_Thread_MainThread]"
XOR_Rcx_MOVZX_Rcx
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "MOVQ Rcx, mm0"
MOV_Rcx_Rcx_Up_Down
AddElement(Buffer()) : Buffer() = "EMMS"
NextElement(Buffer())
EndIf
Next
ForEach Buffer()
If Left(Buffer(), 6) ="XORPS "
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
NextElement(Buffer())
EndIf
Next
;;// ES45 ES48
Global LEA_String.s
ForEach Buffer()
If FindString(Buffer(), "LEA ")
If FindString(Buffer(), "!LEA ")=0
LEA_String = RemoveString(Buffer(), " ")
LEA_String = RemoveString(LEA_String, "LEA")
LEA_String = StringField(LEA_String, 1, ",")
PreviousElement(Buffer())
If FindString(Buffer(), "RDRAND ")
Buffer() = ReplaceString(Buffer(), "RDRAND ", "SMSW ")
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
ElseIf FindString(Buffer(), "SMSW ")
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
Else
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
AddElement(Buffer()) : Buffer() = "SMSW "+LEA_String
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
NextElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP [Rip]"
EndIf
EndIf
EndIf
Next
;;// ES45 ES48 End
;;// ES 42 ALLSET QWORD [v_a] [p_b]
ForEach Buffer()
If FindString(Buffer(),"[")>0
If FindString(UCase(Buffer()), "QWORD")=0
If FindString(UCase(Buffer()), "DWORD")>0
; skip
ElseIf FindString(UCase(Buffer()), "MOVNTI ")>0
If FindString(Buffer(), "Eax", FindString(Buffer(), ","))
ElseIf FindString(Buffer(), "Ebx", FindString(Buffer(), ","))
ElseIf FindString(Buffer(), "Ecx", FindString(Buffer(), ","))
ElseIf FindString(Buffer(), "Edx", FindString(Buffer(), ","))
ElseIf FindString(Buffer(), "R8d", FindString(Buffer(), ","))
ElseIf FindString(Buffer(), "R9d", FindString(Buffer(), ","))
Else
Buffer() = ReplaceString(Buffer(), "[", " QWORD [", #PB_String_NoCase)
EndIf
ElseIf FindString(UCase(Buffer()), "BYTE")>0
; skip
ElseIf FindString(UCase(Buffer()), "WORD")>0
; skip
Else
If FindString(UCase(Buffer()), "MOVSS ")>0
; skip
Else
Buffer() = ReplaceString(Buffer(), "[", " QWORD [", #PB_String_NoCase)
EndIf
EndIf
EndIf
EndIf
Next
;// ES42 End
;// ES53 : NOP [Rip] / Line set
Output_1$ + Chr(13) + Chr(13) + "//EXTREME//" + Chr(13) + Chr(13)
Global ES49Flags.i, ES53Inst.s, ES53buf.s, LineNo.i
ES49Flags = 0
ForEach Buffer()
If Left(Buffer(), 15)="PureBasicStart:"
ES49Flags = 1
ElseIf Left(Buffer(), 7)= "section"
ES49Flags = 0
ElseIf Left(Buffer(), 16)= "_PB_DataSection:"
ES49Flags = 0
EndIf
If ES49Flags
If FindString(Buffer(), "NOP") And Left(Buffer(), 1)<>";"
DeleteElement(Buffer())
EndIf
EndIf
Next
;///
ES49Flags = 0
ForEach Buffer()
If Left(Buffer(), 15)="PureBasicStart:"
ES49Flags = 1
ElseIf Left(Buffer(), 7)= "section"
ES49Flags = 0
ElseIf Left(Buffer(), 16)= "_PB_DataSection:"
ES49Flags = 0
EndIf
If ES49Flags
ES53buf = Buffer()
If FindString(ES53buf, "NOP")=0 And Left(ES53buf, 1)<>";"
If FindString(ES53buf, "[")
ES53Inst = Mid(ES53buf, FindString(ES53buf, "[") , FindString(ES53buf, "]") - FindString(ES53buf, "[") + 1 )
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+24]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip+16]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
AddElement(Buffer()) : Buffer() = "NOP QWORD "+ES53Inst
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
NextElement(Buffer())
ElseIf Right(RemoveString(ES53buf, " "), 1)=":"
; skip
Else
PreviousElement(Buffer())
AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
NextElement(Buffer())
EndIf
EndIf
If Left(Buffer(), 6) =" CALL"
FINALCORDING_CALL = StringField(RemoveString(RemoveString(Buffer(), "CALL"), " "), 1, ";")
FINALCORDING_CALL = RemoveString(FINALCORDING_CALL, "QWORD")
XCHG_Rax_Rsp_FINALCORDING_CALL
ElseIf Left(Buffer(), 4) ="CALL"
FINALCORDING_CALL = StringField(RemoveString(RemoveString(Buffer(), "CALL"), " "), 1, ";")
FINALCORDING_CALL = RemoveString(FINALCORDING_CALL, "QWORD")
XCHG_Rax_Rsp_FINALCORDING_CALL
;
ElseIf Left(Buffer(), 3) =" J"
FINALCORDING_CALL = RemoveString(Left(Buffer(), 5), " ")
FINALCORDING_CALL = StringField(RemoveString(RemoveString(Buffer(), FINALCORDING_CALL), " "), 1, ";")
FINALCORDING_CALL = RemoveString(FINALCORDING_CALL, "QWORD")
XCHG_Rax_Rsp_FINALCORDING_Jump
ElseIf Left(Buffer(), 1) ="J"
FINALCORDING_CALL = RemoveString(Left(Buffer(), 3), " ")
FINALCORDING_CALL = StringField(RemoveString(RemoveString(Buffer(), FINALCORDING_CALL), " "), 1, ";")
FINALCORDING_CALL = RemoveString(FINALCORDING_CALL, "QWORD")
XCHG_Rax_Rsp_FINALCORDING_Jump
;
ElseIf Left(Buffer(), 3) ="RET"
XCHG_Rax_Rsp_FINALCORDING_RET
ElseIf Left(Buffer(), 5) =" RET"
XCHG_Rax_Rsp_FINALCORDING_RET
EndIf
EndIf
Next
;// ES53 End : NOP [Rip] / Line set
;;// ES 40 "Russian programmer You should DWORD to QWORD"
ForEach Buffer()
If FindString(UCase(Buffer()), "JMP")>0 And FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), " ", " QWORD ", #PB_String_NoCase, FindString(UCase(Buffer()), "J"), 1)
ElseIf FindString(UCase(Buffer()), "JE")>0 And FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), " ", " QWORD ", #PB_String_NoCase, FindString(UCase(Buffer()), "J"), 1)
ElseIf FindString(UCase(Buffer()), "JZ")>0 And FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), " ", " QWORD ", #PB_String_NoCase, FindString(UCase(Buffer()), "J"), 1)
ElseIf FindString(UCase(Buffer()), "JNE")>0 And FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), " ", " QWORD ", #PB_String_NoCase, FindString(UCase(Buffer()), "J"), 1)
ElseIf FindString(UCase(Buffer()), "JNZ")>0 And FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), " ", " QWORD ", #PB_String_NoCase, FindString(UCase(Buffer()), "J"), 1)
EndIf
Next
;// ES40 End
;;// ES 39 "Russian programmer You should DWORD to QWORD"
ForEach Buffer()
If FindString(UCase(Buffer()), "CALL ")>0
If FindString(UCase(Buffer()), "QWORD")=0
Buffer() = ReplaceString(Buffer(), "CALL ", "CALL QWORD ", #PB_String_NoCase)
EndIf
EndIf
Next
;// ES39 End
Global ES53flags.i
ForEach Buffer()
If FindString(UCase(RemoveString(Buffer(), " ")), "NOPQWORD[RIP]")
ES53flags + 1
Else
ES53flags = 0
EndIf
If ES53flags = 2
DeleteElement(Buffer())
ES53flags = 1
EndIf
Next
fileno = CreateFile(#PB_Any, dir$)
ForEach Buffer()
WriteStringN(fileno, Buffer())
Next
FlushFileBuffers(fileno)
CloseFile(fileno)
; dir2$ = dir$
file$ = dir$
dir$ = GetPathPart(file$)
Delay(5000)
Global RandMax_Str.s
RandMax_Str.s = Chr(Month(Date())+Random(78, 65))+Chr(Month(Date())+Random(78, 65))+Chr(Month(Date())+Random(78, 65))
Compiler = RunProgram(#PB_Compiler_Home+"\Compilers\pbcompiler", Chr(34)+file$+Chr(34)+" /MMX /UNICODE /THREAD /XP /REASM /OPTIMIZER /ICON "+Chr(34)+"NR5_ES.ico"+Chr(34)+" /OUTPUT "+Chr(34)+#NBEXE+RandMax_Str+Chr(34), dir$, #PB_Program_Open | #PB_Program_Read)
If Compiler
While ProgramRunning(Compiler)
If AvailableProgramOutput(Compiler)
Output2$ + ReadProgramString(Compiler) + Chr(13)
EndIf
Wend
Output2$ + Chr(13) + Chr(13)
Output2$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
CloseProgram(Compiler) ; Close the connection to the program
EndIf
CreateDirectory(GetUserDirectory(#PB_Directory_Documents)+#NBDIR)
CreateDirectory(GetUserDirectory(#PB_Directory_Documents)+#NBDIR2)
RenameFile(#NBEXE+RandMax_Str, GetUserDirectory(#PB_Directory_Documents)+#NBDIR2+"\"+GetFilePart(#NBEXE+RandMax_Str))
RenameFile(file$, dir$+"ExtremeStabilizer_"+FormatDate("%yyyy_%mm%dd_%hh%ii_", Date())+GetFilePart(file$))
MessageRequester("Output", Output$)
MessageRequester("Output2", Output_1$)
MessageRequester("Output", Output2$)
; MessageRequester("Output", Output3$)
End